function Add($arFields) { global $DB; if (!CSaleStatus::CheckFields("ADD", $arFields)) { return false; } $ID = $DB->ForSql($arFields["ID"], 1); foreach (GetModuleEvents("sale", "OnBeforeStatusAdd", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $arInsert = $DB->PrepareInsert("b_sale_status", $arFields); $strSql = "INSERT INTO b_sale_status(" . $arInsert[0] . ") VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); foreach ($arFields["LANG"] as &$arOneLang) { $arInsert = $DB->PrepareInsert("b_sale_status_lang", $arOneLang); $strSql = "INSERT INTO b_sale_status_lang(STATUS_ID, " . $arInsert[0] . ") VALUES('" . $ID . "', " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } if (isset($arOneLang)) { unset($arOneLang); } if (array_key_exists('PERMS', $arFields) && !empty($arFields["PERMS"]) && is_array($arFields["PERMS"])) { foreach ($arFields["PERMS"] as &$arOnePerm) { $arInsert = $DB->PrepareInsert("b_sale_status2group", $arOnePerm); $strSql = "INSERT INTO b_sale_status2group(STATUS_ID, " . $arInsert[0] . ") VALUES('" . $ID . "', " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } if (isset($arOnePerm)) { unset($arOnePerm); } } foreach (GetModuleEvents("sale", "OnStatusAdd", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
function Update($ID, $arFields) { global $DB; $ID = $DB->ForSql($ID, 1); if (!CSaleStatus::CheckFields("UPDATE", $arFields, $ID)) { return false; } $db_events = GetModuleEvents("sale", "OnBeforeStatusUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_status", $arFields); $strSql = "UPDATE b_sale_status SET " . $strUpdate . " WHERE ID = '" . $ID . "' "; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (is_set($arFields, "LANG")) { $DB->Query("DELETE FROM b_sale_status_lang WHERE STATUS_ID = '" . $ID . "'"); for ($i = 0; $i < count($arFields["LANG"]); $i++) { $arInsert = $DB->PrepareInsert("b_sale_status_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_status_lang(STATUS_ID, " . $arInsert[0] . ") " . "VALUES('" . $ID . "', " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } if (isset($arFields["PERMS"]) && is_array($arFields["PERMS"])) { $DB->Query("DELETE FROM b_sale_status2group WHERE STATUS_ID = '" . $ID . "'"); for ($i = 0; $i < count($arFields["PERMS"]); $i++) { $arInsert = $DB->PrepareInsert("b_sale_status2group", $arFields["PERMS"][$i]); $strSql = "INSERT INTO b_sale_status2group(STATUS_ID, " . $arInsert[0] . ") " . "VALUES('" . $ID . "', " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } $events = GetModuleEvents("sale", "OnStatusUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
function Update($ID, $arFields) { global $DB; $ID = $DB->ForSql($ID, 1); if (!CSaleStatus::CheckFields("UPDATE", $arFields, $ID)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeStatusUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_status", $arFields); if (!empty($strUpdate)) { $strSql = "UPDATE b_sale_status SET " . $strUpdate . " WHERE ID = '" . $ID . "' "; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } if (isset($arFields['LANG']) && is_array($arFields['LANG'])) { $DB->Query("DELETE FROM b_sale_status_lang WHERE STATUS_ID = '" . $ID . "'"); foreach ($arFields['LANG'] as $statusLang) { $langUpdateFields = $langInsertFields = $statusLang; $langInsertFields['STATUS_ID'] = $ID; $arInsert = $DB->PrepareInsert("b_sale_status_lang", $langInsertFields); if (isset($langUpdateFields['STATUS_ID'])) { unset($langUpdateFields['STATUS_ID']); } if (isset($langUpdateFields['LID'])) { unset($langUpdateFields['LID']); } $langUpdate = ""; if (count($langUpdateFields) > 0) { $langUpdate = " ON DUPLICATE KEY UPDATE " . $DB->PrepareUpdate("b_sale_status_lang", $langUpdateFields); } $strSql = "INSERT INTO b_sale_status_lang(" . $arInsert[0] . ") VALUES(" . $arInsert[1] . ")" . $langUpdate; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } if (isset($statusLang)) { unset($statusLang); } } if (isset($arFields['PERMS']) && is_array($arFields["PERMS"])) { $DB->Query("DELETE FROM b_sale_status2group WHERE STATUS_ID = '" . $ID . "'"); foreach ($arFields["PERMS"] as &$arOnePerm) { $arInsert = $DB->PrepareInsert("b_sale_status2group", $arOnePerm); $strSql = "INSERT INTO b_sale_status2group(STATUS_ID, " . $arInsert[0] . ") VALUES('" . $ID . "', " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } if (isset($arOnePerm)) { unset($arOnePerm); } } foreach (GetModuleEvents("sale", "OnStatusUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
/** * <p>Функция изменяет параметры статуса заказа с кодом ID </p> * * * * * @param string $ID Код статуса. * * * * @param array $arFields Ассоциативный массив новых параметров статуса. Ключами в массиве * являются названия параметров статуса, а значениями - * соответствующие значения.<br> Допустимые ключи: <ul> <li> <b>ID</b> - код * статуса (обязательный);</li> <li> <b>SORT</b> - индекс сортировки;</li> <li> * <b>LANG</b> - массив ассоциативных массивов языкозависимых параметров * статуса с ключами: <ul> <li> <b>LID</b> - язык;</li> <li> <b>NAME</b> - название * статуса на этом языке;</li> <li> <b>DESCRIPTION</b> - описание статуса;</li> </ul> * </li> <li> <b>PERMS</b> - массив ассоциативных массивов прав на доступ к * изменению заказа в данном статусе с ключами: <ul> <li> <b>GROUP_ID</b> - * группа пользователей;</li> <li> <b>PERM_TYPE</b> - тип доступа (S - разрешен * перевод заказа в данный статус, M - разрешено изменение заказа в * данном статусе).</li> </ul> </li> </ul> * * * * @return string <p>Возвращается код добавленного статуса или <i>false</i> в случае * ошибки.</p><br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalestatus/csalestatus__update.145077bd.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; $ID = $DB->ForSql($ID, 1); if (!CSaleStatus::CheckFields("UPDATE", $arFields, $ID)) return false; foreach (GetModuleEvents("sale", "OnBeforeStatusUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields))===false) return false; } $strUpdate = $DB->PrepareUpdate("b_sale_status", $arFields); if (!empty($strUpdate)) { $strSql = "UPDATE b_sale_status SET ".$strUpdate." WHERE ID = '".$ID."' "; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (array_key_exists('LANG', $arFields) && is_array($arFields['LANG'])) { $DB->Query("DELETE FROM b_sale_status_lang WHERE STATUS_ID = '".$ID."'"); foreach ($arFields['LANG'] as &$arOneLang) { $arInsert = $DB->PrepareInsert("b_sale_status_lang", $arOneLang); $strSql = "INSERT INTO b_sale_status_lang(STATUS_ID, ".$arInsert[0].") VALUES('".$ID."', ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (isset($arOneLang)) unset($arOneLang); } if (array_key_exists('PERMS', $arFields) && is_array($arFields["PERMS"])) { $DB->Query("DELETE FROM b_sale_status2group WHERE STATUS_ID = '".$ID."'"); foreach ($arFields["PERMS"] as &$arOnePerm) { $arInsert = $DB->PrepareInsert("b_sale_status2group", $arOnePerm); $strSql = "INSERT INTO b_sale_status2group(STATUS_ID, ".$arInsert[0].") VALUES('".$ID."', ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (isset($arOnePerm)) unset($arOnePerm); } foreach (GetModuleEvents("sale", "OnStatusUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }