diff --git a/api/Dockerfile b/api/Dockerfile index d4d195c7..42cb8a51 100755 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,4 +1,4 @@ -FROM cgsmith105/yii2-php:8.0-apache +FROM yiisoftware/yii2-php:8.1-apache # Change document root for Apache RUN sed -i -e 's|/app/web|/app/api/web|g' /etc/apache2/sites-available/000-default.conf diff --git a/common/models/UserWarehouse.php b/common/models/UserWarehouse.php new file mode 100644 index 00000000..ef512f46 --- /dev/null +++ b/common/models/UserWarehouse.php @@ -0,0 +1,46 @@ + 'ID', + 'warehouse_id' => 'Warehouse ID', + 'user_id' => 'User ID', + ]; + } +} diff --git a/common/models/Warehouse.php b/common/models/Warehouse.php new file mode 100644 index 00000000..17a7167d --- /dev/null +++ b/common/models/Warehouse.php @@ -0,0 +1,101 @@ + 255], + ]; + } + + /** + * {@inheritdoc} + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'name' => 'Name', + 'created_at' => 'Created At', + 'updated_at' => 'Updated At', + ]; + } + + public function behaviors() + { + return [ + TimestampBehavior::class, + ]; + } + + /** + * Whether the customer is linked to given user + * + * @param int $userId + * + * @return bool + */ + public function isLinkedToUser($userId) + { + return $this->getUserWarehouse()->onCondition(['user_id' => (int)$userId])->exists(); + } + + public static function find() + { + return new WarehouseQuery(get_called_class()); + } + + /** + * Returns list of customers as array [id=>name] + * + * @param string $keyField Field name to use as key + * @param string $valueField Field name to use as value + * + * @todo getList is used in multiple spots and might be worthwhile to make an interface + * @return array + */ + public static function getList($keyField = 'id', $valueField = 'name') + { + $data = self::find()->orderBy([$valueField => SORT_ASC])->all(); + + return ArrayHelper::map($data, $keyField, $valueField); + } + + /** + * Get UserCustomer + * + * @return \yii\db\ActiveQuery + */ + public function getUserWarehouse() + { + return $this->hasMany(UserWarehouse::class, ['warehouse_id' => 'id']); + } +} diff --git a/common/models/base/BaseOrder.php b/common/models/base/BaseOrder.php index e6420286..56c0b7dc 100755 --- a/common/models/base/BaseOrder.php +++ b/common/models/base/BaseOrder.php @@ -2,11 +2,14 @@ namespace common\models\base; +use common\models\Warehouse; + /** * This is the model class for table "orders". * * @property int $id * @property int $customer_id + * @property int $warehouse_id * @property string $order_reference * @property string $customer_reference * @property int $status_id @@ -54,7 +57,7 @@ public function rules() { return [ [['customer_id', 'customer_reference', 'address_id'], 'required'], - [['customer_id', 'status_id', 'address_id', 'carrier_id', 'service_id', 'transit'], 'integer'], + [['customer_id', 'warehouse_id', 'status_id', 'address_id', 'carrier_id', 'service_id', 'transit'], 'integer'], [['created_date', 'updated_date', 'requested_ship_date', 'must_arrive_by_date', 'carrier_id', 'service_id', 'transit'], 'safe'], [['order_reference', 'tracking'], 'string', 'max' => 45], [['customer_reference', 'origin', 'uuid'], 'string', 'max' => 64], @@ -88,6 +91,7 @@ public function attributeLabels() return [ 'id' => 'ID', 'customer_id' => 'Customer ID', + 'warehouse_id' => 'Warehouse ID', 'order_reference' => 'WMS Order #', 'customer_reference' => 'Customer Order #', 'status_id' => 'Status ID', @@ -103,4 +107,9 @@ public function attributeLabels() 'label_type' => 'Label Type', ]; } + + public function getWarehouse() + { + return $this->hasOne(Warehouse::class, ['id' => 'warehouse_id']); + } } diff --git a/common/models/query/OrderQuery.php b/common/models/query/OrderQuery.php index 6153d43f..45850663 100755 --- a/common/models/query/OrderQuery.php +++ b/common/models/query/OrderQuery.php @@ -4,6 +4,7 @@ use common\models\base\BaseBatch; use common\models\Order; +use common\traits\LimitBy; use yii\helpers\ArrayHelper; /** @@ -11,8 +12,28 @@ * * @see Order */ -class OrderQuery extends \yii\db\ActiveQuery +class OrderQuery extends BaseQuery { + use LimitBy; + + public function __construct($modelClass, $config = []) + { + parent::__construct($modelClass, $config); + + if (\Yii::$app instanceof \yii\web\Application && + \Yii::$app->id !== 'app-api' && + !\Yii::$app->user->identity->isAdmin) { + // If a "warehouse" user limit orders only by the warehouse that is linked + if (\Yii::$app->user->identity->isWarehouseType()) { + $this->limitByWarehouse(); + } + + // If a "customer" user then limit the orders by the customers that they have access to + if (\Yii::$app->user->identity->isCustomerType()) { + $this->limitByCustomer(); + } + } + } /** * @inheritdoc @@ -32,37 +53,6 @@ public function one($db = null) return parent::one($db); } - /** - * Query condition to get orders for given customer id - * - * We assume that if $id passed is null then no condition to apply - * - * @param int $id Customer Id - * - * @return OrderQuery - */ - public function forCustomer($id) - { - return is_numeric($id) - ? $this->andOnCondition([Order::tableName() . '.customer_id' => (int)$id]) - : $this; - } - - /** - * Query condition to get orders for multiple given customers - * - * @param array $ids Customer Ids - * - * @return OrderQuery - */ - public function forCustomers($ids = []) - { - if (!empty($ids)) { - return $this->andOnCondition([Order::tableName() . '.customer_id' => $ids]); - } - return $this; - } - /** * Query condition to get order by customer reference ID - identifier in the customer database * diff --git a/common/models/query/WarehouseQuery.php b/common/models/query/WarehouseQuery.php new file mode 100644 index 00000000..607953a0 --- /dev/null +++ b/common/models/query/WarehouseQuery.php @@ -0,0 +1,34 @@ +id !== 'app-api' && + !\Yii::$app->user->identity->isAdmin) { + $this->andWhere(['in', 'id', \Yii::$app->user->identity->warehouseIds]); + } + } +} \ No newline at end of file diff --git a/common/traits/LimitBy.php b/common/traits/LimitBy.php new file mode 100644 index 00000000..7534e919 --- /dev/null +++ b/common/traits/LimitBy.php @@ -0,0 +1,16 @@ +andWhere(['in', 'warehouse_id', \Yii::$app->user->identity->warehouseIds]); + } + + public function limitByCustomer($ids = []) + { + $this->andWhere(['in', 'customer_id', \Yii::$app->user->identity->customerIds]); + } +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index 69696d99..ebb79fa6 100644 --- a/composer.lock +++ b/composer.lock @@ -213,45 +213,51 @@ }, { "name": "2amigos/yii2-usuario", - "version": "1.5.1", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/2amigos/yii2-usuario.git", - "reference": "e2b041a32a9cd248c7849ff6cfb12a2f60822b57" + "reference": "9c84f12c11878790e8f2a4271f02d4e60d13dbbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/2amigos/yii2-usuario/zipball/e2b041a32a9cd248c7849ff6cfb12a2f60822b57", - "reference": "e2b041a32a9cd248c7849ff6cfb12a2f60822b57", + "url": "https://api.github.com/repos/2amigos/yii2-usuario/zipball/9c84f12c11878790e8f2a4271f02d4e60d13dbbc", + "reference": "9c84f12c11878790e8f2a4271f02d4e60d13dbbc", "shasum": "" }, "require": { "2amigos/yii2-selectize-widget": "^1.1", "php": ">=5.5", + "yetopen/yii2-sms-sender-interface": "^0.1.1", "yiisoft/yii2-authclient": "^2.1", "yiisoft/yii2-bootstrap": "^2.0", - "yiisoft/yii2-httpclient": "^2.0", - "yiisoft/yii2-swiftmailer": "^2.0" + "yiisoft/yii2-httpclient": "^2.0" }, "conflict": { "dektrium/yii2-rbac": "*", "dektrium/yii2-user": "*" }, "require-dev": { + "2amigos/2fa-library": "^2.0", + "2amigos/qrcode-library": "^2.0", "codeception/codeception": "*", "codeception/module-asserts": "^1.1", "codeception/module-db": "^1.0", "codeception/module-filesystem": "^1.0", "codeception/module-yii2": "^1.1", "codeception/verify": "^0.3.3", - "friendsofphp/php-cs-fixer": "^2.3", + "friendsofphp/php-cs-fixer": "^3", + "php": ">=7.4", "phpmd/phpmd": "@stable", + "phpstan/phpstan": "^1.8", "roave/security-advisories": "dev-master", - "squizlabs/php_codesniffer": "*" + "squizlabs/php_codesniffer": "*", + "yiisoft/yii2-symfonymailer": "~2.0.0" }, "suggest": { "2amigos/2fa-library": "Needed if you want to enable 2 Factor Authentication. Require version ^1.0", - "2amigos/qrcode-library": "Needed if you want to enable 2FA with QR Code generation. Require version ^1.1" + "2amigos/qrcode-library": "Needed if you want to enable 2FA with QR Code generation. Require version ^1.1", + "yiisoft/yii2-symfonymailer": "A mailer driver is needed to send e-mails. Older versions use abandoned Swiftmailer which can be replaced with symfonymailer" }, "type": "yii2-extension", "extra": { @@ -301,7 +307,7 @@ "issues": "https://github.com/2amigos/yii2-usuario/issues?state=open", "source": "https://github.com/2amigos/yii2-usuario" }, - "time": "2020-04-05T11:59:36+00:00" + "time": "2023-01-09T08:51:26+00:00" }, { "name": "aws/aws-crt-php", @@ -355,16 +361,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.228.5", + "version": "3.255.11", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "8b6e626e02c42310c3ce8615acc7b2c992e48c97" + "reference": "e851af4d7d2d95b131db344430384ae7cc04758e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/8b6e626e02c42310c3ce8615acc7b2c992e48c97", - "reference": "8b6e626e02c42310c3ce8615acc7b2c992e48c97", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e851af4d7d2d95b131db344430384ae7cc04758e", + "reference": "e851af4d7d2d95b131db344430384ae7cc04758e", "shasum": "" }, "require": { @@ -382,6 +388,8 @@ "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", + "composer/composer": "^1.10.22", + "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", @@ -389,10 +397,11 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35 || ^5.6.3", + "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3" + "sebastian/comparator": "^1.2.3 || ^4.0", + "yoast/phpunit-polyfills": "^1.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -440,9 +449,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.228.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.255.11" }, - "time": "2022-06-28T18:13:37+00:00" + "time": "2023-01-06T19:22:07+00:00" }, { "name": "bacon/bacon-qr-code", @@ -564,7 +573,7 @@ "version": "3.3.11", "source": { "type": "git", - "url": "git@github.com:RobinHerbots/Inputmask.git", + "url": "https://github.com/RobinHerbots/Inputmask.git", "reference": "5e670ad62f50c738388d4dcec78d2888505ad77b" }, "dist": { @@ -582,16 +591,16 @@ }, { "name": "bower-asset/jquery", - "version": "3.6.0", + "version": "3.6.3", "source": { "type": "git", "url": "https://github.com/jquery/jquery-dist.git", - "reference": "e786e3d9707ffd9b0dd330ca135b66344dcef85a" + "reference": "da0f228131a578aea168b799fe4d7fe01764c98b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/e786e3d9707ffd9b0dd330ca135b66344dcef85a", - "reference": "e786e3d9707ffd9b0dd330ca135b66344dcef85a" + "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/da0f228131a578aea168b799fe4d7fe01764c98b", + "reference": "da0f228131a578aea168b799fe4d7fe01764c98b" }, "type": "bower-asset", "license": [ @@ -621,12 +630,12 @@ "version": "v1.3.2", "source": { "type": "git", - "url": "https://github.com/mathiasbynens/punycode.js.git", + "url": "git@github.com:bestiejs/punycode.js.git", "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mathiasbynens/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3", + "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3", "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3" }, "type": "bower-asset" @@ -677,28 +686,28 @@ "version": "v3.52.5", "source": { "type": "git", - "url": "git@github.com:wordnik/swagger-ui.git", + "url": "https://github.com/swagger-api/swagger-ui.git", "reference": "f1ad60dc92e7edb0898583e16c3e66fe3e9eada2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wordnik/swagger-ui/zipball/f1ad60dc92e7edb0898583e16c3e66fe3e9eada2", + "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/f1ad60dc92e7edb0898583e16c3e66fe3e9eada2", "reference": "f1ad60dc92e7edb0898583e16c3e66fe3e9eada2" }, "type": "bower-asset" }, { "name": "bower-asset/yii2-pjax", - "version": "2.0.7.1", + "version": "2.0.8", "source": { "type": "git", - "url": "https://github.com/yiisoft/jquery-pjax.git", - "reference": "aef7b953107264f00234902a3880eb50dafc48be" + "url": "git@github.com:yiisoft/jquery-pjax.git", + "reference": "a9298d57da63d14a950f1b94366a864bc62264fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/aef7b953107264f00234902a3880eb50dafc48be", - "reference": "aef7b953107264f00234902a3880eb50dafc48be" + "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/a9298d57da63d14a950f1b94366a864bc62264fb", + "reference": "a9298d57da63d14a950f1b94366a864bc62264fb" }, "require": { "bower-asset/jquery": ">=1.8" @@ -710,16 +719,16 @@ }, { "name": "bp-sys/yii2-aws-s3", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/bp-sys/yii2-aws-s3.git", - "reference": "b64592da78357934ed47817cbb2dcc197faee51a" + "reference": "05b7028c7d9ac529c78d95a296e13c934ca3c8d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bp-sys/yii2-aws-s3/zipball/b64592da78357934ed47817cbb2dcc197faee51a", - "reference": "b64592da78357934ed47817cbb2dcc197faee51a", + "url": "https://api.github.com/repos/bp-sys/yii2-aws-s3/zipball/05b7028c7d9ac529c78d95a296e13c934ca3c8d3", + "reference": "05b7028c7d9ac529c78d95a296e13c934ca3c8d3", "shasum": "" }, "require": { @@ -760,22 +769,22 @@ ], "support": { "issues": "https://github.com/bp-sys/yii2-aws-s3/issues?state=open", - "source": "https://github.com/bp-sys/yii2-aws-s3/tree/2.3.0" + "source": "https://github.com/bp-sys/yii2-aws-s3/tree/2.4.0" }, - "time": "2020-12-07T20:49:21+00:00" + "time": "2022-08-21T22:57:18+00:00" }, { "name": "caseyamcl/guzzle_retry_middleware", - "version": "v2.7", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/caseyamcl/guzzle_retry_middleware.git", - "reference": "e6717d8460e5ef40db6d2e7218069a2826f69138" + "reference": "225c8485e6777746d32deac341b4781011e61424" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/caseyamcl/guzzle_retry_middleware/zipball/e6717d8460e5ef40db6d2e7218069a2826f69138", - "reference": "e6717d8460e5ef40db6d2e7218069a2826f69138", + "url": "https://api.github.com/repos/caseyamcl/guzzle_retry_middleware/zipball/225c8485e6777746d32deac341b4781011e61424", + "reference": "225c8485e6777746d32deac341b4781011e61424", "shasum": "" }, "require": { @@ -826,9 +835,15 @@ ], "support": { "issues": "https://github.com/caseyamcl/guzzle_retry_middleware/issues", - "source": "https://github.com/caseyamcl/guzzle_retry_middleware/tree/v2.7" + "source": "https://github.com/caseyamcl/guzzle_retry_middleware/tree/v2.8.0" }, - "time": "2021-12-04T02:49:15+00:00" + "funding": [ + { + "url": "https://github.com/caseyamcl", + "type": "github" + } + ], + "time": "2022-11-20T21:56:14+00:00" }, { "name": "cebe/markdown", @@ -1058,30 +1073,34 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" }, "type": "library", "autoload": { @@ -1124,37 +1143,82 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.14.2" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-12-15T06:48:22+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + }, + "time": "2022-05-02T15:47:09+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1186,7 +1250,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -1202,29 +1266,28 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "3.2.5", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "b531a2311709443320c786feb4519cfaf94af796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796", + "reference": "b531a2311709443320c786feb4519cfaf94af796", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", + "doctrine/lexer": "^1.2|^2", "php": ">=7.2", "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5.8|^9.3.3", "vimeo/psalm": "^4" }, @@ -1262,7 +1325,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.5" }, "funding": [ { @@ -1270,24 +1333,34 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-01-02T17:26:14+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.14.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", "shasum": "" }, "require": { - "php": ">=5.2" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" }, "type": "library", "autoload": { @@ -1319,9 +1392,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, - "time": "2021-12-25T01:21:49+00:00" + "time": "2022-09-18T07:06:19+00:00" }, { "name": "frostealth/yii2-aws-s3", @@ -1500,16 +1573,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "b94b2807d85443f9719887892882d0329d1e2598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", + "reference": "b94b2807d85443f9719887892882d0329d1e2598", "shasum": "" }, "require": { @@ -1564,7 +1637,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/1.5.2" }, "funding": [ { @@ -1580,7 +1653,7 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2022-08-28T14:55:35+00:00" }, { "name": "guzzlehttp/psr7", @@ -2167,6 +2240,7 @@ "issues": "https://github.com/osiset/Basic-Shopify-API/issues", "source": "https://github.com/osiset/Basic-Shopify-API/tree/v9.1.4" }, + "abandoned": "https://github.com/gnikyt/Basic-Shopify-API", "time": "2020-08-25T13:25:33+00:00" }, { @@ -2292,16 +2366,16 @@ }, { "name": "php-http/client-common", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/php-http/client-common.git", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054" + "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054", + "url": "https://api.github.com/repos/php-http/client-common/zipball/45db684cd4e186dcdc2b9c06b22970fe123796c0", + "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0", "shasum": "" }, "require": { @@ -2361,22 +2435,22 @@ ], "support": { "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/2.5.0" + "source": "https://github.com/php-http/client-common/tree/2.6.0" }, - "time": "2021-11-26T15:01:24+00:00" + "time": "2022-09-29T09:59:43+00:00" }, { "name": "php-http/discovery", - "version": "1.14.2", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "c8d48852fbc052454af42f6de27635ddd916b959" + "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/c8d48852fbc052454af42f6de27635ddd916b959", - "reference": "c8d48852fbc052454af42f6de27635ddd916b959", + "url": "https://api.github.com/repos/php-http/discovery/zipball/31d8ee46d0215108df16a8527c7438e96a4d7735", + "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735", "shasum": "" }, "require": { @@ -2428,9 +2502,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.2" + "source": "https://github.com/php-http/discovery/tree/1.14.3" }, - "time": "2022-05-25T07:26:05+00:00" + "time": "2022-07-11T14:04:40+00:00" }, { "name": "php-http/httplug", @@ -3037,21 +3111,21 @@ }, { "name": "sentry/sdk", - "version": "3.2.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292" + "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/6d78bd83b43efbb52f81d6824f4af344fa9ba292", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/d0678fc7274dbb03046ed05cb24eb92945bedf8e", + "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e", "shasum": "" }, "require": { "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^3.5", + "sentry/sentry": "^3.9", "symfony/http-client": "^4.3|^5.0|^6.0" }, "type": "metapackage", @@ -3078,7 +3152,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php-sdk/issues", - "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.2.0" + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.3.0" }, "funding": [ { @@ -3090,20 +3164,20 @@ "type": "custom" } ], - "time": "2022-05-21T11:10:11+00:00" + "time": "2022-10-11T09:05:00+00:00" }, { "name": "sentry/sentry", - "version": "3.6.1", + "version": "3.12.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "5b8f2934b0b20bb01da11c76985ceb5bd6c6af91" + "reference": "4902f43640963ed45517fd7c1da7fdd5511bb304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/5b8f2934b0b20bb01da11c76985ceb5bd6c6af91", - "reference": "5b8f2934b0b20bb01da11c76985ceb5bd6c6af91", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/4902f43640963ed45517fd7c1da7fdd5511bb304", + "reference": "4902f43640963ed45517fd7c1da7fdd5511bb304", "shasum": "" }, "require": { @@ -3122,8 +3196,7 @@ "psr/http-message-implementation": "^1.0", "psr/log": "^1.0|^2.0|^3.0", "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", - "symfony/polyfill-php80": "^1.17", - "symfony/polyfill-uuid": "^1.13.1" + "symfony/polyfill-php80": "^1.17" }, "conflict": { "php-http/client-common": "1.8.0", @@ -3149,7 +3222,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.6.x-dev" + "dev-master": "3.12.x-dev" } }, "autoload": { @@ -3183,7 +3256,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.6.1" + "source": "https://github.com/getsentry/sentry-php/tree/3.12.0" }, "funding": [ { @@ -3195,7 +3268,7 @@ "type": "custom" } ], - "time": "2022-06-27T07:58:00+00:00" + "time": "2022-11-22T10:57:08+00:00" }, { "name": "serzh/amazon-mws-merchant-fulfillment", @@ -3239,16 +3312,16 @@ }, { "name": "setasign/fpdf", - "version": "1.8.4", + "version": "1.8.5", "source": { "type": "git", "url": "https://github.com/Setasign/FPDF.git", - "reference": "b0ddd9c5b98ced8230ef38534f6f3c17308a7974" + "reference": "f4104a04c9a3f95c4c26a0a0531abebcc980987a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDF/zipball/b0ddd9c5b98ced8230ef38534f6f3c17308a7974", - "reference": "b0ddd9c5b98ced8230ef38534f6f3c17308a7974", + "url": "https://api.github.com/repos/Setasign/FPDF/zipball/f4104a04c9a3f95c4c26a0a0531abebcc980987a", + "reference": "f4104a04c9a3f95c4c26a0a0531abebcc980987a", "shasum": "" }, "require": { @@ -3279,22 +3352,22 @@ "pdf" ], "support": { - "source": "https://github.com/Setasign/FPDF/tree/1.8.4" + "source": "https://github.com/Setasign/FPDF/tree/1.8.5" }, - "time": "2021-08-30T07:50:06+00:00" + "time": "2022-11-18T07:02:00+00:00" }, { "name": "stripe/stripe-php", - "version": "v8.8.0", + "version": "v10.3.0", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "06bfb65639cfecae7c2b57d340f740599c548753" + "reference": "417d66a5b27a5ec53a706a346b05bfe170043d52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/06bfb65639cfecae7c2b57d340f740599c548753", - "reference": "06bfb65639cfecae7c2b57d340f740599c548753", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/417d66a5b27a5ec53a706a346b05bfe170043d52", + "reference": "417d66a5b27a5ec53a706a346b05bfe170043d52", "shasum": "" }, "require": { @@ -3305,6 +3378,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "3.5.0", + "php-coveralls/php-coveralls": "^2.5", "phpstan/phpstan": "^1.2", "phpunit/phpunit": "^5.7 || ^9.0", "squizlabs/php_codesniffer": "^3.3" @@ -3339,9 +3413,9 @@ ], "support": { "issues": "https://github.com/stripe/stripe-php/issues", - "source": "https://github.com/stripe/stripe-php/tree/v8.8.0" + "source": "https://github.com/stripe/stripe-php/tree/v10.3.0" }, - "time": "2022-06-23T16:42:38+00:00" + "time": "2022-12-22T20:07:30+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -3421,25 +3495,25 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.0.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3468,7 +3542,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" }, "funding": [ { @@ -3484,20 +3558,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/finder", - "version": "v5.4.8", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9" + "reference": "40c08632019838dfb3350f18cf5563b8080055fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9b630f3427f3ebe7cd346c277a1408b00249dad9", - "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9", + "url": "https://api.github.com/repos/symfony/finder/zipball/40c08632019838dfb3350f18cf5563b8080055fc", + "reference": "40c08632019838dfb3350f18cf5563b8080055fc", "shasum": "" }, "require": { @@ -3531,7 +3605,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.8" + "source": "https://github.com/symfony/finder/tree/v5.4.17" }, "funding": [ { @@ -3547,25 +3621,26 @@ "type": "tidelift" } ], - "time": "2022-04-15T08:07:45+00:00" + "time": "2022-12-22T10:31:03+00:00" }, { "name": "symfony/http-client", - "version": "v6.0.9", + "version": "v6.2.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3c6fc53a3deed2d3c1825d41ad8b3f23a6b038b5" + "reference": "7054ad466f836309aef511789b9c697bc986d8ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3c6fc53a3deed2d3c1825d41ad8b3f23a6b038b5", - "reference": "3c6fc53a3deed2d3c1825d41ad8b3f23a6b038b5", + "url": "https://api.github.com/repos/symfony/http-client/zipball/7054ad466f836309aef511789b9c697bc986d8ce", + "reference": "7054ad466f836309aef511789b9c697bc986d8ce", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/http-client-contracts": "^3", "symfony/service-contracts": "^1.0|^2|^3" }, @@ -3615,7 +3690,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v6.0.9" + "source": "https://github.com/symfony/http-client/tree/v6.2.2" }, "funding": [ { @@ -3631,24 +3706,24 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:33:31+00:00" + "time": "2022-12-14T16:11:27+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.0.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "4184b9b63af1edaf35b6a7974c6f1f9f33294129" + "reference": "c5f587eb445224ddfeb05b5ee703476742d730bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/4184b9b63af1edaf35b6a7974c6f1f9f33294129", - "reference": "4184b9b63af1edaf35b6a7974c6f1f9f33294129", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/c5f587eb445224ddfeb05b5ee703476742d730bf", + "reference": "c5f587eb445224ddfeb05b5ee703476742d730bf", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "suggest": { "symfony/http-client-implementation": "" @@ -3656,7 +3731,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3666,7 +3741,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\HttpClient\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3693,7 +3771,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.0" }, "funding": [ { @@ -3709,24 +3787,24 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:11:42+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.0.3", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "51f7006670febe4cbcbae177cbffe93ff833250d" + "reference": "d28f02acde71ff75e957082cd36e973df395f626" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d", - "reference": "51f7006670febe4cbcbae177cbffe93ff833250d", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28f02acde71ff75e957082cd36e973df395f626", + "reference": "d28f02acde71ff75e957082cd36e973df395f626", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.1|^3" }, "type": "library", @@ -3760,7 +3838,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.0.3" + "source": "https://github.com/symfony/options-resolver/tree/v6.2.0" }, "funding": [ { @@ -3776,20 +3854,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "143f1881e655bebca1312722af8068de235ae5dc" + "reference": "927013f3aac555983a5059aada98e1907d842695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", - "reference": "143f1881e655bebca1312722af8068de235ae5dc", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", "shasum": "" }, "require": { @@ -3804,7 +3882,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3843,7 +3921,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" }, "funding": [ { @@ -3859,20 +3937,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -3886,7 +3964,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3930,7 +4008,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -3946,20 +4024,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -3971,7 +4049,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4014,7 +4092,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -4030,20 +4108,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -4058,7 +4136,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4097,7 +4175,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -4113,20 +4191,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { @@ -4135,7 +4213,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4173,7 +4251,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, "funding": [ { @@ -4189,20 +4267,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -4211,7 +4289,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4256,89 +4334,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" - }, - "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-05-10T07:21:04+00:00" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-uuid": "*" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -4354,25 +4350,24 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", - "version": "v5.4.8", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", - "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "url": "https://api.github.com/repos/symfony/process/zipball/ba6e55359f8f755fe996c58a81e00eaa67a35877", + "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -4400,7 +4395,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.8" + "source": "https://github.com/symfony/process/tree/v6.2.0" }, "funding": [ { @@ -4416,24 +4411,24 @@ "type": "tidelift" } ], - "time": "2022-04-08T05:07:18+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.0.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66" + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66", - "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/container": "^2.0" }, "conflict": { @@ -4445,7 +4440,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -4455,7 +4450,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4482,7 +4480,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" }, "funding": [ { @@ -4498,7 +4496,52 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:58+00:00" + "time": "2022-11-25T10:21:52+00:00" + }, + { + "name": "yetopen/yii2-sms-sender-interface", + "version": "v0.1.2", + "source": { + "type": "git", + "url": "https://github.com/YetOpen/yii2-sms-sender-interface.git", + "reference": "f3d1fc37d271614195173ceee14b7b83b94dc346" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/YetOpen/yii2-sms-sender-interface/zipball/f3d1fc37d271614195173ceee14b7b83b94dc346", + "reference": "f3d1fc37d271614195173ceee14b7b83b94dc346", + "shasum": "" + }, + "require": { + "yiisoft/yii2": "~2.0.0" + }, + "type": "yii2-extension", + "autoload": { + "psr-4": { + "yetopen\\smssender\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Yetopen", + "email": "marco.piazza@yetopen.com" + } + ], + "description": "It implements SmsSenderInterface that should be implemented by text message sender classes", + "keywords": [ + "extension", + "interface", + "yii2" + ], + "support": { + "issues": "https://github.com/YetOpen/yii2-sms-sender-interface/issues", + "source": "https://github.com/YetOpen/yii2-sms-sender-interface/tree/v0.1.2" + }, + "time": "2022-07-08T08:33:16+00:00" }, { "name": "yii2tech/csv-grid", @@ -4569,16 +4612,16 @@ }, { "name": "yiisoft/yii2", - "version": "2.0.45", + "version": "2.0.47", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "e2223d4085e5612aa616635f8fcaf478607f62e8" + "reference": "8ecf57895d9c4b29cf9658ffe57af5f3d0e25254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/e2223d4085e5612aa616635f8fcaf478607f62e8", - "reference": "e2223d4085e5612aa616635f8fcaf478607f62e8", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/8ecf57895d9c4b29cf9658ffe57af5f3d0e25254", + "reference": "8ecf57895d9c4b29cf9658ffe57af5f3d0e25254", "shasum": "" }, "require": { @@ -4687,20 +4730,20 @@ "type": "tidelift" } ], - "time": "2022-02-11T13:12:40+00:00" + "time": "2022-11-18T16:21:58+00:00" }, { "name": "yiisoft/yii2-authclient", - "version": "2.2.12", + "version": "2.2.14", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-authclient.git", - "reference": "84547828d3381c76a1e926d87c570d08ebbce7bd" + "reference": "6bd4b4efc60db2b31bb957a473442900c704857e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-authclient/zipball/84547828d3381c76a1e926d87c570d08ebbce7bd", - "reference": "84547828d3381c76a1e926d87c570d08ebbce7bd", + "url": "https://api.github.com/repos/yiisoft/yii2-authclient/zipball/6bd4b4efc60db2b31bb957a473442900c704857e", + "reference": "6bd4b4efc60db2b31bb957a473442900c704857e", "shasum": "" }, "require": { @@ -4780,7 +4823,7 @@ "type": "tidelift" } ], - "time": "2021-12-03T11:37:55+00:00" + "time": "2022-11-18T17:23:56+00:00" }, { "name": "yiisoft/yii2-bootstrap", @@ -5037,28 +5080,28 @@ }, { "name": "yiisoft/yii2-queue", - "version": "2.3.4", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-queue.git", - "reference": "ed30b5f46ddadd62587a4963dec35f9b756c408b" + "reference": "c1bf0ef5dbe107dc1cf692c1349b9ddd2485a399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/ed30b5f46ddadd62587a4963dec35f9b756c408b", - "reference": "ed30b5f46ddadd62587a4963dec35f9b756c408b", + "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/c1bf0ef5dbe107dc1cf692c1349b9ddd2485a399", + "reference": "c1bf0ef5dbe107dc1cf692c1349b9ddd2485a399", "shasum": "" }, "require": { "php": ">=5.5.0", - "symfony/process": "^3.3||^4.0||^5.0", + "symfony/process": "^3.3||^4.0||^5.0||^6.0", "yiisoft/yii2": "~2.0.14" }, "require-dev": { "aws/aws-sdk-php": ">=2.4", "enqueue/amqp-lib": "^0.8||^0.9.10", "enqueue/stomp": "^0.8.39", - "jeremeamia/superclosure": "*", + "opis/closure": "*", "pda/pheanstalk": "v3.*", "php-amqplib/php-amqplib": "*", "phpunit/phpunit": "~4.4", @@ -5139,7 +5182,7 @@ "type": "tidelift" } ], - "time": "2022-03-31T07:41:51+00:00" + "time": "2022-11-18T17:16:47+00:00" }, { "name": "yiisoft/yii2-swiftmailer", @@ -5438,16 +5481,16 @@ }, { "name": "codeception/codeception", - "version": "4.2.1", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "77b3e2003fd4446b35826cb9dc397129c521c888" + "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/77b3e2003fd4446b35826cb9dc397129c521c888", - "reference": "77b3e2003fd4446b35826cb9dc397129c521c888", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b88014f3348c93f3df99dc6d0967b0dbfa804474", + "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474", "shasum": "" }, "require": { @@ -5524,7 +5567,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.2.1" + "source": "https://github.com/Codeception/Codeception/tree/4.2.2" }, "funding": [ { @@ -5532,7 +5575,7 @@ "type": "open_collective" } ], - "time": "2022-06-22T06:18:59+00:00" + "time": "2022-08-13T13:28:25+00:00" }, { "name": "codeception/lib-asserts", @@ -5954,30 +5997,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -6004,7 +6047,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -6020,24 +6063,24 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "fakerphp/faker", - "version": "v1.19.0", + "version": "v1.21.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d", + "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -6048,7 +6091,8 @@ "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", @@ -6060,7 +6104,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.19-dev" + "dev-main": "v1.21-dev" } }, "autoload": { @@ -6085,9 +6129,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0" }, - "time": "2022-02-02T17:38:57+00:00" + "time": "2022-12-13T13:54:32+00:00" }, { "name": "myclabs/deep-copy", @@ -6150,16 +6194,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.15.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", "shasum": "" }, "require": { @@ -6200,9 +6244,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2022-11-12T15:38:23+00:00" }, { "name": "phar-io/manifest", @@ -6315,166 +6359,6 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "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/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "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/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "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/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, { "name": "phpspec/php-diff", "version": "v1.1.3", @@ -6516,92 +6400,25 @@ }, "time": "2020-09-18T13:47:07+00:00" }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -6650,7 +6467,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" }, "funding": [ { @@ -6658,7 +6475,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2022-12-28T12:41:10+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6903,16 +6720,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.21", + "version": "9.5.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38", + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38", "shasum": "" }, "require": { @@ -6927,7 +6744,6 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", @@ -6935,19 +6751,16 @@ "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -6989,7 +6802,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27" }, "funding": [ { @@ -6999,9 +6812,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-06-19T12:14:25+00:00" + "time": "2022-12-09T07:31:23+00:00" }, { "name": "psr/event-dispatcher", @@ -7222,16 +7039,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -7284,7 +7101,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -7292,7 +7109,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -7482,16 +7299,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -7547,7 +7364,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -7555,7 +7372,7 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", @@ -7910,16 +7727,16 @@ }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { @@ -7931,7 +7748,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -7954,7 +7771,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -7962,7 +7779,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -8019,16 +7836,16 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "18e73179c6a33d520de1b644941eba108dd811ad" + "reference": "081fe28a26b6bd671dea85ef3a4b5003f3c88027" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad", - "reference": "18e73179c6a33d520de1b644941eba108dd811ad", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/081fe28a26b6bd671dea85ef3a4b5003f3c88027", + "reference": "081fe28a26b6bd671dea85ef3a4b5003f3c88027", "shasum": "" }, "require": { @@ -8071,7 +7888,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.4.3" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.11" }, "funding": [ { @@ -8087,7 +7904,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-07-27T15:50:05+00:00" }, { "name": "symfony/console", @@ -8175,16 +7992,16 @@ }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/052ef49b660f9ad2a3adb311c555c9bc11ba61f4", + "reference": "052ef49b660f9ad2a3adb311c555c9bc11ba61f4", "shasum": "" }, "require": { @@ -8221,7 +8038,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v5.4.17" }, "funding": [ { @@ -8237,20 +8054,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-12-23T11:40:44+00:00" }, { "name": "symfony/debug", - "version": "v4.4.41", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", - "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be", "shasum": "" }, "require": { @@ -8289,7 +8106,7 @@ "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.41" + "source": "https://github.com/symfony/debug/tree/v4.4.44" }, "funding": [ { @@ -8306,20 +8123,20 @@ } ], "abandoned": "symfony/error-handler", - "time": "2022-04-12T15:19:55+00:00" + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.4.9", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "a213cbc80382320b0efdccdcdce232f191fafe3a" + "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/a213cbc80382320b0efdccdcdce232f191fafe3a", - "reference": "a213cbc80382320b0efdccdcdce232f191fafe3a", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", + "reference": "32a07d910edc138a1dd5508c17c6b9bc1eb27a1b", "shasum": "" }, "require": { @@ -8365,7 +8182,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.9" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.17" }, "funding": [ { @@ -8381,20 +8198,20 @@ "type": "tidelift" } ], - "time": "2022-05-04T14:46:32+00:00" + "time": "2022-12-22T10:31:03+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.9", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", "shasum": "" }, "require": { @@ -8450,7 +8267,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.17" }, "funding": [ { @@ -8466,24 +8283,24 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:45:39+00:00" + "time": "2022-12-12T15:54:21+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", - "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, "suggest": { @@ -8492,7 +8309,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -8529,7 +8346,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" }, "funding": [ { @@ -8545,20 +8362,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -8573,7 +8390,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8611,7 +8428,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -8627,20 +8444,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.43", + "version": "v4.4.45", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "07e392f0ef78376d080d5353c081a5e5704835bd" + "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/07e392f0ef78376d080d5353c081a5e5704835bd", - "reference": "07e392f0ef78376d080d5353c081a5e5704835bd", + "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", "shasum": "" }, "require": { @@ -8682,7 +8499,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.43" + "source": "https://github.com/symfony/yaml/tree/v4.4.45" }, "funding": [ { @@ -8698,7 +8515,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T08:31:17+00:00" + "time": "2022-08-02T15:47:23+00:00" }, { "name": "theseer/tokenizer", @@ -8750,76 +8567,18 @@ ], "time": "2021-07-28T10:34:58+00:00" }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "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-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/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - }, { "name": "yiisoft/yii2-debug", - "version": "2.1.19", + "version": "2.1.22", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-debug.git", - "reference": "84d20d738b0698298f851fcb6fc25e748d759223" + "reference": "c0fa388c56b64edfb92987fdcc37d7a0243170d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/84d20d738b0698298f851fcb6fc25e748d759223", - "reference": "84d20d738b0698298f851fcb6fc25e748d759223", + "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/c0fa388c56b64edfb92987fdcc37d7a0243170d7", + "reference": "c0fa388c56b64edfb92987fdcc37d7a0243170d7", "shasum": "" }, "require": { @@ -8896,7 +8655,7 @@ "type": "tidelift" } ], - "time": "2022-04-05T20:35:14+00:00" + "time": "2022-11-18T17:29:27+00:00" }, { "name": "yiisoft/yii2-faker", diff --git a/console/controllers/AssociateController.php b/console/controllers/AssociateController.php new file mode 100644 index 00000000..f6f23ffb --- /dev/null +++ b/console/controllers/AssociateController.php @@ -0,0 +1,100 @@ +select(['id','name'])->asArray()->all(); + echo Table::widget([ + 'headers' => ['id', 'name'], + 'rows' => $warehouses + ]); + + } + + if ($type == 'customer') { + $customers = Customer::find()->select(['id','name'])->asArray()->all(); + echo Table::widget([ + 'headers' => ['id', 'name'], + 'rows' => $customers + ]); + } + + return ExitCode::OK; + } + + /** + * Associates Orders with a Warehouse identifier + * + * @return void + */ + public function actionWarehouse($warehouseID, $customerID) + { + $warehouse = Warehouse::findOne($warehouseID); + $customer = Customer::findOne($customerID); + + if ($warehouse == null || $customer == null) { + $this->stderr("No matching warehouse or customer\n", Console::FG_RED); + $this->stderr("yii associate/list", Console::FG_GREEN); + $this->stderr(" <- should get you what you need\n"); + + return ExitCode::UNSPECIFIED_ERROR; + } + + $this->stdout("Warehouse: " . $warehouse->name . "\n", Console::FG_YELLOW); + $this->stdout("Customer: " . $customer->name . "\n" , Console::FG_YELLOW); + + if ($this->confirm("Are you sure you want to associate ALL ORDERS from the above customer with the selected warehouse?\n")) { + $this->stdout("You got it boss...\n\n", Console::FG_GREEN); + $query = Order::find() + ->where(['customer_id' => $customer->id]); + + $this->stdout("Total orders to convert: " . $query->count() . "\n"); + + foreach ($query->batch() as $orders) { + foreach ($orders as $order) { + $order->warehouse_id = $warehouse->id; + if (!$order->save()) { + $this->stderr("\nFailed to save ID: $order->id\n", Console::FG_RED); + } else { + $this->stdout("."); + } + } + } + $this->stdout("\n\n"); + } + + return ExitCode::OK; + } +} \ No newline at end of file diff --git a/console/migrations/m221230_194520_create_warehouse_table.php b/console/migrations/m221230_194520_create_warehouse_table.php new file mode 100644 index 00000000..c1156d27 --- /dev/null +++ b/console/migrations/m221230_194520_create_warehouse_table.php @@ -0,0 +1,70 @@ +createTable('{{%warehouse}}', [ + 'id' => $this->primaryKey(), + 'name' => $this->string()->notNull(), + 'created_at' => $this->integer()->notNull(), + 'updated_at' => $this->integer()->notNull(), + ]); + + $this->createTable('{{%user_warehouse}}', [ + 'id' => $this->primaryKey(), + 'warehouse_id' => $this->integer()->notNull(), + 'user_id' => $this->integer()->notNull(), + ]); + + $this->addColumn('{{%orders}}', 'warehouse_id', $this->integer()->null()); + + // creates index for column `warehouse_id` + $this->createIndex( + '{{%idx-orders-warehouse_id}}', + '{{%orders}}', + 'warehouse_id' + ); + + // add foreign key for table `{{%orders}}` + $this->addForeignKey( + '{{%fk-orders-warehouse_id}}', + '{{%orders}}', + 'warehouse_id', + '{{%warehouse}}', + 'id', + 'RESTRICT' + ); + + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + // drops foreign key for table `{{%orders}}` + $this->dropForeignKey( + '{{%fk-orders-warehouse_id}}', + '{{%orders}}' + ); + + // drops index for column `warehouse_id` + $this->dropIndex( + '{{%idx-orders-warehouse_id}}', + '{{%orders}}' + ); + + $this->dropColumn('{{%orders}}', 'warehouse_id'); + $this->dropTable('{{%warehouse}}'); + $this->dropTable('{{%user_warehouse}}'); + } +} diff --git a/console/migrations/m230109_011242_add_type_to_user_table.php b/console/migrations/m230109_011242_add_type_to_user_table.php new file mode 100644 index 00000000..f0b59f3f --- /dev/null +++ b/console/migrations/m230109_011242_add_type_to_user_table.php @@ -0,0 +1,28 @@ +addColumn('{{%user}}', 'type', $this->integer(11) + ->notNull() + ->defaultValue(0) + ->comment('User type association - 0 = customer, 1 = warehouse')); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropColumn('{{%user}}', 'type'); + } +} diff --git a/docker-compose.yml b/docker-compose.yml index 9a0d5766..c1623608 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,16 +22,6 @@ services: # Mount source-code for development - ./:/app - shopify: - build: shopify - ports: - - 30004:80 - volumes: - # Re-use local composer cache via host-volume - - ~/.composer-docker/cache:/root/.composer/cache:delegated - # Mount source-code for development - - ./:/app - mysql: image: mysql:8 environment: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 1e2e433b..7e2c960a 100755 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,4 +1,4 @@ -FROM cgsmith105/yii2-php:8.0-apache +FROM yiisoftware/yii2-php:8.1-apache # Change document root for Apache RUN sed -i -e 's|/app/web|/app/frontend/web|g' /etc/apache2/sites-available/000-default.conf diff --git a/frontend/controllers/WarehouseController.php b/frontend/controllers/WarehouseController.php new file mode 100644 index 00000000..f67470d4 --- /dev/null +++ b/frontend/controllers/WarehouseController.php @@ -0,0 +1,140 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['POST'], + ], + ], + 'access' => [ + 'class' => AccessControl::class, + 'ruleConfig' => [ + 'class' => AccessRuleFilter::class, + ], + 'rules' => [ + [ + 'allow' => true, + 'roles' => ['admin'], + ], + ], + ], + ]; + } + + /** + * Lists all Warehouse models. + * @return mixed + */ + public function actionIndex() + { + $dataProvider = new ActiveDataProvider([ + 'query' => Warehouse::find(), + ]); + + return $this->render('index', [ + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single Warehouse model. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new Warehouse model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new Warehouse(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('create', [ + 'model' => $model, + ]); + } + + /** + * Updates an existing Warehouse model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('update', [ + 'model' => $model, + ]); + } + + /** + * Deletes an existing Warehouse model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the Warehouse model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return Warehouse the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = Warehouse::findOne($id)) !== null) { + return $model; + } + + throw new NotFoundHttpException('The requested page does not exist.'); + } +} diff --git a/frontend/controllers/user/AdminController.php b/frontend/controllers/user/AdminController.php index c166dd9b..a2c40a7c 100755 --- a/frontend/controllers/user/AdminController.php +++ b/frontend/controllers/user/AdminController.php @@ -2,9 +2,11 @@ namespace frontend\controllers\user; +use common\models\Warehouse; use Da\User\Controller\AdminController as BaseAdminController; use frontend\models\Customer; use frontend\models\search\CustomerSearch; +use frontend\models\search\WarehouseSearch; use Yii; use yii\helpers\ArrayHelper; use yii\helpers\Url; @@ -46,6 +48,58 @@ public function behaviors() ]); } + /** + * Shows a list of all customers and allows admin to associate one or many customers to user. + * + * @param int $id User ID + * + * @return string + * @throws \yii\web\NotFoundHttpException + */ + public function actionAssociateWarehouses($id) + { + Url::remember('', 'actions-redirect'); + $user = $this->findModel($id); + + $searchModel = new WarehouseSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('_associate-warehouses', [ + 'user' => $user, + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Link/Unlink the user to/from given customer. + * + * @param int $id User ID + * @param int $wid Warehouse ID + * + * @todo pretty much the same as linkCustomer() just needs to refactor if needed + * @return Response + * @throws \yii\web\NotFoundHttpException + */ + public function actionLinkWarehouse($id, $wid) + { + $user = $this->findModel((int)$id); + if (($warehouse = Warehouse::findOne((int)$wid)) === null) { + throw new NotFoundHttpException('Warehouse does not exist'); + } + + if ($warehouse->isLinkedToUser($user->id)) { + $user->unlink('warehouses', $warehouse, true); + Yii::$app->getSession()->setFlash('success', Yii::t('usuario', 'Warehouse has been unlinked.')); + } else { + $user->link('warehouses', $warehouse); + Yii::$app->getSession()->setFlash('success', Yii::t('usuario', 'Warehouse has been linked.')); + } + + return $this->redirect(Url::previous('actions-redirect')); + } + + /** * Shows a list of all customers and allows admin to associate one or many customers to user. * diff --git a/frontend/models/Customer.php b/frontend/models/Customer.php index 5acaff0b..15ea4023 100755 --- a/frontend/models/Customer.php +++ b/frontend/models/Customer.php @@ -36,6 +36,7 @@ public function getUsers() ->viaTable(UserCustomer::tableName(), ['customer_id' => 'id']); } + /** * Get UserCustomer * diff --git a/frontend/models/User.php b/frontend/models/User.php index c532390f..32587fcd 100755 --- a/frontend/models/User.php +++ b/frontend/models/User.php @@ -2,7 +2,12 @@ namespace frontend\models; +use common\models\UserWarehouse; +use common\models\Warehouse; +use Da\User\Model\User as BaseUser; +use Da\User\Event\UserEvent; use Stripe\Customer; +use yii\db\Query; use yii\helpers\ArrayHelper; /** @@ -12,9 +17,34 @@ * * @property Customer[] $customers * @property integer $customer_id + * @property integer $type */ class User extends \common\models\User { + public const TYPE_CUSTOMER = 0; + public const TYPE_WAREHOUSE = 1; + + public function init() + { + $this->on(UserEvent::EVENT_BEFORE_REGISTER, function () { + $this->username = $this->email; + }); + + $this->on(UserEvent::EVENT_BEFORE_CREATE, function () { + $this->username = $this->email; + }); + + parent::init(); + } + + public function rules() + { + $rules = parent::rules(); + $rules['customerIdRequired'] = ['customer_id', 'required']; + $rules['userTypeRequired'] = ['type', 'required']; + unset($rules['usernameRequired']); + return $rules; + } /** * Get associated customers @@ -28,6 +58,12 @@ public function getCustomers() ->viaTable(UserCustomer::tableName(), ['user_id' => 'id']); } + public function getWarehouses() + { + return $this->hasMany(Warehouse::class, ['id' => 'warehouse_id']) + ->viaTable(UserWarehouse::tableName(), ['user_id' => 'id']); + } + /** * Returns list of customers as array [id=>name] * @@ -39,11 +75,28 @@ public function getCustomers() */ public function getCustomerList($keyField = 'id', $valueField = 'name') { - $data = $this->getCustomers()->orderBy([$valueField => SORT_ASC])->all(); + if ($this->isWarehouseType()) { + $data = Order::find() + ->select('customer_id') + ->distinct() + ->where(['in', 'warehouse_id', $this->getWarehouseIds()]) + ->all(); + $data = \frontend\models\Customer::find() + ->where(['id' => ArrayHelper::getColumn($data, 'customer_id')]) + ->orderBy([$valueField => SORT_ASC]) + ->all(); + } else { + $data = $this->getCustomers()->orderBy([$valueField => SORT_ASC])->all(); + } return ArrayHelper::map($data, $keyField, $valueField); } + public function getTypes() + { + return [self::TYPE_CUSTOMER => 'Customer', self::TYPE_WAREHOUSE => 'Warehouse']; + } + /** * Return the customer stripe id token from the first model * @@ -75,6 +128,26 @@ public function isDirectCustomer() return $customer ? $customer->direct : false; } + public function isWarehouseType() + { + return ($this->type === self::TYPE_WAREHOUSE); + } + + public function isCustomerType() + { + return ($this->type === self::TYPE_CUSTOMER); + } + + /** + * Return the customer id + * + * @return string + * @throws \yii\base\InvalidConfigException + */ + public function getCustomerId() + { + return $this->customer_id; + } /** * Get array of associated customers IDs @@ -90,4 +163,19 @@ public function getCustomerIds() ->all(), 'customer_id'); } + + /** + * Get array of associated customers IDs + * + * @return array + */ + public function getWarehouseIds() + { + return ArrayHelper::getColumn( + $this->hasMany(UserWarehouse::class, ['user_id' => 'id']) + ->select('warehouse_id') + ->asArray() + ->all(), + 'warehouse_id'); + } } \ No newline at end of file diff --git a/frontend/models/search/OrderSearch.php b/frontend/models/search/OrderSearch.php index 7257da75..4dd37445 100755 --- a/frontend/models/search/OrderSearch.php +++ b/frontend/models/search/OrderSearch.php @@ -123,9 +123,9 @@ public function search($params) $query->byStatus($this->status_id); } // If user is not admin, then show orders that ONLY belong to current user - if (!Yii::$app->user->identity->isAdmin) { - $query->forCustomers(Yii::$app->user->identity->customerIds); - } + //if (!Yii::$app->user->identity->isAdmin) { + // $query->forCustomers(Yii::$app->user->identity->customerIds); + //} } $dataProvider = new ActiveDataProvider([ diff --git a/frontend/models/search/WarehouseSearch.php b/frontend/models/search/WarehouseSearch.php new file mode 100755 index 00000000..1fb1cef9 --- /dev/null +++ b/frontend/models/search/WarehouseSearch.php @@ -0,0 +1,69 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + // grid filtering conditions + $query->andFilterWhere([ + 'id' => $this->id, + ]); + + $query->andFilterWhere(['like', 'name', $this->name]); + + return $dataProvider; + } +} diff --git a/frontend/runtime/.gitignore b/frontend/runtime/.gitignore deleted file mode 100755 index c96a04f0..00000000 --- a/frontend/runtime/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore \ No newline at end of file diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php index f0999447..4320f007 100755 --- a/frontend/views/layouts/main.php +++ b/frontend/views/layouts/main.php @@ -161,6 +161,7 @@ ['label' => 'Integrations', 'url' => ['/integration']], ['label' => 'Behaviors', 'url' => ['/behavior']], ['label' => 'Jobs', 'url' => ['/monitor/jobs']], + ['label' => 'Warehouses', 'url' => ['/warehouse']], ], ]; } diff --git a/frontend/views/order/_form.php b/frontend/views/order/_form.php index 8a101efd..53665f5f 100755 --- a/frontend/views/order/_form.php +++ b/frontend/views/order/_form.php @@ -63,6 +63,15 @@ field($model->order, 'customer_id') ->dropdownList($customers, ['prompt' => ' Please select']) ?> + + user->identity->getWarehouses() && + $warehouses = \common\models\Warehouse::getList()) { + echo $form->field($model->order, 'warehouse_id') + ->dropdownList($warehouses, ['prompt' => ' Please select']); + } + ?> + field($model->order, 'tracking')->textInput(['maxlength' => true]) ?> field($model->order, 'customer_reference')->textInput(['maxlength' => true]) ?> diff --git a/frontend/views/order/index.php b/frontend/views/order/index.php index bb60ece8..28deda2b 100755 --- a/frontend/views/order/index.php +++ b/frontend/views/order/index.php @@ -162,7 +162,9 @@ [ 'attribute' => 'notes', 'value' => function ($model) { - return yii\helpers\StringHelper::truncate($model->notes, 40); + if (!empty($model->notes)) { + return yii\helpers\StringHelper::truncate($model->notes, 40); + } } ], [ diff --git a/frontend/views/order/update.php b/frontend/views/order/update.php index 8d279f17..60b4fa38 100755 --- a/frontend/views/order/update.php +++ b/frontend/views/order/update.php @@ -10,6 +10,7 @@ /* @var $services array List of carrier services */ /* @var $states array List of states */ /* @var $countries array List of countries */ +/* @var $warehouses array List of warehouses */ $this->title = 'Update Order: ' . $model->order->id; $this->params['breadcrumbs'][] = ['label' => 'Orders', 'url' => ['index']]; @@ -21,13 +22,14 @@

title) ?>

render('_form', [ - 'model' => $model, - 'customers' => $customers, - 'statuses' => $statuses, - 'carriers' => $carriers, - 'services' => $services, - 'states' => $states, - 'countries' => $countries, + 'model' => $model, + 'customers' => $customers, + 'statuses' => $statuses, + 'carriers' => $carriers, + 'services' => $services, + 'states' => $states, + 'countries' => $countries, + 'warehouses' => $warehouses, ]) ?> diff --git a/frontend/views/order/view.php b/frontend/views/order/view.php index a7392478..6445597c 100755 --- a/frontend/views/order/view.php +++ b/frontend/views/order/view.php @@ -115,6 +115,11 @@ return $carrier . ' ' . $service; }, ], + [ + 'attribute' => 'warehouse.name', + 'label' => 'Warehouse', + 'visible' => !$simple, + ], [ 'attribute' => 'origin', 'visible' => !$simple, diff --git a/frontend/views/user/admin/_associate-warehouses.php b/frontend/views/user/admin/_associate-warehouses.php new file mode 100755 index 00000000..68f8f146 --- /dev/null +++ b/frontend/views/user/admin/_associate-warehouses.php @@ -0,0 +1,68 @@ +id; +?> + +beginContent('@Da/User/resources/views/admin/update.php', ['user' => $user]) ?> + + [ + 'class' => 'alert-info alert-dismissible', + ], + 'body' => Yii::t('usuario', 'You can link multiple warehouses by using the list below'), +]) ?> + +

Warehouses

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + 'id', + 'name', + [ + 'header' => Yii::t('usuario', 'Association'), + 'value' => function ($model) use ($userId) { + if ($model->isLinkedToUser($userId)) { + return Html::a( + Yii::t('usuario', 'Unlink'), + ['link-warehouse', 'id' => $userId, 'wid' => $model->id], + [ + 'class' => 'btn btn-xs btn-danger btn-block', + 'data-method' => 'post', + 'data-confirm' => Yii::t( + 'usuario', + 'Are you sure you want to unlink user from this warehouse?' + ), + ] + ); + } else { + return Html::a( + Yii::t('usuario', 'Link'), + ['link-warehouse', 'id' => $userId, 'wid' => $model->id], + [ + 'class' => 'btn btn-xs btn-success btn-block', + 'data-method' => 'post', + ] + ); + } + }, + 'format' => 'raw', + ], + ], +]); ?> + +endContent() ?> diff --git a/frontend/views/user/admin/_user.php b/frontend/views/user/admin/_user.php index 67cfbcd8..dfb7d51a 100755 --- a/frontend/views/user/admin/_user.php +++ b/frontend/views/user/admin/_user.php @@ -7,12 +7,10 @@ * @var yii\widgets\ActiveForm $form * @var frontend\models\User $user */ +$customerList = \yii\helpers\ArrayHelper::map(\frontend\models\Customer::find()->all(), 'id', 'name'); ?> -field($user, 'email')->textInput(['maxlength' => 255]) ?> -field($user, 'password')->passwordInput() ?> -all(), 'id', 'name' -); -echo $form->field($user, 'customer_id')->dropDownList($array, ['prompt'=> 'Select']) ?> +field($user, 'email')->textInput(['maxlength' => 255]); ?> +field($user, 'password')->passwordInput(); ?> +field($user, 'customer_id')->dropDownList($customerList, ['prompt'=> 'Select']); ?> +field($user, 'type')->dropDownList($user->getTypes(), ['prompt'=> 'Select']); ?> diff --git a/frontend/views/user/admin/update.php b/frontend/views/user/admin/update.php index 4c4f4fc3..32a11763 100755 --- a/frontend/views/user/admin/update.php +++ b/frontend/views/user/admin/update.php @@ -52,6 +52,10 @@ 'label' => Yii::t('usuario', 'Associate customers'), 'url' => ['/user/admin/associate-customers', 'id' => $user->id] ], + [ + 'label' => Yii::t('usuario', 'Associate warehouses'), + 'url' => ['/user/admin/associate-warehouses', 'id' => $user->id] + ], '
', [ 'label' => Yii::t('usuario', 'Confirm'), diff --git a/frontend/views/warehouse/_form.php b/frontend/views/warehouse/_form.php new file mode 100644 index 00000000..9354fc9c --- /dev/null +++ b/frontend/views/warehouse/_form.php @@ -0,0 +1,23 @@ + + +
+ + + + field($model, 'name')->textInput(['maxlength' => true]) ?> + +
+ 'btn btn-success']) ?> +
+ + + +
diff --git a/frontend/views/warehouse/create.php b/frontend/views/warehouse/create.php new file mode 100644 index 00000000..b3f35fe9 --- /dev/null +++ b/frontend/views/warehouse/create.php @@ -0,0 +1,20 @@ +title = 'Create Warehouse'; +$this->params['breadcrumbs'][] = ['label' => 'Warehouses', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/frontend/views/warehouse/index.php b/frontend/views/warehouse/index.php new file mode 100644 index 00000000..c22cfaa5 --- /dev/null +++ b/frontend/views/warehouse/index.php @@ -0,0 +1,31 @@ +title = 'Warehouses'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'columns' => [ + 'id', + 'name', + 'created_at:datetime', + 'updated_at:datetime', + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> +
diff --git a/frontend/views/warehouse/update.php b/frontend/views/warehouse/update.php new file mode 100644 index 00000000..84065738 --- /dev/null +++ b/frontend/views/warehouse/update.php @@ -0,0 +1,21 @@ +title = 'Update Warehouse: ' . $model->name; +$this->params['breadcrumbs'][] = ['label' => 'Warehouses', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Update'; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/frontend/views/warehouse/view.php b/frontend/views/warehouse/view.php new file mode 100644 index 00000000..863cfd86 --- /dev/null +++ b/frontend/views/warehouse/view.php @@ -0,0 +1,39 @@ +title = $model->name; +$this->params['breadcrumbs'][] = ['label' => 'Warehouses', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +\yii\web\YiiAsset::register($this); +?> +
+ +

title) ?>

+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'name', + 'created_at:datetime', + 'updated_at:datetime', + ], + ]) ?> + +