1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
deleteelementitem.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 CIBlockElement;
14use CMain;
15use CUtil;
16
17final class DeleteElementItem extends BaseItem
18{
19 private IblockRightsChecker $rights;
20
21 public static function getId(): ?string
22 {
23 return 'delete_element';
24 }
25
26 public function __construct(IblockRightsChecker $rights)
27 {
28 $this->rights = $rights;
29 }
30
31 protected function getText(): string
32 {
33 return Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_ELEMENT_NAME');
34 }
35
36 public function getControl(array $rawFields): ?array
37 {
38 $id = (int)($rawFields['ID'] ?? 0);
39 if ($id <= 0)
40 {
41 return null;
42 }
43
44 $actionId = self::getId();
45 $data = CUtil::PhpToJSObject([
46 'id' => $id,
47 ]);
48 $confirmMessage = \CUtil::JSEscape(
49 Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_ELEMENT_CONFIRM_MESSAGE')
50 );
51
52 $confirmButtonMessage = \CUtil::JSEscape(
53 Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_ELEMENT_CONFIRM_BUTTON')
54 );
55 $backButtonMessage = \CUtil::JSEscape(
56 Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_ELEMENT_BACK_BUTTON')
57 );
58
59 $this->onclick = "IblockGridInstance.sendSmallPopupWithConfirm('{$actionId}', {$data}, '{$confirmMessage}', '{$confirmButtonMessage}', '{$backButtonMessage}')";
60
61 return parent::getControl($rawFields);
62 }
63
64 public function processRequest(HttpRequest $request): ?Result
65 {
66 global $APPLICATION;
67
71
72 $id = $request->getPost('id');
73 if (empty($id) || !is_numeric($id))
74 {
75 return null;
76 }
77 $id = (int)$id;
78
79 if (!$this->rights->canDeleteElement($id))
80 {
81 throw new AccessDeniedException('Cannot delete element');
82 }
83
84 $result = new Result();
85
86 $conn = Application::getConnection();
87 $conn->startTransaction();
88 try
89 {
90 $updateResult = CIBlockElement::Delete($id);
91 if (!$updateResult)
92 {
93 $ex = $APPLICATION->GetException();
94 $message =
95 $ex
96 ? $ex->getString()
97 : Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_ELEMENT_INTERNAL_ERROR')
98 ;
99 $result->addError(new Error($message));
100 unset(
101 $message,
102 $ex,
103 );
104 }
105 }
106 catch (SqlQueryException)
107 {
108 $result->addError(new Error(Loc::getMessage('IBLOCK_GRID_ROW_ACTIONS_DELETE_ELEMENT_INTERNAL_ERROR')));
109 }
110
111 if ($result->isSuccess())
112 {
113 $conn->commitTransaction();
114 }
115 else
116 {
117 $conn->rollbackTransaction();
118 }
119
120 return $result;
121 }
122}
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)
Определения deleteelementitem.php:26
Определения 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