Skip to content

Commit 5bc4bfe

Browse files
authored
MAGETWO-65414: [GitHub][PR] Validate PHP classnames in di.xml files via schema #8743
2 parents f5b9a4c + 19b8e98 commit 5bc4bfe

File tree

82 files changed

+353
-181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+353
-181
lines changed

app/code/Magento/Captcha/etc/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@
3838
</arguments>
3939
</type>
4040
<type name="Magento\Checkout\Block\Cart\Sidebar">
41-
<plugin name="login_captcha" type="\Magento\Captcha\Model\Cart\ConfigPlugin" sortOrder="50" />
41+
<plugin name="login_captcha" type="Magento\Captcha\Model\Cart\ConfigPlugin" sortOrder="50" />
4242
</type>
4343
</config>

app/code/Magento/Catalog/Setup/UpgradeData.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public function __construct(CategorySetupFactory $categorySetupFactory, EavSetup
4949
/**
5050
* {@inheritdoc}
5151
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
52+
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
53+
* @SuppressWarnings(PHPMD.NPathComplexity)
5254
*/
5355
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
5456
{
@@ -360,9 +362,36 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
360362
$this->changePriceAttributeDefaultScope($categorySetup);
361363
}
362364

365+
if (version_compare($context->getVersion(), '2.1.5') < 0) {
366+
$this->dissallowUsingHtmlForProductName($setup);
367+
}
368+
363369
$setup->endSetup();
364370
}
365371

372+
/**
373+
* Set to 'No' 'Is Allowed Html on Store Front' option on product name attribute, because product name
374+
* is multi entity field (used in order, quote) and cannot be conditionally escaped in all places
375+
*
376+
* @param ModuleDataSetupInterface $categorySetup
377+
* @return void
378+
*/
379+
private function dissallowUsingHtmlForProductName(ModuleDataSetupInterface $setup)
380+
{
381+
/** @var CategorySetup $categorySetup */
382+
$categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
383+
$entityTypeId = $categorySetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
384+
$attribute = $categorySetup->getAttribute($entityTypeId, 'name');
385+
386+
$setup->getConnection()
387+
->update(
388+
$setup->getTable('catalog_eav_attribute'),
389+
['is_html_allowed_on_front' => 0],
390+
$setup->getConnection()->quoteInto('attribute_id = ?', $attribute['attribute_id'])
391+
);
392+
393+
}
394+
366395
/**
367396
* @param \Magento\Catalog\Setup\CategorySetup $categorySetup
368397
* @return void

app/code/Magento/Catalog/etc/di.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@
402402
</arguments>
403403
</type>
404404
<type name="Magento\CatalogInventory\Model\Config\Backend\ShowOutOfStock">
405-
<plugin name="showOutOfStockValueChanged" type="\Magento\Catalog\Model\Plugin\ShowOutOfStockConfig"/>
405+
<plugin name="showOutOfStockValueChanged" type="Magento\Catalog\Model\Plugin\ShowOutOfStockConfig"/>
406406
</type>
407407
<virtualType name="Magento\Catalog\Block\Category\Widget\Link" type="Magento\Catalog\Block\Widget\Link">
408408
<arguments>
@@ -479,23 +479,23 @@
479479
<plugin name="productListingAttributesCaching" type="Magento\Catalog\Plugin\Model\ResourceModel\Config" />
480480
</type>
481481
<preference for="Magento\Catalog\Api\ProductLinkTypeListInterface" type="Magento\Catalog\Model\Product\LinkTypeProvider" />
482-
<preference for="Magento\Catalog\Api\Data\ProductLinkAttributeInterface" type="\Magento\Catalog\Model\ProductLink\Attribute" />
482+
<preference for="Magento\Catalog\Api\Data\ProductLinkAttributeInterface" type="Magento\Catalog\Model\ProductLink\Attribute" />
483483
<preference for="Magento\Catalog\Api\Data\ProductLinkTypeInterface" type="Magento\Catalog\Model\ProductLink\Type" />
484484
<preference for="Magento\Catalog\Api\ProductLinkManagementInterface" type="Magento\Catalog\Model\ProductLink\Management" />
485485
<preference for="Magento\Catalog\Api\Data\ProductLinkInterface" type="Magento\Catalog\Model\ProductLink\Link" />
486-
<preference for="\Magento\Catalog\Api\CategoryLinkManagementInterface" type="\Magento\Catalog\Model\CategoryLinkManagement" />
486+
<preference for="Magento\Catalog\Api\CategoryLinkManagementInterface" type="Magento\Catalog\Model\CategoryLinkManagement" />
487487
<preference for="Magento\Catalog\Api\Data\ProductWebsiteLinkInterface" type="Magento\Catalog\Model\ProductWebsiteLink" />
488488
<preference for="Magento\Catalog\Api\ProductWebsiteLinkRepositoryInterface" type="Magento\Catalog\Model\ProductWebsiteLinkRepository" />
489-
<preference for="\Magento\Catalog\Api\CategoryLinkRepositoryInterface" type="\Magento\Catalog\Model\CategoryLinkRepository" />
489+
<preference for="Magento\Catalog\Api\CategoryLinkRepositoryInterface" type="Magento\Catalog\Model\CategoryLinkRepository" />
490490
<preference for="Magento\Catalog\Api\Data\ProductCustomOptionInterface" type="Magento\Catalog\Model\Product\Option" />
491-
<preference for="Magento\Catalog\Api\ProductCustomOptionRepositoryInterface" type="\Magento\Catalog\Model\Product\Option\Repository" />
491+
<preference for="Magento\Catalog\Api\ProductCustomOptionRepositoryInterface" type="Magento\Catalog\Model\Product\Option\Repository" />
492492
<preference for="Magento\Catalog\Api\Data\ProductCustomOptionTypeInterface" type="Magento\Catalog\Model\Product\Option\Type" />
493-
<preference for="Magento\Catalog\Api\ProductTierPriceManagementInterface" type="\Magento\Catalog\Model\Product\TierPriceManagement" />
494-
<preference for="Magento\Catalog\Api\ScopedProductTierPriceManagementInterface" type="\Magento\Catalog\Model\Product\ScopedTierPriceManagement" />
493+
<preference for="Magento\Catalog\Api\ProductTierPriceManagementInterface" type="Magento\Catalog\Model\Product\TierPriceManagement" />
494+
<preference for="Magento\Catalog\Api\ScopedProductTierPriceManagementInterface" type="Magento\Catalog\Model\Product\ScopedTierPriceManagement" />
495495
<preference for="Magento\Catalog\Api\Data\ProductTierPriceInterface" type="Magento\Catalog\Model\Product\TierPrice" />
496496
<preference for="Magento\Catalog\Api\Data\CategoryProductLinkInterface" type="Magento\Catalog\Model\CategoryProductLink" />
497497
<preference for="Magento\Catalog\Api\ProductCustomOptionTypeListInterface" type="Magento\Catalog\Model\ProductOptions\TypeList" />
498-
<preference for="Magento\Catalog\Api\Data\ProductCustomOptionValuesInterface" type="\Magento\Catalog\Model\Product\Option\Value" />
498+
<preference for="Magento\Catalog\Api\Data\ProductCustomOptionValuesInterface" type="Magento\Catalog\Model\Product\Option\Value" />
499499
<preference for="Magento\Catalog\Api\Data\CustomOptionInterface" type="Magento\Catalog\Model\CustomOptions\CustomOption" />
500500
<preference for="Magento\Catalog\Api\Data\ProductOptionInterface" type="Magento\Catalog\Model\ProductOption" />
501501
<preference for="Magento\Catalog\Api\Data\CategoryLinkInterface" type="Magento\Catalog\Model\CategoryLink" />
@@ -848,7 +848,7 @@
848848
<argument name="collectionProcessor" xsi:type="object">Magento\Catalog\Model\Api\SearchCriteria\ProductCollectionProcessor</argument>
849849
</arguments>
850850
</type>
851-
<type name="\Magento\Catalog\Model\CategoryList">
851+
<type name="Magento\Catalog\Model\CategoryList">
852852
<arguments>
853853
<argument name="collectionProcessor" xsi:type="object">Magento\Eav\Model\Api\SearchCriteria\CollectionProcessor</argument>
854854
</arguments>

app/code/Magento/Catalog/etc/eav_attributes.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
<attribute code="price_type">
3030
<field code="is_searchable" locked="true" />
3131
</attribute>
32+
<attribute code="name">
33+
<field code="is_html_allowed_on_front" locked="true"/>
34+
</attribute>
3235
<attribute code="category_ids">
3336
<field code="is_global" locked="true" />
3437
<field code="is_searchable" locked="true" />

app/code/Magento/Catalog/etc/frontend/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
</argument>
5858
</arguments>
5959
</type>
60-
<type name="\Magento\Framework\Pricing\Render\PriceBox">
60+
<type name="Magento\Framework\Pricing\Render\PriceBox">
6161
<plugin name="catalog_price_box_key" type="Magento\Catalog\Block\Category\Plugin\PriceBoxTags" />
6262
</type>
6363
</config>

app/code/Magento/Catalog/etc/module.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
9-
<module name="Magento_Catalog" setup_version="2.1.4">
9+
<module name="Magento_Catalog" setup_version="2.1.5">
1010
<sequence>
1111
<module name="Magento_Eav"/>
1212
<module name="Magento_Cms"/>

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,12 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
409409
/**
410410
* Column names that holds images files names
411411
*
412+
* Note: the order of array items has a value in order to properly set 'position' value
413+
* of media gallery items.
414+
*
412415
* @var string[]
413416
*/
414-
protected $_imagesArrayKeys = ['_media_image', 'image', 'small_image', 'thumbnail', 'swatch_image'];
417+
protected $_imagesArrayKeys = ['image', 'small_image', 'thumbnail', 'swatch_image', '_media_image'];
415418

416419
/**
417420
* Permanent entity columns.
@@ -1626,8 +1629,14 @@ protected function _saveProducts()
16261629
);
16271630
}
16281631
$rowData[self::COL_MEDIA_IMAGE] = [];
1632+
1633+
/*
1634+
* Note: to avoid problems with undefined sorting, the value of media gallery items positions
1635+
* must be unique in scope of one product.
1636+
*/
1637+
$position = 0;
16291638
foreach ($rowImages as $column => $columnImages) {
1630-
foreach ($columnImages as $position => $columnImage) {
1639+
foreach ($columnImages as $columnImageKey => $columnImage) {
16311640
if (!isset($uploadedImages[$columnImage])) {
16321641
$uploadedFile = $this->uploadMediaFiles($columnImage, true);
16331642
if ($uploadedFile) {
@@ -1651,11 +1660,11 @@ protected function _saveProducts()
16511660

16521661
if ($uploadedFile && !isset($mediaGallery[$rowSku][$uploadedFile])) {
16531662
if (isset($existingImages[$rowSku][$uploadedFile])) {
1654-
if (isset($rowLabels[$column][$position])
1655-
&& $rowLabels[$column][$position] != $existingImages[$rowSku][$uploadedFile]['label']
1663+
if (isset($rowLabels[$column][$columnImageKey])
1664+
&& $rowLabels[$column][$columnImageKey] != $existingImages[$rowSku][$uploadedFile]['label']
16561665
) {
16571666
$labelsForUpdate[] = [
1658-
'label' => $rowLabels[$column][$position],
1667+
'label' => $rowLabels[$column][$columnImageKey],
16591668
'imageData' => $existingImages[$rowSku][$uploadedFile]
16601669
];
16611670
}
@@ -1665,8 +1674,8 @@ protected function _saveProducts()
16651674
}
16661675
$mediaGallery[$rowSku][$uploadedFile] = [
16671676
'attribute_id' => $this->getMediaGalleryAttributeId(),
1668-
'label' => isset($rowLabels[$column][$position]) ? $rowLabels[$column][$position] : '',
1669-
'position' => $position + 1,
1677+
'label' => isset($rowLabels[$column][$columnImageKey]) ? $rowLabels[$column][$columnImageKey] : '',
1678+
'position' => ++$position,
16701679
'disabled' => isset($disabledImages[$columnImage]) ? '1' : '0',
16711680
'value' => $uploadedFile,
16721681
];

app/code/Magento/CatalogImportExport/etc/di.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
99
<preference for="Magento\CatalogImportExport\Model\Export\RowCustomizerInterface" type="Magento\CatalogImportExport\Model\Export\RowCustomizer\Composite" />
1010
<type name="Magento\ImportExport\Model\Import">
11-
<plugin name="catalogProductFlatIndexerImport" type="\Magento\CatalogImportExport\Model\Indexer\Product\Flat\Plugin\Import" />
12-
<plugin name="invalidatePriceIndexerOnImport" type="\Magento\CatalogImportExport\Model\Indexer\Product\Price\Plugin\Import" />
13-
<plugin name="invalidateStockIndexerOnImport" type="\Magento\CatalogImportExport\Model\Indexer\Stock\Plugin\Import" />
14-
<plugin name="invalidateEavIndexerOnImport" type="\Magento\CatalogImportExport\Model\Indexer\Product\Eav\Plugin\Import" />
15-
<plugin name="invalidateProductCategoryIndexerOnImport" type="\Magento\CatalogImportExport\Model\Indexer\Product\Category\Plugin\Import" />
16-
<plugin name="invalidateCategoryProductIndexerOnImport" type="\Magento\CatalogImportExport\Model\Indexer\Category\Product\Plugin\Import" />
11+
<plugin name="catalogProductFlatIndexerImport" type="Magento\CatalogImportExport\Model\Indexer\Product\Flat\Plugin\Import" />
12+
<plugin name="invalidatePriceIndexerOnImport" type="Magento\CatalogImportExport\Model\Indexer\Product\Price\Plugin\Import" />
13+
<plugin name="invalidateStockIndexerOnImport" type="Magento\CatalogImportExport\Model\Indexer\Stock\Plugin\Import" />
14+
<plugin name="invalidateEavIndexerOnImport" type="Magento\CatalogImportExport\Model\Indexer\Product\Eav\Plugin\Import" />
15+
<plugin name="invalidateProductCategoryIndexerOnImport" type="Magento\CatalogImportExport\Model\Indexer\Product\Category\Plugin\Import" />
16+
<plugin name="invalidateCategoryProductIndexerOnImport" type="Magento\CatalogImportExport\Model\Indexer\Category\Product\Plugin\Import" />
1717
</type>
1818
<type name="Magento\CatalogImportExport\Model\Import\Product\Validator">
1919
<arguments>

app/code/Magento/CatalogInventory/etc/di.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030

3131
<preference for="Magento\CatalogInventory\Model\Spi\StockRegistryProviderInterface" type="Magento\CatalogInventory\Model\StockRegistryProvider" />
3232
<preference for="Magento\CatalogInventory\Model\Spi\StockStateProviderInterface" type="Magento\CatalogInventory\Model\StockStateProvider" />
33-
34-
<preference for="Magento\CatalogInventory\Model\ResourceModel\QtyCounterInterface" type="\Magento\CatalogInventory\Model\ResourceModel\Stock" />
33+
34+
<preference for="Magento\CatalogInventory\Model\ResourceModel\QtyCounterInterface" type="Magento\CatalogInventory\Model\ResourceModel\Stock" />
3535
<type name="Magento\Catalog\Model\Product\Attribute\Repository">
3636
<plugin name="filterCustomAttribute" type="Magento\CatalogInventory\Model\Plugin\FilterCustomAttribute" />
3737
</type>
@@ -58,7 +58,7 @@
5858
</arguments>
5959
</type>
6060
<type name="Magento\Store\Model\ResourceModel\Group">
61-
<plugin name="storeGroupResourceAroundBeforeSave" type="\Magento\CatalogInventory\Model\Indexer\Stock\Plugin\StoreGroup"/>
61+
<plugin name="storeGroupResourceAroundBeforeSave" type="Magento\CatalogInventory\Model\Indexer\Stock\Plugin\StoreGroup"/>
6262
</type>
6363
<type name="Magento\Catalog\Block\Product\View">
6464
<plugin name="quantityValidators" type="Magento\CatalogInventory\Block\Plugin\ProductView" />
@@ -69,7 +69,7 @@
6969
</arguments>
7070
</type>
7171
<type name="Magento\Catalog\Model\Product">
72-
<plugin name="catalogInventoryAfterLoad" type="\Magento\CatalogInventory\Model\Plugin\AfterProductLoad"/>
72+
<plugin name="catalogInventoryAfterLoad" type="Magento\CatalogInventory\Model\Plugin\AfterProductLoad"/>
7373
</type>
7474
<type name="Magento\Catalog\Api\ProductRepositoryInterface">
7575
<plugin name="catalogInventoryAroundSave" sortOrder="20" type="Magento\CatalogInventory\Model\Plugin\AroundProductRepositorySave"/>

app/code/Magento/CatalogInventoryConfigurableProduct/composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
"require": {
55
"php": "~5.6.5|7.0.2|7.0.4|~7.0.6",
66
"magento/module-catalog-inventory": "100.2.*",
7-
"magento/framework": "100.2.*",
7+
"magento/framework": "100.2.*"
8+
},
9+
"suggest": {
810
"magento/module-configurable-product": "100.2.*"
911
},
1012
"type": "magento2-module",

0 commit comments

Comments
 (0)