3namespace Bitrix\Catalog\Controller;
5use Bitrix\Catalog\Access\ActionDictionary;
6use Bitrix\Iblock\SectionTable;
7use Bitrix\Main\Application;
8use Bitrix\Main\DB\SqlQueryException;
9use Bitrix\Main\Engine\Response\DataType\Page;
11use Bitrix\Main\ORM\Data\DataManager;
12use Bitrix\Main\Result;
13use Bitrix\Main\UI\PageNavigation;
36 bool $__calculateTotalCount =
true
47 if (isset(
$filter[
'IBLOCK_SECTION_ID']))
50 unset(
$filter[
'IBLOCK_SECTION_ID']);
53 $r = \CIBlockSection::GetList(
58 self::getNavData($pageNavigation->
getOffset())
60 while (
$l = $r->fetch())
69 $__calculateTotalCount ? $this->getCount(
$filter) : 0);
73 $this->addErrors($r->getErrors());
85 $this->addErrors(
$result->getErrors());
90 $row = $this->
get($id);
110 if (isset(
$fields[
'IBLOCK_SECTION_ID']) && (
int)
$fields[
'IBLOCK_SECTION_ID'] > 0)
114 if (!$r->isSuccess())
116 $this->addErrors($r->getErrors());
126 $section = new \CIBlockSection();
132 $error = $section->getLastError();
136 $error =
'Internal error adding section. Try adding again.';
160 $this->addErrors($r->getErrors());
174 if (!$r->isSuccess())
176 $this->addErrors($r->getErrors());
181 if (isset(
$fields[
'IBLOCK_SECTION_ID']) && (
int)
$fields[
'IBLOCK_SECTION_ID'] > 0)
185 if (!$r->isSuccess())
187 $this->addErrors($r->getErrors());
197 $section = new \CIBlockSection();
202 $section->Update($id,
$fields);
203 $error = $section->getLastError();
207 $error =
'Internal error updating section. Try updating again.';
231 $this->addErrors($r->getErrors());
251 if (!\CIBlockSection::Delete($id))
253 if ($ex = self::getApplication()->GetException())
255 $r->addError(
new Error($ex->GetString(), $ex->GetId()));
259 $r->addError(
new Error(
'delete section error', 200700300020));
265 $r->addError(
new Error(
'Internal error deleting section. Try deleting again.', 200700300020));
284 $this->addErrors($r->getErrors());
311 protected function get($id)
313 return \CIBlockSection::GetByID($id)->Fetch();
327 $isCodeUnique = $this->isCodeUnique(
$fields);
329 if (!$isCodeUnique->isSuccess())
331 $r->addError($isCodeUnique->getErrors()[0]);
344 $isCodeUnique = $this->isCodeUnique(
$fields);
346 if (!$isCodeUnique->isSuccess())
348 $r->addError($isCodeUnique->getErrors()[0]);
361 if (isset(
$iblock[
'FIELDS'][
'SECTION_CODE'][
'DEFAULT_VALUE']))
364 $iblock[
'FIELDS'][
'SECTION_CODE'][
'DEFAULT_VALUE'][
'TRANSLITERATION'] ===
'Y'
365 &&
$iblock[
'FIELDS'][
'SECTION_CODE'][
'DEFAULT_VALUE'][
'UNIQUE'] ===
'Y'
369 '=IBLOCK_ID' =>
$fields[
'IBLOCK_ID'],
378 $existsResult = $this->existsByFilter(
$filter);
380 if ($existsResult->isSuccess())
382 $r->addError($this->getErrorDublicateFieldCode());
390 private function getErrorDublicateFieldCode():
Error
392 return new Error(
'Duplicate entry for key [code]', 200700300040);
402 return function() use (
$filter)
404 return \CIBlockSection::GetCount(
$filter);
419 !$this->accessController->check(ActionDictionary::ACTION_CATALOG_READ)
420 && !$this->accessController->check(ActionDictionary::ACTION_CATALOG_VIEW)
448 $isBadIblock =
false;
452 $isBadIblock = !\CIBlockSectionRights::UserHasRightTo(
$iblockId, $sectionId, self::IBLOCK_EDIT);
456 $r->addError(
new Error(
'Iblock is not exists', 200700300050));
461 $r->addError(
new Error(
'Access Denied', 200040300040));
472 $isBadIblock =
false;
476 $isBadIblock = !\CIBlockSectionRights::UserHasRightTo(
$iblockId, $iblockSectionId, self::IBLOCK_SECTION_SECTION_BIND);
480 $r->addError(
new Error(
'Iblock is not exists', 200700300050));
485 $r->addError(
new Error(
'Access Denied', 200040300050));
501 $iblockId = \CIBlockElement::GetIBlockByID($sectionId);
502 $isBadIblock = !\CIBlockElementRights::UserHasRightTo(
$iblockId, $sectionId, self::IBLOCK_SECTION_DELETE);
506 $r->addError(
new Error(
'Access Denied', 200040300050));
517 $isBadIblock = !\CIBlockSectionRights::UserHasRightTo(
$iblockId, $sectionId, self::IBLOCK_SECTION_READ);
521 $r->addError(
new Error(
'Access Denied', 200040300040));
532 $isBadIblock =
false;
536 $isBadIblock = !\CIBlockRights::UserHasRightTo(
$iblockId,
$iblockId, self::IBLOCK_READ);
540 $r->addError(
new Error(
'Iblock is not exists', 200700300050));
545 $r->addError(
new Error(
'Access Denied', 200040300030));
555 $section = \CIBlockSection::GetByID($id);
556 if (
$res = $section->GetNext())
getErrorEntityNotExists()
getErrorReadAccessDenied()
addErrorEntityNotExists()
const SECTION_ENTITY_NOT_EXISTS
checkModifyPermissionEntity()
listAction(PageNavigation $pageNavigation, array $select=[], array $filter=[], array $order=[], bool $__calculateTotalCount=true)
checkPermissionIBlockSectionSectionBindUpdate($iblockSectionId)
checkReadPermissionEntity()
getErrorCodeEntityNotExists()
getIBlockBySectionId($id)
checkPermissionIBlockSectionGet($sectionId)
checkPermissionIBlockSectionUpdate($sectionId)
updateAction($id, array $fields)
checkPermissionIBlockSectionList($iblockId)
checkPermissionIBlockSectionDelete($sectionId)
checkPermissionIBlockSectionAdd($iblockId)
checkPermissionIBlockSectionSectionBindModify($iblockId, $iblockSectionId)
checkPermissionIBlockSectionModify($iblockId, $sectionId)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(! $catalogEdit->isSuccess()) $iblock