diff --git a/.github/workflows/composer-validate.yml b/.github/workflows/composer-validate.yml new file mode 100644 index 0000000000..869b13d00d --- /dev/null +++ b/.github/workflows/composer-validate.yml @@ -0,0 +1,30 @@ +name: Validate Composer dependencies +# this workflows check composer dependency installation +# using the commited composer.lock +# validate on php7.4 and 8.2 + +on: + pull_request: + branches: + - alpha + +jobs: + build-test: + runs-on: ubuntu-latest + + # define every php version to test + strategy: + # do not stop at first fail + fail-fast: false + matrix: + php: [7.4, 8.2] + + steps: + - uses: actions/checkout@v3 + + - name: Validate dependencies php${{ matrix.php }} + uses: php-actions/composer@v6 + with: + php_version: ${{ matrix.php }} + command: validate + args: --no-check-publish diff --git a/.gitignore b/.gitignore index f345d7eb6a..c358150fe0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ Thumbs.db .buildpath .vscode ui -composer.lock test.php core/config/common.config.php diff --git a/.htaccess b/.htaccess index 5510afd057..be50c7a42c 100644 --- a/.htaccess +++ b/.htaccess @@ -25,7 +25,7 @@ mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* - + php_value post_max_size 1G php_value upload_max_filesize 1G php_value max_execution_time 600 diff --git a/composer.json b/composer.json index e95e9eee36..25d7fc3830 100644 --- a/composer.json +++ b/composer.json @@ -4,11 +4,16 @@ "symfony/expression-language": "5 - 7", "pragmarx/google2fa-qrcode": "^3", "bacon/bacon-qr-code": "2 - 3", - "psr/log": "^1.1" + "influxdata/influxdb-client-php": "^3", + "psr/log": "^1.1", + "php": ">=7.4" }, "config": { "allow-plugins": { "php-http/discovery": true + }, + "platform": { + "php": "7.4" } } -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index ce1956d64f..b78c8572c4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,36 +4,40 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8c2342a48450c788b0c48eb841c1b3f8", + "content-hash": "6d3817ee337cc5ed162b1e9463030e8a", "packages": [ { "name": "bacon/bacon-qr-code", - "version": "1.0.3", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/Bacon/BaconQrCode.git", - "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee" + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/5a91b62b9d37cee635bbf8d553f4546057250bee", - "reference": "5a91b62b9d37cee635bbf8d553f4546057250bee", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", "shasum": "" }, "require": { + "dasprid/enum": "^1.0.3", "ext-iconv": "*", - "php": "^5.4|^7.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phly/keep-a-changelog": "^2.1", + "phpunit/phpunit": "^7 | ^8 | ^9", + "spatie/phpunit-snapshot-assertions": "^4.2.9", + "squizlabs/php_codesniffer": "^3.4" }, "suggest": { - "ext-gd": "to generate QR code images" + "ext-imagick": "to generate QR code images" }, "type": "library", "autoload": { - "psr-0": { - "BaconQrCode": "src/" + "psr-4": { + "BaconQrCode\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -44,7 +48,7 @@ { "name": "Ben Scholzen 'DASPRiD'", "email": "mail@dasprids.de", - "homepage": "http://www.dasprids.de", + "homepage": "https://dasprids.de/", "role": "Developer" } ], @@ -52,44 +56,37 @@ "homepage": "https://github.com/Bacon/BaconQrCode", "support": { "issues": "https://github.com/Bacon/BaconQrCode/issues", - "source": "https://github.com/Bacon/BaconQrCode/tree/master" + "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" }, - "time": "2017-10-17T09:59:25+00:00" + "time": "2022-12-07T17:46:57+00:00" }, { - "name": "doctrine/cache", - "version": "v1.6.2", + "name": "clue/stream-filter", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b" + "url": "https://github.com/clue/stream-filter.git", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b", - "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", "shasum": "" }, "require": { - "php": "~5.5|~7.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" + "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "~4.8|~5.0", - "predis/predis": "~1.0", - "satooshi/php-coveralls": "~0.6" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + "Clue\\StreamFilter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -98,62 +95,117 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "A simple and modern approach to stream filtering in PHP", + "homepage": "https://github.com/clue/stream-filter", + "keywords": [ + "bucket brigade", + "callback", + "filter", + "php_user_filter", + "stream", + "stream_filter_append", + "stream_filter_register" + ], + "support": { + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" + }, + "funding": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "url": "https://clue.engineering/support", + "type": "custom" }, { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2023-12-20T15:40:13+00:00" + }, + { + "name": "dasprid/enum", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8dfd07c6d2cf31c8da90c53b83c026c7696dda90", + "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90", + "shasum": "" + }, + "require": { + "php": ">=7.1 <9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" } ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", + "description": "PHP 7.1 enum implementation", "keywords": [ - "cache", - "caching" + "enum", + "map" ], "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.6.x" + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.6" }, - "time": "2017-07-22T12:49:21+00:00" + "time": "2024-08-09T14:30:48+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2" + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/65b2d8ee1f10915efb3b55597da3404f096acba2", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { - "php": "^7.0|^8.0" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^6.4|^7.0|^8.0|^9.0" + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -166,11 +218,6 @@ "MIT" ], "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, { "name": "Chris Tankersley", "email": "chris@ctankersley.com", @@ -184,7 +231,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v2.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" }, "funding": [ { @@ -192,149 +239,83 @@ "type": "github" } ], - "time": "2020-10-13T00:52:37+00:00" + "time": "2024-10-09T13:47:03+00:00" }, { - "name": "guzzle/guzzle", - "version": "v3.9.3", + "name": "influxdata/influxdb-client-php", + "version": "3.6.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle3.git", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + "url": "https://github.com/influxdata/influxdb-client-php.git", + "reference": "3606b12214508f22126b7ed0565d53380674312a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "url": "https://api.github.com/repos/influxdata/influxdb-client-php/zipball/3606b12214508f22126b7ed0565d53380674312a", + "reference": "3606b12214508f22126b7ed0565d53380674312a", "shasum": "" }, "require": { "ext-curl": "*", - "php": ">=5.3.3", - "symfony/event-dispatcher": "~2.1" - }, - "replace": { - "guzzle/batch": "self.version", - "guzzle/cache": "self.version", - "guzzle/common": "self.version", - "guzzle/http": "self.version", - "guzzle/inflection": "self.version", - "guzzle/iterator": "self.version", - "guzzle/log": "self.version", - "guzzle/parser": "self.version", - "guzzle/plugin": "self.version", - "guzzle/plugin-async": "self.version", - "guzzle/plugin-backoff": "self.version", - "guzzle/plugin-cache": "self.version", - "guzzle/plugin-cookie": "self.version", - "guzzle/plugin-curlauth": "self.version", - "guzzle/plugin-error-response": "self.version", - "guzzle/plugin-history": "self.version", - "guzzle/plugin-log": "self.version", - "guzzle/plugin-md5": "self.version", - "guzzle/plugin-mock": "self.version", - "guzzle/plugin-oauth": "self.version", - "guzzle/service": "self.version", - "guzzle/stream": "self.version" + "ext-json": "*", + "ext-mbstring": "*", + "php": ">=7.2", + "php-http/client-common": "^2.2.1", + "php-http/discovery": "^1.9.1", + "psr/http-client": "^1.0.1" }, "require-dev": { - "doctrine/cache": "~1.3", - "monolog/monolog": "~1.0", - "phpunit/phpunit": "3.7.*", - "psr/log": "~1.0", - "symfony/class-loader": "~2.1", - "zendframework/zend-cache": "2.*,<2.3", - "zendframework/zend-log": "2.*,<2.3" - }, - "suggest": { - "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + "guzzlehttp/guzzle": "^7.0.1", + "guzzlehttp/psr7": "^2.0.0", + "phpunit/phpunit": "^8.5.27", + "squizlabs/php_codesniffer": "~3.7" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.9-dev" - } - }, "autoload": { - "psr-0": { - "Guzzle": "src/", - "Guzzle\\Tests": "tests/" + "psr-4": { + "InfluxDB2\\": "src/InfluxDB2" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Guzzle Community", - "homepage": "https://github.com/guzzle/guzzle/contributors" - } - ], - "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", - "homepage": "http://guzzlephp.org/", + "description": "InfluxDB (v2+) Client Library for PHP", + "homepage": "https://www.github.com/influxdata/influxdb-client-php", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" + "influxdb" ], "support": { - "issues": "https://github.com/guzzle/guzzle3/issues", - "source": "https://github.com/guzzle/guzzle3/tree/master" + "issues": "https://github.com/influxdata/influxdb-client-php/issues", + "source": "https://github.com/influxdata/influxdb-client-php/tree/3.6.0" }, - "abandoned": "guzzlehttp/guzzle", - "time": "2015-03-18T18:23:50+00:00" + "time": "2024-06-24T10:01:53+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.5.8", + "name": "paragonie/constant_time_encoding", + "version": "v2.7.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "php": "^7|^8" }, "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "ParagonIE\\ConstantTime\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -343,104 +324,83 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" } ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.8" + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2022-06-20T22:16:07+00:00" + "time": "2024-05-08T12:18:48+00:00" }, { - "name": "guzzlehttp/promises", - "version": "1.5.2", + "name": "php-http/client-common", + "version": "2.7.2", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "url": "https://github.com/php-http/client-common.git", + "reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/php-http/client-common/zipball/0cfe9858ab9d3b213041b947c881d5b19ceeca46", + "reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.17" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "doctrine/instantiator": "^1.1", + "guzzlehttp/psr7": "^1.4", + "nyholm/psr7": "^1.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "phpspec/prophecy": "^1.10.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.33 || ^9.6.7" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } + "suggest": { + "ext-json": "To detect JSON responses with the ContentTypePlugin", + "ext-libxml": "To detect XML responses with the ContentTypePlugin", + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" }, + "type": "library", "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "Http\\Client\\Common\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -449,195 +409,131 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Guzzle promises library", + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", "keywords": [ - "promise" + "client", + "common", + "http", + "httplug" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.7.2" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2024-09-24T06:21:48+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "1.9.0", + "name": "php-http/discovery", + "version": "1.20.0", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" + "url": "https://github.com/php-http/discovery.git", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" }, "provide": { - "psr/http-message-implementation": "1.0" + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "sebastian/comparator": "^3.0.5 || ^4.0.8", + "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" + }, + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, { "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "email": "mark.sagikazar@gmail.com" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", "keywords": [ + "adapter", + "client", + "discovery", + "factory", "http", "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "psr17", + "psr7" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.0" + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.20.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2022-06-20T21:43:03+00:00" + "time": "2024-10-02T11:20:13+00:00" }, { - "name": "knplabs/github-api", - "version": "1.7.1", + "name": "php-http/httplug", + "version": "2.4.1", "source": { "type": "git", - "url": "https://github.com/KnpLabs/php-github-api.git", - "reference": "98d0bcd2c4c96a40ded9081f8f6289907f73823c" + "url": "https://github.com/php-http/httplug.git", + "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/98d0bcd2c4c96a40ded9081f8f6289907f73823c", - "reference": "98d0bcd2c4c96a40ded9081f8f6289907f73823c", + "url": "https://api.github.com/repos/php-http/httplug/zipball/5cad731844891a4c282f3f3e1b582c46839d22f4", + "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4", "shasum": "" }, "require": { - "ext-curl": "*", - "guzzle/guzzle": "~3.7", - "php": ">=5.3.2" + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "sllh/php-cs-fixer-styleci-bridge": "~1.3" - }, - "suggest": { - "knplabs/gaufrette": "Needed for optional Gaufrette cache" + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, "autoload": { "psr-4": { - "Github\\": "lib/Github/" + "Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -646,79 +542,71 @@ ], "authors": [ { - "name": "Thibault Duplessis", - "email": "thibault.duplessis@gmail.com", - "homepage": "http://ornicar.github.com" + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" }, { - "name": "KnpLabs Team", - "homepage": "http://knplabs.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], - "description": "GitHub API v3 client", - "homepage": "https://github.com/KnpLabs/php-github-api", + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", "keywords": [ - "api", - "gh", - "gist", - "github" + "client", + "http" ], "support": { - "issues": "https://github.com/KnpLabs/php-github-api/issues", - "source": "https://github.com/KnpLabs/php-github-api/tree/master" + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.4.1" }, - "time": "2016-07-26T08:49:38+00:00" + "time": "2024-09-23T11:39:58+00:00" }, { - "name": "league/flysystem", - "version": "1.0.70", + "name": "php-http/message", + "version": "1.16.2", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493" + "url": "https://github.com/php-http/message.git", + "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/585824702f534f8d3cf7fab7225e8466cc4b7493", - "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493", + "url": "https://api.github.com/repos/php-http/message/zipball/06dd5e8562f84e641bf929bfe699ee0f5ce8080a", + "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" + "clue/stream-filter": "^1.5", + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.1 || ^2.0" }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" + "provide": { + "php-http/message-factory-implementation": "1.0" }, "require-dev": { - "phpspec/phpspec": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "phpunit/phpunit": "^5.7.26" + "ergebnis/composer-normalize": "^2.6", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0 || ^2.0", + "laminas/laminas-diactoros": "^2.0 || ^3.0", + "php-http/message-factory": "^1.0.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "slim/slim": "^3.0" }, "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "laminas/laminas-diactoros": "Used with Diactoros Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { + "files": [ + "src/filters.php" + ], "psr-4": { - "League\\Flysystem\\": "src/" + "Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -727,74 +615,48 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frenky.net" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" + "http", + "message", + "psr-7" ], "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.0.70" + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.16.2" }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "other" - } - ], - "time": "2020-07-26T07:20:36+00:00" + "time": "2024-10-02T11:34:13+00:00" }, { - "name": "league/flysystem-webdav", - "version": "1.0.10", + "name": "php-http/promise", + "version": "1.3.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-webdav.git", - "reference": "7da805408d366dd92ba15a03a12a59104bfd91d7" + "url": "https://github.com/php-http/promise.git", + "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-webdav/zipball/7da805408d366dd92ba15a03a12a59104bfd91d7", - "reference": "7da805408d366dd92ba15a03a12a59104bfd91d7", + "url": "https://api.github.com/repos/php-http/promise/zipball/fc85b1fba37c169a69a07ef0d5a8075770cc1f83", + "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83", "shasum": "" }, "require": { - "league/flysystem": "~1.0", - "php": ">=5.6", - "sabre/dav": "~4.0|~3.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "mockery/mockery": "~1.2", - "phpunit/phpunit": "~4.8|~5.0|~6.0|~7.0|~8.0|~9.0" + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { - "League\\Flysystem\\WebDAV\\": "src" + "Http\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -803,447 +665,51 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frenky.net" + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Flysystem adapter for WebDAV", + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], "support": { - "issues": "https://github.com/thephpleague/flysystem-webdav/issues", - "source": "https://github.com/thephpleague/flysystem-webdav/tree/1.0.10" + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.3.1" }, - "time": "2021-12-31T10:30:15+00:00" + "time": "2024-03-15T13:55:21+00:00" }, { - "name": "league/oauth2-client", - "version": "2.6.1", + "name": "pragmarx/google2fa", + "version": "v8.0.3", "source": { "type": "git", - "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "2334c249907190c132364f5dae0287ab8666aa19" + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/2334c249907190c132364f5dae0287ab8666aa19", - "reference": "2334c249907190c132364f5dae0287ab8666aa19", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "paragonie/random_compat": "^1 || ^2 || ^9.99", - "php": "^5.6 || ^7.0 || ^8.0" + "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", + "php": "^7.1|^8.0" }, "require-dev": { - "mockery/mockery": "^1.3.5", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpunit/phpunit": "^5.7 || ^6.0 || ^9.5", - "squizlabs/php_codesniffer": "^2.3 || ^3.0" + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.5.15|^8.5|^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "League\\OAuth2\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Bilbie", - "email": "hello@alexbilbie.com", - "homepage": "http://www.alexbilbie.com", - "role": "Developer" - }, - { - "name": "Woody Gilk", - "homepage": "https://github.com/shadowhand", - "role": "Contributor" - } - ], - "description": "OAuth 2.0 Client Library", - "keywords": [ - "Authentication", - "SSO", - "authorization", - "identity", - "idp", - "oauth", - "oauth2", - "single sign on" - ], - "support": { - "issues": "https://github.com/thephpleague/oauth2-client/issues", - "source": "https://github.com/thephpleague/oauth2-client/tree/2.6.1" - }, - "time": "2021-12-22T16:42:49+00:00" - }, - { - "name": "matthiasmullie/minify", - "version": "1.3.69", - "source": { - "type": "git", - "url": "https://github.com/matthiasmullie/minify.git", - "reference": "a61c949cccd086808063611ef9698eabe42ef22f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/a61c949cccd086808063611ef9698eabe42ef22f", - "reference": "a61c949cccd086808063611ef9698eabe42ef22f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "matthiasmullie/path-converter": "~1.1", - "php": ">=5.3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.0", - "matthiasmullie/scrapbook": "dev-master", - "phpunit/phpunit": ">=4.8" - }, - "suggest": { - "psr/cache-implementation": "Cache implementation to use with Minify::cache" - }, - "bin": [ - "bin/minifycss", - "bin/minifyjs" - ], - "type": "library", - "autoload": { - "psr-4": { - "MatthiasMullie\\Minify\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthias Mullie", - "email": "minify@mullie.eu", - "homepage": "http://www.mullie.eu", - "role": "Developer" - } - ], - "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", - "homepage": "http://www.minifier.org", - "keywords": [ - "JS", - "css", - "javascript", - "minifier", - "minify" - ], - "support": { - "issues": "https://github.com/matthiasmullie/minify/issues", - "source": "https://github.com/matthiasmullie/minify/tree/1.3.69" - }, - "funding": [ - { - "url": "https://github.com/matthiasmullie", - "type": "github" - } - ], - "time": "2022-08-01T09:00:18+00:00" - }, - { - "name": "matthiasmullie/path-converter", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/matthiasmullie/path-converter.git", - "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9", - "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "MatthiasMullie\\PathConverter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthias Mullie", - "email": "pathconverter@mullie.eu", - "homepage": "http://www.mullie.eu", - "role": "Developer" - } - ], - "description": "Relative path converter", - "homepage": "http://github.com/matthiasmullie/path-converter", - "keywords": [ - "converter", - "path", - "paths", - "relative" - ], - "support": { - "issues": "https://github.com/matthiasmullie/path-converter/issues", - "source": "https://github.com/matthiasmullie/path-converter/tree/1.1.3" - }, - "time": "2019-02-05T23:41:09+00:00" - }, - { - "name": "monolog/monolog", - "version": "1.27.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2022-06-09T08:53:42+00:00" - }, - { - "name": "paragonie/constant_time_encoding", - "version": "v2.6.3", - "source": { - "type": "git", - "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "58c3f47f650c94ec05a151692652a868995d2938" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", - "reference": "58c3f47f650c94ec05a151692652a868995d2938", - "shasum": "" - }, - "require": { - "php": "^7|^8" - }, - "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", - "vimeo/psalm": "^1|^2|^3|^4" - }, - "type": "library", - "autoload": { - "psr-4": { - "ParagonIE\\ConstantTime\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com", - "role": "Maintainer" - }, - { - "name": "Steve 'Sc00bz' Thomas", - "email": "steve@tobtu.com", - "homepage": "https://www.tobtu.com", - "role": "Original Developer" - } - ], - "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", - "keywords": [ - "base16", - "base32", - "base32_decode", - "base32_encode", - "base64", - "base64_decode", - "base64_encode", - "bin2hex", - "encoding", - "hex", - "hex2bin", - "rfc4648" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" - }, - "time": "2022-06-14T06:56:20+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2020-10-15T08:29:30+00:00" - }, - { - "name": "pragmarx/google2fa", - "version": "v7.0.0", - "source": { - "type": "git", - "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "0afb47f8a686bd203fe85a05bab85139f3c1971e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/0afb47f8a686bd203fe85a05bab85139f3c1971e", - "reference": "0afb47f8a686bd203fe85a05bab85139f3c1971e", - "shasum": "" - }, - "require": { - "paragonie/constant_time_encoding": "~1.0|~2.0", - "paragonie/random_compat": ">=1", - "php": ">=5.4", - "symfony/polyfill-php56": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4|~5|~6|~7|~8" - }, - "type": "library", - "extra": { - "component": "package", - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { "psr-4": { - "PragmaRX\\Google2FA\\": "src/", - "PragmaRX\\Google2FA\\Tests\\": "tests/" + "PragmaRX\\Google2FA\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1266,32 +732,37 @@ ], "support": { "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v7.0.0" + "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" }, - "time": "2019-10-21T17:49:22+00:00" + "time": "2024-09-05T11:56:40+00:00" }, { "name": "pragmarx/google2fa-qrcode", - "version": "v1.0.3", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa-qrcode.git", - "reference": "fd5ff0531a48b193a659309cc5fb882c14dbd03f" + "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/fd5ff0531a48b193a659309cc5fb882c14dbd03f", - "reference": "fd5ff0531a48b193a659309cc5fb882c14dbd03f", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/ce4d8a729b6c93741c607cfb2217acfffb5bf76b", + "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b", "shasum": "" }, "require": { - "bacon/bacon-qr-code": "~1.0|~2.0", - "php": ">=5.4", + "php": ">=7.1", "pragmarx/google2fa": ">=4.0" }, "require-dev": { + "bacon/bacon-qr-code": "^2.0", + "chillerlan/php-qrcode": "^1.0|^2.0|^3.0|^4.0", "khanamiryan/qrcode-detector-decoder": "^1.0", - "phpunit/phpunit": "~4|~5|~6|~7" + "phpunit/phpunit": "~4|~5|~6|~7|~8|~9" + }, + "suggest": { + "bacon/bacon-qr-code": "For QR Code generation, requires imagick", + "chillerlan/php-qrcode": "For QR Code generation" }, "type": "library", "extra": { @@ -1328,9 +799,9 @@ ], "support": { "issues": "https://github.com/antonioribeiro/google2fa-qrcode/issues", - "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/master" + "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.0" }, - "time": "2019-03-20T16:42:58+00:00" + "time": "2021-08-15T12:53:48+00:00" }, { "name": "psr/cache", @@ -1382,31 +853,26 @@ "time": "2016-08-06T20:24:11+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "psr/container", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1416,50 +882,51 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1472,34 +939,36 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "log", + "http", + "http-client", "psr", - "psr-3" + "psr-18" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/http-client" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { - "name": "psr/simple-cache", - "version": "1.0.1", + "name": "psr/http-factory", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -1509,551 +978,188 @@ }, "autoload": { "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" - }, - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "sabre/dav", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/sabre-io/dav.git", - "reference": "b793fb4ce27cf0f981b540ad771281c430ffe818" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabre-io/dav/zipball/b793fb4ce27cf0f981b540ad771281c430ffe818", - "reference": "b793fb4ce27cf0f981b540ad771281c430ffe818", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-date": "*", - "ext-dom": "*", - "ext-iconv": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-pcre": "*", - "ext-simplexml": "*", - "ext-spl": "*", - "lib-libxml": ">=2.7.0", - "php": ">=7.0.0", - "psr/log": "^1.0", - "sabre/event": "^5.0", - "sabre/http": "^5.0", - "sabre/uri": "^2.0", - "sabre/vobject": "^4.2.0-alpha1", - "sabre/xml": "^2.0.1" - }, - "require-dev": { - "evert/phpdoc-md": "~0.1.0", - "monolog/monolog": "^1.18", - "phpunit/phpunit": "^6" - }, - "suggest": { - "ext-curl": "*", - "ext-imap": "*", - "ext-pdo": "*" - }, - "bin": [ - "bin/sabredav", - "bin/naturalselection" - ], - "type": "library", - "autoload": { - "psr-4": { - "Sabre\\DAV\\": "lib/DAV/", - "Sabre\\CalDAV\\": "lib/CalDAV/", - "Sabre\\DAVACL\\": "lib/DAVACL/", - "Sabre\\CardDAV\\": "lib/CardDAV/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" - } - ], - "description": "WebDAV Framework for PHP", - "homepage": "http://sabre.io/", - "keywords": [ - "CalDAV", - "CardDAV", - "WebDAV", - "framework", - "iCalendar" - ], - "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/dav/issues", - "source": "https://github.com/fruux/sabre-dav" - }, - "time": "2020-01-10T07:52:45+00:00" - }, - { - "name": "sabre/event", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sabre-io/event.git", - "reference": "f5cf802d240df1257866d8813282b98aee3bc548" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabre-io/event/zipball/f5cf802d240df1257866d8813282b98aee3bc548", - "reference": "f5cf802d240df1257866d8813282b98aee3bc548", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": ">=6", - "sabre/cs": "~1.0.0" - }, - "type": "library", - "autoload": { - "files": [ - "lib/coroutine.php", - "lib/Loop/functions.php", - "lib/Promise/functions.php" - ], - "psr-4": { - "Sabre\\Event\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" - } - ], - "description": "sabre/event is a library for lightweight event-based programming", - "homepage": "http://sabre.io/event/", - "keywords": [ - "EventEmitter", - "async", - "coroutine", - "eventloop", - "events", - "hooks", - "plugin", - "promise", - "reactor", - "signal" - ], - "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/event/issues", - "source": "https://github.com/fruux/sabre-event" - }, - "time": "2018-03-05T13:55:47+00:00" - }, - { - "name": "sabre/http", - "version": "5.0.5", - "source": { - "type": "git", - "url": "https://github.com/sabre-io/http.git", - "reference": "85962a2ed867e7e5beb9f9d3a15cd53cd521a09b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabre-io/http/zipball/85962a2ed867e7e5beb9f9d3a15cd53cd521a09b", - "reference": "85962a2ed867e7e5beb9f9d3a15cd53cd521a09b", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-curl": "*", - "ext-mbstring": "*", - "php": "^7.0", - "sabre/event": ">=4.0 <6.0", - "sabre/uri": "^2.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0 || ^7.0" - }, - "suggest": { - "ext-curl": " to make http requests with the Client class" - }, - "type": "library", - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Sabre\\HTTP\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" - } - ], - "description": "The sabre/http library provides utilities for dealing with http requests and responses. ", - "homepage": "https://github.com/fruux/sabre-http", - "keywords": [ - "http" - ], - "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/http/issues", - "source": "https://github.com/fruux/sabre-http" - }, - "time": "2019-11-28T19:35:25+00:00" - }, - { - "name": "sabre/uri", - "version": "2.1.3", - "source": { - "type": "git", - "url": "https://github.com/sabre-io/uri.git", - "reference": "18f454324f371cbcabdad3d0d3755b4b0182095d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabre-io/uri/zipball/18f454324f371cbcabdad3d0d3755b4b0182095d", - "reference": "18f454324f371cbcabdad3d0d3755b4b0182095d", - "shasum": "" - }, - "require": { - "php": ">=7" - }, - "require-dev": { - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Sabre\\Uri\\": "lib/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Functions for making sense out of URIs.", - "homepage": "http://sabre.io/uri/", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ - "rfc3986", - "uri", - "url" + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" ], "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/uri/issues", - "source": "https://github.com/fruux/sabre-uri" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2019-09-09T23:00:25+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { - "name": "sabre/vobject", - "version": "4.2.2", + "name": "psr/http-message", + "version": "2.0", "source": { "type": "git", - "url": "https://github.com/sabre-io/vobject.git", - "reference": "449616b2d45b95c8973975de23f34a3d14f63b4b" + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/vobject/zipball/449616b2d45b95c8973975de23f34a3d14f63b4b", - "reference": "449616b2d45b95c8973975de23f34a3d14f63b4b", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.5", - "sabre/xml": ">=1.5 <3.0" - }, - "require-dev": { - "phpunit/phpunit": "> 4.8.35, <6.0.0" - }, - "suggest": { - "hoa/bench": "If you would like to run the benchmark scripts" + "php": "^7.2 || ^8.0" }, - "bin": [ - "bin/vobject", - "bin/generate_vcards" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Sabre\\VObject\\": "lib/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" - }, - { - "name": "Dominik Tobschall", - "email": "dominik@fruux.com", - "homepage": "http://tobschall.de/", - "role": "Developer" - }, - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net", - "homepage": "http://mnt.io/", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects", - "homepage": "http://sabre.io/vobject/", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "availability", - "freebusy", - "iCalendar", - "ical", - "ics", - "jCal", - "jCard", - "recurrence", - "rfc2425", - "rfc2426", - "rfc2739", - "rfc4770", - "rfc5545", - "rfc5546", - "rfc6321", - "rfc6350", - "rfc6351", - "rfc6474", - "rfc6638", - "rfc6715", - "rfc6868", - "vCalendar", - "vCard", - "vcf", - "xCal", - "xCard" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/vobject/issues", - "source": "https://github.com/fruux/sabre-vobject" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2020-01-14T10:18:45+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { - "name": "sabre/xml", - "version": "2.1.3", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/sabre-io/xml.git", - "reference": "f08a58f57e2b0d7df769a432756aa371417ab9eb" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/xml/zipball/f08a58f57e2b0d7df769a432756aa371417ab9eb", - "reference": "f08a58f57e2b0d7df769a432756aa371417ab9eb", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-xmlreader": "*", - "ext-xmlwriter": "*", - "lib-libxml": ">=2.6.20", - "php": ">=7.0", - "sabre/uri": ">=1.0,<3.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^6" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { - "files": [ - "lib/Deserializer/functions.php", - "lib/Serializer/functions.php" - ], "psr-4": { - "Sabre\\Xml\\": "lib/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" - }, - { - "name": "Markus Staab", - "email": "markus.staab@redaxo.de", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "sabre/xml is an XML library that you may not hate.", - "homepage": "https://sabre.io/xml/", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "XMLReader", - "XMLWriter", - "dom", - "xml" + "log", + "psr", + "psr-3" ], "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/xml/issues", - "source": "https://github.com/fruux/sabre-xml" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2019-08-14T15:41:34+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { "name": "symfony/cache", - "version": "v3.3.6", + "version": "v5.4.46", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "cf1ad9191c3d2176c81e7fcc6ea32603186ceddc" + "reference": "0fe08ee32cec2748fbfea10c52d3ee02049e0f6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/cf1ad9191c3d2176c81e7fcc6ea32603186ceddc", - "reference": "cf1ad9191c3d2176c81e7fcc6ea32603186ceddc", + "url": "https://api.github.com/repos/symfony/cache/zipball/0fe08ee32cec2748fbfea10c52d3ee02049e0f6b", + "reference": "0fe08ee32cec2748fbfea10c52d3ee02049e0f6b", "shasum": "" }, "require": { - "php": ">=5.5.9", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { - "symfony/var-dumper": "<3.3" + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" }, "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.4", - "predis/predis": "~1.0" - }, - "suggest": { - "symfony/polyfill-apcu": "For using ApcuAdapter on HHVM" + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Cache\\": "" @@ -2076,58 +1182,66 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/3.3" + "source": "https://github.com/symfony/cache/tree/v5.4.46" }, - "time": "2017-07-23T08:41:58+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-04T11:43:55+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v2.8.52", + "name": "symfony/cache-contracts", + "version": "v2.5.4", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "517c3a3619dadfa6952c4651767fcadffb4df65e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0", - "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/517c3a3619dadfa6952c4651767fcadffb4df65e", + "reference": "517c3a3619dadfa6952c4651767fcadffb4df65e", "shasum": "" }, "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/cache-implementation": "" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "2.8-dev" + "dev-main": "2.5-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2135,51 +1249,73 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v2.8.50" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.4" }, - "time": "2018-11-21T14:20:20+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:11:13+00:00" }, { - "name": "symfony/expression-language", - "version": "v3.3.6", + "name": "symfony/deprecation-contracts", + "version": "v2.5.4", "source": { "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "48abe52c5b80babe29e956d900b7ab06faf50eef" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/48abe52c5b80babe29e956d900b7ab06faf50eef", - "reference": "48abe52c5b80babe29e956d900b7ab06faf50eef", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/cache": "~3.1" + "php": ">=7.1" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "3.3-dev" + "dev-main": "2.5-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2188,61 +1324,62 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ExpressionLanguage Component", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/master" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4" }, - "time": "2017-05-01T15:01:29+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:11:13+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.19.0", + "name": "symfony/expression-language", + "version": "v5.4.45", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826" + "url": "https://github.com/symfony/expression-language.git", + "reference": "a784b66edc4c151eb05076d04707906ee2c209a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/4ad5115c0f5d5172a9fe8147675ec6de266d8826", - "reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/a784b66edc4c151eb05076d04707906ee2c209a9", + "reference": "a784b66edc4c151eb05076d04707906ee2c209a9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.2.5", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2250,30 +1387,18 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.19.0" + "source": "https://github.com/symfony/expression-language/tree/v5.4.45" }, "funding": [ { @@ -2289,47 +1414,35 @@ "type": "tidelift" } ], - "time": "2020-10-21T09:57:48+00:00" + "time": "2024-10-04T14:55:40+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.19.0", + "name": "symfony/options-resolver", + "version": "v5.4.45", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27", - "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6", + "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Component\\OptionsResolver\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2338,26 +1451,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "config", + "configuration", + "options" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.19.0" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.45" }, "funding": [ { @@ -2373,34 +1483,30 @@ "type": "tidelift" } ], - "time": "2020-10-23T09:01:57+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.19.0", + "name": "symfony/polyfill-php73", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ea19621731cbd973a6702cfedef3419768bf3372" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ea19621731cbd973a6702cfedef3419768bf3372", - "reference": "ea19621731cbd973a6702cfedef3419768bf3372", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2408,8 +1514,11 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - } + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2425,7 +1534,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2434,7 +1543,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.19.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" }, "funding": [ { @@ -2450,34 +1559,30 @@ "type": "tidelift" } ], - "time": "2020-10-23T09:01:57+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.19.0", + "name": "symfony/polyfill-php80", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e", - "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2485,7 +1590,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, "classmap": [ "Resources/stubs" @@ -2496,6 +1601,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -2505,7 +1614,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2514,7 +1623,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.19.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -2530,41 +1639,46 @@ "type": "tidelift" } ], - "time": "2020-10-23T09:01:57+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.19.0", + "name": "symfony/service-contracts", + "version": "v2.5.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "beecef6b463b06954638f02378f52496cb84bacc" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc", - "reference": "beecef6b463b06954638f02378f52496cb84bacc", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300", + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "2.5-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Contracts\\Service\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2581,16 +1695,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.19.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.4" }, "funding": [ { @@ -2606,39 +1722,37 @@ "type": "tidelift" } ], - "time": "2020-10-23T09:01:57+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { - "name": "symfony/polyfill-util", - "version": "v1.19.0", + "name": "symfony/var-exporter", + "version": "v5.4.45", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "8df0c3e6a4b85df9a5c6f3f2f46fba5c5c47058a" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "862700068db0ddfd8c5b850671e029a90246ec75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/8df0c3e6a4b85df9a5c6f3f2f46fba5c5c47058a", - "reference": "8df0c3e6a4b85df9a5c6f3f2f46fba5c5c47058a", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/862700068db0ddfd8c5b850671e029a90246ec75", + "reference": "862700068db0ddfd8c5b850671e029a90246ec75", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2654,16 +1768,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony utilities for portability of PHP codes", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" ], "support": { - "source": "https://github.com/symfony/polyfill-util/tree/v1.19.0" + "source": "https://github.com/symfony/var-exporter/tree/v5.4.45" }, "funding": [ { @@ -2679,32 +1795,42 @@ "type": "tidelift" } ], - "time": "2020-10-21T09:57:48+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { - "name": "touki/ftp", - "version": "v1.2.1", + "name": "webmozart/assert", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/touki653/php-ftp-wrapper.git", - "reference": "318595fb8b1bff215b4af092c3faae83a532b822" + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/touki653/php-ftp-wrapper/zipball/318595fb8b1bff215b4af092c3faae83a532b822", - "reference": "318595fb8b1bff215b4af092c3faae83a532b822", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { - "psr-0": { - "Touki\\FTP": [ - "lib/", - "tests/" - ] + "psr-4": { + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2713,28 +1839,35 @@ ], "authors": [ { - "name": "Touki", - "email": "g.vincendon@vithemis.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "A fully object oriented library for PHP FTP functions", + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], "support": { - "issues": "https://github.com/touki653/php-ftp-wrapper/issues", - "source": "https://github.com/touki653/php-ftp-wrapper/tree/master" + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2017-01-04T08:59:38+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": { + "php": ">=7.4" + }, + "platform-dev": {}, "platform-overrides": { - "php": "7.0.0" + "php": "7.4" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/core/ajax/eqLogic.ajax.php b/core/ajax/eqLogic.ajax.php index e30f9482b5..99f30677e3 100644 --- a/core/ajax/eqLogic.ajax.php +++ b/core/ajax/eqLogic.ajax.php @@ -25,8 +25,8 @@ } ajax::init(array('uploadImage')); - - if (init('action') == 'uploadImage') { + + if (init('action') == 'uploadImage') { if (!isConnect('admin')) { throw new Exception(__('401 - Accès non autorisé', __FILE__)); } @@ -408,12 +408,15 @@ if (isset($used['eqLogic' . $eqLogic->getId()])) { unset($used['eqLogic' . $eqLogic->getId()]); } + if (isset($used['object' . $eqLogic->getObject_id()])) { + unset($used['object' . $eqLogic->getObject_id()]); + } foreach (($eqLogic->getCmd()) as $cmd) { if (isset($used['cmd' . $cmd->getId()])) { unset($used['cmd' . $cmd->getId()]); } $cmdData = array('node' => array(), 'link' => array()); - $cmdData = $cmd->getLinkData($cmdData, 0, 2); + $cmdData = $cmd->getLinkData($cmdData, 0, 2, null, false); if (isset($cmdData['node']['eqLogic' . $eqLogic->getId()])) { unset($cmdData['node']['eqLogic' . $eqLogic->getId()]); } @@ -422,6 +425,10 @@ } if (count($cmdData['node']) > 0) { foreach ($cmdData['node'] as $name => $data) { + if (cmd::byId(str_replace('cmd', '', $data['id']))->getEqLogic_id() == $eqLogic->getId()) { + continue; + } + $data['sourceName'] = $cmd->getName(); $used[$name . $cmd->getName()] = $data; } diff --git a/core/class/ajax.class.php b/core/class/ajax.class.php index 5f066ef3c7..2d00434087 100644 --- a/core/class/ajax.class.php +++ b/core/class/ajax.class.php @@ -19,11 +19,61 @@ /* * ***************************Includes********************************* */ require_once __DIR__ . '/../../core/php/core.inc.php'; +/** + * Gère les réponses AJAX de Jeedom + * + * @note Évolutions possibles et compatibles + * Cette classe pourrait être enrichie progressivement avec : + * - Une interface ResponseFormatterInterface pour supporter différents formats (json, xml...) + * - Un système de middleware pour la validation des entrées + * - Des codes d'erreur HTTP standards via une énumération + * Ces changements peuvent être implémentés graduellement sans casser l'existant + * + * @example Utilisation actuelle + * ```php + * ajax::init(['getInfos']); + * ajax::success($data); + * ``` + * + * @example Utilisation future possible + * ```php + * // Même API, plus de fonctionnalités + * ajax::init(['getInfos']) + * ->withValidator(new InputValidator()) + * ->withFormat(new JsonFormatter()); + * ajax::success($data); + * ``` + * + * @see config::class Pour la gestion des configurations + * @see log::class Pour la gestion des logs + * + * @todo Version 4.6 ou 5.0 + * - [OPTIONNEL] Ajouter un système de middleware pour valider les entrées + * - [OPTIONNEL] Support de différents formats via interfaces + * - [COMPATIBLE] Utiliser des codes HTTP standards + */ class ajax { /* * *************************Attributs****************************** */ - + /* * *********************Methode static ************************* */ - + + /** + * Initialise la réponse AJAX + * Configure les en-têtes HTTP et vérifie les actions autorisées en GET + * + * @param array $_allowGetAction Liste des actions autorisées en GET + * @return void + * @throws \Exception Si l'action demandée en GET n'est pas autorisée + * + * @note Évolution possible + * Cette méthode pourrait retourner $this pour permettre le chaînage : + * ```php + * ajax::init(['action']) + * ->withValidator() + * ->withFormat(); + * ``` + * Ce changement serait rétrocompatible + */ public static function init($_allowGetAction = array()) { if (!headers_sent()) { header('Content-Type: application/json'); @@ -32,21 +82,62 @@ public static function init($_allowGetAction = array()) { throw new \Exception(__('Méthode non autorisée en GET : ',__FILE__).$_GET['action']); } } - + + /** + * Retourne un token (méthode non utilisée ?) + * + * @return string Token vide + */ public static function getToken(){ return ''; } - + + /** + * Envoie une réponse de succès et termine l'exécution + * + * @param mixed $_data Données à renvoyer dans la réponse + * @return never + * + * @note Compatibilité et évolution + * Pour maintenir la compatibilité tout en permettant l'évolution : + * - Garder le comportement actuel par défaut + * - Permettre l'injection d'un formatter optionnel + * ```php + * ajax::success($data, new JsonFormatter()); // Optionnel + * ``` + */ public static function success($_data = '') { echo self::getResponse($_data); die(); } - + + /** + * Envoie une réponse d'erreur et termine l'exécution + * + * @param mixed $_data Message d'erreur ou données à renvoyer + * @param int $_errorCode Code d'erreur + * @return never + */ public static function error($_data = '', $_errorCode = 0) { echo self::getResponse($_data, $_errorCode); die(); } - + + /** + * Génère la réponse JSON formatée + * + * @param mixed $_data Données à inclure dans la réponse + * @param ?int $_errorCode Code d'erreur (null pour une réponse de succès) + * @return string Réponse JSON encodée + * + * @note Architecture future + * Cette méthode pourrait déléguer le formatage à des classes dédiées : + * - JsonFormatter (comportement actuel) + * - XmlFormatter + * - CsvFormatter + * etc. + * La transition peut se faire graduellement en gardant le comportement par défaut + */ public static function getResponse($_data = '', $_errorCode = null) { $isError = !(null === $_errorCode); $return = array( diff --git a/core/class/cmd.class.php b/core/class/cmd.class.php index e7a76a9f28..9000d3935f 100644 --- a/core/class/cmd.class.php +++ b/core/class/cmd.class.php @@ -25,7 +25,7 @@ */ class cmd { - /* * *************************Attributs****************************** */ + /* * *************************Attributs****************************** */ protected $id; protected $logicalId; @@ -64,7 +64,7 @@ class cmd { 'Hz' => array(1000, 'Hz', 'kHz', 'MHz', 'GHz'), 'l' => array(1000, 'l', 'm3') ); - /* * ***********************Méthodes statiques*************************** */ + /* * ***********************Méthodes statiques*************************** */ private static function cast($_inputs, $_eqLogic = null) { if (is_object($_inputs) && class_exists($_inputs->getEqType() . 'Cmd')) { @@ -983,7 +983,7 @@ public static function cmdAlert($_options) { $cmd->executeAlertCmdAction(); } - /* * *********************Méthodes d'instance************************* */ + /* * *********************Méthodes d'instance************************* */ public function formatValue($_value, $_quote = false) { if (is_array($_value) || is_object($_value)) { return ''; @@ -992,10 +992,10 @@ public function formatValue($_value, $_quote = false) { $_value = 0; } if (trim($_value) == '' && $_value !== false && $_value !== 0) { - if($this->getSubType() == 'numeric'){ + if ($this->getSubType() == 'numeric') { return 0; } - if($this->getSubType() == 'binary'){ + if ($this->getSubType() == 'binary') { return 0; } return ''; @@ -1134,10 +1134,12 @@ public function remove() { viewData::removeByTypeLinkId('cmd', $this->getId()); dataStore::removeByTypeLinkId('cmd', $this->getId()); $eqLogic = $this->getEqLogic(); - $eqLogic->setStatus(array( - 'warning' => 0, - 'danger' => 0, - )); + if (is_object($eqLogic)) { + $eqLogic->setStatus(array( + 'warning' => 0, + 'danger' => 0, + )); + } $this->emptyHistory(); cache::delete('cmdCacheAttr' . $this->getId()); cache::delete('cmd' . $this->getId()); @@ -1755,9 +1757,9 @@ public function toHtml($_version = 'dashboard', $_options = '') { $replace['#minHistoryValue#'] = round(intval($replace['#state#']), 1); $replace['#maxHistoryValue#'] = round(intval($replace['#state#']), 1); } else { - $replace['#averageHistoryValue#'] = round($historyStatistique['avg'], 1); - $replace['#minHistoryValue#'] = round($historyStatistique['min'], 1); - $replace['#maxHistoryValue#'] = round($historyStatistique['max'], 1); + $replace['#averageHistoryValue#'] = round(intval($historyStatistique['avg']), 1); + $replace['#minHistoryValue#'] = round(intval($historyStatistique['min']), 1); + $replace['#maxHistoryValue#'] = round(intval($historyStatistique['max']), 1); } $startHist = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' -' . config::byKey('historyCalculTendance') . ' hour')); $tendance = $this->getTendance($startHist, date('Y-m-d H:i:s')); @@ -2271,7 +2273,7 @@ public function computeInfluxData($_value, $_timestamp = '') { return $point; } - public function getInflux($_cmdId = null) { + public static function getInflux($_cmdId = null) { try { if ($_cmdId) { $cmd = cmd::byId($_cmdId); @@ -2356,7 +2358,7 @@ public function historyInfluxAll() { cmd::historyInflux('all'); } - public function sendHistoryInflux($_params) { + public static function sendHistoryInflux($_params) { $cmds = array(); if ($_params['cmd_id'] == 'all') { foreach (cmd::byTypeSubType('info') as $cmd) { @@ -2810,7 +2812,7 @@ public function exportApi() { return $return; } - public function getLinkData(&$_data = array('node' => array(), 'link' => array()), $_level = 0, $_drill = null) { + public function getLinkData(&$_data = array('node' => array(), 'link' => array()), $_level = 0, $_drill = null, $_include_use = true) { if ($_drill === null) { $_drill = config::byKey('graphlink::cmd::drill'); } @@ -2836,7 +2838,6 @@ public function getLinkData(&$_data = array('node' => array(), 'link' => array() 'url' => $this->getEqLogic()->getLinkToConfiguration(), ); $usedBy = $this->getUsedBy(); - $use = $this->getUse(); addGraphLink($this, 'cmd', $usedBy['scenario'], 'scenario', $_data, $_level, $_drill); foreach ($usedBy['plugin'] as $key => $value) { addGraphLink($this, 'cmd', $value, $key, $_data, $_level, $_drill); @@ -2847,10 +2848,13 @@ public function getLinkData(&$_data = array('node' => array(), 'link' => array() addGraphLink($this, 'cmd', $usedBy['plan'], 'plan', $_data, $_level, $_drill, array('dashvalue' => '2,6', 'lengthfactor' => 0.6)); addGraphLink($this, 'cmd', $usedBy['plan3d'], 'plan3d', $_data, $_level, $_drill, array('dashvalue' => '2,6', 'lengthfactor' => 0.6)); addGraphLink($this, 'cmd', $usedBy['view'], 'view', $_data, $_level, $_drill, array('dashvalue' => '2,6', 'lengthfactor' => 0.6)); - addGraphLink($this, 'cmd', $use['scenario'], 'scenario', $_data, $_level, $_drill); - addGraphLink($this, 'cmd', $use['eqLogic'], 'eqLogic', $_data, $_level, $_drill); - addGraphLink($this, 'cmd', $use['cmd'], 'cmd', $_data, $_level, $_drill); - addGraphLink($this, 'cmd', $use['dataStore'], 'dataStore', $_data, $_level, $_drill); + if ($_include_use) { + $use = $this->getUse(); + addGraphLink($this, 'cmd', $use['scenario'], 'scenario', $_data, $_level, $_drill); + addGraphLink($this, 'cmd', $use['eqLogic'], 'eqLogic', $_data, $_level, $_drill); + addGraphLink($this, 'cmd', $use['cmd'], 'cmd', $_data, $_level, $_drill); + addGraphLink($this, 'cmd', $use['dataStore'], 'dataStore', $_data, $_level, $_drill); + } addGraphLink($this, 'cmd', $this->getEqLogic(), 'eqLogic', $_data, $_level, $_drill, array('dashvalue' => '1,0', 'lengthfactor' => 0.6)); return $_data; } @@ -2858,7 +2862,7 @@ public function getLinkData(&$_data = array('node' => array(), 'link' => array() public function getUsedBy($_array = false) { $return = array('cmd' => array(), 'eqLogic' => array(), 'scenario' => array(), 'plan' => array(), 'view' => array()); $cmds = array_merge(self::searchConfiguration('#' . $this->getId() . '#'), cmd::byValue($this->getId())); - if(is_array($cmds) && count($cmds) > 0){ + if (is_array($cmds) && count($cmds) > 0) { foreach ($cmds as $cmd) { $return['cmd'][$cmd->getId()] = $cmd; } @@ -2896,7 +2900,7 @@ public function hasRight($_user = null) { } } - /* * **********************Getteur Setteur*************************** */ + /* * **********************Getteur Setteur*************************** */ public function getId() { return $this->id; diff --git a/core/class/config.class.php b/core/class/config.class.php index c0867831d7..a33f7d2832 100644 --- a/core/class/config.class.php +++ b/core/class/config.class.php @@ -122,6 +122,11 @@ public static function remove(string $_key, string $_plugin = 'core') { $sql = 'DELETE FROM config WHERE plugin=:plugin'; DB::Prepare($sql, $values, DB::FETCH_TYPE_ROW); + foreach (self::$cache as $cacheKey => $value) { + if (strpos($cacheKey, $_plugin . '::') === 0) { + unset(self::$cache[$cacheKey]); + } + } } else { $values = array( 'plugin' => $_plugin, @@ -131,9 +136,7 @@ public static function remove(string $_key, string $_plugin = 'core') { WHERE `key`=:key AND plugin=:plugin'; DB::Prepare($sql, $values, DB::FETCH_TYPE_ROW); - if (isset(self::$cache[$_plugin . '::' . $_key])) { - unset(self::$cache[$_plugin . '::' . $_key]); - } + unset(self::$cache[$_plugin . '::' . $_key]); } return true; } @@ -197,7 +200,7 @@ public static function byKeys($_keys, $_plugin = 'core', $_default = '') { } else if ($_plugin != 'core' && class_exists($_plugin) && property_exists($_plugin, '_encryptConfigKey') && in_array($value['key'], $_plugin::$_encryptConfigKey)) { $value['value'] = utils::decrypt($value['value']); } else if ($value['key'] == 'api') { - $value['key'] = utils::decrypt($value['key']); + $value['value'] = utils::decrypt($value['value']); } $return[$value['key']] = $value['value']; } @@ -248,6 +251,9 @@ public static function searchKey($_key, $_plugin = 'core') { } public static function genKey($_car = 64) { + if ($_car > 256) { + throw new \Exception('Key length too long'); + } $key = ''; $chaine = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for ($i = 0; $i < $_car; $i++) { diff --git a/core/class/eqLogic.class.php b/core/class/eqLogic.class.php index 97d9ce588c..5c677485fb 100644 --- a/core/class/eqLogic.class.php +++ b/core/class/eqLogic.class.php @@ -639,7 +639,7 @@ public function batteryWidget($_version = 'dashboard') { } $classAttr = $level . ' ' . $battery . ' ' . $plugins . ' ' . $object_name; $idAttr = $level . '__' . $battery . '__' . $plugins . '__' . $object_name; - $html .= '
'; + $html .= '
'; $eqName = $this->getName(); if ($_version == 'mobile') { @@ -1375,18 +1375,18 @@ public function import($_configuration, $_dontRemove = false) { $link_actions = array(); $arrayToRemove = []; if (isset($_configuration['commands'])) { - foreach (($this->getCmd()) as $eqLogic_cmd) { - $exists = 0; - foreach ($_configuration['commands'] as $command) { - if (isset($command['logicalId']) && $command['logicalId'] == $eqLogic_cmd->getLogicalId()) { - $exists++; + if (!$_dontRemove) { + foreach (($this->getCmd()) as $eqLogic_cmd) { + $exists = 0; + foreach ($_configuration['commands'] as $command) { + if (isset($command['logicalId']) && $command['logicalId'] == $eqLogic_cmd->getLogicalId()) { + $exists++; + } + } + if ($exists < 1) { + $arrayToRemove[] = $eqLogic_cmd; } } - if ($exists < 1) { - $arrayToRemove[] = $eqLogic_cmd; - } - } - if (!$_dontRemove) { foreach ($arrayToRemove as $cmdToRemove) { try { $cmdToRemove->remove(); diff --git a/core/class/event.class.php b/core/class/event.class.php index 533b82ad16..c603a7487d 100644 --- a/core/class/event.class.php +++ b/core/class/event.class.php @@ -105,6 +105,9 @@ public static function changes($_datetime, $_longPolling = null, $_filter = null return array('datetime' => getmicrotime(), 'result'=> utils::o2a($return)); } $waitTime = config::byKey('event::waitPollingTime'); + if($waitTime == 0){ + $waitTime = 1; + } $i = 0; $max_cycle = $_longPolling / $waitTime; while (count($return) == 0 && $i < $max_cycle) { @@ -113,7 +116,6 @@ public static function changes($_datetime, $_longPolling = null, $_filter = null } else { sleep(round($waitTime)); } - sleep(1); $return = self::filterEvent(self::changesSince($_datetime), $_filter); $i++; } diff --git a/core/class/jeedom.class.php b/core/class/jeedom.class.php index 4f70e00418..d090860d81 100644 --- a/core/class/jeedom.class.php +++ b/core/class/jeedom.class.php @@ -363,7 +363,7 @@ public static function health() { 'comment' => '', ); - $value = shell_exec('sudo dmesg | grep oom | grep -v deprecated | wc -l'); + $value = shell_exec('sudo dmesg | grep oom-killer | grep -v deprecated | wc -l'); $return[] = array( 'name' => __('Mémoire suffisante', __FILE__), 'state' => ($value == 0), @@ -1078,13 +1078,6 @@ public static function cron5() { } public static function cron10() { - try { - network::cron10(); - } catch (Exception $e) { - log::add('network', 'error', 'network::cron : ' . log::exception($e)); - } catch (Error $e) { - log::add('network', 'error', 'network::cron : ' . log::exception($e)); - } try { foreach ((update::listRepo()) as $name => $repo) { $class = 'repo_' . $name; diff --git a/core/class/jsonrpc.class.php b/core/class/jsonrpc.class.php index 72d1f893d0..3b407939cc 100644 --- a/core/class/jsonrpc.class.php +++ b/core/class/jsonrpc.class.php @@ -71,7 +71,15 @@ public function makeError($_code, $_message) { exit; } - public function makeSuccess($_result = 'ok') { + public function makeSuccess($_result = null) { + if(is_object($_result)){ + $_result = utils::o2a($_result); + } + + if(empty($_result)){ + $_result = 'ok'; + } + $return = array( 'jsonrpc' => '2.0', 'id' => $this->id, diff --git a/core/class/log.class.php b/core/class/log.class.php index 065effbf1a..db2cd895a3 100644 --- a/core/class/log.class.php +++ b/core/class/log.class.php @@ -161,7 +161,7 @@ public static function chunkLog($_path) { $maxLineLog = self::DEFAULT_MAX_LINE; } try { - com_shell::execute(system::getCmdSudo() . 'chmod 664 ' . $_path . ' > /dev/null 2>&1;echo "$(tail -n ' . $maxLineLog . ' ' . $_path . ')" > ' . $_path); + com_shell::execute(system::getCmdSudo() . 'chmod 664 ' . $_path . ' > /dev/null 2>&1;'. system::getCmdSudo() . 'chown -R ' . system::get('www-uid') . ':' . system::get('www-gid') . ' ' . $_path.' > /dev/null 2>&1;'.system::getCmdSudo() . ' echo "$(tail -n ' . $maxLineLog . ' ' . $_path . ')" > ' . $_path); } catch (\Exception $e) { } @chown($_path, system::get('www-uid')); @@ -196,7 +196,7 @@ public static function authorizeClearLog($_log, $_subPath = '') { public static function clear($_log) { if (self::authorizeClearLog($_log)) { $path = self::getPathToLog($_log); - com_shell::execute(system::getCmdSudo() . 'chmod 664 ' . $path . '> /dev/null 2>&1;cat /dev/null > ' . $path); + com_shell::execute(system::getCmdSudo() . 'chmod 664 ' . $path . '> /dev/null 2>&1;'. system::getCmdSudo() . 'chown -R ' . system::get('www-uid') . ':' . system::get('www-gid') . ' ' . $path.' > /dev/null 2>&1;'.system::getCmdSudo() . ' cat /dev/null > ' . $path); return true; } return; @@ -222,7 +222,10 @@ public static function remove($_log) { } if (self::authorizeClearLog($_log)) { $path = self::getPathToLog($_log); - com_shell::execute(system::getCmdSudo() . 'chmod 664 ' . $path . ' > /dev/null 2>&1;cat /dev/null > ' . $path.';rm ' . $path . ' 2>&1 > /dev/null'); + com_shell::execute(system::getCmdSudo() . 'chmod 664 ' . $path . ' > /dev/null 2>&1;'. system::getCmdSudo() . 'chown -R ' . system::get('www-uid') . ':' . system::get('www-gid') . ' ' . $path.' > /dev/null 2>&1;'.system::getCmdSudo() . ' cat /dev/null > ' . $path.';rm ' . $path . ' 2>&1 > /dev/null'); + + + return true; } } @@ -516,4 +519,4 @@ public static function exception($e) { /* * *********************Methode d'instance************************* */ /* * **********************Getteur Setteur*************************** */ -} \ No newline at end of file +} diff --git a/core/class/network.class.php b/core/class/network.class.php index 0573c82b32..7958b1da78 100644 --- a/core/class/network.class.php +++ b/core/class/network.class.php @@ -77,36 +77,33 @@ public static function getNetworkAccess($_mode = 'auto', $_protocol = '', $_defa return config::byKey('internalAddr', 'core', $_default); } if ($_protocol == 'ip:port' || $_protocol == 'dns:port') { - return config::byKey('internalAddr') . ':' . config::byKey('internalPort', 'core', 80); + return config::byKey('internalAddr') . ':' . self::getPort($_mode); } if ($_protocol == 'proto:ip' || $_protocol == 'proto:dns') { return config::byKey('internalProtocol') . config::byKey('internalAddr'); } if ($_protocol == 'proto:ip:port' || $_protocol == 'proto:dns:port') { - return config::byKey('internalProtocol') . config::byKey('internalAddr') . ':' . config::byKey('internalPort', 'core', 80); + return config::byKey('internalProtocol') . config::byKey('internalAddr') . ':' . self::getPort($_mode); } if ($_protocol == 'proto:127.0.0.1:port:comp') { if (jeedom::getHardwareName() == 'docker') { - return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . ':' . config::byKey('internalPort', 'core', 80) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . ':' . self::getPort($_mode) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } - return trim(config::byKey('internalProtocol') . '127.0.0.1:' . config::byKey('internalPort', 'core', 80) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + return trim(config::byKey('internalProtocol') . '127.0.0.1:' . self::getPort($_mode) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } if ($_protocol == 'http:127.0.0.1:port:comp') { if (jeedom::getHardwareName() == 'docker') { - return trim('http://'. config::byKey('internalAddr') . ':' . config::byKey('internalPort', 'core', 80) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + return trim('http://' . config::byKey('internalAddr') . ':' . self::getPort($_mode, 'http') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } - return trim('http://127.0.0.1:' . config::byKey('internalPort', 'core', 80) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + return trim('http://127.0.0.1:' . self::getPort($_mode, 'http') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } - if (config::byKey('internalPort', 'core', '') == '') { - return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + if (config::byKey('internalProtocol') == 'http://' && self::getPort($_mode) == 80) { + return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } - if (config::byKey('internalProtocol') == 'http://' && config::byKey('internalPort', 'core', 80) == 80) { - return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + if (config::byKey('internalProtocol') == 'https://' && self::getPort($_mode) == 443) { + return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } - if (config::byKey('internalProtocol') == 'https://' && config::byKey('internalPort', 'core', 443) == 443) { - return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . '/' . trim(config::byKey('internalComplement'), '/'), '/'); - } - return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . ':' . config::byKey('internalPort', 'core', 80) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); + return trim(config::byKey('internalProtocol') . config::byKey('internalAddr') . ':' . self::getPort($_mode) . '/' . trim(config::byKey('internalComplement'), '/'), '/'); } if ($_mode == 'dnsjeedom') { return config::byKey('jeedom::url'); @@ -129,7 +126,7 @@ public static function getNetworkAccess($_mode = 'auto', $_protocol = '', $_defa } } } - return config::byKey('externalAddr') . ':' . config::byKey('externalPort', 'core', 80); + return config::byKey('externalAddr') . ':' . self::getPort($_mode); } if ($_protocol == 'proto:dns:port' || $_protocol == 'proto:ip:port') { if (config::byKey('market::allowDNS') == 1 && config::byKey('jeedom::url') != '' && config::byKey('network::disableMangement') == 0) { @@ -146,7 +143,7 @@ public static function getNetworkAccess($_mode = 'auto', $_protocol = '', $_defa } } } - return config::byKey('externalProtocol') . config::byKey('externalAddr') . ':' . config::byKey('externalPort', 'core', 80); + return config::byKey('externalProtocol') . config::byKey('externalAddr') . ':' . self::getPort($_mode); } if ($_protocol == 'proto:dns' || $_protocol == 'proto:ip') { if (config::byKey('market::allowDNS') == 1 && config::byKey('jeedom::url') != '' && config::byKey('network::disableMangement') == 0) { @@ -176,7 +173,7 @@ public static function getNetworkAccess($_mode = 'auto', $_protocol = '', $_defa } } } - return config::byKey('externalAddr') . ':' . config::byKey('externalPort', 'core', 80); + return config::byKey('externalAddr') . ':' . self::getPort($_mode); } if ($_protocol == 'proto') { if (config::byKey('market::allowDNS') == 1 && config::byKey('jeedom::url') != '' && config::byKey('network::disableMangement') == 0) { @@ -191,17 +188,33 @@ public static function getNetworkAccess($_mode = 'auto', $_protocol = '', $_defa if (config::byKey('dns::token') != '' && config::byKey('market::allowDNS') == 1 && config::byKey('jeedom::url') != '' && config::byKey('network::disableMangement') == 0) { return trim(config::byKey('jeedom::url') . '/' . trim(config::byKey('externalComplement', 'core', ''), '/'), '/'); } - if (config::byKey('externalPort', 'core', '') == '') { - return trim(config::byKey('externalProtocol') . config::byKey('externalAddr') . '/' . trim(config::byKey('externalComplement'), '/'), '/'); - } - if (config::byKey('externalProtocol') == 'http://' && config::byKey('externalPort', 'core', 80) == 80) { + if (config::byKey('externalProtocol') == 'http://' && self::getPort($_mode, 'http') == 80) { return trim(config::byKey('externalProtocol') . config::byKey('externalAddr') . '/' . trim(config::byKey('externalComplement'), '/'), '/'); } - if (config::byKey('externalProtocol') == 'https://' && config::byKey('externalPort', 'core', 443) == 443) { + if (config::byKey('externalProtocol') == 'https://' && self::getPort($_mode, 'https') == 443) { return trim(config::byKey('externalProtocol') . config::byKey('externalAddr') . '/' . trim(config::byKey('externalComplement'), '/'), '/'); } - return trim(config::byKey('externalProtocol') . config::byKey('externalAddr') . ':' . config::byKey('externalPort', 'core', 80) . '/' . trim(config::byKey('externalComplement'), '/'), '/'); + return trim(config::byKey('externalProtocol') . config::byKey('externalAddr') . ':' . self::getPort($_mode) . '/' . trim(config::byKey('externalComplement'), '/'), '/'); + } + } + + private static function getPort(string $_mode = 'internal', string $_protocol = '') { + if ($_mode != 'internal' && $_mode != 'external') { + throw new InvalidArgumentException("Mode must be 'internal' or 'external'. Invalid mode received: {$_mode}"); } + if ($_protocol == '') { + $_protocol = strtolower(trim(config::byKey("{$_mode}Protocol", 'core'), ':/ ')); + } + if ($_protocol != 'http' && $_protocol != 'https') { + throw new RuntimeException("Protocol must be 'http' or 'https'. Invalid protocol: {$_protocol}"); + } + + if ($_protocol == 'http') { + $default_port = 80; + } else { + $default_port = 443; + } + return config::byKey("{$_mode}Port", 'core', $default_port); } public static function checkConf($_mode = 'external') { @@ -209,24 +222,24 @@ public static function checkConf($_mode = 'external') { config::save($_mode . 'Protocol', 'http://'); } if (config::byKey($_mode . 'Port') == '') { - config::save($_mode . 'Port', 80); + config::save($_mode . 'Port', self::getPort($_mode)); } - if (config::byKey($_mode . 'Protocol') == 'https://' && config::byKey($_mode . 'Port') == 80) { + if (config::byKey($_mode . 'Protocol') == 'https://' && self::getPort($_mode) == 80) { config::save($_mode . 'Port', 443); } - if (config::byKey($_mode . 'Protocol') == 'http://' && config::byKey($_mode . 'Port') == 443) { + if (config::byKey($_mode . 'Protocol') == 'http://' && self::getPort($_mode) == 443) { config::save($_mode . 'Port', 80); } if (trim(config::byKey($_mode . 'Complement')) == '/') { config::save($_mode . 'Complement', ''); } if ($_mode == 'internal') { - if (config::byKey('network::disableInternalAuto','core',0) == 0) { + if (config::byKey('network::disableInternalAuto', 'core', 0) == 0) { foreach ((self::getInterfacesInfo()) as $interface) { if ($interface['ifname'] == 'lo' || !isset($interface['addr_info']) || strpos($interface['ifname'], 'docker') !== false || strpos($interface['ifname'], 'tun') !== false || strpos($interface['ifname'], 'br') !== false) { continue; } - if (config::byKey('network::internalAutoInterface','core','auto') != 'auto' && $interface['ifname'] != config::byKey('network::internalAutoInterface','core','auto')){ + if (config::byKey('network::internalAutoInterface', 'core', 'auto') != 'auto' && $interface['ifname'] != config::byKey('network::internalAutoInterface', 'core', 'auto')) { continue; } $ip = null; @@ -337,7 +350,7 @@ public static function dns_create() { $openvpn->setEqType_name('openvpn'); $openvpn->setConfiguration('dev', 'tun'); $openvpn->setConfiguration('proto', 'udp'); - if(config::byKey('dns::preferProtocol') != '' && strpos(config::byKey('dns::protocol'),config::byKey('dns::preferProtocol')) !== false){ + if (config::byKey('dns::preferProtocol') != '' && strpos(config::byKey('dns::protocol'), config::byKey('dns::preferProtocol')) !== false) { $openvpn->setConfiguration('proto', config::byKey('dns::preferProtocol')); } if (config::byKey('dns::vpnurl') != '') { diff --git a/core/config/default.config.ini b/core/config/default.config.ini index 51a797af50..1d54bc82d2 100644 --- a/core/config/default.config.ini +++ b/core/config/default.config.ini @@ -150,9 +150,7 @@ interact::warnme::enable = 1 ;Network internalProtocol = http:// -internalPort = 80 externalProtocol = http:// -externalPort = 80 network::localip = "127.0.0.1;192.168.*.*;10.*.*.*;172.*.*.*" ;Cache diff --git a/core/dom/dom.ui.js b/core/dom/dom.ui.js index 1095444aef..aec326912e 100644 --- a/core/dom/dom.ui.js +++ b/core/dom/dom.ui.js @@ -1952,6 +1952,7 @@ var jeeCtxMenu = function(_options) { //Events itemDiv.addEventListener('mouseup', function(event) { //Context menu item click: if (event.target.hasClass('disabled')) return + if (isset(event.button) && event.button === 2) return setTimeout(() => { //Wait for mouseup firing default click let then = true event.realTrigger = ctxInstance.realTrigger diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index 056e1b51ba..80363c9e30 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -133,7 +133,7 @@ "Alertes": "Warnungen" }, "mobile\/html\/about.html": { - "Version": "Version", + "Version": "Ausführung", "Source": "Quelle", "Branche": "Zweig", "Système": "Systeme", @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Ersetzen Sie in allen Browsern, in denen ein Design angezeigt wird, dieses durch das angeforderte", "Permet de rajouter un message dans les logs": "Ermöglicht das Hinzufügen einer Nachricht zu den Protokollen", "Permet d'ajouter un message dans le centre de message": "Ermöglicht das Hinzufügen einer Nachricht zum Nachrichtencenter", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Ermöglicht das Ändern der sichtbaren \/ unsichtbaren aktiven \/ inaktiven Eigenschaften eines Geräts", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Ermöglicht das Ändern der Eigenschaften von Geräten (sichtbar\/unsichtbar, aktiv\/inaktiv)", "Action qui permet à": "Aktion, die es ermöglicht", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "um eine Anfrage zu stellen und dann die Antwort in einer Variablen zu speichern. Diese Aktion blockiert und endet nur, wenn", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "eine Antwort erhält oder das Timeout erreicht ist. Im Moment ist diese Aktion nur mit SMS-, Slack-, SARAH- und Telegram-Plugins kompatibel", @@ -1192,7 +1192,7 @@ "Status": "Status", "Obligatoire": "Obligatorisch", "Voulu par": "Gesucht von", - "Version": "Version", + "Version": "Ausführung", "Remarque": "Bemerkung", "Commande": "Befehl", "Action": "Aktion", @@ -1208,7 +1208,7 @@ }, "desktop\/modal\/about.php": { "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", - "Version": "Version", + "Version": "Ausführung", "Source": "Quelle", "Branche": "Zweig", "Système": "Systeme", @@ -1291,7 +1291,7 @@ "Remplacer le widget": "Widget ersetzen", "Par": "Durch", "Remplacer": "Ersetzen", - "Mobile": "Mobile", + "Mobile": "Handy", "Le type de la commande à replacer doit etre le meme que le type de la commande remplacante": "Die Art der zu ersetzenden Bestellung muss mit der Art der Ersatzbestellung übereinstimmen", "Le sous-type de la commande à replacer doit etre le meme que le sous-type de la commande remplacante": "Der Subtyp des zu ersetzenden Befehls muss mit dem Subtyp des Ersetzungsbefehls übereinstimmen", "Remplacement réalisé avec succès. Nombre de widget remplacé :": "Austausch erfolgreich abgeschlossen. Anzahl der ersetzten Widgets:" @@ -1552,7 +1552,7 @@ "Rapport de bug": "Fehlerbericht", "Demande de support": "Supportanfrage", "Se déconnecter": "Abmelden", - "Version": "Version", + "Version": "Ausführung", "Nombre de messages": "Anzahl der Nachrichten", "Erreur Javascript": "Javascript-Fehler", "Nombre de mises à jour": "Anzahl der Updates", @@ -1590,7 +1590,7 @@ "Catégorie": "Kategorie", "Source": "Quelle", "Auteur": "Autor", - "Version": "Version", + "Version": "Ausführung", "Version installée du plugin.": "Installierte Version des Plugins", "Espace utilisé": "Platz genutzt", "Prérequis": "Voraussetzungen", @@ -1697,7 +1697,7 @@ "Moteur TTS": "TTS-Motor", "Sélection du moteur text-to-speech": "Auswahl der Text-to-Speech-Engine", "Plugin": "Plugin", - "Version": "Version", + "Version": "Ausführung", "Version de": "Version von", "Système": "Systeme", "Type de matériel utilisé": "Art des verwendeten Materials", @@ -1739,7 +1739,7 @@ "Desktop": "Desktop", "Principal": "Hauptsächlich", "Alternatif": "Alternative", - "Mobile": "Mobile", + "Mobile": "Handy, Mobiltelefon", "Basculer de thème": "Thema wechseln", "Selon l'heure": "Je nach Uhrzeit", "Basculer automatiquement de thème en fonction des horaires définis ci-dessous": "Wechseln Sie die Themen automatisch basierend auf den unten definierten Zeiten", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Feld zur Bestimmung des HTTP-Headers, der die Benutzerkennung enthält (z. B. HTTP_REMOTE_USER)", "Dépendance et démon": "Sucht und Dämon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Ermöglichen Sie die Installation von Abhängigkeiten desselben Plugins im Abstand von weniger als 45 Sekunden", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Ermöglichen Sie den Start des Daemons desselben Plugins im Abstand von weniger als 30 Sekunden", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IPs verboten", "Date": "Datum", "Date de fin": "Datum Ende", @@ -2181,7 +2181,7 @@ "Page par défaut": "Standardseite", "Page affichée après connexion": "Seite nach dem Login angezeigt", "Desktop": "Desktop", - "Mobile": "Mobile", + "Mobile": "Handy", "Accueil": "Herzlich Willkommen", "Objet par défaut": "Standardobjekt", "Objet affiché lors de l’arrivée sur le dashboard": "Objekt bei Ankunft auf dem Armaturenbrett angezeigt", @@ -2810,7 +2810,8 @@ "Vérifier": "überprüfen", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "Das Update scheint blockiert zu sein (keine Änderung für 10 Minuten. Überprüfen Sie das Protokoll)", "Options de mise à jour": "Update-Optionen", - "Êtes-vous sûr de vouloir mettre à jour :": "Möchten Sie wirklich aktualisieren:", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Sind Sie sicher, dass Sie löschen möchten:", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Sind Sie sicher, dass Sie Pakete vom Typ aktualisieren möchten", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Seien Sie vorsichtig, dieser Vorgang ist immer riskant und kann mehrere zehn Minuten dauern", @@ -3554,7 +3555,7 @@ "copie": "Kopieren", "Nom de la copie de l\\'équipement ?": "Name der Gerätekopie?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Sind Sie sicher, dass Sie das Gerät löschen möchten?", - "Il est utilisé par ou utilise :": "Es wird verwendet von oder verwendet:", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Bitte wählen Sie a", "Configuration du plugin": "Plugin Konfiguration", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Bitte aktivieren Sie das Gerät, bevor Sie eine der Steuerungen testen" @@ -3941,7 +3942,7 @@ "Plugin introuvable :": "Plugin nicht gefunden:", "Remplacez ce texte par votre demande en prenant soin de ne pas effacer les informations renseignées ci-dessous.": "Ersetzen Sie diesen Text durch Ihre Anfrage und achten Sie darauf, die unten angegebenen Informationen nicht zu löschen", "Informations": "Information", - "Version": "Version", + "Version": "Ausführung", "Statut Démon": "Dämonenstatus", "Démarré": "Gestartet", "Stoppé": "Gestoppt", @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Benutzername", "Mot de passe": "Passwort", "Pas de validation SSL (non recommandé)": "Keine SSL-Validierung (nicht empfohlen)", - "[Backup cloud] Nom": "[Backup Cloud] Name", + "[Backup cloud] Nom du dossier de backup": "[Cloud-Backup] Name des Backup-Ordners", "[Backup cloud] Mot de passe": "[Backup Cloud] Passwort", "[Backup cloud] Mot de passe (confirmation)": "[Cloud Backup] Passwort (Bestätigung)", "[Monitoring cloud] Désactiver": "[Cloud-Überwachung] Deaktivieren", @@ -4260,6 +4261,7 @@ "Premium": "Prämie", "Partenaire": "Partner", "Installer": "Installieren", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Dieses Plugin ist derzeit privat. Sie müssen warten, bis es öffentlich wird, oder einen Code haben, um darauf zuzugreifen", "Code promo": "Promo-Code", "Acheter": "Kaufen", @@ -4352,7 +4354,7 @@ "Droits sudo": "Sudo-Rechte", "Appliquez les droits root à Jeedom": "Wenden Sie Root-Rechte auf Jeedom an", "Version Jeedom": "Jeedom-Version", - "Version": "Version", + "Version": "Ausführung", "Version OS": "Betriebssystemversion", "Version PHP": "PHP-Version", "Si vous êtes en version 5.4.x on vous indiquera quand la version 5.5 sera obligatoire": "Wenn Sie sich in Version 5.4.x befinden, teilen wir Ihnen mit, wann Version 5.5 obligatorisch ist", diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index 3a58f97155..c020f817c9 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "On all browsers that display a design, replace it with the one requested", "Permet de rajouter un message dans les logs": "Allows you to add a message to the logs", "Permet d'ajouter un message dans le centre de message": "Allows you to add a message to the message center", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Allows you to modify the visible \/ invisible active \/ inactive properties of an equipment", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Allows you to modify the properties of a piece of equipment (visible\/invisible active\/inactive)", "Action qui permet à": "Action that allows", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "to make a request and then store the response in a variable. This action is blocking and ends only if", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "receives a response or if the timeout is reached. For the moment this action is only compatible with SMS, Slack, SARAH and Telegram plugins", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Field to use to determine the HTTP header containing the user identifier (eg HTTP_REMOTE_USER)", "Dépendance et démon": "Dependency and daemon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Allow the installation of dependencies of the same plugin less than 45s apart", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Allow the launch of the daemon of the same plugin less than 30s apart", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Allow launching the daemon of the same plugin less than 45s apart", "IPs bannies": "IPs banned", "Date": "Date", "Date de fin": "End date", @@ -2810,7 +2810,8 @@ "Vérifier": "Check", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "The update seems to be blocked (no change for 10min. Check the log)", "Options de mise à jour": "Update Options", - "Êtes-vous sûr de vouloir mettre à jour :": "Are you sure you want to update:", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Are you sure you want to delete:", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Are you sure you want to update packages of type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Be careful, this operation is always risky and can take several tens of minutes", @@ -3325,7 +3326,7 @@ "Coller un bloc après celui-ci.
Ctrl+Click: remplacer ce bloc par le bloc copié.": "Paste a block after this.
Ctrl + Click: replace this block with the copied block", "Afficher\/masquer le bloc Sinon": "Show \/ hide Else block", "Ajouter": "Add", - "Action": "Action", + "Action": "ACTION", "Bloc Si\/Alors\/Sinon": "If \/ Do \/ Else block", "Bloc Action": "Action Block", "Bloc Boucle": "Loop Block", @@ -3554,7 +3555,7 @@ "copie": "copy", "Nom de la copie de l\\'équipement ?": "Name of equipment copy?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Are you sure you want to delete the equipment", - "Il est utilisé par ou utilise :": "It is used by or uses:", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Please first select a", "Configuration du plugin": "Plugin configuration", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Please activate the equipment before testing any of its commands" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Username", "Mot de passe": "Password", "Pas de validation SSL (non recommandé)": "No SSL validation (not recommended)", - "[Backup cloud] Nom": "[Backup cloud] Name", + "[Backup cloud] Nom du dossier de backup": "[Cloud Backup] Backup folder name", "[Backup cloud] Mot de passe": "[Backup cloud] Password", "[Backup cloud] Mot de passe (confirmation)": "[Cloud backup] Password (confirmation)", "[Monitoring cloud] Désactiver": "[Cloud monitoring] Disable", @@ -4260,6 +4261,7 @@ "Premium": "Premium", "Partenaire": "Partner", "Installer": "Install", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "This plugin is currently private. You must wait for it to become public or have a code to access it", "Code promo": "Promo code", "Acheter": "Buy", diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index bc58e1bf59..9246cffeb0 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "En todos los navegadores que muestran un diseño, sustituido por uno solicitado", "Permet de rajouter un message dans les logs": "Permite añadir un mensaje en los logs", "Permet d'ajouter un message dans le centre de message": "Le permite agregar un mensaje al centro de mensajes", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Cambia la propiedad tomada visible \/ invisible \/ apagado de los equipos", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Le permite modificar las propiedades del equipo (visible\/invisible activo\/inactivo)", "Action qui permet à": "Acción que permite", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "para hacer una solicitud y luego almacenar la respuesta en una variable. Esta acción es de bloqueo y finaliza solo si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "recibe una respuesta o si se alcanza el tiempo de espera. Por el momento esta acción solo es compatible con los complementos de SMS, Slack, SARAH y Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Campo a usar para determinar el encabezado HTTP que contiene el identificador de usuario (por ejemplo, HTTP_REMOTE_USER)", "Dépendance et démon": "Adicción y demonio", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Permitir la instalación de dependencias del mismo complemento con menos de 45 segundos de diferencia", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Permitir el lanzamiento del daemon del mismo complemento con menos de 30 segundos de diferencia", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Permitir que el demonio del mismo complemento se inicie con menos de 45 segundos de diferencia", "IPs bannies": "IPs prohibidas", "Date": "Fecha", "Date de fin": "Fecha de fin", @@ -2810,7 +2810,8 @@ "Vérifier": "Verificar", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La actualización parece estar bloqueada (sin cambios durante 10 minutos. Verifique el registro)", "Options de mise à jour": "Opciones de actualización", - "Êtes-vous sûr de vouloir mettre à jour :": "¿Está seguro de que desea actualizar:", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Estas seguro que quieres borrarlo:", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "¿Está seguro de que desea actualizar los paquetes de tipo", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Tenga cuidado, esta operación siempre es arriesgada y puede llevar varias decenas de minutos", @@ -3554,7 +3555,7 @@ "copie": "Copiar", "Nom de la copie de l\\'équipement ?": "Nombre de la copia del equipo?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "¿Está seguro de que desea eliminar el equipo?", - "Il est utilisé par ou utilise :": "Es utilizado por o utiliza:", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Primero seleccione un", "Configuration du plugin": "Configuración del complemento", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Por favor, active el dispositivo antes de probar uno de sus comandos" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nombre del usuario", "Mot de passe": "Contraseña", "Pas de validation SSL (non recommandé)": "Sin validación SSL (no recomendado)", - "[Backup cloud] Nom": "Nombre [nube de respaldo]", + "[Backup cloud] Nom du dossier de backup": "[Copia de seguridad en la nube] Nombre de la carpeta de copia de seguridad", "[Backup cloud] Mot de passe": "[Copia de seguridad de la nube] Contraseña", "[Backup cloud] Mot de passe (confirmation)": "[Copia de seguridad en la nube] Contraseña (confirmación)", "[Monitoring cloud] Désactiver": "[Monitoreo en la nube] Desactivar", @@ -4260,6 +4261,7 @@ "Premium": "Prima", "Partenaire": "Socio", "Installer": "Instalar", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Este plugin es actualmente privado. Debe esperar a que se haga público o tener un código para acceder a él", "Code promo": "Código promocional", "Acheter": "Comprar", diff --git a/core/i18n/fr_FR.json b/core/i18n/fr_FR.json index 6be870a921..21b6dedff5 100644 --- a/core/i18n/fr_FR.json +++ b/core/i18n/fr_FR.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé", "Permet de rajouter un message dans les logs": "Permet de rajouter un message dans les logs", "Permet d'ajouter un message dans le centre de message": "Permet d'ajouter un message dans le centre de message", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)", "Action qui permet à": "Action qui permet à", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)", "Dépendance et démon": "Dépendance et démon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IPs bannies", "Date": "Date", "Date de fin": "Date de fin", @@ -2810,7 +2810,8 @@ "Vérifier": "Vérifier", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)", "Options de mise à jour": "Options de mise à jour", - "Êtes-vous sûr de vouloir mettre à jour :": "Êtes-vous sûr de vouloir mettre à jour :", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Êtes-vous sûr de vouloir supprimer :", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Êtes-vous sûr de vouloir mettre à jour les packages de type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes", @@ -3554,7 +3555,7 @@ "copie": "copie", "Nom de la copie de l\\'équipement ?": "Nom de la copie de l\\'équipement ?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Êtes-vous sûr de vouloir supprimer l\\'équipement", - "Il est utilisé par ou utilise :": "Il est utilisé par ou utilise :", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Veuillez d\\'abord sélectionner un", "Configuration du plugin": "Configuration du plugin", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Veuillez activer l\\'équipement avant de tester une de ses commandes" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nom d\\'utilisateur", "Mot de passe": "Mot de passe", "Pas de validation SSL (non recommandé)": "Pas de validation SSL (non recommandé)", - "[Backup cloud] Nom": "[Backup cloud] Nom", + "[Backup cloud] Nom du dossier de backup": "[Backup cloud] Nom du dossier de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Mot de passe", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Mot de passe (confirmation)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Désactiver", @@ -4260,6 +4261,7 @@ "Premium": "Premium", "Partenaire": "Partenaire", "Installer": "Installer", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder", "Code promo": "Code promo", "Acheter": "Acheter", diff --git a/core/i18n/id_ID.json b/core/i18n/id_ID.json index 4d4ed5bd05..c7a18c34c2 100644 --- a/core/i18n/id_ID.json +++ b/core/i18n/id_ID.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Pada semua browser yang menampilkan desain, digantikan oleh salah satu yang diminta", "Permet de rajouter un message dans les logs": "Memungkinkan Anda untuk menambahkan pesan di log", "Permet d'ajouter un message dans le centre de message": "Permet d'ajouter un message dans le centre de message", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Perubahan properti diambil terlihat \/ tak terlihat \/ off peralatan", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)", "Action qui permet à": "Action qui permet à", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)", "Dépendance et démon": "Dépendance et démon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IP dilarang", "Date": "Kencan", "Date de fin": "Tanggal akhir", @@ -2810,7 +2810,8 @@ "Vérifier": "Memeriksa", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)", "Options de mise à jour": "Options de mise à jour", - "Êtes-vous sûr de vouloir mettre à jour :": "Êtes-vous sûr de vouloir mettre à jour :", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Êtes-vous sûr de vouloir supprimer :", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Êtes-vous sûr de vouloir mettre à jour les packages de type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes", @@ -3554,7 +3555,7 @@ "copie": "copie", "Nom de la copie de l\\'équipement ?": "Nom de la copie de l\\'équipement ?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Apakah Anda yakin ingin menghapus peralatan \\ 's", - "Il est utilisé par ou utilise :": "Il est utilisé par ou utilise :", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Silakan \\ 's pertama memilih", "Configuration du plugin": "Konfigurasi Plugin", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Aktifkan peralatan \\ 's sebelum menguji salah satu pesanan yang" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nom d\\'utilisateur", "Mot de passe": "Password", "Pas de validation SSL (non recommandé)": "Pas de validation SSL (non recommandé)", - "[Backup cloud] Nom": "[Backup cloud] Nom", + "[Backup cloud] Nom du dossier de backup": "[Backup cloud] Nom du dossier de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Mot de passe", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Mot de passe (confirmation)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Désactiver", @@ -4260,6 +4261,7 @@ "Premium": "Premium", "Partenaire": "Partenaire", "Installer": "Memasang", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder", "Code promo": "Code promo", "Acheter": "Acheter", diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index 410f474c5a..a42abe3db6 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Su tutti i browser che visualizzano un disegno, sostituito da quello richiesto", "Permet de rajouter un message dans les logs": "Permette di aggiungere un messaggio personalizzato nei registri", "Permet d'ajouter un message dans le centre de message": "Permet d'ajouter un message dans le centre de message", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Cambia la proprietà presa visibile \/ invisibile \/ off di attrezzature", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)", "Action qui permet à": "Action qui permet à", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)", "Dépendance et démon": "Dépendance et démon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IP vietato", "Date": "Data", "Date de fin": "Data di fine", @@ -2810,7 +2810,8 @@ "Vérifier": "Verifica", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)", "Options de mise à jour": "Options de mise à jour", - "Êtes-vous sûr de vouloir mettre à jour :": "Êtes-vous sûr de vouloir mettre à jour :", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Êtes-vous sûr de vouloir supprimer :", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Êtes-vous sûr de vouloir mettre à jour les packages de type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes", @@ -3554,7 +3555,7 @@ "copie": "copie", "Nom de la copie de l\\'équipement ?": "Nome della copia dell'attrezzatura?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Sei sicuro di voler eliminare l'apparecchiatura", - "Il est utilisé par ou utilise :": "Il est utilisé par ou utilise :", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Si prega di selezionare a", "Configuration du plugin": "Configurazione del plugin", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Si prega di attivare l'apparecchiatura prima di testare uno dei suoi controlli" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nom d\\'utilisateur", "Mot de passe": "Password", "Pas de validation SSL (non recommandé)": "Pas de validation SSL (non recommandé)", - "[Backup cloud] Nom": "[Backup cloud] Nom", + "[Backup cloud] Nom du dossier de backup": "[Backup cloud] Nom du dossier de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Mot de passe", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Mot de passe (confirmation)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Désactiver", @@ -4260,6 +4261,7 @@ "Premium": "Premio", "Partenaire": "Partner", "Installer": "Installare", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Questo plugin è attualmente privato. Devi attendere che diventi pubblico o disporre di un codice per accedervi", "Code promo": "Codice promozionale", "Acheter": "Comperare", diff --git a/core/i18n/ja_JP.json b/core/i18n/ja_JP.json index 635d7fb4b4..dec87d67ad 100644 --- a/core/i18n/ja_JP.json +++ b/core/i18n/ja_JP.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "デザインを表示するすべてのブラウザーで、要求されたものに置き換えます", "Permet de rajouter un message dans les logs": "ログにメッセージを追加できます", "Permet d'ajouter un message dans le centre de message": "Permet d'ajouter un message dans le centre de message", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "デバイスの表示\/非表示のアクティブ\/非アクティブプロパティを変更できます。", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)", "Action qui permet à": "Action qui permet à", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)", "Dépendance et démon": "Dépendance et démon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IPを禁止", "Date": "日付", "Date de fin": "終了日", @@ -2810,7 +2810,8 @@ "Vérifier": "チェック", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)", "Options de mise à jour": "Options de mise à jour", - "Êtes-vous sûr de vouloir mettre à jour :": "Êtes-vous sûr de vouloir mettre à jour :", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Êtes-vous sûr de vouloir supprimer :", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Êtes-vous sûr de vouloir mettre à jour les packages de type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes", @@ -3554,7 +3555,7 @@ "copie": "copie", "Nom de la copie de l\\'équipement ?": "機器のコピーの名前?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "機器を削除してもよろしいですか", - "Il est utilisé par ou utilise :": "Il est utilisé par ou utilise :", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "を選択してください", "Configuration du plugin": "プラグイン構成", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "コントロールをテストする前に、機器をアクティブにしてください" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nom d\\'utilisateur", "Mot de passe": "パスワード", "Pas de validation SSL (non recommandé)": "Pas de validation SSL (non recommandé)", - "[Backup cloud] Nom": "[Backup cloud] Nom", + "[Backup cloud] Nom du dossier de backup": "[Backup cloud] Nom du dossier de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Mot de passe", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Mot de passe (confirmation)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Désactiver", @@ -4260,6 +4261,7 @@ "Premium": "プレミアム", "Partenaire": "パートナー", "Installer": "インストール", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "このプラグインは現在プライベートです。公開されるまで待つか、アクセスするためのコードが必要です", "Code promo": "プロモーションコード", "Acheter": "購入", diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index 0c4fd25508..5b34f5684a 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -408,7 +408,7 @@ "Objets": "Objetos", "Vues": "Vistas", "Design 3d": "Desenho 3D", - "Menu": "Menu", + "Menu": "Cardápio", "Appliquer aux éléments visibles": "Aplicar a elementos visíveis", "Aucun": "Nenhum", "Visualisation": "Vista", @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Em todos os navegadores que exibem um design, substituir pelo solicitado", "Permet de rajouter un message dans les logs": "Permite adicionar uma mensagem no registo", "Permet d'ajouter un message dans le centre de message": "Permite adicionar uma mensagem ao centro de mensagens", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Permite modificar as propriedades ativas\/inativas visíveis\/invisíveis de um equipamento", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permite modificar as propriedades do equipamento (visível\/invisível ativo\/inativo)", "Action qui permet à": "Ação que permite", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "para fazer uma solicitação e depois armazenar a resposta em uma variável. Esta ação está bloqueando e só termina se", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "recebe uma resposta ou se o tempo limite for atingido. No momento, essa ação é compatível apenas com os plugins SMS, Slack, SARAH e Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Campo a ser usado para determinar o cabeçalho HTTP contendo o identificador do usuário (por exemplo, HTTP_REMOTE_USER)", "Dépendance et démon": "Dependências e daemon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Permitir a instalação de dependências do mesmo plugin com menos de 45s de diferença", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Permitir o lançamento do daemon do mesmo plugin com menos de 30s de diferença", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IPs proibidos", "Date": "Data", "Date de fin": "Data final", @@ -2810,7 +2810,8 @@ "Vérifier": "Verificar", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "A atualização parece estar bloqueada (nenhuma alteração nos últimos 10 minutos. Verifique o registo)", "Options de mise à jour": "Opções de atualização", - "Êtes-vous sûr de vouloir mettre à jour :": "Tem certeza que deseja atualizar:", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Tem certeza de que deseja excluir:", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Tem certeza de que deseja atualizar os pacotes do tipo", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Tenha cuidado, esta operação é sempre arriscada e pode levar várias dezenas de minutos", @@ -3554,7 +3555,7 @@ "copie": "cópia de", "Nom de la copie de l\\'équipement ?": "Nome da cópia do dispositivo?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Tem certeza de que deseja excluir o equipamento", - "Il est utilisé par ou utilise :": "É usado por ou usa:", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Por favor, selecione um", "Configuration du plugin": "Configuração de plugin", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Por favor, ative o equipamento antes de testar qualquer um dos seus comandos" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nome do utilizador", "Mot de passe": "Password", "Pas de validation SSL (non recommandé)": "Sem validação SSL (não recomendado)", - "[Backup cloud] Nom": "[Backup cloud] Nome", + "[Backup cloud] Nom du dossier de backup": "[Backup na nuvem] Nome da pasta de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Password", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Password (confirmação)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Desativar", @@ -4260,6 +4261,7 @@ "Premium": "Prêmio", "Partenaire": "Parceiro", "Installer": "Instalar", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Este plugin é atualmente privado. Deve esperar que ele se torne público ou ter um código para o aceder", "Code promo": "Código promocional", "Acheter": "Comprar", diff --git a/core/i18n/ru_RU.json b/core/i18n/ru_RU.json index cecc737521..70c9569a73 100644 --- a/core/i18n/ru_RU.json +++ b/core/i18n/ru_RU.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Во всех браузерах, отображающих дизайн, замените его на запрошенный", "Permet de rajouter un message dans les logs": "Позволяет добавить сообщение в логи", "Permet d'ajouter un message dans le centre de message": "Permet d'ajouter un message dans le centre de message", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Позволяет изменять видимые \/ невидимые активные \/ неактивные свойства устройства", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)", "Action qui permet à": "Action qui permet à", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)", "Dépendance et démon": "Dépendance et démon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IP-адреса запрещено", "Date": "Дата", "Date de fin": "дата окончания", @@ -2810,7 +2810,8 @@ "Vérifier": "Проверить", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)", "Options de mise à jour": "Options de mise à jour", - "Êtes-vous sûr de vouloir mettre à jour :": "Êtes-vous sûr de vouloir mettre à jour :", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Êtes-vous sûr de vouloir supprimer :", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Êtes-vous sûr de vouloir mettre à jour les packages de type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes", @@ -3554,7 +3555,7 @@ "copie": "copie", "Nom de la copie de l\\'équipement ?": "Nom de la copie de l\\'équipement ?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Вы уверены, что хотите удалить оборудование", - "Il est utilisé par ou utilise :": "Il est utilisé par ou utilise :", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Пожалуйста, выберите сначала", "Configuration du plugin": "Конфигурация плагина", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Пожалуйста, активируйте оборудование до тестирования его первого запроса" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nom d\\'utilisateur", "Mot de passe": "Пароль", "Pas de validation SSL (non recommandé)": "Pas de validation SSL (non recommandé)", - "[Backup cloud] Nom": "[Backup cloud] Nom", + "[Backup cloud] Nom du dossier de backup": "[Backup cloud] Nom du dossier de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Mot de passe", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Mot de passe (confirmation)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Désactiver", @@ -4260,6 +4261,7 @@ "Premium": "Premium", "Partenaire": "Partenaire", "Installer": "устанавливать", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder", "Code promo": "Code promo", "Acheter": "Acheter", diff --git a/core/i18n/tr.json b/core/i18n/tr.json index 357a39f53a..98e58a76f8 100644 --- a/core/i18n/tr.json +++ b/core/i18n/tr.json @@ -489,7 +489,7 @@ "Sur tous les navigateurs qui affichent un design, le remplace par celui demandé": "Istenenden yerine bir tasarım görüntüler tüm tarayıcılar, On", "Permet de rajouter un message dans les logs": "Günlüklere(loglara) bir mesaj eklemeye izin verir", "Permet d'ajouter un message dans le centre de message": "Permet d'ajouter un message dans le centre de message", - "Permet de modifier les proriétés visible\/invisible actif\/inactif d'un équipement": "Mülkiyet ekipmanının kapalı \/ görünür \/ görünmez alındığı değiştirir", + "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)": "Permet de modifier les propriétés d'un équipement (visible\/invisible actif\/inactif)", "Action qui permet à": "Action qui permet à", "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si": "de faire une demande puis de stocker la réponse dans une variable. Cette action est bloquante et ne finit que si", "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram.": "reçoit une réponse ou si le timeout est atteint. Pour le moment cette action n'est compatible qu'avec les plugins SMS, Slack, SARAH et Telegram", @@ -2027,7 +2027,7 @@ "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)": "Champ à utiliser pour déterminer l'entête HTTP contenant l'identifiant utilisateur (e.g HTTP_REMOTE_USER)", "Dépendance et démon": "Dépendance et démon", "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle": "Autoriser l'installation des dépendances d'un même plugin à moins de 45s d'intervalle", - "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 30s d'intervalle", + "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle": "Autoriser le lancement du démon d'un même plugin à moins de 45s d'intervalle", "IPs bannies": "IP'ler yasaklandı", "Date": "Tarih", "Date de fin": "Son tarihi", @@ -2810,7 +2810,8 @@ "Vérifier": "Kontrol et", "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)": "La mise à jour semble être bloquée (pas de changement depuis 10min. Vérifiez le log)", "Options de mise à jour": "Options de mise à jour", - "Êtes-vous sûr de vouloir mettre à jour :": "Êtes-vous sûr de vouloir mettre à jour :", + "Êtes-vous sûr de vouloir mettre à jour le plugin :": "Êtes-vous sûr de vouloir mettre à jour le plugin :", + "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?": "Attention : Le plugin ' + logicalId + ' n\\'est pas activé. Êtes-vous sûr de vouloir le mettre à jour ?", "Êtes-vous sûr de vouloir supprimer :": "Êtes-vous sûr de vouloir supprimer :", "Êtes-vous sûr de vouloir mettre à jour les packages de type": "Êtes-vous sûr de vouloir mettre à jour les packages de type", "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes": "Attention cette opération est toujours risquée et peut prendre plusieurs dizaines de minutes", @@ -3554,7 +3555,7 @@ "copie": "copie", "Nom de la copie de l\\'équipement ?": "Nom de la copie de l\\'équipement ?", "Êtes-vous sûr de vouloir supprimer l\\'équipement": "Cihazı silmek istemekden eminmisiniz", - "Il est utilisé par ou utilise :": "Il est utilisé par ou utilise :", + "Il est utilisé par:": "Il est utilisé par:", "Veuillez d\\'abord sélectionner un": "Once bitane seçin", "Configuration du plugin": "Eklentinin ayarları", "Veuillez activer l\\'équipement avant de tester une de ses commandes": "Komutasını test etmeden önce cihazı aktif hale getirin" @@ -4182,7 +4183,7 @@ "Nom d\\'utilisateur": "Nom d\\'utilisateur", "Mot de passe": "Şifre", "Pas de validation SSL (non recommandé)": "Pas de validation SSL (non recommandé)", - "[Backup cloud] Nom": "[Backup cloud] Nom", + "[Backup cloud] Nom du dossier de backup": "[Backup cloud] Nom du dossier de backup", "[Backup cloud] Mot de passe": "[Backup cloud] Mot de passe", "[Backup cloud] Mot de passe (confirmation)": "[Backup cloud] Mot de passe (confirmation)", "[Monitoring cloud] Désactiver": "[Monitoring cloud] Désactiver", @@ -4260,6 +4261,7 @@ "Premium": "Prim", "Partenaire": "Ortak", "Installer": "Kurmak", + "Votre version actuelle du core ne permet pas d\\'installer ce plugin": "Votre version actuelle du core ne permet pas d\\'installer ce plugin", "Ce plugin est pour le moment privé. Vous devez attendre qu\\'il devienne public ou avoir un code pour y accéder": "Bu eklenti şu anda özel. Herkese açık olmasını veya erişmek için bir kod olmasını beklemelisiniz", "Code promo": "Promosyon kodu", "Acheter": "Satın", diff --git a/core/js/cmd.class.js b/core/js/cmd.class.js index f64b922abd..9fee894d53 100644 --- a/core/js/cmd.class.js +++ b/core/js/cmd.class.js @@ -344,8 +344,9 @@ jeedom.cmd.test = function(_params) { break case 'message': let productName = JEEDOM_PRODUCT_NAME - let content = '' - content += '' + let content = `` + content += `` + jeeDialog.prompt({ title: "{{Message}}", message: content, diff --git a/core/js/eqLogic.class.js b/core/js/eqLogic.class.js index 73a4c5099d..3c7ea9878a 100644 --- a/core/js/eqLogic.class.js +++ b/core/js/eqLogic.class.js @@ -472,6 +472,7 @@ jeedom.eqLogic.refreshValue = function(_params) { eqLogics[_params[i].eqLogic_id] = { eqLogic: eqLogic, + type: eqLogic?.classList.contains('battery-widget') ? 'battery' : 'default' } sends[_params[i].eqLogic_id] = { version: ((version = eqLogic?.getAttribute('data-version')) != undefined) ? version : 'dashboard' @@ -492,6 +493,9 @@ jeedom.eqLogic.refreshValue = function(_params) { if (tile.childNodes.length == 0) { continue } + if (eqLogics[i].type === 'battery') { + continue + } eqLogic = eqLogics[i].eqLogic if (isElement_jQuery(eqLogic)) eqLogic = eqLogic[0] if (eqLogic == null) { diff --git a/core/js/plugin.template.js b/core/js/plugin.template.js index f55299fcea..5181748784 100644 --- a/core/js/plugin.template.js +++ b/core/js/plugin.template.js @@ -411,7 +411,7 @@ if (!jeeFrontEnd.pluginTemplate) { success: function(data) { var text = '{{Êtes-vous sûr de vouloir supprimer l\'équipement}} ' + textEqtype + ' ' + document.querySelector('.eqLogicAttr[data-l1key="name"]').jeeValue() + ' ?' if (Object.keys(data).length > 0) { - text += '
{{Il est utilisé par ou utilise :}}
' + text += '
{{Il est utilisé par:}}
' var complement = null for (var i in data) { complement = '' diff --git a/core/php/jeecli.php b/core/php/jeecli.php index 20dd71ae51..86d2086704 100644 --- a/core/php/jeecli.php +++ b/core/php/jeecli.php @@ -134,6 +134,71 @@ die(); } break; + case 'backup': + switch ($argv[2]) { + case 'restore': + if (!isset($argv[3])) { + echo "No backup file provide"; + break; + } + + $backupPath = ''; + $i = 0; + foreach (jeedom::listBackup() as $key => $backup) { + $i++; + if($i == $argv[3]) { + $backupPath = $key; + break; + } + } + + if (!is_file($backupPath)) { + echo "Backup file not found"; + break; + } + jeedom::restore($backupPath, true); + + $cheminFichier = log::getPathToLog('restore'); + if (!file_exists($cheminFichier)) { + echo "Le fichier n'existe pas.\n"; + break; + } + + $handle = fopen($cheminFichier, "r"); + if ($handle === false) { + echo "Impossible d'ouvrir le fichier.\n"; + break; + } + + fseek($handle, 0, SEEK_END); + + while (true) { + while (($line = fgets($handle)) !== false) { + echo $line; + } + clearstatcache(); + $fileSize = filesize($cheminFichier); + if (ftell($handle) < $fileSize) { + fseek($handle, ftell($handle)); + } else { + sleep(1); + } + } + fclose($handle); + + break; + case 'list': + $i = 0; + foreach (jeedom::listBackup() as $backup) { + $i++; + echo "[$i] - ". $backup . "\n"; + } + break; + default: + echo "No action provide : backup"; + die(); + } + break; default: help(); break; @@ -155,4 +220,8 @@ function help() { echo "\t user : manage Jeedom user\n"; echo "\t\t list : list jeedom user\n"; echo "\t\t password [username] [password] : change password of [username] to [password]\n"; + + echo "Available actions for 'backup':\n"; + echo " restore [n] - Restore the nth backup file.\n"; + echo " list - List all available backups.\n"; } diff --git a/core/repo/market.display.repo.php b/core/repo/market.display.repo.php index 636a40d2dd..ea8035a906 100644 --- a/core/repo/market.display.repo.php +++ b/core/repo/market.display.repo.php @@ -85,6 +85,7 @@ echo ' {{Installer}} ' . $branch . ''; } } + echo ''; } else if ($market->getPrivate() == 1) { echo '
{{Ce plugin est pour le moment privé. Vous devez attendre qu\'il devienne public ou avoir un code pour y accéder}}
'; } else { @@ -95,15 +96,15 @@ /index.php?v=d&p=profils' target="_blank"> {{Code promo}} getCertification() !== 'Premium') { - echo ' {{Acheter}}'; + echo ' {{Acheter}}'; } else { echo ' {{Nous Contacter}}'; } } else { - echo ' {{Acheter}}'; + echo ' {{Acheter}}'; } } else { - echo ' {{Acheter}}'; + echo ' {{Acheter}}'; } } if (is_object($update)) { @@ -277,6 +278,28 @@