• Модуль: form
  • Путь к файлу: ~/bitrix/modules/form/classes/general/form_callformresult.php
  • Класс: CAllFormResult
  • Вызов: CAllFormResult::SetField
static function SetField($RESULT_ID, $FIELD_SID, $VALUE=false)
{
	global $DB, $strError;
	$err_mess = (CAllFormResult::err_mess())."
Function: SetField
Line: "; $RESULT_ID = intval($RESULT_ID); if (intval($RESULT_ID)>0) { $strSql = " SELECT FORM_ID FROM b_form_result WHERE ID = $RESULT_ID "; $z = $DB->Query($strSql, false, $err_mess.__LINE__); $zr = $z->Fetch(); $WEB_FORM_ID = $zr["FORM_ID"]; if (intval($WEB_FORM_ID)>0) { $strSql = " SELECT ID, FIELD_TYPE, ADDITIONAL FROM b_form_field WHERE FORM_ID = $WEB_FORM_ID and SID = '".$DB->ForSql($FIELD_SID,50)."' "; $q = $DB->Query($strSql, false, $err_mess.__LINE__); if ($arField = $q->Fetch()) { $FIELD_ID = $arField["ID"]; $IS_FIELD = ($arField["ADDITIONAL"]=="Y") ? true : false; if ($IS_FIELD) { $strSql = " DELETE FROM b_form_result_answer WHERE RESULT_ID = $RESULT_ID and FIELD_ID = $FIELD_ID "; //echo "
".$strSql."
"; $DB->Query($strSql, false, $err_mess.__LINE__); if ($VALUE <> '') { $FIELD_TYPE = $arField["FIELD_TYPE"]; switch ($FIELD_TYPE) : case "text": case "integer": $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "USER_TEXT" => $VALUE, "USER_TEXT_SEARCH" => ToUpper($VALUE) ); CFormResult::AddAnswer($arFields); break; case "date": if (CheckDateTime($VALUE)) { $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "USER_DATE" => $VALUE, "USER_TEXT" => $VALUE, "USER_TEXT_SEARCH" => ToUpper($VALUE) ); CFormResult::AddAnswer($arFields); } break; endswitch; } } else { $strSql = " SELECT USER_FILE_ID FROM b_form_result_answer WHERE RESULT_ID = $RESULT_ID and FIELD_ID = $FIELD_ID and USER_FILE_ID>0 "; $rsFiles = $DB->Query($strSql, false, $err_mess.__LINE__); while ($arFile = $rsFiles->Fetch()) CFile::Delete($arFile["USER_FILE_ID"]); $strSql = " DELETE FROM b_form_result_answer WHERE RESULT_ID = $RESULT_ID and FIELD_ID = $FIELD_ID "; $DB->Query($strSql, false, $err_mess.__LINE__); if (is_array($VALUE) && count($VALUE)>0) { $arrANSWER_TEXT = array(); $arrANSWER_VALUE = array(); $arrUSER_TEXT = array(); foreach ($VALUE as $ANSWER_ID => $val) { $rsAnswer = CFormAnswer::GetByID($ANSWER_ID); if ($arAnswer = $rsAnswer->Fetch()) { switch ($arAnswer["FIELD_TYPE"]) : case "radio": case "dropdown": case "checkbox": case "multiselect": $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "ANSWER_ID" => $ANSWER_ID, "ANSWER_TEXT" => trim($arAnswer["MESSAGE"]), "ANSWER_VALUE" => $arAnswer["VALUE"], ); CFormResult::AddAnswer($arFields); $arrANSWER_TEXT[$FIELD_ID][] = ToUpper($arFields["ANSWER_TEXT"]); $arrANSWER_VALUE[$FIELD_ID][] = ToUpper($arFields["ANSWER_VALUE"]); break; case "text": case "textarea": case "password": case "email": case "url": case "hidden": $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "ANSWER_ID" => $ANSWER_ID, "ANSWER_TEXT" => trim($arAnswer["MESSAGE"]), "ANSWER_VALUE" => $arAnswer["VALUE"], "USER_TEXT" => $val, ); CFormResult::AddAnswer($arFields); $arrANSWER_TEXT[$FIELD_ID][] = ToUpper($arFields["ANSWER_TEXT"]); $arrANSWER_VALUE[$FIELD_ID][] = ToUpper($arFields["ANSWER_VALUE"]); $arrUSER_TEXT[$FIELD_ID][] = ToUpper($arFields["USER_TEXT"]); break; case "date": if (CheckDateTime($val)) { $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "ANSWER_ID" => $ANSWER_ID, "ANSWER_TEXT" => trim($arAnswer["MESSAGE"]), "ANSWER_VALUE" => $arAnswer["VALUE"], "USER_TEXT" => $val, "USER_DATE" => $val ); CFormResult::AddAnswer($arFields); $arrANSWER_TEXT[$FIELD_ID][] = ToUpper($arFields["ANSWER_TEXT"]); $arrANSWER_VALUE[$FIELD_ID][] = ToUpper($arFields["ANSWER_VALUE"]); $arrUSER_TEXT[$FIELD_ID][] = ToUpper($arFields["USER_TEXT"]); } break; case "image": $arIMAGE = $val; if (is_array($arIMAGE) && count($arIMAGE)>0) { $arIMAGE["MODULE_ID"] = "form"; if (CFile::CheckImageFile($arIMAGE) == '') { if (!array_key_exists("MODULE_ID", $arIMAGE) || $arIMAGE["MODULE_ID"] == '') $arIMAGE["MODULE_ID"] = "form"; $fid = CFile::SaveFile($arIMAGE, "form"); if (intval($fid)>0) { $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "ANSWER_ID" => $ANSWER_ID, "ANSWER_TEXT" => trim($arAnswer["MESSAGE"]), "ANSWER_VALUE" => $arAnswer["VALUE"], "USER_FILE_ID" => $fid, "USER_FILE_IS_IMAGE" => "Y", "USER_FILE_NAME" => $arIMAGE["name"], "USER_FILE_SIZE" => $arIMAGE["size"], "USER_TEXT" => $arIMAGE["name"] ); CFormResult::AddAnswer($arFields); $arrANSWER_TEXT[$FIELD_ID][] = ToUpper($arFields["ANSWER_TEXT"]); $arrANSWER_VALUE[$FIELD_ID][] = ToUpper($arFields["ANSWER_VALUE"]); $arrUSER_TEXT[$FIELD_ID][] = ToUpper($arFields["USER_TEXT"]); } } } break; case "file": $arFILE = $val; if (is_array($arFILE) && count($arFILE)>0) { $arFILE["MODULE_ID"] = "form"; $original_name = $arFILE["name"]; $max_size = COption::GetOptionString("form", "MAX_FILESIZE"); $upload_dir = COption::GetOptionString("form", "NOT_IMAGE_UPLOAD_DIR"); $fid = CFile::SaveFile($arFILE, $upload_dir, $max_size); if (intval($fid)>0) { $arFields = array( "RESULT_ID" => $RESULT_ID, "FORM_ID" => $WEB_FORM_ID, "FIELD_ID" => $FIELD_ID, "ANSWER_ID" => $ANSWER_ID, "ANSWER_TEXT" => trim($arAnswer["MESSAGE"]), "ANSWER_VALUE" => $arAnswer["VALUE"], "USER_FILE_ID" => $fid, "USER_FILE_IS_IMAGE" => "N", "USER_FILE_NAME" => $original_name, "USER_FILE_HASH" => md5(uniqid(mt_rand(), true).time()), "USER_FILE_SIZE" => $arFILE["size"], "USER_FILE_SUFFIX" => $suffix, "USER_TEXT" => $original_name, ); CFormResult::AddAnswer($arFields); $arrANSWER_TEXT[$FIELD_ID][] = ToUpper($arFields["ANSWER_TEXT"]); $arrANSWER_VALUE[$FIELD_ID][] = ToUpper($arFields["ANSWER_VALUE"]); $arrUSER_TEXT[$FIELD_ID][] = ToUpper($arFields["USER_TEXT"]); } } break; endswitch; } } // update search fields $arrANSWER_TEXT_upd = $arrANSWER_TEXT[$FIELD_ID]; $arrANSWER_VALUE_upd = $arrANSWER_VALUE[$FIELD_ID]; $arrUSER_TEXT_upd = $arrUSER_TEXT[$FIELD_ID]; TrimArr($arrANSWER_TEXT_upd); TrimArr($arrANSWER_VALUE_upd); TrimArr($arrUSER_TEXT_upd); if (is_array($arrANSWER_TEXT_upd)) $vl_ANSWER_TEXT = trim(implode(" ",$arrANSWER_TEXT_upd)); if (is_array($arrANSWER_VALUE_upd)) $vl_ANSWER_VALUE = trim(implode(" ",$arrANSWER_VALUE_upd)); if (is_array($arrUSER_TEXT_upd)) $vl_USER_TEXT = trim(implode(" ",$arrUSER_TEXT_upd)); if ($vl_ANSWER_TEXT == '') $vl_ANSWER_TEXT = false; if ($vl_ANSWER_VALUE == '') $vl_ANSWER_VALUE = false; if ($vl_USER_TEXT == '') $vl_USER_TEXT = false; $arFields = array( "ANSWER_TEXT_SEARCH" => $vl_ANSWER_TEXT, "ANSWER_VALUE_SEARCH" => $vl_ANSWER_VALUE, "USER_TEXT_SEARCH" => $vl_USER_TEXT ); CFormResult::UpdateField($arFields, $RESULT_ID, $FIELD_ID); } } return true; } } } return false; }