diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 969043bff51..4b568ad7d0c 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ -open_collective: openmage +github: sreichel diff --git a/.github/workflows/gitpod-comment.yml b/.github/workflows/gitpod-comment.yml new file mode 100644 index 00000000000..a77ac01c4e4 --- /dev/null +++ b/.github/workflows/gitpod-comment.yml @@ -0,0 +1,28 @@ +name: Add Gitpod link + +on: + pull_request_target: + types: [opened] + +jobs: + comment-in-pr: + + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + repository-projects: write + id-token: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + - uses: actions/github-script@v7 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: '[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/${{github.repository}}/pull/${{github.event.number}})' + }) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index ccf6efe4e53..1cc4bca7e70 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -8,6 +8,7 @@ name: Labeler on: pull_request_target: + workflow_call: # Allow manually triggering the workflow. workflow_dispatch: diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Severity.php b/app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Severity.php index 1f315fe5c03..ca267aeb0f2 100644 --- a/app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Severity.php +++ b/app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Severity.php @@ -44,8 +44,8 @@ public function render(Varien_Object $row) $class = 'minor'; $value = $notice->getSeverities(Mage_AdminNotification_Model_Inbox::SEVERITY_MINOR); break; - default: case Mage_AdminNotification_Model_Inbox::SEVERITY_NOTICE: + default: $class = 'notice'; $value = $notice->getSeverities(Mage_AdminNotification_Model_Inbox::SEVERITY_NOTICE); break; diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Sales/Coupons/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Sales/Coupons/Grid.php index 26fcc70afa3..d140697f8de 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Sales/Coupons/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Sales/Coupons/Grid.php @@ -151,7 +151,7 @@ protected function _prepareColumns() * * @param Mage_SalesRule_Model_Resource_Report_Collection $collection * @param Varien_Object $filterData - * @return Mage_Adminhtml_Block_Report_Grid_Abstract + * @return $this */ protected function _addCustomFilter($collection, $filterData) { diff --git a/app/code/core/Mage/Api/Model/Wsdl/Config/Element.php b/app/code/core/Mage/Api/Model/Wsdl/Config/Element.php index ace6e7e7ec3..1a91b1a301f 100644 --- a/app/code/core/Mage/Api/Model/Wsdl/Config/Element.php +++ b/app/code/core/Mage/Api/Model/Wsdl/Config/Element.php @@ -161,7 +161,7 @@ public function getAttributes($source, $namespace = null) /** * @deprecated due to conflict with PHP8 parent class update * @param Varien_Simplexml_Element $source - * @return array + * @return array|RecursiveIterator|null */ #[\ReturnTypeWillChange] public function getChildren($source = null) @@ -174,7 +174,7 @@ public function getChildren($source = null) * Return children of all namespaces * * @param Varien_Simplexml_Element $source - * @return array + * @return array|RecursiveIterator|null */ protected static function _getChildren($source) { diff --git a/app/code/core/Mage/Payment/etc/config.xml b/app/code/core/Mage/Payment/etc/config.xml index ff1b79c9b22..d0231127c3d 100644 --- a/app/code/core/Mage/Payment/etc/config.xml +++ b/app/code/core/Mage/Payment/etc/config.xml @@ -10,7 +10,7 @@ * @category Mage * @package Mage_Payment * @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com) - * @copyright Copyright (c) 2022 The OpenMage Contributors (https://www.openmage.org) + * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org) * @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) */ --> @@ -158,6 +158,15 @@ + + 0 + AE,VI,MC,DI + payment/method_ccsave + pending + Credit Card (saved) + 0 + offline + 1 payment/method_checkmo diff --git a/composer.json b/composer.json index ccebd635525..408ef6c49c6 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "openmage/magento-lts", + "name": "openmage-strict/openmage-future", "description": "A fork of Magento-1 that is accepting bug fixes (backward compatible, drop in replacement for official Magento)", "homepage": "https://www.openmage.org/", "license": [ @@ -30,6 +30,7 @@ "colinmollenhour/magento-redis-session": "^3.2.0", "components/jquery": "^3.7.1", "cweagans/composer-patches": "^1.7", + "empiricompany/openmage_ignition": "^1.5", "ezyang/htmlpurifier": "^4.17", "flowjs/flowjs": "dev-master", "magento-hackathon/magento-composer-installer": "^3.1 || ^2.1 || ^4.0", diff --git a/composer.lock b/composer.lock index 5dbdfcc5a09..9994f131717 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,77 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "eec662dd6fa517fe6e35f333e5a4a071", + "content-hash": "acd54b6e78455c66f7d1a1a50a2c0e29", "packages": [ + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, { "name": "colinmollenhour/cache-backend-redis", "version": "1.17.1", @@ -278,6 +347,97 @@ }, "time": "2022-12-20T22:53:13+00:00" }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, { "name": "eloquent/enumeration", "version": "5.1.1", @@ -334,6 +494,47 @@ "abandoned": true, "time": "2015-11-03T22:21:38+00:00" }, + { + "name": "empiricompany/openmage_ignition", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/empiricompany/openmage_ignition.git", + "reference": "4e89eedc5bcbde918d2b012ec03608cb2e8272e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/empiricompany/openmage_ignition/zipball/4e89eedc5bcbde918d2b012ec03608cb2e8272e7", + "reference": "4e89eedc5bcbde918d2b012ec03608cb2e8272e7", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "magento-hackathon/magento-composer-installer": "*", + "php": ">=8.0 <8.5", + "spatie/ignition": "^1.15.1" + }, + "suggest": { + "openai-php/client": "OpenAI API client for PHP" + }, + "type": "magento-module", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "description": "OpenMage spatie-ignition integration for OpenMage", + "homepage": "https://github.com/empiricompany/openmage_ignition", + "keywords": [ + "magento", + "magento1", + "openmage" + ], + "support": { + "issues": "https://github.com/empiricompany/openmage_ignition/issues", + "source": "https://github.com/empiricompany/openmage_ignition/tree/1.5.2" + }, + "time": "2025-04-28T11:29:00+00:00" + }, { "name": "ezyang/htmlpurifier", "version": "v4.18.0", @@ -487,6 +688,320 @@ }, "time": "2020-11-08T09:03:06+00:00" }, + { + "name": "illuminate/collections", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/collections.git", + "reference": "48de3d6bc6aa779112ddcb608a3a96fc975d89d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/collections/zipball/48de3d6bc6aa779112ddcb608a3a96fc975d89d8", + "reference": "48de3d6bc6aa779112ddcb608a3a96fc975d89d8", + "shasum": "" + }, + "require": { + "illuminate/conditionable": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/macroable": "^10.0", + "php": "^8.1" + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^6.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-11-21T14:02:44+00:00" + }, + { + "name": "illuminate/conditionable", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/conditionable.git", + "reference": "3ee34ac306fafc2a6f19cd7cd68c9af389e432a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/conditionable/zipball/3ee34ac306fafc2a6f19cd7cd68c9af389e432a5", + "reference": "3ee34ac306fafc2a6f19cd7cd68c9af389e432a5", + "shasum": "" + }, + "require": { + "php": "^8.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Conditionable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-11-21T14:02:44+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "f90663a69f926105a70b78060a31f3c64e2d1c74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/f90663a69f926105a70b78060a31f3c64e2d1c74", + "reference": "f90663a69f926105a70b78060a31f3c64e2d1c74", + "shasum": "" + }, + "require": { + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/simple-cache": "^1.0|^2.0|^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-11-21T14:02:44+00:00" + }, + { + "name": "illuminate/macroable", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/macroable.git", + "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", + "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Macroable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-06-05T12:46:42+00:00" + }, + { + "name": "illuminate/pipeline", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/pipeline.git", + "reference": "3030a131e5e9cb18c9a826428fcffc076df9dcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/pipeline/zipball/3030a131e5e9cb18c9a826428fcffc076df9dcd7", + "reference": "3030a131e5e9cb18c9a826428fcffc076df9dcd7", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0", + "illuminate/support": "^10.0", + "php": "^8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Pipeline\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Pipeline package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-11-21T14:02:44+00:00" + }, + { + "name": "illuminate/support", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "6d09b480d34846245d9288f4dcefb17a73ce6e6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/6d09b480d34846245d9288f4dcefb17a73ce6e6a", + "reference": "6d09b480d34846245d9288f4dcefb17a73ce6e6a", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^2.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-mbstring": "*", + "illuminate/collections": "^10.0", + "illuminate/conditionable": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/macroable": "^10.0", + "nesbot/carbon": "^2.67", + "php": "^8.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (^10.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.6).", + "ramsey/uuid": "Required to use Str::uuid() (^4.7).", + "symfony/process": "Required to use the composer class (^6.2).", + "symfony/uid": "Required to use Str::ulid() (^6.2).", + "symfony/var-dumper": "Required to use the dd function (^6.2).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-12-10T14:47:55+00:00" + }, { "name": "justinrainbow/json-schema", "version": "5.3.0", @@ -665,28 +1180,135 @@ "reference": "e3f20d04fdf6d590019c319fd96a1a9fc02325e1", "shasum": "" }, - "type": "library", + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "TinyMCE Community" + } + ], + "description": "Languages for TinyMCE 4, 5 and 6", + "homepage": "https://github.com/mklkj/tinymce-i18n", + "keywords": [ + "i18n", + "languages", + "tinymce" + ], + "support": { + "issues": "https://github.com/mklkj/tinymce-i18n/issues", + "source": "https://github.com/mklkj/tinymce-i18n/tree/25.2.3" + }, + "time": "2025-02-03T10:42:25+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.73.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "<6", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "TinyMCE Community" + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" } ], - "description": "Languages for TinyMCE 4, 5 and 6", - "homepage": "https://github.com/mklkj/tinymce-i18n", + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", "keywords": [ - "i18n", - "languages", - "tinymce" + "date", + "datetime", + "time" ], "support": { - "issues": "https://github.com/mklkj/tinymce-i18n/issues", - "source": "https://github.com/mklkj/tinymce-i18n/tree/25.2.3" + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" }, - "time": "2025-02-03T10:42:25+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-01-08T20:10:23+00:00" }, { "name": "nnnick/chartjs", @@ -1174,6 +1796,54 @@ ], "time": "2024-12-14T21:12:59+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -1227,6 +1897,57 @@ }, "time": "2021-11-05T16:47:00+00:00" }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, { "name": "sabberworm/php-css-parser", "version": "v8.8.0", @@ -1342,20 +2063,309 @@ "include-path": [ "library/" ], - "license": [ - "BSD-3-Clause" + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1. The aim is to keep ZF1 working with the latest PHP versions", + "homepage": "https://github.com/Shardj/zf1-future/", + "keywords": [ + "ZF1", + "framework" + ], + "support": { + "issues": "https://github.com/Shardj/zf1-future/issues", + "source": "https://github.com/Shardj/zf1-future/tree/release-1.24.3" + }, + "time": "2025-04-11T16:49:34+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "9807de6b8fecfaa5b3d10650985f0348b02862b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/9807de6b8fecfaa5b3d10650985f0348b02862b2", + "reference": "9807de6b8fecfaa5b3d10650985f0348b02862b2", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "ext-json": "*", + "laravel/serializable-closure": "^1.3 || ^2.0", + "phpunit/phpunit": "^9.3 || ^11.4.3", + "spatie/phpunit-snapshot-assertions": "^4.2 || ^5.1.6", + "symfony/var-dumper": "^5.1 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.7.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2025-04-28T14:55:53+00:00" + }, + { + "name": "spatie/error-solutions", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", + "keywords": [ + "error-solutions", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2025-02-14T12:29:50+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0", + "spatie/backtrace": "^1.6.1", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/pest-plugin-snapshots": "^1.0|^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.10.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-14T13:42:06+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.15.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "31f314153020aee5af3537e507fef892ffbf8c85" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/31f314153020aee5af3537e507fef892ffbf8c85", + "reference": "31f314153020aee5af3537e507fef892ffbf8c85", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/error-solutions": "^1.0", + "spatie/flare-client-php": "^1.7", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0|^12.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } ], - "description": "Zend Framework 1. The aim is to keep ZF1 working with the latest PHP versions", - "homepage": "https://github.com/Shardj/zf1-future/", + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", "keywords": [ - "ZF1", - "framework" + "error", + "flare", + "laravel", + "page" ], "support": { - "issues": "https://github.com/Shardj/zf1-future/issues", - "source": "https://github.com/Shardj/zf1-future/tree/release-1.24.3" + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" }, - "time": "2025-04-11T16:49:34+00:00" + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-21T14:31:39+00:00" }, { "name": "symfony/console", @@ -1718,6 +2728,168 @@ ], "time": "2024-12-29T13:51:37+00:00" }, + { + "name": "symfony/http-foundation", + "version": "v6.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "3f0c7ea41db479383b81d436b836d37168fd5b99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3f0c7ea41db479383b81d436b836d37168fd5b99", + "reference": "3f0c7ea41db479383b81d436b836d37168fd5b99", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.4.21" + }, + "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": "2025-04-27T13:27:38+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "fec8aa5231f3904754955fad33c2db50594d22d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/fec8aa5231f3904754955fad33c2db50594d22d1", + "reference": "fec8aa5231f3904754955fad33c2db50594d22d1", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.4.21" + }, + "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": "2025-04-27T13:27:38+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.31.0", @@ -1875,6 +3047,89 @@ ], "time": "2024-09-09T11:45:10+00:00" }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.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": "2024-09-10T14:38:51+00:00" + }, { "name": "symfony/polyfill-intl-normalizer", "version": "v1.31.0", @@ -2478,7 +3733,68 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.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": "2024-09-09T12:04:04+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.20", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20", + "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.20" }, "funding": [ { @@ -2494,7 +3810,7 @@ "type": "tidelift" } ], - "time": "2024-09-09T12:04:04+00:00" + "time": "2025-03-10T17:11:00+00:00" }, { "name": "symfony/service-contracts", @@ -2665,6 +3981,101 @@ ], "time": "2024-11-13T13:31:12+00:00" }, + { + "name": "symfony/translation", + "version": "v6.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "bb92ea5588396b319ba43283a5a3087a034cb29c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/bb92ea5588396b319ba43283a5a3087a034cb29c", + "reference": "bb92ea5588396b319ba43283a5a3087a034cb29c", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.21" + }, + "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": "2025-04-07T19:02:30+00:00" + }, { "name": "symfony/translation-contracts", "version": "v3.5.1", @@ -2743,6 +4154,91 @@ ], "time": "2024-09-25T14:20:29+00:00" }, + { + "name": "symfony/var-dumper", + "version": "v6.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "22560f80c0c5cd58cc0bcaf73455ffd81eb380d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/22560f80c0c5cd58cc0bcaf73455ffd81eb380d5", + "reference": "22560f80c0c5cd58cc0bcaf73455ffd81eb380d5", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.4.21" + }, + "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": "2025-04-09T07:34:50+00:00" + }, { "name": "tinymce/tinymce", "version": "7.8.0", @@ -2801,6 +4297,80 @@ "source": "https://github.com/tinymce/tinymce-dist/tree/7.8.0" }, "time": "2025-04-09T02:06:27+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" } ], "packages-dev": [ @@ -7421,67 +8991,6 @@ ], "time": "2024-11-20T10:57:02+00:00" }, - { - "name": "symfony/process", - "version": "v6.4.20", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20", - "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.4.20" - }, - "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": "2025-03-10T17:11:00+00:00" - }, { "name": "symfony/stopwatch", "version": "v6.4.19", @@ -7748,5 +9257,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/dev/tests/unit/Base/ClassLoadingTest.php b/dev/tests/unit/Base/ClassLoadingTest.php new file mode 100644 index 00000000000..636cffd6ded --- /dev/null +++ b/dev/tests/unit/Base/ClassLoadingTest.php @@ -0,0 +1,42 @@ +assertSame($expectedResult, class_exists($class)); + } + + /** + * @return array> + */ + public function provideClassExistsData(): array + { + return [ + 'class exists #1' => [ + true, + 'Mage', + ], + 'class exists #2' => [ + true, + 'Mage_Eav_Model_Entity_Increment_Numeric', + ], + 'class not exists' => [ + false, + 'Mage_Non_Existent', + ], + ]; + } +} diff --git a/dev/tests/unit/Base/XmlFileLoadingTest.php b/dev/tests/unit/Base/XmlFileLoadingTest.php new file mode 100644 index 00000000000..d59866f3153 --- /dev/null +++ b/dev/tests/unit/Base/XmlFileLoadingTest.php @@ -0,0 +1,58 @@ +assertNotEmpty($simplexml->asXML()); + } + + /** + * + * @dataProvider provideXmlFiles + * @param string $filepath + * @return void + */ + public function testXmlReaderIsValid(string $filepath): void + { + /** @var XMLReader $xml */ + $xml = XMLReader::open($filepath); + $xml->setParserProperty(XMLReader::VALIDATE, true); + $this->assertTrue($xml->isValid()); + } + + /** + * @return string[][] + */ + public function provideXmlFiles(): array + { + // phpcs:ignore Ecg.Security.ForbiddenFunction.Found + $root = realpath(__DIR__ . '/../../../../') . '/'; + + return [ + 'file from vendor directory' => [ + $root . 'vendor/shardj/zf1-future/library/Zend/Locale/Data/es_419.xml', + ], + ]; + } +} diff --git a/dev/tests/unit/Mage/Core/Helper/StringTest.php b/dev/tests/unit/Mage/Core/Helper/StringTest.php new file mode 100644 index 00000000000..b52395e9cac --- /dev/null +++ b/dev/tests/unit/Mage/Core/Helper/StringTest.php @@ -0,0 +1,42 @@ +subject = Mage::helper('core/string'); + } + + public function testSubstr(): void + { + $resultString = $this->subject->substr(self::TEST_STRING, 2, 2); + $this->assertEquals('34', $resultString); + } + + public function testTruncate(): void + { + $resultString = $this->subject->truncate(self::TEST_STRING, 5, '...'); + $this->assertEquals('12...', $resultString); + } + + public function testStrlen(): void + { + $this->assertEquals(10, $this->subject->strlen(self::TEST_STRING)); + } +} diff --git a/dev/tests/unit/Mage/Downloadable/Helper/FileTest.php b/dev/tests/unit/Mage/Downloadable/Helper/FileTest.php new file mode 100644 index 00000000000..c6ba7d15806 --- /dev/null +++ b/dev/tests/unit/Mage/Downloadable/Helper/FileTest.php @@ -0,0 +1,70 @@ +subject = Mage::helper('downloadable/file'); + } + + /** + * @dataProvider provideGetFilePathData + * @param string $expectedResult + * @param string $path + * @param string|null $file + * @return void + */ + public function testGetFilePath(string $expectedResult, string $path, ?string $file): void + { + $result = $this->subject->getFilePath($path, $file); + $this->assertSame($expectedResult, $result); + } + + /** + * @return array> + */ + public function provideGetFilePathData(): array + { + return [ + 'strings path and strings file' => [ + 'path' . DS . 'file', + 'path', + 'file', + ], + 'strings path and strings file with slash' => [ + 'path' . DS . 'file', + 'path', + '/file', + ], + 'string path and null file' => [ + 'path' . DS, + 'path', + null, + ], + 'string path and empty file' => [ + 'path' . DS, + 'path', + '', + ], + 'strings path and strings file named 0' => [ + 'path' . DS . '0', + 'path', + '0', + ], + ]; + } +} diff --git a/dev/tests/unit/Varien/ObjectTest.php b/dev/tests/unit/Varien/ObjectTest.php new file mode 100644 index 00000000000..c348e3e1268 --- /dev/null +++ b/dev/tests/unit/Varien/ObjectTest.php @@ -0,0 +1,237 @@ +subject = new Varien_Object(); + } + + /** + * @dataProvider provideGetDataData + * @param mixed $expectedResult + * @param string $setKey + * @param mixed $setValue + * @param string $key + * @param string|int|null $index + * @return void + */ + public function testGetData($expectedResult, $setKey, $setValue, string $key, $index = null): void + { + $this->subject->setData($setKey, $setValue); + $this->assertEquals($expectedResult, $this->subject->getData($key, $index)); + } + + /** + * @return array|int|string>|int|stdClass|string|Varien_Object|null>> + */ + public function provideGetDataData(): array + { + return [ + 'empty_key' => [ + ['empty_key' => ['empty_value']], + 'empty_key', + ['empty_value'], + '', + ], + 'string' => [ + 'value', + 'string', + 'value', + 'string', + ], + 'int' => [ + 1, + 'int', + 1, + 'int', + ], + 'numeric' => [ + '1', + 'numeric', + '1', + 'numeric', + ], + 'array' => [ + ['string', 1], + 'array', + ['string', 1], + 'array', + ], + 'array_index_int' => [ + 'string', + 'array_index_int', + ['string', 1], + 'array_index_int', + 0, + ], + 'array_index_int_invalid' => [ + null, + 'array_index_int_invalid', + ['string', 1], + 'array_index_int_invalid', + 999, + ], + 'array_index_string' => [ + 1, + 'array_index_string', + ['string' => 'string', 'int' => 1], + 'array_index_string', + 'int', + ], + 'array_index_string_string' => [ + null, + 'array_index_string_string', + 'some_string', + 'array_index_string_string', + 'not-exists', + ], + 'array_index_string_varien_object' => [ + [], + 'array_index_string_varien_object', + new Varien_Object(['array' => []]), + 'array_index_string_varien_object', + 'array', + ], + 'array_index_string_std_class' => [ + null, + 'array_index_string_std_class', + new stdClass(), + 'array_index_string_std_class', + 'not-exists', + ], + 'array_nested' => [ + 1, + 'array_nested', + ['nested' => ['string' => 'string', 'int' => 1]], + 'array_nested/nested/int', + ], + 'array_nested_invalid_key' => [ + null, + 'array_nested', + ['nested' => ['string' => 'string', 'int' => 1]], + 'array_nested/nested/invalid_key', + ], + 'array_nested_empty_key' => [ + null, + 'array_nested', + ['nested' => ['string' => 'string', 'int' => '']], + 'array_nested/nested/', + ], + 'array_nested_string' => [ + 'some"\n"string', + 'array_nested_string', + ['nested' => 'some"\n"string'], + 'array_nested_string/nested', + ], + 'array_nested_varien_object' => [ + null, + 'array_nested_varien_object', + new Varien_Object(), + 'array_nested_varien_object/nested', + ], + 'array_nested_std_class' => [ + null, + 'array_nested_std_class', + new stdClass(), + 'array_nested_std_class/nested', + ], + 'array_nested_key_not_exists' => [ + null, + 'array_nested_key_not_exists', + ['nested' => ['string' => 'string', 'int' => 1]], + 'array_nested_key_not_exists_test/nested/int', + ], + ]; + } + + public function testToString(): void + { + $this->subject->setString1('open'); + $this->subject->setString2('mage'); + $this->assertSame('open, mage', $this->subject->toString()); + $this->assertSame('openmage', $this->subject->toString('{{string1}}{{string2}}')); + $this->assertSame('open', $this->subject->toString('{{string1}}{{string_not_exists}}')); + } + + public function testGetSetUnsData(): void + { + $this->assertTrue($this->subject->isEmpty()); + $this->subject->setABC('abc'); + $this->subject->setData('efg', 'efg'); + $this->subject->set123('123'); + $this->subject->setData('345', '345'); + $this->subject->setKeyAFirst('value_a_first'); + $this->subject->setData('key_a_2nd', 'value_a_2nd'); + $this->subject->setKeyA3rd('value_a_3rd'); + $this->subject->setData('left', 'over'); + $this->assertFalse($this->subject->isEmpty()); + + $this->assertSame('abc', $this->subject->getData('a_b_c')); + $this->assertSame('abc', $this->subject->getABC()); + $this->subject->unsetData('a_b_c'); + + $this->assertSame('efg', $this->subject->getData('efg')); + $this->assertSame('efg', $this->subject->getEfg()); + $this->subject->unsEfg(); + + $this->assertSame('123', $this->subject->getData('123')); + $this->assertSame('123', $this->subject->get123()); + $this->subject->uns123(); + + $this->subject->unsetData('345'); + + $this->assertSame('value_a_first', $this->subject->getData('key_a_first')); + $this->assertSame('value_a_first', $this->subject->getKeyAFirst()); + $this->subject->unsetData('key_a_first'); + + $this->assertSame('value_a_2nd', $this->subject->getData('key_a_2nd')); + $this->assertSame('value_a_2nd', $this->subject->getKeyA_2nd()); + $this->subject->unsetData('key_a_2nd'); + + $this->assertSame('value_a_3rd', $this->subject->getData('key_a3rd')); + $this->assertSame('value_a_3rd', $this->subject->getKeyA3rd()); + $this->subject->unsetData('key_a3rd'); + + $this->assertSame(['left' => 'over'], $this->subject->getData()); + + $this->subject->unsetData(); + $this->assertSame([], $this->subject->getData()); + $this->assertTrue($this->subject->isEmpty()); + + try { + /** @phpstan-ignore-next-line */ + $this->subject->notData(); + $this->fail('Invalid __call'); + } catch (Varien_Exception $exception) { + $this->assertStringStartsWith('Invalid method', $exception->getMessage()); + } + } + + public function testOffset(): void + { + $this->assertFalse($this->subject->offsetExists('off')); + + $this->subject->offsetSet('off', 'set'); + $this->assertTrue($this->subject->offsetExists('off')); + $this->assertSame('set', $this->subject->offsetGet('off')); + $this->assertSame(null, $this->subject->offsetGet('not-exists')); + + $this->subject->offsetUnset('off'); + $this->assertFalse($this->subject->offsetExists('off')); + } +} diff --git a/lib/Varien/Db/Adapter/Pdo/Mysql.php b/lib/Varien/Db/Adapter/Pdo/Mysql.php index 81564ed3bb4..8fc05ff6e45 100644 --- a/lib/Varien/Db/Adapter/Pdo/Mysql.php +++ b/lib/Varien/Db/Adapter/Pdo/Mysql.php @@ -1769,7 +1769,7 @@ public function getColumnCreateByDescribe($columnData) $options['unsigned'] = true; } if ($columnData['NULLABLE'] === false - && !($type == Varien_Db_Ddl_Table::TYPE_TEXT && isset($columnData['DEFAULT']) && strlen($columnData['DEFAULT']) != 0) + && !($type == Varien_Db_Ddl_Table::TYPE_TEXT && !is_null($columnData['DEFAULT']) && strlen($columnData['DEFAULT']) != 0) ) { $options['nullable'] = false; } @@ -1781,10 +1781,10 @@ public function getColumnCreateByDescribe($columnData) ) { $options['default'] = $this->quote($columnData['DEFAULT']); } - if (isset($columnData['SCALE']) && strlen($columnData['SCALE']) > 0) { + if (!is_null($columnData['SCALE']) && strlen($columnData['SCALE']) > 0) { $options['scale'] = $columnData['SCALE']; } - if (isset($columnData['PRECISION']) && strlen($columnData['PRECISION']) > 0) { + if (!is_null($columnData['PRECISION']) && strlen($columnData['PRECISION']) > 0) { $options['precision'] = $columnData['PRECISION']; } diff --git a/tests/sonar-project.properties b/tests/sonar-project.properties index 3e389ffc479..7cbf505fd4e 100644 --- a/tests/sonar-project.properties +++ b/tests/sonar-project.properties @@ -1,8 +1,8 @@ -sonar.projectKey=OpenMage_magento-lts -sonar.organization=OpenMage +sonar.projectKey=openmage-strict_openmage-future +sonar.organization=openmage-strict # This is the name and version displayed in the SonarCloud UI. -#sonar.projectName=openmage-lts +#sonar.projectName=openmage-future #sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.