Changes
🚨 Security
- Downgraded composer/composer (#5477)
- Phar Deserialization (#5461)
- Customer File Upload Extension Blocklist Bypass (#5460)
- Cross-user wishlist item import (#5446)
- Path Traversal Filter Bypass (#5445)
🐛 Bug Fixes
- Fix: save newsletter template (#5285)
- Fix: save customer account (#5286)
- Fix SQL syntax error when catalog rule has empty condition values (#5400)
- Fix DOB year decrement on save due to ISO-8601 week-numbering year format (#5360)
- Fix PHP 8.5 using null as an array offset is deprecated (#5348)
- [FIX] Extract CMS page identifier retrieval logic to helper function (#5320)
- Fix PHP 8.5 using null as an array offset is deprecated (#5331)
- Add PHP 8.5 compatibility for PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (#5185)
- Fix button margin (#5282)
- Fix toggle between region address and non region address on paypal side (#5300)
- fix: set default sort to all grids and store sort in session (#5313)
- Fix: incorrect category product positions in anchor categories (#5295)
- Shipment: fix should return bool (#5260)
- Improve admin theme handling (#4756)
- Fix ENV-locked fields being re-enabled by dependency controller (#5242)
- [Captcha] Fix missing setWidth/setHeight with Captcha/Zend (#5217)
- Varien_Convert_Parser_Xml_Excel::unparse fix is_numeric bug (#5241)
- Remove unnecessary GROUP BY clause (#5216)
- Fix dashboard time (carbon) (#5223)
- [Captcha] add missing translation for adminhtml (#5220)
- Fix guest order shipping address overwritten by billing address during order edit (#5213)
- Fix relative patch path for magento-ecg/coding-standard (#5215)
- Fix install wizard (#5190)
- Fix PHP 8.4 TypeError in filterImageInGallery with null mapping (#5177)
- Fix swatch sort order and lowercase labels for swatches (#5133)
- Add profiler stop call in EAV config loading (#5163)
- Fixes DOB & customer account save validations (#5146)
- Fix wrong tier price displayed when some tier prices are higher than special price (#5117)
- Revert Composer Patches Local Paths Back to Urls (#5115)
- Fix HTML structure in shipment tracking email template (#5108)
- Bug: Call to function is_array() with string (#5096)
- Bug: Call to function is_array() with bool (#5098)
- Bug: Call to a member function in
Mage_Adminhtml_Model_Quote(#5094) - Bug: Call to undefined method in
Mage_Eav_Model_Resource_Entity_Attribute_Group(#5095) - PHP8.5: fix null array offset (#5028)
- PHP8: Allow null hash in validateHashByVersion method (#5048)
🚀 Features
- USPS Integration Upgrade to REST API (#5258)
- Mage_Cms: add mass delete and mass status action for page and block (#5347)
- [Adminhtml] add Events to Widget Grid (#5169)
- Media Gallery behavior when duplicating a product: Keep/Skip product images (#5083)
- Replace php date functios with
carbon(#5131) - Add support for
.envfile (#5130) - Replace
Zend_Logwithmonolog(#5126) - Replace
Zend_Validatewithsymfony/validator(#4612) - Replace
Zend_Measurewithphp-units-of-measure(#5102)
🦾 Enhancements
- Updated (monolog) logging (#5148)
- Translate "is confirmed" select options in customer/edit (account information). (#5473)
- Expand Purifier functionality. First step toward using HTMLPurifier in more places. (#5278)
- Replace
getData(string)withgetDataByKey()(#5453) - Shipping Carrier: fix
_resultvs_trackingResult(#5433) - backport v21: Rewrote
js/mage/adminhtml/input-counter.jswithout prototypejs (#5385) - Added Mage_Core_Observer_Interface (#5354)
- fix(security): Remove phantom checkbox behavior in ACL role editor (#5254)
- Improve performance for grids with permission checks (#5332)
- cypress: test grids (#5281)
- [Adminhtml] add getTab to Tabs (#5219)
- Refine text and labels for product image duplication config (Follow-up to PR #5083) (#5227)
- Refine duplicate product dialog title, message text, and layout (#5229)
- [Varien] Multiselect: make default size changable (#5221)
- phpStan: add strict rules - disallow
empty()(#5182) - Fix incorrect regex for files in errors/ and return 404 for index.php (#5149)
- Fix unnecessary cache clean (#5150)
- Maximum line length of 78 RFC 5322 (#5125)
- Remove call to
widgets.magentocommerce.com(#5103) - Improved
Mage_Catalog_Model_Product_Image::setSize()(#5080)
📖 Documentation
- tools: use
easy-coding-standardfor code-style checks (#5489) - [Adminhtml] add Events to Widget Grid (#5169)
- Add support for
.envfile (#5130)
🔨 Maintenance
- tools: use
easy-coding-standardfor code-style checks (#5489) - Make all PHPUnit data providers static (PHPUnit 10+ compatibility) (#5486)
- phpunit: skip test (#5487)
- chore: docblock correction and strlen in loop micro optimisation in Mage_Sales PDF (#5474)
- Update minor version from 16 to 17 for OpenMage 20 (#5449)
- rector: migrate
Zend_Aclmethod (#5464) - chore: docblocks (#5463)
- rector: migrate
Zend_Logconstants (#5462) - chore: ref #5456 (#5457)
- chore: ref #5278 (#5458)
- rector: ref #5258 (#5456)
- Update Template.php: remove extra TypeCheck (#5455)
- Update doc comments, fix spelling and grammar errors (#5450)
- rector:
CombineIfRector(#5448) - rector:
SimplifyIfElseToTernaryRector(update 2.4.1) (#5447) - rector:
RemoveUnusedVariableAssignRector(no automatic changes) (#5415) - phphmd: ignore unused
$ignoredvar (#5440) - rector:
SafeDeclareStrictTypesRector(#5438) - phpunit: add empty test classes and data providers for all core Mage Block/Helper/Model classes (#5423)
- rector:
NullableCompareToNullRector(#5437) - chore: fixed typo in method name (#5436)
- rector:
NullCoalescingOperatorRector(#5431) - rector:
ChangeNestedForeachIfsToEarlyContinueRector(#5426) - rector:
SimplifyBoolIdenticalTrueRector(#5425) - rector:
ChangeNestedIfsToEarlyReturnRector(#5424) - rector:
RecastingRemovalRector(#5421) - rector:
SimplifyDeMorganBinaryRector(#5420) - rector:
TernaryToElvisRector(not applied) (#5419) - rector:
CompleteDynamicPropertiesRector(not applied) (#5418) - rector: cleanup (#5417)
- rector:
SimplifyIfElseToTernaryRector(#5410) - rector:
RemoveDeadZeroAndOneOperationRector(#5414) - rector:
TernaryEmptyArrayArrayDimFetchToCoalesceRector(#5412) - phpunit: added tests (#5411)
- rector:
StringableForToStringRector(#5409) - rector:
TernaryToBooleanOrFalseToBooleanAndRector(#5408) - phpstan: use
@phpstan-typefor config store-id param (#5406) - escapeHtml: add conditionalReturnTypeDoc (#5402)
- rector:
RemoveAlwaysTrueIfConditionRector(#5401) - fix: invalid type for
getStore()(#5403) - rector:
RemoveNullArgOnNullDefaultParamRector(#5397) - phpunit: added test (#5399)
- chore: update workflow (#5398)
- chore: update workflow (#5396)
- chore: phpmd create cache dir (#5395)
- chore: update workflow (#5394)
- rector:
ExplicitReturnNullRector(#5390) - rector:
ReturnBinaryOrToEarlyReturnRector(#5389) - rector:
WrapEncapsedVariableInCurlyBracesRector(#5388) - phpmd: enable ShortVariable check (#5383)
- chore: moved tools caches to subdirectory (#5384)
- chore: Mini docblock update (#5381)
- phpstan: replace template with phpstan-type (#5380)
- rector:
SimplifyEmptyCheckOnEmptyArrayRector(#5374) - rector:
SimplifyIfReturnBoolRector(#5372) - rector:
CombineIfRector(#5371) - rector:
ChangeOrIfContinueToMultiContinueRector(#5370) - rector:
ChangeIfElseValueAssignToEarlyReturnRector(#5369) - chore: downgrade
symplify/vendor-patches(#5367) - chore: deprecated replaced Zend classes (#5366)
- rector: add/update doclocks (#5362)
- rector: remove leading slash and unused imports (#5364)
- chore: removed deprecated methods (#5361)
- Remove deprecated methods (workflow) (#5349)
- chore: moved validation Helper classes to Model ... (#5357)
- Use observer interface (#5355)
- Mage_Reports_Model_Resource_Report_Collection: remove pageSize (#5353)
- Allow bool value for
Mage_Adminhtml_Controller_Action::ADMIN_RESOURCE(#5351) - Deprecate Mage_Sales_Model_Entity_Quote_Item_Collection (#5323)
- Fix ignored phpstan errors (#5345)
- backport v21: Removed onmouseover/onmouseout from adminhtml menu (#5341)
- backport v21: Removed unused files from Adminhtml/Block/Catalog/Category/Tab (#5340)
- backport v21: Removed deprecated module DirectPost from Authorize.net (#5338)
- chore: replace some
empty()checks (#5321) - phpstan: fix dynamic calls on static methods (#5319)
- chore: docsblocks (#5335)
- chore: updated docs (#5334)
- chore: use constants for config paths (#5333)
- phpmd: short variables (#5322)
- Cleanup: removed mysql4 classes (#5327)
- Visibility: remove deprecated functions (#5329)
- phpstan: update
Mage::getModel()docs (#5328) - Add PHPDoc generics on
Varien_Data_Collection/Varien_Data_Collection_Db(#5259) - chore: docs (#5318)
- chore: remove __construct call (#5314)
- rector:
RemoveEmptyClassMethodRector(#5312) - rector:
InlineConstructorDefaultToPropertyRector(#5311) - rector:
ForeachItemsAssignToEmptyArrayToAssignRector(#5310) - rector: applied changes for #5307 (#5309)
- chore: remove unused rector rule (#5307)
- chore: minor phpunit cleanup (#5306)
- cypress: allow no message on error/success/warning check (#5305)
- chore: minor doc fix (#5304)
- chore: unify admin grid buttons (#5303)
- phpstan: case consistent sort dir (#5302)
- phpstan: some fixes (#5301)
- phpStan: replace some
empty()checks (#5292) - chore: update admin grids (#5283)
- phpStan: fixes for 2.1.40 (#5291)
- chore: docblock update (#5290)
- chore: use php phpStan baseline (#5274)
- Mage_Adminhtml_Model_Session_Quote: add missing method docs (#5279)
- chore: composer update (#5272)
- phpstan: fix comparison for
get_object_vars(#5271) - Return $this if able (#5266)
- rector:
InlineIfToExplicitIfRector(#5209) - rector:
AddParamBasedOnParentClassMethodRector(#5040) - rector:
MakeInheritedMethodVisibilitySameAsParentRector(#5174) - rector:
RegexDashEscapeRector(#5205) - Update PHP version in cypress workflow (#5208)
- phpstan:
matchingInheritedMethodNames(#5204) - rector:
RemoveAlwaysElseRector(#5203) - chore: docblocks - removed duplicated entries for
created_at/updated_atmethods (#5201) - [Rector] RemoveParentDelegatingConstructorRector (#5197)
- Remove obsolete OM-4891 patch for phpseclib/mcrypt_compat 2.0.7 (#5196)
- rector:
RemoveUnusedPrivateMethodParameterRector(#5184) - rector:
RemoveDeadReturnRector(#5183) - php-cs-fixer:
phpdoc_align(#5166) - rector:
ReturnEarlyIfVariableRector(#5175) - rector:
SplitDoubleAssignRector(#5173) - rector:
SwitchNegatedTernaryRector(#5172) - rector:
UnnecessaryTernaryExpressionRector(#5171) - chore: doc blocks update (#5170)
- chore: remove n98/magerun dep (#5167)
- chore: docblocks (#5165)
- Rector: fix FirstClassCallableRector to ArrayToFirstClassCallableRector rename (#5160)
- phpStan: Added doc-blocks to
_construct()(#5151) - chore: docs blocks update (#5147)
- Fix docblocks to show correct Mage_Sales_Model_Order_Invoice return / var type (#5145)
- rector: update tests (#5128)
- Phpstan: DocBlock fixes (#5101)
- Fix: updated required extensions (#5099)
- PhpUnit: remove one test (#5093)
- PhpStan: various fixes (#5090)
- Phpstan: multiple fixes (#5082)
- phpcs-fixer: sort more tags, follow symfony sort order (#5081)
- phpcs-fixer:
phpdoc_order_by_value(#5079) - Phpstan: fix falsy empty (#5078)
- PhpStan: docblock fixes (#5077)
- PhpStan: fix wrong params
nullgiven (#5075) - PhpStan: fix wrong params for
uniqid(#5074) - PhpStan: fix wrong params for
explode(#5073) - PhpStan: fix wrong params for
trim(#5072) - PhpStan: fix wrong params for
strmethods (#5071) - PhpStan: fix wrong params for
strlen(#5070) - phpcs-fixer:
ordered_types(#5065) - Phpunit:
Mage_Wishlist(#5069) - chore: remove update-copyright script from configs (#5066)
- phpcs-fixer:
operator_linebreak(#5064) - phpcs-fixer:
phpdoc_scalar(#5063) - phpcs-fixer:
phpdoc_var_without_name(#5062) - phpcs-fixer:
phpdoc_tag_casing(#5061) - phpcs-fixer:
phpdoc_annotation_without_dot(#5060) - phpcs-fixer:
no_empty_phpdoc(#5059) - phpcs-fixer:
phpdoc_var_annotation_correct_order(#5056) - DOCblocks: added missing methods (#5058)
- phpcs-fixer:
phpdoc_order(#5057) - phpcs-fixer:
phpdoc_trim_consecutive_blank_line_separation(#5055) - phpcs-fixer:
phpdoc_single_line_var_spacing(#5054) - phpcs-fixer:
phpdoc_types_order(#5053) - phpcs-fixer:
phpdoc_trim(#5052) - phpcs-fixer:
phpdoc_param_order(#5051) - phpcs-fixer:
phpdoc_indent(#5050) - Updated PhpStorm meta-files (#5049)
↗️ Dependencies
- build(deps): bump phpseclib/mcrypt_compat from 2.0.7 to 2.0.8 (#5467)
- build(deps): bump mklkj/tinymce-i18n from 26.3.30 to 26.4.7 (#5466)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.94.2 to 3.95.1 (#5468)
- build(deps): bump symfony/polyfill-php82 from 1.33.0 to 1.34.0 (#5470)
- build(deps): bump symfony/polyfill-php84 from 1.33.0 to 1.34.0 (#5469)
- build(deps): bump phpseclib/phpseclib from 3.0.50 to 3.0.51 (#5459)
- build(deps-dev): bump rector/rector from 2.3.9 to 2.4.0 (#5429)
- build(deps-dev): bump phpstan/phpstan from 2.1.44 to 2.1.46 (#5427)
- build(deps): bump mklkj/tinymce-i18n from 26.3.23 to 26.3.30 (#5430)
- build(deps): bump tinymce/tinymce from 8.3.2 to 8.4.0 (#5428)
- build(deps-dev): bump phpstan/phpstan from 2.1.42 to 2.1.44 (#5378)
- build(deps): bump mklkj/tinymce-i18n from 26.2.16 to 26.3.23 (#5376)
- build(deps-dev): bump rector/rector from 2.3.8 to 2.3.9 (#5342)
- build(deps-dev): bump phpstan/phpstan from 2.1.40 to 2.1.42 (#5343)
- build(deps): bump phpseclib/phpseclib from 3.0.49 to 3.0.50 (#5330)
- build(deps): bump release-drafter/release-drafter from 6 to 7 (#5325)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.59.0 to 0.60.0 (#5324)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.58.0 to 0.59.0 (#5297)
- build(deps-dev): bump rector/rector from 2.3.0 to 2.3.1 (#5236)
- build(deps): bump shardj/zf1-future from 1.24.4 to 1.25.0 (#5289)
- build(deps-dev): bump phpstan/phpstan from 2.1.39 to 2.1.40 (#5288)
- build(deps): bump actions/upload-artifact from 6 to 7 (#5287)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.57.0 to 0.58.0 (#5248)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.94.0 to 3.94.2 (#5276)
- build(deps-dev): bump symplify/vendor-patches from 12.0.5 to 12.0.6 (#5267)
- build(deps): bump phpseclib/phpseclib from 3.0.48 to 3.0.49 (#5263)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.92.5 to 3.93.0 (#5250)
- build(deps): bump symfony/process from 6.4.31 to 6.4.33 (#5257)
- build(deps-dev): bump phpunit/phpunit from 9.6.31 to 9.6.33 (#5255)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.56.0 to 0.57.0 (#5237)
- build(deps): bump mklkj/tinymce-i18n from 25.11.17 to 26.1.12 (#5238)
- build(deps): bump tinymce/tinymce from 8.3.1 to 8.3.2 (#5239)
- build(deps-dev): bump symplify/vendor-patches from 12.0.1 to 12.0.5 (#5231)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.92.4 to 3.92.5 (#5230)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.92.3 to 3.92.4 (#5211)
- build(deps): bump cweagans/composer-patches from 1.7.3 to 2.0.0 (#5121)
- build(deps-dev): bump rector/rector from 2.2.14 to 2.3.0 (#5193)
- build(deps): bump tinymce/tinymce from 8.3.0 to 8.3.1 (#5191)
- build(deps): bump vlucas/phpdotenv from 5.6.2 to 5.6.3 (#5194)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.55.0 to 0.56.0 (#5192)
- build(deps): bump phpseclib/mcrypt_compat from 2.0.6 to 2.0.7 (#5181)
- build(deps): bump phpseclib/phpseclib from 3.0.47 to 3.0.48 (#5180)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.92.0 to 3.92.3 (#5179)
- build(deps-dev): bump phpstan/phpstan-phpunit from 2.0.10 to 2.0.11 (#5178)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.91.3 to 3.92.0 (#5156)
- build(deps): bump tinymce/tinymce from 8.2.2 to 8.3.0 (#5157)
- build(deps): bump peter-evans/create-pull-request from 7 to 8 (#5153)
- build(deps): bump SonarSource/sonarqube-scan-action from 6 to 7 (#5155)
- build(deps): bump pelago/emogrifier from 8.1.0 to 8.2.0 (#5152)
- build(deps-dev): bump rector/rector from 2.2.9 to 2.2.14 (#5154)
- build(deps): bump actions/upload-artifact from 5 to 6 (#5159)
- build(deps): bump actions/cache from 3 to 5 (#5158)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.91.0 to 3.91.3 (#5140)
- build(deps): bump tinymce/tinymce from 8.2.1 to 8.2.2 (#5141)
- build(deps-dev): bump phpstan/phpstan-phpunit from 2.0.8 to 2.0.10 (#5142)
- build(deps-dev): bump phpstan/phpstan-phpunit from 2.0.7 to 2.0.8 (#5111)
- build(deps-dev): bump dealerdirect/phpcodesniffer-composer-installer from 1.1.2 to 1.2.0 (#5119)
- build(deps-dev): bump rector/rector from 2.2.7 to 2.2.9 (#5120)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.90.0 to 3.91.0 (#5122)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.54.0 to 0.55.0 (#5118)
- build(deps-dev): bump phpstan/phpstan from 2.1.31 to 2.1.32 (#5113)
- build(deps): bump mklkj/tinymce-i18n from 25.11.3 to 25.11.17 (#5112)
- build(deps): bump actions/checkout from 5 to 6 (#5109)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.89.2 to 3.90.0 (#5114)
- build(deps-dev): bump symplify/vendor-patches from 11.5.0 to 12.0.1 (#5110)
- build(deps): bump symfony/http-foundation from 6.4.25 to 6.4.29 (#5092)
- build(deps): bump symfony/translation-contracts from 3.6.0 to 3.6.1 (#5085)
- build(deps): bump tinymce/tinymce from 8.2.0 to 8.2.1 (#5088)
- build(deps-dev): bump friendsofphp/php-cs-fixer from 3.89.1 to 3.89.2 (#5087)
- build(deps): bump rojopolis/spellcheck-github-actions from 0.53.0 to 0.54.0 (#5084)
- build(deps): bump mklkj/tinymce-i18n from 25.10.27 to 25.11.3 (#5086)
- build(deps-dev): bump rector/rector from 2.2.5 to 2.2.7 (#5067)
- build(deps): bump mklkj/tinymce-i18n from 25.10.6 to 25.10.27 (#5068)