/** * <p>Добавляет новый <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статус</a> или обновляет существующий. Возвращает ID обновленного или добавленного <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a> в случае положительного результата, в противном случае - "false".</p> * * * * * @param array $fields Массив значений, в качестве ключей массива допустимы: <ul> <li> * <b>FORM_ID</b><font color="red">*</font> - ID <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#form">веб-формы</a>; </li> <li> <b>TITLE</b><font * color="red">*</font> - заголовок <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a>; </li> <li> <b>C_SORT</b> - * порядок сортировки; </li> <li> <b>ACTIVE</b> - флаг активности; допустимы * следующие значения: <ul> <li> <b>Y</b> - ответ активен; </li> <li> <b>N</b> - ответ * не активен (по умолчанию). </li> </ul> </li> <li> <b>DESCRIPTION</b> - описание <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a>; </li> <li> <b>CSS</b> - имя CSS * класса для вывода заголовка <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a>; </li> <li> <b>HANDLER_OUT</b> - * путь относительно корня к <a * href="http://dev.1c-bitrix.ru/api_help/form/status_processing.php">обработчику</a>, вызываемому * при смене у <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a> * данного <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a> на какой * либо другой; </li> <li> <b>HANDLER_IN</b> - путь относительно корня к <a * href="http://dev.1c-bitrix.ru/api_help/form/status_processing.php">обработчику</a>, вызываемому * при смене у <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a> * какого либо <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a> на * данный; </li> <li> <b>DEFAULT_VALUE</b> - флаг установки <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a> по умолчанию, * допустимы следующие значения: <ul> <li> <b>Y</b> - статус будет * устанавливаться; </li> <li> <b>N</b> - статус не будет устанавливаться (по * умолчанию). </li> </ul> </li> <li> <b>arPERMISSION_VIEW</b>* - массив ID групп * пользователей, имеющих <a * href="http://dev.1c-bitrix.ru/api_help/form/permissions.php#result">право</a> "Просмотр * результатов в данном статусе"; </li> <li> <b>arPERMISSION_MOVE</b>* - массив ID * групп пользователей, имеющих <a * href="http://dev.1c-bitrix.ru/api_help/form/permissions.php#result">право</a> "Перевод * результатов в данный статус"; </li> <li> <b>arPERMISSION_EDIT</b>* - массив ID групп * пользователей, имеющих <a * href="http://dev.1c-bitrix.ru/api_help/form/permissions.php#result">право</a> "Редактирование * результатов в данном статусе"; </li> <li> <b>arPERMISSION_DELETE</b>* - массив ID * групп пользователей, имеющих <a * href="http://dev.1c-bitrix.ru/api_help/form/permissions.php#result">право</a> "Удаление * результатов в данном статусе". </li> </ul> <br><font color="red">*</font> - * обязательно к заполнению. <br>* - в данных массивах может быть * элемент со значением "0", означающий создателя <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a>. * * * * @param mixed $status_id = false ID обновляемого <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a>.<br> * Параметр необязательный. По умолчанию - "false" (добавление нового <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#status">статуса</a>). * * * * @param string $check_rights = "Y" Флаг необходимости проверки прав текущего пользователя. * Возможны следующие значения: <ul> <li> <b>Y</b> - права необходимо * проверить; </li> <li> <b>N</b> - право не нужно проверять. </li> </ul> Для * обновления статуса, либо создания нового статуса необходимо * иметь право <b>[30] Полный доступ</b> на форму указанную в * <i>fields</i>["FORM_ID"].<br><br>Параметр необязательный. По умолчанию - "Y" * (права необходимо проверить). * * * * @return mixed * * * <h4>Example</h4> * <pre> * <? * $FORM_ID = 4; // ID веб-формы * * $arFields = array( * "FORM_ID" => $FORM_ID, // ID веб-формы * "C_SORT" => 100, // порядок сортировки * "ACTIVE" => "Y", // статус активен * "TITLE" => "Опубликовано", // заголовок статуса * "DESCRIPTION" => "Окончательный статус", // описание статуса * "CSS" => "statusgreen", // CSS класс * "HANDLER_OUT" => "", // обработчик * "HANDLER_IN" => "", // обработчик * "DEFAULT_VALUE" => "N", // не по умолчанию * "arPERMISSION_VIEW" => array(2), // право просмотра для всех * "arPERMISSION_MOVE" => array(), // право перевода только админам * "arPERMISSION_EDIT" => array(), // право редактирование для админам * "arPERMISSION_DELETE" => array(), // право удаления только админам * ); * * $NEW_ID = <b>CFormStatus::Set</b>($arFields); * if ($NEW_ID>0) echo "Успешно добавлен ID=".$NEW_ID; * else // ошибка * { * // выводим текст ошибки * global $strError; * echo $strError; * } * ?> * </pre> * * * * <h4>See Also</h4> * <ul><li> <a href="http://dev.1c-bitrix.ru/api_help/form/classes/cformstatus/index.php">Поля CFormStatus</a> * </li></ul><a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformstatus/set.php * @author Bitrix */ public static function Set($arFields, $STATUS_ID=false, $CHECK_RIGHTS="Y") { $err_mess = (CAllFormStatus::err_mess())."<br>Function: Set<br>Line: "; global $DB, $USER, $strError, $APPLICATION; $STATUS_ID = intval($STATUS_ID); if (CFormStatus::CheckFields($arFields, $STATUS_ID, $CHECK_RIGHTS)) { $arFields_i = array(); $arFields_i["TIMESTAMP_X"] = $DB->GetNowFunction(); if (is_set($arFields, "C_SORT")) $arFields_i["C_SORT"] = "'".intval($arFields["C_SORT"])."'"; if (is_set($arFields, "ACTIVE")) $arFields_i["ACTIVE"] = ($arFields["ACTIVE"]=="Y") ? "'Y'" : "'N'"; if (is_set($arFields, "TITLE")) $arFields_i["TITLE"] = "'".$DB->ForSql($arFields["TITLE"],255)."'"; if (is_set($arFields, "DESCRIPTION")) $arFields_i["DESCRIPTION"] = "'".$DB->ForSql($arFields["DESCRIPTION"],2000)."'"; if (is_set($arFields, "CSS")) $arFields_i["CSS"] = "'".$DB->ForSql($arFields["CSS"],255)."'"; if (is_set($arFields, "HANDLER_OUT")) $arFields_i["HANDLER_OUT"] = "'".$DB->ForSql($arFields["HANDLER_OUT"],255)."'"; if (is_set($arFields, "HANDLER_IN")) $arFields_i["HANDLER_IN"] = "'".$DB->ForSql($arFields["HANDLER_IN"],255)."'"; if (is_set($arFields, "MAIL_EVENT_TYPE")) $arFields_i["MAIL_EVENT_TYPE"] = "'".$DB->ForSql($arFields["MAIL_EVENT_TYPE"],255)."'"; $DEFAULT_STATUS_ID = intval(CFormStatus::GetDefault($arFields["FORM_ID"])); if ($DEFAULT_STATUS_ID<=0 || $DEFAULT_STATUS_ID==$STATUS_ID) { if (is_set($arFields, "DEFAULT_VALUE")) $arFields_i["DEFAULT_VALUE"] = ($arFields["DEFAULT_VALUE"]=="Y") ? "'Y'" : "'N'"; } //echo '<pre>'; print_r($arFields); echo '</pre>'; //die(); if ($STATUS_ID>0) { $DB->Update("b_form_status", $arFields_i, "WHERE ID='".$STATUS_ID."'", $err_mess.__LINE__); } else { $arFields_i["FORM_ID"] = "'".intval($arFields["FORM_ID"])."'"; $STATUS_ID = $DB->Insert("b_form_status", $arFields_i, $err_mess.__LINE__); } $STATUS_ID = intval($STATUS_ID); if ($STATUS_ID>0) { // право на просмотр if (is_set($arFields, "arPERMISSION_VIEW")) { $DB->Query("DELETE FROM b_form_status_2_group WHERE STATUS_ID='".$STATUS_ID."' and PERMISSION='VIEW'", false, $err_mess.__LINE__); if (is_array($arFields["arPERMISSION_VIEW"])) { reset($arFields["arPERMISSION_VIEW"]); foreach($arFields["arPERMISSION_VIEW"] as $gid) { $arFields_i = array( "STATUS_ID" => "'".intval($STATUS_ID)."'", "GROUP_ID" => "'".intval($gid)."'", "PERMISSION" => "'VIEW'" ); $DB->Insert("b_form_status_2_group",$arFields_i, $err_mess.__LINE__); } } } // право на перевод if (is_set($arFields, "arPERMISSION_MOVE")) { $DB->Query("DELETE FROM b_form_status_2_group WHERE STATUS_ID='".$STATUS_ID."' and PERMISSION='MOVE'", false, $err_mess.__LINE__); if (is_array($arFields["arPERMISSION_MOVE"])) { reset($arFields["arPERMISSION_MOVE"]); foreach($arFields["arPERMISSION_MOVE"] as $gid) { $arFields_i = array( "STATUS_ID" => "'".intval($STATUS_ID)."'", "GROUP_ID" => "'".intval($gid)."'", "PERMISSION" => "'MOVE'" ); $DB->Insert("b_form_status_2_group",$arFields_i, $err_mess.__LINE__); } } } // право на редактирование if (is_set($arFields, "arPERMISSION_EDIT")) { $DB->Query("DELETE FROM b_form_status_2_group WHERE STATUS_ID='".$STATUS_ID."' and PERMISSION='EDIT'", false, $err_mess.__LINE__); if (is_array($arFields["arPERMISSION_EDIT"])) { reset($arFields["arPERMISSION_EDIT"]); foreach($arFields["arPERMISSION_EDIT"] as $gid) { $arFields_i = array( "STATUS_ID" => "'".intval($STATUS_ID)."'", "GROUP_ID" => "'".intval($gid)."'", "PERMISSION" => "'EDIT'" ); $DB->Insert("b_form_status_2_group",$arFields_i, $err_mess.__LINE__); } } } // право на удаление if (is_set($arFields, "arPERMISSION_DELETE")) { $DB->Query("DELETE FROM b_form_status_2_group WHERE STATUS_ID='".$STATUS_ID."' and PERMISSION='DELETE'", false, $err_mess.__LINE__); if (is_array($arFields["arPERMISSION_DELETE"])) { reset($arFields["arPERMISSION_DELETE"]); foreach($arFields["arPERMISSION_DELETE"] as $gid) { $arFields_i = array( "STATUS_ID" => "'".intval($STATUS_ID)."'", "GROUP_ID" => "'".intval($gid)."'", "PERMISSION" => "'DELETE'" ); $DB->Insert("b_form_status_2_group",$arFields_i, $err_mess.__LINE__); } } } if (is_set($arFields, "arMAIL_TEMPLATE")) { $DB->Query("DELETE FROM b_form_status_2_mail_template WHERE STATUS_ID='".$STATUS_ID."'", false, $err_mess.__LINE__); if (is_array($arFields["arMAIL_TEMPLATE"])) { reset($arFields["arMAIL_TEMPLATE"]); foreach($arFields["arMAIL_TEMPLATE"] as $mid) { $strSql = " INSERT INTO b_form_status_2_mail_template (STATUS_ID, MAIL_TEMPLATE_ID) VALUES ( '".$STATUS_ID."', '".intval($mid)."' ) "; $DB->Query($strSql, false, $err_mess.__LINE__); } } } } return $STATUS_ID; } return false; }