1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
deletesectionitem.php
См. документацию.
1<?php
2
3namespace Bitrix\Iblock\Grid\Row\Actions\Item;
4
5use Bitrix\Iblock\Grid\Access\IblockRightsChecker;
6use Bitrix\Main\AccessDeniedException;
7use Bitrix\Main\Application;
8use Bitrix\Main\DB\SqlQueryException;
9use Bitrix\Main\Error;
10use Bitrix\Main\HttpRequest;
11use Bitrix\Main\Localization\Loc;
12use Bitrix\Main\Result;
13use CIBlockSection;
14use CUtil;
15
16final class DeleteSectionItem extends BaseItem
17{
18 private IblockRightsChecker $rights;
19
20 public static function getId(): ?string
21 {
22 return 'delete_section';
23 }
24
25 public function __construct(IblockRightsChecker $rights)
26 {
27 $this->rights = $rights;
28 }
29
30 protected function getText(): string
31 {
32 return Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_SECTION_NAME');
33 }
34
35 public function getControl(array $rawFields): ?array
36 {
37 $id = (int)($rawFields['ID'] ?? 0);
38 if ($id <= 0)
39 {
40 return null;
41 }
42
43 $actionId = self::getId();
44 $data = CUtil::PhpToJSObject([
45 'id' => $id,
46 ]);
47 $confirmMessage = \CUtil::JSEscape(
48 Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_SECTION_CONFIRM_MESSAGE')
49 );
50
51 $confirmButtonMessage = \CUtil::JSEscape(
52 Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_SECTION_CONFIRM_BUTTON')
53 );
54 $backButtonMessage = \CUtil::JSEscape(
55 Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_SECTION_BACK_BUTTON')
56 );
57
58 $this->onclick = "IblockGridInstance.sendSmallPopupWithConfirm('{$actionId}', {$data}, '{$confirmMessage}', '{$confirmButtonMessage}', '{$backButtonMessage}')";
59
60 return parent::getControl($rawFields);
61 }
62
63 public function processRequest(HttpRequest $request): ?Result
64 {
65 global $APPLICATION;
66
70
71 $id = $request->getPost('id');
72 if (empty($id) || !is_numeric($id))
73 {
74 return null;
75 }
76 $id = (int)$id;
77
78 if (!$this->rights->canDeleteSection($id))
79 {
80 throw new AccessDeniedException('Cannot delete element');
81 }
82
83 $result = new Result();
84
85 $conn = Application::getConnection();
86 $conn->startTransaction();
87 try
88 {
89 $updateResult = CIBlockSection::Delete($id);
90 if (!$updateResult)
91 {
92 $ex = $APPLICATION->GetException();
93 $message =
94 $ex
95 ? $ex->getString()
96 : Loc::getMessage('IBLOCK_GRID_ROW_ACTION_DELETE_SECTION_INTERNAL_ERROR')
97 ;
98 $result->addError(new Error($message));
99 unset(
100 $message,
101 $ex,
102 );
103 }
104 }
105 catch (SqlQueryException)
106 {
107 $result->addError(new Error(Loc::getMessage('IBLOCK_GRID_ROW_ACTION_DELETE_SECTION_INTERNAL_ERROR')));
108 }
109
110 if ($result->isSuccess())
111 {
112 $conn->commitTransaction();
113 }
114 else
115 {
116 $conn->rollbackTransaction();
117 }
118
119 return $result;
120 }
121}
global $APPLICATION
Определения include.php:80
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
__construct(IblockRightsChecker $rights)
Определения deletesectionitem.php:25
Определения error.php:15
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
processRequest(HttpRequest $request)
$message
Определения payment.php:8