Иногда надо отправлять ajax запросы из админки.
1. Проверка IsAdmin и GetUserGroupArray, на админа и группу.
2) проверка на существование заказа
3) проверка содержимого поля.
4. Уже само обновление
Потенциальные проблемы решаемые эти может- пользователь может быть не зарегистрированных или не иметь прав на редактирование поля.
Из минусов этого примера — применяется конкретное id поля.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); function processOrderProperty($arFields) { if($arFields["ID"] > 0) { CSaleOrderPropsValue::Update($arFields["ID"], array("VALUE"=>$arFields["VALUE"])); } elseif($arFields["ORDER_ID"] > 0) CSaleOrderPropsValue::Add($arFields); } $intOrderID = intval($_REQUEST["ORDER_ID"]); if(($USER -> IsAdmin() || in_array(8, $USER->GetUserGroupArray()))) { if($intOrderID > 0 && CModule::IncludeModule("sale")) { $arOrder = CSaleOrder::GetByID($intOrderID); if($arOrder["ID"] > 0) { $arOrderProps = array(); $rsProps = CSaleOrderPropsValue::GetOrderProps($arOrder["ID"]); while ($arProps = $rsProps->Fetch()) $arOrderProps[$arProps["ORDER_PROPS_ID"]] = $arProps; // delivery date $arFields = array( "ID" => $arOrderProps[27]["ID"], "ORDER_ID" => $arOrder["ID"], "ORDER_PROPS_ID" => 27, "NAME" => "Дата доставки", "CODE" => "f10", "VALUE" => iconv("utf-8", "windows-1251", $_REQUEST["FORM_DA_DATE"]) ); processOrderProperty($arFields); die(); } } } |