From 2e6b105d8d117f54a95acb5354b068846a6dcc42 Mon Sep 17 00:00:00 2001 From: Uryvskiy Dima Date: Wed, 15 Mar 2023 11:55:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20PHP=208.0=20(#279)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .docker/Dockerfile | 13 +- .docker/php.ini | 1 - .github/workflows/ci.yml | 2 +- CHANGELOG.md | 3 + bin/bitrix-install | 4 +- composer.json | 6 +- composer.lock | 892 +++++++++--------- .../classes/general/CustomerBuilder.php | 2 +- .../classes/general/RestNormalizer.php | 2 +- .../general/collector/RetailCrmCollector.php | 3 +- .../consultant/RetailCrmOnlineConsultant.php | 4 +- .../classes/general/events/RetailCrmEvent.php | 18 +- .../general/history/RetailCrmHistory_v5.php | 24 +- .../general/order/RetailCrmOrder_v5.php | 26 +- .../classes/general/ua/RetailCrmUa.php | 3 +- intaro.retailcrm/description.ru | 2 +- intaro.retailcrm/export/export_setup.php | 2 +- intaro.retailcrm/include.php | 4 +- intaro.retailcrm/install/index.php | 68 +- intaro.retailcrm/install/version.php | 4 +- .../component/builder/api/customerbuilder.php | 2 +- .../lib/component/handlers/eventshandlers.php | 6 +- .../deserialize/typedarraystrategy.php | 4 + .../strategy/serialize/typedarraystrategy.php | 4 + .../lib/controller/loyalty/register.php | 4 +- intaro.retailcrm/lib/icml/settingsservice.php | 2 +- .../lib/service/loyaltyaccountservice.php | 6 +- .../lib/service/loyaltyservice.php | 2 + intaro.retailcrm/lib/service/utils.php | 2 +- .../common/annotations/tokenparser.php | 10 +- intaro.retailcrm/options.php | 22 +- tests/BitrixTestCase.php | 4 +- tests/classes/general/AddressBuilderTest.php | 2 +- tests/classes/general/CustomerBuilderTest.php | 2 +- .../collector/RetailCrmCollectorTest.php | 6 +- .../general/events/RetailCrmEventTest.php | 19 +- .../history/RetailCrmHistory_v5Test.php | 2 +- .../general/order/RetailCrmOrder_v5Test.php | 2 +- .../builder/api/CustomerBuilderTest.php | 2 +- .../component/handlers/EventsHandlersTest.php | 11 +- .../lib/service/LoyaltyAccountServiceTest.php | 10 +- 41 files changed, 621 insertions(+), 586 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 0a857b46..93367023 100755 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,19 +1,12 @@ -FROM php:7.3-apache +FROM php:8.0-apache RUN a2enmod rewrite RUN set -xe \ && apt-get update \ - && apt-get install -y --no-install-recommends git wget unzip imagemagick libpng-dev libjpeg-dev \ - libfreetype6-dev default-mysql-client libmcrypt-dev libicu-dev libxml2 libxml2-dev libmagickwand-dev \ - && rm -rf /var/lib/apt/lists/* \ - && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr --with-freetype-dir=/usr \ - && docker-php-ext-install opcache soap gd mbstring mysqli zip intl \ - && pecl install mcrypt-1.0.1 imagick-3.4.4 \ - && docker-php-ext-enable mcrypt imagick \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + && apt-get install -y unzip libpng-dev libzip-dev libonig-dev libjpeg-dev libmcrypt-dev wget \ + && docker-php-ext-install mysqli zip RUN curl --insecure https://getcomposer.org/composer.phar -o /usr/bin/composer && chmod +x /usr/bin/composer -RUN wget -O /usr/bin/phpunit https://phar.phpunit.de/phpunit-7.phar && chmod +x /usr/bin/phpunit WORKDIR /bitrix-module diff --git a/.docker/php.ini b/.docker/php.ini index c3eddbf9..45c4ddf4 100755 --- a/.docker/php.ini +++ b/.docker/php.ini @@ -7,7 +7,6 @@ log_errors = On display_startup_errors = On cgi.fix_pathinfo = 0 date.timezone = "Europe/Moscow" -mbstring.internal_encoding = "UTF-8" default_charset = utf-8 max_input_vars = 10000 post_max_size = 1024M diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36765d9c..1f9ba3c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-version: ['7.3'] + php-version: ['7.4', '8.0'] bitrix-edition: ['small_business_encode', 'business_encode'] services: mysql: diff --git a/CHANGELOG.md b/CHANGELOG.md index 806b3a6e..32070810 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2023-03-10 v.6.2.0 +- Добавлена поддержка PHP 8.0 + ## 2023-02-16 v.6.1.16 - Добавление передачи магазина для корпоративных клиентов diff --git a/bin/bitrix-install b/bin/bitrix-install index 63bee803..32a3eb82 100755 --- a/bin/bitrix-install +++ b/bin/bitrix-install @@ -18,6 +18,8 @@ if (!file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizar ob_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizard/wizard.php'; +ob_clean(); + require_once __DIR__ . '/../helpers/installation/ExtendedCreateModulesStep.php'; require_once __DIR__ . '/../helpers/installation/Installer.php'; @@ -25,8 +27,6 @@ $installer = new Installer(); $step = $argv[1]; -ob_clean(); - switch ($step) { case 'db_type': $installer->dbTypeStep(); diff --git a/composer.json b/composer.json index 991265a3..f70396bd 100755 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "retailcrm/bitrix-module", "scripts": { "pre-module-install": "cp -R intaro.retailcrm $BITRIX_PATH/bitrix/modules", - "tests": "php vendor/bin/phpunit -c phpunit.xml.dist --whitelist=$BITRIX_PATH/bitrix/modules/intaro.retailcrm" + "tests": "vendor/bin/phpunit -c phpunit.xml.dist --whitelist=$BITRIX_PATH/bitrix/modules/intaro.retailcrm" }, "description": "Integration module for Bitrix & RetailCRM", "license": "MIT", @@ -20,9 +20,9 @@ "ext-xmlwriter": "*" }, "require-dev": { - "phpunit/phpunit": "^7", + "phpunit/phpunit": "^8.5", "vlucas/phpdotenv": "^3.3", "mockery/mockery" : "^1.0", - "fzaninotto/faker" : "^1.7" + "fakerphp/faker": "^1.21" } } diff --git a/composer.lock b/composer.lock index 3120278b..39920dfe 100644 --- a/composer.lock +++ b/composer.lock @@ -4,34 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a51135dfd806a9758965d7dd91cb8b2a", + "content-hash": "7229b3690506f58c6a0d2865033b3147", "packages": [], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -58,7 +59,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -74,34 +75,48 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { - "name": "fzaninotto/faker", - "version": "v1.9.2", + "name": "fakerphp/faker", + "version": "v1.21.0", "source": { "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d", + "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-main": "v1.21-dev" } }, "autoload": { @@ -125,11 +140,10 @@ "fixtures" ], "support": { - "issues": "https://github.com/fzaninotto/Faker/issues", - "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0" }, - "abandoned": true, - "time": "2020-12-11T09:56:16+00:00" + "time": "2022-12-13T13:54:32+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -184,30 +198,33 @@ }, { "name": "mockery/mockery", - "version": "1.3.3", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d" + "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d", - "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d", + "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + "phpunit/phpunit": "^8.5 || ^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -247,43 +264,44 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.3.3" + "source": "https://github.com/mockery/mockery/tree/1.5.1" }, - "time": "2020-08-11T18:10:21+00:00" + "time": "2022-09-07T15:32:08+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -299,7 +317,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -307,32 +325,33 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -364,26 +383,26 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2018-07-08T19:23:20+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -415,195 +434,39 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/master" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2018-07-08T19:19:57+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master" - }, - "time": "2020-04-27T09:25:28+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x" - }, - "time": "2019-12-28T18:55:12+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "shasum": "" - }, - "require": { - "php": "^7.1", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/0.7.2" - }, - "time": "2019-08-22T18:11:29+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpoption/phpoption", - "version": "1.7.5", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", - "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -618,11 +481,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -634,7 +499,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.7.5" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" }, "funding": [ { @@ -646,111 +511,44 @@ "type": "tidelift" } ], - "time": "2020-07-20T17:29:33+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" - }, - "time": "2020-03-05T15:02:03+00:00" + "time": "2023-02-25T19:38:58+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "7.0.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "819f92bba8b001d4363065928088de22f25a3a48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", + "reference": "819f92bba8b001d4363065928088de22f25a3a48", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", + "php": ">=7.2", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", + "phpunit/php-token-stream": "^3.1.3 || ^4.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", + "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -778,22 +576,28 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" }, - "time": "2018-10-31T16:06:48+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-07-26T12:20:09+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.3", + "version": "2.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357" + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357", - "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", "shasum": "" }, "require": { @@ -832,7 +636,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" }, "funding": [ { @@ -840,7 +644,7 @@ "type": "github" } ], - "time": "2020-11-30T08:25:21+00:00" + "time": "2021-12-02T12:42:26+00:00" }, { "name": "phpunit/php-text-template", @@ -948,29 +752,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "3.1.2", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "472b687829041c24b25f475e14c2f38a09edf1c2" + "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/472b687829041c24b25f475e14c2f38a09edf1c2", - "reference": "472b687829041c24b25f475e14c2f38a09edf1c2", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3", + "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.1" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -995,7 +799,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.2" + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" }, "funding": [ { @@ -1004,57 +808,52 @@ } ], "abandoned": true, - "time": "2020-11-30T08:38:46+00:00" + "time": "2020-08-04T08:28:15+00:00" }, { "name": "phpunit/phpunit", - "version": "7.5.20", + "version": "8.5.33", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e", + "reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.1", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.0", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.2", + "phpunit/php-code-coverage": "^7.0.12", + "phpunit/php-file-iterator": "^2.0.4", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.5", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.3", + "sebastian/exporter": "^3.1.5", + "sebastian/global-state": "^3.0.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", "sebastian/version": "^2.0.1" }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" - }, - "require-dev": { - "ext-pdo": "*" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -1062,7 +861,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -1090,9 +889,76 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.33" }, - "time": "2020-01-08T08:45:45+00:00" + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-02-27T13:04:50+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1151,16 +1017,16 @@ }, { "name": "sebastian/comparator", - "version": "3.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" + "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", "shasum": "" }, "require": { @@ -1213,7 +1079,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" }, "funding": [ { @@ -1221,7 +1087,7 @@ "type": "github" } ], - "time": "2020-11-30T08:04:30+00:00" + "time": "2022-09-14T12:31:48+00:00" }, { "name": "sebastian/diff", @@ -1354,16 +1220,16 @@ }, { "name": "sebastian/exporter", - "version": "3.1.3", + "version": "3.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" + "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", + "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", "shasum": "" }, "require": { @@ -1372,7 +1238,7 @@ }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -1419,7 +1285,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" }, "funding": [ { @@ -1427,27 +1293,30 @@ "type": "github" } ], - "time": "2020-11-30T07:47:53+00:00" + "time": "2022-09-14T06:00:17+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -1455,7 +1324,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1480,9 +1349,15 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" }, - "time": "2017-04-27T15:39:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-10T06:55:38+00:00" }, { "name": "sebastian/object-enumerator", @@ -1711,6 +1586,62 @@ ], "time": "2020-11-30T07:30:19+00:00" }, + { + "name": "sebastian/type", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:25:11+00:00" + }, { "name": "sebastian/version", "version": "2.0.1", @@ -1759,29 +1690,99 @@ "time": "2016-10-03T07:35:21+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.22.0", + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { "php": ">=7.1" }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "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": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1789,12 +1790,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1819,7 +1820,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -1835,27 +1836,27 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -1877,22 +1878,28 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, - "time": "2019-06-13T22:48:21+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v3.6.7", + "version": "v3.6.10", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2065beda6cbe75e2603686907b2e45f6f3a5ad82" + "reference": "5b547cdb25825f10251370f57ba5d9d924e6f68e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2065beda6cbe75e2603686907b2e45f6f3a5ad82", - "reference": "2065beda6cbe75e2603686907b2e45f6f3a5ad82", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/5b547cdb25825f10251370f57ba5d9d924e6f68e", + "reference": "5b547cdb25825f10251370f57ba5d9d924e6f68e", "shasum": "" }, "require": { @@ -1903,7 +1910,7 @@ "require-dev": { "ext-filter": "*", "ext-pcre": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0" + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.21" }, "suggest": { "ext-filter": "Required to use the boolean validator.", @@ -1927,13 +1934,13 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com", - "homepage": "https://gjcampbell.co.uk/" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "https://vancelucas.com/" + "homepage": "https://github.com/vlucas" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -1944,7 +1951,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v3.6.7" + "source": "https://github.com/vlucas/phpdotenv/tree/v3.6.10" }, "funding": [ { @@ -1956,60 +1963,7 @@ "type": "tidelift" } ], - "time": "2020-07-14T19:04:52+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozart/assert/issues", - "source": "https://github.com/webmozart/assert/tree/master" - }, - "time": "2020-07-08T17:02:28+00:00" + "time": "2021-12-12T23:02:06+00:00" } ], "aliases": [], @@ -2024,5 +1978,5 @@ "ext-xmlwriter": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.3.0" } diff --git a/intaro.retailcrm/classes/general/CustomerBuilder.php b/intaro.retailcrm/classes/general/CustomerBuilder.php index 368893b1..5f4ce2e4 100644 --- a/intaro.retailcrm/classes/general/CustomerBuilder.php +++ b/intaro.retailcrm/classes/general/CustomerBuilder.php @@ -138,7 +138,7 @@ class CustomerBuilder extends AbstractBuilder implements RetailcrmBuilderInterfa if (isset($this->dataCrm['phones'])) { foreach ($this->dataCrm['phones'] as $phone) { - if (isset($phone['old_number']) && in_array($phone['old_number'], $this->user)) { + if (is_array($this->user) && isset($phone['old_number']) && in_array($phone['old_number'], $this->user)) { $key = array_search($phone['old_number'], $this->user); if (isset($phone['number'])) { diff --git a/intaro.retailcrm/classes/general/RestNormalizer.php b/intaro.retailcrm/classes/general/RestNormalizer.php index 36750ab4..c02986a1 100644 --- a/intaro.retailcrm/classes/general/RestNormalizer.php +++ b/intaro.retailcrm/classes/general/RestNormalizer.php @@ -99,7 +99,7 @@ class RestNormalizer $formatted[ $code ] = $this->formatting($value, true); } - if ($formatted[ $code ] === null || $formatted[ $code ] === '' || count($formatted[ $code ]) < 1) { + if (empty($formatted[$code])) { if ($this->clear === true) { unset($formatted[ $code ]); } diff --git a/intaro.retailcrm/classes/general/collector/RetailCrmCollector.php b/intaro.retailcrm/classes/general/collector/RetailCrmCollector.php index 49a0fdfc..c501f675 100644 --- a/intaro.retailcrm/classes/general/collector/RetailCrmCollector.php +++ b/intaro.retailcrm/classes/general/collector/RetailCrmCollector.php @@ -18,8 +18,9 @@ class RetailCrmCollector { $keys = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_COLL_KEY, 0)); $collector = COption::GetOptionString(self::$MODULE_ID, self::$CRM_COLL, 0); + $request = \Bitrix\Main\Context::getCurrent()->getRequest(); - if ($collector === 'Y' && !empty($keys[SITE_ID]) && ADMIN_SECTION !== true) { + if ($collector === 'Y' && !empty($keys[SITE_ID]) && $request->isAdminSection() !== true) { global $USER; $params = array(); diff --git a/intaro.retailcrm/classes/general/consultant/RetailCrmOnlineConsultant.php b/intaro.retailcrm/classes/general/consultant/RetailCrmOnlineConsultant.php index 3332c0bb..723c97c1 100644 --- a/intaro.retailcrm/classes/general/consultant/RetailCrmOnlineConsultant.php +++ b/intaro.retailcrm/classes/general/consultant/RetailCrmOnlineConsultant.php @@ -12,7 +12,9 @@ class RetailCrmOnlineConsultant */ public static function add() { - if (RetailcrmConfigProvider::isOnlineConsultantEnabled() && ADMIN_SECTION !== true) { + $request = \Bitrix\Main\Context::getCurrent()->getRequest(); + + if (RetailcrmConfigProvider::isOnlineConsultantEnabled() && $request->isAdminSection() !== true) { \Bitrix\Main\Page\Asset::getInstance()->addString( RetailcrmConfigProvider::getOnlineConsultantScript(), true diff --git a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php index f77bd23b..6e3deabe 100644 --- a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php +++ b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php @@ -40,7 +40,7 @@ class RetailCrmEvent * @return bool * @throws InvalidArgumentException */ - public function OnAfterUserUpdate($arFields) + public static function OnAfterUserUpdate($arFields) { if (isset($GLOBALS['RETAIL_CRM_HISTORY']) && $GLOBALS['RETAIL_CRM_HISTORY']) { return false; @@ -67,7 +67,7 @@ class RetailCrmEvent * @param mixed $ID - Order id * @param mixed $arFields - Order arFields */ - public function onUpdateOrder($ID, $arFields) + public static function onUpdateOrder($ID, $arFields) { if (isset($GLOBALS['RETAIL_CRM_HISTORY']) && $GLOBALS['RETAIL_CRM_HISTORY']) { $GLOBALS['RETAILCRM_ORDER_OLD_EVENT'] = false; @@ -91,7 +91,7 @@ class RetailCrmEvent * * @param object $event - Order object */ - public function orderDelete($event) + public static function orderDelete($event) { $GLOBALS['RETAILCRM_ORDER_DELETE'] = true; @@ -426,7 +426,7 @@ class RetailCrmEvent * @throws InvalidArgumentException * */ - public function paymentSave(Payment $event) + public static function paymentSave(Payment $event) { $apiVersion = COption::GetOptionString(self::$MODULE_ID, 'api_version', 0); @@ -472,7 +472,9 @@ class RetailCrmEvent $payments = $orderCrm['order']['payments']; } - if ($payments) { + $paymentsExternalIds = []; + + if (!empty($payments)) { foreach ($payments as $payment) { if (isset($payment['externalId'])) { if (RCrmActions::isNewExternalId($payment['externalId'])) { @@ -524,9 +526,9 @@ class RetailCrmEvent $arPaymentExtId = RCrmActions::generatePaymentExternalId($arPayment['ID']); - if (array_key_exists($arPaymentExtId, $paymentsExternalIds)) { + if (!empty($paymentsExternalIds) && array_key_exists($arPaymentExtId, $paymentsExternalIds)) { $paymentData = $paymentsExternalIds[$arPaymentExtId]; - } elseif (array_key_exists($arPayment['ID'], $paymentsExternalIds)) { + } elseif (!empty($paymentsExternalIds) && array_key_exists($arPayment['ID'], $paymentsExternalIds)) { $paymentData = $paymentsExternalIds[$arPayment['ID']]; } else { $paymentData = []; @@ -564,7 +566,7 @@ class RetailCrmEvent * * @throws InvalidArgumentException */ - public function paymentDelete(Payment $event): void + public static function paymentDelete(Payment $event): void { $apiVersion = COption::GetOptionString(self::$MODULE_ID, 'api_version', 0); diff --git a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php index 5563f16f..6d137cc7 100644 --- a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php +++ b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php @@ -72,7 +72,7 @@ class RetailCrmHistory Logger::getInstance()->write($customerH, 'customerHistory'); - if (count($customerH) == 0) { + if (is_array($customerH) && count($customerH) === 0) { if ($customerHistory['history']['totalPageCount'] > $customerHistory['history']['currentPage']) { $historyFilter['page'] = $customerHistory['history']['currentPage'] + 1; @@ -271,7 +271,7 @@ class RetailCrmHistory Logger::getInstance()->write($orderH, 'orderHistory'); - if (count($orderH) === 0) { + if (is_array($orderH) && count($orderH) === 0) { if ($orderHistory['history']['totalPageCount'] > $orderHistory['history']['currentPage']) { $historyFilter['page'] = $orderHistory['history']['currentPage'] + 1; @@ -722,7 +722,7 @@ class RetailCrmHistory } else { self::setProp($somePropValue, RCrmActions::fromJSON($order[$key])); } - } elseif (array_key_exists($key, $order['delivery']['address'])) { + } elseif (is_array($order['delivery']['address']) && array_key_exists($key, $order['delivery']['address'])) { if ($propsKey[$orderProp]['TYPE'] == 'LOCATION') { if (!empty($order['delivery']['address'][$key])) { @@ -793,7 +793,7 @@ class RetailCrmHistory ->getItemByOrderPropertyId($propsKey[$orderProp]['ID']); self::setProp($somePropValue, RCrmActions::fromJSON($order[$key])); - } elseif(array_key_exists($key, $order['contragent'])) { + } elseif(is_array($order['contragent']) && array_key_exists($key, $order['contragent'])) { $somePropValue = $propertyCollection ->getItemByOrderPropertyId($propsKey[$orderProp]['ID']); self::setProp($somePropValue, RCrmActions::fromJSON($order['contragent'][$key])); @@ -1115,7 +1115,7 @@ class RetailCrmHistory $orderSumm += $item->getFinalPrice(); } - if (array_key_exists('cost', $order['delivery'])) { + if (is_array($order['delivery']) && array_key_exists('cost', $order['delivery'])) { $deliverySumm = $order['delivery']['cost']; } else { $deliverySumm = $newOrder->getDeliveryPrice(); @@ -1228,8 +1228,9 @@ class RetailCrmHistory if (!empty($newHistoryPayments)) { foreach ($newOrder->getPaymentCollection() as $orderPayment) { - if (array_key_exists($orderPayment->getField('XML_ID'), $newHistoryPayments)) { - + if (is_array($newHistoryPayments) + && array_key_exists($orderPayment->getField('XML_ID'), $newHistoryPayments) + ) { $paymentId = $orderPayment->getId(); $paymentExternalId = RCrmActions::generatePaymentExternalId($paymentId); if (is_null($paymentId)) { @@ -1372,7 +1373,10 @@ class RetailCrmHistory } if ($fields['customer'][$change['field']] == 'phones') { - $key = count($customers[$change['customer']['id']]['phones']); + if (is_array($customers[$change['customer']['id']]['phones'])) { + $key = count($customers[$change['customer']['id']]['phones']); + } + if (isset($change['oldValue'])) { $customers[$change['customer']['id']]['phones'][$key]['old_number'] = $change['oldValue']; } @@ -1463,7 +1467,7 @@ class RetailCrmHistory $change['order']['payments'] = $payments; } - if (isset($change['order']['contragent']) && count($change['order']['contragent']) > 0) { + if (is_array($change['order']['contragent']) && isset($change['order']['contragent']) && count($change['order']['contragent']) > 0) { foreach ($change['order']['contragent'] as $name => $value) { $change['order'][$name] = self::newValue($value); } @@ -1875,7 +1879,7 @@ class RetailCrmHistory public static function newValue($value) { - if (array_key_exists('code', $value)) { + if (is_array($value) && array_key_exists('code', $value)) { return $value['code']; } else { return $value; diff --git a/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php b/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php index 23a2eeb1..5bf9b46c 100644 --- a/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php +++ b/intaro.retailcrm/classes/general/order/RetailCrmOrder_v5.php @@ -59,7 +59,6 @@ class RetailCrmOrder $dimensionsSetting = RetailcrmConfigProvider::getOrderDimensions(); $currency = RetailcrmConfigProvider::getCurrencyOrDefault(); - $optionCorpClient = RetailcrmConfigProvider::getCorporateClientStatus(); $order = [ 'number' => $arOrder['NUMBER'], @@ -105,6 +104,7 @@ class RetailCrmOrder //fields foreach ($arOrder['PROPS']['properties'] as $prop) { if (!empty($arParams['optionsLegalDetails']) + && is_array($arParams['optionsLegalDetails'][$arOrder['PERSON_TYPE_ID']]) && $search = array_search($prop['CODE'], $arParams['optionsLegalDetails'][$arOrder['PERSON_TYPE_ID']]) ) { $order['contragent'][$search] = $prop['VALUE'][0];//legal order data @@ -112,7 +112,8 @@ class RetailCrmOrder && $search = array_search($prop['CODE'], $arParams['optionsCustomFields'][$arOrder['PERSON_TYPE_ID']]) ) { $order['customFields'][$search] = $prop['VALUE'][0];//custom properties - } elseif ($search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arOrder['PERSON_TYPE_ID']])) {//other + } elseif (is_array($arParams['optionsOrderProps'][$arOrder['PERSON_TYPE_ID']]) + && $search = array_search($prop['CODE'], $arParams['optionsOrderProps'][$arOrder['PERSON_TYPE_ID']])) {//other if (in_array($search, ['fio', 'phone', 'email'])) {//fio, phone, email if ($search === 'fio') { $order = array_merge($order, RCrmActions::explodeFio($prop['VALUE'][0]));//add fio fields @@ -188,6 +189,7 @@ class RetailCrmOrder } //basket + foreach ($arOrder['BASKET'] as $position => $product) { $itemId = null; $externalId = $position . '_' . $product['PRODUCT_ID']; @@ -196,9 +198,15 @@ class RetailCrmOrder $externalIds = $orderItems[$externalId]['externalIds']; $itemId = $orderItems[$externalId]['id']; - $key = array_search('bitrix', array_column($externalIds, 'code')); + $key = null; + $keyBasketId = null; - if ($externalIds[$key]['code'] === 'bitrix') { + if (is_array($externalIds)) { + $key = array_search('bitrix', array_column($externalIds, 'code')); + $keyBasketId = array_search('bitrixBasketId', array_column($externalIds, 'code')); + } + + if (isset($externalIds[$key]['code']) && $externalIds[$key]['code'] === 'bitrix') { $externalIds[$key] = [ 'code' => 'bitrix', 'value' => $externalId, @@ -208,11 +216,11 @@ class RetailCrmOrder 'code' => 'bitrix', 'value' => $externalId, ]; - } + } - $keyBasketId = array_search('bitrixBasketId', array_column($externalIds, 'code')); - - if ($externalIds[$keyBasketId]['code'] === 'bitrixBasketId') { + if (isset($externalIds[$keyBasketId]['code']) + && $externalIds[$keyBasketId]['code'] === 'bitrixBasketId' + ) { $externalIds[$keyBasketId] = [ 'code' => 'bitrixBasketId', 'value' => $product['ID'], @@ -222,7 +230,7 @@ class RetailCrmOrder 'code' => 'bitrixBasketId', 'value' => $product['ID'], ]; - } + } } else { //create $externalIds = [ [ diff --git a/intaro.retailcrm/classes/general/ua/RetailCrmUa.php b/intaro.retailcrm/classes/general/ua/RetailCrmUa.php index cc170222..80e2954d 100644 --- a/intaro.retailcrm/classes/general/ua/RetailCrmUa.php +++ b/intaro.retailcrm/classes/general/ua/RetailCrmUa.php @@ -9,8 +9,9 @@ class RetailCrmUa { $ua = COption::GetOptionString(self::$MODULE_ID, self::$CRM_UA, 0); $uaKeys = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_UA_KEYS, 0)); + $request = \Bitrix\Main\Context::getCurrent()->getRequest(); - if ($ua === 'Y' && !empty($uaKeys[SITE_ID]['ID']) && !empty($uaKeys[SITE_ID]['INDEX']) && ADMIN_SECTION !== true) { + if ($ua === 'Y' && !empty($uaKeys[SITE_ID]['ID']) && !empty($uaKeys[SITE_ID]['INDEX']) && $request->isAdminSection() !== true) { global $APPLICATION; $ua = " diff --git a/intaro.retailcrm/description.ru b/intaro.retailcrm/description.ru index 5b903449..3fe9bc9e 100644 --- a/intaro.retailcrm/description.ru +++ b/intaro.retailcrm/description.ru @@ -1 +1 @@ -- Добавлена поддержка работы с корпоративными клиентами при мультисайтовости cms системы +- Добавлена поддержка PHP 8.0 diff --git a/intaro.retailcrm/export/export_setup.php b/intaro.retailcrm/export/export_setup.php index 88217c55..9ecbf239 100644 --- a/intaro.retailcrm/export/export_setup.php +++ b/intaro.retailcrm/export/export_setup.php @@ -495,7 +495,7 @@ if ($STEP === 1) {   -
+


  diff --git a/intaro.retailcrm/include.php b/intaro.retailcrm/include.php index 9e68ce2d..740a8bb9 100644 --- a/intaro.retailcrm/include.php +++ b/intaro.retailcrm/include.php @@ -61,9 +61,7 @@ if (empty(ConfigProvider::getSitesAvailable())) { try { $credentials = $client->getCredentials(); - ConfigProvider::setSitesAvailable( - count($credentials->sitesAvailable) > 0 ? $credentials->sitesAvailable[0] : '' - ); + ConfigProvider::setSitesAvailable($credentials->sitesAvailable[0] ?? ''); } catch (ArgumentOutOfRangeException | CurlException $exception) { Logger::getInstance()->write($exception->getMessage()); } diff --git a/intaro.retailcrm/install/index.php b/intaro.retailcrm/install/index.php index d0285c67..84805c26 100644 --- a/intaro.retailcrm/install/index.php +++ b/intaro.retailcrm/install/index.php @@ -89,7 +89,7 @@ class intaro_retailcrm extends CModule public $PROTOCOL = 'protocol'; public $INSTALL_PATH; - function intaro_retailcrm() + public function __construct() { $arModuleVersion = []; $path = str_replace("\\", '/', __FILE__); @@ -615,15 +615,69 @@ class intaro_retailcrm extends CModule COption::SetOptionString($this->MODULE_ID, $this->PROTOCOL, 'http://'); } - COption::SetOptionString($this->MODULE_ID, $this->CRM_ORDER_TYPES_ARR, serialize(RCrmActions::clearArr($orderTypesArr))); - COption::SetOptionString($this->MODULE_ID, $this->CRM_DELIVERY_TYPES_ARR, serialize(RCrmActions::clearArr($deliveryTypesArr))); - COption::SetOptionString($this->MODULE_ID, $this->CRM_PAYMENT_TYPES, serialize(RCrmActions::clearArr($paymentTypesArr))); - COption::SetOptionString($this->MODULE_ID, $this->CRM_PAYMENT_STATUSES, serialize(RCrmActions::clearArr($paymentStatusesArr))); - COption::SetOptionString($this->MODULE_ID, $this->CRM_PAYMENT, serialize(RCrmActions::clearArr($paymentArr))); + // Set order types + if (!empty($orderTypesArr)) { + COption::SetOptionString( + $this->MODULE_ID, + $this->CRM_ORDER_TYPES_ARR, + serialize(RCrmActions::clearArr($orderTypesArr) + ) + ); + } + + // Set delivery types + if (!empty($deliveryTypesArr)) { + COption::SetOptionString( + $this->MODULE_ID, + $this->CRM_DELIVERY_TYPES_ARR, + serialize(RCrmActions::clearArr($deliveryTypesArr) + ) + ); + } + + // Set payment types + if (!empty($paymentTypesArr)) { + COption::SetOptionString( + $this->MODULE_ID, + $this->CRM_PAYMENT_TYPES, + serialize(RCrmActions::clearArr($paymentTypesArr) + ) + ); + } + + // Set payment statuses + if (!empty($paymentStatusesArr)) { + COption::SetOptionString( + $this->MODULE_ID, + $this->CRM_PAYMENT_STATUSES, + serialize(RCrmActions::clearArr($paymentStatusesArr) + ) + ); + } + + // Set payments + if (!empty($paymentArr)) { + COption::SetOptionString( + $this->MODULE_ID, + $this->CRM_PAYMENT, + serialize(RCrmActions::clearArr($paymentArr) + ) + ); + } + COption::SetOptionString($this->MODULE_ID, $this->CRM_ORDER_LAST_ID, 0); COption::SetOptionString($this->MODULE_ID, $this->CRM_ORDER_DISCHARGE, 1); COption::SetOptionString($this->MODULE_ID, $this->CRM_ORDER_FAILED_IDS, serialize([])); - COption::SetOptionString($this->MODULE_ID, $this->CRM_CANSEL_ORDER, serialize(RCrmActions::clearArr($canselOrderArr))); + + // Set cansel order + if (!empty($canselOrderArr)) { + COption::SetOptionString( + $this->MODULE_ID, + $this->CRM_CANSEL_ORDER, + serialize(RCrmActions::clearArr($canselOrderArr) + ) + ); + } if ($orderProps = COption::GetOptionString($this->OLD_MODULE_ID, $this->CRM_ORDER_PROPS, 0)) { $arResult['ORDER_PROPS'] = unserialize($orderProps); diff --git a/intaro.retailcrm/install/version.php b/intaro.retailcrm/install/version.php index b31f7c70..447e0a59 100644 --- a/intaro.retailcrm/install/version.php +++ b/intaro.retailcrm/install/version.php @@ -1,6 +1,6 @@ '6.1.16', - 'VERSION_DATE' => '2023-02-16 12:00:00' + 'VERSION' => '6.2.0', + 'VERSION_DATE' => '2023-03-10 12:00:00' ]; diff --git a/intaro.retailcrm/lib/component/builder/api/customerbuilder.php b/intaro.retailcrm/lib/component/builder/api/customerbuilder.php index 4fa35c49..0a1c9bbe 100644 --- a/intaro.retailcrm/lib/component/builder/api/customerbuilder.php +++ b/intaro.retailcrm/lib/component/builder/api/customerbuilder.php @@ -236,7 +236,7 @@ class CustomerBuilder implements BuilderInterface private function handleFields(): void { - if (count($this->customFields) === 0) { + if (is_array($this->customFields) && count($this->customFields) === 0) { return; } diff --git a/intaro.retailcrm/lib/component/handlers/eventshandlers.php b/intaro.retailcrm/lib/component/handlers/eventshandlers.php index 84ebd13e..e12e05f1 100644 --- a/intaro.retailcrm/lib/component/handlers/eventshandlers.php +++ b/intaro.retailcrm/lib/component/handlers/eventshandlers.php @@ -60,7 +60,7 @@ class EventsHandlers * @param array $arParams * @param array $arResult */ - public function OnSaleComponentOrderResultPreparedHandler( + public static function OnSaleComponentOrderResultPreparedHandler( Order $order, array $arUserResult, HttpRequest $request, @@ -125,7 +125,7 @@ class EventsHandlers * * @param \Bitrix\Main\Event $event */ - public function OnSaleOrderSavedHandler(Event $event): void + public static function OnSaleOrderSavedHandler(Event $event): void { if (self::$disableSaleHandler === true) { return; @@ -222,7 +222,7 @@ class EventsHandlers * @return mixed * @throws \ReflectionException */ - public function OnAfterUserRegisterHandler(array $arFields): void + public static function OnAfterUserRegisterHandler(array $arFields): void { if (isset($arFields['USER_ID']) && $arFields['USER_ID'] > 0) { $user = UserRepository::getById($arFields['USER_ID']); diff --git a/intaro.retailcrm/lib/component/json/strategy/deserialize/typedarraystrategy.php b/intaro.retailcrm/lib/component/json/strategy/deserialize/typedarraystrategy.php index 43246082..d69d3e3e 100644 --- a/intaro.retailcrm/lib/component/json/strategy/deserialize/typedarraystrategy.php +++ b/intaro.retailcrm/lib/component/json/strategy/deserialize/typedarraystrategy.php @@ -37,6 +37,10 @@ class TypedArrayStrategy implements DeserializeStrategyInterface $valueType = ''; $result = []; + if (!is_array($value)) { + return $result; + } + if (strpos($this->innerType, ',') !== false) { [$keyType, $valueType] = static::getInnerTypes($this->innerType); diff --git a/intaro.retailcrm/lib/component/json/strategy/serialize/typedarraystrategy.php b/intaro.retailcrm/lib/component/json/strategy/serialize/typedarraystrategy.php index aef1be3e..0b2507f5 100644 --- a/intaro.retailcrm/lib/component/json/strategy/serialize/typedarraystrategy.php +++ b/intaro.retailcrm/lib/component/json/strategy/serialize/typedarraystrategy.php @@ -36,6 +36,10 @@ class TypedArrayStrategy implements SerializeStrategyInterface $valueType = ''; $result = []; + if (!is_array($value)) { + return $result; + } + if (strpos($this->innerType, ',') !== false) { [$keyType, $valueType] = static::getInnerTypes($this->innerType); diff --git a/intaro.retailcrm/lib/controller/loyalty/register.php b/intaro.retailcrm/lib/controller/loyalty/register.php index 41c5f43e..4ff24ea5 100644 --- a/intaro.retailcrm/lib/controller/loyalty/register.php +++ b/intaro.retailcrm/lib/controller/loyalty/register.php @@ -46,12 +46,12 @@ class Register extends Controller return [ 'saveUserLpFields' => [ '-prefilters' => [ - new Authentication, + Authentication::class, ], ], 'resetUserLpFields' => [ '-prefilters' => [ - new Authentication, + Authentication::class, ], ], ]; diff --git a/intaro.retailcrm/lib/icml/settingsservice.php b/intaro.retailcrm/lib/icml/settingsservice.php index 267872db..7bee56a0 100644 --- a/intaro.retailcrm/lib/icml/settingsservice.php +++ b/intaro.retailcrm/lib/icml/settingsservice.php @@ -624,7 +624,7 @@ class SettingsService */ public function isExport($iblockId, $iblockExport): bool { - if (count($iblockExport) !== 0) { + if (is_array($iblockExport) && count($iblockExport) !== 0) { return (in_array($iblockId, $iblockExport)); } diff --git a/intaro.retailcrm/lib/service/loyaltyaccountservice.php b/intaro.retailcrm/lib/service/loyaltyaccountservice.php index 71d3a649..c0543f44 100644 --- a/intaro.retailcrm/lib/service/loyaltyaccountservice.php +++ b/intaro.retailcrm/lib/service/loyaltyaccountservice.php @@ -19,6 +19,7 @@ use Intaro\RetailCrm\Component\ConfigProvider; use Intaro\RetailCrm\Component\Factory\ClientFactory; use Intaro\RetailCrm\Component\Json\Serializer; use Intaro\RetailCrm\Component\ServiceLocator; +use Intaro\RetailCrm\Model\Api\IdentifiersPair; use Intaro\RetailCrm\Model\Api\LoyaltyAccount; use Intaro\RetailCrm\Model\Api\LoyaltyAccountApiFilterType; use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountRequest; @@ -118,9 +119,12 @@ class LoyaltyAccountService $createRequest->loyaltyAccount = new SerializedCreateLoyaltyAccount(); $createRequest->loyaltyAccount->phoneNumber = $phone ?? ''; $createRequest->loyaltyAccount->cardNumber = $card ?? ''; - $createRequest->loyaltyAccount->customer->externalId = $externalId; $createRequest->loyaltyAccount->customFields = []; + $createRequest->loyaltyAccount->customer = new IdentifiersPair(); + $createRequest->loyaltyAccount->customer->externalId = $externalId; + + $createResponse = $client->createLoyaltyAccount($createRequest); if ($createResponse instanceof LoyaltyAccountCreateResponse) { diff --git a/intaro.retailcrm/lib/service/loyaltyservice.php b/intaro.retailcrm/lib/service/loyaltyservice.php index 7264e74c..a96afbf5 100644 --- a/intaro.retailcrm/lib/service/loyaltyservice.php +++ b/intaro.retailcrm/lib/service/loyaltyservice.php @@ -22,6 +22,7 @@ use Intaro\RetailCrm\Component\Constants; use Intaro\RetailCrm\Component\Factory\ClientFactory; use Intaro\RetailCrm\Component\ServiceLocator; use Intaro\RetailCrm\Model\Api\LoyaltyAccount; +use Intaro\RetailCrm\Model\Api\LoyaltyAccountApiFilterType; use Intaro\RetailCrm\Model\Api\OrderProduct; use Intaro\RetailCrm\Model\Api\PriceType; use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountRequest; @@ -176,6 +177,7 @@ class LoyaltyService public function getLoyaltyAccounts(int $idInLoyalty): ?LoyaltyAccount { $request = new LoyaltyAccountRequest(); + $request->filter = new LoyaltyAccountApiFilterType(); $request->filter->id = $idInLoyalty; $request->filter->sites = $this->site; diff --git a/intaro.retailcrm/lib/service/utils.php b/intaro.retailcrm/lib/service/utils.php index 1b0adf63..80ee7813 100644 --- a/intaro.retailcrm/lib/service/utils.php +++ b/intaro.retailcrm/lib/service/utils.php @@ -46,7 +46,7 @@ class Utils foreach ($arr as $index => $node) { $result[$index] = is_array($node) === true ? $this->clearArray($node) : trim($node); - if ($result[$index] === '' || $result[$index] === null || count($result[$index]) < 1) { + if (empty($result[$index])) { unset($result[$index]); } } diff --git a/intaro.retailcrm/lib/vendor/doctrine/common/annotations/tokenparser.php b/intaro.retailcrm/lib/vendor/doctrine/common/annotations/tokenparser.php index d4fd583c..ada4a9a9 100644 --- a/intaro.retailcrm/lib/vendor/doctrine/common/annotations/tokenparser.php +++ b/intaro.retailcrm/lib/vendor/doctrine/common/annotations/tokenparser.php @@ -99,14 +99,22 @@ class TokenParser */ public function parseUseStatement() { - $groupRoot = ''; $class = ''; $alias = ''; $statements = []; $explicitAlias = false; while (($token = $this->next())) { + if (false !== strpos(PHP_VERSION, '8') && $token[0] === T_NAME_QUALIFIED) { + $fullAlias = explode('\\', $token[1]); + $alias = $fullAlias[array_key_last($fullAlias)]; + $statements[strtolower($alias)] = $token[1]; + + break; + } + $isNameToken = $token[0] === T_STRING || $token[0] === T_NS_SEPARATOR; + if (!$explicitAlias && $isNameToken) { $class .= $token[1]; $alias = $token[1]; diff --git a/intaro.retailcrm/options.php b/intaro.retailcrm/options.php index 3c3364a0..aca716ae 100644 --- a/intaro.retailcrm/options.php +++ b/intaro.retailcrm/options.php @@ -525,11 +525,8 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) { } $bitrixCorpShopsArr = array_values(array_filter($_POST, 'maskCorp', ARRAY_FILTER_USE_KEY)); - - RegisterModuleDependences("main", "OnBeforeProlog", $mid, "RetailCrmCc", "add"); } else { $cc = 'N'; - UnRegisterModuleDependences("main", "OnBeforeProlog", $mid, "RetailCrmCc", "add"); } //purchasePrice_null @@ -983,6 +980,8 @@ if (isset($_POST['Update']) && ($_POST['Update'] === 'Y')) { ); } ?> + +