Server IP : 85.193.89.191 / Your IP : 18.188.164.209 Web Server : Apache System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64 User : bitrix ( 600) PHP Version : 8.1.27 Disable Function : NONE MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/bitrix/www/bitrix/modules/catalog/lib/controller/ |
Upload File : |
<?php namespace Bitrix\Catalog\Controller; use Bitrix\Catalog\Access\AccessController; use Bitrix\Catalog\Access\ActionDictionary; use Bitrix\Catalog\StoreProductTable; use Bitrix\Catalog\StoreTable; use Bitrix\Main\Engine\Action; use Bitrix\Main\Engine\ActionFilter; use Bitrix\Main\Engine\JsonController; use Bitrix\Main\Error; class StoreSelector extends JsonController { private AccessController $accessController; /** * @inheritDoc */ protected function init() { parent::init(); $this->accessController = AccessController::getCurrent(); } protected function getDefaultPreFilters() { return array_merge( parent::getDefaultPreFilters(), [ new ActionFilter\HttpMethod([ActionFilter\HttpMethod::METHOD_POST]), new ActionFilter\Scope(ActionFilter\Scope::AJAX), ] ); } protected function processBeforeAction(Action $action) { if ( $this->accessController->check(ActionDictionary::ACTION_CATALOG_READ) || $this->accessController->check(ActionDictionary::ACTION_CATALOG_VIEW) ) { return parent::processBeforeAction($action); } $this->addError(new Error('Access denied')); return false; } /** * @param int $productId * @param array $options * @return array|null */ public function getProductStoresAction(int $productId): array { $iterator = \CIBlockElement::GetList( [], [ 'ID' => $productId, 'ACTIVE' => 'Y', 'ACTIVE_DATE' => 'Y', 'CHECK_PERMISSIONS' => 'Y', 'MIN_PERMISSION' => 'R', ], false, false, ['ID', 'IBLOCK_ID', 'TYPE'] ); $element = $iterator->Fetch(); if (!$element) { return []; } $filter = [ '=PRODUCT_ID' => $productId, ]; $accessFilter = $this->accessController->getEntityFilter( ActionDictionary::ACTION_STORE_VIEW, StoreProductTable::class ); if ($accessFilter) { $filter[] = $accessFilter; } $storeAmounts = StoreProductTable::getList([ 'filter' => $filter, 'select' => [ 'AMOUNT', 'QUANTITY_RESERVED', 'STORE_ID', 'STORE_TITLE' => 'STORE.TITLE' ] ]); return $storeAmounts->fetchAll(); } public function createStoreAction(string $name): ?array { if (!$this->accessController->check(ActionDictionary::ACTION_STORE_MODIFY)) { $this->addError(new Error('Access denied')); return null; } $result = StoreTable::add([ 'TITLE' => $name, 'ADDRESS' => $name, ]); if (!$result->isSuccess()) { $this->addErrors($result->getErrors()); return []; } return [ 'id' => $result->getId(), ]; } }