![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog/Model/Product/Attribute/Source/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Model\Product\Attribute\Source; use Magento\Eav\Model\Entity\Attribute\Source\AbstractSource; use Magento\Eav\Model\Entity\Attribute\Source\SourceInterface; use Magento\Framework\Data\OptionSourceInterface; /** * Product status functionality model * * @api * @since 100.0.2 */ class Status extends AbstractSource implements SourceInterface, OptionSourceInterface { /**#@+ * Product Status values */ const STATUS_ENABLED = 1; const STATUS_DISABLED = 2; /**#@-*/ /** * Retrieve Visible Status Ids * * @return int[] */ public function getVisibleStatusIds() { return [self::STATUS_ENABLED]; } /** * Retrieve Saleable Status Ids, default Product Enable status * * @return int[] */ public function getSaleableStatusIds() { return [self::STATUS_ENABLED]; } /** * Retrieve option array * * @return string[] * phpcs:disable Magento2.Functions.StaticFunction */ public static function getOptionArray() { return [self::STATUS_ENABLED => __('Enabled'), self::STATUS_DISABLED => __('Disabled')]; } /** * Retrieve option array with empty value * * @return string[] */ public function getAllOptions() { $result = []; foreach (self::getOptionArray() as $index => $value) { $result[] = ['value' => $index, 'label' => $value]; } return $result; } /** * Retrieve option text by option value * * @param string $optionId * @return string */ public function getOptionText($optionId) { $options = self::getOptionArray(); return $options[$optionId] ?? null; } /** * Add Value Sort To Collection Select * * @param \Magento\Eav\Model\Entity\Collection\AbstractCollection $collection * @param string $dir direction * @return AbstractSource */ public function addValueSortToCollection($collection, $dir = 'asc') { $attributeCode = $this->getAttribute()->getAttributeCode(); $attributeId = $this->getAttribute()->getId(); $attributeTable = $this->getAttribute()->getBackend()->getTable(); $linkField = $this->getAttribute()->getEntity()->getLinkField(); if ($this->getAttribute()->isScopeGlobal()) { $tableName = $attributeCode . '_t'; $collection->getSelect()->joinLeft( [$tableName => $attributeTable], "e.{$linkField}={$tableName}.{$linkField}" . " AND {$tableName}.attribute_id='{$attributeId}'" . " AND {$tableName}.store_id='0'", [] ); $valueExpr = $tableName . '.value'; } else { $valueTable1 = $attributeCode . '_t1'; $valueTable2 = $attributeCode . '_t2'; $collection->getSelect()->joinLeft( [$valueTable1 => $attributeTable], "e.{$linkField}={$valueTable1}.{$linkField}" . " AND {$valueTable1}.attribute_id='{$attributeId}'" . " AND {$valueTable1}.store_id='0'", [] )->joinLeft( [$valueTable2 => $attributeTable], "e.{$linkField}={$valueTable2}.{$linkField}" . " AND {$valueTable2}.attribute_id='{$attributeId}'" . " AND {$valueTable2}.store_id='{$collection->getStoreId()}'", [] ); $valueExpr = $collection->getConnection()->getCheckSql( $valueTable2 . '.value_id > 0', $valueTable2 . '.value', $valueTable1 . '.value' ); } $collection->getSelect()->order($valueExpr . ' ' . $dir); return $this; } }