From d51d5e6cd586c64f8c0a3cb6e43d6d1e6253e32f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jan 2025 14:53:53 +0200
Subject: [PATCH 01/98] Bump friendsofphp/php-cs-fixer from 3.67.1 to 3.68.1
(#4498)
Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.67.1 to 3.68.1.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.67.1...v3.68.1)
---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/composer.lock b/composer.lock
index fd33e6506f3..6da4b4c0a41 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3703,16 +3703,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.67.1",
+ "version": "v3.68.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "db533e9aeb19c33033b6a1b734c8de4f4ebaa7dc"
+ "reference": "b9db2b2ea3cdba7201067acee46f984ef2397cff"
},
"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/b9db2b2ea3cdba7201067acee46f984ef2397cff",
+ "reference": "b9db2b2ea3cdba7201067acee46f984ef2397cff",
"shasum": ""
},
"require": {
@@ -3794,7 +3794,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.1"
},
"funding": [
{
@@ -3802,7 +3802,7 @@
"type": "github"
}
],
- "time": "2025-01-12T12:20:47+00:00"
+ "time": "2025-01-17T09:20:36+00:00"
},
{
"name": "macopedia/phpstan-magento1",
@@ -7523,5 +7523,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.3.0"
}
From 031de28d0d31454cf9eee371f1b1a36901e647d2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jan 2025 14:56:26 +0200
Subject: [PATCH 02/98] Bump rector/rector from 2.0.6 to 2.0.7 (#4499)
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.0.6...2.0.7)
---
updated-dependencies:
- dependency-name: rector/rector
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/composer.lock b/composer.lock
index 6da4b4c0a41..40309e696b2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -5601,16 +5601,16 @@
},
{
"name": "rector/rector",
- "version": "2.0.6",
+ "version": "2.0.7",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "fa0cb009dc3df084bf549032ae4080a0481a2036"
+ "reference": "e70d681f6a0c361a63e6825897cd97746436f015"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/fa0cb009dc3df084bf549032ae4080a0481a2036",
- "reference": "fa0cb009dc3df084bf549032ae4080a0481a2036",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/e70d681f6a0c361a63e6825897cd97746436f015",
+ "reference": "e70d681f6a0c361a63e6825897cd97746436f015",
"shasum": ""
},
"require": {
@@ -5648,7 +5648,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.7"
},
"funding": [
{
@@ -5656,7 +5656,7 @@
"type": "github"
}
],
- "time": "2025-01-06T10:38:36+00:00"
+ "time": "2025-01-19T09:41:28+00:00"
},
{
"name": "sebastian/cli-parser",
From 00de7b5f4db329d16bff33ca497f288ebe369cd2 Mon Sep 17 00:00:00 2001
From: Ng Kiat Siong
Date: Wed, 22 Jan 2025 11:37:51 +0800
Subject: [PATCH 03/98] Fixed null deprecation in
Mage_Eav_Model_Attribute_Data_Text (#4500)
* Fixed null deprecation in Mage_Eav_Model_Attribute_Data_Text
* Update app/code/core/Mage/Eav/Model/Attribute/Data/Text.php
---------
Co-authored-by: Sven Reichel
---
app/code/core/Mage/Eav/Model/Attribute/Data/Text.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
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..9ec0bc91947 100644
--- a/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php
+++ b/app/code/core/Mage/Eav/Model/Attribute/Data/Text.php
@@ -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']) {
From fc9a8ca634323663f6f585727f28ac9ee9611f72 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Wed, 22 Jan 2025 07:17:12 +0100
Subject: [PATCH 04/98] Install flow.js (uploader) via composer (#4469)
---
.gitignore | 3 +
composer.json | 1 +
composer.lock | 44 +-
js/lib/uploader/flow.js | 1664 -----------------------------------
js/lib/uploader/flow.min.js | 2 -
5 files changed, 46 insertions(+), 1668 deletions(-)
delete mode 100644 js/lib/uploader/flow.js
delete mode 100644 js/lib/uploader/flow.min.js
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/composer.json b/composer.json
index 6ac2765161d..46490762b88 100644
--- a/composer.json
+++ b/composer.json
@@ -28,6 +28,7 @@
"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",
"openmage/composer-plugin": "^3.0",
diff --git a/composer.lock b/composer.lock
index 40309e696b2..bf0d7f207c3 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": "2d1749d4ce17be3ef71c37303bee881d",
"packages": [
{
"name": "colinmollenhour/cache-backend-redis",
@@ -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",
@@ -7495,7 +7533,9 @@
],
"aliases": [],
"minimum-stability": "dev",
- "stability-flags": [],
+ "stability-flags": {
+ "flowjs/flowjs": 20
+ },
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
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
From 096c65b6104fc8f89dcd65eede8eff8bd1b47ac3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Jan 2025 07:41:33 +0100
Subject: [PATCH 05/98] Bump squizlabs/php_codesniffer from 3.11.2 to 3.11.3
(#4509)
Bumps [squizlabs/php_codesniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) from 3.11.2 to 3.11.3.
- [Release notes](https://github.com/PHPCSStandards/PHP_CodeSniffer/releases)
- [Changelog](https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.11.2...3.11.3)
---
updated-dependencies:
- dependency-name: squizlabs/php_codesniffer
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/composer.lock b/composer.lock
index bf0d7f207c3..df4a03e2529 100644
--- a/composer.lock
+++ b/composer.lock
@@ -6834,16 +6834,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": {
@@ -6908,9 +6908,13 @@
{
"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",
From fb79cdfc54705c786601b4b69b603aef460e80a4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Jan 2025 07:42:13 +0100
Subject: [PATCH 06/98] Bump phpstan/phpstan from 2.1.1 to 2.1.2 (#4508)
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/phpstan/phpstan/releases)
- [Changelog](https://github.com/phpstan/phpstan/blob/2.1.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/2.1.1...2.1.2)
---
updated-dependencies:
- dependency-name: phpstan/phpstan
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/composer.lock b/composer.lock
index df4a03e2529..f359ce027da 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4533,16 +4533,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.1.1",
+ "version": "2.1.2",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7"
+ "reference": "7d08f569e582ade182a375c366cbd896eccadd3a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7",
- "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7d08f569e582ade182a375c366cbd896eccadd3a",
+ "reference": "7d08f569e582ade182a375c366cbd896eccadd3a",
"shasum": ""
},
"require": {
@@ -4587,7 +4587,7 @@
"type": "github"
}
],
- "time": "2025-01-05T16:43:48+00:00"
+ "time": "2025-01-21T14:54:06+00:00"
},
{
"name": "phpunit/php-code-coverage",
From 97807a12086a965ce07855e784ce26debcd59869 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Jan 2025 07:42:59 +0100
Subject: [PATCH 07/98] Bump tinymce/tinymce from 7.6.0 to 7.6.1 (#4507)
Bumps [tinymce/tinymce](https://github.com/tinymce/tinymce-dist) from 7.6.0 to 7.6.1.
- [Changelog](https://github.com/tinymce/tinymce-dist/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tinymce/tinymce-dist/compare/7.6.0...7.6.1)
---
updated-dependencies:
- dependency-name: tinymce/tinymce
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/composer.lock b/composer.lock
index f359ce027da..032e9c534cd 100644
--- a/composer.lock
+++ b/composer.lock
@@ -2722,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",
@@ -2775,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": [
From 488c02150da4249d7ce1555020d025240ae71949 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Jan 2025 07:44:26 +0100
Subject: [PATCH 08/98] Bump composer/composer from 2.8.4 to 2.8.5 (#4506)
Bumps [composer/composer](https://github.com/composer/composer) from 2.8.4 to 2.8.5.
- [Release notes](https://github.com/composer/composer/releases)
- [Changelog](https://github.com/composer/composer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/composer/composer/compare/2.8.4...2.8.5)
---
updated-dependencies:
- dependency-name: composer/composer
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/composer.lock b/composer.lock
index 032e9c534cd..a13254ac59b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -2847,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": {
@@ -2903,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": [
{
@@ -2919,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",
@@ -2996,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": {
@@ -3090,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": [
{
@@ -3106,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",
From 4dc680e41df112e4079a8ecd614c19fb170f3934 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Fri, 31 Jan 2025 22:05:22 +0100
Subject: [PATCH 09/98] Added currency code to cache-info for new products
block (#4514)
* Added currency code to cache-info
* moved to parent method
* moved to parent method
---
app/code/core/Mage/Catalog/Block/Product/New.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/code/core/Mage/Catalog/Block/Product/New.php b/app/code/core/Mage/Catalog/Block/Product/New.php
index 7bfd58d6ca4..b2a364dec3b 100644
--- a/app/code/core/Mage/Catalog/Block/Product/New.php
+++ b/app/code/core/Mage/Catalog/Block/Product/New.php
@@ -66,6 +66,7 @@ public function getCacheKeyInfo()
Mage::getSingleton('customer/session')->getCustomerGroupId(),
'template' => $this->getTemplate(),
$this->getProductsCount(),
+ Mage::app()->getStore()->getCurrentCurrencyCode(),
];
}
From c861b4483d9983734389b5c9bb5fd3d2c9163c5b Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 1 Feb 2025 07:53:14 +0100
Subject: [PATCH 10/98] update copyright (#4522)
Co-authored-by: sreichel <5022236+sreichel@users.noreply.github.com>
---
app/Mage.php | 2 +-
.../Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Catalog/Form.php | 2 +-
.../Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php | 2 +-
.../Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php | 2 +-
.../core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php | 2 +-
.../Mage/Adminhtml/Block/Customer/Online/Grid/Renderer/Ip.php | 2 +-
.../core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Labels.php | 2 +-
.../core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Main.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Report/Wishlist.php | 2 +-
.../Mage/Adminhtml/Block/Sales/Order/Create/Form/Abstract.php | 2 +-
.../core/Mage/Adminhtml/Block/Sales/Order/Status/New/Form.php | 2 +-
.../Block/System/Email/Template/Grid/Renderer/Type.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Widget/Form.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Widget/Grid.php | 2 +-
.../Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Ip.php | 2 +-
app/code/core/Mage/Adminhtml/Controller/Action.php | 2 +-
app/code/core/Mage/Adminhtml/Model/Customer/Renderer/Region.php | 2 +-
.../Adminhtml/Model/System/Config/Backend/Admin/Observer.php | 2 +-
.../core/Mage/Adminhtml/Model/System/Config/Backend/File.php | 2 +-
.../Mage/Adminhtml/Model/System/Config/Source/Date/Short.php | 2 +-
app/code/core/Mage/Adminhtml/controllers/AjaxController.php | 2 +-
app/code/core/Mage/Adminhtml/controllers/CustomerController.php | 2 +-
.../controllers/System/Config/System/StorageController.php | 2 +-
.../core/Mage/Adminhtml/controllers/System/ConfigController.php | 2 +-
app/code/core/Mage/Adminhtml/controllers/Tax/RateController.php | 2 +-
app/code/core/Mage/Adminhtml/etc/config.xml | 2 +-
app/code/core/Mage/Api/Model/Server/Adapter/Soap.php | 2 +-
app/code/core/Mage/Api/Model/Server/Handler/Abstract.php | 2 +-
app/code/core/Mage/Api2/Model/Acl/Filter.php | 2 +-
app/code/core/Mage/Bundle/Model/Product/Type.php | 2 +-
app/code/core/Mage/Bundle/Model/Resource/Indexer/Price.php | 2 +-
app/code/core/Mage/Catalog/Block/Product/New.php | 2 +-
app/code/core/Mage/Catalog/Helper/Product/View.php | 2 +-
.../Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php | 2 +-
app/code/core/Mage/Catalog/Model/Api2/Product/Rest/Admin/V1.php | 2 +-
.../Mage/Catalog/Model/Category/Attribute/Backend/Image.php | 2 +-
.../core/Mage/Catalog/Model/Product/Attribute/Media/Api.php | 2 +-
.../Mage/Catalog/Model/Product/Attribute/Tierprice/Api/V2.php | 2 +-
app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php | 2 +-
.../Catalog/Model/Resource/Product/Attribute/Backend/Image.php | 2 +-
.../core/Mage/Catalog/Model/Resource/Product/Collection.php | 2 +-
app/code/core/Mage/Catalog/controllers/ProductController.php | 2 +-
app/code/core/Mage/CatalogRule/Model/Resource/Rule.php | 2 +-
app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php | 2 +-
.../core/Mage/CatalogSearch/controllers/AdvancedController.php | 2 +-
app/code/core/Mage/Checkout/Block/Cart/Crosssell.php | 2 +-
app/code/core/Mage/Cms/Controller/Router.php | 2 +-
app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php | 2 +-
app/code/core/Mage/ConfigurableSwatches/Helper/Data.php | 2 +-
app/code/core/Mage/Core/Block/Abstract.php | 2 +-
app/code/core/Mage/Core/Block/Profiler.php | 2 +-
app/code/core/Mage/Core/Block/Text/Tag/Css/Admin.php | 2 +-
app/code/core/Mage/Core/Block/Text/Tag/Debug.php | 2 +-
app/code/core/Mage/Core/Controller/Front/Action.php | 2 +-
app/code/core/Mage/Core/Controller/Request/Http.php | 2 +-
app/code/core/Mage/Core/Controller/Response/Http.php | 2 +-
app/code/core/Mage/Core/Controller/Varien/Action.php | 2 +-
app/code/core/Mage/Core/Controller/Varien/Front.php | 2 +-
app/code/core/Mage/Core/Controller/Varien/Router/Admin.php | 2 +-
app/code/core/Mage/Core/Controller/Varien/Router/Standard.php | 2 +-
app/code/core/Mage/Core/Helper/Abstract.php | 2 +-
app/code/core/Mage/Core/Helper/Data.php | 2 +-
app/code/core/Mage/Core/Helper/Http.php | 2 +-
app/code/core/Mage/Core/Helper/String.php | 2 +-
app/code/core/Mage/Core/Model/App.php | 2 +-
app/code/core/Mage/Core/Model/Config.php | 2 +-
app/code/core/Mage/Core/Model/Config/Element.php | 2 +-
app/code/core/Mage/Core/Model/Config/Options.php | 2 +-
app/code/core/Mage/Core/Model/Cookie.php | 2 +-
app/code/core/Mage/Core/Model/Date.php | 2 +-
app/code/core/Mage/Core/Model/Design/Package.php | 2 +-
app/code/core/Mage/Core/Model/Email/Queue.php | 2 +-
app/code/core/Mage/Core/Model/File/Storage/Abstract.php | 2 +-
app/code/core/Mage/Core/Model/Input/Filter.php | 2 +-
app/code/core/Mage/Core/Model/Layout.php | 2 +-
app/code/core/Mage/Core/Model/Layout/Update.php | 2 +-
app/code/core/Mage/Core/Model/Locale.php | 2 +-
app/code/core/Mage/Core/Model/Resource/Abstract.php | 2 +-
app/code/core/Mage/Core/Model/Resource/File/Storage/File.php | 2 +-
app/code/core/Mage/Core/Model/Resource/Resource.php | 2 +-
app/code/core/Mage/Core/Model/Resource/Session.php | 2 +-
app/code/core/Mage/Core/Model/Session/Abstract.php | 2 +-
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php | 2 +-
app/code/core/Mage/Core/Model/Store.php | 2 +-
app/code/core/Mage/Core/Model/Translate.php | 2 +-
app/code/core/Mage/Core/Model/Url.php | 2 +-
app/code/core/Mage/Core/Model/Url/Rewrite.php | 2 +-
app/code/core/Mage/Core/Model/Url/Rewrite/Request.php | 2 +-
app/code/core/Mage/Core/functions.php | 2 +-
app/code/core/Mage/Customer/Model/Address/Abstract.php | 2 +-
app/code/core/Mage/Customer/Model/Group.php | 2 +-
app/code/core/Mage/Dataflow/Model/Convert/Adapter/Http.php | 2 +-
app/code/core/Mage/Dataflow/Model/Convert/Iterator/Http.php | 2 +-
app/code/core/Mage/Dataflow/Model/Convert/Profile/Abstract.php | 2 +-
.../core/Mage/Dataflow/Model/Convert/Profile/Collection.php | 2 +-
app/code/core/Mage/Dataflow/Model/Profile.php | 2 +-
app/code/core/Mage/Dataflow/Model/Session/Adapter/Http.php | 2 +-
app/code/core/Mage/Directory/Model/Currency/Import/Abstract.php | 2 +-
.../Directory/Model/Currency/Import/Currencyconverterapi.php | 2 +-
app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php | 2 +-
app/code/core/Mage/Downloadable/Helper/Download.php | 2 +-
.../Adminhtml/Downloadable/Product/EditController.php | 2 +-
.../core/Mage/Downloadable/controllers/DownloadController.php | 2 +-
app/code/core/Mage/Eav/Model/Attribute/Data/File.php | 2 +-
app/code/core/Mage/Eav/Model/Attribute/Data/Image.php | 2 +-
app/code/core/Mage/Eav/Model/Attribute/Data/Text.php | 2 +-
.../core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php | 2 +-
app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php | 2 +-
app/code/core/Mage/ImportExport/Model/Import.php | 2 +-
app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php | 2 +-
.../ImportExport/controllers/Adminhtml/ImportController.php | 2 +-
app/code/core/Mage/Install/Model/Installer/Console.php | 2 +-
app/code/core/Mage/Install/controllers/WizardController.php | 2 +-
app/code/core/Mage/Media/Model/File/Image.php | 2 +-
app/code/core/Mage/Oauth/Model/Observer.php | 2 +-
app/code/core/Mage/Page/Block/Template/Links.php | 2 +-
app/code/core/Mage/Paypal/Model/Ipn.php | 2 +-
app/code/core/Mage/Paypal/Model/Payflow/Request.php | 2 +-
app/code/core/Mage/Paypal/Model/Report/Settlement.php | 2 +-
app/code/core/Mage/Paypal/Model/System/Config/Backend/Cert.php | 2 +-
app/code/core/Mage/Paypal/controllers/IpnController.php | 2 +-
app/code/core/Mage/Paypal/controllers/StandardController.php | 2 +-
app/code/core/Mage/Rating/Model/Resource/Rating.php | 2 +-
app/code/core/Mage/Reports/Model/Resource/Report/Abstract.php | 2 +-
app/code/core/Mage/Reports/Model/Resource/Report/Collection.php | 2 +-
app/code/core/Mage/Rule/Model/Action/Abstract.php | 2 +-
app/code/core/Mage/Rule/Model/Action/Collection.php | 2 +-
app/code/core/Mage/Rule/Model/Condition/Abstract.php | 2 +-
app/code/core/Mage/Rule/Model/Condition/Combine.php | 2 +-
.../Mage/Sales/Block/Adminhtml/Recurring/Profile/Edit/Form.php | 2 +-
app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php | 2 +-
app/code/core/Mage/Sales/Model/Resource/Quote.php | 2 +-
app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers.php | 2 +-
app/code/core/Mage/Sales/Model/Resource/Report/Invoiced.php | 2 +-
.../core/Mage/Sales/Model/Resource/Report/Order/Createdat.php | 2 +-
app/code/core/Mage/Sales/Model/Resource/Report/Shipping.php | 2 +-
app/code/core/Mage/Sales/controllers/DownloadController.php | 2 +-
app/code/core/Mage/SalesRule/Model/Observer.php | 2 +-
app/code/core/Mage/Shipping/Block/Tracking/Popup.php | 2 +-
app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php | 2 +-
.../core/Mage/Shipping/Model/Resource/Carrier/Tablerate.php | 2 +-
app/code/core/Mage/Shipping/Model/Shipping.php | 2 +-
app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php | 2 +-
app/code/core/Mage/Tag/Model/Resource/Tag.php | 2 +-
app/code/core/Mage/Tax/Model/Resource/Report/Tax/Createdat.php | 2 +-
app/code/core/Mage/Uploader/Model/Config/Abstract.php | 2 +-
.../Usa/Model/Shipping/Carrier/Dhl/Label/Pdf/PageBuilder.php | 2 +-
app/code/core/Mage/Usa/Model/Shipping/Carrier/Ups.php | 2 +-
app/code/core/Mage/Weee/Model/Observer.php | 2 +-
app/code/core/Mage/Widget/Block/Adminhtml/Widget/Options.php | 2 +-
app/code/core/Mage/Wishlist/controllers/IndexController.php | 2 +-
.../default/default/template/api/role_users_grid_js.phtml | 2 +-
.../adminhtml/default/default/template/api/roleinfo.phtml | 2 +-
app/design/adminhtml/default/default/template/api/roles.phtml | 2 +-
.../adminhtml/default/default/template/api/rolesedit.phtml | 2 +-
.../adminhtml/default/default/template/api/rolesusers.phtml | 2 +-
.../default/default/template/api/user_roles_grid_js.phtml | 2 +-
.../adminhtml/default/default/template/api/userinfo.phtml | 2 +-
.../adminhtml/default/default/template/api/userroles.phtml | 2 +-
app/design/adminhtml/default/default/template/api/users.phtml | 2 +-
.../default/default/template/api2/attribute/resource.phtml | 2 +-
.../template/api2/permissions/user/edit/tab/roles/js.phtml | 2 +-
.../default/default/template/api2/role/users_grid_js.phtml | 2 +-
.../default/default/template/bundle/product/edit/bundle.phtml | 2 +-
.../default/template/bundle/product/edit/bundle/option.phtml | 2 +-
.../template/bundle/product/edit/bundle/option/search.phtml | 2 +-
.../template/bundle/product/edit/bundle/option/selection.phtml | 2 +-
.../adminhtml/default/default/template/captcha/zend.phtml | 2 +-
.../default/template/catalog/category/checkboxes/tree.phtml | 2 +-
.../default/default/template/catalog/category/widget/tree.phtml | 2 +-
.../template/catalog/product/attribute/new/created.phtml | 2 +-
.../template/catalog/product/attribute/set/toolbar/add.phtml | 2 +-
.../template/catalog/product/attribute/set/toolbar/main.phtml | 2 +-
.../default/default/template/catalog/product/created.phtml | 2 +-
.../template/catalog/product/edit/action/attribute.phtml | 2 +-
.../template/catalog/product/edit/action/inventory.phtml | 2 +-
.../default/template/catalog/product/edit/action/websites.phtml | 2 +-
.../default/template/catalog/product/edit/serializer.phtml | 2 +-
.../default/template/catalog/product/edit/super/config.phtml | 2 +-
.../default/default/template/catalog/product/tab/alert.phtml | 2 +-
.../adminhtml/default/default/template/catalog/wysiwyg/js.phtml | 2 +-
.../default/template/centinel/authentication/complete.phtml | 2 +-
.../default/template/centinel/authentication/start.phtml | 2 +-
.../default/default/template/centinel/validation/form.phtml | 2 +-
.../adminhtml/default/default/template/customer/online.phtml | 2 +-
.../customer/sales/order/create/address/form/renderer/vat.phtml | 2 +-
.../adminhtml/default/default/template/dashboard/graph.phtml | 2 +-
.../default/default/template/dashboard/graph/disabled.phtml | 2 +-
.../template/downloadable/product/edit/downloadable.phtml | 2 +-
.../order/creditmemo/create/items/renderer/downloadable.phtml | 2 +-
.../order/creditmemo/view/items/renderer/downloadable.phtml | 2 +-
.../order/invoice/create/items/renderer/downloadable.phtml | 2 +-
.../sales/order/invoice/view/items/renderer/downloadable.phtml | 2 +-
.../sales/order/view/items/renderer/downloadable.phtml | 2 +-
.../adminhtml/default/default/template/email/order/items.phtml | 2 +-
.../adminhtml/default/default/template/giftmessage/form.phtml | 2 +-
.../default/default/template/giftmessage/giftoptionsform.phtml | 2 +-
.../adminhtml/default/default/template/giftmessage/helper.phtml | 2 +-
.../adminhtml/default/default/template/giftmessage/popup.phtml | 2 +-
.../template/giftmessage/sales/order/create/giftoptions.phtml | 2 +-
.../default/template/giftmessage/sales/order/create/items.phtml | 2 +-
.../template/giftmessage/sales/order/view/giftoptions.phtml | 2 +-
.../default/template/giftmessage/sales/order/view/items.phtml | 2 +-
.../adminhtml/default/default/template/importexport/busy.phtml | 2 +-
.../default/template/importexport/export/form/after.phtml | 2 +-
.../default/template/importexport/export/form/before.phtml | 2 +-
.../default/template/importexport/import/form/after.phtml | 2 +-
.../default/template/importexport/import/form/before.phtml | 2 +-
.../default/template/importexport/import/frame/result.phtml | 2 +-
app/design/adminhtml/default/default/template/page/head.phtml | 2 +-
.../adminhtml/default/default/template/paygate/form/cc.phtml | 2 +-
.../adminhtml/default/default/template/paygate/info/cc.phtml | 2 +-
.../adminhtml/default/default/template/paygate/info/pdf.phtml | 2 +-
.../default/default/template/payment/form/banktransfer.phtml | 2 +-
.../adminhtml/default/default/template/payment/form/cc.phtml | 2 +-
.../default/default/template/payment/form/ccsave.phtml | 2 +-
.../default/default/template/payment/form/checkmo.phtml | 2 +-
.../default/default/template/payment/form/purchaseorder.phtml | 2 +-
.../default/default/template/payment/info/checkmo.phtml | 2 +-
.../default/default/template/payment/info/pdf/checkmo.phtml | 2 +-
.../default/template/payment/info/pdf/purchaseorder.phtml | 2 +-
.../default/default/template/payment/info/purchaseorder.phtml | 2 +-
.../default/default/template/permissions/userinfo.phtml | 2 +-
.../default/default/template/permissions/usernroles.phtml | 2 +-
.../default/default/template/permissions/userroles.phtml | 2 +-
.../adminhtml/default/default/template/permissions/users.phtml | 2 +-
app/design/adminhtml/default/default/template/report/grid.phtml | 2 +-
.../adminhtml/default/default/template/report/wishlist.phtml | 2 +-
.../template/sales/billing/agreement/view/tab/info.phtml | 2 +-
.../default/default/template/sales/items/column/name.phtml | 2 +-
.../default/default/template/sales/items/column/qty.phtml | 2 +-
.../default/default/template/sales/order/address/form.phtml | 2 +-
.../default/template/sales/order/create/totals/default.phtml | 2 +-
.../sales/order/shipment/create/items/renderer/default.phtml | 2 +-
.../default/template/sales/order/shipment/packaging/grid.phtml | 2 +-
.../default/template/sales/order/shipment/tracking/info.phtml | 2 +-
.../default/default/template/sales/transactions/detail.phtml | 2 +-
.../template/store/switcher/form/renderer/fieldset.phtml | 2 +-
.../default/default/template/system/autocomplete.phtml | 2 +-
.../adminhtml/default/default/template/system/cache/edit.phtml | 2 +-
.../default/template/system/config/form/field/array.phtml | 2 +-
.../default/template/system/convert/profile/process.phtml | 2 +-
.../default/default/template/system/convert/profile/run.phtml | 2 +-
.../adminhtml/default/default/template/system/store/cell.phtml | 2 +-
.../default/default/template/system/store/container.phtml | 2 +-
.../adminhtml/default/default/template/system/store/tree.phtml | 2 +-
.../adminhtml/default/default/template/weee/renderer/tax.phtml | 2 +-
.../adminhtml/default/default/template/widget/breadcrumbs.phtml | 2 +-
.../default/default/template/widget/form/element.phtml | 2 +-
.../default/default/template/widget/form/element/gallery.phtml | 2 +-
.../default/default/template/widget/grid/serializer.phtml | 2 +-
.../default/default/template/widget/view/container.phtml | 2 +-
.../default/template/bundle/catalog/product/view/price.phtml | 2 +-
.../template/bundle/catalog/product/view/type/bundle.phtml | 2 +-
.../bundle/catalog/product/view/type/bundle/options.phtml | 2 +-
.../template/bundle/sales/order/creditmemo/items/renderer.phtml | 2 +-
.../template/bundle/sales/order/invoice/items/renderer.phtml | 2 +-
.../frontend/base/default/template/callouts/left_col.phtml | 2 +-
.../frontend/base/default/template/callouts/right_col.phtml | 2 +-
.../base/default/template/catalog/product/gallery.phtml | 2 +-
.../frontend/base/default/template/catalog/product/new.phtml | 2 +-
.../base/default/template/catalog/product/view/additional.phtml | 2 +-
.../default/template/catalog/product/view/options/wrapper.phtml | 2 +-
.../template/catalog/product/view/options/wrapper/bottom.phtml | 2 +-
.../default/template/catalog/product/view/price_clone.phtml | 2 +-
.../catalog/product/view/type/options/configurable.phtml | 2 +-
.../base/default/template/centinel/authentication.phtml | 2 +-
.../default/template/centinel/authentication/complete.phtml | 2 +-
.../base/default/template/centinel/authentication/start.phtml | 2 +-
app/design/frontend/base/default/template/centinel/logo.phtml | 2 +-
.../template/checkout/cart/item/configure/updatecart.phtml | 2 +-
.../base/default/template/checkout/cart/item/default.phtml | 2 +-
.../frontend/base/default/template/checkout/cart/noItems.phtml | 2 +-
.../template/checkout/multishipping/address/select.phtml | 2 +-
.../default/template/checkout/multishipping/billing/items.phtml | 2 +-
.../base/default/template/checkout/multishipping/link.phtml | 2 +-
.../base/default/template/checkout/multishipping/success.phtml | 2 +-
.../base/default/template/checkout/onepage/failure.phtml | 2 +-
.../frontend/base/default/template/checkout/onepage/login.phtml | 2 +-
.../default/template/checkout/onepage/progress/payment.phtml | 2 +-
.../default/template/checkout/onepage/progress/shipping.phtml | 2 +-
.../template/checkout/onepage/progress/shipping_method.phtml | 2 +-
.../frontend/base/default/template/checkout/total/default.phtml | 2 +-
.../frontend/base/default/template/checkout/total/tax.phtml | 2 +-
app/design/frontend/base/default/template/core/link.phtml | 2 +-
.../template/customer/account/dashboard/newsletter.phtml | 2 +-
.../base/default/template/customer/form/confirmation.phtml | 2 +-
.../base/default/template/customer/form/newsletter.phtml | 2 +-
.../default/template/customer/form/resetforgottenpassword.phtml | 2 +-
app/design/frontend/base/default/template/customer/logout.phtml | 2 +-
.../frontend/base/default/template/customer/widget/gender.phtml | 2 +-
.../frontend/base/default/template/customer/widget/taxvat.phtml | 2 +-
.../template/downloadable/checkout/cart/item/default.phtml | 2 +-
.../downloadable/checkout/multishipping/item/downloadable.phtml | 2 +-
.../template/downloadable/checkout/onepage/review/item.phtml | 2 +-
.../base/default/template/downloadable/checkout/success.phtml | 2 +-
.../email/order/items/creditmemo/downloadable.phtml | 2 +-
.../downloadable/email/order/items/invoice/downloadable.phtml | 2 +-
.../downloadable/email/order/items/order/downloadable.phtml | 2 +-
.../base/default/template/email/order/creditmemo/items.phtml | 2 +-
.../base/default/template/email/order/invoice/items.phtml | 2 +-
.../base/default/template/email/order/shipment/items.phtml | 2 +-
.../base/default/template/email/order/shipment/track.phtml | 2 +-
.../frontend/base/default/template/giftmessage/inline.phtml | 2 +-
.../frontend/base/default/template/page/html/cookienotice.phtml | 2 +-
.../frontend/base/default/template/page/html/top.links.phtml | 2 +-
.../frontend/base/default/template/page/html/wrapper.phtml | 2 +-
app/design/frontend/base/default/template/paygate/form/cc.phtml | 2 +-
app/design/frontend/base/default/template/paygate/info/cc.phtml | 2 +-
.../base/default/template/payment/form/banktransfer.phtml | 2 +-
app/design/frontend/base/default/template/payment/form/cc.phtml | 2 +-
.../frontend/base/default/template/payment/form/ccsave.phtml | 2 +-
.../frontend/base/default/template/payment/form/checkmo.phtml | 2 +-
.../base/default/template/payment/form/purchaseorder.phtml | 2 +-
.../base/default/template/payment/info/banktransfer.phtml | 2 +-
.../frontend/base/default/template/payment/info/checkmo.phtml | 2 +-
.../frontend/base/default/template/payment/info/default.phtml | 2 +-
.../base/default/template/payment/info/purchaseorder.phtml | 2 +-
.../frontend/base/default/template/paypal/hss/iframe.phtml | 2 +-
app/design/frontend/base/default/template/rating/detailed.phtml | 2 +-
app/design/frontend/base/default/template/rating/empty.phtml | 2 +-
.../frontend/base/default/template/review/customer/list.phtml | 2 +-
.../frontend/base/default/template/review/customer/recent.phtml | 2 +-
.../frontend/base/default/template/review/customer/view.phtml | 2 +-
app/design/frontend/base/default/template/review/form.phtml | 2 +-
.../frontend/base/default/template/review/helper/summary.phtml | 2 +-
.../base/default/template/review/helper/summary_short.phtml | 2 +-
.../base/default/template/review/product/view/count.phtml | 2 +-
.../base/default/template/review/product/view/list.phtml | 2 +-
.../base/default/template/review/product/view/other.phtml | 2 +-
app/design/frontend/base/default/template/review/view.phtml | 2 +-
app/design/frontend/base/default/template/rss/list.phtml | 2 +-
.../frontend/base/default/template/sales/guest/form.phtml | 2 +-
.../base/default/template/sales/order/creditmemo/items.phtml | 2 +-
.../frontend/base/default/template/sales/order/details.phtml | 2 +-
.../frontend/base/default/template/sales/order/history.phtml | 2 +-
.../base/default/template/sales/order/info/buttons.phtml | 2 +-
.../base/default/template/sales/order/invoice/items.phtml | 2 +-
.../frontend/base/default/template/sales/order/print.phtml | 2 +-
.../base/default/template/sales/order/print/creditmemo.phtml | 2 +-
.../base/default/template/sales/order/print/invoice.phtml | 2 +-
.../frontend/base/default/template/sales/order/recent.phtml | 2 +-
.../base/default/template/sales/order/shipment/items.phtml | 2 +-
.../base/default/template/sales/order/trackinginfo.phtml | 2 +-
app/design/frontend/base/default/template/tax/order/tax.phtml | 2 +-
.../frontend/base/default/template/wishlist/email/rss.phtml | 2 +-
.../base/default/template/wishlist/item/column/remove.phtml | 2 +-
.../base/default/template/wishlist/item/configure/addto.phtml | 2 +-
.../frontend/base/default/template/wishlist/item/list.phtml | 2 +-
.../frontend/base/default/template/wishlist/sharing.phtml | 2 +-
.../template/bundle/catalog/product/view/type/bundle.phtml | 2 +-
.../bundle/catalog/product/view/type/bundle/availability.phtml | 2 +-
.../catalog/product/view/type/availability/grouped.phtml | 2 +-
.../catalog/product/view/type/options/configurable.phtml | 2 +-
.../rwd/default/template/centinel/authentication/start.phtml | 2 +-
.../template/checkout/cart/item/configure/updatecart.phtml | 2 +-
.../configurableswatches/catalog/layer/state/swatch.phtml | 2 +-
.../rwd/default/template/customer/form/confirmation.phtml | 2 +-
.../default/template/customer/form/resetforgottenpassword.phtml | 2 +-
.../template/downloadable/checkout/onepage/review/item.phtml | 2 +-
.../email/order/items/creditmemo/downloadable.phtml | 2 +-
.../downloadable/email/order/items/invoice/downloadable.phtml | 2 +-
.../downloadable/email/order/items/order/downloadable.phtml | 2 +-
.../rwd/default/template/email/catalog/product/new.phtml | 2 +-
.../rwd/default/template/email/order/creditmemo/items.phtml | 2 +-
.../rwd/default/template/email/order/invoice/items.phtml | 2 +-
.../rwd/default/template/email/order/shipment/items.phtml | 2 +-
.../rwd/default/template/email/order/shipment/track.phtml | 2 +-
.../rwd/default/template/email/order/totals/wrapper.phtml | 2 +-
app/design/frontend/rwd/default/template/payment/form/cc.phtml | 2 +-
.../frontend/rwd/default/template/payment/form/ccsave.phtml | 2 +-
app/design/frontend/rwd/default/template/rating/detailed.phtml | 2 +-
.../frontend/rwd/default/template/review/customer/view.phtml | 2 +-
app/design/frontend/rwd/default/template/review/form.phtml | 2 +-
.../rwd/default/template/review/product/view/list.phtml | 2 +-
app/design/frontend/rwd/default/template/review/view.phtml | 2 +-
.../rwd/default/template/sales/order/creditmemo/items.phtml | 2 +-
.../frontend/rwd/default/template/sales/order/history.phtml | 2 +-
.../rwd/default/template/sales/order/invoice/items.phtml | 2 +-
.../frontend/rwd/default/template/sales/order/recent.phtml | 2 +-
.../rwd/default/template/sales/order/shipment/items.phtml | 2 +-
app/design/install/default/default/template/install/state.phtml | 2 +-
get.php | 2 +-
lib/Mage/Archive/Abstract.php | 2 +-
lib/Mage/Archive/Helper/File.php | 2 +-
lib/Mage/Archive/Helper/File/Bz.php | 2 +-
lib/Mage/Archive/Helper/File/Gz.php | 2 +-
lib/Mage/Archive/Tar.php | 2 +-
lib/Mage/Cache/Backend/File.php | 2 +-
lib/Mage/DB/Mysqli.php | 2 +-
lib/Mage/HTTP/Client/Socket.php | 2 +-
lib/Mage/System/Dirs.php | 2 +-
lib/Mage/System/Ftp.php | 2 +-
lib/Unserialize/Parser.php | 2 +-
lib/Unserialize/Reader/Arr.php | 2 +-
lib/Unserialize/Reader/ArrKey.php | 2 +-
lib/Unserialize/Reader/ArrValue.php | 2 +-
lib/Unserialize/Reader/Bool.php | 2 +-
lib/Unserialize/Reader/Dbl.php | 2 +-
lib/Unserialize/Reader/Int.php | 2 +-
lib/Unserialize/Reader/Null.php | 2 +-
lib/Unserialize/Reader/Str.php | 2 +-
lib/Varien/Db/Adapter/Mysqli.php | 2 +-
lib/Varien/File/Uploader.php | 2 +-
lib/Varien/Image/Adapter/Abstract.php | 2 +-
lib/Varien/Image/Adapter/Gd2.php | 2 +-
lib/Varien/Io/File.php | 2 +-
lib/Varien/Io/Ftp.php | 2 +-
lib/Varien/Simplexml/Config.php | 2 +-
lib/Varien/Simplexml/Config/Cache/File.php | 2 +-
shell/indexer.php | 2 +-
413 files changed, 413 insertions(+), 413 deletions(-)
diff --git a/app/Mage.php b/app/Mage.php
index ec7df4782f2..a307d5cb50b 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 64edcb7edac..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)
*/
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 cdf1146b539..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)
*/
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 8fd1fb1f136..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)
*/
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 31783dd2833..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)
*/
-->
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 faa42fb42f0..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)
*/
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 b2a364dec3b..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)
*/
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 15f667bff48..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)
*/
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/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..1e38bf1b237 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)
*/
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 9ec0bc91947..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)
*/
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/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/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..e30944e4301 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)
*/
diff --git a/app/code/core/Mage/Rule/Model/Action/Abstract.php b/app/code/core/Mage/Rule/Model/Action/Abstract.php
index 608e9f64f78..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)
*/
diff --git a/app/code/core/Mage/Rule/Model/Action/Collection.php b/app/code/core/Mage/Rule/Model/Action/Collection.php
index ce8ef27fe14..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)
*/
diff --git a/app/code/core/Mage/Rule/Model/Condition/Abstract.php b/app/code/core/Mage/Rule/Model/Condition/Abstract.php
index b55b4630693..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)
*/
diff --git a/app/code/core/Mage/Rule/Model/Condition/Combine.php b/app/code/core/Mage/Rule/Model/Condition/Combine.php
index 4b75d54ed91..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)
*/
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/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/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/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/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/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)
*/
From e5feff0384a48be5a6b1ae3da98a2867348b734b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Milan=20Dav=C3=ADdek?=
Date: Sat, 1 Feb 2025 07:54:19 +0100
Subject: [PATCH 11/98] php 8.3: fix catch for empty sitemap filename (#4521)
---
app/code/core/Mage/Sitemap/Model/Observer.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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();
}
}
From 31322c437ebd6c31f7841e556b3763ce8a05989b Mon Sep 17 00:00:00 2001
From: Ng Kiat Siong
Date: Sun, 2 Feb 2025 18:27:33 +0800
Subject: [PATCH 12/98] Fixed null deprecation in UnserializeArray.php (#4394)
* Fixed issue #4352 null deprecation in UnserializeArray.php
* Added @ to suppress warnings and notices
* Suppress PHPMD ErrorControlOperator
* Fix suppress PHPMD ErrorControlOperator
* Update app/code/core/Mage/Core/Helper/UnserializeArray.php
phpstan fix
* Update app/code/core/Mage/Core/Helper/UnserializeArray.php
Co-authored-by: Sven Reichel
* updated test result
* sonar-1
---------
Co-authored-by: Sven Reichel
---
app/code/core/Mage/Core/Helper/UnserializeArray.php | 4 +++-
tests/unit/Mage/Core/Helper/UnserializeArrayTest.php | 8 +++++---
2 files changed, 8 insertions(+), 4 deletions(-)
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/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php b/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php
index 8803897b14a..458e49c1f42 100644
--- a/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php
+++ b/tests/unit/Mage/Core/Helper/UnserializeArrayTest.php
@@ -50,16 +50,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' => [
From e8c49e61ca8ce0a44333a2f8546594461fa7427b Mon Sep 17 00:00:00 2001
From: Marcos Steverlynck <26821235+massa-man@users.noreply.github.com>
Date: Sun, 2 Feb 2025 13:21:45 +0000
Subject: [PATCH 13/98] Fix issue with double port in error pages base URL
(#4518)
* bugfix(errors): fix url issue were HTTP_HOST server var already includes port
* bugfix(errors): use str_ends_with instead of substr_compare and run cs fixer
---
errors/processor.php | 2 ++
1 file changed, 2 insertions(+)
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;
}
From 94ce8522fd817b02bd3bf0b39422b14dc80f759a Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Wed, 5 Feb 2025 11:57:58 +0100
Subject: [PATCH 14/98] add theroch as a contributor for bug (#4535)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 +-
README.md | 388 ++++++++++++++++++++++++--------------------
2 files changed, 211 insertions(+), 180 deletions(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 517ed43c37f..903e376fe03 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1041,7 +1041,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/3726836?v=4",
"profile": "https://www.b3-it.de/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
diff --git a/README.md b/README.md
index 166130100e8..bb9581cf17b 100644
--- a/README.md
+++ b/README.md
@@ -40,185 +40,215 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
From 46719f726cf8b0371bf15f956c04296bfd4fbab8 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:52:05 +0100
Subject: [PATCH 15/98] add kiatng as a contributor for bug (#4532)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 903e376fe03..132e86819e2 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -148,7 +148,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/1106470?v=4",
"profile": "https://github.com/kiatng",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 63bdd59e8e972acff691a32209647852de0b118e Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:52:41 +0100
Subject: [PATCH 16/98] add empiricompany as a contributor for bug (#4541)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 132e86819e2..ffe7511fb63 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -230,7 +230,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/5071467?v=4",
"profile": "https://github.com/empiricompany",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From aed1e5bc53da2b548efc3cc533c2ce1f081ae89c Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:53:18 +0100
Subject: [PATCH 17/98] add seifer7 as a contributor for bug (#4549)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index ffe7511fb63..95d9005bc7e 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1422,7 +1422,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/13601073?v=4",
"profile": "https://github.com/seifer7",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 714fa9b78dd6fd9a18cbc97d45a139ab70149411 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:54:17 +0100
Subject: [PATCH 18/98] add ioweb-gr as a contributor for bug (#4544)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 95d9005bc7e..0dec03c1cc0 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -375,7 +375,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/20220341?v=4",
"profile": "https://www.ioweb.gr/en",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From d037b677dcfd25572f438fd5b322e70a28cf692a Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:55:00 +0100
Subject: [PATCH 19/98] add AlterWeb as a contributor for bug (#4551)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 0dec03c1cc0..944897489c8 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1054,7 +1054,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/12827587?v=4",
"profile": "http://www.alterweb.nl/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 9be31e1ab5c72668bab2527ccf799fef5a320a45 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:55:52 +0100
Subject: [PATCH 20/98] add sreichel as a contributor for bug (#4543)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 944897489c8..cd8ac5ad22c 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -21,7 +21,8 @@
"profile": "https://magento.stackexchange.com/users/46249/sv3n",
"contributions": [
"code",
- "maintenance"
+ "maintenance",
+ "bug"
]
},
{
From 8e5deaed7e55072a9e4cc1a4642ccc64e911c673 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:56:51 +0100
Subject: [PATCH 21/98] add Tomasz-Silpion as a contributor for bug (#4547)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index cd8ac5ad22c..ef70285279a 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1407,7 +1407,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/5328659?v=4",
"profile": "https://github.com/Tomasz-Silpion",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 5280c37cc5bf5d4d35466c9f9ac5bf813a535594 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:57:24 +0100
Subject: [PATCH 22/98] add addison74 as a contributor for bug (#4539)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index ef70285279a..19241893af5 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -991,7 +991,8 @@
"profile": "https://github.com/ADDISON74",
"contributions": [
"code",
- "doc"
+ "doc",
+ "bug"
]
},
{
From 8eb9f8101810c9050bab84e9857ccde9b2b9b7fc Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:58:59 +0100
Subject: [PATCH 23/98] add luigifab as a contributor for bug (#4560)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 19241893af5..9b7560342b1 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -340,7 +340,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/31816829?v=4",
"profile": "https://www.luigifab.fr/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 02090fe1780d67f4f577ed219ddda6cba597bafd Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 17:59:43 +0100
Subject: [PATCH 24/98] add seansan as a contributor for bug (#4562)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 9b7560342b1..ed26c4b44c0 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -76,7 +76,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/652395?v=4",
"profile": "https://overhemden.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 787ebe7e496e342f0e66ca080edb72980179d764 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:00:30 +0100
Subject: [PATCH 25/98] add joshua-bn as a contributor for bug (#4559)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index ed26c4b44c0..9217164e196 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1140,7 +1140,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/53793523?v=4",
"profile": "https://www.promenade.co/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From f7aee34b972631b66ebee759a63d8a0626e2fee6 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:07:36 +0100
Subject: [PATCH 26/98] add gorbunovav as a contributor for bug (#4546)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 9217164e196..baddd4bc625 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1402,7 +1402,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/2665015?v=4",
"profile": "https://github.com/gorbunovav",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 36ec17ac4c9de5300ba5a178f1e91baaefe76e96 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:08:27 +0100
Subject: [PATCH 27/98] add Caprico85 as a contributor for bug (#4536)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index baddd4bc625..53b1ade0696 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1068,7 +1068,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/2081806?v=4",
"profile": "https://github.com/Caprico85",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 9784ce3883db75c48e8be558d145dd4daee9b84a Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:09:50 +0100
Subject: [PATCH 28/98] add elidrissidev as a contributor for bug (#4564)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 53b1ade0696..c4402d9a951 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1169,7 +1169,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/67818913?v=4",
"profile": "https://www.elidrissi.dev/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 91eb08e6598cd144f6bc02e4cc6a092ea403f636 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:12:47 +0100
Subject: [PATCH 29/98] add schmengler as a contributor for bug (#4567)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index c4402d9a951..0190aa3b794 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -478,7 +478,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/367320?v=4",
"profile": "https://www.schmengler-se.de/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 3b7c360816e948dbfb97ca0ee3f356daf856f0a0 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:13:02 +0100
Subject: [PATCH 30/98] add fballiano as a contributor for bug (#4565)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 0190aa3b794..fc73f83bac9 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -957,7 +957,8 @@
"profile": "http://fabrizioballiano.com/",
"contributions": [
"code",
- "doc"
+ "doc",
+ "bug"
]
},
{
From b3bd0e376e6756b305f3a382eeab9e65979223dc Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:15:12 +0100
Subject: [PATCH 31/98] add leissbua as a contributor for bug (#4571)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Sven Reichel
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index fc73f83bac9..5736940ec26 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1454,7 +1454,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/68073221?v=4",
"profile": "https://github.com/leissbua",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 79e80f1d1ea9df38b2d7fcf2c546e043e4b03409 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:20:00 +0100
Subject: [PATCH 32/98] add boesbo as a contributor for bug (#4581)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 5736940ec26..95dcdf7c21a 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -929,7 +929,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/12744378?v=4",
"profile": "https://github.com/boesbo",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 540750cad1ca5e2da20725dd19bf71a01c56c4b0 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:20:20 +0100
Subject: [PATCH 33/98] add drwilliams as a contributor for bug (#4582)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 95dcdf7c21a..72671fb6bc5 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1015,7 +1015,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/11303389?v=4",
"profile": "https://github.com/drwilliams",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From a9a0d5dc001a96a6f4e29b2f0fc6343b794911ba Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:20:37 +0100
Subject: [PATCH 34/98] add digitalpianism as a contributor for bug (#4583)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 72671fb6bc5..c44b963290b 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -977,7 +977,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/16592249?v=4",
"profile": "http://www.digital-pianism.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From a1eee1452ca0d279900f15f99147cab8e4a18a8d Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:21:01 +0100
Subject: [PATCH 35/98] add ProxiBlue as a contributor for bug (#4587)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index c44b963290b..97060a467a4 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -415,7 +415,8 @@
"avatar_url": "https://avatars2.githubusercontent.com/u/4994260?v=4",
"profile": "http://www.proxiblue.com.au/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 4c1289a0baf4f0e56f28a258fabbfe20dc7f90b8 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:21:28 +0100
Subject: [PATCH 36/98] add justinbeaty as a contributor for bug (#4588)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 97060a467a4..0ae84ccee46 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -988,7 +988,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/51970393?v=4",
"profile": "https://github.com/justinbeaty",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 58b978d2af3cf29c0f8f548f3125dda81f0f9419 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:21:45 +0100
Subject: [PATCH 37/98] add jouriy as a contributor for bug (#4589)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 0ae84ccee46..23477967229 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -969,7 +969,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/68122106?v=4",
"profile": "https://github.com/jouriy",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 77837a0c81706a9b4d2abfade4e54b2a8e9386a5 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:22:26 +0100
Subject: [PATCH 38/98] add mehdichaouch as a contributor for doc (#4592)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 23477967229..7836f75c35f 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1168,7 +1168,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/861701?v=4",
"profile": "https://github.com/mehdichaouch",
"contributions": [
- "code"
+ "code",
+ "doc"
]
},
{
From cf4e8c8c6fd33a5149236d2c571931ef55699863 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:22:55 +0100
Subject: [PATCH 39/98] add midlan as a contributor for bug (#4595)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 7836f75c35f..d0b86498760 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -196,7 +196,8 @@
"avatar_url": "https://avatars2.githubusercontent.com/u/4263992?v=4",
"profile": "http://milandavidek.cz/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 5ca9261c6a49d35161b13749b4e5c823fda6c488 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:23:36 +0100
Subject: [PATCH 40/98] add loekvangool as a contributor for bug (#4599)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index d0b86498760..b7baa4f7c47 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -352,7 +352,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/7300472?v=4",
"profile": "https://github.com/loekvangool",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From c12ad2634cf9d3808c352818ccec8891bba80cf0 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:24:01 +0100
Subject: [PATCH 41/98] add tmotyl as a contributor for bug (#4573)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index b7baa4f7c47..c7e5aef407a 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -58,7 +58,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/515397?v=4",
"profile": "https://macopedia.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 6cd77476c5d86e4f0e2947d3b6631ab9ed2e1591 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:24:16 +0100
Subject: [PATCH 42/98] add roberto-ebizmarts as a contributor for bug (#4580)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index c7e5aef407a..0cf522d5fcb 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -537,7 +537,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/51710909?v=4",
"profile": "https://github.com/roberto-ebizmarts",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From dda29ee266877864e770206a705e1d245e399428 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:24:39 +0100
Subject: [PATCH 43/98] add vovayatsyuk as a contributor for bug (#4578)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 0cf522d5fcb..e513cac95e8 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -455,7 +455,8 @@
"avatar_url": "https://avatars2.githubusercontent.com/u/306080?v=4",
"profile": "https://github.com/vovayatsyuk",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From ea5fc46d7b18b60c4d99911e1e1274de1c68b77a Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:24:57 +0100
Subject: [PATCH 44/98] add kanevbg as a contributor for bug (#4577)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index e513cac95e8..4b15d27d163 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -656,7 +656,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/11477130?v=4",
"profile": "https://github.com/kanevbg",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From 9bdf9ecd2eaa416d8f44b9636781322d969ce786 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 18:28:14 +0100
Subject: [PATCH 45/98] add real34 as a contributor for bug (#4572)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 4b15d27d163..d7b8d2ae9c6 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -548,7 +548,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/75968?v=4",
"profile": "https://www.pierre-martin.fr/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From eb0e774fb337b51676658f74793d3fc4bacf8d8e Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Thu, 6 Feb 2025 19:37:44 +0100
Subject: [PATCH 46/98] PhpUnit: updated and added tests (#4454)
* bumped version
* updated tests
* composer update
* public properties
* ignore skipped tests
* cs
* rector - ignore test
* updated test data provider
* typo [skip ci]
* typo [skip ci]
* ignore test
* updated test
* phpstan baseline
* updated test
* updated test, ref #4453
* removed test, ref #4308
* updated test
* skip test for php8.3
- ref https://github.com/Shardj/zf1-future/pull/465
* skip test for php8.3
- ref https://github.com/Shardj/zf1-future/pull/465
* workflow fix
* sonar-1
* sonar-2
* updated tests
* added phpstan/phpstan-phpunit
* updated php-cs-fixer config
* phpstan
* rector config
* fixes tests
* fixes tests typo
---
.ddev/commands/web/phpunit | 2 +-
.ddev/commands/web/phpunit-coverage-local | 2 +-
.php-cs-fixer.dist.php | 2 +
.phpstan.dist.baseline.neon | 12 -
.phpstan.dist.neon | 2 +
.phpunit.dist.xml | 4 +
.rector.php | 28 +-
app/code/core/Mage/Index/Model/Process.php | 4 +
app/code/core/Mage/Reports/Helper/Data.php | 18 +-
.../Model/Resource/Report/Collection.php | 28 +-
composer.json | 21 +-
composer.lock | 288 ++++++++++++------
tests/unit/LongRunningTestAlert.php | 35 +++
tests/unit/Mage/Admin/Helper/BlockTest.php | 4 +-
tests/unit/Mage/Admin/Helper/DataTest.php | 4 +-
tests/unit/Mage/Admin/Helper/VariableTest.php | 4 +-
tests/unit/Mage/Admin/Model/BlockTest.php | 6 +-
tests/unit/Mage/Admin/Model/ConfigTest.php | 7 +-
tests/unit/Mage/Admin/Model/UserTest.php | 20 +-
tests/unit/Mage/Admin/Model/VariableTest.php | 6 +-
.../AdminNotification/Helper/DataTest.php | 4 +-
.../Mage/AdminNotification/Model/FeedTest.php | 6 +-
tests/unit/Mage/Adminhtml/Block/CacheTest.php | 7 +-
.../Block/Customer/Edit/Tab/AddressesTest.php | 12 +-
.../Customer/Edit/Tab/NewsletterTest.php | 11 +-
.../Block/System/Cache/Form/FormTest.php | 9 +-
.../Block/System/Config/Form/FormTest.php | 9 +-
.../System/Convert/Gui/Edit/Tab/ViewTest.php | 12 +-
.../Convert/Profile/Edit/Tab/EditTest.php | 12 +-
.../Mage/Adminhtml/Block/TemplateTest.php | 27 +-
.../Block/Widget/Grid/ColumnTest.php | 7 +-
.../Mage/Adminhtml/Block/Widget/GridTest.php | 7 +-
.../Mage/Adminhtml/Helper/AddressesTest.php | 6 +-
.../Mage/Adminhtml/Helper/CatalogTest.php | 8 +-
.../unit/Mage/Adminhtml/Helper/ConfigTest.php | 4 +-
.../Adminhtml/Helper/Dashboard/DataTest.php | 4 +-
tests/unit/Mage/Adminhtml/Helper/DataTest.php | 4 +-
tests/unit/Mage/Adminhtml/Helper/JsTest.php | 4 +-
.../Mage/Adminhtml/Helper/Media/JsTest.php | 4 +-
.../unit/Mage/Adminhtml/Helper/SalesTest.php | 4 +-
.../unit/Mage/Catalog/Helper/CategoryTest.php | 4 +-
tests/unit/Mage/Catalog/Helper/DataTest.php | 4 +-
tests/unit/Mage/Catalog/Helper/MapTest.php | 4 +-
.../Mage/Catalog/Helper/Product/UrlTest.php | 4 +-
.../unit/Mage/Catalog/Helper/ProductTest.php | 4 +-
.../unit/Mage/Catalog/Model/CategoryTest.php | 26 +-
tests/unit/Mage/Catalog/Model/ProductTest.php | 44 +--
.../Model/Resource/Eav/AttributeTest.php | 24 +-
tests/unit/Mage/Catalog/Model/UrlTest.php | 60 +---
tests/unit/Mage/Cms/Block/BlockTest.php | 22 +-
tests/unit/Mage/Cms/Block/PageTest.php | 22 +-
.../unit/Mage/Cms/Block/Widget/BlockTest.php | 27 +-
.../Mage/Cms/Block/Widget/Page/LinkTest.php | 7 +-
tests/unit/Mage/Cms/Helper/DataTest.php | 4 +-
tests/unit/Mage/Cms/Helper/PageTest.php | 39 +--
.../Mage/Cms/Helper/Wysiwyg/ImagesTest.php | 28 +-
tests/unit/Mage/Cms/Model/PageTest.php | 25 +-
.../Mage/Cms/Model/Wysiwyg/ConfigTest.php | 4 +-
.../Cms/Model/Wysiwyg/Images/StorageTest.php | 6 +-
tests/unit/Mage/Core/Helper/CookieTest.php | 4 +-
tests/unit/Mage/Core/Helper/DataTest.php | 5 +-
tests/unit/Mage/Core/Helper/HintTest.php | 6 +-
tests/unit/Mage/Core/Helper/JsTest.php | 4 +-
tests/unit/Mage/Core/Helper/PurifierTest.php | 6 +-
tests/unit/Mage/Core/Helper/SecurityTest.php | 6 +-
tests/unit/Mage/Core/Helper/StringTest.php | 4 +-
.../Mage/Core/Helper/UnserializeArrayTest.php | 5 +-
tests/unit/Mage/Core/Helper/UrlTest.php | 4 +-
tests/unit/Mage/Core/Model/AppTest.php | 67 +---
tests/unit/Mage/Core/Model/ConfigTest.php | 4 +-
tests/unit/Mage/Core/Model/LocaleTest.php | 36 +--
.../Model/Security/HtmlEscapedStringTest.php | 8 +-
tests/unit/Mage/Core/Model/StoreTest.php | 25 +-
tests/unit/Mage/Core/Model/UrlTest.php | 4 +-
tests/unit/Mage/Core/Model/VariableTest.php | 4 +-
tests/unit/Mage/Core/Model/WebsiteTest.php | 12 +-
.../Model/Convert/Adapter/CustomerTest.php | 6 +-
.../unit/Mage/Customer/Model/CustomerTest.php | 5 +-
tests/unit/Mage/Directory/Block/DataTest.php | 9 +-
tests/unit/Mage/Directory/Helper/DataTest.php | 10 +-
.../Mage/Downloadable/Helper/FileTest.php | 39 +--
tests/unit/Mage/Index/Model/ProcessTest.php | 93 ++++++
tests/unit/Mage/Log/Helper/DataTest.php | 4 +-
tests/unit/Mage/Log/Model/AggregationTest.php | 4 +-
tests/unit/Mage/Log/Model/CronTest.php | 6 +-
tests/unit/Mage/Log/Model/CustomerTest.php | 6 +-
tests/unit/Mage/Log/Model/LogTest.php | 6 +-
tests/unit/Mage/Log/Model/VisitorTest.php | 6 +-
tests/unit/Mage/Page/Block/Html/HeadTest.php | 17 +-
.../unit/Mage/Page/Block/Html/HeaderTest.php | 9 +-
tests/unit/Mage/Page/Block/HtmlTest.php | 7 +-
tests/unit/Mage/Page/Block/RedirectTest.php | 7 +-
tests/unit/Mage/Page/Block/SwitchTest.php | 7 +-
tests/unit/Mage/Page/Helper/LayoutTest.php | 4 +-
tests/unit/Mage/Page/Model/ConfigTest.php | 4 +-
.../Mage/Page/Model/Source/LayoutTest.php | 4 +-
tests/unit/Mage/Reports/Helper/DataTest.php | 92 ++++++
.../Model/Resource/Report/CollectionTest.php | 171 +++++++++++
tests/unit/Mage/Rule/Model/AbstractTest.php | 231 ++++++++++++++
.../unit/Mage/Rule/Model/EnvironmentTest.php | 43 +++
tests/unit/Mage/Rule/Model/RuleTest.php | 55 ++++
.../Block/Order/Item/Renderer/DefaultTest.php | 44 +++
tests/unit/Mage/Sitemap/Model/SitemapTest.php | 23 +-
tests/unit/Mage/Tax/Helper/DataTest.php | 22 +-
.../unit/Mage/Uploader/Block/AbstractTest.php | 6 +-
tests/unit/Mage/Uploader/Helper/DataTest.php | 4 +-
tests/unit/Mage/Uploader/Helper/FileTest.php | 62 +---
.../Traits/DataProvider/Base/BoolTrait.php | 33 ++
.../DataProvider/Base/IntOrNullTrait.php | 36 +++
.../Traits/DataProvider/Base/ModulesTrait.php | 104 +++++++
.../DataProvider/Base/NumericStringTrait.php | 33 ++
.../Mage/Catalog/CatalogTrait.php | 58 ++++
.../Mage/Catalog/Model/LocaleTrait.php | 51 ++++
.../Traits/DataProvider/Mage/Cms/CmsTrait.php | 73 +++++
.../DataProvider/Mage/Core/CoreTrait.php | 84 +++++
.../Mage/Downloadable/DownloadableTrait.php | 52 ++++
.../Mage/Reports/ReportsTrait.php | 139 +++++++++
.../DataProvider/Mage/Rule/RuleTrait.php | 82 +++++
.../Mage/Uploader/UploaderTrait.php | 73 +++++
119 files changed, 2200 insertions(+), 844 deletions(-)
create mode 100644 tests/unit/LongRunningTestAlert.php
create mode 100644 tests/unit/Mage/Index/Model/ProcessTest.php
create mode 100644 tests/unit/Mage/Reports/Helper/DataTest.php
create mode 100644 tests/unit/Mage/Reports/Model/Resource/Report/CollectionTest.php
create mode 100644 tests/unit/Mage/Rule/Model/AbstractTest.php
create mode 100644 tests/unit/Mage/Rule/Model/EnvironmentTest.php
create mode 100644 tests/unit/Mage/Rule/Model/RuleTest.php
create mode 100644 tests/unit/Mage/Sales/Block/Order/Item/Renderer/DefaultTest.php
create mode 100644 tests/unit/Traits/DataProvider/Base/BoolTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Base/IntOrNullTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Base/ModulesTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Base/NumericStringTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Catalog/CatalogTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Catalog/Model/LocaleTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Cms/CmsTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Core/CoreTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Downloadable/DownloadableTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Reports/ReportsTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Rule/RuleTrait.php
create mode 100644 tests/unit/Traits/DataProvider/Mage/Uploader/UploaderTrait.php
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/.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 f9f7f2e4abb..8d87f7835ba 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 f2b2b182dbb..4684698a9e6 100644
--- a/.phpstan.dist.neon
+++ b/.phpstan.dist.neon
@@ -152,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/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/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/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php
index e30944e4301..1bcce912c74 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Report/Collection.php
@@ -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/composer.json b/composer.json
index 46490762b88..d1208aa3825 100644
--- a/composer.json
+++ b/composer.json
@@ -57,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"
},
@@ -135,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"
@@ -148,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",
@@ -164,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 a13254ac59b..e62030a2d8a 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": "2d1749d4ce17be3ef71c37303bee881d",
+ "content-hash": "95341d0b9cd8235df7d71680b3c7a87e",
"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"
},
@@ -2032,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": {
@@ -2265,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": {
@@ -2341,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": {
@@ -2417,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": {
@@ -3741,16 +3741,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.68.1",
+ "version": "v3.68.4",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "b9db2b2ea3cdba7201067acee46f984ef2397cff"
+ "reference": "5c2f466ef3d7eba8af9463bcab829370b975333f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b9db2b2ea3cdba7201067acee46f984ef2397cff",
- "reference": "b9db2b2ea3cdba7201067acee46f984ef2397cff",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/5c2f466ef3d7eba8af9463bcab829370b975333f",
+ "reference": "5c2f466ef3d7eba8af9463bcab829370b975333f",
"shasum": ""
},
"require": {
@@ -3832,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.68.1"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.4"
},
"funding": [
{
@@ -3840,7 +3840,7 @@
"type": "github"
}
],
- "time": "2025-01-17T09:20:36+00:00"
+ "time": "2025-01-30T09:14:56+00:00"
},
{
"name": "macopedia/phpstan-magento1",
@@ -3920,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": {
@@ -3937,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",
@@ -3967,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": [
{
@@ -3975,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": {
@@ -3999,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"
@@ -4031,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",
@@ -4113,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": {
@@ -4141,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",
@@ -4531,6 +4532,54 @@
],
"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.2",
@@ -4589,37 +4638,88 @@
],
"time": "2025-01-21T14:54:06+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",
@@ -4628,7 +4728,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.2-dev"
+ "dev-main": "9.2.x-dev"
}
},
"autoload": {
@@ -4657,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": [
{
@@ -4665,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",
@@ -4910,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": {
@@ -4993,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": [
{
@@ -5009,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",
@@ -6918,16 +7018,16 @@
},
{
"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": {
@@ -6977,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": [
{
@@ -6993,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": {
@@ -7066,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": [
{
@@ -7082,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",
@@ -7567,5 +7667,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.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 97d45c2ffe9..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();
}
/**
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 458e49c1f42..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
{
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',
+ ];
+ }
+}
From 7e5a1414b77f4f1cf4e0b61f91dd476952020073 Mon Sep 17 00:00:00 2001
From: Colin Mollenhour
Date: Thu, 6 Feb 2025 13:50:44 -0500
Subject: [PATCH 47/98] Avoid errors when trying to lock config if database is
not yet available (#4603)
---
app/code/core/Mage/Core/Model/Config.php | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/app/code/core/Mage/Core/Model/Config.php b/app/code/core/Mage/Core/Model/Config.php
index 1e38bf1b237..37fb5398a66 100644
--- a/app/code/core/Mage/Core/Model/Config.php
+++ b/app/code/core/Mage/Core/Model/Config.php
@@ -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')");
}
From b1c2dca6328bac62a4b699ceacacfcf048d4786b Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Thu, 6 Feb 2025 22:34:35 +0100
Subject: [PATCH 48/98] TinyMCE: potential fix for code scanning alert:
Inefficient regular expression (#4491)
* Potential fix for code scanning alert no. 102: Inefficient regular expression
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Potential fix for code scanning alert no. 109: Inefficient regular expression
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
---
js/mage/adminhtml/wysiwyg/tinymce/setup.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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;
From e41e8f2ea42a3376c7264f0c46c57be87092d88e Mon Sep 17 00:00:00 2001
From: Colin Mollenhour
Date: Thu, 6 Feb 2025 17:24:46 -0500
Subject: [PATCH 49/98] Add SAMPLE_DATA option to `dev/openmage/install.sh`
(#4602)
* Add SAMPLE_DATA option to dev/openmage/install.sh script and fix warnings.
* Improve reliability of waiting for MySQL to be ready
* Update docs
---------
Co-authored-by: Sven Reichel
---
dev/openmage/README.md | 146 +-------------------
dev/openmage/docker-compose-production.yml | 2 -
dev/openmage/docker-compose.yml | 3 -
dev/openmage/install.sh | 50 ++++++-
docs/content/developers/tools/ddev.md | 7 +-
docs/content/developers/tools/oneline.md | 152 +++++++++++++++++++++
mkdocs.yml | 4 +-
7 files changed, 207 insertions(+), 157 deletions(-)
create mode 100644 docs/content/developers/tools/oneline.md
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/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/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':
From 40eeed331d8db72cbc88fb336ebc7f45fb480d96 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 10:13:00 +0800
Subject: [PATCH 50/98] add mark-netalico as a contributor for bug (#4586)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index d7b8d2ae9c6..4e49bf4fe79 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -244,7 +244,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/2094614?v=4",
"profile": "https://netalico.com/",
"contributions": [
- "code"
+ "code",
+ "bug"
]
},
{
From c7c3d99b35b0bd289d48686afc673922ca9a1d84 Mon Sep 17 00:00:00 2001
From: Colin Mollenhour
Date: Fri, 7 Feb 2025 13:07:13 -0500
Subject: [PATCH 51/98] Add CNAME file to persist the custom domain for docs
site.
---
docs/content/CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 docs/content/CNAME
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
From 7c8a3e5e3e88f621e78f886e9cbfff8468d24f66 Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 22:07:21 +0200
Subject: [PATCH 52/98] add mbattistini as a contributor for bug (#4608)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 9 +++++++++
README.md | 1 +
2 files changed, 10 insertions(+)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 4e49bf4fe79..37cd0a13bd3 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1517,6 +1517,15 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "mbattistini",
+ "name": "mbattistini",
+ "avatar_url": "https://avatars.githubusercontent.com/u/276468?v=4",
+ "profile": "https://github.com/mbattistini",
+ "contributions": [
+ "bug"
+ ]
}
],
"commitType": "docs"
diff --git a/README.md b/README.md
index bb9581cf17b..16f2e9904b5 100644
--- a/README.md
+++ b/README.md
@@ -249,6 +249,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 Rob Agnese |
 Alexander Buch |
+  mbattistini |
From bf95ffc32bada67d736dfdb2d91109d0c50cccb0 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Mon, 10 Feb 2025 17:47:31 +0100
Subject: [PATCH 53/98] php8.3: fix deprecated passing null to `str_replace()`
(#4525)
* php8.3: fix passing null to `str_replace()`
* fix
---
lib/Varien/Object.php | 3 ++-
tests/unit/Varien/ObjectTest.php | 30 ++++++++++++++++++++++++------
2 files changed, 26 insertions(+), 7 deletions(-)
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/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}}',
+ ];
}
/**
From 096f05ba04520b1f45f4ba75b7b51422097a0817 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 00:11:54 +0100
Subject: [PATCH 54/98] Bump mklkj/tinymce-i18n from 24.12.30 to 25.2.3 (#4609)
Bumps [mklkj/tinymce-i18n](https://github.com/mklkj/tinymce-i18n) from 24.12.30 to 25.2.3.
- [Release notes](https://github.com/mklkj/tinymce-i18n/releases)
- [Commits](https://github.com/mklkj/tinymce-i18n/compare/24.12.30...25.2.3)
---
updated-dependencies:
- dependency-name: mklkj/tinymce-i18n
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sven Reichel
---
composer.json | 2 +-
composer.lock | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/composer.json b/composer.json
index d1208aa3825..7a8d4664719 100644
--- a/composer.json
+++ b/composer.json
@@ -30,7 +30,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",
diff --git a/composer.lock b/composer.lock
index e62030a2d8a..de1008ecd74 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": "95341d0b9cd8235df7d71680b3c7a87e",
+ "content-hash": "a2bb45fc20fd05cec1e2e1e3dc9503d7",
"packages": [
{
"name": "colinmollenhour/cache-backend-redis",
@@ -604,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",
@@ -635,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",
@@ -7667,5 +7667,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.3.0"
}
From c9dc1e4d1ed0c5c53bdc34cbb66633845944e75c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 00:12:46 +0100
Subject: [PATCH 55/98] Bump phpstan/phpstan from 2.1.2 to 2.1.3 (#4622)
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/phpstan/phpstan/releases)
- [Changelog](https://github.com/phpstan/phpstan/blob/2.1.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/2.1.2...2.1.3)
---
updated-dependencies:
- dependency-name: phpstan/phpstan
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/composer.lock b/composer.lock
index de1008ecd74..53e41303106 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4582,16 +4582,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.1.2",
+ "version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "7d08f569e582ade182a375c366cbd896eccadd3a"
+ "reference": "64ae44e48214f3deebdaeebf2694297a10a2bea9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7d08f569e582ade182a375c366cbd896eccadd3a",
- "reference": "7d08f569e582ade182a375c366cbd896eccadd3a",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/64ae44e48214f3deebdaeebf2694297a10a2bea9",
+ "reference": "64ae44e48214f3deebdaeebf2694297a10a2bea9",
"shasum": ""
},
"require": {
@@ -4636,7 +4636,7 @@
"type": "github"
}
],
- "time": "2025-01-21T14:54:06+00:00"
+ "time": "2025-02-07T15:05:24+00:00"
},
{
"name": "phpstan/phpstan-phpunit",
From b155a738ccad571d06b26a9622d1faed90b7e4d0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 00:14:53 +0100
Subject: [PATCH 56/98] Bump rector/rector from 2.0.7 to 2.0.8 (#4621)
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.0.7...2.0.8)
---
updated-dependencies:
- dependency-name: rector/rector
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/composer.lock b/composer.lock
index 53e41303106..affca8ef6b6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -5739,21 +5739,21 @@
},
{
"name": "rector/rector",
- "version": "2.0.7",
+ "version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "e70d681f6a0c361a63e6825897cd97746436f015"
+ "reference": "3c70238bc677eb98866000a05b19a34f12955954"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/e70d681f6a0c361a63e6825897cd97746436f015",
- "reference": "e70d681f6a0c361a63e6825897cd97746436f015",
+ "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": "*",
@@ -5786,7 +5786,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.0.7"
+ "source": "https://github.com/rectorphp/rector/tree/2.0.8"
},
"funding": [
{
@@ -5794,7 +5794,7 @@
"type": "github"
}
],
- "time": "2025-01-19T09:41:28+00:00"
+ "time": "2025-02-06T14:02:49+00:00"
},
{
"name": "sebastian/cli-parser",
From 1fb8813d37e5e7aba9f50b90046b13238898b285 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 00:15:40 +0100
Subject: [PATCH 57/98] Bump friendsofphp/php-cs-fixer from 3.68.1 to 3.68.5
(#4530)
Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.68.1 to 3.68.5.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.68.1...v3.68.5)
---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sven Reichel
---
composer.lock | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/composer.lock b/composer.lock
index affca8ef6b6..5df0e1b6762 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3741,16 +3741,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.68.4",
+ "version": "v3.68.5",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "5c2f466ef3d7eba8af9463bcab829370b975333f"
+ "reference": "7bedb718b633355272428c60736dc97fb96daf27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/5c2f466ef3d7eba8af9463bcab829370b975333f",
- "reference": "5c2f466ef3d7eba8af9463bcab829370b975333f",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7bedb718b633355272428c60736dc97fb96daf27",
+ "reference": "7bedb718b633355272428c60736dc97fb96daf27",
"shasum": ""
},
"require": {
@@ -3832,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.68.4"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.5"
},
"funding": [
{
@@ -3840,7 +3840,7 @@
"type": "github"
}
],
- "time": "2025-01-30T09:14:56+00:00"
+ "time": "2025-01-30T17:00:50+00:00"
},
{
"name": "macopedia/phpstan-magento1",
From af31e9b4b623f44aa1441239633ddb0a44fbd38a Mon Sep 17 00:00:00 2001
From: Hans Mackowiak
Date: Fri, 14 Feb 2025 04:18:49 +0100
Subject: [PATCH 58/98] Api2: Fixes getProductUrl (#4511)
---
app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
index 4e36f312dfd..d5f7b64456b 100644
--- a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
+++ b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
@@ -100,8 +100,6 @@ protected function _applyCategoryFilter(Mage_Catalog_Model_Resource_Product_Coll
*/
protected function _prepareProductForResponse(Mage_Catalog_Model_Product $product)
{
- /** @var Mage_Catalog_Helper_Product $productHelper */
- $productHelper = Mage::helper('catalog/product');
$productData = $product->getData();
$product->setWebsiteId($this->_getStore()->getWebsiteId());
// customer group is required in product for correct prices calculation
@@ -118,7 +116,7 @@ protected function _prepareProductForResponse(Mage_Catalog_Model_Product $produc
if ($this->getActionType() == self::ACTION_TYPE_ENTITY) {
// define URLs
- $productData['url'] = $productHelper->getProductUrl($product->getId());
+ $productData['url'] = $product->getProductUrl();
/** @var Mage_Checkout_Helper_Cart $cartHelper */
$cartHelper = Mage::helper('checkout/cart');
$productData['buy_now_url'] = $cartHelper->getAddUrl($product);
From 401435030ff0bbcee3b37df8e5a3bb7161d11404 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Fri, 14 Feb 2025 04:55:51 +0100
Subject: [PATCH 59/98] Cleanup: removed js/jscolor (#4458)
---
js/jscolor/arrow.gif | Bin 66 -> 0 bytes
js/jscolor/cross.gif | Bin 83 -> 0 bytes
js/jscolor/hs.png | Bin 2684 -> 0 bytes
js/jscolor/hv.png | Bin 2865 -> 0 bytes
js/jscolor/jscolor.js | 1011 -----------------------------------------
5 files changed, 1011 deletions(-)
delete mode 100644 js/jscolor/arrow.gif
delete mode 100644 js/jscolor/cross.gif
delete mode 100644 js/jscolor/hs.png
delete mode 100644 js/jscolor/hv.png
delete mode 100644 js/jscolor/jscolor.js
diff --git a/js/jscolor/arrow.gif b/js/jscolor/arrow.gif
deleted file mode 100644
index 246478a864f812d93d4cd0e0d0ad1c8e2d09c825..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 66
zcmZ?wbhEHbWM|-JSjfZx1poj4Utv=LM2bII7`Ygj7<53QAbAERVV@R>f}L*~a`L;Z
PKCZl?^}@uHk--`OML81Y
diff --git a/js/jscolor/cross.gif b/js/jscolor/cross.gif
deleted file mode 100644
index 0ee9c7ac517bee40b78aea03afa809631f0b69fa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 83
zcmZ?wbhEHb3k<8jPQJQ=fuv5eVo^ZVob{r>y?yxzz6n|{I3RuQNUl#q~6w6{Y!i_W*AbzM$M
zv?qg)_ee+pt?W@2m!pR{B_p?CM-{APX1sq0k!v%Dx?=2xC6f&jlZz_Dn#dT_Y>InI
z6zGP*0qIZBM5F|EZW=wONLxZCI;oxx8efxF<=55NtkzwRuA@S|$OSZUS~0
zbSDgzxPwEAll?BgdT}XWOAZOcMD`pUO+CGfB}rVxe|WEK0gw_Tz-cDmNG4L+O1BG&
zsF@TK6o0+-x8xsR`X2n=3~i7e()sQ8nbs7jD=(px9H|qDd%c<@)UuI(EKt5ngFHjS
zh|qTPjol+wD*VrOrP2AHgU&lZ7-h-S-Ry`OC^$7+KSF!aG?mu&pn3IaR(#Gf!EQP!
zqeS?o6nx*@RWD5RUuQ+fDEvFrgK2PwV_AaZi_nFD)fY6UXpc#9)D{%+=WH
ztBRU(0-f)NSeD3_)#+p<)n=t7Y1EDi=wXXR?Z#vSuGOPoT|XQYUp$jeW`dW9Q1kjz#P#FKJ!aH3zn{59p6;=yx%D9tmqxQwiPk>^XJ#hnQPa&UStGb;zpzVAA13RQ2C{(WQtPtlHN+xES>Qyk?T{p)3L
zKdG1CZ}noWtWb#qCxunq6cmKZkSp8AJFQzC5VAmliNf$>rVM$2Q1P|$>9btrJLz|{
zSEp42us*S@mNJKs{J(s20WSGheRHFfo!iS!%VR(!BLtg%5&G73YBwnQiPTC@yb!(mV=4^=hMGc{L0KQ&GaYT41_sNl0+=?tU1#T8=w<5Hp>qu7gwyz
zwLL3bXQ5-%%-%`x@Pre{8xpv$>VeI=t#(~rx$b&PV(x))i0v`~VbW)#SQBCXq2{3C
z4AjaS!bRt4Q?8=ly@6M=+29nh0d(fs{K~%zNbr`+-cFUZNG!0O=
ztBy>FTi+F8DTC6pr<-QLfNg0`0~OrWJ{oz=)6L|D%a{=NsYO5|-NfUp7Y1+9*lFRJ
z5eJQ!*^GZ@s9{T9oBa_K8|h+p-X6RjZg2E_MT>zCjV(~r*6%7Sij>(`t)O^DQ?5kw
z*5IZ}6Yl9oCX2J~K~(ouR!YtW!n|s+M;#USu3QS5lI+Z7T#@>eP@xM!TPE-?u=Htd
z49Zqbfk!YI?d;mMp}J=|f0P<;(10YFMR-D=9)aeZ@G{Ezv(9sw5v++8tRHhq6NB;-
zH2vx(PU1qD_8+#|>&xHm)UbkK4M?w_%wFEr_E+5T%vx9E!xmutZiFRIq28_H5VovP
z_lMzL{cKdx%a2HTauX~RSRYm)64<0F_{Nbco!|_?rpPw_J}NA-umuds1iE=$J7Q`F
zd!s(MKF>pom>+ITdp;<{lMnDf4uN>z#SiECQt#jM)8rIa7;kozw6%A3yMEz5P%>>m
zP^aP@mh`^eyybD<|3=Fv?u;ybH7RFB;|YJx_d1J;6wJ4KGeT+E44^QNm!_X5b@{by
z^qAAkM5!d@0aKxHZ8pbuQ7dm3CvtBsZV5_Hgs2II9V+0N-jO
z<7fC^Ce~l|mVr*^!BrfL2MdrqJ@FI)L|?pK(7K}a393z0of$38A-e)82RKKU@XM+GiX?Y$A|=p{IK)2ld$R?8M=wUPAOfgq5a^
zjXY_~fw7l{P`h&ljSQ;F(xYQzv?H8HuM}KNO-j0-M-5?t<^wZ3n@*m2ebd~#%i(;jkY@`es^)?`9scc%tlnlUq+;7p=^6Tm`D0W}i)}TQA0bY8fVJ@Ykj4dfDYvd{
zjmUxdb}M2@x@URp28`;9B~+Ps7g`6cP9NO%S~Zm#UzG*YLiaT_OPTB(e#8W+bIJtG
zHSn{{R7Ah+{aGq1u=3L$M3#B`zC!tx`wk~q^gwlhT41Cwgft#({kId%-IMMflvHxU{(d)BqpTjk&WEXSBpAD;%Rb
zpPV1>?v#`9OCL@2@8?GllEy7V6uP>x>Ajs}Hm)}I8R(EtQ*KD5B(Y*OBNM)%$`!A2
zv+I7!11vu%pSE=1PZ>w~XKP*NFI`|o?X0yNT(?y(-ta%=LQ4K;p%&07YKL*_5P7rr
zR9kKx+y`tt(7_svRuxC8;j)miAfSX?M|9Ladf4zeO?n&EMM2JE0Q6A5#?^TU3!~Vl
zs4+YvJ!u|5x*cR;3M`2ol(60+K1QomP+|c!3SOBpo`2I4Al%NaA;URpKsgTQ`um*)
z$$0jzaM_tG3$^<%+IquqoA<(IXZhE{tm>@gJUP5p{A3J6+&@8B1Ab`k#pS#XQGLsb
z!I1N@6}*sK$&^j&E9UfVBsE3Cy09vRRbP@j2V8RUyS}$EzQISB8Wob;L&@gXJ0-qG
zN5LYq5L0xS_C~Y5ieq)J$^evnrYxC3DF5rA^JvXg$)Z@TW4d~?c5Fm1;n8+WV9n3A
zREIvTfx}B&q+1AP^S|orTG__8w)t@5vGN(1#THk!CKLHp`#)!zH7z`x^Y2abdkC%N
zVpo9#I|*N>2gAEStK;2nH>2-d8UgV}Ce62}O-VSnpIx1GP7~)f>xpwmI^Gq>t9ccs
zdo47kYWW=g+WUVuK=)o4jL>*SZet8NcRq)42(#4#7K&?jfMC8bH5#uho9aCC9Sc8|
z&eN*3Xr9L%twp11piU_UMd7cxt!d0dy(tNJ+3&*_^j;1X9gV|DYj@pg2={0^wT+T5
z?Xw4UzW(|>jIRGsKJaB+PUaLZQP!rJ26J1VGh%$e>x-WKf|{S*YSJH@EETJjsGMoT
zZ6{6eiS3#V@YL5Z@Hgy9@bEpRGI;>Z_}tQa8IhV#m14ak_?Dm8Rb(N8c>8!Bbg8nV
z@Fnflx2C1NJLL_>Z|O7~CV@n+T&C@vpgqh~t(`X)qaj=ypFdgdNZsNlmAwU7;S#iO
z`J>RxSlI>*l1c;-I(BztG~ID9hmZHLX}mTDprkNW`2*nM`NCrG^K)aoYd*>U5=8}T
zz<8Trh(5#1==-ntBY@u7k%!+X7o>B<{Wf^*@YzUESz$bKtAufemd7|St0063A+%|%
YzFqsNg>|5V=vOIWZ|#VBZRvIQe;Bk#LI3~&
diff --git a/js/jscolor/hv.png b/js/jscolor/hv.png
deleted file mode 100644
index 1c5e01f8bcecc4cf835e8eeeaa43ef2c06789022..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2865
zcmX9=3pmqV7@teXHB3Y-6(VIKN(`gs(lEJ2EJSn5Crm8<3KhyeDHUOICnT3LV_lSr
zSZ;GyqBJp=+1PCR_SJKqbI$X;=RD_m-{1TDz3)kPaYD#Qs!D=DAQ^i*TUWu}ESNzO
z!h$tb?&uc~NOHs8*4pjL*kZxr-PxxyX>x_gxykAYer+%xw7GJL6<~$lv;J_uukT@e
zT+7b}$(pn*(JJ8$DZ#LZ01jlU-F%s?>x-3}&1jWkz{Hc;TVcidNj^67rKf!1D*@3)
ztLL+`4RJ%9hMug+6V6!!-IHycuV!0OlQmpmv2CKSg0YG1{n}Dwm~{0fWmk@tnE%bH
zGDMD}$zh}Xd*A5Jr>Ab?KaI7@rj$4go;`Iq6;(c5H(>=6GfP&HNa3NNYQLnDvJ2ne
z$YJeDOOojN`RsDxcPJ(@V2^adMpBgs?_RszQhhwQTbkTUT9<$&gblmnY#tn#SD%?s
z6!FjP;K)%vq`iXljQbV;EA`q3gN>D#kt_%-rrtu}_V)B!9x+O;F>_Uw;U$2LUW(r(
zZ^t$jiL0NIPPJC#r9ftBYTo7JNd@BVMwfPoS>#W-s{js57)P8TQqF2LKJSC~q
zN`(OhzStrI{*42`M}?+OHN|N(nHmc2&ss7X>pqp|EuFchzf#w`Q<>0h788{$3pLsi
z{A+Y8H$ZvOeD+cX_=w?G*WmD7#5x;KQ;esP!0)6)^5AH8-y+H+(ltKN1HTE6jI?K
z(Oj2zOym!q0yMO-dc+a4KFGVLQdOCayj7RKSbo5}XS%`Er&=Enk8l=Lt4N_|ws%>z
zDTw$}Y`Nm#m5bv
zhmbvJfbg?pPsmqI$V;VUb6K4%(8Blyamyoc^3Mt~#nxOV2-1;QS
z7!g7Xk6~wu3v&9INnRdHE*gAiCyeFJfduHa!!F*?W}`Rm+67%Q2s@LIH)iL^`wkK?
zP=B5?DxX)2ei6KWxu`4O*JwZU+*(Cn+LV2vEPKLR@_s$KUT7@2PHFKwyIUh>^m?5T
z#Wg9M+ONj0h5LZ>!IpK?OV*wMW)AaJ>s;#DyjnhJJV%E}HpnL*e41CBd!#oRt0hRq
zD7&FLe2(1tZe#9{PBC=l7=zkzp0E>J}%G@Q)V(&5;V;
z_Ip{Z1E&&~f`Si(E^g}CJnwWVfQ{%Unn?l%XMGXgcA?zDBpPe^pO`J?UGQi2^T4)IUfoOnd(>JAQ8aPg@
zB_;;xwvXzblZt7u^BsB>aU@zJE1ch*TlQwuWu7BDuKT{66^RATo0B+Y!@Lhy1GSwWwEi=Q+}{?yp8BIm>I-u0&;G(EAzl`dWB
zRwuQl%yBKwtv`^NR}gNuzg>8Y(x1DoZboBm7h9&Lhd6FL<64*y8ZDcoR+2S>La>P{
zdT}{ovrGh|#CyWM!R~Nh2aG>ZjO+}-icsKGb<8`S26!F3nT0k<6$)RZuei(y1^m-V
z`FzfUFvRX2AB~LzUAD`t4sh4+X?+2kj20+cq*#lahA)7AosJ-k#=;GD*U}97uFLKj
zo^@6(zQe&aeK^$2IN*IzWO-uxdlY3#5IvJ?Va5_yC8^$xf6c)Wz8!vpPzq^I#s8-J
zYyM?GrR0`h}1un-M;JJa=H9Ncb^MF#<$~pqrt4epF8nadCmVNKJuIWM9YdYW&cwO1A~wUN
zrd-jpV#03i+W0W%1&nO}Uy!h7u>^0`~OuH_{)(AjBe;hsQ!*)mO_DzpGRC
zyox}(f&d2Gpi6^iw#eB7bVT;3FFa@cC>tM0
zh`Tj?={tK()4_woqpfX-$RrW>1rj>)NVFkyuySiiw7RSW_`4Px7jCb2c4SAc`*^t$*(d
zB&ak&1Rbch68*E0=N1vmji9yfXFnH>R$*ue>|7dPIO)*efxInfOwf5~K+Ou1gVxLJ
znHJS9zagvG#*KbWDL=8YuMi#xgFQZk9Mq{0A}gF)8u?-xvaEZdtqyUFRTrLq*p?!~??u&DrIz2ow@FRy0XX+-+%7G>uU0&kTN1W1G|
zr>H6)4|9Ji%2`d{EBb%`9?5PNx968;9+OmY4|DC?&+M;;jN=L6in4xY&Q$twq0QFAeZuQ15|q?2tO{QUL*
E0LKozl>h($
diff --git a/js/jscolor/jscolor.js b/js/jscolor/jscolor.js
deleted file mode 100644
index 820d83063dd..00000000000
--- a/js/jscolor/jscolor.js
+++ /dev/null
@@ -1,1011 +0,0 @@
-/**
- * jscolor, JavaScript Color Picker
- *
- * @version 1.4.5
- * @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
- * @author Jan Odvarko, http://odvarko.cz
- * @created 2008-06-15
- * @updated 2015-09-19
- * @link http://jscolor.com
- */
-
-
-var jscolor = {
-
-
- dir : '', // location of jscolor directory (leave empty to autodetect)
- bindClass : 'color', // class name
- binding : true, // automatic binding via
- preloading : true, // use image preloading?
-
-
- install : function() {
- jscolor.addEvent(window, 'load', jscolor.init);
- },
-
-
- init : function() {
- if(jscolor.binding) {
- jscolor.bind();
- }
- if(jscolor.preloading) {
- jscolor.preload();
- }
- },
-
-
- getDir : function() {
- if(!jscolor.dir) {
- var detected = jscolor.detectDir();
- jscolor.dir = detected!==false ? detected : 'jscolor/';
- }
- return jscolor.dir;
- },
-
-
- detectDir : function() {
- var base = location.href;
-
- var e = document.getElementsByTagName('base');
- for(var i=0; i vs[a] ?
- (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
- tp[a],
- -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
- (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
- (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
- ];
- }
- drawPicker(pp[a], pp[b]);
- }
- };
-
-
- this.importColor = function() {
- if(!valueElement) {
- this.exportColor();
- } else {
- if(!this.adjust) {
- if(!this.fromString(valueElement.value, leaveValue)) {
- styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
- styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
- styleElement.style.color = styleElement.jscStyle.color;
- this.exportColor(leaveValue | leaveStyle);
- }
- } else if(!this.required && /^\s*$/.test(valueElement.value)) {
- valueElement.value = '';
- styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
- styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
- styleElement.style.color = styleElement.jscStyle.color;
- this.exportColor(leaveValue | leaveStyle);
-
- } else if(this.fromString(valueElement.value)) {
- // OK
- } else {
- this.exportColor();
- }
- }
- };
-
-
- this.exportColor = function(flags) {
- if(!(flags & leaveValue) && valueElement) {
- var value = this.toString();
- if(this.caps) { value = value.toUpperCase(); }
- if(this.hash) { value = '#'+value; }
- valueElement.value = value;
- }
- if(!(flags & leaveStyle) && styleElement) {
- styleElement.style.backgroundImage = "none";
- styleElement.style.backgroundColor =
- '#'+this.toString();
- styleElement.style.color =
- 0.213 * this.rgb[0] +
- 0.715 * this.rgb[1] +
- 0.072 * this.rgb[2]
- < 0.5 ? '#FFF' : '#000';
- }
- if(!(flags & leavePad) && isPickerOwner()) {
- redrawPad();
- }
- if(!(flags & leaveSld) && isPickerOwner()) {
- redrawSld();
- }
- };
-
-
- this.fromHSV = function(h, s, v, flags) { // null = don't change
- if(h !== null) { h = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, h)); }
- if(s !== null) { s = Math.max(0.0, this.minS, Math.min(1.0, this.maxS, s)); }
- if(v !== null) { v = Math.max(0.0, this.minV, Math.min(1.0, this.maxV, v)); }
-
- this.rgb = HSV_RGB(
- h===null ? this.hsv[0] : (this.hsv[0]=h),
- s===null ? this.hsv[1] : (this.hsv[1]=s),
- v===null ? this.hsv[2] : (this.hsv[2]=v)
- );
-
- this.exportColor(flags);
- };
-
-
- this.fromRGB = function(r, g, b, flags) { // null = don't change
- if(r !== null) { r = Math.max(0.0, Math.min(1.0, r)); }
- if(g !== null) { g = Math.max(0.0, Math.min(1.0, g)); }
- if(b !== null) { b = Math.max(0.0, Math.min(1.0, b)); }
-
- var hsv = RGB_HSV(
- r===null ? this.rgb[0] : r,
- g===null ? this.rgb[1] : g,
- b===null ? this.rgb[2] : b
- );
- if(hsv[0] !== null) {
- this.hsv[0] = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, hsv[0]));
- }
- if(hsv[2] !== 0) {
- this.hsv[1] = hsv[1]===null ? null : Math.max(0.0, this.minS, Math.min(1.0, this.maxS, hsv[1]));
- }
- this.hsv[2] = hsv[2]===null ? null : Math.max(0.0, this.minV, Math.min(1.0, this.maxV, hsv[2]));
-
- // update RGB according to final HSV, as some values might be trimmed
- var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
- this.rgb[0] = rgb[0];
- this.rgb[1] = rgb[1];
- this.rgb[2] = rgb[2];
-
- this.exportColor(flags);
- };
-
-
- this.fromString = function(hex, flags) {
- var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
- if(!m) {
- return false;
- } else {
- if(m[1].length === 6) { // 6-char notation
- this.fromRGB(
- parseInt(m[1].substr(0,2),16) / 255,
- parseInt(m[1].substr(2,2),16) / 255,
- parseInt(m[1].substr(4,2),16) / 255,
- flags
- );
- } else { // 3-char notation
- this.fromRGB(
- parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
- parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
- parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
- flags
- );
- }
- return true;
- }
- };
-
-
- this.toString = function() {
- return (
- (0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
- (0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
- (0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
- );
- };
-
-
- function RGB_HSV(r, g, b) {
- var n = Math.min(Math.min(r,g),b);
- var v = Math.max(Math.max(r,g),b);
- var m = v - n;
- if(m === 0) { return [ null, 0, v ]; }
- var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
- return [ h===6?0:h, m/v, v ];
- }
-
-
- function HSV_RGB(h, s, v) {
- if(h === null) { return [ v, v, v ]; }
- var i = Math.floor(h);
- var f = i%2 ? h-i : 1-(h-i);
- var m = v * (1 - s);
- var n = v * (1 - s*f);
- switch(i) {
- case 6:
- case 0: return [v,n,m];
- case 1: return [n,v,m];
- case 2: return [m,v,n];
- case 3: return [m,n,v];
- case 4: return [n,m,v];
- case 5: return [v,m,n];
- }
- }
-
-
- function removePicker() {
- delete jscolor.picker.owner;
- document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
- }
-
-
- function drawPicker(x, y) {
- if(!jscolor.picker) {
- jscolor.picker = {
- box : document.createElement('div'),
- boxB : document.createElement('div'),
- pad : document.createElement('div'),
- padB : document.createElement('div'),
- padM : document.createElement('div'),
- sld : document.createElement('div'),
- sldB : document.createElement('div'),
- sldM : document.createElement('div'),
- btn : document.createElement('div'),
- btnS : document.createElement('span'),
- btnT : document.createTextNode(THIS.pickerCloseText)
- };
- for(var i=0,segSize=4; i
Date: Fri, 14 Feb 2025 04:59:47 +0100
Subject: [PATCH 60/98] CodeQL: updated config (#4490)
* CodeQL: updated config
* update
* update workflow
---
.github/codeql-config.yml | 20 ++------------------
.github/workflows/check-files.yml | 4 ++--
2 files changed, 4 insertions(+), 20 deletions(-)
diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml
index 91051af581b..9b1a87f9a4a 100644
--- a/.github/codeql-config.yml
+++ b/.github/codeql-config.yml
@@ -1,22 +1,6 @@
-
paths-ignore:
+ - 'js/extjs/ext-tree.js'
+ - 'js/lib/jquery/jquery-1.12.4.js'
- 'js/prototype/prototype.js'
- - 'skin/frontend/rwd/default/js/lib/selectivizr.js'
- - 'js/mage/adminhtml/flexuploader.js'
- - 'js/mage/adminhtml/sales/packaging.js'
- - 'js/mage/adminhtml/uploader/instance.js'
- - 'js/mage/adminhtml/wysiwyg/tiny_mce/setup.js'
- 'js/prototype/validation.js'
- - 'js/tiny_mce/tiny_mce_dev.js'
- - 'js/tiny_mce/tiny_mce.js'
- - 'js/tiny_mce/tiny_mce_src.js'
- - 'js/tiny_mce/tiny_mce_jquery.js'
- - 'js/tiny_mce/tiny_mce_jquery_src.js'
- - 'js/tiny_mce/tiny_mce_prototype.js'
- - 'js/tiny_mce/tiny_mce_prototype_src.js'
- - 'js/tiny_mce/classes/**/*.js'
- - 'js/tiny_mce/utils/**/*.js'
- - 'js/tiny_mce/plugins/**/*.js'
- - 'js/lib/jquery/jquery-1.12.4.js'
- - 'js/extjs/ext-tree.js'
- '**/*.test.js'
diff --git a/.github/workflows/check-files.yml b/.github/workflows/check-files.yml
index 7279dc632f7..e07b24b94f1 100644
--- a/.github/workflows/check-files.yml
+++ b/.github/workflows/check-files.yml
@@ -88,7 +88,7 @@ jobs:
**/*.phtml
**/*.xml
**/*.js
- .github/workflows/**
+ .github/**
**phpcs**
**php-cs-fixer**
**phpmd**
@@ -143,7 +143,7 @@ jobs:
id: changes-workflow
if: steps.changed-files-specific.outputs.any_modified == 'true'
run: |
- count="$(grep -oE ".github/workflows/**" <<< "${{ steps.changed-files-specific.outputs.all_modified_files }}" | wc -l)"
+ count="$(grep -oE ".github/**" <<< "${{ steps.changed-files-specific.outputs.all_modified_files }}" | wc -l)"
echo "$count Workflow file(s) changed"
echo "workflow=$count" >> $GITHUB_OUTPUT
From 1d6e002bb4b0dce4db60e582ef65e25ff8ffeedc Mon Sep 17 00:00:00 2001
From: Ng Kiat Siong
Date: Fri, 14 Feb 2025 14:19:57 +0800
Subject: [PATCH 61/98] Cache store in API2 for performance. (#4631)
---
app/code/core/Mage/Api2/Model/Resource.php | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/app/code/core/Mage/Api2/Model/Resource.php b/app/code/core/Mage/Api2/Model/Resource.php
index 9d76db69a0b..c22360c42d0 100644
--- a/app/code/core/Mage/Api2/Model/Resource.php
+++ b/app/code/core/Mage/Api2/Model/Resource.php
@@ -172,6 +172,11 @@ abstract class Mage_Api2_Model_Resource
*/
protected $_multicall;
+ /**
+ * @var Mage_Core_Model_Store
+ */
+ protected $_store;
+
/**
* Dispatch
* To implement the functionality, you must create a method in the parent one.
@@ -1029,6 +1034,9 @@ public function getEavAttributes($onlyVisible = false, $excludeSystem = false)
*/
protected function _getStore()
{
+ if ($this->_store) {
+ return $this->_store;
+ }
$store = $this->getRequest()->getParam('store');
try {
if ($this->getUserType() != Mage_Api2_Model_Auth_User_Admin::USER_TYPE) {
@@ -1049,6 +1057,7 @@ protected function _getStore()
// store does not exist
$this->_critical('Requested store is invalid', Mage_Api2_Model_Server::HTTP_BAD_REQUEST);
}
+ $this->_store = $store;
return $store;
}
}
From c67f9356ca1eb4f12307f887ba2e59d034702c26 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Fri, 14 Feb 2025 07:20:31 +0100
Subject: [PATCH 62/98] TinyMCE: disable WYSIWYG if not installed (#4495)
* TinyMCE: disable WYSIWYG if not installed
* use composer-runtime-api
---
app/code/core/Mage/Cms/Model/Wysiwyg/Config.php | 17 ++++++++++++++---
composer.json | 2 +-
composer.lock | 7 ++++---
3 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php b/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php
index 194ab470de5..11c70d933a6 100644
--- a/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php
+++ b/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php
@@ -14,6 +14,8 @@
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
+use Composer\InstalledVersions;
+
/**
* Wysiwyg Config for Editor HTML Element
*
@@ -25,6 +27,11 @@
*/
class Mage_Cms_Model_Wysiwyg_Config extends Varien_Object
{
+ /**
+ * Wysiwyg store config path
+ */
+ public const WYSIWYG_CONFIG_ENABLED = 'cms/wysiwyg/enabled';
+
/**
* Wysiwyg behaviour: enabled
*/
@@ -138,11 +145,15 @@ public function getSkinImagePlaceholderPath()
*/
public function isEnabled()
{
+ if (!InstalledVersions::isInstalled('tinymce/tinymce')) {
+ return false;
+ }
+
$storeId = $this->getStoreId();
if (!is_null($storeId)) {
- $wysiwygState = Mage::getStoreConfig('cms/wysiwyg/enabled', $storeId);
+ $wysiwygState = Mage::getStoreConfig(self::WYSIWYG_CONFIG_ENABLED, $storeId);
} else {
- $wysiwygState = Mage::getStoreConfig('cms/wysiwyg/enabled');
+ $wysiwygState = Mage::getStoreConfig(self::WYSIWYG_CONFIG_ENABLED);
}
return in_array($wysiwygState, [self::WYSIWYG_ENABLED, self::WYSIWYG_HIDDEN]);
}
@@ -154,6 +165,6 @@ public function isEnabled()
*/
public function isHidden()
{
- return Mage::getStoreConfig('cms/wysiwyg/enabled') == self::WYSIWYG_HIDDEN;
+ return Mage::getStoreConfig(self::WYSIWYG_CONFIG_ENABLED) == self::WYSIWYG_HIDDEN;
}
}
diff --git a/composer.json b/composer.json
index 7a8d4664719..5a8632ae484 100644
--- a/composer.json
+++ b/composer.json
@@ -24,6 +24,7 @@
"ext-simplexml": "*",
"ext-soap": "*",
"ext-zlib": "*",
+ "composer-runtime-api": "^2",
"colinmollenhour/cache-backend-redis": "^1.14",
"colinmollenhour/magento-redis-session": "^3.2.0",
"cweagans/composer-patches": "^1.7",
@@ -48,7 +49,6 @@
},
"require-dev": {
"ext-xmlreader": "*",
- "composer/composer": "^2.7",
"dealerdirect/phpcodesniffer-composer-installer": "^1.0.0",
"friendsofphp/php-cs-fixer": "^3.6",
"macopedia/phpstan-magento1": "^1.1",
diff --git a/composer.lock b/composer.lock
index 5df0e1b6762..ef05de59f21 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": "a2bb45fc20fd05cec1e2e1e3dc9503d7",
+ "content-hash": "992538810d2699241a4b7525097ee91b",
"packages": [
{
"name": "colinmollenhour/cache-backend-redis",
@@ -7659,7 +7659,8 @@
"ext-pdo_mysql": "*",
"ext-simplexml": "*",
"ext-soap": "*",
- "ext-zlib": "*"
+ "ext-zlib": "*",
+ "composer-runtime-api": "^2"
},
"platform-dev": {
"ext-xmlreader": "*"
@@ -7667,5 +7668,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
From 688bdea58a0a876113a53cb574f37473a9a46dc8 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Fri, 14 Feb 2025 07:37:33 +0100
Subject: [PATCH 63/98] added releases (#4607)
---
.../releases/2024-12-20-release-20-11-0.md | 181 ++++++++++++++++++
.../releases/2025-01-15-release-20-12-0.md | 57 ++++++
.../releases/2025-01-16-release-20-12-1.md | 30 +++
.../releases/2025-01-17-release-20-12-2.md | 32 ++++
4 files changed, 300 insertions(+)
create mode 100644 docs/content/blog/posts/releases/2024-12-20-release-20-11-0.md
create mode 100644 docs/content/blog/posts/releases/2025-01-15-release-20-12-0.md
create mode 100644 docs/content/blog/posts/releases/2025-01-16-release-20-12-1.md
create mode 100644 docs/content/blog/posts/releases/2025-01-17-release-20-12-2.md
diff --git a/docs/content/blog/posts/releases/2024-12-20-release-20-11-0.md b/docs/content/blog/posts/releases/2024-12-20-release-20-11-0.md
new file mode 100644
index 00000000000..a7c90b74bd0
--- /dev/null
+++ b/docs/content/blog/posts/releases/2024-12-20-release-20-11-0.md
@@ -0,0 +1,181 @@
+---
+title: Release v20.11.0
+draft: false
+date: 2024-12-20
+comments: true
+authors:
+ - colinmollenhour
+categories:
+ - Releases v20
+hide:
+ - toc
+---
+
+# New Release 20.11.0
+
+As you can see, there are many many changes in this release!
+
+Thanks to all of the contributors for keeping OpenMage one of the fastest and most secure robust open source eCommerce platforms around! [^1]
+
+
+
+### Fixes
+* Show correct version for main branch by @sreichel in https://github.com/OpenMage/magento-lts/pull/4137
+* Allow to use $before parameter in addCss/addJs from XML by @Caprico85 in https://github.com/OpenMage/magento-lts/pull/4151
+* Fixed issues #4134 undefined array index label_use_default in Mage_Catalog_Model_Product_Attribute_Backend_Media by @empiricompany in https://github.com/OpenMage/magento-lts/pull/4136
+* Fix strlen() null deprecation in AccountController.php by @kiatng in https://github.com/OpenMage/magento-lts/pull/4155
+* Added `error` directory to checks + php8.4 fix by @sreichel in https://github.com/OpenMage/magento-lts/pull/4184
+* Add email link to set password. See issue #1205. by @kiatng in https://github.com/OpenMage/magento-lts/pull/3262
+* Fixed undefined array key "values" in Mage_Catalog_Model_Product_Attribute_Backend_Media by @S0FTWEX in https://github.com/OpenMage/magento-lts/pull/4125
+* Fix ACL Resource "admin/sales/order/actions/use" not found by @pbaldauf in https://github.com/OpenMage/magento-lts/pull/4199
+* PHP8: Fixes passing null to `str_contains()` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4203
+* Fixed missing/wrong admin `_setActiveMenu()` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4209
+* Fix wrong Preview link on CMS pages grid by @Caprico85 in https://github.com/OpenMage/magento-lts/pull/4214
+* In product list all swatches are always shown even if they are not available when "Display Out of Stock Products" is disabled by @empiricompany in https://github.com/OpenMage/magento-lts/pull/4100
+* Openmage admin theme: Change background-color for active sections by @sreichel in https://github.com/OpenMage/magento-lts/pull/4219
+* Backport: Added unittest for date and datetime by @sreichel in https://github.com/OpenMage/magento-lts/pull/4210
+* Fixed strcmp(): Passing null to parameter #1 ($string1) of type strin… by @kiatng in https://github.com/OpenMage/magento-lts/pull/4212
+* Custom product types - increased column length for widgets by @sreichel in https://github.com/OpenMage/magento-lts/pull/4226
+* PHP8.1: Added getter method for `Mage_Adminhtml_Block_Widget_Grid_Column::getType()` to return string by @sreichel in https://github.com/OpenMage/magento-lts/pull/4238
+* Admin theme: Change background-color for active sections by @sreichel in https://github.com/OpenMage/magento-lts/pull/4246
+* Deprecated functionality: preg_match(): Passing null to parameter #4 … by @addison74 in https://github.com/OpenMage/magento-lts/pull/4251
+* Bugfix: passing invalid ID to `Mage_Catalog_Model_Url::refreshRewrites()` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4259
+* Configurable: remove unused double foreach loop by @Hanmac in https://github.com/OpenMage/magento-lts/pull/4008
+* Added `ext-ftp` to requirements by @sreichel in https://github.com/OpenMage/magento-lts/pull/4270
+* Fixes configurable swatch color picker in legacy admin theme by @sreichel in https://github.com/OpenMage/magento-lts/pull/4218
+* Fixed incorrect datetime in block, ref #1525 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4242
+* PHP8: base64_decode(): Passing null is deprecated by @sreichel in https://github.com/OpenMage/magento-lts/pull/4281
+* Fix placeholder image in WYSIWYG editor when using a different admin theme by @Caprico85 in https://github.com/OpenMage/magento-lts/pull/4240
+* [PHP 8.4] fgetcsv() - The $escape parameter must be provided as its default value will change by @addison74 in https://github.com/OpenMage/magento-lts/pull/4297
+* [PHP 8.4] fputcsv() - The $escape parameter must be provided as its default value will change by @addison74 in https://github.com/OpenMage/magento-lts/pull/4298
+* Fixes `Mage_Core_Helper_Url::removeRequestParam()` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4295
+* PHP84: ignore deprecated E_STRICT by @sreichel in https://github.com/OpenMage/magento-lts/pull/4289
+* Fix deprecated message for strlen first value null by @leissbua in https://github.com/OpenMage/magento-lts/pull/4306
+* Fixed full name observer calls in config.xml by @sreichel in https://github.com/OpenMage/magento-lts/pull/4309
+* Fix `Mage_Adminhtml_Block_Template::isOutputEnabled()` for invalid module by @sreichel in https://github.com/OpenMage/magento-lts/pull/4320
+* Fix: cannot add to wishlist from tag page - Customer account by @sreichel in https://github.com/OpenMage/magento-lts/pull/4329
+* Fix duplicate block rendering with getSortedChildren() by @justinbeaty in https://github.com/OpenMage/magento-lts/pull/4337
+* [PHP 8.x] Deprecated functionality: strtotime(): Passing null to para… by @addison74 in https://github.com/OpenMage/magento-lts/pull/4339
+* Fixes line-height for some H4 in admin legacy theme by @sreichel in https://github.com/OpenMage/magento-lts/pull/4335
+* Added `ext-pdo_mysql` to checks by @sreichel in https://github.com/OpenMage/magento-lts/pull/4350
+* Fix: create empty SimpleXMLElement by @sreichel in https://github.com/OpenMage/magento-lts/pull/4351
+* Bugfix: cant create order from admin backend by @sreichel in https://github.com/OpenMage/magento-lts/pull/4348
+* Deprecated functionality: preg_replace() by @addison74 in https://github.com/OpenMage/magento-lts/pull/4311
+* Fixed null deprecation in Varien/Convert/Parser/Xml/Excel by @kiatng in https://github.com/OpenMage/magento-lts/pull/4375
+* Fixed null deprecation in `Mage_Catalog_Model_Product_Option_Type_Text::validateUserValue()` by @kiatng in https://github.com/OpenMage/magento-lts/pull/4357
+* Bugfix: `Mage_Adminhtml_Helper_Dashboard_Data::countStores()` on null by @sreichel in https://github.com/OpenMage/magento-lts/pull/4370
+* Fix validateHttpVersion to be RFC 1945 and RFC 7230 compliant by @leissbua in https://github.com/OpenMage/magento-lts/pull/4368
+* Fix for catalog_product_relation not being deleted when bundle option deleted. by @dannydnz in https://github.com/OpenMage/magento-lts/pull/4395
+* Fix unserializeArray on nonserialized string by @Hanmac in https://github.com/OpenMage/magento-lts/pull/4387
+* [Tax] add FK to tax/sales_order_tax again by @Hanmac in https://github.com/OpenMage/magento-lts/pull/4334
+* Fix Possible Array Access warnings in Captcha Observer by @Hanmac in https://github.com/OpenMage/magento-lts/pull/4424
+
+### Features
+* New feature: Added "Newsletter Subscription Form" widget by @empiricompany in https://github.com/OpenMage/magento-lts/pull/4095
+* Added support to specify file upload dir in system configuration by @eneiasramos in https://github.com/OpenMage/magento-lts/pull/4079
+* Add new method to get config value directly from DB bypassing cache. by @kiatng in https://github.com/OpenMage/magento-lts/pull/4163
+* Updated `Varien_Object::getData()` and added `getDataByKey()` & `getDataByPath()` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4205
+* Admin config: added input validation & hide disabled options by @sreichel in https://github.com/OpenMage/magento-lts/pull/4232
+* Better config for admin RSS links by @sreichel in https://github.com/OpenMage/magento-lts/pull/4243
+* Prevent delete/disable CMS pages used in configuration by @sreichel in https://github.com/OpenMage/magento-lts/pull/4239
+* Unified admin grid columns and added XML configuration by @sreichel in https://github.com/OpenMage/magento-lts/pull/4225
+* Make `Mage_GiftMessage` optional in templates by @Hanmac in https://github.com/OpenMage/magento-lts/pull/4266
+* Cache `isModuleOutputEnabled` or `isModuleEnabled` status by @sreichel in https://github.com/OpenMage/magento-lts/pull/4323
+* Use `transliterator_transliterate` to generate "url_key" by @sreichel in https://github.com/OpenMage/magento-lts/pull/4315
+* New feature: Highlight popular countries in country select by @ma4nn in https://github.com/OpenMage/magento-lts/pull/4089
+* Install TinyMCE 7.5 via composer by @sreichel in https://github.com/OpenMage/magento-lts/pull/4113
+
+### Security
+* TinyMCE security fix by @sreichel in https://github.com/OpenMage/magento-lts/pull/4157
+* Obfuscated login credentials in stacktraces by @sreichel in https://github.com/OpenMage/magento-lts/pull/4388
+
+### DDEV
+* [DDEV] Adding n98-magerun support for the test environment by @addison74 in https://github.com/OpenMage/magento-lts/pull/4107
+* DDEV: file permission and bugfix by @sreichel in https://github.com/OpenMage/magento-lts/pull/4145
+* DDEV: command for local development by @sreichel in https://github.com/OpenMage/magento-lts/pull/4133
+* [DDEV] Support for `xhprof`/`xhgui` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4325
+* DDEV: updated install script by @sreichel in https://github.com/OpenMage/magento-lts/pull/4407
+
+### Coding style
+* PHPCS: fixed php compatibility warning by @sreichel in https://github.com/OpenMage/magento-lts/pull/4148
+* PHPCS: ignore `mcrypt` related warnings by @sreichel in https://github.com/OpenMage/magento-lts/pull/4147
+* PHP-CS-Fixer: added check for double quotes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4126
+* PHPCS: fixed last PHPCompatibility check errors by @sreichel in https://github.com/OpenMage/magento-lts/pull/4164
+* Small DocBlock update by @sreichel in https://github.com/OpenMage/magento-lts/pull/4160
+* PHP-CS-Fixer: added check for short array syntax and logical operators by @sreichel in https://github.com/OpenMage/magento-lts/pull/4181
+* PHP-CS-Fixer: added check for concat spaces by @sreichel in https://github.com/OpenMage/magento-lts/pull/4185
+* PHPCS: patched ECG standard by @sreichel in https://github.com/OpenMage/magento-lts/pull/4149
+* Rector: CQ - UnusedForeachValueToArrayKeysRector by @sreichel in https://github.com/OpenMage/magento-lts/pull/4111
+* Rector: DeadCode - removed useless docblocks by @sreichel in https://github.com/OpenMage/magento-lts/pull/4201
+* Rector: added dependency and basic rules by @sreichel in https://github.com/OpenMage/magento-lts/pull/4213
+* Skip some rector rules by @sreichel in https://github.com/OpenMage/magento-lts/pull/4227
+* Add template files to phpstan checks by @sreichel in https://github.com/OpenMage/magento-lts/pull/4245
+* PHPCS-ECG: fail on error by @sreichel in https://github.com/OpenMage/magento-lts/pull/4324
+* Code quality: added PHPMD, updated workflow by @sreichel in https://github.com/OpenMage/magento-lts/pull/4303
+* Rector: updated UnitTests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4391
+* Rector: set methods to private in `Mage.php` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4392
+* Rector: removed useless variables by @sreichel in https://github.com/OpenMage/magento-lts/pull/4393
+* Follow coding-standard PER-CS2.0 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4372
+* PHPCS: merged workflows by @sreichel in https://github.com/OpenMage/magento-lts/pull/4416
+
+### PHPStan
+* Phpstan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4116
+* PhpStan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4146
+* Bump phpstan to level5 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4265
+* PhpStan: bumped to 1.12.1 & renamed config files by @sreichel in https://github.com/OpenMage/magento-lts/pull/4183
+* PhpStan: L7 update for `Mage_Sendfriend` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4187
+* Fixed phpstan on Mage_Customer_Model_Customer by @kiatng in https://github.com/OpenMage/magento-lts/pull/4190
+* Some phpStan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4241
+* Some phpstan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4273
+* Some phpstan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4276
+* Some phpstan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4283
+* PHPStan: added some class vars to templates by @sreichel in https://github.com/OpenMage/magento-lts/pull/4322
+* PHPStan: some fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4328
+* More phpstan fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4291
+* PHPStan: some fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4346
+* PhpStan: some fixes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4363
+
+### PHPUnit
+* PhpUnit: use database for tests, added tests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4138
+* PHPUnit: added some tests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4204
+* Phpunit: ignore timezone in date tests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4284
+* Added more PhpUnit tests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4236
+* PhpUnit: added tests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4321
+* PHPUnit: added tests by @sreichel in https://github.com/OpenMage/magento-lts/pull/4340
+* Added test, ref #4352 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4389
+
+### Cleanup
+* Removed empty `Mage_Poll` config section by @sreichel in https://github.com/OpenMage/magento-lts/pull/4122
+* Removed MTF by @sreichel in https://github.com/OpenMage/magento-lts/pull/4161
+* Updated .gitignore, ref #4161 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4167
+* Remove `Mage_Sendfriend` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4274
+* PHPMD: remove unused private methods/fields by @sreichel in https://github.com/OpenMage/magento-lts/pull/4397
+* Cleanup: removed broken `Mage_Core_Controller_Front_Router` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4356
+* Remove gitpod files by @sreichel in https://github.com/OpenMage/magento-lts/pull/4404
+
+### Docs
+* Docs: Added section for PhpStorm (SCSS) file watcher by @sreichel in https://github.com/OpenMage/magento-lts/pull/4208
+* Documentation v4 📝 - github.io page by @sreichel in https://github.com/OpenMage/magento-lts/pull/4156
+* DOCs: update by @sreichel in https://github.com/OpenMage/magento-lts/pull/4349
+
+### Other
+* CodeQL: updated workflow by @sreichel in https://github.com/OpenMage/magento-lts/pull/4172
+* Added method to make use of `Mage_Core_Model_Security_HtmlEscapedString` easier by @sreichel in https://github.com/OpenMage/magento-lts/pull/4123
+* Worklflow: update copyright monthly by @sreichel in https://github.com/OpenMage/magento-lts/pull/4176
+* Updated Copyright by @github-actions in https://github.com/OpenMage/magento-lts/pull/4189
+* Fixed some typos by @sreichel in https://github.com/OpenMage/magento-lts/pull/4200
+* Preview PR in gitpod by @sreichel in https://github.com/OpenMage/magento-lts/pull/4175
+* Updated Copyright by @github-actions in https://github.com/OpenMage/magento-lts/pull/4237
+* Added polyfill-8.3/8.4 in Composer by @addison74 in https://github.com/OpenMage/magento-lts/pull/4268
+* Updated zf1-future to 1.24.1 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4278
+* Better caching for phpstan workflow by @sreichel in https://github.com/OpenMage/magento-lts/pull/4269
+* Updated Copyright by @github-actions in https://github.com/OpenMage/magento-lts/pull/4327
+* Hotfix: `core_store.store_id` can be `null` by @sreichel in https://github.com/OpenMage/magento-lts/pull/4330
+* Bugfix: cant view order in customer account by @sreichel in https://github.com/OpenMage/magento-lts/pull/4345
+* Bugfix: hide exception, ref #4303 by @sreichel in https://github.com/OpenMage/magento-lts/pull/4344
+* Bugfix: fixed sitemap config depend nodes by @sreichel in https://github.com/OpenMage/magento-lts/pull/4369
+* Fixed issue #4384 bug on not able to view order details in frontend. by @kiatng in https://github.com/OpenMage/magento-lts/pull/4385
+* Updated Copyright by @github-actions in https://github.com/OpenMage/magento-lts/pull/4400
+* Readme: fixed badges by @sreichel in https://github.com/OpenMage/magento-lts/pull/4413
+
+[^1]: https://github.com/OpenMage/magento-lts/releases/tag/v20.11.0
diff --git a/docs/content/blog/posts/releases/2025-01-15-release-20-12-0.md b/docs/content/blog/posts/releases/2025-01-15-release-20-12-0.md
new file mode 100644
index 00000000000..0e6e3839dde
--- /dev/null
+++ b/docs/content/blog/posts/releases/2025-01-15-release-20-12-0.md
@@ -0,0 +1,57 @@
+---
+title: Release v20.12.0
+draft: false
+date: 2025-01-15
+comments: true
+authors:
+ - sreichel
+categories:
+ - Releases v20
+hide:
+ - toc
+---
+
+# New Release 20.12.0
+
+Bugfixes and mainenance. [^1]
+
+
+
+## Changes
+
+## 🚀 Features
+
+- Updated composer-plugin @sreichel (#4455)
+- Deprecate Date\_Short and removed strftime @Hanmac (#4462)
+- Update Mage\_SalesRule\_Model\_Quote\_Discount @Hanmac (#4293)
+
+## 🐛 Bug Fixes
+
+- Fixes grid column type `concat` @sreichel (#4476)
+- Fix regression bug for duplicate block rendering with getSortedChildren() @bucha (#4480)
+- Hotfix: Incorrect attribute localization @sreichel (#4441)
+- Catch exception when invalid country\_id is submitted in estimate ship… @colinmollenhour (#4427)
+
+## 🔨 Maintenance
+
+- add bucha as a contributor for code @allcontributors (#4482)
+- Workflow: release-drafter.yml update @sreichel (#4457)
+- README: updated contributors list @allcontributors (#4479)
+- Cleanup: removed phpversion check @sreichel (#4459)
+- PHP-CS-Fixer: added all directories to checks @sreichel (#4406)
+- Cleanup: update `addHandle()` docblock @sreichel (#4460)
+- Workflow: update PhpStorm meta files @sreichel (#4445)
+- PHPStan: added DOCblocks to most templates :rocket: @sreichel (#4468)
+- Workflow: fixed invalid JSON @sreichel (#4470)
+- PhpUnit: fixes Update LayoutTest.php @sreichel (#4453)
+- PHPUnit: fixed test using wrong date format @sreichel (#4444)
+- Updated phpstan to v2.1 @sreichel (#4430)
+- All contributors bot @sreichel (#4446)
+- Bumped version to 20.12.0 @sreichel (#4442)
+- PHPUnit: added test for `Mage_Core_Model_Layout::getBlockSingleton()` @sreichel (#4431)
+- Workflow: added release drafter @sreichel (#4443)
+- Updated Copyright @github-actions (#4440)
+- Updated README.md @sreichel (#4408)
+- Mini DOCBlock update @sreichel (#4415)
+
+[^1]: https://github.com/OpenMage/magento-lts/releases/tag/v20.12.0
diff --git a/docs/content/blog/posts/releases/2025-01-16-release-20-12-1.md b/docs/content/blog/posts/releases/2025-01-16-release-20-12-1.md
new file mode 100644
index 00000000000..da17f39c1fb
--- /dev/null
+++ b/docs/content/blog/posts/releases/2025-01-16-release-20-12-1.md
@@ -0,0 +1,30 @@
+---
+title: Release v20.12.1
+draft: false
+date: 2025-01-16
+comments: true
+authors:
+ - sreichel
+categories:
+ - Releases v20
+hide:
+ - toc
+---
+
+# New Release 20.12.1
+
+Hotfix introduced bug in last release. [^1]
+
+
+
+## Changes
+
+## 🐛 Bug Fixes
+
+- Fix: error in admin customer edit account @sreichel (#4488)
+
+## 🔨 Maintenance
+
+- Updated phpstan workflow @sreichel (#4461)
+
+[^1]: https://github.com/OpenMage/magento-lts/releases/tag/v20.12.1
diff --git a/docs/content/blog/posts/releases/2025-01-17-release-20-12-2.md b/docs/content/blog/posts/releases/2025-01-17-release-20-12-2.md
new file mode 100644
index 00000000000..b7feed91c11
--- /dev/null
+++ b/docs/content/blog/posts/releases/2025-01-17-release-20-12-2.md
@@ -0,0 +1,32 @@
+---
+title: Release v20.12.2
+draft: false
+date: 2025-01-17
+comments: true
+authors:
+ - sreichel
+categories:
+ - Releases v20
+hide:
+ - toc
+---
+
+# New Release 20.12.2
+
+Some bugfixes. [^1]
+
+
+
+## Changes
+
+## 🐛 Bug Fixes
+
+- No Layout on Redirect in CatalogSearch AdvancedController @Hanmac (#4494)
+- Fix: InvalidParamTypeProvidedNULL: fixed login() method @eneiasramos (#4399)
+- Fix: error in admin edit cart rule @Caprico85 (#4493)
+
+## 🔨 Maintenance
+
+- Update .all-contributorsrc @sreichel (#4481)
+
+[^1]: https://github.com/OpenMage/magento-lts/releases/tag/v20.12.2
From 953eb1feba6005c4057fdc629564d3e1ce282028 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Fri, 14 Feb 2025 07:50:54 +0100
Subject: [PATCH 64/98] DOCS: added ddev docs for windows (#4611)
---
docs/content/blog/.authors.yml | 4 +
.../guides/2024-02-17-ddev-windows-10.md | 165 ++++++++++++++++++
docs/content/developers/tools/ddev.md | 9 +-
mkdocs.yml | 1 +
4 files changed, 174 insertions(+), 5 deletions(-)
create mode 100644 docs/content/blog/posts/guides/2024-02-17-ddev-windows-10.md
diff --git a/docs/content/blog/.authors.yml b/docs/content/blog/.authors.yml
index e726a5ff010..9666bc59a34 100644
--- a/docs/content/blog/.authors.yml
+++ b/docs/content/blog/.authors.yml
@@ -3,6 +3,10 @@ authors:
name: OpenMage
description: Community
avatar: https://avatars.githubusercontent.com/u/57708
+ addison74:
+ name: Addison
+ description: Maintainer
+ avatar: https://avatars.githubusercontent.com/u/8360474
colinmollenhour:
name: Colin Mollenhour
description: Maintainer
diff --git a/docs/content/blog/posts/guides/2024-02-17-ddev-windows-10.md b/docs/content/blog/posts/guides/2024-02-17-ddev-windows-10.md
new file mode 100644
index 00000000000..d3303c7f77c
--- /dev/null
+++ b/docs/content/blog/posts/guides/2024-02-17-ddev-windows-10.md
@@ -0,0 +1,165 @@
+---
+title: Test Environment for OpenMage in Windows 10 Based on DDEV
+draft: false
+date: 2024-08-17
+authors:
+ - addison74
+categories:
+ - Guides
+tags:
+ - DDEV
+ - Windows 10
+---
+
+# Test Environment for OpenMage in Windows 10 Based on DDEV
+
+This guide will be updated frequently.
+
+
+
+### IMPORTANT
+If you run Windows OS in a virtual machine, it is mandatory to activate the virtualization option. For example, in VMware with the virtual machine off, access `Edit virtual machine settings`. In the `Hardware` tab select `Processors` and in the `Virtualization engine` section check the `Virtualize Intel VT-x/EPT or AMD-V/RVI` option.
+
+You need at least 8 GB of memory to run (Docker + PHPStorm) decent. I recommend a machine with 16 GB.
+
+
+
+### (Windows) Installing the Windows Terminal Application
+1. Open the `Microsoft Store` application and search for `Windows Terminal`
+2. Choose the first result then press the `Get` button
+
+
+
+If you use PHPStorm, at the bottom there is a tab called `Terminal`. Here you can run commands in the Linux distribution too.
+
+
+
+### (Windows) Installing WSL2 (Windows Subsystem for Linux 2)
+**The Installation Tutorial**
+https://pureinfotech.com/install-windows-subsystem-linux-2-windows-10/
+
+**Useful Commands**
+https://learn.microsoft.com/en-us/windows/wsl/
+```
+wsl --install
+wsl --version
+wsl --update
+wsl --list --online
+wsl --install -d DISTRO-NAME
+wsl --set-version 2
+```
+
+**Advanced Settings**
+https://learn.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig
+
+You can configure limits on the memory, CPU and swap size allocated to WSL 2 in a `.wslconfig` file. For example, create a file named `.wslconfig` in the `C:\Users\` directory with the following content
+
+```
+[wsl2]
+memory=4GB # Limits VM memory in WSL 2 up to 4 GB
+processors=6
+```
+
+### (Windows) Installing a Linux Distribution
+**Variant 1**
+1. Open the `Command Prompt` application as Administrator
+2. Get the distributions list `wsl --list --online`
+3. Install a distribution `wsl --install -d Ubuntu-20.04`
+4. Reboot the system
+
+**Variant 2**
+1. Open the `Microsoft Store` application and search for Ubuntu
+2. Install an LTS version, for example Ubuntu 20.04.6 LTS
+3. Reboot the system
+
+Open the `Terminal` application then choose a new tab with Ubuntu. Follow the steps to complete the installation, setting the `username` and `password` (e.g. ubuntu / 1234).
+
+
+
+### (Windows) Installing Docker
+https://docs.docker.com/desktop/install/windows-install/
+
+1. Download the installation file `Docker Desktop Installer.exe` and run it as Administrator
+2. During installation check the option `Use WSL 2 instead of Hyper-V (recommended)`
+3. Reboot the system
+
+### (Windows) Installing mkcert for Secured Connections
+https://github.com/FiloSottile/mkcert
+
+1. Download the latest Windows release
+2. Open the `Terminal` application as Administrator
+3. Go to the directory where you downloaded the executable file named `mkcert-vX.X.X-windows-amd64.exe`
+4. Run `mkcert-vX.X.X-windows-amd64.exe --install`
+5. In the popup window, where you are asked if you want to install the certificate, press `Yes`
+
+### (Windows) Linux distribution drive mapping
+
+1. Open the `Windows Explorer` application
+2. On the left side open the `Linux` path and select `Ubuntu-20.04`
+3. Right-click and select `Map network drive...` from the menu. Choose a letter, for example Z:
+
+From now on it appears in the `This PC` section under `Network locations`. If you want to disconnect it, right-click and select `Disconnect` from the menu.
+
+
+
+### (Windows) PHPStorm
+
+Create a new project in PHPStorm that has the location where you cloned the OpenMage repository. If you log in to your GitHub account, you will see in the `Pull Request` tab on the left the open PRs from OpenMage. Open one and checkout to start testing. When you are done, at the bottom of the PHPStorm window you will see the `Git` tab. Click on it, then right click on `Local > main` and select `Checkout`. You can update the repositories, locals and remotes, from time to time and more.
+
+
+
+### (Linux) Installing DDEV
+https://ddev.readthedocs.io/en/latest/users/install/ddev-installation/
+
+1. Open the `Terminal` application and choose a new tab with Ubuntu
+2. Bring all the packages up to date Ubuntu `sudo apt update && sudo apt upgrade -y`
+3. Install DDEV according to the instructions
+
+### (Linux) Copying mkcert Certificates from Windows to Linux
+
+**Variant 1**
+1. Open the `Terminal` application and choose a new tab with Ubuntu
+2. Create the path `mkdir -p /home//AppData/Local/mkcert/* /home//.local//share/mkcert/`
+
+**Variant 2**
+1. Run the `Windows Explorer` application as administrator
+2. Copy the files `rootCA.pem` and `rootCA-key.pem` from `C:\Users\\AppData\Local\mkcert`
+3. Create the path in Linux > Ubuntu-20.04 `/home//openmage`
+3. Clone the OpenMage repository `git clone https://github.com/OpenMage/magento-lts.git /home//openmage`
+4. Go to the directory `/home//openmage`
+5. Run the following DDEV commands. The first command configures the project, the second installs OpenMage dependencies, the third installs Magento Sample Data.
+
+```
+ddev config
+ddev composer install
+ddev openmage-install -s -k
+```
+
+6. Edit the `.ddev/config.yaml` file to change the webserver and PHP version as you want. I am using Apache and PHP 8.3
+
+```
+php_version: "8.3"
+webserver_type: apache-fpm
+```
+
+7. Run the following DDEV commands to load the project in the browser window with a secured connection
+
+```
+ddev start
+ddev launch
+```
+
+For more information about using DDEV please visit https://github.com/OpenMage/magento-lts/blob/main/docs/DDEV.md. It is a fantastic tool!
+
+### CONCLUSION
+As you can see, the more complicated part is the initial configuration of WSL, Docker, DDEV. Once done, it doesn't take more than 3-5 minutes to get an instance of OpenMage ready for testing. Forget about XAMPP, WAMP in Windows.
+
+You can use a test environment in Windows without WSL2, but I do not recommend this configuration because DDEV must be installed in Windows and not inside the Linux distribution. It depends on Mutagen and it is very very slow. Testing in a Linux distribution has many advantages and it is close to moving the project into production.
\ No newline at end of file
diff --git a/docs/content/developers/tools/ddev.md b/docs/content/developers/tools/ddev.md
index e08bb9a970b..993fcee2152 100644
--- a/docs/content/developers/tools/ddev.md
+++ b/docs/content/developers/tools/ddev.md
@@ -8,13 +8,12 @@ tags:
[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 "Docker only"
+ For development environment without dependencies aside from Docker, see the
+ [Docker Compose](/developers/tools/oneline) guide.
!!! info "Test Environment for OpenMage in Windows 10 Based on DDEV"
-
- See https://github.com/OpenMage/magento-lts/discussions/3839
+ For development environment with Windows 10, see this [guide](/blog/2024/08/17/test-environment-for-openmage-in-windows-10-based-on-ddev/).
## Using phpMyAdmin
diff --git a/mkdocs.yml b/mkdocs.yml
index 4fc47e87b05..a1f78264667 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -205,6 +205,7 @@ nav:
- blog/posts/guides/2023-01-09-dynamic-blocks.md
- blog/posts/guides/2022-08-17-observer.md
- blog/posts/guides/2023-05-01-customize-your-openmage.md
+ - blog/posts/guides/2024-02-17-ddev-windows-10.md
- 'Documentation':
- developers/mkdocs.md
- 'Modules':
From 12f3f353eac62d3045f965d8862afb5cede7f018 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Mon, 17 Feb 2025 09:02:22 +0100
Subject: [PATCH 65/98] Updated unit test (#4619)
---
.github/workflows/phpunit.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml
index 04c6eaa23b3..cbec9b75674 100644
--- a/.github/workflows/phpunit.yml
+++ b/.github/workflows/phpunit.yml
@@ -14,8 +14,8 @@ jobs:
strategy:
matrix:
operating-system: [ubuntu-latest]
- php-versions: ['7.4', '8.3']
- mysql-version: ['5.7', '8.0']
+ php-versions: ['7.4', '8.4']
+ mysql-version: ['5.7', '8.0', '8.4']
services:
mysql:
From aeb2ba53d424bfca15a07934506fbc74eef6427c Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Mon, 17 Feb 2025 09:26:56 +0100
Subject: [PATCH 66/98] php8: TypeError: Unsupported operand types: string *
int (#4526)
---
.../Block/Catalog/Product/Edit/Tab/Inventory.php | 5 +++++
.../template/catalog/product/tab/inventory.phtml | 16 ++++++++--------
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php
index 30791290c54..4817d482b5f 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php
@@ -85,6 +85,11 @@ public function getFieldValue($field)
return Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_ITEM . $field);
}
+ public function getFieldValueAsFloat(string $field): float
+ {
+ return (float) $this->getFieldValue($field);
+ }
+
public function getConfigFieldValue($field)
{
if ($this->getStockItem()) {
diff --git a/app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml b/app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml
index ceff60cd098..f2ab71d619f 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml
@@ -48,16 +48,16 @@
|
-
+
- />
+ />
|
__('[GLOBAL]') ?> |
|
- />
+ | />
getFieldValue('use_config_min_qty') || $this->isNew()) ? 'checked="checked"' : '' ?>
onclick="toggleValueElements(this, this.parentNode);" />
@@ -68,7 +68,7 @@
|
|
- />
+ | />
getFieldValue('use_config_min_sale_qty') || $this->isNew()) ? 'checked="checked"' : '' ?>
onclick="toggleValueElements(this, this.parentNode);" class="checkbox" />
@@ -79,7 +79,7 @@
|
|
- />
+ | />
getFieldValue('use_config_max_sale_qty') || $this->isNew()) ? 'checked="checked"' : '' ?>
onclick="toggleValueElements(this, this.parentNode);" class="checkbox" />
@@ -93,7 +93,7 @@
| |
|
__('[GLOBAL]') ?> |
@@ -130,7 +130,7 @@
|
- />
+ | />
getFieldValue('use_config_notify_stock_qty') || $this->isNew()) ? 'checked="checked"' : '' ?>
onclick="toggleValueElements(this, this.parentNode);" class="checkbox" />
@@ -156,7 +156,7 @@
|
|
- />
+ />
getFieldValue('use_config_qty_increments') || $this->isNew()) ? 'checked="checked"' : '' ?>
onclick="toggleValueElements(this, this.parentNode);" class="checkbox" />
From c48ccee811bfdf935791ada2da308b4136319288 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Mon, 17 Feb 2025 09:28:13 +0100
Subject: [PATCH 67/98] Update release-drafter.yml (#4528)
---
.github/release-drafter.yml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
index eef8494a86a..13bdd4924e5 100644
--- a/.github/release-drafter.yml
+++ b/.github/release-drafter.yml
@@ -1,6 +1,9 @@
name-template: 'v$RESOLVED_VERSION 🌈'
tag-template: 'v$RESOLVED_VERSION'
categories:
+ - title: '🚨 Security'
+ labels:
+ - 'security'
- title: '🚀 Features'
labels:
- 'enhancement'
@@ -41,4 +44,4 @@ version-resolver:
template: |
## Changes
- $CHANGES
\ No newline at end of file
+ $CHANGES
From ddec006289145857939321de351cce93e903f107 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Mon, 17 Feb 2025 09:54:53 +0100
Subject: [PATCH 68/98] [Backport] Added form key validation to Contacts form
(#4610)
* added form_key to templates
* added config option
* added translation
* added validation
* added ddev cypress commands
* added simple cypress test
* updated .gitignore
* added ddev cypress commands
* doc
* removed cypress for now
---
.cypress.config.js | 8 ++++++
.gitignore | 7 +++--
.../Contacts/controllers/IndexController.php | 28 +++++++++++++++----
app/code/core/Mage/Contacts/etc/config.xml | 3 ++
app/code/core/Mage/Contacts/etc/system.xml | 19 +++++++++++++
.../base/default/template/contacts/form.phtml | 1 +
.../rwd/default/template/contacts/form.phtml | 1 +
app/locale/en_US/Mage_Contacts.csv | 4 ++-
docs/content/developers/changelog/index.md | 1 -
9 files changed, 63 insertions(+), 9 deletions(-)
create mode 100644 .cypress.config.js
diff --git a/.cypress.config.js b/.cypress.config.js
new file mode 100644
index 00000000000..5d4bb78c460
--- /dev/null
+++ b/.cypress.config.js
@@ -0,0 +1,8 @@
+module.exports = {
+ e2e: {
+ setupNodeEvents(on, config) {
+ // implement node event listeners here
+ },
+ baseUrl: 'https://magento-lts.ddev.site'
+ },
+};
diff --git a/.gitignore b/.gitignore
index c233733bf48..cf66e885b71 100644
--- a/.gitignore
+++ b/.gitignore
@@ -97,10 +97,13 @@ phpunit.xml
# DDEV
.ddev/.sampleData
+.ddev/addon-metadata
.ddev/config.yaml
.ddev/config.*.yaml
.ddev/xhgui
.ddev/xhprof
-.ddev/docker-compose.xhgui.yaml
-.ddev/docker-compose.xhgui_norouter.yaml
+.ddev/docker-compose.*.yaml
app/etc/includes/ddev.xhgui.php
+
+# local development
+.localdev
diff --git a/app/code/core/Mage/Contacts/controllers/IndexController.php b/app/code/core/Mage/Contacts/controllers/IndexController.php
index 97421d62f5a..d832eaf23e1 100644
--- a/app/code/core/Mage/Contacts/controllers/IndexController.php
+++ b/app/code/core/Mage/Contacts/controllers/IndexController.php
@@ -22,6 +22,10 @@
*/
class Mage_Contacts_IndexController extends Mage_Core_Controller_Front_Action
{
+ /**
+ * Use CSRF validation flag from contacts config
+ */
+ public const XML_CSRF_USE_FLAG_CONFIG_PATH = 'contacts/security/enable_form_key';
public const XML_PATH_ENABLED = 'contacts/contacts/enabled';
public const XML_PATH_EMAIL_SENDER = 'contacts/email/sender_email_identity';
public const XML_PATH_EMAIL_RECIPIENT = 'contacts/email/recipient_email';
@@ -61,6 +65,10 @@ public function postAction()
/** @var Mage_Core_Model_Translate $translate */
$translate->setTranslateInline(false);
try {
+ if (!$this->_validateFormKey()) {
+ Mage::throwException($this->__('Invalid Form Key. Please submit your request again.'));
+ }
+
$postObject = new Varien_Object();
$postObject->setData($post);
@@ -112,16 +120,26 @@ public function postAction()
$translate->setTranslateInline(true);
Mage::getSingleton('customer/session')->addSuccess($this->__('Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.'));
- } catch (Mage_Core_Exception $e) {
+ } catch (Mage_Core_Exception $exception) {
$translate->setTranslateInline(true);
- Mage::logException($e);
- Mage::getSingleton('customer/session')->addError($e->getMessage());
- } catch (Exception $e) {
- Mage::logException($e);
+ Mage::logException($exception);
+ Mage::getSingleton('customer/session')->addError($exception->getMessage());
+ } catch (Throwable $throwable) {
+ Mage::logException($throwable);
Mage::getSingleton('customer/session')->addError($this->__('Unable to submit your request. Please, try again later'));
}
}
$this->_redirect('*/*/');
}
+
+ /**
+ * Check if form key validation is enabled in contacts config.
+ *
+ * @return bool
+ */
+ protected function _isFormKeyEnabled()
+ {
+ return Mage::getStoreConfigFlag(self::XML_CSRF_USE_FLAG_CONFIG_PATH);
+ }
}
diff --git a/app/code/core/Mage/Contacts/etc/config.xml b/app/code/core/Mage/Contacts/etc/config.xml
index e29d7907df1..760645b0dd7 100644
--- a/app/code/core/Mage/Contacts/etc/config.xml
+++ b/app/code/core/Mage/Contacts/etc/config.xml
@@ -91,6 +91,9 @@
custom2
contacts_email_email_template
+
+ 0
+
diff --git a/app/code/core/Mage/Contacts/etc/system.xml b/app/code/core/Mage/Contacts/etc/system.xml
index c8aaba1adaf..e082a018659 100644
--- a/app/code/core/Mage/Contacts/etc/system.xml
+++ b/app/code/core/Mage/Contacts/etc/system.xml
@@ -107,6 +107,25 @@
+
+
+ 100
+ 1
+ 1
+ 1
+
+
+
+ select
+ adminhtml/system_config_source_yesno
+ 1
+ 1
+ 1
+ 1
+ Important! Enabling this option means that your custom templates used for contacts form must contain form_key block output. Otherwise contacts form will not work.]]>
+
+
+
diff --git a/app/design/frontend/base/default/template/contacts/form.phtml b/app/design/frontend/base/default/template/contacts/form.phtml
index 0bb81f89ead..b6e594acb3b 100644
--- a/app/design/frontend/base/default/template/contacts/form.phtml
+++ b/app/design/frontend/base/default/template/contacts/form.phtml
@@ -20,6 +20,7 @@
__('Contact Us') ?>
|
From 6f594653fb65aa122f3a45fc239771511e936bd7 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Fri, 28 Feb 2025 17:11:40 +0100
Subject: [PATCH 89/98] Replaced google dashboard charts with Chart.js (via
composer) (#4435)
* Replaced google dashboard charts with Chart.js
* Changed chart size
* Typo [skip ci]
* fixes
* use random_int()
* removed duplicated code
* sonar-1
* sonar-2
* check for installed module
* update
* Update app/code/core/Mage/Adminhtml/Block/Dashboard.php
Co-authored-by: Colin Mollenhour
* copyright, ref https://github.com/MahoCommerce/maho/commit/b4e66fc0a57f735debf6efc5f88f3956c70190bb
* moved constants to correct class
* docs
* Update app/code/core/Mage/Reports/Helper/Data.php
---------
Co-authored-by: Colin Mollenhour
---
.gitignore | 7 +-
.../core/Mage/Adminhtml/Block/Dashboard.php | 7 +-
.../Mage/Adminhtml/Block/Dashboard/Graph.php | 367 ++++++++----------
.../Adminhtml/Block/Dashboard/Tab/Amounts.php | 15 +-
.../Adminhtml/Block/Dashboard/Tab/Orders.php | 15 +-
.../Mage/Adminhtml/Helper/Dashboard/Data.php | 28 +-
.../controllers/DashboardController.php | 25 --
.../core/Mage/Install/Model/Installer.php | 4 +-
app/code/core/Mage/Reports/Helper/Data.php | 9 +
.../Model/Resource/Order/Collection.php | 32 +-
.../default/template/dashboard/graph.phtml | 67 +++-
composer.json | 1 +
composer.lock | 61 ++-
tests/unit/Base/DefaultConfigTest.php | 6 +-
14 files changed, 351 insertions(+), 293 deletions(-)
diff --git a/.gitignore b/.gitignore
index cf66e885b71..001b9f842d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,12 +23,15 @@
/app/etc/modules/Cm_RedisSession.xml
/lib/Credis
-# flow.js library
-/js/lib/uploader
+# ChartJs library
+/js/lib/chartjs
# TinyMCE library
/js/lib/tinymce
+# flow.js library
+/js/lib/uploader
+
# Add development environment setup files and README
# https://github.com/OpenMage/magento-lts/pull/1012
/dev/openmage/docker-magento
diff --git a/app/code/core/Mage/Adminhtml/Block/Dashboard.php b/app/code/core/Mage/Adminhtml/Block/Dashboard.php
index 73a86b54ad5..b92ad182556 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard.php
@@ -24,6 +24,9 @@ class Mage_Adminhtml_Block_Dashboard extends Mage_Adminhtml_Block_Template
/**
* Location of the "Enable Chart" config param
+ *
+ * @deprecated
+ * @see Mage_Adminhtml_Helper_Dashboard_Data::XML_PATH_ENABLE_CHARTS
*/
public const XML_PATH_ENABLE_CHARTS = 'admin/dashboard/enable_charts';
@@ -60,7 +63,9 @@ protected function _prepareLayout()
$this->getLayout()->createBlock('adminhtml/dashboard_searches_top'),
);
- if (Mage::getStoreConfig(self::XML_PATH_ENABLE_CHARTS)) {
+ /** @var Mage_Adminhtml_Helper_Dashboard_Data $helper */
+ $helper = Mage::helper('adminhtml/dashboard_data');
+ if ($helper->isChartEnabled()) {
$block = $this->getLayout()->createBlock('adminhtml/dashboard_diagrams');
} else {
$block = $this->getLayout()->createBlock('adminhtml/template')
diff --git a/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
index 108de96bb23..a5e02008bc1 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
@@ -1,17 +1,12 @@
setTemplate('dashboard/graph.phtml');
+ $this->setDataHelperName('adminhtml/dashboard_order');
+
+ /** @var Mage_Adminhtml_Helper_Dashboard_Order $dataHelper */
+ $dataHelper = $this->getDataHelper();
+
+ /** @var Mage_Core_Controller_Request_Http $request */
+ $request = $this->getRequest();
+
+ $dataHelper->setParam('store', $request->getParam('store'));
+ $dataHelper->setParam('website', $request->getParam('website'));
+ $dataHelper->setParam('group', $request->getParam('group'));
}
/**
@@ -163,23 +148,20 @@ public function getAllSeries()
}
/**
- * Get chart url
- *
- * @param bool $directUrl
- * @return string
+ * @deprecated
+ */
+ public function getChartUrl($directUrl = true)
+ {
+ return '';
+ }
+
+ /**
* @throws Mage_Core_Model_Store_Exception
* @throws Zend_Date_Exception
*/
- public function getChartUrl($directUrl = true)
+ public function generateChart(): array
{
- $params = [
- 'cht' => 'lc',
- 'chf' => 'bg,s,f4f4f4|c,lg,90,ffffff,0.1,ededed,0',
- 'chm' => 'B,f4d4b2,0,0,0',
- 'chco' => 'db4814',
- 'chxs' => '0,0,11|1,0,11',
- 'chma' => '15,15,15,15',
- ];
+ $params = [];
$this->_allSeries = $this->getRowsData($this->_dataRows);
@@ -187,6 +169,69 @@ public function getChartUrl($directUrl = true)
$this->setAxisLabels($axis, $this->getRowsData($attr, true));
}
+ list($datas, $dates) = $this->getChartDatasAndDates();
+ $this->_axisLabels['x'] = $dates;
+ $this->_allSeries = $datas;
+
+ // Image-Charts Awesome data format values
+ $params['chd'] = 'a:';
+ $params['chd'] .= $this->getChartDataFromAllSeries();
+
+ $valueBuffer = [];
+
+ if (!array_key_exists(self::AXIS_X, $this->_axisLabels) ||
+ !array_key_exists(self::AXIS_Y, $this->_axisLabels)
+ ) {
+ return $params;
+ }
+
+ $params['chxt'] = implode(',', array_keys($this->_axisLabels));
+
+ $indexid = 0;
+ foreach (array_keys($this->_axisLabels) as $idx) {
+ if ($idx === self::AXIS_X) {
+ foreach ($this->_axisLabels[$idx] as $_index => $_label) {
+ $this->_axisLabels[$idx][$_index] = '';
+ switch ($this->getDataHelper()->getParam('period')) {
+ case Mage_Reports_Helper_Data::PERIOD_24_HOURS:
+ $this->_axisLabels[$idx][$_index] = $this->formatTime(
+ new Zend_Date($_label, 'yyyy-MM-dd HH:00'),
+ 'short',
+ );
+ break;
+ case Mage_Reports_Helper_Data::PERIOD_7_DAYS:
+ case Mage_Reports_Helper_Data::PERIOD_1_MONTH:
+ $this->_axisLabels[$idx][$_index] = $this->formatDate(
+ new Zend_Date($_label, 'yyyy-MM-dd'),
+ );
+ break;
+ case Mage_Reports_Helper_Data::PERIOD_1_YEAR:
+ case Mage_Reports_Helper_Data::PERIOD_2_YEARS:
+ $formats = Mage::app()->getLocale()->getTranslationList('datetime');
+ $format = $formats['yyMM'] ?? 'MM/yyyy';
+ $format = str_replace(['yyyy', 'yy', 'MM'], ['Y', 'y', 'm'], $format);
+ $this->_axisLabels[$idx][$_index] = date($format, strtotime($_label));
+ break;
+ }
+ }
+
+ $tmpstring = implode('|', $this->_axisLabels[$idx]);
+ $valueBuffer[] = $indexid . ':|' . $tmpstring;
+ }
+
+ if ($idx === self::AXIS_Y) {
+ $valueBuffer[] = $indexid . ':|' . implode('|', $this->getChartYLabels());
+ }
+
+ $indexid++;
+ }
+ $params['chxl'] = implode('|', $valueBuffer);
+
+ return $params;
+ }
+
+ private function getChartDatasAndDates(): array
+ {
$timezoneLocal = Mage::app()->getStore()->getConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_TIMEZONE);
list($dateStart, $dateEnd) = Mage::getResourceModel('reports/order_collection')
@@ -195,69 +240,69 @@ public function getChartUrl($directUrl = true)
$dateStart->setTimezone($timezoneLocal);
$dateEnd->setTimezone($timezoneLocal);
- $d = '';
+ $date = '';
$dates = [];
$datas = [];
while ($dateStart->compare($dateEnd) < 0) {
switch ($this->getDataHelper()->getParam('period')) {
- case '24h':
- $d = $dateStart->toString('yyyy-MM-dd HH:00');
+ case Mage_Reports_Helper_Data::PERIOD_24_HOURS:
+ $date = $dateStart->toString('yyyy-MM-dd HH:00');
$dateStart->addHour(1);
break;
- case '7d':
- case '1m':
- $d = $dateStart->toString('yyyy-MM-dd');
+ case Mage_Reports_Helper_Data::PERIOD_7_DAYS:
+ case Mage_Reports_Helper_Data::PERIOD_1_MONTH:
+ $date = $dateStart->toString('yyyy-MM-dd');
$dateStart->addDay(1);
break;
- case '1y':
- case '2y':
- $d = $dateStart->toString('yyyy-MM');
+ case Mage_Reports_Helper_Data::PERIOD_1_YEAR:
+ case Mage_Reports_Helper_Data::PERIOD_2_YEARS:
+ $date = $dateStart->toString('yyyy-MM');
$dateStart->addMonth(1);
break;
}
foreach (array_keys($this->getAllSeries()) as $index) {
- if (in_array($d, $this->_axisLabels['x'])) {
+ if (in_array($date, $this->_axisLabels['x'])) {
$datas[$index][] = (float) array_shift($this->_allSeries[$index]);
} else {
$datas[$index][] = 0;
}
}
- $dates[] = $d;
+ $dates[] = $date;
}
- /**
- * setting skip step
- */
- if (count($dates) > 8 && count($dates) < 15) {
- $c = 1;
- } elseif (count($dates) >= 15) {
- $c = 2;
- } else {
- $c = 0;
- }
- /**
- * skipping some x labels for good reading
- */
- $i = 0;
- foreach ($dates as $k => $d) {
- if ($i == $c) {
- $dates[$k] = $d;
- $i = 0;
- } else {
- $dates[$k] = '';
- $i++;
+ return [$datas, $dates];
+ }
+
+ private function getChartDataFromAllSeries(): string
+ {
+ $yorigin = 0;
+ $chartdata = [];
+
+ foreach ($this->getAllSeries() as $serie) {
+ $thisdataarray = $serie;
+ $thisdataarrayCount = count($thisdataarray);
+ for ($j = 0; $j < $thisdataarrayCount; $j++) {
+ $currentvalue = $thisdataarray[$j];
+ if (is_numeric($currentvalue)) {
+ $ylocation = $yorigin + $currentvalue;
+ $chartdata[] = $ylocation . $this->dataDelimiter;
+ } else {
+ $chartdata[] = $this->dataMissing . $this->dataDelimiter;
+ }
}
+ $chartdata[] = $this->dataSetdelimiter;
}
- $this->_axisLabels['x'] = $dates;
- $this->_allSeries = $datas;
+ $buffer = implode('', $chartdata);
+ $buffer = rtrim($buffer, $this->dataSetdelimiter);
+ $buffer = rtrim($buffer, $this->dataDelimiter);
- // Image-Charts Awesome data format values
- $params['chd'] = 'a:';
- $dataDelimiter = ',';
- $dataSetdelimiter = '|';
- $dataMissing = '_';
+ return str_replace(($this->dataDelimiter . $this->dataDelimiter), $this->dataSetdelimiter, $buffer);
+ }
+
+ private function getChartYLabels(): array
+ {
$localmaxlength = [];
$localmaxvalue = [];
$localminvalue = [];
@@ -282,10 +327,6 @@ public function getChartUrl($directUrl = true)
// default values
$yLabels = [];
- $miny = 0;
- $maxy = 0;
- $yorigin = 0;
-
if ($minvalue >= 0 && $maxvalue >= 0) {
$miny = 0;
if ($maxvalue > 10) {
@@ -298,109 +339,7 @@ public function getChartUrl($directUrl = true)
}
}
- $chartdata = [];
-
- foreach ($this->getAllSeries() as $serie) {
- $thisdataarray = $serie;
- $thisdataarrayCount = count($thisdataarray);
- for ($j = 0; $j < $thisdataarrayCount; $j++) {
- $currentvalue = $thisdataarray[$j];
- if (is_numeric($currentvalue)) {
- $ylocation = $yorigin + $currentvalue;
- $chartdata[] = $ylocation . $dataDelimiter;
- } else {
- $chartdata[] = $dataMissing . $dataDelimiter;
- }
- }
- $chartdata[] = $dataSetdelimiter;
- }
- $buffer = implode('', $chartdata);
-
- $buffer = rtrim($buffer, $dataSetdelimiter);
- $buffer = rtrim($buffer, $dataDelimiter);
- $buffer = str_replace(($dataDelimiter . $dataSetdelimiter), $dataSetdelimiter, $buffer);
-
- $params['chd'] .= $buffer;
-
- $valueBuffer = [];
-
- if (count($this->_axisLabels)) {
- $params['chxt'] = implode(',', array_keys($this->_axisLabels));
- $indexid = 0;
- foreach (array_keys($this->_axisLabels) as $idx) {
- if ($idx === 'x') {
- /**
- * Format date
- */
- foreach ($this->_axisLabels[$idx] as $_index => $_label) {
- if ($_label != '') {
- switch ($this->getDataHelper()->getParam('period')) {
- case '24h':
- $this->_axisLabels[$idx][$_index] = $this->formatTime(
- new Zend_Date($_label, 'yyyy-MM-dd HH:00'),
- 'short',
- );
- break;
- case '7d':
- case '1m':
- $this->_axisLabels[$idx][$_index] = $this->formatDate(
- new Zend_Date($_label, 'yyyy-MM-dd'),
- );
- break;
- case '1y':
- case '2y':
- $formats = Mage::app()->getLocale()->getTranslationList('datetime');
- $format = $formats['yyMM'] ?? 'MM/yyyy';
- $format = str_replace(['yyyy', 'yy', 'MM'], ['Y', 'y', 'm'], $format);
- $this->_axisLabels[$idx][$_index] = date($format, strtotime($_label));
- break;
- }
- } else {
- $this->_axisLabels[$idx][$_index] = '';
- }
- }
-
- $tmpstring = implode('|', $this->_axisLabels[$idx]);
-
- $valueBuffer[] = $indexid . ':|' . $tmpstring;
- if (count($this->_axisLabels[$idx]) > 1) {
- $deltaX = 100 / (count($this->_axisLabels[$idx]) - 1);
- } else {
- $deltaX = 100;
- }
- } elseif ($idx === 'y') {
- $valueBuffer[] = $indexid . ':|' . implode('|', $yLabels);
- if (count($yLabels) - 1) {
- $deltaY = 100 / (count($yLabels) - 1);
- } else {
- $deltaY = 100;
- }
- }
- $indexid++;
- }
- $params['chxl'] = implode('|', $valueBuffer);
- }
-
- // chart size
- $params['chs'] = $this->getWidth() . 'x' . $this->getHeight();
-
- if (isset($deltaX, $deltaY)) {
- $params['chg'] = $deltaX . ',' . $deltaY . ',1,0';
- }
-
- // return the encoded data
- if ($directUrl) {
- $p = [];
- foreach ($params as $name => $value) {
- $p[] = $name . '=' . urlencode($value);
- }
- return self::API_URL . '?' . implode('&', $p);
- }
-
- $gaData = urlencode(base64_encode(json_encode($params)));
- $gaHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
- $params = ['ga' => $gaData, 'h' => $gaHash];
- return $this->getUrl('*/*/tunnel', ['_query' => $params]);
+ return $yLabels;
}
/**
@@ -506,9 +445,45 @@ protected function _prepareData()
$availablePeriods = array_keys($helper->getDatePeriods());
$period = $this->getRequest()->getParam('period');
+ $this->setChartId($this->getHtmlId() . random_int(0, 100));
$this->getDataHelper()->setParam(
'period',
($period && in_array($period, $availablePeriods)) ? $period : '24h',
);
}
+
+ public function getChartData(): string
+ {
+ return json_encode($this->_allSeries[array_key_first($this->_allSeries)]);
+ }
+
+ public function getChartLabels(): string
+ {
+ return json_encode($this->_axisLabels['x']);
+ }
+
+ public function getChartType(): string
+ {
+ return 'bar';
+ }
+
+ public function getChartId(): string
+ {
+ return $this->getDataByKey('chart_id');
+ }
+
+ public function setChartId(string $chartId): self
+ {
+ return $this->setData('chart_id', $chartId);
+ }
+
+ public function getChartBackgroundColor(): string
+ {
+ return 'rgba(113,121,142,0.7)';
+ }
+
+ public function getChartHoverBackgroundColor(): string
+ {
+ return 'rgba(113,121,142,1.0)';
+ }
}
diff --git a/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php
index a882f2c49c4..e7117d531fe 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php
@@ -22,6 +22,11 @@
*/
class Mage_Adminhtml_Block_Dashboard_Tab_Amounts extends Mage_Adminhtml_Block_Dashboard_Graph
{
+ protected $_axisMaps = [
+ 'x' => 'range',
+ 'y' => 'revenue',
+ ];
+
/**
* Initialize object
*/
@@ -38,17 +43,7 @@ public function __construct()
*/
protected function _prepareData()
{
- $this->setDataHelperName('adminhtml/dashboard_order');
- $this->getDataHelper()->setParam('store', $this->getRequest()->getParam('store'));
- $this->getDataHelper()->setParam('website', $this->getRequest()->getParam('website'));
- $this->getDataHelper()->setParam('group', $this->getRequest()->getParam('group'));
-
$this->setDataRows('revenue');
- $this->_axisMaps = [
- 'x' => 'range',
- 'y' => 'revenue',
- ];
-
parent::_prepareData();
}
}
diff --git a/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php
index 00b690c36da..74af61ed4d0 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php
@@ -22,6 +22,11 @@
*/
class Mage_Adminhtml_Block_Dashboard_Tab_Orders extends Mage_Adminhtml_Block_Dashboard_Graph
{
+ protected $_axisMaps = [
+ 'x' => 'range',
+ 'y' => 'quantity',
+ ];
+
public function __construct()
{
$this->setHtmlId('orders');
@@ -35,17 +40,7 @@ public function __construct()
*/
protected function _prepareData()
{
- $this->setDataHelperName('adminhtml/dashboard_order');
- $this->getDataHelper()->setParam('store', $this->getRequest()->getParam('store'));
- $this->getDataHelper()->setParam('website', $this->getRequest()->getParam('website'));
- $this->getDataHelper()->setParam('group', $this->getRequest()->getParam('group'));
-
$this->setDataRows('quantity');
- $this->_axisMaps = [
- 'x' => 'range',
- 'y' => 'quantity',
- ];
-
parent::_prepareData();
}
}
diff --git a/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php b/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php
index 7bcaeed611a..024c575c0d9 100644
--- a/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php
+++ b/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php
@@ -14,6 +14,8 @@
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
+use Composer\InstalledVersions;
+
/**
* Data helper for dashboard
*
@@ -22,11 +24,24 @@
*/
class Mage_Adminhtml_Helper_Dashboard_Data extends Mage_Core_Helper_Data
{
+ /**
+ * Location of the "Enable Chart" config param
+ */
+ public const XML_PATH_ENABLE_CHARTS = 'admin/dashboard/enable_charts';
+
protected $_moduleName = 'Mage_Adminhtml';
protected $_locale = null;
protected $_stores = null;
+ public function isChartEnabled(): bool
+ {
+ if (!InstalledVersions::isInstalled('nnnick/chartjs')) {
+ return false;
+ }
+ return Mage::getStoreConfigFlag(self::XML_PATH_ENABLE_CHARTS);
+ }
+
/**
* Retrieve stores configured in system.
*
@@ -54,16 +69,16 @@ public function countStores()
/**
* Prepare array with periods for dashboard graphs
*
- * @return array
+ * @return string[]
*/
public function getDatePeriods()
{
return [
- '24h' => $this->__('Last 24 Hours'),
- '7d' => $this->__('Last 7 Days'),
- '1m' => $this->__('Current Month'),
- '1y' => $this->__('YTD'),
- '2y' => $this->__('2YTD'),
+ Mage_Reports_Helper_Data::PERIOD_24_HOURS => $this->__('Last 24 Hours'),
+ Mage_Reports_Helper_Data::PERIOD_7_DAYS => $this->__('Last 7 Days'),
+ Mage_Reports_Helper_Data::PERIOD_1_MONTH => $this->__('Current Month'),
+ Mage_Reports_Helper_Data::PERIOD_1_YEAR => $this->__('YTD'),
+ Mage_Reports_Helper_Data::PERIOD_2_YEARS => $this->__('2YTD'),
];
}
@@ -73,6 +88,7 @@ public function getDatePeriods()
*
* @param string $data
* @return string
+ * @deprecated
*/
public function getChartDataHash($data)
{
diff --git a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
index c8927590a7c..a2b77fef199 100644
--- a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
@@ -74,29 +74,4 @@ public function ajaxBlockAction()
}
$this->getResponse()->setBody($output);
}
-
- public function tunnelAction()
- {
- $httpClient = new Varien_Http_Client();
- $gaData = $this->getRequest()->getParam('ga');
- $gaHash = $this->getRequest()->getParam('h');
- if ($gaData && $gaHash) {
- $newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
- if (hash_equals($newHash, $gaHash)) {
- $params = json_decode(base64_decode(urldecode($gaData)), true);
- if ($params) {
- $response = $httpClient->setUri(Mage_Adminhtml_Block_Dashboard_Graph::API_URL)
- ->setParameterGet($params)
- ->setConfig(['timeout' => 5])
- ->request('GET');
-
- $headers = $response->getHeaders();
-
- $this->getResponse()
- ->setHeader('Content-type', $headers['Content-type'])
- ->setBody($response->getBody());
- }
- }
- }
- }
}
diff --git a/app/code/core/Mage/Install/Model/Installer.php b/app/code/core/Mage/Install/Model/Installer.php
index c743ab52857..d7e9ba7d52d 100644
--- a/app/code/core/Mage/Install/Model/Installer.php
+++ b/app/code/core/Mage/Install/Model/Installer.php
@@ -141,9 +141,9 @@ public function installDb()
}
if (!empty($data['enable_charts'])) {
- $setupModel->setConfigData(Mage_Adminhtml_Block_Dashboard::XML_PATH_ENABLE_CHARTS, 1);
+ $setupModel->setConfigData(Mage_Adminhtml_Helper_Dashboard_Data::XML_PATH_ENABLE_CHARTS, 1);
} else {
- $setupModel->setConfigData(Mage_Adminhtml_Block_Dashboard::XML_PATH_ENABLE_CHARTS, 0);
+ $setupModel->setConfigData(Mage_Adminhtml_Helper_Dashboard_Data::XML_PATH_ENABLE_CHARTS, 0);
}
$unsecureBaseUrl = Mage::getBaseUrl('web');
diff --git a/app/code/core/Mage/Reports/Helper/Data.php b/app/code/core/Mage/Reports/Helper/Data.php
index 7adac525d11..50eae144892 100644
--- a/app/code/core/Mage/Reports/Helper/Data.php
+++ b/app/code/core/Mage/Reports/Helper/Data.php
@@ -24,6 +24,15 @@ class Mage_Reports_Helper_Data extends Mage_Core_Helper_Abstract
public const REPORT_PERIOD_TYPE_MONTH = 'month';
public const REPORT_PERIOD_TYPE_YEAR = 'year';
+ public const PERIOD_CUSTOM = 'custom';
+ public const PERIOD_24_HOURS = '24h';
+ public const PERIOD_7_DAYS = '7d';
+ public const PERIOD_1_MONTH = '1m';
+ public const PERIOD_3_MONTHS = '3m';
+ public const PERIOD_6_MONTHS = '6m';
+ public const PERIOD_1_YEAR = '1y';
+ public const PERIOD_2_YEARS = '2y';
+
public const XML_PATH_REPORTS_ENABLED = 'reports/general/enabled';
protected $_moduleName = 'Mage_Reports';
diff --git a/app/code/core/Mage/Reports/Model/Resource/Order/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Order/Collection.php
index 867ffd517af..64a0d4fb57e 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Order/Collection.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Order/Collection.php
@@ -222,25 +222,25 @@ protected function _prepareSummaryAggregated($range, $customStart, $customEnd)
/**
* Get range expression
*
- * @param string $range
+ * @param Mage_Reports_Helper_Data::PERIOD_* $range
* @return Zend_Db_Expr
*/
protected function _getRangeExpression($range)
{
switch ($range) {
- case '24h':
+ case Mage_Reports_Helper_Data::PERIOD_24_HOURS:
$expression = $this->getConnection()->getConcatSql([
$this->getConnection()->getDateFormatSql('{{attribute}}', '%Y-%m-%d %H:'),
$this->getConnection()->quote('00'),
]);
break;
- case '7d':
- case '1m':
+ case Mage_Reports_Helper_Data::PERIOD_7_DAYS:
+ case Mage_Reports_Helper_Data::PERIOD_1_MONTH:
$expression = $this->getConnection()->getDateFormatSql('{{attribute}}', '%Y-%m-%d');
break;
- case '1y':
- case '2y':
- case 'custom':
+ case Mage_Reports_Helper_Data::PERIOD_1_YEAR:
+ case Mage_Reports_Helper_Data::PERIOD_2_YEARS:
+ case Mage_Reports_Helper_Data::PERIOD_CUSTOM:
default:
$expression = $this->getConnection()->getDateFormatSql('{{attribute}}', '%Y-%m');
break;
@@ -306,7 +306,7 @@ protected function _getTZRangeExpressionForAttribute($range, $attribute, $tzFrom
/**
* Calculate From and To dates (or times) by given period
*
- * @param string $range
+ * @param Mage_Reports_Helper_Data::PERIOD_* $range
* @param string $customStart
* @param string $customEnd
* @param bool $returnObjects
@@ -327,30 +327,30 @@ public function getDateRange($range, $customStart, $customEnd, $returnObjects =
$dateStart->setSecond(0);
switch ($range) {
- case '24h':
+ case Mage_Reports_Helper_Data::PERIOD_24_HOURS:
$dateEnd = Mage::app()->getLocale()->date();
$dateEnd->addHour(1);
$dateStart = clone $dateEnd;
$dateStart->subDay(1);
break;
- case '7d':
+ case Mage_Reports_Helper_Data::PERIOD_7_DAYS:
// subtract 6 days we need to include
// only today and not the last one from range
$dateStart->subDay(6);
break;
- case '1m':
+ case Mage_Reports_Helper_Data::PERIOD_1_MONTH:
$dateStart->setDay(Mage::getStoreConfig('reports/dashboard/mtd_start'));
break;
- case 'custom':
- $dateStart = $customStart ? $customStart : $dateEnd;
- $dateEnd = $customEnd ? $customEnd : $dateEnd;
+ case Mage_Reports_Helper_Data::PERIOD_CUSTOM:
+ $dateStart = $customStart ?: $dateEnd;
+ $dateEnd = $customEnd ?: $dateEnd;
break;
- case '1y':
- case '2y':
+ case Mage_Reports_Helper_Data::PERIOD_1_YEAR:
+ case Mage_Reports_Helper_Data::PERIOD_2_YEARS:
$startMonthDay = explode(',', Mage::getStoreConfig('reports/dashboard/ytd_start'));
$startMonth = isset($startMonthDay[0]) ? (int) $startMonthDay[0] : 1;
$startDay = isset($startMonthDay[1]) ? (int) $startMonthDay[1] : 1;
diff --git a/app/design/adminhtml/default/default/template/dashboard/graph.phtml b/app/design/adminhtml/default/default/template/dashboard/graph.phtml
index dac97837c6f..4d72d519357 100644
--- a/app/design/adminhtml/default/default/template/dashboard/graph.phtml
+++ b/app/design/adminhtml/default/default/template/dashboard/graph.phtml
@@ -1,16 +1,11 @@
__('Select Range') ?>:
- getWidth()}px;height:{$this->getHeight()}px; margin:0 auto;";
- ?>
+ getWidth()};height:{$this->getHeight()}; margin:0 auto;"; ?>
getCount()): ?>
-  ?>)
+ generateChart() ?>
+
+
+
+
__('No Data Found') ?>
diff --git a/composer.json b/composer.json
index 5a8632ae484..79f389019a5 100644
--- a/composer.json
+++ b/composer.json
@@ -32,6 +32,7 @@
"flowjs/flowjs": "dev-master",
"magento-hackathon/magento-composer-installer": "^3.1 || ^2.1 || ^4.0",
"mklkj/tinymce-i18n": "^25.2",
+ "nnnick/chartjs": "^4.4.7",
"openmage/composer-plugin": "^3.0",
"pelago/emogrifier": "^7.0",
"phpseclib/mcrypt_compat": "^2.0.3",
diff --git a/composer.lock b/composer.lock
index 93f6a632c84..42a4c45aa83 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": "992538810d2699241a4b7525097ee91b",
+ "content-hash": "db13f706ae8852602f4561fd4dc5f89a",
"packages": [
{
"name": "colinmollenhour/cache-backend-redis",
@@ -639,6 +639,51 @@
},
"time": "2025-02-03T10:42:25+00:00"
},
+ {
+ "name": "nnnick/chartjs",
+ "version": "v4.4.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/chartjs/Chart.js.git",
+ "reference": "57b5c5b78fb2d8504f556bef6e4177735d9929ea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/chartjs/Chart.js/zipball/57b5c5b78fb2d8504f556bef6e4177735d9929ea",
+ "reference": "57b5c5b78fb2d8504f556bef6e4177735d9929ea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "release/2.0": "v2.0-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "NICK DOWNIE",
+ "email": "hello@nickdownie.com"
+ }
+ ],
+ "description": "Simple HTML5 charts using the canvas element.",
+ "homepage": "https://www.chartjs.org/",
+ "keywords": [
+ "JS",
+ "chart"
+ ],
+ "support": {
+ "issues": "https://github.com/chartjs/Chart.js/issues",
+ "source": "https://github.com/chartjs/Chart.js/tree/v4.4.7"
+ },
+ "time": "2024-12-01T16:35:13+00:00"
+ },
{
"name": "openmage/composer-plugin",
"version": "v3.0.0",
@@ -3508,16 +3553,16 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.12.1",
+ "version": "1.13.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
+ "reference": "024473a478be9df5fdaca2c793f2232fe788e414"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
- "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414",
+ "reference": "024473a478be9df5fdaca2c793f2232fe788e414",
"shasum": ""
},
"require": {
@@ -3556,7 +3601,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0"
},
"funding": [
{
@@ -3564,7 +3609,7 @@
"type": "tidelift"
}
],
- "time": "2024-11-08T17:47:46+00:00"
+ "time": "2025-02-12T12:17:51+00:00"
},
{
"name": "nikic/php-parser",
@@ -7083,5 +7128,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/tests/unit/Base/DefaultConfigTest.php b/tests/unit/Base/DefaultConfigTest.php
index c38e7ed783a..36735a2ed74 100644
--- a/tests/unit/Base/DefaultConfigTest.php
+++ b/tests/unit/Base/DefaultConfigTest.php
@@ -19,7 +19,7 @@
use Generator;
use Mage;
-use Mage_Adminhtml_Block_Dashboard;
+use Mage_Adminhtml_Helper_Dashboard_Data;
use PHPUnit\Framework\TestCase;
class DefaultConfigTest extends TestCase
@@ -37,9 +37,9 @@ public function testGetStoreConfig(string $expectedResult, string $path, $store
public function provideGetStoreConfig(): Generator
{
- yield Mage_Adminhtml_Block_Dashboard::XML_PATH_ENABLE_CHARTS => [
+ yield Mage_Adminhtml_Helper_Dashboard_Data::XML_PATH_ENABLE_CHARTS => [
'1',
- Mage_Adminhtml_Block_Dashboard::XML_PATH_ENABLE_CHARTS,
+ Mage_Adminhtml_Helper_Dashboard_Data::XML_PATH_ENABLE_CHARTS,
];
}
}
From ae258dacfd1a979906771b3f0531e3e3969713f5 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 1 Mar 2025 08:24:21 +0200
Subject: [PATCH 90/98] update copyright (#4658)
Co-authored-by: sreichel <5022236+sreichel@users.noreply.github.com>
---
.../Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Dashboard.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php | 2 +-
app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php | 2 +-
.../Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Number.php | 2 +-
app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php | 2 +-
.../core/Mage/Adminhtml/controllers/DashboardController.php | 2 +-
app/code/core/Mage/Api2/Model/Resource.php | 2 +-
app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php | 2 +-
app/code/core/Mage/Catalog/Model/Layer.php | 2 +-
app/code/core/Mage/Cms/Model/Wysiwyg/Config.php | 2 +-
app/code/core/Mage/Contacts/controllers/IndexController.php | 2 +-
app/code/core/Mage/Contacts/etc/config.xml | 2 +-
app/code/core/Mage/Contacts/etc/system.xml | 2 +-
app/code/core/Mage/Core/Helper/UnserializeArray.php | 2 +-
app/code/core/Mage/Core/etc/system.xml | 2 +-
app/code/core/Mage/Index/Model/Process.php | 2 +-
app/code/core/Mage/Install/Model/Installer.php | 2 +-
app/code/core/Mage/Reports/Helper/Data.php | 2 +-
app/code/core/Mage/Reports/Model/Resource/Order/Collection.php | 2 +-
.../Mage/Reports/Model/Resource/Report/Collection/Abstract.php | 2 +-
.../Reports/Model/Resource/Report/Product/Viewed/Collection.php | 2 +-
.../Mage/Sales/Model/Resource/Report/Bestsellers/Collection.php | 2 +-
app/code/core/Mage/Sitemap/Model/Observer.php | 2 +-
.../default/template/catalog/product/tab/inventory.phtml | 2 +-
.../default/default/template/oauth/authorize/head-simple.phtml | 2 +-
app/design/frontend/base/default/template/contacts/form.phtml | 2 +-
app/design/frontend/rwd/default/template/contacts/form.phtml | 2 +-
errors/processor.php | 2 +-
js/mage/adminhtml/wysiwyg/tinymce/setup.js | 2 +-
lib/Varien/Object.php | 2 +-
31 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php
index 4817d482b5f..4eed7f503f8 100644
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.php
+++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Inventory.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/Dashboard.php b/app/code/core/Mage/Adminhtml/Block/Dashboard.php
index b92ad182556..7ef0684cd2e 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard.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/Dashboard/Tab/Amounts.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php
index e7117d531fe..1398ef76575 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Amounts.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/Dashboard/Tab/Orders.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php
index 74af61ed4d0..b3145784487 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Tab/Orders.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/Grid/Column/Renderer/Number.php b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Number.php
index fbbc0eaccc8..3209000edf3 100644
--- a/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Number.php
+++ b/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Number.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/Helper/Dashboard/Data.php b/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php
index 024c575c0d9..750c433a11e 100644
--- a/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php
+++ b/app/code/core/Mage/Adminhtml/Helper/Dashboard/Data.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Adminhtml
* @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/Adminhtml/controllers/DashboardController.php b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
index a2b77fef199..8224a8a457b 100644
--- a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/DashboardController.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/Api2/Model/Resource.php b/app/code/core/Mage/Api2/Model/Resource.php
index c22360c42d0..51ec32b595f 100644
--- a/app/code/core/Mage/Api2/Model/Resource.php
+++ b/app/code/core/Mage/Api2/Model/Resource.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/Catalog/Model/Api2/Product/Rest.php b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
index d5f7b64456b..f4048e69cfd 100644
--- a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
+++ b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.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/Layer.php b/app/code/core/Mage/Catalog/Model/Layer.php
index 88ba8147157..bf1c34a10cc 100644
--- a/app/code/core/Mage/Catalog/Model/Layer.php
+++ b/app/code/core/Mage/Catalog/Model/Layer.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/Cms/Model/Wysiwyg/Config.php b/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php
index 11c70d933a6..df813770722 100644
--- a/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php
+++ b/app/code/core/Mage/Cms/Model/Wysiwyg/Config.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/Contacts/controllers/IndexController.php b/app/code/core/Mage/Contacts/controllers/IndexController.php
index d832eaf23e1..e1b0bd802ca 100644
--- a/app/code/core/Mage/Contacts/controllers/IndexController.php
+++ b/app/code/core/Mage/Contacts/controllers/IndexController.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Contacts
* @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/Contacts/etc/config.xml b/app/code/core/Mage/Contacts/etc/config.xml
index 760645b0dd7..3d4faae63c4 100644
--- a/app/code/core/Mage/Contacts/etc/config.xml
+++ b/app/code/core/Mage/Contacts/etc/config.xml
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Contacts
* @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/code/core/Mage/Contacts/etc/system.xml b/app/code/core/Mage/Contacts/etc/system.xml
index e082a018659..cdd775cced2 100644
--- a/app/code/core/Mage/Contacts/etc/system.xml
+++ b/app/code/core/Mage/Contacts/etc/system.xml
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Contacts
* @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/code/core/Mage/Core/Helper/UnserializeArray.php b/app/code/core/Mage/Core/Helper/UnserializeArray.php
index 42a48606d0e..a361585300f 100644
--- a/app/code/core/Mage/Core/Helper/UnserializeArray.php
+++ b/app/code/core/Mage/Core/Helper/UnserializeArray.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/etc/system.xml b/app/code/core/Mage/Core/etc/system.xml
index 658521c349a..84ed7a6a940 100644
--- a/app/code/core/Mage/Core/etc/system.xml
+++ b/app/code/core/Mage/Core/etc/system.xml
@@ -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/afl-3.0.php Academic Free License (AFL 3.0)
*/
-->
diff --git a/app/code/core/Mage/Index/Model/Process.php b/app/code/core/Mage/Index/Model/Process.php
index a3a30851dd8..504c19a602e 100644
--- a/app/code/core/Mage/Index/Model/Process.php
+++ b/app/code/core/Mage/Index/Model/Process.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Index
* @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/Model/Installer.php b/app/code/core/Mage/Install/Model/Installer.php
index d7e9ba7d52d..4e445b7af98 100644
--- a/app/code/core/Mage/Install/Model/Installer.php
+++ b/app/code/core/Mage/Install/Model/Installer.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/Reports/Helper/Data.php b/app/code/core/Mage/Reports/Helper/Data.php
index 50eae144892..f3fb01e057b 100644
--- a/app/code/core/Mage/Reports/Helper/Data.php
+++ b/app/code/core/Mage/Reports/Helper/Data.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Reports
* @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/Reports/Model/Resource/Order/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Order/Collection.php
index 64a0d4fb57e..457e0d9abc8 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Order/Collection.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Order/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) 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/Reports/Model/Resource/Report/Collection/Abstract.php b/app/code/core/Mage/Reports/Model/Resource/Report/Collection/Abstract.php
index 7dde4c75d05..7860bdbaaa3 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Report/Collection/Abstract.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Report/Collection/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/Product/Viewed/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Report/Product/Viewed/Collection.php
index 30ae025b2be..3abda60d04d 100644
--- a/app/code/core/Mage/Reports/Model/Resource/Report/Product/Viewed/Collection.php
+++ b/app/code/core/Mage/Reports/Model/Resource/Report/Product/Viewed/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)
*/
diff --git a/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers/Collection.php b/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers/Collection.php
index 40bbec8a379..24a4782c340 100644
--- a/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers/Collection.php
+++ b/app/code/core/Mage/Sales/Model/Resource/Report/Bestsellers/Collection.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/Sitemap/Model/Observer.php b/app/code/core/Mage/Sitemap/Model/Observer.php
index 7699805a7ec..85f608614bf 100644
--- a/app/code/core/Mage/Sitemap/Model/Observer.php
+++ b/app/code/core/Mage/Sitemap/Model/Observer.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Mage_Sitemap
* @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/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml b/app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml
index f2ab71d619f..f2c9e61e258 100644
--- a/app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml
+++ b/app/design/adminhtml/default/default/template/catalog/product/tab/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) 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/afl-3.0.php Academic Free License (AFL 3.0)
*/
diff --git a/app/design/adminhtml/default/default/template/oauth/authorize/head-simple.phtml b/app/design/adminhtml/default/default/template/oauth/authorize/head-simple.phtml
index 60700d834bb..c54bbedb7a9 100644
--- a/app/design/adminhtml/default/default/template/oauth/authorize/head-simple.phtml
+++ b/app/design/adminhtml/default/default/template/oauth/authorize/head-simple.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/frontend/base/default/template/contacts/form.phtml b/app/design/frontend/base/default/template/contacts/form.phtml
index b6e594acb3b..01743265565 100644
--- a/app/design/frontend/base/default/template/contacts/form.phtml
+++ b/app/design/frontend/base/default/template/contacts/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-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/frontend/rwd/default/template/contacts/form.phtml b/app/design/frontend/rwd/default/template/contacts/form.phtml
index 8063b3c8321..3a121538599 100644
--- a/app/design/frontend/rwd/default/template/contacts/form.phtml
+++ b/app/design/frontend/rwd/default/template/contacts/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) 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/errors/processor.php b/errors/processor.php
index 1bace5205c0..dd35090376b 100644
--- a/errors/processor.php
+++ b/errors/processor.php
@@ -10,7 +10,7 @@
* @category Mage
* @package Errors
* @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/js/mage/adminhtml/wysiwyg/tinymce/setup.js b/js/mage/adminhtml/wysiwyg/tinymce/setup.js
index d6d73dc35fb..0b2c6724009 100644
--- a/js/mage/adminhtml/wysiwyg/tinymce/setup.js
+++ b/js/mage/adminhtml/wysiwyg/tinymce/setup.js
@@ -8,7 +8,7 @@
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2006-2020 Magento, Inc. (https://www.magento.com)
- * @copyright Copyright (c) 2023-2024 The OpenMage Contributors (https://www.openmage.org)
+ * @copyright Copyright (c) 2023-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/lib/Varien/Object.php b/lib/Varien/Object.php
index 07d01a09967..abe96eb5abd 100644
--- a/lib/Varien/Object.php
+++ b/lib/Varien/Object.php
@@ -10,7 +10,7 @@
* @category Varien
* @package Varien_Object
* @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)
*/
From 0f224a53c3bc7b5f2c88edc1f875ed337299a792 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Sun, 2 Mar 2025 10:44:07 +0100
Subject: [PATCH 91/98] Updated issue templates (#4600)
Co-authored-by: Ng Kiat Siong
---
.github/ISSUE_TEMPLATE/bug_report.md | 36 ------------
.github/ISSUE_TEMPLATE/bug_report.yml | 57 +++++++++++++++++++
.../developer-experience-issue.md | 21 -------
.../ISSUE_TEMPLATE/developer-experience.yml | 32 +++++++++++
.github/ISSUE_TEMPLATE/feature_request.md | 24 --------
.github/ISSUE_TEMPLATE/feature_request.yml | 39 +++++++++++++
6 files changed, 128 insertions(+), 81 deletions(-)
delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md
create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml
delete mode 100644 .github/ISSUE_TEMPLATE/developer-experience-issue.md
create mode 100644 .github/ISSUE_TEMPLATE/developer-experience.yml
delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md
create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index ab0fe40219b..00000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-name: Bug report
-about: Technical issue with the OpenMage LTS core components
-title: ''
-labels: bug
-assignees: ''
-
----
-
-
-
-### Preconditions (*)
-
-1.
-2.
-
-### Steps to reproduce (*)
-
-1.
-2.
-
-### Expected result (*)
-
-1. [Screenshots, logs or description]
-2.
-
-### Actual result (*)
-
-1. [Screenshots, logs or description]
-2.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 00000000000..eeda549bb8a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,57 @@
+name: 🐛 Bug report
+description: File a bug/issue
+title: "[BUG] "
+labels: ["bug", "review needed"]
+body:
+ - type: checkboxes
+ attributes:
+ label: Is there an existing issue for this?
+ description: Please search to see if an issue already exists for the bug you encountered.
+ options:
+ - label: I have searched the existing issues
+ required: true
+ - type: textarea
+ attributes:
+ label: Current Behavior
+ description: A concise description of what you're experiencing.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Expected Behavior
+ description: A concise description of what you expected to happen.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Steps To Reproduce
+ description: Steps to reproduce the behavior.
+ placeholder: |
+ 1. In this environment...
+ 1. With this config...
+ 1. Run '...'
+ 1. See error...
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Environment
+ description: |
+ examples:
+ - **OpenMage**: 20.12.2
+ - **php**: 7.4
+ value: |
+ - OpenMage:
+ - php:
+ render: markdown
+ validations:
+ required: false
+ - type: textarea
+ attributes:
+ label: Anything else?
+ description: |
+ Links? References? Anything that will give us more context about the issue you are encountering!
+
+ Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/developer-experience-issue.md b/.github/ISSUE_TEMPLATE/developer-experience-issue.md
deleted file mode 100644
index b2ea8235eca..00000000000
--- a/.github/ISSUE_TEMPLATE/developer-experience-issue.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-name: Developer experience issue
-about: Issues related to customization, extensibility, modularity
-title: ''
-labels: ''
-assignees: ''
-
----
-
-
-
-### Summary (*)
-
-
-### Examples (*)
-
-
-### Proposed solution
-
diff --git a/.github/ISSUE_TEMPLATE/developer-experience.yml b/.github/ISSUE_TEMPLATE/developer-experience.yml
new file mode 100644
index 00000000000..a234b5d5a27
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/developer-experience.yml
@@ -0,0 +1,32 @@
+name: 👀 Developer experience
+description: Issues related to customization, extensibility, modularity
+title: ""
+labels: ["review needed"]
+body:
+ - type: textarea
+ attributes:
+ label: Summary
+ description: Describe the issue you are experiencing. Include general information, error messages, environments, and so on.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Examples
+ description: Provide code examples or a patch with a test (recommended) to clearly indicate the problem.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Proposed solution
+ description: Suggest your potential solutions for this issue.
+ validations:
+ required: false
+ - type: textarea
+ attributes:
+ label: Anything else?
+ description: |
+ Links? References? Anything that will give us more context about the issue you are encountering!
+
+ Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index ace055663b7..00000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: New Feature
-assignees: ''
-
----
-
-
-
-### Description (*)
-
-
-### Expected behavior (*)
-
-
-### Benefits
-
-
-### Additional information
-
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 00000000000..981c75faeec
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,39 @@
+name: 🚀 Feature request
+description: Suggest an idea or feature request
+title: "[FEAT] "
+labels: ["new feature", "review needed"]
+body:
+ - type: checkboxes
+ attributes:
+ label: Is there an existing issue for this?
+ description: Please search to see if an issue already exists for the bug you encountered.
+ options:
+ - label: I have searched the existing issues
+ required: true
+ - type: textarea
+ attributes:
+ label: Description
+ description: Describe the feature you would like to add.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Expected Behavior
+ description: What is the expected behavior of this feature? How is it going to work?
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Benefits
+ description: How do you think this feature would improve OpenMage?
+ validations:
+ required: false
+ - type: textarea
+ attributes:
+ label: Anything else?
+ description: |
+ Links? References? Anything that will give us more context about the issue you are encountering!
+
+ Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
+ validations:
+ required: false
From 9e6c387595e17ee0781046bd493526625d584675 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 3 Mar 2025 06:10:50 +0100
Subject: [PATCH 92/98] Bump nnnick/chartjs from 4.4.7 to 4.4.8 (#4661)
Bumps [nnnick/chartjs](https://github.com/chartjs/Chart.js) from 4.4.7 to 4.4.8.
- [Release notes](https://github.com/chartjs/Chart.js/releases)
- [Commits](https://github.com/chartjs/Chart.js/compare/v4.4.7...v4.4.8)
---
updated-dependencies:
- dependency-name: nnnick/chartjs
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/composer.lock b/composer.lock
index 42a4c45aa83..fded76705f2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -641,16 +641,16 @@
},
{
"name": "nnnick/chartjs",
- "version": "v4.4.7",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/chartjs/Chart.js.git",
- "reference": "57b5c5b78fb2d8504f556bef6e4177735d9929ea"
+ "reference": "32c8032e3f8e0c91edfb50cadbd612da88fc26cd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chartjs/Chart.js/zipball/57b5c5b78fb2d8504f556bef6e4177735d9929ea",
- "reference": "57b5c5b78fb2d8504f556bef6e4177735d9929ea",
+ "url": "https://api.github.com/repos/chartjs/Chart.js/zipball/32c8032e3f8e0c91edfb50cadbd612da88fc26cd",
+ "reference": "32c8032e3f8e0c91edfb50cadbd612da88fc26cd",
"shasum": ""
},
"require": {
@@ -680,9 +680,9 @@
],
"support": {
"issues": "https://github.com/chartjs/Chart.js/issues",
- "source": "https://github.com/chartjs/Chart.js/tree/v4.4.7"
+ "source": "https://github.com/chartjs/Chart.js/tree/v4.4.8"
},
- "time": "2024-12-01T16:35:13+00:00"
+ "time": "2025-02-19T15:37:15+00:00"
},
{
"name": "openmage/composer-plugin",
@@ -7128,5 +7128,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.3.0"
}
From 6c229096d06b3f7e51b2b72f4ea1a6caa0333fb6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 3 Mar 2025 06:11:22 +0100
Subject: [PATCH 93/98] Bump friendsofphp/php-cs-fixer from 3.70.0 to 3.70.1
(#4660)
Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.70.0 to 3.70.1.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.70.0...v3.70.1)
---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
composer.lock | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/composer.lock b/composer.lock
index fded76705f2..d16fb937055 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3374,16 +3374,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.70.0",
+ "version": "v3.70.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "2ecd5aae0edc937f0d5aa4a22d1d705c6b2e084e"
+ "reference": "add1b3a05256392dbad63875240041b2c0349ceb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2ecd5aae0edc937f0d5aa4a22d1d705c6b2e084e",
- "reference": "2ecd5aae0edc937f0d5aa4a22d1d705c6b2e084e",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/add1b3a05256392dbad63875240041b2c0349ceb",
+ "reference": "add1b3a05256392dbad63875240041b2c0349ceb",
"shasum": ""
},
"require": {
@@ -3465,7 +3465,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.70.0"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.70.1"
},
"funding": [
{
@@ -3473,7 +3473,7 @@
"type": "github"
}
],
- "time": "2025-02-22T23:30:51+00:00"
+ "time": "2025-03-01T22:05:46+00:00"
},
{
"name": "macopedia/phpstan-magento1",
From c1c62fb5c23072dbf94aa89e98c176351227ecb4 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Wed, 5 Mar 2025 18:07:56 +0100
Subject: [PATCH 94/98] Process only required attributes in
`api/rest/products/` (#4517)
---
app/code/core/Mage/Api2/Helper/Data.php | 6 +-
app/code/core/Mage/Api2/Model/Acl/Filter.php | 2 +-
app/code/core/Mage/Api2/Model/Config.php | 4 +-
app/code/core/Mage/Api2/Model/Resource.php | 20 +--
.../Model/Resource/Acl/Filter/Attribute.php | 2 +-
.../Mage/Catalog/Model/Api2/Product/Rest.php | 150 ++++++++++++++----
6 files changed, 134 insertions(+), 50 deletions(-)
diff --git a/app/code/core/Mage/Api2/Helper/Data.php b/app/code/core/Mage/Api2/Helper/Data.php
index 369ca5c61fb..84f355e5498 100644
--- a/app/code/core/Mage/Api2/Helper/Data.php
+++ b/app/code/core/Mage/Api2/Helper/Data.php
@@ -139,7 +139,7 @@ public function isApiTypeSupported($type)
*
* @param string $userType
* @param string $resourceId
- * @param string $operation One of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operation
* @return array
*/
public function getAllowedAttributes($userType, $resourceId, $operation)
@@ -169,8 +169,8 @@ public function isAllAttributesAllowed($userType)
/**
* Get operation type for specified operation
*
- * @param string $operation One of Mage_Api2_Model_Resource::OPERATION_... constant
- * @return string One of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_* $operation
+ * @return Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_*
* @throws Exception
*/
public function getTypeOfOperation($operation)
diff --git a/app/code/core/Mage/Api2/Model/Acl/Filter.php b/app/code/core/Mage/Api2/Model/Acl/Filter.php
index 7414f336782..37a2df3541a 100644
--- a/app/code/core/Mage/Api2/Model/Acl/Filter.php
+++ b/app/code/core/Mage/Api2/Model/Acl/Filter.php
@@ -99,7 +99,7 @@ public function collectionOut($items)
/**
* Fetch array of allowed attributes for given resource type, operation and user type.
*
- * @param string $operationType OPTIONAL One of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operationType OPTIONAL
* @return array
*/
public function getAllowedAttributes($operationType = null)
diff --git a/app/code/core/Mage/Api2/Model/Config.php b/app/code/core/Mage/Api2/Model/Config.php
index a5630161c4b..2d42d6e8eef 100644
--- a/app/code/core/Mage/Api2/Model/Config.php
+++ b/app/code/core/Mage/Api2/Model/Config.php
@@ -272,7 +272,7 @@ public function getResourceForcedAttributes($resource, $userType)
*
* @param string $resource API resource ID
* @param string $userType API user type
- * @param string $operationType Type of operation: one of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operationType
* @return array
*/
public function getResourceIncludedAttributes($resource, $userType, $operationType)
@@ -295,7 +295,7 @@ public function getResourceIncludedAttributes($resource, $userType, $operationTy
*
* @param string $resource API resource ID
* @param string $userType API user type
- * @param string $operationType Type of operation: one of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operationType
* @return array
*/
public function getResourceEntityOnlyAttributes($resource, $userType, $operationType)
diff --git a/app/code/core/Mage/Api2/Model/Resource.php b/app/code/core/Mage/Api2/Model/Resource.php
index 51ec32b595f..a0b71537226 100644
--- a/app/code/core/Mage/Api2/Model/Resource.php
+++ b/app/code/core/Mage/Api2/Model/Resource.php
@@ -147,16 +147,12 @@ abstract class Mage_Api2_Model_Resource
protected $_userType;
/**
- * One of Mage_Api2_Model_Resource::ACTION_TYPE_... constant
- *
- * @var string
+ * @var Mage_Api2_Model_Resource::ACTION_TYPE_*
*/
protected $_actionType;
/**
- * One of Mage_Api2_Model_Resource::OPERATION_... constant
- *
- * @var string
+ * @var Mage_Api2_Model_Resource::OPERATION_*
*/
protected $_operation;
@@ -529,7 +525,7 @@ public function setApiUser(Mage_Api2_Model_Auth_User_Abstract $apiUser)
* Get action type
* If not exists get from Request
*
- * @return string One of Mage_Api2_Model_Resource::ACTION_TYPE_... constant
+ * @return self::ACTION_TYPE_*
*/
public function getActionType()
{
@@ -542,7 +538,7 @@ public function getActionType()
/**
* Set route type
*
- * @param string $actionType One of Mage_Api2_Model_Resource::ACTION_TYPE_... constant
+ * @param self::ACTION_TYPE_* $actionType
* @return $this
*/
public function setActionType($actionType)
@@ -555,7 +551,7 @@ public function setActionType($actionType)
* Get operation
* If not exists get from Request
*
- * @return string One of Mage_Api2_Model_Resource::OPERATION_... constant
+ * @return self::OPERATION_*
*/
public function getOperation()
{
@@ -568,7 +564,7 @@ public function getOperation()
/**
* Set operation
*
- * @param string $operation One of Mage_Api2_Model_Resource::OPERATION_... constant
+ * @param self::OPERATION_* $operation
* @return $this
*/
public function setOperation($operation)
@@ -947,7 +943,7 @@ public function getForcedAttributes()
* Retrieve list of included attributes
*
* @param string $userType API user type
- * @param string $operationType Type of operation: one of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operationType
* @return array
*/
public function getIncludedAttributes($userType, $operationType)
@@ -959,7 +955,7 @@ public function getIncludedAttributes($userType, $operationType)
* Retrieve list of entity only attributes
*
* @param string $userType API user type
- * @param string $operationType Type of operation: one of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operationType
* @return array
*/
public function getEntityOnlyAttributes($userType, $operationType)
diff --git a/app/code/core/Mage/Api2/Model/Resource/Acl/Filter/Attribute.php b/app/code/core/Mage/Api2/Model/Resource/Acl/Filter/Attribute.php
index cdb1fd42b6b..331da4b6230 100644
--- a/app/code/core/Mage/Api2/Model/Resource/Acl/Filter/Attribute.php
+++ b/app/code/core/Mage/Api2/Model/Resource/Acl/Filter/Attribute.php
@@ -35,7 +35,7 @@ protected function _construct()
/**
* @param string $userType
* @param string $resourceId
- * @param string $operation One of Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_... constant
+ * @param Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_* $operation
* @return string|bool|null
*/
public function getAllowedAttributes($userType, $resourceId, $operation)
diff --git a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
index f4048e69cfd..2004d2a4100 100644
--- a/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
+++ b/app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php
@@ -29,6 +29,8 @@ abstract class Mage_Catalog_Model_Api2_Product_Rest extends Mage_Catalog_Model_A
*/
protected $_product;
+ protected ?array $allowedAttributes = null;
+
/**
* Retrieve product data
*
@@ -104,40 +106,18 @@ protected function _prepareProductForResponse(Mage_Catalog_Model_Product $produc
$product->setWebsiteId($this->_getStore()->getWebsiteId());
// customer group is required in product for correct prices calculation
$product->setCustomerGroupId($this->_getCustomerGroupId());
- // calculate prices
- $finalPrice = $product->getFinalPrice();
- $productData['regular_price_with_tax'] = $this->_applyTaxToPrice($product->getPrice(), true);
- $productData['regular_price_without_tax'] = $this->_applyTaxToPrice($product->getPrice(), false);
- $productData['final_price_with_tax'] = $this->_applyTaxToPrice($finalPrice, true);
- $productData['final_price_without_tax'] = $this->_applyTaxToPrice($finalPrice, false);
- $productData['is_saleable'] = $product->getIsSalable();
- $productData['image_url'] = (string) Mage::helper('catalog/image')->init($product, 'image');
+ $this->addAttribute('image_url', $productData, $product);
+ $this->addAttribute('is_saleable', $productData, $product);
+ $this->addPrices($productData, $product);
if ($this->getActionType() == self::ACTION_TYPE_ENTITY) {
- // define URLs
- $productData['url'] = $product->getProductUrl();
- /** @var Mage_Checkout_Helper_Cart $cartHelper */
- $cartHelper = Mage::helper('checkout/cart');
- $productData['buy_now_url'] = $cartHelper->getAddUrl($product);
-
- $stockItem = $product->getStockItem();
- if (!$stockItem) {
- $stockItem = Mage::getModel('cataloginventory/stock_item');
- $stockItem->loadByProduct($product);
- }
- $productData['is_in_stock'] = $stockItem->getIsInStock();
-
- /** @var Mage_Review_Model_Review $reviewModel */
- $reviewModel = Mage::getModel('review/review');
- $productData['total_reviews_count'] = $reviewModel->getTotalReviews(
- $product->getId(),
- true,
- $this->_getStore()->getId(),
- );
-
- $productData['tier_price'] = $this->_getTierPrices();
- $productData['has_custom_options'] = count($product->getOptions()) > 0;
+ $this->addAttribute('buy_now_url', $productData, $product);
+ $this->addAttribute('has_custom_options', $productData, $product);
+ $this->addAttribute('is_in_stock', $productData, $product);
+ $this->addAttribute('tier_price', $productData, $product);
+ $this->addAttribute('total_reviews_count', $productData, $product);
+ $this->addAttribute('url', $productData, $product);
} else {
// remove tier price from response
$product->unsetData('tier_price');
@@ -146,6 +126,114 @@ protected function _prepareProductForResponse(Mage_Catalog_Model_Product $produc
$product->addData($productData);
}
+ /**
+ * Add custom attributes to product data
+ *
+ * Apply custom logig before add data to product.
+ */
+ protected function addAttribute(string $attribute, array &$productData, Mage_Catalog_Model_Product $product): void
+ {
+ if (!$this->isAllowedAttribute($attribute)) {
+ return;
+ }
+
+ switch ($attribute) {
+ case 'buy_now_url':
+ /** @var Mage_Checkout_Helper_Cart $cartHelper */
+ $cartHelper = Mage::helper('checkout/cart');
+ $productData[$attribute] = $cartHelper->getAddUrl($product);
+ break;
+ case 'has_custom_options':
+ $productData[$attribute] = count($product->getOptions()) > 0;
+ break;
+ case 'image_url':
+ $productData[$attribute] = (string) Mage::helper('catalog/image')->init($product, 'image');
+ break;
+ case 'is_in_stock':
+ $stockItem = $product->getStockItem();
+ if (!$stockItem) {
+ $stockItem = Mage::getModel('cataloginventory/stock_item');
+ $stockItem->loadByProduct($product);
+ }
+ $productData[$attribute] = $stockItem->getIsInStock();
+ break;
+ case 'is_saleable':
+ $productData[$attribute] = $product->getIsSalable();
+ break;
+ case 'tier_price':
+ $productData[$attribute] = $this->_getTierPrices();
+ break;
+ case 'total_reviews_count':
+ /** @var Mage_Review_Model_Review $reviewModel */
+ $reviewModel = Mage::getModel('review/review');
+ $productData[$attribute] = $reviewModel->getTotalReviews(
+ $product->getId(),
+ true,
+ $this->_getStore()->getId(),
+ );
+ break;
+ case 'url':
+ $productData[$attribute] = $product->getProductUrl();
+ break;
+ }
+ }
+
+ /**
+ * Add price attributes to product data
+ */
+ protected function addPrices(array &$productData, Mage_Catalog_Model_Product $product): void
+ {
+ $isPriceRequired = false;
+ if ($this->isAllowedAttribute('regular_price_with_tax') ||
+ $this->isAllowedAttribute('regular_price_without_tax') ||
+ $this->isAllowedAttribute('final_price_with_tax') ||
+ $this->isAllowedAttribute('final_price_without_tax')
+ ) {
+ $isPriceRequired = true;
+ }
+
+ // calculate prices
+ if ($isPriceRequired) {
+ $finalPrice = $product->getFinalPrice();
+ if ($this->isAllowedAttribute('regular_price_with_tax')) {
+ $productData['regular_price_with_tax'] = $this->_applyTaxToPrice($product->getPrice(), true);
+ }
+ if ($this->isAllowedAttribute('regular_price_without_tax')) {
+ $productData['regular_price_without_tax'] = $this->_applyTaxToPrice($product->getPrice(), false);
+ }
+ if ($this->isAllowedAttribute('final_price_with_tax')) {
+ $productData['final_price_with_tax'] = $this->_applyTaxToPrice($finalPrice, true);
+ }
+ if ($this->isAllowedAttribute('final_price_without_tax')) {
+ $productData['final_price_without_tax'] = $this->_applyTaxToPrice($finalPrice, false);
+ }
+ }
+ }
+
+ /**
+ * Get allowed attributes for output
+ */
+ /**
+ * @return string[]
+ */
+ protected function getAllowedAttributes(): array
+ {
+ if (is_null($this->allowedAttributes)) {
+ $attributes = Mage::helper('api2')->getAllowedAttributes(
+ $this->getUserType(),
+ 'product',
+ Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_READ,
+ );
+ $this->allowedAttributes = $attributes;
+ }
+ return $this->allowedAttributes;
+ }
+
+ protected function isAllowedAttribute(string $attribute): bool
+ {
+ return in_array($attribute, $this->getAllowedAttributes());
+ }
+
/**
* Product create only available for admin
*/
From e42e4a82df1428fa95fa4861bebfcd627f67aaa2 Mon Sep 17 00:00:00 2001
From: Arnaud Amant
Date: Wed, 5 Mar 2025 18:40:13 +0100
Subject: [PATCH 95/98] remove unused required parameters (#4626)
---
app/code/core/Mage/Sales/Model/Observer.php | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/app/code/core/Mage/Sales/Model/Observer.php b/app/code/core/Mage/Sales/Model/Observer.php
index 6863e0111bc..9a6e57cf037 100644
--- a/app/code/core/Mage/Sales/Model/Observer.php
+++ b/app/code/core/Mage/Sales/Model/Observer.php
@@ -32,11 +32,10 @@ class Mage_Sales_Model_Observer
/**
* Clean expired quotes (cron process)
*
- * @param Mage_Cron_Model_Schedule $schedule
* @return $this
* @throws Mage_Core_Exception
*/
- public function cleanExpiredQuotes($schedule)
+ public function cleanExpiredQuotes()
{
Mage::dispatchEvent('clear_expired_quotes_before', ['sales_observer' => $this]);
$lifetimes = Mage::getConfig()->getStoresConfigByPath('checkout/cart/delete_quote_after');
@@ -165,10 +164,9 @@ public function catalogProductStatusUpdate(Varien_Event_Observer $observer)
/**
* Refresh sales order report statistics for last day
*
- * @param Mage_Cron_Model_Schedule $schedule
* @return $this
*/
- public function aggregateSalesReportOrderData($schedule)
+ public function aggregateSalesReportOrderData()
{
Mage::app()->getLocale()->emulate(0);
$currentDate = Mage::app()->getLocale()->date();
@@ -181,11 +179,10 @@ public function aggregateSalesReportOrderData($schedule)
/**
* Refresh sales shipment report statistics for last day
*
- * @param Mage_Cron_Model_Schedule $schedule
* @return $this
* @throws Zend_Date_Exception
*/
- public function aggregateSalesReportShipmentData($schedule)
+ public function aggregateSalesReportShipmentData()
{
Mage::app()->getLocale()->emulate(0);
$currentDate = Mage::app()->getLocale()->date();
@@ -198,11 +195,10 @@ public function aggregateSalesReportShipmentData($schedule)
/**
* Refresh sales invoiced report statistics for last day
*
- * @param Mage_Cron_Model_Schedule $schedule
* @return $this
* @throws Zend_Date_Exception
*/
- public function aggregateSalesReportInvoicedData($schedule)
+ public function aggregateSalesReportInvoicedData()
{
Mage::app()->getLocale()->emulate(0);
$currentDate = Mage::app()->getLocale()->date();
@@ -215,11 +211,10 @@ public function aggregateSalesReportInvoicedData($schedule)
/**
* Refresh sales refunded report statistics for last day
*
- * @param Mage_Cron_Model_Schedule $schedule
* @return $this
* @throws Zend_Date_Exception
*/
- public function aggregateSalesReportRefundedData($schedule)
+ public function aggregateSalesReportRefundedData()
{
Mage::app()->getLocale()->emulate(0);
$currentDate = Mage::app()->getLocale()->date();
@@ -232,11 +227,10 @@ public function aggregateSalesReportRefundedData($schedule)
/**
* Refresh bestsellers report statistics for last day
*
- * @param Mage_Cron_Model_Schedule $schedule
* @return $this
* @throws Zend_Date_Exception
*/
- public function aggregateSalesReportBestsellersData($schedule)
+ public function aggregateSalesReportBestsellersData()
{
Mage::app()->getLocale()->emulate(0);
$currentDate = Mage::app()->getLocale()->date();
From bc64bd1419e0447d80e9d519a9445291af2983bf Mon Sep 17 00:00:00 2001
From: Tomasz Gregorczyk
Date: Wed, 5 Mar 2025 19:21:46 +0100
Subject: [PATCH 96/98] Remove duplicated class name in customer attribute
validation (#4662) (#4663)
---
app/code/core/Mage/Customer/Helper/Address.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/code/core/Mage/Customer/Helper/Address.php b/app/code/core/Mage/Customer/Helper/Address.php
index dc11b527cf3..f0975a413ff 100644
--- a/app/code/core/Mage/Customer/Helper/Address.php
+++ b/app/code/core/Mage/Customer/Helper/Address.php
@@ -176,7 +176,7 @@ public function getAttributeValidationClass($attributeCode)
/** @var Mage_Customer_Model_Attribute $customerAttribute */
$customerAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', $attributeCode);
- $class .= $customerAttribute && $customerAttribute->getIsVisible()
+ $class = $customerAttribute && $customerAttribute->getIsVisible()
? $customerAttribute->getFrontend()->getClass() : '';
$class = implode(' ', array_unique(array_filter(explode(' ', $class))));
}
From 643a8ab0f19dc3063929ec3f40c1908ec115e786 Mon Sep 17 00:00:00 2001
From: Sven Reichel
Date: Wed, 5 Mar 2025 20:20:31 +0100
Subject: [PATCH 97/98] Fixes coupon-code usage with today start/end date
(#4456)
---
app/code/core/Mage/SalesRule/Model/Resource/Rule.php | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/app/code/core/Mage/SalesRule/Model/Resource/Rule.php b/app/code/core/Mage/SalesRule/Model/Resource/Rule.php
index 908e9d3a380..6fc060aa23a 100644
--- a/app/code/core/Mage/SalesRule/Model/Resource/Rule.php
+++ b/app/code/core/Mage/SalesRule/Model/Resource/Rule.php
@@ -68,6 +68,7 @@ protected function _afterLoad(Mage_Core_Model_Abstract $object)
*
*
* @return $this
+ * @throws Zend_Date_Exception
*/
public function _beforeSave(Mage_Core_Model_Abstract $object)
{
@@ -75,6 +76,16 @@ public function _beforeSave(Mage_Core_Model_Abstract $object)
$object->setDiscountQty(new Zend_Db_Expr('NULL'));
}
+ $dateFrom = $object->getFromDate();
+ $dateTo = $object->getToDate();
+
+ # fix when from and to day are the same
+ if (($dateFrom instanceof Zend_Date && $dateTo instanceof Zend_Date) &&
+ ($dateFrom->getTimestamp() === $dateTo->getTimestamp())
+ ) {
+ $dateTo->setHour(23)->setMinute(59)->setSecond(59);
+ }
+
parent::_beforeSave($object);
return $this;
}
From 522325f1d20ee4688492620cf4f3b407590bc3dd Mon Sep 17 00:00:00 2001
From: "allcontributors[bot]"
<46447321+allcontributors[bot]@users.noreply.github.com>
Date: Thu, 6 Mar 2025 10:12:51 +0800
Subject: [PATCH 98/98] add fabianaromagnoli as a contributor for bug (#4664)
* update README.md
* update .all-contributorsrc
---------
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
---
.all-contributorsrc | 9 +++++++++
README.md | 1 +
2 files changed, 10 insertions(+)
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 5e9b006d818..a6c2713480f 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1535,6 +1535,15 @@
"contributions": [
"security"
]
+ },
+ {
+ "login": "fabianaromagnoli",
+ "name": "Fabiana Romagnoli",
+ "avatar_url": "https://avatars.githubusercontent.com/u/23638004?v=4",
+ "profile": "https://github.com/fabianaromagnoli",
+ "contributions": [
+ "bug"
+ ]
}
],
"commitType": "docs"
diff --git a/README.md b/README.md
index 87beceb2deb..3df73ab58d5 100644
--- a/README.md
+++ b/README.md
@@ -251,6 +251,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 Alexander Buch |
 mbattistini |
 justlife4x4 |
+  Fabiana Romagnoli |