- Модуль: form
- Путь к файлу: ~/bitrix/modules/form/classes/general/form_callformresult.php
- Класс: CAllFormResult
- Вызов: CAllFormResult::SetStatus
static function SetStatus($RESULT_ID, $NEW_STATUS_ID, $CHECK_RIGHTS="Y")
{
$err_mess = (CAllFormResult::err_mess())."
Function: SetStatus
Line: ";
global $DB, $USER, $strError, $APPLICATION;
$NEW_STATUS_ID = intval($NEW_STATUS_ID);
$RESULT_ID = intval($RESULT_ID);
if ($RESULT_ID <= 0 || $NEW_STATUS_ID <= 0)
return false;
$strSql = "SELECT USER_ID, FORM_ID FROM b_form_result WHERE ID='".$RESULT_ID."'";
$z = $DB->Query($strSql, false, $err_mess.__LINE__);
if ($zr = $z->Fetch())
{
$WEB_FORM_ID = intval($zr["FORM_ID"]);
// rights check
$RIGHT_OK = "N";
if ($CHECK_RIGHTS!="Y")
{
$dbRes = CFormStatus::GetByID($NEW_STATUS_ID);
if ($dbRes->Fetch())
{
$RIGHT_OK="Y";
}
}
else
{
// form rights
$F_RIGHT = CForm::GetPermission($WEB_FORM_ID);
if ($F_RIGHT>=20 || ($F_RIGHT>=15 && $USER->GetID()==$zr["USER_ID"]))
{
// result rights
$arrRESULT_PERMISSION = CFormResult::GetPermissions($RESULT_ID);
// new status rights
$arrNEW_STATUS_PERMISSION = CFormStatus::GetPermissions($NEW_STATUS_ID);
if (in_array("EDIT", $arrRESULT_PERMISSION) && in_array("MOVE", $arrNEW_STATUS_PERMISSION))
{
$RIGHT_OK = "Y";
}
}
}
if ($RIGHT_OK=="Y")
{
foreach (GetModuleEvents('form', 'onBeforeResultStatusChange', true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, array($WEB_FORM_ID, $RESULT_ID, &$NEW_STATUS_ID, $CHECK_RIGHTS));
if ($ex = $APPLICATION->GetException())
$strError .= $ex->GetString().'
';
}
if ($strError == '')
{
// call handler before change status
CForm::ExecHandlerBeforeChangeStatus($RESULT_ID, "SET_STATUS", $NEW_STATUS_ID);
$arFields = Array(
"TIMESTAMP_X" => $DB->GetNowFunction(),
"STATUS_ID" => "'".intval($NEW_STATUS_ID)."'"
);
$DB->Update("b_form_result",$arFields,"WHERE ID='".$RESULT_ID."'",$err_mess.__LINE__);
foreach (GetModuleEvents('form', 'onAfterResultStatusChange', true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, array($WEB_FORM_ID, $RESULT_ID, $NEW_STATUS_ID, $CHECK_RIGHTS));
}
// call handler after change status
CForm::ExecHandlerAfterChangeStatus($RESULT_ID, "SET_STATUS");
return true;
}
}
else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."
";
}
else $strError .= GetMessage("FORM_ERROR_RESULT_NOT_FOUND")."
";
return false;
}