diff --git a/.all-contributorsrc b/.all-contributorsrc index 259815fa56c..5ec6cdee804 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1418,6 +1418,33 @@ "contributions": [ "code" ] + }, + { + "login": "leissbua", + "name": "Michael Leiss", + "avatar_url": "https://avatars.githubusercontent.com/u/68073221?v=4", + "profile": "https://github.com/leissbua", + "contributions": [ + "code" + ] + }, + { + "login": "massa-man", + "name": "Marcos Steverlynck", + "avatar_url": "https://avatars.githubusercontent.com/u/26821235?v=4", + "profile": "https://www.riseart.com/", + "contributions": [ + "code" + ] + }, + { + "login": "ahudock", + "name": "Andy Hudock", + "avatar_url": "https://avatars.githubusercontent.com/u/33500977?v=4", + "profile": "https://github.com/ahudock", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7 diff --git a/.ddev/commands/web/openmage-install b/.ddev/commands/web/openmage-install index d4b86fb0e92..faa98daf14b 100755 --- a/.ddev/commands/web/openmage-install +++ b/.ddev/commands/web/openmage-install @@ -40,6 +40,9 @@ while :; do shift done +echo "Enable maintenance mode..." +touch maintenance.flag + LOCALXML="${ROOT}/app/etc/local.xml" if [ -f "${LOCALXML}" ]; then if [[ "${QUIET_INSTALL_FLAG}" ]]; then @@ -87,11 +90,15 @@ if [[ $INSTALL_SAMPLE_DATA =~ ^(yes|y) ]]; then echo "Copying Sample Data into the OpenMage directory..." cp -r magento-sample-data-1.9.2.4/* "${ROOT}/" + echo "Clearing var/cache..." + rm -rf "${ROOT}/var/cache/"* + echo "Importing Sample Data into the database..." mysql -u db -h db db < "${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}" ]]; then + # shellcheck disable=SC2046 rm -rf $( find . -maxdepth 1 -type f -name "*" ! -name "${SAMPLE_DATA_FILE}") else @@ -108,7 +115,11 @@ if [[ "${USE_DEFAULT_FLAG}" ]]; then ADMIN_LASTNAME='Administrator' ADMIN_EMAIL='admin@example.com' ADMIN_PASSWORD='veryl0ngpassw0rd' - TABLE_PREFIX='om_' + if [[ "${SAMPLE_DATA_FLAG}" ]]; then + TABLE_PREFIX='' + else + TABLE_PREFIX='om_' + fi else read -r -p "Admin User [admin]: " ADMIN_USER ADMIN_USER=${ADMIN_USER:-admin} @@ -152,3 +163,6 @@ php -f install.php -- \ --default_currency 'USD' \ --enable_charts 'yes' \ --skip_url_validation 'yes' + +echo "Disable maintenance mode..." +rm maintenance.flag diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000000..969043bff51 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ + +open_collective: openmage diff --git a/.github/changelog/version_19.txt b/.github/changelog/version_19.txt deleted file mode 100644 index 0fafdf3df25..00000000000 --- a/.github/changelog/version_19.txt +++ /dev/null @@ -1,679 +0,0 @@ - -## v19.4.18 - unreleased - -## v19.4.17 - 2022-08-02 - -Replaced a lot of Magento logos with OpenMage ones by @fballiano in #1599 -Remove end class comment by @luigifab in #2092 -Trim trailing whitespace by @luigifab in #2093 -Issue #268: sales_order_create_sidebar_wishlist breaks if wishlist module is disabled by @fballiano in #2059 -Better messages for product alerts by @fballiano in #1930 -Clean review_entity_summary when reviews are deleted by @fballiano in #1103 -Fixed admin tabs order not working properly. by @kiatng in #1360 -Fix admin menu z-index when debug template paths is enabled by @elidrissidev in #1819 -Change default sort in CMS Pages/Blocks/Widgets grids by @ADDISON74 in #1922 -Small improvements in Manage Attributes grid by @ADDISON74 in #1944 -Added database ID to EAV options table by @fballiano in #2060 -Clean up empty directories created when file requested does not exist in remote storage. by @colinmollenhour in #1338 -Add a word-break to list items to keep the layout intact by @loekvangool in #1321 -fix download custom option backend by @empiricompany in #1827 -Fix Varien_File_Uploader ignored errors with try catch by @luigifab in #1277 -User-configurable cron expression for regular cache flushing #2086 by @LukasCesal in #2087 -Fixed infinite loop of popup alerts in backend attribute set page by @kiatng in #1672 -Added option not to use timezone in rendering datetime in backend grid. by @kiatng in #1997 -Upgrade GitHub action/checkout to v3 by @fballiano in #2141 -Fix admin menu z-index for popup message by @luigifab in #2142 -Fix undefined array key when an image depend on another field by @luigifab in #2133 -Fix supplied resource is not a valid stream resource for Varien_Io_File by @eneiasramos in #2040 -Raise phpstan level to 1 and fix basic issues by @tmotyl in #2055 -fix wrong tier price percentage rounding by @empiricompany in #2089 -Replaced travis badge with workflow badges by @fballiano in #2067 -Update References to Documentation/Magento Website - Issue #988 by @fballiano in #2069 -Create a global config cache rather than a config cache per store by @rvelhote in #1066 -Rise Phpstan level 2, fix some issues by @tmotyl in #2146 -Backend mask title has padding also when not having an icon by @fballiano in #2145 -Fix config menu css from Isse #1219 by @aterjung in #1224 -Fix protect code changing on order save by @justinbeaty in #1422 -Introducing polyfill for is_countable() by @fballiano in #2163 -Ensure there are no emails without recipient in email queue by @lemundo-team in #1109 -Fix Core Bug: To make "01/01/1970" a valid birthday by @1Shiroyuuki1 in #1851 -Fix issues with isCurrentlySecure detection and Offloader Header config. by @colinmollenhour in #1462 -PHP 8 fix null provided to count() in tax calculation class by @iamniels in #2162 -Better error handling for issues during bulk attribute update by @woutersamaey in #1434 -Allow to cancel orders like registerCancellation by @luigifab in #1804 -Revert "Fix wrong payment info template paths" by @fballiano in #2179 -Fix Failed IPN changing to Payment Received incorrectly by @fballiano in #2183 -Reverted commit 2ae8c05 by @fballiano in #2182 -Revert "creditmemo bundle inventory calculation error" by @fballiano in #2186 -Sourcemap link removed since this file is not minified by @fballiano in #2187 -Remove suppression operator from translate method to support PHP 8 by @iamniels in #2161 -[PHP 8] Fix TypeError when calling round() with a string argument by @elidrissidev in #2193 -Backend - Change the default sort column in Export page by @ADDISON74 in #2170 -Fix warnings on undefined user agent by @Caprico85 in #2032 -Fix PHP 8 Fatal error: Uncaught ValueError: imagecolorsforindex() in Varien_Image_Adapter_Gd2 by @iamniels in #2197 -Do not calculate catalogrules when there are none by @tmotyl in #1119 -replacing apc with apcu functions. by @f1-outsourcing in #1951 -Add robots.txt.sample by @simbus82 in #1024 -Changed timestamp definition to fix issue #1166 by @fballiano in #2189 -Cast params receiving int to string by @holozaen in #2144 -Set log level from config by @elidrissidev in #1727 -Expected PayPal (Express) field not found in NVP Response: AMT by @luigifab in #1520 -Fix display of Insert widget and Insert variable by @luigifab in #1848 -Fix region API list response - Update Api.php --> bug by @kyansi in #792 -Fixed issue #2001, EAV datetime attribute can't save time. by @kiatng in #2003 -Wrap max log level retrieval from config in a try catch by @elidrissidev in #2203 -Fix to allow for always reorder by @seansan in #504 -Remove frontend_type tag for text by @luigifab in #2148 -Pass delimiter char to preg_quote by @MarcinNowakMacopedia in #2047 -Avoids multiplying all price adjustments by the number of websites by @azambon in #1303 -Use latest media editor plugin (989c4b5 from 2015030) for tinymce v3.5 by @theroch in #1123 -Some more room for the category menu by @loekvangool in #1314 -PHP 8: Fix cannot remove category on admin product edit categories tab by @iamniels in #2205 -Config cache for system.xml loader: Speed improvement by @lamskoy in #1916 -Avoid session invalidation when changing session lifetime. by @colinmollenhour in #546 -Modernize setCategoryIds() by @loekvangool in #1308 -Replace Magento word with OpenMage in root files by @ADDISON74 in #2215 -Remove backslash character in translations files by @ADDISON74 in #2219 -Fix ACL resource name typo in Api2 roles page by @elidrissidev in #2222 -Missing bottom borders in Orders page with Gift Messages allowed by @ADDISON74 in #2220 -Backend > Orders grid - More space for columns by @ADDISON74 in #2217 -Fixed issue #2196, throws error if an email is already a newsletter s… by @kiatng in #2214 -Widen some dynamic admin input fields by @loekvangool in #1315 -Admin's password validation during Api's role/user removing process by @przemyslaw-p in #1045 -Fix multiple "PHPDoc tag @param has invalid value" phpstan errors by @tmotyl in #2227 -Fix for "non well formed numeric value" by @fballiano in #2225 -Fixed warning a non-numeric value encountered in /Mage/Catalog/Model/Resource/Product/Option.php by @kiatng in #2228 -Added support for sending subscribe confirm email by @fballiano in #2195 -Allow setting optional product attributes to null in REST API by @elidrissidev in #2230 -Fixed issue #2212 SQLSTATE[42S22]: Column not found: 1054 Unknown col… by @kiatng in #2221 -Drop LTS csv files by @luigifab in #1621 -Remove the word section by @luigifab in #2147 -Fix Missing Mage_Api_Model_Server_V2_Handler in SOAP v2 WSDL. by @SRaromicon in #392 -Throw exception when trying to modifying address that does not belong to logged in user by @fballiano in #2231 -Grid - iterate only columns with filters by @Sekiphp in #1642 -Fix Mage_Shell_Indexer wrong class name by @fballiano in #2234 -Backend > Manage Products grid - More space for columns by @ADDISON74 in #2218 -Made sitemap more flexible by @sreichel in #1854 -Update Mage_Eav_Model_Entity_Collection_Abstract::joinTable() by @cebe in #1814 -Add "Times used" indicator field to promo rule quote grid by @spinsch in #1853 -bugfix: fix adminhtml translation in config.xml for importexport module by @eneiasramos in #2244 -Replace deprecated global now() calls with Varien_Date::now() by @Sdfendor in #2250 -Fix the calculation of bundle saleable status by @aredridel in #2178 -Revert "Some more room for the category menu" by @ADDISON74 in #2254 -prevent customer review view from loading foreign reviews by @aterjung in #1970 -Fix for "reset filter" breaking grid sorting by @fballiano in #2252 -Flush Magento Cache - button and message changes by @ADDISON74 in #2261 -Can upload xlsx file by @sdecalom in #2266 -Backend grid heads - Remove colons after To, From and In words by @ADDISON74 in #2267 -Fixed documentation link for "store scope" in store switcher (backend) by @fballiano in #2256 -Fix Varien_Io_File ignored errors with error control operator by @luigifab in #1269 -Fix store id filter in catalogProductList SOAP method by @elidrissidev in #2243 -Small changes in .htaccess file /media directory by @ADDISON74 in #2280 -All .gitignore files in one place by @ADDISON74 in #2269 -Create/Update .htaccess file in skin and media directories by @ADDISON74 in #2289 -Add magento-composer-installer to allowed plugins by @elidrissidev in #2296 -Delete .htaccess.sample by @ADDISON74 in #2293 -Update php.ini.sample by @ADDISON74 in #2292 -Fix editing special price in product mass attribute update by @fballiano in #2287 -Added required PHP modules to composer.json by @fballiano in #2064 -Update robots.txt.sample by @ADDISON74 in #2307 -Include exception message when generating error report by @elidrissidev in #2311 -add some ReturnTypeWillChange annotations to Varien_object by @Flyingmana in #2301 -Fix xml validation problems by @fballiano in #2242 -Fix argument must contain at least one element by @luigifab in #2091 -XML validation workflow by @fballiano in #2314 -add basic unitTest for xml validation by @Flyingmana in #2304 -Addendum to PR 2087 by @ADDISON74 in #2308 -Allow to rename api.php by @luigifab in #2132 -Fix phpdoc for saveAttribute() by @Caprico85 in #2320 -Small changes in root files by @ADDISON74 in #2324 -Add a message calling for an end to the Russian invasion of Ukraine by @luigifab in #2074 -Mage Factory Methods: Direct "_registry" Access Without Method Call by @Sdfendor in #2319 -Fixes a notice by @azambon in #2318 -Add vendor folder to gitignore by @elidrissidev in #2334 -Fix for modphp8 by @fballiano in #2329 -Update Flat.php to correct bug #2337 by @matteorossi-thespacesm in #2338 -Fix #815 - add getAttributeRawText function by @justinbeaty in #2312 -gitignore: added VScode, PhpStorm files and ddev config.yaml by @sreichel in #2343 -Removed docker-dde sample by @sreichel in #2346 -Removed dead code by @sreichel in #2339 -Cosmetic fix in Mage_Sales_Model_Order_Payment by @fballiano in #2350 - -## v19.4.16 - 2022-05-18 - -Add field info to exception when thrown in saving System Configuration. by @kiatng in #1784 -Fix Tax Rule name update by @elidrissidev in #1728 -Fixed method addExpressionFieldToSelect to use Zend_Db_Expr by @midlan in #1259 -API fix option labels for store view by @woutersamaey in #1828 -Fix newsletter subcriber loading by customer by @mmenozzi in #1779 -Fix file delete of customer attribute by @kiatng in #927 -Trim trailing whitespace by @luigifab in #1834 and #1846 -Updated .gitignore by @midlan in #1859 -Add gitpod online IDE config by @Flyingmana in #1836 -Add phpstan configuration, dependencies and github action by @Flyingmana in #1875 -Add Mage_Index helpers declaration to config.xml by @elidrissidev in #1878 -API: _getLocation - removed unused argument; fix phpdoc by @Sekiphp in #1867 -Grid page size: replaced similar lines to foreach by @Sekiphp in #1856 -Fix exception handling on Observer call when class not found by @spinsch in #1861 -Fixes catalog pricerules with dates in conditions, closes #433 by @sreichel in #1159 -Zend_Locale_Format::isNumber throws notice for float values by @fballiano in #1758 -Update PayPal currencies and countries by @luigifab in #1805 -extend php Syntax check to php 8.1 by @Flyingmana in #1883 -Fix incompatible declaration error by @holozaen in #1890 -[PHP 8.1] Fix deprecation notice in mcryptcompat lib by @Sdfendor in #1891 -Bugfix #1885 - Add to cart only accepts 1 item by @gdemarsico in #1896 -Array to string conversion when adding reviews from backend by @fballiano in #1769 -Update phpdoc in Collection.php by @rubanooo in #1816 -Fix syntax in lib/Zend/Locale/Data/es_419.xml by @elidrissidev in #1901 -make fulltext search separator (OR/AND) configurable from backend by @sreichel in #1852 -Revert of Mage_Adminhtml_Block_Widget_Grid::_exportIterateCollection by @midlan in #1914 -demo.html is an unnecessary file by @ADDISON74 in #1926 -Sort ascending CMS Block list in Categories by @ADDISON74 in #1925 -[PHP 8.0] Refactor legacy usage of implode in Mage_Api2 by @elidrissidev in #1938 -Initialize Api2 Fields validator's required fields array by @elidrissidev in #1936 -No alt tag value in Recently Viewed Products side block by @ADDISON74 in #1920 -Dashboard - Top 5 Search Terms link issue by @ADDISON74 in #1917 -Removed unused var $_odd in templates. by @kiatng in #1964 -Documentation fix on README file about composer require by @nimasan in #1954 -Fix typo in Zend/Date.php by @eltociear in #1979 -[PHP 8.0] Check if track progressdetail is an array before calling count by @elidrissidev in #1982 -[PHP 8.1] Fix cookie deletion behavior by @Sdfendor in #1984 -updateAttributeSet() accepting array or string by @Sekiphp in #1535 -Fix typo in code comment by @dotancohen in #1988 -Fix #1924 non-existing field by @woutersamaey in #1941 -Added optgroup feature for massaction items (grids) by @Sekiphp in #1913 -PHPDoc fix for Mage_Core_Model_Config by @Sdfendor in #1802 -Missing middlename for salesOrderAddressEntity in SOAP APIs by @fballiano in #1977 -Attribute note adminhtml show translate by @boesbo in #1710 -fix typo in _applyCustomOption() to correctly calculate min/max price by @jouriy in #1500 -Fix typo: Replace 'Retrive' with 'Retrieve' globally by @tmewes in #1995 -Add formkey validation to Newsletter subscribe action (theme BC-break) by @elidrissidev in #1866 -Added ability to add target attribute for adminhtml menu items by @Sekiphp in #1985 -Add docblock to app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column… by @kiatng in #1987 -[PHP 8.1] Fix passing null to trim() by @elidrissidev in #2002 -Replaced remaining deprecated urlEscape calls. by @Sdfendor in #2008 -Update phpstan version by @tmotyl in #2015 -Use mb_substr to split the postcode by @luigifab in #1357 -Fix count(): Parameter must be an array or an object that implements Countable by @Sekiphp in #1960 -Fix getting default min_sale_qty when trying to mass-update product attributes by @elidrissidev in #1850 -Add polyfill for PHP8 native string functions by @tmotyl in #2014 -Improve getScheme on Zend_Controller_Request_Http by @mmenozzi in #1872 -Fix @method declarations in Mage_Catalog_Model_Resource_Eav_Attribute by @Caprico85 in #2031 -Deprecated global function "now" because it's equivalent to Varien_Date::now() by @Sdfendor in #1991 -Fixed the unused parameter in assignProduct by @rubanooo in #2011 -Remove white space for config values for #1852 by @luigifab in #2020 -password_new.html - typo in vars by @m-overlund in #2039 -add unit Tests and send coverage results to SonarCloud by @Flyingmana in #2041 -Use vanillaJS instead of prototype in Wishlist add to cart column by @MarcinNowakMacopedia in #2051 -do not mark github job as failes through sonar failure by @Flyingmana in #2053 -Analyze most of the source code with phpstan. Provide baseline. by @tmotyl in #2035 -Update PHPdoc and remove useless var by @bastienlm in #2056 -Add unit tests for security helper validateAgainstBlockMethodBlacklist and provide composer.lock by @tmotyl in #2058 -Fix widget edition in WYSIWYG by @FredericMartinez in #1605 -Use vanillaJS instead of encodeURI in wishlist add to cart by @MarcinNowakMacopedia in #2052 -Fixed bug on incorrect category store_id when set with store code in … by @kiatng in #1601 -Remove notification survey block by @kkrieger85 in #1267 -Fixed grid filter reset by @spinsch in #821 -Documentation of some changes by @luigifab in #1831 -Fix: Integrity constraint violation: Duplicate key by @tim-breitenstein-it in #1331 -Align label with value by @AlterWeb in #1230 -Remove backend current date from backend's header by @fballiano in #2063 -Lazy load contributors images by @luigifab in #2070 -Do not save customer addresses when there are no changes by @luigifab in #1579 -Removed getQty() from Mage_Wishlist_IndexController by @fballiano in #2072 -Add title for old googlecheckout payment method by @luigifab in #2076 -Default sortby should be read from core_config_data by @fballiano in #2062 -Prevent Zend_Date from checking locale for know date codes by @MarcinNowakMacopedia in #2050 -Update admin login pages by @luigifab in #1618 -Do not render action or massaction column in totals row in adminhtml grid by @theroch in #1530 -Fix instructions update for bank transfer orders by @luigifab in #2075 -Add missing attributes to salesOrderInvoiceInfo SOAP method by @elidrissidev in #1999 - -## v19.4.15 - 2021-08-26 - -2 security updates - -CVE-2021-32758 - GHSA-26rr-v2j2-25fh - Layout XML Arbitrary Code Fix -CVE-2021-32759 - GHSA-xm9f-vxmx-4m58 - Data Flow Sanitation Issue Fi - -more updates: - -#1478 make composer validation workflow use --strict -#1687 Removed phpdoc to parent doc take effect -Bump Version - align version with 20.0 branch -#1698 Do not load product when it is already loaded -#1715 Fix as attribute for cookie notice -#1402 fix ArgumentCountError: array_merge_recursive() -#1713 Fix retrun type of getColumn in Column_Renderer_Interface -#1254 Fix undefined offset on redis session -#1692 Add events list -#1670 Updated new events in README.md. -#1689 Fixed phpdoc of Mage_Core_Model_Resource_Db_Collection_Abstract::addExpressionFieldToSelect -#1665 Removed deprecated flash js (AC_RunActiveContent.js) -#1718 Handle empty Order increment prefix -#1684 Enforce specific PNG compression level of 9 -#1628 Do not load captcha.js when disabled -#1637 Grid range filter - optimize SQL query when from === to -#1720 rewrite isTableExists for performance reasons -#1733 fixes regression introduced by PR 1720 -#1746 Fixed phpdoc of Varien_Data_Collection_Db::getSelectSql -#1711 Allow BASE_URL to be overridden by environment in install script. -#1449 Add support for maintenance mode bypass via maintenance.ip file -#1541 Move ahead commits from 1.9.3.x (#447) -#1541 Move ahead commits from 1.9.3.x (#583) -#1541 Move ahead commits from 1.9.3.x (#575) -#1755 removed space after "To" in backend grids -#1725 Log exception on api -#1701 Code style (endif) -#1594 Invalidate reset password token when user changes password. -#1724 Add event sales_order_creditmemo_refund_before -#1262 Add instruction to add him-/herself to contributors list. -#1743 Fixed docblock in addStatusHistoryComment(). -#574 Mark indexProcess as STATUS_REQUIRE_REINDEX; it is cleared after -#1197 Add redis, and specify in more details + add php7.4 mention -#1243 Added proof of stability stack -#1627 Fix README.md contributors badge -#1380 Add check to avoid js error -#1676 Add OpenMage version to API 'magento.info'. -#1760 Update contributors list -#1770 Add int casting in getLogCleanTime -#1797 Phpdoc of Mage_Core_Model_Session_Abstract_Varien - - -## v19.4.14 - 2021-06-25 - -#1202 Fix #1190 - Fix the "$_FILES array is empty" exception when assiging products to a category or creating a category with the XMLRPC-API -#1227 modified nav-bar padding to prevent the search box hiding menu items -#1326 Fix notice when there are no sales rules for a given situation -#1443 Log Exception the right way in Session, no need for custom message formatting anymore -#1505 Fix the deprecation problem of idn_to_ascii() since php7.2 -#1484 Fix unserialization error when saving dataflow advanced profile. -#1483 Mage_Core_Model_Abstract: Fix rollback when Throwable is thrown in save/delete method -#1466 Improve error message of product required option by including option … -#1035 Code style (endif endforeach endfor and more) -#1577 Code style (endif and break) -#1575 Product qty is incremented when comment is added on a Credit Memo from SOAP API v2 -#1557 Mark invoice as last when dummy items included -#1554 Fix Coments in .htaccess -#1571 Reduce getId calls -#1565 Log exceptions when generating images -#1582 Reset array on product reset -#1598 fixed twitter share link, issue 1595 -#1591 removed magento logo in demo notice -#1494 Update default USPS endpoint to HTTPS schema -#1448 Remove _isDownloader flag -#1481 DEV: add docker-dde setup -#1534 Cleanup of getMimeType() -#1384 Add icons in admin (icon-head) -#1568 Fixes for #1564 and #1289 -- #1564 Checkout - Agreement content when empty (Terms and Conditions) -- #1289 Wrong attributes order in comparison window -#1593 fix documentation updateAttributeGroup() -#640 add some logging for errors during paypal response validation -#1169 do not connect to write adapter when getting the read adapter (#1167 ) -#1255 Change lowest PHP version to 7 -#1616 Revert "cleanup - remove orphan js/jscolor/* from XmlConnect package (#1436)" - as its used by MageWorx Advanced Product Options -#1613 Fix getChildren must be compatible with SimpleXMLElement with PHP 8 -#1392 Fix PHP8 Deprecated: Required parameter $A follows optional parameter -#1183 Fixes cloning of a collection by also cloning the internal select object -#802 Fix widgets layout handle on edit -#1416 Page title for credit memo and shipment -#1644 Fix fatal error - getRegionCollection() - issue #713 -#1588 Update report.php -#1674 Resolves the PHP 7 error: Declaration of Mage_Tag_Model_Api_V2::items($productId, $store) should be compatible with Mage_Tag_Model_Api::items($productId, $store = NULL) - - -## v19.4.13 - 2021-04-20 - -2 security updates - -CVE-2021-21426 - GHSA-m496-x567-f98c - Fixing a bug in Zend Framework's Stream HTTP Wrapper -CVE-2021-21427 - GHSA-fvrf-9428-527m - Security Update for SQLi for Magento 2 (a backport of CVE-2021-3007 of laminas-http) - -more updates: - -#1531 Throw an Exception in resource model if column not exists, instead of E_NOTICE -#1454 Fix doc getCountry - returning string instead of int -#1545 Re-add LICENSE.html because of errors during install process (#1542, #1160) -#1540 Fix PHP8 error in App.php: method_exists() now throws an exception if the first argument is not string|object -#1391 Fixes core and lib issues for PHP 8.0 compatibility -#1552 Revert update to Prototype serialize method that breaks OpenMage functionality / Can not select multiple statuses with Prototype 1.7.3 in Reports (#1549, #1497) - - -## v19.4.12 - 2021-04-06 - -#1459 make Mage::getOpenMageVersionInfo() more stable for the release process -#1468 fix markup in README.md -#1469 Delete RELEASE_NOTES.txt -#1436 Remove orphan js/jscolor -#1201 Fix wrong payment info template paths -#1439 Fixed syntax error ytheme-magento.css -#1473 Fix integrity constraint violation when order is canceled (#1220 #1472) -#1424 Ascending alphabetical sort for Attribute Set Name -#1464 Updated composer.json branch alias (#1160 #1460) -#194 fix paypal IPN postback response parsing -#1446 Better error handling when store is disabled -#1404 [BUGFIX] Count doesn't work with group by columns. This fix keeps the group by -#1365 Updating phpstorm meta files with magerun 2.1.0 -#1156 Removed observer adminhtml_sales_order_create_create_order (#1154) -#1358 Add a new event `adminhtml_block_widget_tabs_html_before`, for adding custom tab (#879) -#1445 make Developer Mode controllable by environment variable for all execution paths -#1302 Fix a bug where product media upload via API was not possible anymore (#1178 #1125 #666) -#1485 New event "init_form_values_after" after data set on a form -#1394 Replace alias methods (#986) -#1480 Add checkout agreement position, closes #1288 -#1406 Mage_Rss - DOC block update -#1398 Simplified true/false -#1496 Mage_Core_Model_Translate: Removed unused local variable -#1051 Add features from N98 layout helper (#321 #336 #416) -#1276 Fix array_key_exists on objects (deprecated notice or fatal error) -#1495 Removed unnecessary replacing of variable from parent -#1456 Correct password length message grammar -#1291 Removed redundant if statement -#1324 Notification_Security block - private to protected for easier extending -#1309 Removed unnecessary joins for global attributes -#1497 Upgrade prototype to version 1.7.3 -#1450 Fixed CRLF to LF -#1455 Massaction items - removed unused switch -#1467 _exportIterateCollection performance optimization - - -## v19.4.11 - 2021-02-14 - -#1248 mark trigger_recollect before collectTotals -#1418 Fix regression in configuration scope code. Refs #1417 -#1281 remove-reference-to-magentocommerce -#1383 Remove latest occurrences of XmlConnect -#1429 Revert "Removed 2 unneeded function calls. Local var is already there." -Ignore media/captcha directory. -#1412 Update static-code-analyses.yml -#1441 Fixed menu cursor -#1160 Updated README.md, closes #985 #992 -#1407 Reduced multiple dispatch events in login form for other themes. - - -## v19.4.10 - 2021-01-21 - - -3 security updates - -GHSA-jrgf-vfw2-hj26 CMS Editor code execution -GHSA-hj6w-xrv3-wjj9 Widget instances allows a hacker to inject an executable file on the server -GHSA-99m6-r53j-4hh2 Layout XML RCE Vulnerability - -More Changes: -#1246 Adds support for "SameSite" cookie property -#1356 Fixed return type of Mage_Adminhtml_Block_System_Config_Form::_canShowField -#1275 Add start & stop commands to ddev setup in readme -#1273 Update static-code-analyses.yml -#1206 Reduced multiple dispatch events in login form. -#1140 Github Action Labeler Bot -#1337 Allow rewrite of Mage_Core_Model_File_Validator_Image -#1086 Allow debug in admin -#1378 Declare two variables -#1330 Allow min pass length to 5 during login -#1373 Removed 2 unneeded function calls. Local var is already there. -#1390 Fix class name and filename for case sensitive filesystems -#1336 Fix getId() on bool when primary billing address is null -#1370 Fixed adminhtml boxes.css fieldset-wide for note. -#1168 New event "adminhtml_sales_order_create_save_before" when editing an order. -#1393 Fixes PHP7.4 deprecated nested ternary operators -#1403 TypeError: round(): Argument #1 ($num) must be of type int|float - -## v19.4.9 - 2020-12-29 - -increase composer.json php version range to include 8.0 -#1349 Fixed Zend Lib Deprecated Notice PHP8 -#1213 Fix strpos with non-string needle -add UnitTests to Github Actions -#1348 Fixed Zend Lib Tool Deprecated Notice -#1347 Fixed Zend Lib Amf Deprecated Notice -#1340 Fixed Zend Lib Barcode Deprecated -#1346 Fixed Zend Lib Validate Deprecated Notice -#1256 Fix libxml_disable_entity_loader for PHP 8 -#1251 Disable class unserialization where it is not needed. -#1350 Trim values from XML so auto-formatting our XML does not break the autoloader. -#1345 Fixed Zend Lib Wildfire Deprecated Notice -#1344 Fixed Zend Lib View Deprecated Notice -#1343 Fixed Zend Lib JSON Deprecated Notice -#1342 Fixed Zend Lib Filter Deprecated Notice -#1341 fix "Cannot unset $this" error -#1261 getAttributeRawValue() move operations with store to if statement -#1274 Removed unused fetchAll in addRatingInfo() -#1278 Handled the case where the coupon no longer exists -#1328 Fix phpDoc for set/getStepData in Checkout -#1323 Improve PHPDoc -#1319 Fix for currency symbol not saved with fatal PHP error #1318 -#1297 Update SECURITY.md -allow version 4 of hackathon composer installer -#1292 Support the logging of Throwables -#1285 Mage core model url - method call is provided 2 parameters, but the method signature uses 1 parameters -#1161 cleanup: Remove some files left in previous PRs -#1207 bugfix: don't cast min_sale_qty to int as it can be a decimal -#1279 Remove php short open tag - - -## v19.4.8 - 2020-10-20 - -CVE-2020-15244 RCE via PHP Object injection via SOAP Requests -#1250 removed use of travisCI -#1236 Adds missing meta tags to prevent SUPEE-11295 related warnings from Magereport -#991 Migrate to new frontend cookie name (session namespace) (#990) -#1266 Add ddev based development setup to Readme -#1247 Fix call_user_func_array arguments for PHP 8 -#1242 update mcrypt related explanation in Readme -#1184 Add php-74 to static tests - - - -## v19.4.7 - 2020-09-15 - -#952 Remove Magento Connect, Downloader and PEAR -#1181 Updated lib Net/IDNA2 to latest version -#1185 Removed unused class Varien_Filter_Money -#1182 Mage_Eav - Fix PHP 7.4 deprecation: array/string curly braces access -#1108 Ensure correctly sorted block children after unset some of them -#969 Fix checkout address for guest order -#1170 Throw exception when editing an order and the old order could not be cancelled -#1130 Change default db name -#510 Fix _addUrlRewrite() ignoring collection store scope -#1117 Prevent duplicate entry when updating salesrule_coupon_usage -#1146 Add doc comments to image related classes -#1008 add OpenMage admin theme and theme switcher -#1012 Add development environment setup files and README - -## v19.4.6 - 2020-08-18 - -CVE-2020-15151 Observable Timing Discrepancy - Improve validation of secret keys (#1138) -#1136 Fix special price for bundle products -#1111 fix Coupon related cancel order bug -#1098 Cleanup: disable fixerio in config -#1097 Cleanup: disable currencyconverterapi in config -#1101 Fix Github Action: use cron schedule for labeler -#1113 Fix iframe removal in TinyMCE -#1078 Prevent Image resize to 0 width or height -#1091 Added dash(-) as an allowed character for store code -#1061 Fix bug related to filter in Admin UI for Role Users -#1081 Fixed Magento not detecting HTTPS behind a proxy (makes use of HTTP_X_FORWARDED_PROTO header) -#1079 Added GIT flow to README.md -#442 Support symlinks while not allowing malicious template paths - - -## v19.4.5 - 2020-07-07 - -#1044 Phoenix_Moneybookers - Removed Phoenix_Moneybookers -#1040 Mage_XmlConnect - Removed Mage_XmlConnect -#748 Mage_Shipping - DOC block update -#759 Mage_Persistant - DOC block update -#758 Mage_Poll - DOC block update -#757 Mage_ProductAlert - DOC block update -#755 Mage_Reports - DOC block update -#756 Mage_Rating - DOC block update -#1048 Fix broken file upload for downloadables caused by PATCH SUPEE-11314 -#1050 add PullRequest Templates and config for automatic Issue Labeling (#1090) -#1014 Mage_Adminhtml - update admin footer -#1085 Installer rebranding -#1072 Mage_Admin - Fixed issue with admin login after forced password rehash -#1084 fix "Call to undefined function char()" error introduced in #966 (#1083) -#1069 :heart: for contributors - introduce all-contributors-bot to fill README (#1088) -#1082 Update composer.json to fix email address -#1067 Mage_Core - Remove unneeded docblock method definition -#764 Mage_Oauth - mini DOC block update -#760 Mage_Payment - DOC block update -#762 Mage_Page - DOC block update - - -## v19.4.4 - 2020-06-28 - -Include the Magento Patch SUPEE-11346 - -#750 Mage_SalesRule - DOC block update -#753 Mage_Rule - DOC block update -#747 Mage_Sitemap - DOC block update -#754 Mage_Review - DOC block update -#745 Mage_Tax - DOC block update -#744 Mage_Weee - DOC block update -#743 Mage_Widget - DOC block update -#742 Mage_Wishlist - DOC block update -#942 Cache all attribute options for display in layered navigation (#943 #934) -#1001 Removed php5 settings from .htaccess (#149) -#798 Mage_Core fix DOC block -#1031 Ensure coupon code times_used decrements on cancel -#1046 Rename Magento Admin to OpenMage Admin -#1060 Apply SUPEE-11346 patch -#1018 Add runtime cache in one more place in Zend_Data (#918) -#1034 Fixed store get attribute raw value -#1003 fix 404 dashboard on first admin login on multi store views -#1032 Allow access to current order via Registry -#1039 CatalogSearch - Fix array_intersect expected parameter 1 to be an array null given -#770 Mage_GiftMessage - DOC block update -#768 Mage_Index - DOC block update -#765 Mage_Newsletter - DOC block update -#1029 Correct name for Request class in Payment Module -#601 Prevent redundant simultaneous requests to remote storage in get.php -#1000 Update Github issue templates -#966 Check for null byte at the time of writing a file -#1021 E-Mail templates only: replace plaintext password with hint of choosen password (#307 #1019) -#1020 Add @throws vardoc to Varien_Io_File cd function -#771 Mage_Eav - DOC block update -#772 Mage_Downloadable - DOC block update -#929 fix apply discount amount to FPT percent discount -#1023 Use || operators instead of „or” -#1033 Fix wrong count of arguments in Mage_Core_Model_Resource_Db_Collection_Abstract -#703 Varien_ - DOC block update (1) -#702 Mage_Core - DOC block update -#775 Mage_Checkout - DOC block update -#894 fix for Fatal error: Nesting level too deep - recursive dependency? (#1025) -#1002 Removed Mage_GoogleBase -#972 Changed sizeof() to count() -#1011 Fix for installing on MySQL 8 (Fixes #935) -#984 Fixed .thumbnail load -#1013 Fix PHP Warning: "continue" targeting switch is equivalent to "break" -#890 Remove this->_debug in Mage_Paypal_Model_Api_Standard->getStandardCheckoutRequest -#936 Fix SQL query quoting/casting when type is passed to where function -#589 Fix HTTP/2 errors with cURL post -#776 Mage_CatalogSearch - DOC block update -#777 Mage_CatalogRule - DOC block update -#897 When category default_sort_by not available, use the system config -#1015 Fix typo in variable name in Media.php / Fixed atttribute typo -#780 Mage_CatalogInventory - DOC block update -#852 Stop calling getLastPageNumber() when not necessary -#980 Prevent errors when customer does not have a created at timestamp (#923) -#1017 add Badges to Readme -#1016 Fix typo in Area.php DOC block -#783 Mage_Catalog - DOC block update -#701 Mage_Customer - DOC block update -#999 Replaced Magento Logo with OpenMage Logos -#997 Fixed Notice in Mage_Catalog_Model_Resource_Url: Trying to access array offset -#751 Mage_Sales - DOC block update -#978 Do not call vsprintf when there are no arguments -#773 Mage_Directory - DOC block update -#749 Mage_Sendfriend - DOC block update -#769 Mage_ImportExport - DOC block update -#994 update adminnotification url to www.openmage.org -#989 Apply some Brand Changes, to have Magento appearing less -#730 Prevent fatal error in Mage_Catalog_Model_Resource_Category_Collection::setVisibility() / Set correct collection types in Mage_Catalog_Model_Product_Visibility -#919 Improve performance of the products sold report -#766 Mage_Media - mini DOC block update -#979 Store unserialized data in local cache of Zend_Data -#974 Update SECURITY.md -Followup to #918: Fix error saving local cache (#918) -#970 change all ands in conditional statements to && for better consistency (#958) -#965 Fixed calls to static methods -#963 Dropped useless semicolons -#964 Added missing public modifier -#699 Mage_Contacts - DOC block update -#698 Mage_Captcha - DOC block update -#697 Mage_Cron - DOC block update -#708 Mage_CurrencySymbol - DOC block update -#778 Mage_Admin - DOC block update -#779 Mage_Api2 - DOC block update -#781 Mage_CatalogIndex - DOC block update -#694 Mage_Cms - DOC block update -#695 Mage_AdminNotification - DOC block update -#968 Update README and removed php5.6 from static code analyses -#878 Create SECURITY.md -#961 Marked Mysql4-classes as deprecated (#957) -#956 Remove unsupported PHP 7.x settings from .htaccess -#951 Fix 'Invalid attribute name: main_table.store_id (#939) - -## v19.4.3 - 2020-05-10 - -Include the Magento Release 1.9.4.5 - -Additionally: - -#944 Upstream merge 1.9.4.5 -#693 Mage_Api - DOC block update -#782 Mage_Bundle - DOC block update -#746 Mage_Tag - DOC block update -#761 Mage_PageCache - mini DOC block update -#774 Mage_ConfigurableSwatches - DOC block update -#848 Fix stuck checkout on Shipping Method (#847) -#813 Emulation did not load frontend translation - - - -## v19.4.2 - 2020-05-10 - -#656 Fix removing coupon from cart -#625 Remove memory_limit in .htaccess -#895 Removed ES6 JS introduced in 1.9.4.4 for IE compability -#876 Update .htaccess (mod_expires headers for common file types) -#898 Insert whitespace in class name for styling to work. (fix follow up from #594 Remove whitespace in addBodyClass($className) ) -#905 Typo in data type (doc block change) -#910 unused variable cleanup -#930 Send order and agreement variables to the view -#913 allow (json-)string for Mage_HTTP_Client_Curl::makeRequest $params Parameter -#912 Do not emit warning on null byte in $src in io_file -#916 Do not sum columns with undefined total function -#918 Add runtime cache to Zend_Locale_Data -#650 painful protection in Subtotal.php -#933 Fix warning "Warning: A non-numeric value encountered" in Model_Url -#712 #729 [Bug] Mage_Customer_Model_Convert_Parser_Customer::parse() / Fixes undefined variable -#937 update vies vat validation soap endpoint - - - -## v19.4.1 - 2020-01-30 - -Include the Magento Release 1.9.4.4 - -Additionally: - -#871 Default setting for validate_formkey_checkout => 1 (only affects new installs) -#870 Add .gitignore to /var/ -#856 remove outdated Undo MagicQuotes function -#863 remove deprecated function calls in Mage_Adminhtml -#804 Add created_at and updated_at to all relevant REST API resources -#884 Add missing method to category collection class -#883 Add test method to cache models and fix layout update use of test method -#886 Adding 'display=swap' to default RWD Google Font -#888 fix php syntax error in app/design/frontend/rwd/default/template/email/catalog/product/list.phtml -#885 Replaced deprecated each in getAttributeRawValue() -#842 Add missing EU country (HR) to initial config -#857 correct argument order of implode calls -#859 Array and string offset access syntax with curly braces is deprecated - - -## before diff --git a/.github/changelog/version_20.txt b/.github/changelog/version_20.txt deleted file mode 100644 index 7c9b8fca0d0..00000000000 --- a/.github/changelog/version_20.txt +++ /dev/null @@ -1,357 +0,0 @@ - -## v20.0.16 - unreleased - -## v20.0.15 - 2022-08-02 - -Version bump to prepare for next release by @fballiano in #2088 -Replaced a lot of Magento logos with OpenMage ones by @fballiano in #1599 -Remove end class comment by @luigifab in #2092 -Trim trailing whitespace by @luigifab in #2093 -Issue #268: sales_order_create_sidebar_wishlist breaks if wishlist module is disabled by @fballiano in #2059 -Better messages for product alerts by @fballiano in #1930 -Clean review_entity_summary when reviews are deleted by @fballiano in #1103 -Fixed admin tabs order not working properly. by @kiatng in #1360 -Fix admin menu z-index when debug template paths is enabled by @elidrissidev in #1819 -Change default sort in CMS Pages/Blocks/Widgets grids by @ADDISON74 in #1922 -Small improvements in Manage Attributes grid by @ADDISON74 in #1944 -Merge 20.0.14 to 20.0 branch by @fballiano in #2135 -Added database ID to EAV options table by @fballiano in #2060 -Clean up empty directories created when file requested does not exist in remote storage. by @colinmollenhour in #1338 -Add a word-break to list items to keep the layout intact by @loekvangool in #1321 -fix download custom option backend by @empiricompany in #1827 -Fix Varien_File_Uploader ignored errors with try catch by @luigifab in #1277 -User-configurable cron expression for regular cache flushing #2086 by @LukasCesal in #2087 -Fixed infinite loop of popup alerts in backend attribute set page by @kiatng in #1672 -Added option not to use timezone in rendering datetime in backend grid. by @kiatng in #1997 -Upgrade GitHub action/checkout to v3 by @fballiano in #2141 -Fix admin menu z-index for popup message by @luigifab in #2142 -Fix undefined array key when an image depend on another field by @luigifab in #2133 -Fix supplied resource is not a valid stream resource for Varien_Io_File by @eneiasramos in #2040 -Raise phpstan level to 1 and fix basic issues by @tmotyl in #2055 -fix wrong tier price percentage rounding by @empiricompany in #2089 -Replaced travis badge with workflow badges by @fballiano in #2067 -Update References to Documentation/Magento Website - Issue #988 by @fballiano in #2069 -Create a global config cache rather than a config cache per store by @rvelhote in #1066 -Rise Phpstan level 2, fix some issues by @tmotyl in #2146 -Backend mask title has padding also when not having an icon by @fballiano in #2145 -Fix config menu css from Isse #1219 by @aterjung in #1224 -Fix protect code changing on order save by @justinbeaty in #1422 -Introducing polyfill for is_countable() by @fballiano in #2163 -Ensure there are no emails without recipient in email queue by @lemundo-team in #1109 -Fix Core Bug: To make "01/01/1970" a valid birthday by @1Shiroyuuki1 in #1851 -Fix issues with isCurrentlySecure detection and Offloader Header config. by @colinmollenhour in #1462 -PHP 8 fix null provided to count() in tax calculation class by @iamniels in #2162 -Better error handling for issues during bulk attribute update by @woutersamaey in #1434 -Allow to cancel orders like registerCancellation by @luigifab in #1804 -Revert "Fix wrong payment info template paths" by @fballiano in #2179 -Fix Failed IPN changing to Payment Received incorrectly by @fballiano in #2183 -Reverted commit 2ae8c05 by @fballiano in #2182 -Revert "creditmemo bundle inventory calculation error" by @fballiano in #2186 -Sourcemap link removed since this file is not minified by @fballiano in #2187 -Remove suppression operator from translate method to support PHP 8 by @iamniels in #2161 -[PHP 8] Fix TypeError when calling round() with a string argument by @elidrissidev in #2193 -Backend - Change the default sort column in Export page by @ADDISON74 in #2170 -Fix warnings on undefined user agent by @Caprico85 in #2032 -Fix PHP 8 Fatal error: Uncaught ValueError: imagecolorsforindex() in Varien_Image_Adapter_Gd2 by @iamniels in #2197 -Do not calculate catalogrules when there are none by @tmotyl in #1119 -replacing apc with apcu functions. by @f1-outsourcing in #1951 -Add robots.txt.sample by @simbus82 in #1024 -Changed timestamp definition to fix issue #1166 by @fballiano in #2189 -Cast params receiving int to string by @holozaen in #2144 -Set log level from config by @elidrissidev in #1727 -Expected PayPal (Express) field not found in NVP Response: AMT by @luigifab in #1520 -(BC) Remove js index file by @luigifab in #1622 -Fix display of Insert widget and Insert variable by @luigifab in #1848 -Fix region API list response - Update Api.php --> bug by @kyansi in #792 -Fixed issue #2001, EAV datetime attribute can't save time. by @kiatng in #2003 -Wrap max log level retrieval from config in a try catch by @elidrissidev in #2203 -Fix to allow for always reorder by @seansan in #504 -Remove frontend_type tag for text by @luigifab in #2148 -Reduce needless saves by avoiding setting _hasDataChanges flag by @colinmollenhour in #2066 -Pass delimiter char to preg_quote by @MarcinNowakMacopedia in #2047 -Phpstan errors in pr1325 by @kiatng in #2207 -Avoids multiplying all price adjustments by the number of websites by @azambon in #1303 -Use latest media editor plugin (989c4b5 from 2015030) for tinymce v3.5 by @theroch in #1123 -Some more room for the category menu by @loekvangool in #1314 -PHP 8: Fix cannot remove category on admin product edit categories tab by @iamniels in #2205 -Config cache for system.xml loader: Speed improvement by @lamskoy in #1916 -Remove strict typing for Mage_Catalog_Model_Product->setStockItem met… by @colinmollenhour in #2208 -Avoid session invalidation when changing session lifetime. by @colinmollenhour in #546 -Modernize setCategoryIds() by @loekvangool in #1308 -Replace Magento word with OpenMage in root files by @ADDISON74 in #2215 -Remove backslash character in translations files by @ADDISON74 in #2219 -Fix ACL resource name typo in Api2 roles page by @elidrissidev in #2222 -Missing bottom borders in Orders page with Gift Messages allowed by @ADDISON74 in #2220 -Backend > Orders grid - More space for columns by @ADDISON74 in #2217 -Fixed issue #2196, throws error if an email is already a newsletter s… by @kiatng in #2214 -Widen some dynamic admin input fields by @loekvangool in #1315 -Admin's password validation during Api's role/user removing process by @przemyslaw-p in #1045 -Fix multiple "PHPDoc tag @param has invalid value" phpstan errors by @tmotyl in #2227 -Fix for "non well formed numeric value" by @fballiano in #2225 -Fixed warning a non-numeric value encountered in /Mage/Catalog/Model/Resource/Product/Option.php by @kiatng in #2228 -Added support for sending subscribe confirm email by @fballiano in #2195 -Allow setting optional product attributes to null in REST API by @elidrissidev in #2230 -Fixed issue #2212 SQLSTATE[42S22]: Column not found: 1054 Unknown col… by @kiatng in #2221 -Drop LTS csv files by @luigifab in #1621 -Remove the word section by @luigifab in #2147 -Fix Missing Mage_Api_Model_Server_V2_Handler in SOAP v2 WSDL. by @SRaromicon in #392 -Throw exception when trying to modifying address that does not belong to logged in user by @fballiano in #2231 -Grid - iterate only columns with filters by @Sekiphp in #1642 -Fix Mage_Shell_Indexer wrong class name by @fballiano in #2234 -Backend > Manage Products grid - More space for columns by @ADDISON74 in #2218 -Make oldFields mapping hardcoded to speed up system by @tmotyl in #921 -Made sitemap more flexible by @sreichel in #1854 -Update Mage_Eav_Model_Entity_Collection_Abstract::joinTable() by @cebe in #1814 -Add "Times used" indicator field to promo rule quote grid by @spinsch in #1853 -bugfix: fix adminhtml translation in config.xml for importexport module by @eneiasramos in #2244 -Replace deprecated global now() calls with Varien_Date::now() by @Sdfendor in #2250 -Fix the calculation of bundle saleable status by @aredridel in #2178 -Revert "Some more room for the category menu" by @ADDISON74 in #2254 -prevent customer review view from loading foreign reviews by @aterjung in #1970 -Fix for "reset filter" breaking grid sorting by @fballiano in #2252 -Flush Magento Cache - button and message changes by @ADDISON74 in #2261 -Can upload xlsx file by @sdecalom in #2266 -Backend grid heads - Remove colons after To, From and In words by @ADDISON74 in #2267 -Merge v19 to v20 by @fballiano in #2206 -Fixed documentation link for "store scope" in store switcher (backend) by @fballiano in #2256 -Fix Varien_Io_File ignored errors with error control operator by @luigifab in #1269 -Fix store id filter in catalogProductList SOAP method by @elidrissidev in #2243 -Small changes in .htaccess file /media directory by @ADDISON74 in #2280 -Removed lib/flex by @fballiano in #2271 -All .gitignore files in one place by @ADDISON74 in #2269 -Create/Update .htaccess file in skin and media directories by @ADDISON74 in #2289 -Add magento-composer-installer to allowed plugins by @elidrissidev in #2296 -Delete .htaccess.sample by @ADDISON74 in #2293 -Update php.ini.sample by @ADDISON74 in #2292 -Fix editing special price in product mass attribute update by @fballiano in #2287 -Added required PHP modules to composer.json by @fballiano in #2064 -Update robots.txt.sample by @ADDISON74 in #2307 -Include exception message when generating error report by @elidrissidev in #2311 -add some ReturnTypeWillChange annotations to Varien_object by @Flyingmana in #2301 -Fix xml validation problems by @fballiano in #2242 -Create .htaccess file in js directory (OM-20 only) by @ADDISON74 in #2305 -Fix argument must contain at least one element by @luigifab in #2091 -Order add comment functionality in REST API by @elidrissidev in #2315 -XML validation workflow by @fballiano in #2314 -add basic unitTest for xml validation by @Flyingmana in #2304 -Fix "Variable might not be defined" PHPStan error by @elidrissidev in #2316 -Addendum to PR 2087 by @ADDISON74 in #2308 -Allow to rename api.php by @luigifab in #2132 -Removed module Mage_PageCache by @fballiano in #2258 -Fix phpdoc for saveAttribute() by @Caprico85 in #2320 -Small changes in root files by @ADDISON74 in #2324 -Add a message calling for an end to the Russian invasion of Ukraine by @luigifab in #2074 -Mage Factory Methods: Direct "_registry" Access Without Method Call by @Sdfendor in #2319 -Fixes a notice by @azambon in #2318 -Add vendor folder to gitignore by @elidrissidev in #2334 -Fix for modphp8 by @fballiano in #2329 -Fix for modphp8 by @fballiano in #2328 -Update Flat.php to correct bug #2337 by @matteorossi-thespacesm in #2338 -Fix #815 - add getAttributeRawText function by @justinbeaty in #2312 -gitignore: added VScode, PhpStorm files and ddev config.yaml by @sreichel in #2343 -Removed docker-dde sample by @sreichel in #2346 -Removed dead code by @sreichel in #2339 -Cosmetic fix in Mage_Sales_Model_Order_Payment by @fballiano in #2350 - - -## v20.0.14 - 2022-05-18 - -Add field info to exception when thrown in saving System Configuration. by @kiatng in #1784 -Fix Tax Rule name update by @elidrissidev in #1728 -Fixed method addExpressionFieldToSelect to use Zend_Db_Expr by @midlan in #1259 -enable programmatic creation of reviews for specific users by @luigifab in #1803 -API fix option labels for store view by @woutersamaey in #1828 -Fix newsletter subcriber loading by customer by @mmenozzi in #1779 -Fix file delete of customer attribute by @kiatng in #927 -Trim trailing whitespace by @luigifab in #1834 and #1846 -Updated .gitignore by @midlan in #1859 -Add gitpod online IDE config by @Flyingmana in #1836 -Add phpstan configuration, dependencies and github action by @Flyingmana in #1875 -Add Mage_Index helpers declaration to config.xml by @elidrissidev in #1878 -API: _getLocation - removed unused argument; fix phpdoc by @Sekiphp in #1867 -Grid page size: replaced similar lines to foreach by @Sekiphp in #1856 -Fix exception handling on Observer call when class not found by @spinsch in #1861 -Fixes catalog pricerules with dates in conditions, closes #433 by @sreichel in #1159 -Zend_Locale_Format::isNumber throws notice for float values by @fballiano in #1758 -Update PayPal currencies and countries by @luigifab in #1805 -Aggregate most viewed products report daily via a Cron job by @elidrissidev in #1829 -extend php Syntax check to php 8.1 by @Flyingmana in #1883 -Fix incompatible declaration error by @holozaen in #1890 -Zend registry - removed method offset exists (using parental) by @Sekiphp in #1873 -[PHP 8.1] Fix deprecation notice in mcryptcompat lib by @Sdfendor in #1891 -Bugfix #1885 - Add to cart only accepts 1 item by @gdemarsico in #1896 -Array to string conversion when adding reviews from backend by @fballiano in #1769 -Update phpdoc in Collection.php by @rubanooo in #1816 -Fix syntax in lib/Zend/Locale/Data/es_419.xml by @elidrissidev in #1901 -make fulltext search separator (OR/AND) configurable from backend by @sreichel in #1852 -Revert of Mage_Adminhtml_Block_Widget_Grid::_exportIterateCollection by @midlan in #1914 -demo.html is an unnecessary file by @ADDISON74 in #1926 -Revert #1355 for transactional email by @luigifab in #1898 -Sort ascending CMS Block list in Categories by @ADDISON74 in #1925 -[PHP 8.0] Refactor legacy usage of implode in Mage_Api2 by @elidrissidev in #1938 -Initialize Api2 Fields validator's required fields array by @elidrissidev in #1936 -No alt tag value in Recently Viewed Products side block by @ADDISON74 in #1920 -Dashboard - Top 5 Search Terms link issue by @ADDISON74 in #1917 -Removed unused var $_odd in templates. by @kiatng in #1964 -Documentation fix on README file about composer require by @nimasan in #1954 -Fix typo in Zend/Date.php by @eltociear in #1979 -[PHP 8.0] Check if track progressdetail is an array before calling count by @elidrissidev in #1982 -[PHP 8.1] Fix cookie deletion behavior by @Sdfendor in #1984 -updateAttributeSet() accepting array or string by @Sekiphp in #1535 -Fix typo in code comment by @dotancohen in #1988 -Fix #1924 non-existing field by @woutersamaey in #1941 -Added optgroup feature for massaction items (grids) by @Sekiphp in #1913 -PHPDoc fix for Mage_Core_Model_Config by @Sdfendor in #1802 -Missing middlename for salesOrderAddressEntity in SOAP APIs by @fballiano in #1977 -Attribute note adminhtml show translate by @boesbo in #1710 -Removed global polyfill function for PHP versions below 7.0 by @Sdfendor in #1990 -fix typo in _applyCustomOption() to correctly calculate min/max price by @jouriy in #1500 -Fix typo: Replace 'Retrive' with 'Retrieve' globally by @tmewes in #1995 -Add formkey validation to Newsletter subscribe action (theme BC-break) by @elidrissidev in #1866 -Added ability to add target attribute for adminhtml menu items by @Sekiphp in #1985 -Add docblock to app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column… by @kiatng in #1987 -[PHP 8.1] Fix passing null to trim() by @elidrissidev in #2002 -Replaced remaining deprecated urlEscape calls. by @Sdfendor in #2008 -Update phpstan version by @tmotyl in #2015 -Replaced isAvailable() with isSalable() so events are considered by @woutersamaey in #1630 -Use mb_substr to split the postcode by @luigifab in #1357 -Fix count(): Parameter must be an array or an object that implements Countable by @Sekiphp in #1960 -Fix getting default min_sale_qty when trying to mass-update product attributes by @elidrissidev in #1850 -Add polyfill for PHP8 native string functions by @tmotyl in #2014 -Improve getScheme on Zend_Controller_Request_Http by @mmenozzi in #1872 -Fix @method declarations in Mage_Catalog_Model_Resource_Eav_Attribute by @Caprico85 in #2031 -Deprecated global function "now" because it's equivalent to Varien_Date::now() by @Sdfendor in #1991 -Fixed the unused parameter in assignProduct by @rubanooo in #2011 -Remove white space for config values for #1852 by @luigifab in #2020 -password_new.html - typo in vars by @m-overlund in #2039 -add unit Tests and send coverage results to SonarCloud by @Flyingmana in #2041 -Use vanillaJS instead of prototype in Wishlist add to cart column by @MarcinNowakMacopedia in #2051 -do not mark github job as failes through sonar failure by @Flyingmana in #2053 -Analyze most of the source code with phpstan. Provide baseline. by @tmotyl in #2035 -Update PHPdoc and remove useless var by @bastienlm in #2056 -Add unit tests for security helper validateAgainstBlockMethodBlacklist and provide composer.lock by @tmotyl in #2058 -Fix widget edition in WYSIWYG by @FredericMartinez in #1605 -Use vanillaJS instead of encodeURI in wishlist add to cart by @MarcinNowakMacopedia in #2052 -Fixed bug on incorrect category store_id when set with store code in … by @kiatng in #1601 -Remove notification survey block by @kkrieger85 in #1267 -Fixed grid filter reset by @spinsch in #821 -Documentation of some changes by @luigifab in #1831 -Fix: Integrity constraint violation: Duplicate key by @tim-breitenstein-it in #1331 -Align label with value by @AlterWeb in #1230 -Remove backend current date from backend's header by @fballiano in #2063 -Lazy load contributors images by @luigifab in #2070 -Do not save customer addresses when there are no changes by @luigifab in #1579 -Removed getQty() from Mage_Wishlist_IndexController by @fballiano in #2072 -Add title for old googlecheckout payment method by @luigifab in #2076 -Default sortby should be read from core_config_data by @fballiano in #2062 -Prevent Zend_Date from checking locale for know date codes by @MarcinNowakMacopedia in #2050 -Update admin login pages by @luigifab in #1618 -Do not render action or massaction column in totals row in adminhtml grid by @theroch in #1530 -Fix instructions update for bank transfer orders by @luigifab in #2075 -Add missing attributes to salesOrderInvoiceInfo SOAP method by @elidrissidev in #1999 - - -## v20.0.13 - 2021-08-26 - -2 security updates - -CVE-2021-32758 - GHSA-26rr-v2j2-25fh - Layout XML Arbitrary Code Fix -CVE-2021-32759 - GHSA-xm9f-vxmx-4m58 - Data Flow Sanitation Issue Fix - -more updates: - -#1735 Fixed origData is empty in a quote -#1667 Removed orphan directory and code of compiler and downloder. -#1355 Removed unused variable -#1525 Fixed incorrect datetime in block. - -and merged changes from v19.4.15 - -## v20.0.12 - 2021-06-25 - -fix version in getOpenMageVersionInfo() - -## v20.0.11 - 2021-06-25 - -#1567 Fixed incorrect regex in Varien_Object _underscore() -#1544 Prevent backend_type from being changed automatically on attribute save without the admin realizing -#1555 Performance improvement for catalog product images -#1600 Remove "default" themes from 20.x -#1610 Reinstate getters and setters for $_pageHelpUrl which some third party modules still use -#1532 add Possibility to disable global search in backend -#1513 Add redis as a valid option for global/session_save (and activate Cm_RedisSession module by default) -#1499 Set proper HTTP response code on error -#1623 steamClose dosent void this->_streamHandler in php8 -#1073 (BC) Removed IE compatibility -#1523 don't redirect to "downloader" (which doesn't exists) - - -and merged changes from v19.4.14 - -## v20.0.10 - 2021-04-20 - -New Release, because v20.0.9 was tagged wrong - -## v20.0.9 - 2021-04-20 - -2 security updates - -CVE-2021-21426 - GHSA-m496-x567-f98c - Fixing a bug in Zend Framework's Stream HTTP Wrapper -CVE-2021-21427 - GHSA-fvrf-9428-527m - Security Update for SQLi for Magento 2 (a backport of CVE-2021-3007 of laminas-http) - -more updates: - -#1536 Remove the documentation Hint "(?)" functionality - -and merged changes from v19.4.13 - - -## v20.0.8 - 2021-04-06 - -#1477 Remove invalid branch alias to make the branch importable on packagist.org -#1252 Directory currency - performance optimalization -#1325 Move orig data to abstract model (according to Magento 2.x) -#1502 Remove Deprecated _afterSaveCommit from Mage_Core_Model_Abstract - -and merged changes from v19.4.12 - -## v20.0.7 - 2021-02-14 - -#1149 add logging to lockfile related Exceptions -merged changes from v19.4.11 - -## v20.0.6 - 2021-01-19 - -merged changes from v19.4.10 - -## v20.0.5 - 2020-12-29 - -merged changes from v19.4.9 - - -## v20.0.4 - 2020-10-20 - -merged changes from v19.4.8 -including -CVE-2020-15244 RCE via PHP Object injection via SOAP Requests - - -## v20.0.3 - 2020-09-15 - -merged changes from v19.4.7 - - -## v20.0.2 - 2020-08-18 - -merged changes from v19.4.6 -including -CVE-2020-15151 Observable Timing Discrepancy - Improve validation of secret keys (#1138) - -## v20.0.1 - 2020-07-07 - -merged changes from v19.4.5 - -## v20.0.0 - 2020-06-28 - -Identical to v19.4.4 - diff --git a/.github/labeler.yml b/.github/labeler.yml index bad2405eba0..61d73ee8dba 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,629 +1,909 @@ 'Environment': - - .github/* - - .github/**/* + - changed-files: + - any-glob-to-any-file: [ + .github/*, + .github/**/* + ] 'htaccess': - - .htaccess + - changed-files: + - any-glob-to-any-file: [ + .htaccess + ] 'composer': - - composer.json - - composer.lock + - changed-files: + - any-glob-to-any-file: [ + composer.json, + composer.lock + ] 'downloader': - - downloader/* - - downloader/**/* + - changed-files: + - any-glob-to-any-file: [ + downloader/*, + downloader/**/* + ] 'errors': - - errors/* - - errors/**/* + - changed-files: + - any-glob-to-any-file: [ + errors/*, + errors/**/* + ] 'Javascript': - - js/* - - js/**/* + - changed-files: + - any-glob-to-any-file: [ + js/*, + js/**/* + ] # Add Library Labels (tbc) 'Component: lib/Mage': - - lib/Mage/* - - lib/Mage/**/* + - changed-files: + - any-glob-to-any-file: [ + lib/Mage/*, + lib/Mage/**/* + ] 'Component: lib/Magento': - - lib/Magento/* - - lib/Magento/**/* + - changed-files: + - any-glob-to-any-file: [ + lib/Magento/*, + lib/Magento/**/* + ] 'Component: lib/Varien': - - lib/Varien/* - - lib/Varien/**/* + - changed-files: + - any-glob-to-any-file: [ + lib/Varien/*, + lib/Varien/**/* + ] 'Component: lib/PEAR': - - lib/PEAR/* - - lib/PEAR/**/* + - changed-files: + - any-glob-to-any-file: [ + lib/PEAR/*, + lib/PEAR/**/* + ] 'Component: lib/Zend': - - lib/Zend/* - - lib/Zend/**/* - - app/code/core/Zend/* - - app/code/core/Zend/**/* + - changed-files: + - any-glob-to-any-file: [ + lib/Zend/*, + lib/Zend/**/*, + app/code/core/Zend/*, + app/code/core/Zend/**/* + ] 'Component: lib/*': - - lib/* - - lib/**/* + - changed-files: + - any-glob-to-any-file: [ + lib/*, + lib/**/* + ] 'shell': - - shell/* - - shell/**/* + - changed-files: + - any-glob-to-any-file: [ + shell/*, + shell/**/* + ] # Add Mage.php 'Mage.php': - - app/Mage.php + - changed-files: + - any-glob-to-any-file: [ + app/Mage.php + ] # Add Module Labels 'Component: Admin': - - app/code/core/Mage/Admin/* - - app/code/core/Mage/Admin/**/* - - app/design/adminhtml/*/*/layout/admin.xml + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Admin/*, + app/code/core/Mage/Admin/**/*, + app/design/adminhtml/*/*/layout/admin.xml + ] 'Component: Adminhtml': - - app/code/core/Mage/Adminhtml/* - - app/code/core/Mage/Adminhtml/**/* - - app/design/adminhtml/* - - app/design/adminhtml/**/* - - skin/adminhtml/* - - skin/adminhtml/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Adminhtml/*, + app/code/core/Mage/Adminhtml/**/*, + app/design/adminhtml/*, + app/design/adminhtml/**/*, + skin/adminhtml/*, + skin/adminhtml/**/* + ] 'Component: AdminNotification': - - app/code/core/Mage/AdminNotification/* - - app/code/core/Mage/AdminNotification/**/* - - app/design/adminhtml/*/*/layout/adminnotification.xml + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/AdminNotification/*, + app/code/core/Mage/AdminNotification/**/*, + app/design/adminhtml/*/*/layout/adminnotification.xml + ] 'Component: Api': - - app/code/core/Mage/Api/* - - app/code/core/Mage/Api/**/* - - app/design/adminhtml/*/*/template/api/* - - app/design/adminhtml/*/*/template/api/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Api/*, + app/code/core/Mage/Api/**/*, + app/design/adminhtml/*/*/template/api/*, + app/design/adminhtml/*/*/template/api/**/* + ] 'Component: Api2': - - app/code/core/Mage/Api2/* - - app/code/core/Mage/Api2/**/* - - app/design/adminhtml/*/*/layout/api2.xml - - app/design/adminhtml/*/*/template/api2/* - - app/design/adminhtml/*/*/template/api2/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Api2/*, + app/code/core/Mage/Api2/**/*, + app/design/adminhtml/*/*/layout/api2.xml, + app/design/adminhtml/*/*/template/api2/*, + app/design/adminhtml/*/*/template/api2/**/* + ] 'Component: Authorizenet': - - app/code/core/Mage/Authorizenet/* - - app/code/core/Mage/Authorizenet/**/* - - app/design/adminhtml/*/*/layout/authorizenet.xml - - app/design/adminhtml/*/*/template/authorizenet/* - - app/design/adminhtml/*/*/template/authorizenet/**/* - - app/design/frontend/*/*/layout/authorizenet.xml - - app/design/frontend/*/*/template/authorizenet/* - - app/design/frontend/*/*/template/authorizenet/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Authorizenet/*, + app/code/core/Mage/Authorizenet/**/*, + app/design/adminhtml/*/*/layout/authorizenet.xml, + app/design/adminhtml/*/*/template/authorizenet/*, + app/design/adminhtml/*/*/template/authorizenet/**/*, + app/design/frontend/*/*/layout/authorizenet.xml, + app/design/frontend/*/*/template/authorizenet/*, + app/design/frontend/*/*/template/authorizenet/**/* + ] 'Component: Backup': - - app/code/core/Mage/Backup/* - - app/code/core/Mage/Backup/**/* - - app/design/adminhtml/*/*/template/backup/* - - app/design/adminhtml/*/*/template/backup/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Backup/*, + app/code/core/Mage/Backup/**/*, + app/design/adminhtml/*/*/template/backup/*, + app/design/adminhtml/*/*/template/backup/**/* + ] 'Component: Bundle': - - app/code/core/Mage/Bundle/* - - app/code/core/Mage/Bundle/**/* - - app/design/adminhtml/*/*/layout/bundle.xml - - app/design/adminhtml/*/*/template/bundle/* - - app/design/adminhtml/*/*/template/bundle/**/* - - app/design/frontend/*/*/layout/bundle.xml - - app/design/frontend/*/*/template/bundle/* - - app/design/frontend/*/*/template/bundle/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Bundle/*, + app/code/core/Mage/Bundle/**/*, + app/design/adminhtml/*/*/layout/bundle.xml, + app/design/adminhtml/*/*/template/bundle/*, + app/design/adminhtml/*/*/template/bundle/**/*, + app/design/frontend/*/*/layout/bundle.xml, + app/design/frontend/*/*/template/bundle/*, + app/design/frontend/*/*/template/bundle/**/* + ] 'Component: Captcha': - - app/code/core/Mage/Captcha/* - - app/code/core/Mage/Captcha/**/* - - app/design/adminhtml/*/*/layout/captcha.xml - - app/design/adminhtml/*/*/template/captcha/* - - app/design/adminhtml/*/*/template/captcha/**/* - - app/design/frontend/*/*/layout/captcha.xml - - app/design/frontend/*/*/template/captcha/* - - app/design/frontend/*/*/template/captcha/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Captcha/*, + app/code/core/Mage/Captcha/**/*, + app/design/adminhtml/*/*/layout/captcha.xml, + app/design/adminhtml/*/*/template/captcha/*, + app/design/adminhtml/*/*/template/captcha/**/*, + app/design/frontend/*/*/layout/captcha.xml, + app/design/frontend/*/*/template/captcha/*, + app/design/frontend/*/*/template/captcha/**/* + ] 'Component: Catalog': - - app/code/core/Mage/Catalog/* - - app/code/core/Mage/Catalog/**/* - - app/design/adminhtml/*/*/layout/catalog.xml - - app/design/adminhtml/*/*/template/catalog/* - - app/design/adminhtml/*/*/template/catalog/**/* - - app/design/frontend/*/*/layout/catalog.xml - - app/design/frontend/*/*/layout/catalog_msrp.xml - - app/design/frontend/*/*/template/catalog/* - - app/design/frontend/*/*/template/catalog/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Catalog/*, + app/code/core/Mage/Catalog/**/*, + app/design/adminhtml/*/*/layout/catalog.xml, + app/design/adminhtml/*/*/template/catalog/*, + app/design/adminhtml/*/*/template/catalog/**/*, + app/design/frontend/*/*/layout/catalog.xml, + app/design/frontend/*/*/layout/catalog_msrp.xml, + app/design/frontend/*/*/template/catalog/*, + app/design/frontend/*/*/template/catalog/**/* + ] 'Component: CatalogIndex': - - app/code/core/Mage/CatalogIndex/* - - app/code/core/Mage/CatalogIndex/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/CatalogIndex/*, + app/code/core/Mage/CatalogIndex/**/* + ] 'Component: CatalogInventory': - - app/code/core/Mage/CatalogInventory/* - - app/code/core/Mage/CatalogInventory/**/* - - app/design/frontend/*/*/layout/cataloginventory.xml - - app/design/frontend/*/*/template/cataloginventory/* - - app/design/frontend/*/*/template/cataloginventory/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/CatalogInventory/*, + app/code/core/Mage/CatalogInventory/**/*, + app/design/frontend/*/*/layout/cataloginventory.xml, + app/design/frontend/*/*/template/cataloginventory/*, + app/design/frontend/*/*/template/cataloginventory/**/* + ] 'Component: CatalogRule': - - app/code/core/Mage/CatalogRule/* - - app/code/core/Mage/CatalogRule/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/CatalogRule/*, + app/code/core/Mage/CatalogRule/**/* + ] 'Component: CatalogSearch': - - app/code/core/Mage/CatalogSearch/* - - app/code/core/Mage/CatalogSearch/**/* - - app/design/adminhtml/*/*/layout/search.xml - - app/design/frontend/*/*/layout/catalogsearch.xml - - app/design/frontend/*/*/template/catalogsearch/* - - app/design/frontend/*/*/template/catalogsearch/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/CatalogSearch/*, + app/code/core/Mage/CatalogSearch/**/*, + app/design/adminhtml/*/*/layout/search.xml, + app/design/frontend/*/*/layout/catalogsearch.xml, + app/design/frontend/*/*/template/catalogsearch/*, + app/design/frontend/*/*/template/catalogsearch/**/* + ] 'Component: Centinel': - - app/code/core/Mage/Centinel/* - - app/code/core/Mage/Centinel/**/* - - app/design/adminhtml/*/*/layout/centinel.xml - - app/design/adminhtml/*/*/template/centinel/* - - app/design/adminhtml/*/*/template/centinel/**/* - - app/design/frontend/*/*/layout/centinel.xml - - app/design/frontend/*/*/template/centinel/* - - app/design/frontend/*/*/template/centinel/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Centinel/*, + app/code/core/Mage/Centinel/**/*, + app/design/adminhtml/*/*/layout/centinel.xml, + app/design/adminhtml/*/*/template/centinel/*, + app/design/adminhtml/*/*/template/centinel/**/*, + app/design/frontend/*/*/layout/centinel.xml, + app/design/frontend/*/*/template/centinel/*, + app/design/frontend/*/*/template/centinel/**/* + ] 'Component: Checkout': - - app/code/core/Mage/Checkout/* - - app/code/core/Mage/Checkout/**/* - - app/design/frontend/*/*/layout/checkout.xml - - app/design/frontend/*/*/template/checkout/* - - app/design/frontend/*/*/template/checkout/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Checkout/*, + app/code/core/Mage/Checkout/**/*, + app/design/frontend/*/*/layout/checkout.xml, + app/design/frontend/*/*/template/checkout/*, + app/design/frontend/*/*/template/checkout/**/* + ] 'Component: Cms': - - app/code/core/Mage/Cms/* - - app/code/core/Mage/Cms/**/* - - app/design/adminhtml/*/*/layout/cms.xml - - app/design/adminhtml/*/*/template/cms/* - - app/design/adminhtml/*/*/template/cms/**/* - - app/design/frontend/*/*/layout/cms.xml - - app/design/frontend/*/*/template/cms/* - - app/design/frontend/*/*/template/cms/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Cms/*, + app/code/core/Mage/Cms/**/*, + app/design/adminhtml/*/*/layout/cms.xml, + app/design/adminhtml/*/*/template/cms/*, + app/design/adminhtml/*/*/template/cms/**/*, + app/design/frontend/*/*/layout/cms.xml, + app/design/frontend/*/*/template/cms/*, + app/design/frontend/*/*/template/cms/**/* + ] 'Component: ConfigurableSwatches': - - app/code/core/Mage/ConfigurableSwatches/* - - app/code/core/Mage/ConfigurableSwatches/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/ConfigurableSwatches/*, + app/code/core/Mage/ConfigurableSwatches/**/* + ] 'Component: Connect': - - app/code/core/Mage/Connect/* - - app/code/core/Mage/Connect/**/* - - app/design/adminhtml/*/*/layout/connect.xml - - app/design/adminhtml/*/*/template/connect/* - - app/design/adminhtml/*/*/template/connect/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Connect/*, + app/code/core/Mage/Connect/**/*, + app/design/adminhtml/*/*/layout/connect.xml, + app/design/adminhtml/*/*/template/connect/*, + app/design/adminhtml/*/*/template/connect/**/* + ] 'Component: Contacts': - - app/code/core/Mage/Contacts/* - - app/code/core/Mage/Contacts/**/* - - app/design/frontend/*/*/layout/contacts.xml - - app/design/frontend/*/*/template/contacts/* - - app/design/frontend/*/*/template/contacts/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Contacts/*, + app/code/core/Mage/Contacts/**/*, + app/design/frontend/*/*/layout/contacts.xml, + app/design/frontend/*/*/template/contacts/*, + app/design/frontend/*/*/template/contacts/**/* + ] 'Component: Core': - - app/code/core/Mage/Core/* - - app/code/core/Mage/Core/**/* - - app/design/frontend/*/*/layout/core.xml - - app/design/frontend/*/*/template/core/* - - app/design/frontend/*/*/template/core/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Core/*, + app/code/core/Mage/Core/**/*, + app/design/frontend/*/*/layout/core.xml, + app/design/frontend/*/*/template/core/*, + app/design/frontend/*/*/template/core/**/* + ] 'Component: Cron': - - app/code/core/Mage/Cron/* - - app/code/core/Mage/Cron/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Cron/*, + app/code/core/Mage/Cron/**/* + ] 'Component: CurrencySymbol': - - app/code/core/Mage/CurrencySymbol/* - - app/code/core/Mage/CurrencySymbol/**/* - - app/design/adminhtml/*/*/layout/currencysymbol.xml - - app/design/adminhtml/*/*/template/currencysymbol/* - - app/design/adminhtml/*/*/template/currencysymbol/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/CurrencySymbol/*, + app/code/core/Mage/CurrencySymbol/**/*, + app/design/adminhtml/*/*/layout/currencysymbol.xml, + app/design/adminhtml/*/*/template/currencysymbol/*, + app/design/adminhtml/*/*/template/currencysymbol/**/* + ] 'Component: Customer': - - app/code/core/Mage/Customer/* - - app/code/core/Mage/Customer/**/* - - app/design/adminhtml/*/*/layout/customer.xml - - app/design/adminhtml/*/*/template/customer/* - - app/design/adminhtml/*/*/template/customer/**/* - - app/design/frontend/*/*/layout/customer.xml - - app/design/frontend/*/*/template/customer/* - - app/design/frontend/*/*/template/customer/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Customer/*, + app/code/core/Mage/Customer/**/*, + app/design/adminhtml/*/*/layout/customer.xml, + app/design/adminhtml/*/*/template/customer/*, + app/design/adminhtml/*/*/template/customer/**/*, + app/design/frontend/*/*/layout/customer.xml, + app/design/frontend/*/*/template/customer/*, + app/design/frontend/*/*/template/customer/**/* + ] 'Component: Dataflow': - - app/code/core/Mage/Dataflow/* - - app/code/core/Mage/Dataflow/**/* - - app/design/adminhtml/*/*/layout/dataflow.xml + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Dataflow/*, + app/code/core/Mage/Dataflow/**/*, + app/design/adminhtml/*/*/layout/dataflow.xml + ] 'Component: Directory': - - app/code/core/Mage/Directory/* - - app/code/core/Mage/Directory/**/* - - app/design/adminhtml/*/*/template/directory/* - - app/design/adminhtml/*/*/template/directory/**/* - - app/design/frontend/*/*/layout/directory.xml - - app/design/frontend/*/*/template/directory/* - - app/design/frontend/*/*/template/directory/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Directory/*, + app/code/core/Mage/Directory/**/*, + app/design/adminhtml/*/*/template/directory/*, + app/design/adminhtml/*/*/template/directory/**/*, + app/design/frontend/*/*/layout/directory.xml, + app/design/frontend/*/*/template/directory/*, + app/design/frontend/*/*/template/directory/**/* + ] 'Component: Downloadable': - - app/code/core/Mage/Downloadable/* - - app/code/core/Mage/Downloadable/**/* - - app/design/adminhtml/*/*/layout/downloadable.xml - - app/design/adminhtml/*/*/template/downloadable/* - - app/design/adminhtml/*/*/template/downloadable/**/* - - app/design/frontend/*/*/layout/downloadable.xml - - app/design/frontend/*/*/template/downloadable/* - - app/design/frontend/*/*/template/downloadable/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Downloadable/*, + app/code/core/Mage/Downloadable/**/*, + app/design/adminhtml/*/*/layout/downloadable.xml, + app/design/adminhtml/*/*/template/downloadable/*, + app/design/adminhtml/*/*/template/downloadable/**/*, + app/design/frontend/*/*/layout/downloadable.xml, + app/design/frontend/*/*/template/downloadable/*, + app/design/frontend/*/*/template/downloadable/**/* + ] 'Component: Eav': - - app/code/core/Mage/Eav/* - - app/code/core/Mage/Eav/**/* - - app/design/adminhtml/*/*/template/eav/* - - app/design/adminhtml/*/*/template/eav/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Eav/*, + app/code/core/Mage/Eav/**/*, + app/design/adminhtml/*/*/template/eav/*, + app/design/adminhtml/*/*/template/eav/**/* + ] 'Component: Giftmessage': - - app/code/core/Mage/Giftmessage/* - - app/code/core/Mage/Giftmessage/**/* - - app/design/adminhtml/*/*/layout/giftmessage.xml - - app/design/adminhtml/*/*/template/giftmessage/* - - app/design/adminhtml/*/*/template/giftmessage/**/* - - app/design/frontend/*/*/template/giftmessage/* - - app/design/frontend/*/*/template/giftmessage/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Giftmessage/*, + app/code/core/Mage/Giftmessage/**/*, + app/design/adminhtml/*/*/layout/giftmessage.xml, + app/design/adminhtml/*/*/template/giftmessage/*, + app/design/adminhtml/*/*/template/giftmessage/**/*, + app/design/frontend/*/*/template/giftmessage/*, + app/design/frontend/*/*/template/giftmessage/**/* + ] 'Component: GoogleAnalytics': - - app/code/core/Mage/GoogleAnalytics/* - - app/code/core/Mage/GoogleAnalytics/**/* - - app/design/frontend/*/*/layout/googleanalytics.xml - - app/design/frontend/*/*/template/googleanalytics/* - - app/design/frontend/*/*/template/googleanalytics/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/GoogleAnalytics/*, + app/code/core/Mage/GoogleAnalytics/**/*, + app/design/frontend/*/*/layout/googleanalytics.xml, + app/design/frontend/*/*/template/googleanalytics/*, + app/design/frontend/*/*/template/googleanalytics/**/* + ] 'Component: GoogleBase': - - app/code/core/Mage/GoogleBase/* - - app/code/core/Mage/GoogleBase/**/* - - app/design/adminhtml/*/*/template/googlebase/* - - app/design/adminhtml/*/*/template/googlebase/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/GoogleBase/*, + app/code/core/Mage/GoogleBase/**/*, + app/design/adminhtml/*/*/template/googlebase/*, + app/design/adminhtml/*/*/template/googlebase/**/* + ] 'Component: GoogleCheckout': - - app/code/core/Mage/GoogleCheckout/* - - app/code/core/Mage/GoogleCheckout/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/GoogleCheckout/*, + app/code/core/Mage/GoogleCheckout/**/* + ] 'Component: ImportExport': - - app/code/core/Mage/ImportExport/* - - app/code/core/Mage/ImportExport/**/* - - app/design/adminhtml/*/*/layout/importexport.xml - - app/design/adminhtml/*/*/template/importexport/* - - app/design/adminhtml/*/*/template/importexport/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/ImportExport/*, + app/code/core/Mage/ImportExport/**/*, + app/design/adminhtml/*/*/layout/importexport.xml, + app/design/adminhtml/*/*/template/importexport/*, + app/design/adminhtml/*/*/template/importexport/**/* + ] 'Component: Index': - - app/code/core/Mage/Index/* - - app/code/core/Mage/Index/**/* - - app/design/adminhtml/*/*/layout/index.xml - - app/design/adminhtml/*/*/template/index/* - - app/design/adminhtml/*/*/template/index/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Index/*, + app/code/core/Mage/Index/**/*, + app/design/adminhtml/*/*/layout/index.xml, + app/design/adminhtml/*/*/template/index/*, + app/design/adminhtml/*/*/template/index/**/* + ] 'Component: Install': - - app/code/core/Mage/Install/* - - app/code/core/Mage/Install/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Install/*, + app/code/core/Mage/Install/**/* + ] 'Component: Log': - - app/code/core/Mage/Log/* - - app/code/core/Mage/Log/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Log/*, + app/code/core/Mage/Log/**/* + ] 'Component: Media': - - app/code/core/Mage/Media/* - - app/code/core/Mage/Media/**/* - - app/design/adminhtml/*/*/template/media/* - - app/design/adminhtml/*/*/template/media/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Media/*, + app/code/core/Mage/Media/**/*, + app/design/adminhtml/*/*/template/media/*, + app/design/adminhtml/*/*/template/media/**/* + ] 'Component: Newsletter': - - app/code/core/Mage/Newsletter/* - - app/code/core/Mage/Newsletter/**/* - - app/design/adminhtml/*/*/layout/newsletter.xml - - app/design/adminhtml/*/*/template/newsletter/* - - app/design/adminhtml/*/*/template/newsletter/**/* - - app/design/frontend/*/*/layout/newsletter.xml - - app/design/frontend/*/*/template/newsletter/* - - app/design/frontend/*/*/template/newsletter/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Newsletter/*, + app/code/core/Mage/Newsletter/**/*, + app/design/adminhtml/*/*/layout/newsletter.xml, + app/design/adminhtml/*/*/template/newsletter/*, + app/design/adminhtml/*/*/template/newsletter/**/*, + app/design/frontend/*/*/layout/newsletter.xml, + app/design/frontend/*/*/template/newsletter/*, + app/design/frontend/*/*/template/newsletter/**/* + ] 'Component: Oauth': - - app/code/core/Mage/Oauth/* - - app/code/core/Mage/Oauth/**/* - - app/design/adminhtml/*/*/layout/oauth.xml - - app/design/adminhtml/*/*/template/oauth/* - - app/design/adminhtml/*/*/template/oauth/**/* - - app/design/frontend/*/*/layout/oauth.xml - - app/design/frontend/*/*/template/oauth/* - - app/design/frontend/*/*/template/oauth/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Oauth/*, + app/code/core/Mage/Oauth/**/*, + app/design/adminhtml/*/*/layout/oauth.xml, + app/design/adminhtml/*/*/template/oauth/*, + app/design/adminhtml/*/*/template/oauth/**/*, + app/design/frontend/*/*/layout/oauth.xml, + app/design/frontend/*/*/template/oauth/*, + app/design/frontend/*/*/template/oauth/**/* + ] 'Component: Page': - - app/code/core/Mage/Page/* - - app/code/core/Mage/Page/**/* - - app/design/adminhtml/*/*/template/page/* - - app/design/adminhtml/*/*/template/page/**/* - - app/design/frontend/*/*/layout/page.xml - - app/design/frontend/*/*/template/page/* - - app/design/frontend/*/*/template/page/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Page/*, + app/code/core/Mage/Page/**/*, + app/design/adminhtml/*/*/template/page/*, + app/design/adminhtml/*/*/template/page/**/*, + app/design/frontend/*/*/layout/page.xml, + app/design/frontend/*/*/template/page/*, + app/design/frontend/*/*/template/page/**/* + ] 'Component: PageCache': - - app/code/core/Mage/PageCache/* - - app/code/core/Mage/PageCache/**/* - - app/design/adminhtml/*/*/layout/pagecache.xml - - app/design/adminhtml/*/*/template/pagecache/* - - app/design/adminhtml/*/*/template/pagecache/**/* - - app/design/frontend/*/*/layout/pagecache.xml - - app/design/frontend/*/*/template/pagecache/* - - app/design/frontend/*/*/template/pagecache/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/PageCache/*, + app/code/core/Mage/PageCache/**/*, + app/design/adminhtml/*/*/layout/pagecache.xml, + app/design/adminhtml/*/*/template/pagecache/*, + app/design/adminhtml/*/*/template/pagecache/**/*, + app/design/frontend/*/*/layout/pagecache.xml, + app/design/frontend/*/*/template/pagecache/*, + app/design/frontend/*/*/template/pagecache/**/* + ] 'Component: Paygate': - - app/code/core/Mage/Paygate/* - - app/code/core/Mage/Paygate/**/* - - app/design/adminhtml/*/*/template/paygate/* - - app/design/adminhtml/*/*/template/paygate/**/* - - app/design/frontend/*/*/template/paygate/* - - app/design/frontend/*/*/template/paygate/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Paygate/*, + app/code/core/Mage/Paygate/**/*, + app/design/adminhtml/*/*/template/paygate/*, + app/design/adminhtml/*/*/template/paygate/**/*, + app/design/frontend/*/*/template/paygate/*, + app/design/frontend/*/*/template/paygate/**/* + ] 'Component: Payment': - - app/code/core/Mage/Payment/* - - app/code/core/Mage/Payment/**/* - - app/design/adminhtml/*/*/template/payment/* - - app/design/adminhtml/*/*/template/payment/**/* - - app/design/frontend/*/*/layout/payment.xml - - app/design/frontend/*/*/template/payment/* - - app/design/frontend/*/*/template/payment/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Payment/*, + app/code/core/Mage/Payment/**/*, + app/design/adminhtml/*/*/template/payment/*, + app/design/adminhtml/*/*/template/payment/**/*, + app/design/frontend/*/*/layout/payment.xml, + app/design/frontend/*/*/template/payment/*, + app/design/frontend/*/*/template/payment/**/* + ] 'Component: Paypal': - - app/code/core/Mage/Paypal/* - - app/code/core/Mage/Paypal/**/* - - app/design/adminhtml/*/*/template/paypal/* - - app/design/adminhtml/*/*/template/paypal/**/* - - app/design/frontend/*/*/layout/paypal.xml - - app/design/frontend/*/*/layout/bml.xml - - app/design/frontend/*/*/template/paypal/* - - app/design/frontend/*/*/template/paypal/**/* - -'Component: PaypalUk': - - app/code/core/Mage/PaypalUk/* - - app/code/core/Mage/PaypalUk/**/* - - app/design/frontend/*/*/layout/paypaluk.xml + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Paypal/*, + app/code/core/Mage/Paypal/**/*, + app/design/adminhtml/*/*/template/paypal/*, + app/design/adminhtml/*/*/template/paypal/**/*, + app/design/frontend/*/*/layout/paypal.xml, + app/design/frontend/*/*/layout/bml.xml, + app/design/frontend/*/*/template/paypal/*, + app/design/frontend/*/*/template/paypal/**/* + ] 'Component: Persistant': - - app/code/core/Mage/Persistant/* - - app/code/core/Mage/Persistant/**/* - - app/design/frontend/*/*/layout/persistent.xml - - app/design/frontend/*/*/template/persistent/* - - app/design/frontend/*/*/template/persistent/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Persistant/*, + app/code/core/Mage/Persistant/**/*, + app/design/frontend/*/*/layout/persistent.xml, + app/design/frontend/*/*/template/persistent/*, + app/design/frontend/*/*/template/persistent/**/* + ] 'Component: Poll': - - app/code/core/Mage/Poll/* - - app/code/core/Mage/Poll/**/* - - app/design/adminhtml/*/*/template/poll/* - - app/design/adminhtml/*/*/template/poll/**/* - - app/design/frontend/*/*/layout/poll.xml - - app/design/frontend/*/*/template/poll/* - - app/design/frontend/*/*/template/poll/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Poll/*, + app/code/core/Mage/Poll/**/*, + app/design/adminhtml/*/*/template/poll/*, + app/design/adminhtml/*/*/template/poll/**/*, + app/design/frontend/*/*/layout/poll.xml, + app/design/frontend/*/*/template/poll/*, + app/design/frontend/*/*/template/poll/**/* + ] 'Component: ProductAlert': - - app/code/core/Mage/ProductAlert/* - - app/code/core/Mage/ProductAlert/**/* - - app/design/frontend/*/*/layout/productalert.xml - - app/design/frontend/*/*/template/productalert/* - - app/design/frontend/*/*/template/productalert/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/ProductAlert/*, + app/code/core/Mage/ProductAlert/**/*, + app/design/frontend/*/*/layout/productalert.xml, + app/design/frontend/*/*/template/productalert/*, + app/design/frontend/*/*/template/productalert/**/* + ] 'Component: Rating': - - app/code/core/Mage/Rating/* - - app/code/core/Mage/Rating/**/* - - app/design/adminhtml/*/*/template/rating/* - - app/design/adminhtml/*/*/template/rating/**/* - - app/design/frontend/*/*/template/rating/* - - app/design/frontend/*/*/template/rating/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Rating/*, + app/code/core/Mage/Rating/**/*, + app/design/adminhtml/*/*/template/rating/*, + app/design/adminhtml/*/*/template/rating/**/*, + app/design/frontend/*/*/template/rating/*, + app/design/frontend/*/*/template/rating/**/* + ] 'Component: Reports': - - app/code/core/Mage/Reports/* - - app/code/core/Mage/Reports/**/* - - app/design/adminhtml/*/*/layout/report.xml - - app/design/adminhtml/*/*/template/report/* - - app/design/adminhtml/*/*/template/report/**/* - - app/design/frontend/*/*/layout/reports.xml - - app/design/frontend/*/*/template/reports/* - - app/design/frontend/*/*/template/reports/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Reports/*, + app/code/core/Mage/Reports/**/*, + app/design/adminhtml/*/*/layout/report.xml, + app/design/adminhtml/*/*/template/report/*, + app/design/adminhtml/*/*/template/report/**/*, + app/design/frontend/*/*/layout/reports.xml, + app/design/frontend/*/*/template/reports/*, + app/design/frontend/*/*/template/reports/**/* + ] 'Component: Review': - - app/code/core/Mage/Review/* - - app/code/core/Mage/Review/**/* - - app/design/adminhtml/*/*/template/review/* - - app/design/adminhtml/*/*/template/review/**/* - - app/design/frontend/*/*/layout/review.xml - - app/design/frontend/*/*/template/review/* - - app/design/frontend/*/*/template/review/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Review/*, + app/code/core/Mage/Review/**/*, + app/design/adminhtml/*/*/template/review/*, + app/design/adminhtml/*/*/template/review/**/*, + app/design/frontend/*/*/layout/review.xml, + app/design/frontend/*/*/template/review/*, + app/design/frontend/*/*/template/review/**/* + ] 'Component: Rss': - - app/code/core/Mage/Rss/* - - app/code/core/Mage/Rss/**/* - - app/design/adminhtml/*/*/layout/rss.xml - - app/design/frontend/*/*/layout/rss.xml - - app/design/frontend/*/*/template/rss/* - - app/design/frontend/*/*/template/rss/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Rss/*, + app/code/core/Mage/Rss/**/*, + app/design/adminhtml/*/*/layout/rss.xml, + app/design/frontend/*/*/layout/rss.xml, + app/design/frontend/*/*/template/rss/*, + app/design/frontend/*/*/template/rss/**/* + ] 'Component: Rule': - - app/code/core/Mage/Rule/* - - app/code/core/Mage/Rule/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Rule/*, + app/code/core/Mage/Rule/**/* + ] 'Component: Sales': - - app/code/core/Mage/Sales/* - - app/code/core/Mage/Sales/**/* - - app/design/adminhtml/*/*/layout/sales.xml - - app/design/adminhtml/*/*/template/sales/* - - app/design/adminhtml/*/*/template/sales/**/* - - app/design/frontend/*/*/layout/sales/* - - app/design/frontend/*/*/layout/sales/**/* - - app/design/frontend/*/*/layout/sales.xml - - app/design/frontend/*/*/template/email/* - - app/design/frontend/*/*/template/email/**/* - - app/design/frontend/*/*/template/sales/* - - app/design/frontend/*/*/template/sales/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Sales/*, + app/code/core/Mage/Sales/**/*, + app/design/adminhtml/*/*/layout/sales.xml, + app/design/adminhtml/*/*/template/sales/*, + app/design/adminhtml/*/*/template/sales/**/*, + app/design/frontend/*/*/layout/sales/*, + app/design/frontend/*/*/layout/sales/**/*, + app/design/frontend/*/*/layout/sales.xml, + app/design/frontend/*/*/template/email/*, + app/design/frontend/*/*/template/email/**/*, + app/design/frontend/*/*/template/sales/*, + app/design/frontend/*/*/template/sales/**/* + ] 'Component: SalesRule': - - app/code/core/Mage/SalesRule/* - - app/code/core/Mage/SalesRule/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/SalesRule/*, + app/code/core/Mage/SalesRule/**/* + ] 'Component: Sendfriend': - - app/code/core/Mage/Sendfriend/* - - app/code/core/Mage/Sendfriend/**/* - - app/design/frontend/*/*/layout/sendfriend.xml - - app/design/frontend/*/*/template/sendfriend/* - - app/design/frontend/*/*/template/sendfriend/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Sendfriend/*, + app/code/core/Mage/Sendfriend/**/*, + app/design/frontend/*/*/layout/sendfriend.xml, + app/design/frontend/*/*/template/sendfriend/*, + app/design/frontend/*/*/template/sendfriend/**/* + ] 'Component: Shipping': - - app/code/core/Mage/Shipping/* - - app/code/core/Mage/Shipping/**/* - - app/design/frontend/*/*/layout/shipping.xml - - app/design/frontend/*/*/template/shipping/* - - app/design/frontend/*/*/template/shipping/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Shipping/*, + app/code/core/Mage/Shipping/**/*, + app/design/frontend/*/*/layout/shipping.xml, + app/design/frontend/*/*/template/shipping/*, + app/design/frontend/*/*/template/shipping/**/* + ] 'Component: Sitemap': - - app/code/core/Mage/Sitemap/* - - app/code/core/Mage/Sitemap/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Sitemap/*, + app/code/core/Mage/Sitemap/**/* + ] 'Component: Tag': - - app/code/core/Mage/Tag/* - - app/code/core/Mage/Tag/**/* - - app/design/adminhtml/*/*/layout/tag.xml - - app/design/adminhtml/*/*/template/tag/* - - app/design/adminhtml/*/*/template/tag/**/* - - app/design/frontend/*/*/layout/tag.xml - - app/design/frontend/*/*/template/tag/* - - app/design/frontend/*/*/template/tag/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Tag/*, + app/code/core/Mage/Tag/**/*, + app/design/adminhtml/*/*/layout/tag.xml, + app/design/adminhtml/*/*/template/tag/*, + app/design/adminhtml/*/*/template/tag/**/*, + app/design/frontend/*/*/layout/tag.xml, + app/design/frontend/*/*/template/tag/*, + app/design/frontend/*/*/template/tag/**/* + ] 'Component: Tax': - - app/code/core/Mage/Tax/* - - app/code/core/Mage/Tax/**/* - - app/design/adminhtml/*/*/layout/tax.xml - - app/design/adminhtml/*/*/template/tax/* - - app/design/adminhtml/*/*/template/tax/**/* - - app/design/frontend/*/*/template/tax/* - - app/design/frontend/*/*/template/tax/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Tax/*, + app/code/core/Mage/Tax/**/*, + app/design/adminhtml/*/*/layout/tax.xml, + app/design/adminhtml/*/*/template/tax/*, + app/design/adminhtml/*/*/template/tax/**/*, + app/design/frontend/*/*/template/tax/*, + app/design/frontend/*/*/template/tax/**/* + ] 'Component: Uploader': - - app/code/core/Mage/Uploader/* - - app/code/core/Mage/Uploader/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Uploader/*, + app/code/core/Mage/Uploader/**/* + ] 'Component: Usa': - - app/code/core/Mage/Usa/* - - app/code/core/Mage/Usa/**/* - - app/design/adminhtml/*/*/template/usa/* - - app/design/adminhtml/*/*/template/usa/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Usa/*, + app/code/core/Mage/Usa/**/*, + app/design/adminhtml/*/*/template/usa/*, + app/design/adminhtml/*/*/template/usa/**/* + ] 'Component: Weee': - - app/code/core/Mage/Weee/* - - app/code/core/Mage/Weee/**/* - - app/design/adminhtml/*/*/template/weee/* - - app/design/adminhtml/*/*/template/weee/**/* - - app/design/frontend/*/*/layout/weee.xml + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Weee/*, + app/code/core/Mage/Weee/**/*, + app/design/adminhtml/*/*/template/weee/*, + app/design/adminhtml/*/*/template/weee/**/*, + app/design/frontend/*/*/layout/weee.xml + ] 'Component: Widget': - - app/code/core/Mage/Widget/* - - app/code/core/Mage/Widget/**/* - - app/design/adminhtml/*/*/layout/widget.xml - - app/design/adminhtml/*/*/template/widget/* - - app/design/adminhtml/*/*/template/widget/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Widget/*, + app/code/core/Mage/Widget/**/*, + app/design/adminhtml/*/*/layout/widget.xml, + app/design/adminhtml/*/*/template/widget/*, + app/design/adminhtml/*/*/template/widget/**/* + ] 'Component: Wishlist': - - app/code/core/Mage/Wishlist/* - - app/code/core/Mage/Wishlist/**/* - - app/design/frontend/*/*/layout/wishlist.xml - - app/design/frontend/*/*/template/wishlist/* - - app/design/frontend/*/*/template/wishlist/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/Wishlist/*, + app/code/core/Mage/Wishlist/**/*, + app/design/frontend/*/*/layout/wishlist.xml, + app/design/frontend/*/*/template/wishlist/*, + app/design/frontend/*/*/template/wishlist/**/* + ] 'Component: XmlConnect': - - app/code/core/Mage/XmlConnect/* - - app/code/core/Mage/XmlConnect/**/* - - app/design/adminhtml/*/*/layout/xmlconnect.xml - - app/design/adminhtml/*/*/template/xmlconnect/* - - app/design/adminhtml/*/*/template/xmlconnect/**/* - - app/design/frontend/*/*/layout/xmlconnect.xml - - app/design/frontend/*/*/template/xmlconnect/* - - app/design/frontend/*/*/template/xmlconnect/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/core/Mage/XmlConnect/*, + app/code/core/Mage/XmlConnect/**/*, + app/design/adminhtml/*/*/layout/xmlconnect.xml, + app/design/adminhtml/*/*/template/xmlconnect/*, + app/design/adminhtml/*/*/template/xmlconnect/**/*, + app/design/frontend/*/*/layout/xmlconnect.xml, + app/design/frontend/*/*/template/xmlconnect/*, + app/design/frontend/*/*/template/xmlconnect/**/* + ] 'Component: Cm/RedisSession': - - app/code/community/Cm/RedisSession/* - - app/code/community/Cm/RedisSession/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/community/Cm/RedisSession/*, + app/code/community/Cm/RedisSession/**/* + ] 'Component: Phoenix/Moneybookers': - - app/code/community/Phoenix/Moneybookers/* - - app/code/community/Phoenix/Moneybookers/**/* - - app/design/adminhtml/*/*/layout/moneybookers.xml - - app/design/adminhtml/*/*/template/moneybookers/* - - app/design/adminhtml/*/*/template/moneybookers/**/* - - app/design/frontend/*/*/layout/moneybookers.xml - - app/design/frontend/*/*/template/moneybookers/* - - app/design/frontend/*/*/template/moneybookers/**/* + - changed-files: + - any-glob-to-any-file: [ + app/code/community/Phoenix/Moneybookers/*, + app/code/community/Phoenix/Moneybookers/**/*, + app/design/adminhtml/*/*/layout/moneybookers.xml, + app/design/adminhtml/*/*/template/moneybookers/*, + app/design/adminhtml/*/*/template/moneybookers/**/*, + app/design/frontend/*/*/layout/moneybookers.xml, + app/design/frontend/*/*/template/moneybookers/*, + app/design/frontend/*/*/template/moneybookers/**/* + ] # Add Template Labels 'Template : admin': - - app/design/adminhtml/* - - app/design/adminhtml/**/* - - skin/adminhtml/* - - skin/adminhtml/**/* + - changed-files: + - any-glob-to-any-file: [ + app/design/adminhtml/*, + app/design/adminhtml/**/*, + skin/adminhtml/*, + skin/adminhtml/**/* + ] 'Template : base': - - app/design/frontend/base/* - - app/design/frontend/base/**/* - - skin/frontend/base/* - - skin/frontend/base/**/* + - changed-files: + - any-glob-to-any-file: [ + app/design/frontend/base/*, + app/design/frontend/base/**/*, + skin/frontend/base/*, + skin/frontend/base/**/* + ] 'Template : default': - - app/design/frontend/default/* - - app/design/frontend/default/**/* - - skin/frontend/default/* - - skin/frontend/default/**/* + - changed-files: + - any-glob-to-any-file: [ + app/design/frontend/default/*, + app/design/frontend/default/**/*, + skin/frontend/default/*, + skin/frontend/default/**/* + ] 'Template : rwd': - - app/design/frontend/rwd/* - - app/design/frontend/rwd/**/* - - skin/frontend/rwd/* - - skin/frontend/rwd/**/* + - changed-files: + - any-glob-to-any-file: [ + app/design/frontend/rwd/*, + app/design/frontend/rwd/**/*, + skin/frontend/rwd/*, + skin/frontend/rwd/**/* + ] 'Template : install': - - app/design/install/* - - app/design/install/**/* - - skin/frontend/install/* - - skin/frontend/install/**/* + - changed-files: + - any-glob-to-any-file: [ + app/design/install/*, + app/design/install/**/*, + skin/frontend/install/*, + skin/frontend/install/**/* + ] 'Translations': - - app/locale/*.csv - - app/locale/**/*.csv - - app/design/adminhtml/default/locale/*.csv + - changed-files: + - any-glob-to-any-file: [ + app/locale/*.csv, + app/locale/**/*.csv, + app/design/adminhtml/default/locale/*.csv + ] 'XML Layout': - - app/design/adminhtml/*/layout/* - - app/design/frontend/*/*/layout/* + - changed-files: + - any-glob-to-any-file: [ + app/design/adminhtml/*/layout/*, + app/design/frontend/*/*/layout/* + ] # Add Documentation Label 'Documentation': - - '*.md' + - changed-files: + - any-glob-to-any-file: [ + '*.md' + ] 'PHPStorm': - - .phpstorm.meta.php/* + - changed-files: + - any-glob-to-any-file: [ + .phpstorm.meta.php/* + ] 'phpcs': - - .phpcs* - - .github/workflows/phpcs.yml + - changed-files: + - any-glob-to-any-file: [ + .phpcs*, + .github/workflows/phpcs.yml + ] 'php-cs-fixer': - - .php-cs-fixer* - - .github/workflows/php-cs-fixer.yml + - changed-files: + - any-glob-to-any-file: [ + .php-cs-fixer*, + .github/workflows/php-cs-fixer.yml + ] 'phpstan': - - phpstan* - - .github/workflows/phpstan.yml + - changed-files: + - any-glob-to-any-file: [ + phpstan*, + .github/workflows/phpstan.yml + ] 'phpunit': - - dev/test/* - - dev/phpunit* - - dev/sonar* - - .github/workflows/phpunit.yml - - .github/workflows/sonar.yml + - changed-files: + - any-glob-to-any-file: [ + dev/test/*, + dev/phpunit*, + dev/sonar*, + .github/workflows/phpunit.yml, + .github/workflows/sonar.yml + ] 'ddev': - - .ddev/* - - .ddev/**/* + - changed-files: + - any-glob-to-any-file: [ + .ddev/*, + .ddev/**/* + ] diff --git a/.github/workflows/check-files.yml b/.github/workflows/check-files.yml index c08086e0b6c..41106d51944 100644 --- a/.github/workflows/check-files.yml +++ b/.github/workflows/check-files.yml @@ -63,7 +63,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -71,7 +71,7 @@ jobs: - name: Get changed files id: changed-files-specific - uses: tj-actions/changed-files@v40 + uses: tj-actions/changed-files@v42 with: files: | composer.* diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index bbe60931257..d0235437877 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} config-file: ./.github/codeql-config.yml @@ -58,7 +58,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -71,6 +71,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/composer.yml b/.github/workflows/composer.yml index 0474a31ca54..738728ed86b 100644 --- a/.github/workflows/composer.yml +++ b/.github/workflows/composer.yml @@ -19,7 +19,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/php-cs-fixer.yml b/.github/workflows/php-cs-fixer.yml index fe9b155011b..c340b673359 100644 --- a/.github/workflows/php-cs-fixer.yml +++ b/.github/workflows/php-cs-fixer.yml @@ -24,7 +24,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml index 8dd4f4b0b41..e078a040ebe 100644 --- a/.github/workflows/phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -34,7 +34,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 7ae8a0a2e87..2279b8d5aee 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -27,7 +27,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 9d46ad5c0eb..b4db7974e5c 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -26,7 +26,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -42,7 +42,7 @@ jobs: - name: Install OpenMage dependencies working-directory: ./openmage - run: composer install --prefer-dist --no-progress --ignore-platform-reqs + run: composer install --prefer-dist --no-progress --ignore-platform-reqs --no-dev - name: run phpUnit run: bash ./run_unit_tests.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 72cd81337fa..6a3b20bfb73 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/security-php.yml b/.github/workflows/security-php.yml index 4a18b50312d..4e15f9c3b03 100644 --- a/.github/workflows/security-php.yml +++ b/.github/workflows/security-php.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/cache@v3 + - uses: actions/cache@v4 id: cache-db with: path: ~/.symfony/cache diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index f9028cfe7ae..cc2ffcb5d43 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -35,7 +35,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/LICENSE.html b/LICENSE.html deleted file mode 100644 index e2315f6a416..00000000000 --- a/LICENSE.html +++ /dev/null @@ -1,42 +0,0 @@ -

Open Software License ("OSL") v. 3.0

- -

This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:

-
Licensed under the Open Software License version 3.0
-

Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:

- - -

Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.

- -

Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.

- -

Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.

- -

External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).

- -

Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.

- -

Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.

- -

Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.

- -

Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).

- -

Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.

- -

Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.

- -

Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.

- -

Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.

- -

Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

- -

Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.

- -

Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under Open Software License ("OSL") v. 3.0" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.

diff --git a/LICENSE.txt b/LICENSE.txt index 1c0ad61e66c..9e2777bd3a5 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,48 +1,47 @@ - Open Software License ("OSL") v. 3.0 This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work: Licensed under the Open Software License version 3.0 - 1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following: +1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following: - 1. to reproduce the Original Work in copies, either alone or as part of a collective work; + 1. to reproduce the Original Work in copies, either alone or as part of a collective work; - 2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work; + 2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work; - 3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License; + 3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License; - 4. to perform the Original Work publicly; and + 4. to perform the Original Work publicly; and - 5. to display the Original Work publicly. + 5. to display the Original Work publicly. - 2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works. +2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works. - 3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work. +3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work. - 4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license. +4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license. - 5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c). +5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c). - 6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. +6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. - 7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer. +7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer. - 8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation. +8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation. - 9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c). +9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c). - 10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. +10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. - 11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License. +11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License. - 12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. +12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. - 13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. +13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. - 14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - 15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. +15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. - 16. Modification of This License. This License is Copyright 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process. \ No newline at end of file +16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process. diff --git a/LICENSE_AFL.txt b/LICENSE_AFL.txt index f3144bd43d1..eb6c57300d8 100644 --- a/LICENSE_AFL.txt +++ b/LICENSE_AFL.txt @@ -1,48 +1,47 @@ - Academic Free License ("AFL") v. 3.0 This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work: Licensed under the Academic Free License version 3.0 - 1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following: +1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following: - 1. to reproduce the Original Work in copies, either alone or as part of a collective work; + 1. to reproduce the Original Work in copies, either alone or as part of a collective work; - 2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work; + 2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work; - 3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License; + 3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License; - 4. to perform the Original Work publicly; and + 4. to perform the Original Work publicly; and - 5. to display the Original Work publicly. + 5. to display the Original Work publicly. - 2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works. +2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works. - 3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work. +3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work. - 4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license. +4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license. - 5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c). +5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c). - 6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. +6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. - 7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer. +7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer. - 8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation. +8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation. - 9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c). +9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c). - 10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. +10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. - 11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License. +11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License. - 12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. +12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. - 13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. +13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. - 14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - 15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. +15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. - 16. Modification of This License. This License is Copyright 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process. \ No newline at end of file +16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process. diff --git a/README.md b/README.md index 5932f96866c..e0ef7f90cd3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,8 @@ -

- -All Contributors - +[![All Contributors](https://img.shields.io/github/all-contributors/openmage/magento-lts?color=ee8449)](#contributors) Total Downloads License PHP Security workflow Badge CI workflow Badge -

# Magento - Long Term Support @@ -68,8 +64,8 @@ In a nutshell: ## Requirements -- PHP 7.4+ (PHP 8.0 is supported, PHP 8.1 supported but some warnings may be shown/logged, PHP 8.2 is usable but still being tested) -- MySQL 5.6+ (8.0+ recommended) or MariaDB +- PHP 7.4 to 8.2 +- MySQL 5.7+ (8.0+ recommended) or MariaDB - optional: Redis 5.x, 6.x and 7.0.x are supported @@ -589,6 +585,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Juho Hölsä

Kane
+
Kevin Jakob
+
Michael Leiss
+
Marcos Steverlynck
+
Andy Hudock
diff --git a/app/Mage.php b/app/Mage.php index 700f87e2ac5..d598778c6af 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -215,7 +215,7 @@ public static function getOpenMageVersionInfo(): array if (self::getOpenMageMajorVersion() === 20) { return [ 'major' => '20', - 'minor' => '2', + 'minor' => '3', 'patch' => '0', 'stability' => '', // beta,alpha,rc 'number' => '', // 1,2,3,0.3.7,x.7.z.92 @see https://semver.org/#spec-item-9 @@ -411,6 +411,26 @@ public static function getStoreConfig($path, $store = null) return self::app()->getStore($store)->getConfig($path); } + /** + * @param string $path + * @param null|string|bool|int|Mage_Core_Model_Store $store + * @return float + */ + public static function getStoreConfigAsFloat(string $path, $store = null): float + { + return (float) self::getStoreConfig($path, $store); + } + + /** + * @param string $path + * @param null|string|bool|int|Mage_Core_Model_Store $store + * @return int + */ + public static function getStoreConfigAsInt(string $path, $store = null): int + { + return (int) self::getStoreConfig($path, $store); + } + /** * Retrieve config flag for store by path * diff --git a/app/code/core/Mage/Admin/Model/Resource/Acl.php b/app/code/core/Mage/Admin/Model/Resource/Acl.php index 89d810e3971..8c6887dcc66 100644 --- a/app/code/core/Mage/Admin/Model/Resource/Acl.php +++ b/app/code/core/Mage/Admin/Model/Resource/Acl.php @@ -132,7 +132,9 @@ public function loadRules(Mage_Admin_Model_Acl $acl, array $rulesArr) $acl->deny($role, $resource, $privileges, $assert); } } catch (Exception $e) { - Mage::logException($e); + if (Mage::getIsDeveloperMode()) { + Mage::logException($e); + } } } return $this; diff --git a/app/code/core/Mage/Admin/Model/User.php b/app/code/core/Mage/Admin/Model/User.php index b10e26a982f..10ce60260a1 100644 --- a/app/code/core/Mage/Admin/Model/User.php +++ b/app/code/core/Mage/Admin/Model/User.php @@ -784,7 +784,7 @@ public function getUserCreateAdditionalEmail() */ public function getMinAdminPasswordLength() { - $minLength = (int)Mage::getStoreConfig(self::XML_PATH_MIN_ADMIN_PASSWORD_LENGTH); + $minLength = Mage::getStoreConfigAsInt(self::XML_PATH_MIN_ADMIN_PASSWORD_LENGTH); $absoluteMinLength = Mage_Core_Model_App::ABSOLUTE_MIN_PASSWORD_LENGTH; return ($minLength < $absoluteMinLength) ? $absoluteMinLength : $minLength; } diff --git a/app/code/core/Mage/Adminhtml/Block/Notification/Security.php b/app/code/core/Mage/Adminhtml/Block/Notification/Security.php index 4d85996a8b5..52db59889cc 100644 --- a/app/code/core/Mage/Adminhtml/Block/Notification/Security.php +++ b/app/code/core/Mage/Adminhtml/Block/Notification/Security.php @@ -47,7 +47,7 @@ protected function _canShowNotification() if ($this->_isFileAccessible()) { return true; } - $adminSessionLifetime = (int)Mage::getStoreConfig('admin/security/session_cookie_lifetime'); + $adminSessionLifetime = Mage::getStoreConfigAsInt('admin/security/session_cookie_lifetime'); Mage::app()->saveCache(true, self::VERIFICATION_RESULT_CACHE_KEY, [], $adminSessionLifetime); return false; } diff --git a/app/code/core/Mage/Adminhtml/Block/Page/Head.php b/app/code/core/Mage/Adminhtml/Block/Page/Head.php index 2c7a92c4852..1e008cfed85 100644 --- a/app/code/core/Mage/Adminhtml/Block/Page/Head.php +++ b/app/code/core/Mage/Adminhtml/Block/Page/Head.php @@ -47,6 +47,6 @@ public function getFormKey() */ public function getLoadingTimeout() { - return (int)Mage::getStoreConfig('admin/design/loading_timeout'); + return Mage::getStoreConfigAsInt('admin/design/loading_timeout'); } } diff --git a/app/code/core/Mage/Catalog/Helper/Image.php b/app/code/core/Mage/Catalog/Helper/Image.php index 47040931f42..0809ccd6eac 100644 --- a/app/code/core/Mage/Catalog/Helper/Image.php +++ b/app/code/core/Mage/Catalog/Helper/Image.php @@ -143,7 +143,7 @@ public function init(Mage_Catalog_Model_Product $product, $attributeName, $image Mage::getStoreConfig("design/watermark/{$this->_getModel()->getDestinationSubdir()}_image") ); $this->setWatermarkImageOpacity( - Mage::getStoreConfig("design/watermark/{$this->_getModel()->getDestinationSubdir()}_imageOpacity") + Mage::getStoreConfigAsInt("design/watermark/{$this->_getModel()->getDestinationSubdir()}_imageOpacity") ); $this->setWatermarkPosition( Mage::getStoreConfig("design/watermark/{$this->_getModel()->getDestinationSubdir()}_position") diff --git a/app/code/core/Mage/Catalog/Helper/Product.php b/app/code/core/Mage/Catalog/Helper/Product.php index 26e16d5fc95..18882b54787 100644 --- a/app/code/core/Mage/Catalog/Helper/Product.php +++ b/app/code/core/Mage/Catalog/Helper/Product.php @@ -311,12 +311,6 @@ public function initProduct($productId, $controller, $params = null) $params = new Varien_Object(); } - // Init and load product - Mage::dispatchEvent('catalog_controller_product_init_before', [ - 'controller_action' => $controller, - 'params' => $params, - ]); - if (!$productId) { return false; } @@ -325,6 +319,13 @@ public function initProduct($productId, $controller, $params = null) ->setStoreId(Mage::app()->getStore()->getId()) ->load($productId); + // Init and load product + Mage::dispatchEvent('catalog_controller_product_init_before', [ + 'controller_action' => $controller, + 'params' => $params, + 'product' => $product, + ]); + if (!$this->canShow($product)) { return false; } 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 3c6a08f2271..9b9d0a7c3fe 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 @@ -276,7 +276,7 @@ protected function _prepareDataForSave($product, $productData) if (!$productData['use_config_gift_message_available'] && ($product->getData('gift_message_available') === null) ) { - $product->setData('gift_message_available', (int) Mage::getStoreConfig( + $product->setData('gift_message_available', Mage::getStoreConfigAsInt( Mage_GiftMessage_Helper_Message::XPATH_CONFIG_GIFT_MESSAGE_ALLOW_ITEMS, $product->getStoreId() )); @@ -288,7 +288,7 @@ protected function _prepareDataForSave($product, $productData) && ($product->getData('gift_wrapping_available') === null) ) { $xmlPathGiftWrappingAvailable = 'sales/gift_options/wrapping_allow_items'; - $product->setData('gift_wrapping_available', (int)Mage::getStoreConfig( + $product->setData('gift_wrapping_available', Mage::getStoreConfigAsInt( $xmlPathGiftWrappingAvailable, $product->getStoreId() )); diff --git a/app/code/core/Mage/Catalog/Model/Product/Attribute/Backend/Tierprice.php b/app/code/core/Mage/Catalog/Model/Product/Attribute/Backend/Tierprice.php index 70aa40d1f94..2f21c677654 100644 --- a/app/code/core/Mage/Catalog/Model/Product/Attribute/Backend/Tierprice.php +++ b/app/code/core/Mage/Catalog/Model/Product/Attribute/Backend/Tierprice.php @@ -51,7 +51,7 @@ public function _getWebsiteRates() protected function _getAdditionalUniqueFields($objectArray) { $uniqueFields = parent::_getAdditionalUniqueFields($objectArray); - $uniqueFields['qty'] = $objectArray['price_qty'] * 1; + $uniqueFields['qty'] = (float) $objectArray['price_qty']; return $uniqueFields; } diff --git a/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php b/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php index e4c4c793d4e..0dcc633091d 100644 --- a/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php +++ b/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php @@ -567,7 +567,7 @@ public function checkProductBuyState($product = null) if ($option->getIsRequire()) { $customOption = $this->getProduct($product) ->getCustomOption(self::OPTION_PREFIX . $option->getId()); - if (!$customOption || strlen($customOption->getValue()) == 0) { + if (!$customOption || $customOption->getValue() === null || strlen($customOption->getValue()) === 0) { $this->getProduct($product)->setSkipCheckRequiredOption(true); Mage::throwException( Mage::helper('catalog')->__('The product has required options') diff --git a/app/code/core/Mage/Catalog/Model/Product/Type/Grouped.php b/app/code/core/Mage/Catalog/Model/Product/Type/Grouped.php index 70e961775a4..161b2e475db 100644 --- a/app/code/core/Mage/Catalog/Model/Product/Type/Grouped.php +++ b/app/code/core/Mage/Catalog/Model/Product/Type/Grouped.php @@ -28,7 +28,7 @@ class Mage_Catalog_Model_Product_Type_Grouped extends Mage_Catalog_Model_Product * * @var string */ - protected $_keyAssociatedProducts = '_cache_instance_associated_products'; + protected $_keyAssociatedProducts = '_cache_instance_associated_products'; /** * Cache key for Associated Product Ids @@ -42,21 +42,46 @@ class Mage_Catalog_Model_Product_Type_Grouped extends Mage_Catalog_Model_Product * * @var string */ - protected $_keyStatusFilters = '_cache_instance_status_filters'; + protected $_keyStatusFilters = '_cache_instance_status_filters'; /** * Product is composite properties * * @var bool */ - protected $_isComposite = true; + protected $_isComposite = true; /** * Product is configurable * * @var bool */ - protected $_canConfigure = true; + protected $_canConfigure = true; + + /** + * Attributes used in associated products + * + * @var string|string[] + */ + protected $_attributesUsedInAssociatedProducts = '*'; + + /** + * @return string|string[] + */ + public function getAttributesUsedInAssociatedProducts() + { + return $this->_attributesUsedInAssociatedProducts; + } + + /** + * @param string|string[] $attribute + * @return $this + */ + public function setAttributesUsedInAssociatedProducts($attribute) + { + $this->_attributesUsedInAssociatedProducts = $attribute; + return $this; + } /** * Return relation info about used products @@ -123,7 +148,7 @@ public function getAssociatedProducts($product = null) } $collection = $this->getAssociatedProductCollection($product) - ->addAttributeToSelect('*') + ->addAttributeToSelect($this->getAttributesUsedInAssociatedProducts()) ->addFilterByRequiredOptions() ->setPositionOrder() ->addStoreFilter($this->getStoreFilter($product)) diff --git a/app/code/core/Mage/Catalog/Model/Url.php b/app/code/core/Mage/Catalog/Model/Url.php index e68b3ee259b..8c8b784c29f 100644 --- a/app/code/core/Mage/Catalog/Model/Url.php +++ b/app/code/core/Mage/Catalog/Model/Url.php @@ -411,7 +411,7 @@ protected function _refreshCategoryProductRewrites(Varien_Object $category) } /** - * Refresh category and childs rewrites + * Refresh category and children rewrites * Called when reindexing all rewrites and as a reaction on category change that affects rewrites * * @param int $categoryId @@ -471,7 +471,7 @@ public function refreshProductRewrite($productId, $storeId = null) $storeRootCategoryId = $store->getRootCategoryId(); // List of categories the product is assigned to, filtered by being within the store's categories root - $categories = $this->getResource()->getCategories($product->getCategoryIds(), $storeId); + $categories = $this->getResource()->getCategories($product->getCategoryIds(), $storeId) ?: []; $this->_rewrites = $this->getResource()->prepareRewrites($storeId, '', $productId); // Add rewrites for all needed categories @@ -535,7 +535,8 @@ public function refreshProductRewrites($storeId) } if ($loadCategories) { - foreach ($this->getResource()->getCategories($loadCategories, $storeId) as $category) { + $categories = $this->getResource()->getCategories($loadCategories, $storeId) ?: []; + foreach ($categories as $category) { $this->_categories[$category->getId()] = $category; } } diff --git a/app/code/core/Mage/CatalogInventory/Block/Stockqty/Abstract.php b/app/code/core/Mage/CatalogInventory/Block/Stockqty/Abstract.php index efa7787fb07..b159750842e 100644 --- a/app/code/core/Mage/CatalogInventory/Block/Stockqty/Abstract.php +++ b/app/code/core/Mage/CatalogInventory/Block/Stockqty/Abstract.php @@ -58,7 +58,7 @@ public function getStockQty() public function getThresholdQty() { if (!$this->hasData('threshold_qty')) { - $qty = (float) Mage::getStoreConfig(self::XML_PATH_STOCK_THRESHOLD_QTY); + $qty = Mage::getStoreConfigAsFloat(self::XML_PATH_STOCK_THRESHOLD_QTY); $this->setData('threshold_qty', $qty); } return $this->getData('threshold_qty'); diff --git a/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php b/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php index 55b5c16a0c7..e93eaca91af 100644 --- a/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php +++ b/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php @@ -220,7 +220,7 @@ protected function _initConfig() ]; foreach ($configMap as $field => $const) { - $this->$field = (int)Mage::getStoreConfig($const); + $this->$field = Mage::getStoreConfigAsInt($const); } $this->_isConfig = true; diff --git a/app/code/core/Mage/CatalogInventory/Model/Resource/Stock/Item.php b/app/code/core/Mage/CatalogInventory/Model/Resource/Stock/Item.php index 0c60e4f4e27..b23ad90d025 100644 --- a/app/code/core/Mage/CatalogInventory/Model/Resource/Stock/Item.php +++ b/app/code/core/Mage/CatalogInventory/Model/Resource/Stock/Item.php @@ -72,7 +72,7 @@ protected function _getLoadSelect($field, $value, $object) public function addCatalogInventoryToProductCollection($productCollection) { $adapter = $this->_getReadAdapter(); - $isManageStock = (int)Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK); + $isManageStock = Mage::getStoreConfigAsInt(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK); $stockExpr = $adapter->getCheckSql('cisi.use_config_manage_stock = 1', $isManageStock, 'cisi.manage_stock'); $stockExpr = $adapter->getCheckSql("({$stockExpr} = 1)", 'cisi.is_in_stock', '1'); diff --git a/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php b/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php index ae9ff1b8509..abc109a3bd4 100644 --- a/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php +++ b/app/code/core/Mage/CatalogInventory/Model/Stock/Item.php @@ -363,7 +363,7 @@ public function getMaxSaleQty() public function getNotifyStockQty() { if ($this->getUseConfigNotifyStockQty()) { - return (float) Mage::getStoreConfig(self::XML_PATH_NOTIFY_STOCK_QTY); + return Mage::getStoreConfigAsFloat(self::XML_PATH_NOTIFY_STOCK_QTY); } return (float) $this->getData('notify_stock_qty'); } @@ -411,7 +411,7 @@ public function getQtyIncrements() public function getDefaultQtyIncrements() { return Mage::getStoreConfigFlag(self::XML_PATH_ENABLE_QTY_INCREMENTS) - ? (int)Mage::getStoreConfig(self::XML_PATH_QTY_INCREMENTS) + ? Mage::getStoreConfigAsInt(self::XML_PATH_QTY_INCREMENTS) : false; } @@ -423,7 +423,7 @@ public function getDefaultQtyIncrements() public function getBackorders() { if ($this->getUseConfigBackorders()) { - return (int) Mage::getStoreConfig(self::XML_PATH_BACKORDERS); + return Mage::getStoreConfigAsInt(self::XML_PATH_BACKORDERS); } return $this->getData('backorders'); } diff --git a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php index b975920157e..6c78488d870 100644 --- a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php +++ b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php @@ -761,7 +761,7 @@ protected function _getAttributeValue($attributeId, $value, $storeId) } } - $value = preg_replace("#\s+#siu", ' ', trim(strip_tags($value))); + $value = $value === null ? '' : preg_replace("#\s+#siu", ' ', trim(strip_tags($value))); return $value; } diff --git a/app/code/core/Mage/Checkout/Helper/Data.php b/app/code/core/Mage/Checkout/Helper/Data.php index e9e0f9e4f80..cd660c35133 100644 --- a/app/code/core/Mage/Checkout/Helper/Data.php +++ b/app/code/core/Mage/Checkout/Helper/Data.php @@ -280,16 +280,16 @@ protected function _getEmails($configPath, $storeId) public function isMultishippingCheckoutAvailable() { $quote = $this->getQuote(); - $isMultiShipping = (bool)(int)Mage::getStoreConfig('shipping/option/checkout_multiple'); + $isMultiShipping = Mage::getStoreConfigFlag('shipping/option/checkout_multiple'); if ((!$quote) || !$quote->hasItems()) { return $isMultiShipping; } - $maximunQty = (int)Mage::getStoreConfig('shipping/option/checkout_multiple_maximum_qty'); + $maximumQty = Mage::getStoreConfigAsInt('shipping/option/checkout_multiple_maximum_qty'); return $isMultiShipping && !$quote->hasItemsWithDecimalQty() && $quote->validateMinimumAmount(true) && (($quote->getItemsSummaryQty() - $quote->getItemVirtualQty()) > 0) - && ($quote->getItemsSummaryQty() <= $maximunQty) + && ($quote->getItemsSummaryQty() <= $maximumQty) && !$quote->hasNominalItems() ; } diff --git a/app/code/core/Mage/Checkout/Model/Type/Multishipping.php b/app/code/core/Mage/Checkout/Model/Type/Multishipping.php index f4667dfe864..fe98a27ef32 100644 --- a/app/code/core/Mage/Checkout/Model/Type/Multishipping.php +++ b/app/code/core/Mage/Checkout/Model/Type/Multishipping.php @@ -210,7 +210,7 @@ public function setShippingItemsInformation($info) } } - $maxQty = (int)Mage::getStoreConfig('shipping/option/checkout_multiple_maximum_qty'); + $maxQty = Mage::getStoreConfigAsInt('shipping/option/checkout_multiple_maximum_qty'); if ($allQty > $maxQty) { Mage::throwException(Mage::helper('checkout')->__('Maximum qty allowed for Shipping to multiple addresses is %s', $maxQty)); } diff --git a/app/code/core/Mage/ConfigurableSwatches/Helper/Swatchdimensions.php b/app/code/core/Mage/ConfigurableSwatches/Helper/Swatchdimensions.php index 788b16d91cb..54f23f28e69 100644 --- a/app/code/core/Mage/ConfigurableSwatches/Helper/Swatchdimensions.php +++ b/app/code/core/Mage/ConfigurableSwatches/Helper/Swatchdimensions.php @@ -47,7 +47,7 @@ class Mage_ConfigurableSwatches_Helper_Swatchdimensions extends Mage_Core_Helper */ public function getDimension($area, $dimension, $outer = false) { - $dimension = (int) Mage::getStoreConfig( + $dimension = Mage::getStoreConfigAsInt( Mage_ConfigurableSwatches_Helper_Data::CONFIG_PATH_BASE . '/' . $area . '/' . $dimension ); if ($outer) { diff --git a/app/code/core/Mage/Core/Block/Html/Calendar.php b/app/code/core/Mage/Core/Block/Html/Calendar.php index 57fb031ae72..cff47742e81 100644 --- a/app/code/core/Mage/Core/Block/Html/Calendar.php +++ b/app/code/core/Mage/Core/Block/Html/Calendar.php @@ -53,7 +53,7 @@ protected function _toHtml() $this->assign('pm', Mage::helper('core')->jsonEncode(Zend_Locale_Data::getContent($localeCode, 'pm'))); // get first day of week and weekend days - $this->assign('firstDay', (int)Mage::getStoreConfig('general/locale/firstday')); + $this->assign('firstDay', Mage::getStoreConfigAsInt('general/locale/firstday')); $this->assign('weekendDays', Mage::helper('core')->jsonEncode((string)Mage::getStoreConfig('general/locale/weekend'))); // define default format and tooltip format diff --git a/app/code/core/Mage/Core/Controller/Varien/Front.php b/app/code/core/Mage/Core/Controller/Varien/Front.php index 52da8dc2aff..9d79f64aa72 100644 --- a/app/code/core/Mage/Core/Controller/Varien/Front.php +++ b/app/code/core/Mage/Core/Controller/Varien/Front.php @@ -329,7 +329,7 @@ protected function _checkBaseUrl($request) return; } - $redirectCode = (int)Mage::getStoreConfig('web/url/redirect_to_base'); + $redirectCode = Mage::getStoreConfigAsInt('web/url/redirect_to_base'); if (!$redirectCode) { return; } elseif ($redirectCode != 301) { diff --git a/app/code/core/Mage/Core/Helper/Abstract.php b/app/code/core/Mage/Core/Helper/Abstract.php index 602d0c5c2cb..fc0580855c7 100644 --- a/app/code/core/Mage/Core/Helper/Abstract.php +++ b/app/code/core/Mage/Core/Helper/Abstract.php @@ -250,6 +250,9 @@ function ($matches) { */ public function stripTags($data, $allowableTags = null, $escape = false) { + if ($data === null) { + return ''; + } $result = strip_tags($data, $allowableTags); return $escape ? $this->escapeHtml($result, $allowableTags) : $result; } diff --git a/app/code/core/Mage/Core/Model/App.php b/app/code/core/Mage/Core/Model/App.php index da7a35c59ce..a44360011fd 100644 --- a/app/code/core/Mage/Core/Model/App.php +++ b/app/code/core/Mage/Core/Model/App.php @@ -812,7 +812,7 @@ public function loadArea($code) } /** - * Loding part of area data + * Loading part of area data * * @param string $area * @param string $part diff --git a/app/code/core/Mage/Core/Model/Config.php b/app/code/core/Mage/Core/Model/Config.php index cacdce1fc5d..ecdd422502b 100644 --- a/app/code/core/Mage/Core/Model/Config.php +++ b/app/code/core/Mage/Core/Model/Config.php @@ -502,10 +502,10 @@ public function getCache() */ public function getCacheSaveLock($waitTime = null, $ignoreFailure = false) { - if (! Mage::app()->useCache('config')) { + if (!Mage::app()->useCache('config')) { return; } - $waitTime = $waitTime ?: (PHP_SAPI === 'cli' ? 60 : 3); + $waitTime = $waitTime ?: (getenv('MAGE_CONFIG_CACHE_LOCK_WAIT') ?: (PHP_SAPI === 'cli' ? 60 : 3)); $connection = Mage::getSingleton('core/resource')->getConnection('core_write'); if (!$connection->fetchOne("SELECT GET_LOCK('core_config_cache_save_lock', ?)", [$waitTime])) { if ($ignoreFailure) { @@ -513,7 +513,8 @@ public function getCacheSaveLock($waitTime = null, $ignoreFailure = false) } elseif (PHP_SAPI === 'cli') { throw new Exception('Could not get lock on cache save operation.'); } else { - require_once Mage::getBaseDir() . DS . 'errors' . DS . '503.php'; + Mage::log(sprintf('Failed to get cache save lock in %d seconds.', $waitTime), Zend_Log::NOTICE); + require Mage::getBaseDir() . DS . 'errors' . DS . '503.php'; die(); } } @@ -526,7 +527,7 @@ public function getCacheSaveLock($waitTime = null, $ignoreFailure = false) */ public function releaseCacheSaveLock() { - if (! Mage::app()->useCache('config')) { + if (!Mage::app()->useCache('config')) { return; } $connection = Mage::getSingleton('core/resource')->getConnection('core_write'); diff --git a/app/code/core/Mage/Core/Model/File/Validator/Image.php b/app/code/core/Mage/Core/Model/File/Validator/Image.php index 278e53d75aa..bac27129500 100644 --- a/app/code/core/Mage/Core/Model/File/Validator/Image.php +++ b/app/code/core/Mage/Core/Model/File/Validator/Image.php @@ -80,6 +80,9 @@ public function validate($filePath) { list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath); if ($fileType) { + if ($fileType === IMAGETYPE_ICO) { + return null; + } if ($this->isImageType($fileType)) { // Config 'general/reprocess_images/active' is deprecated, replacement is the following: $imageQuality = Mage::getStoreConfig('admin/security/reprocess_image_quality'); diff --git a/app/code/core/Mage/Core/Model/Input/Filter/MaliciousCode.php b/app/code/core/Mage/Core/Model/Input/Filter/MaliciousCode.php index d5f65f81398..51c7797ac65 100644 --- a/app/code/core/Mage/Core/Model/Input/Filter/MaliciousCode.php +++ b/app/code/core/Mage/Core/Model/Input/Filter/MaliciousCode.php @@ -41,6 +41,8 @@ class Mage_Core_Model_Input_Filter_MaliciousCode implements Zend_Filter_Interfac '/(ondblclick|onclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onload|onunload|onerror|onanimationstart|onfocus|onloadstart|ontoggle)\s*=[^>]*(?=\>)/Uis', //tags '/<\/?(script|meta|link|frame|iframe|object).*>/Uis', + //scripts + '/<\?\s*?(php|=).*>/Uis', //base64 usage '/src\s*=[^<]*base64[^<]*(?=\>)/Uis', //data attribute diff --git a/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php b/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php index bfdd10f369b..d4e11fd58f4 100644 --- a/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php +++ b/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php @@ -45,7 +45,7 @@ abstract class Mage_Core_Model_Resource_Db_Abstract extends Mage_Core_Model_Reso * * @var array */ - protected $_connections = []; + protected $_connections = []; /** * Resource model name that contains entities (names of tables) @@ -59,7 +59,7 @@ abstract class Mage_Core_Model_Resource_Db_Abstract extends Mage_Core_Model_Reso * * @var array */ - protected $_tables = []; + protected $_tables = []; /** * Main table name @@ -80,21 +80,21 @@ abstract class Mage_Core_Model_Resource_Db_Abstract extends Mage_Core_Model_Reso * * @var bool */ - protected $_isPkAutoIncrement = true; + protected $_isPkAutoIncrement = true; /** * Use is object new method for save of object * * @var bool */ - protected $_useIsObjectNew = false; + protected $_useIsObjectNew = false; /** * Fields List for update in forsedSave * * @var array */ - protected $_fieldsForUpdate = []; + protected $_fieldsForUpdate = []; /** * Fields of main table @@ -118,7 +118,7 @@ abstract class Mage_Core_Model_Resource_Db_Abstract extends Mage_Core_Model_Reso * * @var array|null */ - protected $_uniqueFields = null; + protected $_uniqueFields = null; /** * Serializable fields declaration @@ -132,7 +132,7 @@ abstract class Mage_Core_Model_Resource_Db_Abstract extends Mage_Core_Model_Reso * * @var array */ - protected $_serializableFields = []; + protected $_serializableFields = []; /** * Standard resource model initialization @@ -405,8 +405,8 @@ protected function _getLoadSelect($field, $value, $object) throw new Exception("Column \"{$field}\" does not exist in table \"{$this->getMainTable()}\""); } - $value = $this->_getReadAdapter()->prepareColumnValue($fields[$field], $value); - $field = $this->_getReadAdapter()->quoteIdentifier(sprintf('%s.%s', $this->getMainTable(), $field)); + $value = $this->_getReadAdapter()->prepareColumnValue($fields[$field], $value); + $field = $this->_getReadAdapter()->quoteIdentifier(sprintf('%s.%s', $this->getMainTable(), $field)); return $this->_getReadAdapter()->select() ->from($this->getMainTable()) ->where($field . '=?', $value); @@ -644,7 +644,8 @@ protected function _checkUnique(Mage_Core_Model_Abstract $object) [ 'field' => $fields, 'title' => $fields - ]]; + ] + ]; } $data = new Varien_Object($this->_prepareDataForSave($object)); @@ -656,10 +657,10 @@ protected function _checkUnique(Mage_Core_Model_Abstract $object) if (is_array($unique['field'])) { foreach ($unique['field'] as $field) { - $select->where($field . '=?', trim($data->getData($field))); + $select->where($field . '=?', trim((string)$data->getData($field))); } } else { - $select->where($unique['field'] . '=?', trim($data->getData($unique['field']))); + $select->where($unique['field'] . '=?', trim((string)$data->getData($unique['field']))); } if ($object->getId() || $object->getId() === '0') { diff --git a/app/code/core/Mage/Core/Model/Resource/Session.php b/app/code/core/Mage/Core/Model/Resource/Session.php index 0427f2a5258..56d246f80f4 100644 --- a/app/code/core/Mage/Core/Model/Resource/Session.php +++ b/app/code/core/Mage/Core/Model/Resource/Session.php @@ -90,7 +90,7 @@ public function getLifeTime() if (is_null($this->_lifeTime)) { $configNode = Mage::app()->getStore()->isAdmin() ? 'admin/security/session_cookie_lifetime' : 'web/cookie/cookie_lifetime'; - $this->_lifeTime = (int) Mage::getStoreConfig($configNode); + $this->_lifeTime = Mage::getStoreConfigAsInt($configNode); if ($this->_lifeTime < 60) { $this->_lifeTime = ini_get('session.gc_maxlifetime'); 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 a90b987459d..da3ef1b0d0d 100644 --- a/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php +++ b/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php @@ -94,7 +94,7 @@ public function start($sessionName = null) $cookie = $this->getCookie(); if (Mage::app()->getStore()->isAdmin()) { $sessionMaxLifetime = Mage_Core_Model_Resource_Session::SEESION_MAX_COOKIE_LIFETIME; - $adminSessionLifetime = (int)Mage::getStoreConfig('admin/security/session_cookie_lifetime'); + $adminSessionLifetime = Mage::getStoreConfigAsInt('admin/security/session_cookie_lifetime'); if ($adminSessionLifetime > $sessionMaxLifetime) { $adminSessionLifetime = $sessionMaxLifetime; } diff --git a/app/code/core/Mage/Core/Model/Store.php b/app/code/core/Mage/Core/Model/Store.php index 2668c51db04..286db5850d0 100644 --- a/app/code/core/Mage/Core/Model/Store.php +++ b/app/code/core/Mage/Core/Model/Store.php @@ -364,7 +364,7 @@ public function getConfig($path) public function initConfigCache() { /** - * Funtionality related with config separation + * Functionality related with config separation */ if ($this->_configCache === null) { $code = $this->getCode(); diff --git a/app/code/core/Mage/Core/Model/Store/Group.php b/app/code/core/Mage/Core/Model/Store/Group.php index 4b0295e63d5..796ca1bfb4a 100644 --- a/app/code/core/Mage/Core/Model/Store/Group.php +++ b/app/code/core/Mage/Core/Model/Store/Group.php @@ -124,7 +124,7 @@ protected function _loadStores() if ($this->getDefaultStoreId() == $storeId) { $this->_defaultStore = $store; } - $this->_storesCount ++; + $this->_storesCount++; } } @@ -145,7 +145,7 @@ public function setStores($stores) if ($this->getDefaultStoreId() == $storeId) { $this->_defaultStore = $store; } - $this->_storesCount ++; + $this->_storesCount++; } } diff --git a/app/code/core/Mage/Core/Model/Website.php b/app/code/core/Mage/Core/Model/Website.php index 95b7b2d0f79..9cb4c2dea47 100644 --- a/app/code/core/Mage/Core/Model/Website.php +++ b/app/code/core/Mage/Core/Model/Website.php @@ -230,7 +230,7 @@ protected function _loadGroups() if ($this->getDefaultGroupId() == $groupId) { $this->_defaultGroup = $group; } - $this->_groupsCount ++; + $this->_groupsCount++; } } @@ -251,7 +251,7 @@ public function setGroups($groups) if ($this->getDefaultGroupId() == $groupId) { $this->_defaultGroup = $group; } - $this->_groupsCount ++; + $this->_groupsCount++; } return $this; } @@ -339,7 +339,7 @@ protected function _loadStores() if ($this->getDefaultGroup() && $this->getDefaultGroup()->getDefaultStoreId() == $storeId) { $this->_defaultStore = $store; } - $this->_storesCount ++; + $this->_storesCount++; } } @@ -360,7 +360,7 @@ public function setStores($stores) if ($this->getDefaultGroup() && $this->getDefaultGroup()->getDefaultStoreId() == $storeId) { $this->_defaultStore = $store; } - $this->_storesCount ++; + $this->_storesCount++; } } diff --git a/app/code/core/Mage/Customer/Block/Widget/Name.php b/app/code/core/Mage/Customer/Block/Widget/Name.php index 2637af27492..532729ec7e6 100644 --- a/app/code/core/Mage/Customer/Block/Widget/Name.php +++ b/app/code/core/Mage/Customer/Block/Widget/Name.php @@ -74,7 +74,7 @@ public function getPrefixOptions() $helper = $this->helper('customer'); $prefixOptions = $helper->getNamePrefixOptions(); if ($this->getObject() && !empty($prefixOptions)) { - $oldPrefix = $this->escapeHtml(trim($this->getObject()->getPrefix())); + $oldPrefix = $this->escapeHtml(trim($this->getObject()->getPrefix() ?? '')); $prefixOptions[$oldPrefix] = $oldPrefix; } return $prefixOptions; @@ -131,7 +131,7 @@ public function getSuffixOptions() $helper = $this->helper('customer'); $suffixOptions = $helper->getNameSuffixOptions(); if ($this->getObject() && !empty($suffixOptions)) { - $oldSuffix = $this->escapeHtml(trim($this->getObject()->getSuffix())); + $oldSuffix = $this->escapeHtml(trim($this->getObject()->getSuffix() ?? '')); $suffixOptions[$oldSuffix] = $oldSuffix; } return $suffixOptions; diff --git a/app/code/core/Mage/Customer/Helper/Data.php b/app/code/core/Mage/Customer/Helper/Data.php index 25441dc83a6..49d8d29495d 100644 --- a/app/code/core/Mage/Customer/Helper/Data.php +++ b/app/code/core/Mage/Customer/Helper/Data.php @@ -472,7 +472,7 @@ public function getIsRequireAdminUserToChangeUserPassword() */ public function getDefaultCustomerGroupId($store = null) { - return (int)Mage::getStoreConfig(Mage_Customer_Model_Group::XML_PATH_DEFAULT_ID, $store); + return Mage::getStoreConfigAsInt(Mage_Customer_Model_Group::XML_PATH_DEFAULT_ID, $store); } /** @@ -482,7 +482,7 @@ public function getDefaultCustomerGroupId($store = null) */ public function getCustomerForgotPasswordFlowSecure() { - return (int)Mage::getStoreConfig(self::XML_PATH_CUSTOMER_FORGOT_PASSWORD_FLOW_SECURE); + return Mage::getStoreConfigAsInt(self::XML_PATH_CUSTOMER_FORGOT_PASSWORD_FLOW_SECURE); } /** @@ -492,7 +492,7 @@ public function getCustomerForgotPasswordFlowSecure() */ public function getCustomerForgotPasswordEmailTimes() { - return (int)Mage::getStoreConfig(self::XML_PATH_CUSTOMER_FORGOT_PASSWORD_EMAIL_TIMES); + return Mage::getStoreConfigAsInt(self::XML_PATH_CUSTOMER_FORGOT_PASSWORD_EMAIL_TIMES); } /** @@ -502,7 +502,7 @@ public function getCustomerForgotPasswordEmailTimes() */ public function getCustomerForgotPasswordIpTimes() { - return (int)Mage::getStoreConfig(self::XML_PATH_CUSTOMER_FORGOT_PASSWORD_IP_TIMES); + return Mage::getStoreConfigAsInt(self::XML_PATH_CUSTOMER_FORGOT_PASSWORD_IP_TIMES); } /** @@ -527,7 +527,7 @@ public function getCustomerGroupIdBasedOnVatNumber($customerCountryCode, $vatVal ]; if (isset($vatClassToGroupXmlPathMap[$vatClass])) { - $groupId = (int)Mage::getStoreConfig($vatClassToGroupXmlPathMap[$vatClass], $store); + $groupId = Mage::getStoreConfigAsInt($vatClassToGroupXmlPathMap[$vatClass], $store); } return $groupId; diff --git a/app/code/core/Mage/Customer/Model/Customer.php b/app/code/core/Mage/Customer/Model/Customer.php index 72ce68e6b58..e99da3223ec 100644 --- a/app/code/core/Mage/Customer/Model/Customer.php +++ b/app/code/core/Mage/Customer/Model/Customer.php @@ -1634,7 +1634,7 @@ public function cleanPasswordsValidationData() */ public function getMinPasswordLength() { - $minLength = (int)Mage::getStoreConfig(self::XML_PATH_MIN_PASSWORD_LENGTH); + $minLength = Mage::getStoreConfigAsInt(self::XML_PATH_MIN_PASSWORD_LENGTH); $absoluteMinLength = Mage_Core_Model_App::ABSOLUTE_MIN_PASSWORD_LENGTH; return ($minLength < $absoluteMinLength) ? $absoluteMinLength : $minLength; } diff --git a/app/code/core/Mage/Customer/sql/customer_setup/mysql4-data-upgrade-1.4.0.0.7-1.4.0.0.8.php b/app/code/core/Mage/Customer/sql/customer_setup/mysql4-data-upgrade-1.4.0.0.7-1.4.0.0.8.php index d91d233c9a8..0e1c76b289f 100644 --- a/app/code/core/Mage/Customer/sql/customer_setup/mysql4-data-upgrade-1.4.0.0.7-1.4.0.0.8.php +++ b/app/code/core/Mage/Customer/sql/customer_setup/mysql4-data-upgrade-1.4.0.0.7-1.4.0.0.8.php @@ -169,7 +169,10 @@ foreach ($attributes as $attributeCode => $data) { /** @var Mage_Customer_Model_Attribute $attribute */ $attribute = $eavConfig->getAttribute('customer', $attributeCode); - $attribute->setWebsite($store->getWebsite()); + $website = $store->getWebsite(); + if ($website !== false) { + $attribute->setWebsite($website); + } $attribute->addData($data); if (($data['is_system'] == 1 && $data['is_visible'] == 0) === false) { $usedInForms = [ @@ -326,7 +329,10 @@ foreach ($attributes as $attributeCode => $data) { $attribute = $eavConfig->getAttribute('customer_address', $attributeCode); - $attribute->setWebsite($store->getWebsite()); + $website = $store->getWebsite(); + if ($website !== false) { + $attribute->setWebsite($website); + } $attribute->addData($data); if (($data['is_system'] == 1 && $data['is_visible'] == 0) === false) { $usedInForms = [ diff --git a/app/code/core/Mage/Dataflow/Model/Convert/Parser/Xml/Excel.php b/app/code/core/Mage/Dataflow/Model/Convert/Parser/Xml/Excel.php index 81afc1de8e5..3ce062469be 100644 --- a/app/code/core/Mage/Dataflow/Model/Convert/Parser/Xml/Excel.php +++ b/app/code/core/Mage/Dataflow/Model/Convert/Parser/Xml/Excel.php @@ -228,7 +228,7 @@ protected function _saveParsedRow($xmlString) return $this; } - $this->_countRows ++; + $this->_countRows++; $i = 0; foreach ($this->_parseFieldNames as $field) { 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 b2fd8ad78a8..b9e1541b59d 100644 --- a/app/code/core/Mage/Directory/Model/Currency/Import/Currencyconverterapi.php +++ b/app/code/core/Mage/Directory/Model/Currency/Import/Currencyconverterapi.php @@ -117,7 +117,7 @@ protected function _convertBatch(array $data, $currencyFrom, array $currenciesTo $this->_url ); - $timeLimitCalculated = 2 * (int) Mage::getStoreConfig(self::XML_PATH_CURRENCY_CONVERTER_TIMEOUT) + $timeLimitCalculated = 2 * Mage::getStoreConfigAsInt(self::XML_PATH_CURRENCY_CONVERTER_TIMEOUT) + (int) ini_get('max_execution_time'); @set_time_limit($timeLimitCalculated); 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 54498d0b906..0b6aa44c81e 100644 --- a/app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php +++ b/app/code/core/Mage/Directory/Model/Currency/Import/Fixerio.php @@ -116,7 +116,7 @@ protected function _convertBatch(array $data, $currencyFrom, array $currenciesTo $this->_url ); - $timeLimitCalculated = 2 * (int) Mage::getStoreConfig(self::XML_PATH_FIXERIO_TIMEOUT) + $timeLimitCalculated = 2 * Mage::getStoreConfigAsInt(self::XML_PATH_FIXERIO_TIMEOUT) + (int) ini_get('max_execution_time'); @set_time_limit($timeLimitCalculated); diff --git a/app/code/core/Mage/Eav/Model/Entity/Setup.php b/app/code/core/Mage/Eav/Model/Entity/Setup.php index b8fe9e610d6..61fadb6db13 100644 --- a/app/code/core/Mage/Eav/Model/Entity/Setup.php +++ b/app/code/core/Mage/Eav/Model/Entity/Setup.php @@ -1239,6 +1239,10 @@ public function installEntities($entities = null) /****************************** CREATE ENTITY TABLES ***********************************/ /** + * @deprecated Missing unique indexes. To create custom EAV tables, refer to the core: + * @see app/code/core/Mage/Catalog/sql/catalog_setup/install-1.6.0.0.php + * @see app/code/core/Mage/Customer/sql/customer_setup/install-1.6.0.0.php + * * Create entity tables * * @param string $baseTableName diff --git a/app/code/core/Mage/GiftMessage/Block/Message/Inline.php b/app/code/core/Mage/GiftMessage/Block/Message/Inline.php index d8a54d93e56..0cd35b98b33 100644 --- a/app/code/core/Mage/GiftMessage/Block/Message/Inline.php +++ b/app/code/core/Mage/GiftMessage/Block/Message/Inline.php @@ -242,7 +242,10 @@ public function getEntityHasMessage() */ public function getEscaped($value, $defaultValue = '') { - return $this->escapeHtml(trim($value) != '' ? $value : $defaultValue); + if ($value === null || strlen($value) == 0) { + return $defaultValue; + } + return $this->escapeHtml(trim($value)); } /** diff --git a/app/code/core/Mage/ImportExport/Helper/Data.php b/app/code/core/Mage/ImportExport/Helper/Data.php index a907e10f86e..33d499afc26 100644 --- a/app/code/core/Mage/ImportExport/Helper/Data.php +++ b/app/code/core/Mage/ImportExport/Helper/Data.php @@ -57,7 +57,7 @@ public function getLocalValidPaths() */ public function getBunchSize() { - return (int)Mage::getStoreConfig(self::XML_PATH_BUNCH_SIZE); + return Mage::getStoreConfigAsInt(self::XML_PATH_BUNCH_SIZE); } /** @@ -67,6 +67,6 @@ public function getBunchSize() */ public function getImportConfigurablePageSize() { - return (int)Mage::getStoreConfig(self::XML_PATH_IMPORT_CONFIGURABLE_PAGE_SIZE); + return Mage::getStoreConfigAsInt(self::XML_PATH_IMPORT_CONFIGURABLE_PAGE_SIZE); } } diff --git a/app/code/core/Mage/ImportExport/Model/Export/Entity/Abstract.php b/app/code/core/Mage/ImportExport/Model/Export/Entity/Abstract.php index 3dcab2df5cd..836024dc8b0 100644 --- a/app/code/core/Mage/ImportExport/Model/Export/Entity/Abstract.php +++ b/app/code/core/Mage/ImportExport/Model/Export/Entity/Abstract.php @@ -323,7 +323,7 @@ public function addRowError($errorCode, $errorRowNum) { $this->_errors[$errorCode][] = $errorRowNum + 1; // one added for human readability $this->_invalidRows[$errorRowNum] = true; - $this->_errorsCount ++; + $this->_errorsCount++; return $this; } diff --git a/app/code/core/Mage/ImportExport/Model/Import/Entity/Abstract.php b/app/code/core/Mage/ImportExport/Model/Import/Entity/Abstract.php index dd66d2fef40..eb5594e1136 100644 --- a/app/code/core/Mage/ImportExport/Model/Import/Entity/Abstract.php +++ b/app/code/core/Mage/ImportExport/Model/Import/Entity/Abstract.php @@ -314,7 +314,7 @@ public function addRowError($errorCode, $errorRowNum, $colName = null) { $this->_errors[$errorCode][] = [$errorRowNum + 1, $colName]; // one added for human readability $this->_invalidRows[$errorRowNum] = true; - $this->_errorsCount ++; + $this->_errorsCount++; return $this; } diff --git a/app/code/core/Mage/ImportExport/Model/Import/Entity/Customer.php b/app/code/core/Mage/ImportExport/Model/Import/Entity/Customer.php index c70cc7d7ca5..6c1771b734e 100644 --- a/app/code/core/Mage/ImportExport/Model/Import/Entity/Customer.php +++ b/app/code/core/Mage/ImportExport/Model/Import/Entity/Customer.php @@ -595,7 +595,7 @@ public function validateRow(array $rowData, $rowNum) $rowScope = $this->getRowScope($rowData); if (self::SCOPE_DEFAULT == $rowScope) { - $this->_processedEntitiesCount ++; + $this->_processedEntitiesCount++; } $email = $rowData[self::COL_EMAIL]; 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 0b0985389a5..aabb90c326e 100644 --- a/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php +++ b/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php @@ -2101,7 +2101,7 @@ public function validateRow(array $rowData, $rowNum) $this->_validate($rowData, $rowNum, $sku); if (self::SCOPE_DEFAULT == $rowScope) { // SKU is specified, row is SCOPE_DEFAULT, new product block begins - $this->_processedEntitiesCount ++; + $this->_processedEntitiesCount++; $sku = $rowData[self::COL_SKU]; diff --git a/app/code/core/Mage/ImportExport/Model/Resource/Helper/Mysql4.php b/app/code/core/Mage/ImportExport/Model/Resource/Helper/Mysql4.php index c79acbe0518..b0be1fcf692 100644 --- a/app/code/core/Mage/ImportExport/Model/Resource/Helper/Mysql4.php +++ b/app/code/core/Mage/ImportExport/Model/Resource/Helper/Mysql4.php @@ -27,6 +27,13 @@ class Mage_ImportExport_Model_Resource_Helper_Mysql4 extends Mage_Core_Model_Res public const DB_MAX_PACKET_SIZE = 1048576; // Maximal packet length by default in MySQL public const DB_MAX_PACKET_COEFFICIENT = 0.85; // The coefficient of useful data from maximum packet length + /** + * Semaphore to disable schema stats only once + * + * @var bool + */ + private static $instantInformationSchemaStatsExpiry = false; + /** * Returns maximum size of packet, that we can send to DB * @@ -49,11 +56,25 @@ public function getMaxDataSize() public function getNextAutoincrement($tableName) { $adapter = $this->_getReadAdapter(); + $this->setInformationSchemaStatsExpiry(); $entityStatus = $adapter->showTableStatus($tableName); - if (empty($entityStatus['Auto_increment'])) { Mage::throwException(Mage::helper('importexport')->__('Cannot get autoincrement value')); } return $entityStatus['Auto_increment']; } + + /** + * Set information_schema_stats_expiry to 0 if not already set. + */ + public function setInformationSchemaStatsExpiry(): void + { + if (!self::$instantInformationSchemaStatsExpiry) { + try { + $this->_getReadAdapter()->query('SET information_schema_stats_expiry = 0;'); + } catch (Exception $e) { + } + self::$instantInformationSchemaStatsExpiry = true; + } + } } diff --git a/app/code/core/Mage/Install/Block/Begin.php b/app/code/core/Mage/Install/Block/Begin.php index 73d9c23186a..a9e8c8d30c6 100644 --- a/app/code/core/Mage/Install/Block/Begin.php +++ b/app/code/core/Mage/Install/Block/Begin.php @@ -55,6 +55,6 @@ public function getPostUrl() */ public function getLicenseHtml() { - return file_get_contents(BP . DS . (string)Mage::getConfig()->getNode('install/eula_file')); + return nl2br(file_get_contents(BP . DS . (string)Mage::getConfig()->getNode('install/eula_file'))); } } diff --git a/app/code/core/Mage/Install/etc/config.xml b/app/code/core/Mage/Install/etc/config.xml index 8530388ff76..b0de4dcd4c1 100644 --- a/app/code/core/Mage/Install/etc/config.xml +++ b/app/code/core/Mage/Install/etc/config.xml @@ -140,6 +140,6 @@ - LICENSE.html + LICENSE.txt diff --git a/app/code/core/Mage/Log/Helper/Data.php b/app/code/core/Mage/Log/Helper/Data.php index ca1144def1d..263f75a22c9 100644 --- a/app/code/core/Mage/Log/Helper/Data.php +++ b/app/code/core/Mage/Log/Helper/Data.php @@ -41,7 +41,7 @@ class Mage_Log_Helper_Data extends Mage_Core_Helper_Abstract */ public function __construct(array $data = []) { - $this->_logLevel = $data['log_level'] ?? (int) Mage::getStoreConfig(self::XML_PATH_LOG_ENABLED); + $this->_logLevel = $data['log_level'] ?? Mage::getStoreConfigAsInt(self::XML_PATH_LOG_ENABLED); } /** diff --git a/app/code/core/Mage/Log/Model/Log.php b/app/code/core/Mage/Log/Model/Log.php index 1c9b2115c11..fb4b0c2d6ed 100644 --- a/app/code/core/Mage/Log/Model/Log.php +++ b/app/code/core/Mage/Log/Model/Log.php @@ -50,7 +50,7 @@ protected function _construct() */ public function getLogCleanTime() { - return (int)Mage::getStoreConfig(self::XML_LOG_CLEAN_DAYS) * 60 * 60 * 24; + return Mage::getStoreConfigAsInt(self::XML_LOG_CLEAN_DAYS) * 60 * 60 * 24; } /** diff --git a/app/code/core/Mage/Log/Model/Visitor/Online.php b/app/code/core/Mage/Log/Model/Visitor/Online.php index 7e404476a92..366fabe4c79 100644 --- a/app/code/core/Mage/Log/Model/Visitor/Online.php +++ b/app/code/core/Mage/Log/Model/Visitor/Online.php @@ -98,7 +98,7 @@ public function getUpdateFrequency() */ public function getOnlineInterval() { - $value = (int) Mage::getStoreConfig(self::XML_PATH_ONLINE_INTERVAL); + $value = Mage::getStoreConfigAsInt(self::XML_PATH_ONLINE_INTERVAL); if (!$value) { $value = Mage_Log_Model_Visitor::DEFAULT_ONLINE_MINUTES_INTERVAL; } diff --git a/app/code/core/Mage/Oauth/Block/Authorize/Abstract.php b/app/code/core/Mage/Oauth/Block/Authorize/Abstract.php index 60496383ed9..3bf418cbb10 100644 --- a/app/code/core/Mage/Oauth/Block/Authorize/Abstract.php +++ b/app/code/core/Mage/Oauth/Block/Authorize/Abstract.php @@ -25,7 +25,7 @@ * @method Mage_Oauth_Block_Authorize_Button setIsSimple(bool $flag) * @method bool getHasException() * @method Mage_Oauth_Block_AuthorizeBaseAbstract setHasException(bool $flag) - * @method bool getVerifier() + * @method null|string getVerifier() * @method Mage_Oauth_Block_AuthorizeBaseAbstract setVerifier(string $verifier) * @method bool getIsLogged() * @method Mage_Oauth_Block_AuthorizeBaseAbstract setIsLogged(bool $flag) diff --git a/app/code/core/Mage/Oauth/Helper/Data.php b/app/code/core/Mage/Oauth/Helper/Data.php index a25c44c328f..fc471c1b9b7 100644 --- a/app/code/core/Mage/Oauth/Helper/Data.php +++ b/app/code/core/Mage/Oauth/Helper/Data.php @@ -197,7 +197,7 @@ public function getProtocolEndpointUrl($type) public function isCleanupProbability() { // Safe get cleanup probability value from system configuration - $configValue = (int) Mage::getStoreConfig(self::XML_PATH_CLEANUP_PROBABILITY); + $configValue = Mage::getStoreConfigAsInt(self::XML_PATH_CLEANUP_PROBABILITY); return $configValue > 0 ? mt_rand(1, $configValue) == 1 : false; } @@ -208,7 +208,7 @@ public function isCleanupProbability() */ public function getCleanupExpirationPeriod() { - $minutes = (int) Mage::getStoreConfig(self::XML_PATH_CLEANUP_EXPIRATION_PERIOD); + $minutes = Mage::getStoreConfigAsInt(self::XML_PATH_CLEANUP_EXPIRATION_PERIOD); return $minutes > 0 ? $minutes : self::CLEANUP_EXPIRATION_PERIOD_DEFAULT; } diff --git a/app/code/core/Mage/Oauth/Model/Server.php b/app/code/core/Mage/Oauth/Model/Server.php index 3b67dcc249a..9a6a6d8edad 100644 --- a/app/code/core/Mage/Oauth/Model/Server.php +++ b/app/code/core/Mage/Oauth/Model/Server.php @@ -397,7 +397,7 @@ protected function _saveToken() { if (self::REQUEST_INITIATE == $this->_requestType) { if (self::CALLBACK_ESTABLISHED == $this->_protocolParams['oauth_callback'] - && $this->_consumer->getCallBackUrl() + && $this->_consumer->getCallbackUrl() ) { $callbackUrl = $this->_consumer->getCallbackUrl(); } else { diff --git a/app/code/core/Mage/Persistent/Helper/Data.php b/app/code/core/Mage/Persistent/Helper/Data.php index ae2a7294262..f866ddeb953 100644 --- a/app/code/core/Mage/Persistent/Helper/Data.php +++ b/app/code/core/Mage/Persistent/Helper/Data.php @@ -92,7 +92,7 @@ public function isShoppingCartPersist($store = null) */ public function getLifeTime($store = null) { - $lifeTime = (int) Mage::getStoreConfig(self::XML_PATH_LIFE_TIME, $store); + $lifeTime = Mage::getStoreConfigAsInt(self::XML_PATH_LIFE_TIME, $store); return ($lifeTime < 0) ? 0 : $lifeTime; } diff --git a/app/code/core/Mage/Reports/Model/Resource/Product/Lowstock/Collection.php b/app/code/core/Mage/Reports/Model/Resource/Product/Lowstock/Collection.php index fe64bf6c872..78e835754b2 100644 --- a/app/code/core/Mage/Reports/Model/Resource/Product/Lowstock/Collection.php +++ b/app/code/core/Mage/Reports/Model/Resource/Product/Lowstock/Collection.php @@ -204,7 +204,7 @@ public function useManageStockFilter($storeId = null) $this->joinInventoryItem(); $manageStockExpr = $this->getConnection()->getCheckSql( $this->_getInventoryItemField('use_config_manage_stock') . ' = 1', - (int) Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK, $storeId), + Mage::getStoreConfigAsInt(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK, $storeId), $this->_getInventoryItemField('manage_stock') ); $this->getSelect()->where($manageStockExpr . ' = ?', 1); @@ -222,7 +222,7 @@ public function useNotifyStockQtyFilter($storeId = null) $this->joinInventoryItem(['qty']); $notifyStockExpr = $this->getConnection()->getCheckSql( $this->_getInventoryItemField('use_config_notify_stock_qty') . ' = 1', - (int)Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_NOTIFY_STOCK_QTY, $storeId), + Mage::getStoreConfigAsInt(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_NOTIFY_STOCK_QTY, $storeId), $this->_getInventoryItemField('notify_stock_qty') ); $this->getSelect()->where('qty < ?', $notifyStockExpr); diff --git a/app/code/core/Mage/Rss/Block/Catalog/NotifyStock.php b/app/code/core/Mage/Rss/Block/Catalog/NotifyStock.php index fc74f26284c..406d08ec2cc 100644 --- a/app/code/core/Mage/Rss/Block/Catalog/NotifyStock.php +++ b/app/code/core/Mage/Rss/Block/Catalog/NotifyStock.php @@ -57,7 +57,7 @@ protected function _toHtml() ]; $rssObj->_addHeader($data); - $globalNotifyStockQty = (float) Mage::getStoreConfig( + $globalNotifyStockQty = Mage::getStoreConfigAsFloat( Mage_CatalogInventory_Model_Stock_Item::XML_PATH_NOTIFY_STOCK_QTY ); Mage::helper('rss')->disableFlat(); 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 abe54936588..f0678503fed 100644 --- a/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php +++ b/app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php @@ -444,6 +444,7 @@ protected function insertOrder(&$page, $obj, $putOrderId = true) $tracks = []; if ($shipment) { + /** @var Mage_Sales_Model_Order_Shipment $shipment */ $tracks = $shipment->getAllTracks(); } if (count($tracks)) { @@ -474,7 +475,7 @@ protected function insertOrder(&$page, $obj, $putOrderId = true) $truncatedTitle = substr($track->getTitle(), 0, $maxTitleLen) . $endOfTitle; //$page->drawText($truncatedCarrierTitle, 285, $yShipments , 'UTF-8'); $page->drawText($truncatedTitle, 292, $yShipments, 'UTF-8'); - $page->drawText($track->getNumber(), 410, $yShipments, 'UTF-8'); + $page->drawText($track->getNumber() ?? '', 410, $yShipments, 'UTF-8'); $yShipments -= $topMargin - 5; } } else { diff --git a/app/code/core/Mage/SalesRule/Helper/Coupon.php b/app/code/core/Mage/SalesRule/Helper/Coupon.php index 6b649145502..1cc6858dd6a 100644 --- a/app/code/core/Mage/SalesRule/Helper/Coupon.php +++ b/app/code/core/Mage/SalesRule/Helper/Coupon.php @@ -71,7 +71,7 @@ public function getFormatsList() */ public function getDefaultLength() { - return (int)Mage::getStoreConfig(self::XML_PATH_SALES_RULE_COUPON_LENGTH); + return Mage::getStoreConfigAsInt(self::XML_PATH_SALES_RULE_COUPON_LENGTH); } /** @@ -111,7 +111,7 @@ public function getDefaultSuffix() */ public function getDefaultDashInterval() { - return (int)Mage::getStoreConfig(self::XML_PATH_SALES_RULE_COUPON_DASH_INTERVAL); + return Mage::getStoreConfigAsInt(self::XML_PATH_SALES_RULE_COUPON_DASH_INTERVAL); } /** diff --git a/app/code/core/Mage/SalesRule/Model/Resource/Rule/Collection.php b/app/code/core/Mage/SalesRule/Model/Resource/Rule/Collection.php index 7abc17df476..04f17f7e582 100644 --- a/app/code/core/Mage/SalesRule/Model/Resource/Rule/Collection.php +++ b/app/code/core/Mage/SalesRule/Model/Resource/Rule/Collection.php @@ -72,7 +72,7 @@ public function setValidationFilter($websiteId, $customerGroupId, $couponCode = $select = $this->getSelect(); $connection = $this->getConnection(); - if (strlen($couponCode)) { + if ($couponCode !== null && strlen($couponCode)) { $select->joinLeft( ['rule_coupons' => $this->getTable('salesrule/coupon')], $connection->quoteInto( diff --git a/app/code/core/Mage/Sendfriend/Helper/Data.php b/app/code/core/Mage/Sendfriend/Helper/Data.php index dca37362eaa..096cd7829e2 100644 --- a/app/code/core/Mage/Sendfriend/Helper/Data.php +++ b/app/code/core/Mage/Sendfriend/Helper/Data.php @@ -65,7 +65,7 @@ public function isAllowForGuest($store = null) */ public function getMaxRecipients($store = null) { - return (int)Mage::getStoreConfig(self::XML_PATH_MAX_RECIPIENTS, $store); + return Mage::getStoreConfigAsInt(self::XML_PATH_MAX_RECIPIENTS, $store); } /** @@ -76,7 +76,7 @@ public function getMaxRecipients($store = null) */ public function getMaxEmailPerPeriod($store = null) { - return (int)Mage::getStoreConfig(self::XML_PATH_MAX_PER_HOUR, $store); + return Mage::getStoreConfigAsInt(self::XML_PATH_MAX_PER_HOUR, $store); } /** @@ -97,7 +97,7 @@ public function getPeriod() */ public function getLimitBy($store = null) { - return (int)Mage::getStoreConfig(self::XML_PATH_LIMIT_BY, $store); + return Mage::getStoreConfigAsInt(self::XML_PATH_LIMIT_BY, $store); } /** diff --git a/app/code/core/Mage/Tax/Helper/Data.php b/app/code/core/Mage/Tax/Helper/Data.php index 642c969458f..82012c90f7e 100644 --- a/app/code/core/Mage/Tax/Helper/Data.php +++ b/app/code/core/Mage/Tax/Helper/Data.php @@ -928,7 +928,7 @@ public function getTaxBasedOn($store = null) */ public function applyTaxOnCustomPrice($store = null) { - return ((int)Mage::getStoreConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_APPLY_ON, $store) == 0); + return (Mage::getStoreConfigAsInt(Mage_Tax_Model_Config::CONFIG_XML_PATH_APPLY_ON, $store) == 0); } /** @@ -939,7 +939,7 @@ public function applyTaxOnCustomPrice($store = null) */ public function applyTaxOnOriginalPrice($store = null) { - return ((int)Mage::getStoreConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_APPLY_ON, $store) == 1); + return (Mage::getStoreConfigAsInt(Mage_Tax_Model_Config::CONFIG_XML_PATH_APPLY_ON, $store) == 1); } /** 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 f51ae8a2348..f8e83f80c7a 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 @@ -258,7 +258,7 @@ public function addSenderInfo(SimpleXMLElement $sender) $phoneNumber = implode(' ', array_filter([(string)$sender->Contact->PhoneNumber, (string)$sender->Contact->PhoneExtension])); - $phoneNumber = $phoneNumber ? "Phone: " . $phoneNumber : null; + $phoneNumber = $phoneNumber ? "Phone: " . $phoneNumber : ''; $pageY = $this->_drawSenderAddress($sender->AddressLine, $phoneNumber); $divisionCode = (string)(strlen($sender->DivisionCode) ? $sender->DivisionCode . ' ' : null); diff --git a/app/design/frontend/base/default/template/oauth/authorize/button-simple.phtml b/app/design/frontend/base/default/template/oauth/authorize/button-simple.phtml index 88b95aaf2a1..d8e3bacbadc 100644 --- a/app/design/frontend/base/default/template/oauth/authorize/button-simple.phtml +++ b/app/design/frontend/base/default/template/oauth/authorize/button-simple.phtml @@ -17,7 +17,7 @@ /** * "Grant Access" button * - * @var $this Mage_Oauth_Block_Authorize_ButtonBaseAbstract + * @var Mage_Oauth_Block_Authorize_ButtonBaseAbstract $this */ $logo = $this->getSkinUrl('images/logo-large.gif', ['_area' => 'adminhtml', '_package' => 'default']); ?> diff --git a/app/design/frontend/base/default/template/oauth/authorize/button.phtml b/app/design/frontend/base/default/template/oauth/authorize/button.phtml index d52ce2dc13d..cb95dee4474 100644 --- a/app/design/frontend/base/default/template/oauth/authorize/button.phtml +++ b/app/design/frontend/base/default/template/oauth/authorize/button.phtml @@ -15,7 +15,7 @@ /** * "Grant Access" button * - * @var $this Mage_Oauth_Block_Authorize_Button + * @var Mage_Oauth_Block_Authorize_Button $this */ ?>
diff --git a/app/design/frontend/base/default/template/oauth/authorize/confirm-simple.phtml b/app/design/frontend/base/default/template/oauth/authorize/confirm-simple.phtml index ce3a13386f6..dfe18d794ff 100644 --- a/app/design/frontend/base/default/template/oauth/authorize/confirm-simple.phtml +++ b/app/design/frontend/base/default/template/oauth/authorize/confirm-simple.phtml @@ -16,7 +16,7 @@ /** * Authorize confirmation simple template * - * @var $this Mage_Oauth_Block_AuthorizeBaseAbstract + * @var Mage_Oauth_Block_AuthorizeBaseAbstract $this */ ?>