serializer = $serializer; } /** * @param int|null $storeId * @return array */ public function getDefaultSortingSearchPages(?int $storeId = null): array { $paths = [ self::DEFAULT_SORTING_SEARCH_PAGES_1, self::DEFAULT_SORTING_SEARCH_PAGES_2, self::DEFAULT_SORTING_SEARCH_PAGES_3 ]; return $this->getDefaultOrders($paths, $storeId); } /** * @param int|null $storeId * @return array */ public function getDefaultSortingCategoryPages(?int $storeId = null): array { $paths = [ self::DEFAULT_SORTING_CATEGORY_PAGES_1, self::DEFAULT_SORTING_CATEGORY_PAGES_2, self::DEFAULT_SORTING_CATEGORY_PAGES_3 ]; return $this->getDefaultOrders($paths, $storeId); } /** * @return array */ public function getSortOrder(): array { $value = $this->getValue(self::CONFIG_SORT_ORDER); if ($value) { $value = $this->serializer->unserialize($value); } if (!$value) { $value = []; } return $value; } private function getDefaultOrders(array $paths, ?int $storeId = null): array { $defaultOrders = []; foreach ($paths as $path) { $orderCode = $this->getValue( sprintf('%s/%s', self::DEFAULT_SORTING_SECTION, $path), $storeId ); if ($orderCode) { $defaultOrders[] = $orderCode; } } return $defaultOrders; } /** * @param null|int $storeId * @return string[] */ public function getDisabledMethods(?int $storeId = null): array { $disabledMethods = $this->getValue(self::DISABLED_METHODS_PATH, $storeId); if (empty($disabledMethods)) { $disabledMethods = []; } else { $disabledMethods = explode(',', $disabledMethods); } return $disabledMethods; } /** * @return string|null */ public function getGlobalSorting(): ?string { return $this->getValue(self::GLOBAL_SORTING_PATH); } /** * @return string */ public function getGlobalSortingDirection(): string { return (string) $this->getValue(self::GLOBAL_SORTING_DIRECTION_PATH); } public function getBestsellerAttributeCode(): string { return (string) $this->getValue(self::BESTSELLER_ATTRIBUTE_CODE_PATH); } public function getMostviewedAttributeCode(): ?string { return $this->getValue(self::MOSTVIEWED_ATTRIBUTE_CODE_PATH); } public function getNewAttributeCode(): ?string { return $this->getValue(self::NEW_ATTRIBUTE_CODE_PATH); } /** * @return string */ public function getRevenueAttributeCode(): string { return (string)$this->getValue(self::REVENUE_ATTRIBUTE_CODE_PATH); } /** * @return string */ public function getRevenueLabel(): string { return (string)$this->getValue(self::REVENUE_LABEL_PATH); } /** * @return int */ public function getRevenuePeriod(): int { return (int)$this->getValue(self::REVENUE_PERIOD_PATH); } /** * @return string */ public function getExcludedOrderStatusesForRevenue(): array { $excludedStatuses = (string)$this->getValue(self::REVENUE_EXCLUDE_PATH); return explode(',', $excludedStatuses); } /** * @return array */ public function getExcludedOrderStatusesForBestsellers(): array { $excludedStatuses = (string)$this->getValue(self::BESTSELLER_EXCLUDE_PATH); return explode(',', $excludedStatuses); } /** * @return int */ public function getBestsellersPeriod(): int { return (int)$this->getValue(self::BESTSELLER_PERIOD_PATH); } public function isNonImagesLastEnabled(?int $storeId): bool { return $this->isSetFlag(self::NON_IMAGES_LAST_ENABLED_PATH, $storeId); } public function isOutOfStockLastEnabled(?int $storeId): bool { return $this->isSetFlag(self::OUT_OF_STOCK_LAST_ENABLED_PATH, $storeId); } public function isOutOfStockByQty(?int $storeId): bool { return $this->isSetFlag(self::OUT_OF_STOCK_BY_QTY_PATH, $storeId); } public function getQtyOutStock(?int $storeId = null): int { return (int) $this->scopeConfig->getValue( Configuration::XML_PATH_MIN_QTY, ScopeInterface::SCOPE_STORE, $storeId ); } }