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;
}