Skip to content

Commit b2a65ae

Browse files
authored
Merge pull request #2818 from magento-mpi/mpi-PR-0907
[MPI]-bugfix0907
2 parents 9d74001 + 1022527 commit b2a65ae

File tree

14 files changed

+613
-255
lines changed

14 files changed

+613
-255
lines changed

app/code/Magento/Catalog/Model/ResourceModel/Product/Gallery.php

Lines changed: 58 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -160,63 +160,74 @@ protected function createBaseLoadSelect($entityId, $storeId, $attributeId)
160160
public function createBatchBaseSelect($storeId, $attributeId)
161161
{
162162
$linkField = $this->metadata->getLinkField();
163+
$conn = $this->getConnection();
163164

164-
$positionCheckSql = $this->getConnection()->getCheckSql(
165+
$positionCheckSql = $conn->getCheckSql(
165166
'value.position IS NULL',
166167
'default_value.position',
167168
'value.position'
168169
);
169170

170171
$mainTableAlias = $this->getMainTableAlias();
171172

172-
$select = $this->getConnection()->select()->from(
173-
[$mainTableAlias => $this->getMainTable()],
174-
[
175-
'value_id',
176-
'file' => 'value',
177-
'media_type'
178-
]
179-
)->joinInner(
180-
['entity' => $this->getTable(self::GALLERY_VALUE_TO_ENTITY_TABLE)],
181-
$mainTableAlias . '.value_id = entity.value_id',
182-
[$linkField]
183-
)->joinLeft(
184-
['value' => $this->getTable(self::GALLERY_VALUE_TABLE)],
185-
implode(
186-
' AND ',
187-
[
188-
$mainTableAlias . '.value_id = value.value_id',
189-
$this->getConnection()->quoteInto('value.store_id = ?', (int)$storeId),
190-
'value.' . $linkField . ' = entity.' . $linkField,
191-
]
192-
),
193-
[]
194-
)->joinLeft(
195-
['default_value' => $this->getTable(self::GALLERY_VALUE_TABLE)],
196-
implode(
197-
' AND ',
173+
$storeCondition = $conn->quoteInto('value.store_id = ?', (int)$storeId);
174+
$defStoreCondition = $conn->quoteInto('default_value.store_id = ?', Store::DEFAULT_STORE_ID);
175+
$select = $conn->select()
176+
->from(
177+
[$mainTableAlias => $this->getMainTable()],
198178
[
199-
$mainTableAlias . '.value_id = default_value.value_id',
200-
$this->getConnection()->quoteInto('default_value.store_id = ?', Store::DEFAULT_STORE_ID),
201-
'default_value.' . $linkField . ' = entity.' . $linkField,
179+
'value_id',
180+
'file' => 'value',
181+
'media_type'
202182
]
203-
),
204-
[]
205-
)->columns([
206-
'label' => $this->getConnection()->getIfNullSql('`value`.`label`', '`default_value`.`label`'),
207-
'position' => $this->getConnection()->getIfNullSql('`value`.`position`', '`default_value`.`position`'),
208-
'disabled' => $this->getConnection()->getIfNullSql('`value`.`disabled`', '`default_value`.`disabled`'),
209-
'label_default' => 'default_value.label',
210-
'position_default' => 'default_value.position',
211-
'disabled_default' => 'default_value.disabled'
212-
])->where(
213-
$mainTableAlias . '.attribute_id = ?',
214-
$attributeId
215-
)->where(
216-
$mainTableAlias . '.disabled = 0'
217-
)->order(
218-
$positionCheckSql . ' ' . \Magento\Framework\DB\Select::SQL_ASC
219-
);
183+
)
184+
->joinInner(
185+
['entity' => $this->getTable(self::GALLERY_VALUE_TO_ENTITY_TABLE)],
186+
$mainTableAlias . '.value_id = entity.value_id',
187+
[$linkField]
188+
)
189+
->joinLeft(
190+
['value' => $this->getTable(self::GALLERY_VALUE_TABLE)],
191+
implode(
192+
' AND ',
193+
[
194+
$mainTableAlias . '.value_id = value.value_id',
195+
$storeCondition,
196+
'value.' . $linkField . ' = entity.' . $linkField,
197+
]
198+
),
199+
[]
200+
)
201+
->joinLeft(
202+
['default_value' => $this->getTable(self::GALLERY_VALUE_TABLE)],
203+
implode(
204+
' AND ',
205+
[
206+
$mainTableAlias . '.value_id = default_value.value_id',
207+
$defStoreCondition,
208+
'default_value.' . $linkField . ' = entity.' . $linkField,
209+
]
210+
),
211+
[]
212+
)
213+
->columns([
214+
'label' => $conn->getIfNullSql('`value`.`label`', '`default_value`.`label`'),
215+
'position' => $conn->getIfNullSql('`value`.`position`', '`default_value`.`position`'),
216+
'disabled' => $conn->getIfNullSql('`value`.`disabled`', '`default_value`.`disabled`'),
217+
'label_default' => 'default_value.label',
218+
'position_default' => 'default_value.position',
219+
'disabled_default' => 'default_value.disabled'
220+
])
221+
->where($mainTableAlias . '.attribute_id = ?', $attributeId)
222+
->where($mainTableAlias . '.disabled = 0');
223+
224+
// filter entities by store
225+
if ($storeId > 0) {
226+
$orWhere = $storeCondition . ' OR '. $defStoreCondition;
227+
$select->where($orWhere);
228+
}
229+
230+
$select->order($positionCheckSql . ' ' . \Magento\Framework\DB\Select::SQL_ASC);
220231

221232
return $select;
222233
}

0 commit comments

Comments
 (0)