• Модуль: form
  • Путь к файлу: ~/bitrix/modules/form/classes/general/form_callformfield.php
  • Класс: CAllFormField
  • Вызов: CAllFormField::Copy
static function Copy($ID, $CHECK_RIGHTS="Y", $NEW_FORM_ID=false)
{
	global $DB, $strError;
	$err_mess = (CAllFormField::err_mess())."
Function: Copy
Line: "; $ID = intval($ID); $NEW_FORM_ID = intval($NEW_FORM_ID); $rsField = CFormField::GetByID($ID); if ($arField = $rsField->Fetch()) { $RIGHT_OK = "N"; if ($CHECK_RIGHTS!="Y" || CForm::IsAdmin()) $RIGHT_OK="Y"; else { $F_RIGHT = CForm::GetPermission($arField["FORM_ID"]); if ($F_RIGHT>=25) { if ($NEW_FORM_ID>0) { $NEW_F_RIGHT = CForm::GetPermission($NEW_FORM_ID); if ($NEW_F_RIGHT>=30) $RIGHT_OK = "Y"; } elseif ($F_RIGHT>=30) { $RIGHT_OK = "Y"; } } } if ($RIGHT_OK=="Y") { if (!$NEW_FORM_ID) { while(true) { $SID = $arField["SID"]; if (mb_strlen($SID) > 44) $SID = mb_substr($SID, 0, 44); $SID .= "_".RandString(5); $strSql = "SELECT 'x' FROM b_form WHERE SID='".$DB->ForSql($SID,50)."'"; $z = $DB->Query($strSql, false, $err_mess.__LINE__); if (!($zr = $z->Fetch())) { $strSql = "SELECT 'x' FROM b_form_field WHERE SID='".$DB->ForSql($SID,50)."' AND FORM_ID='".$arField["FORM_ID"]."'"; $t = $DB->Query($strSql, false, $err_mess.__LINE__); if (!($tr = $t->Fetch())) break; } } } else { $SID = $arField["SID"]; } $arFields = array( "FORM_ID" => ($NEW_FORM_ID>0) ? $NEW_FORM_ID : $arField["FORM_ID"], "ACTIVE" => $arField["ACTIVE"], "TITLE" => $arField["TITLE"], "TITLE_TYPE" => $arField["TITLE_TYPE"], "SID" => $SID, "C_SORT" => $arField["C_SORT"], "ADDITIONAL" => $arField["ADDITIONAL"], "REQUIRED" => $arField["REQUIRED"], "IN_FILTER" => $arField["IN_FILTER"], "IN_RESULTS_TABLE" => $arField["IN_RESULTS_TABLE"], "IN_EXCEL_TABLE" => $arField["IN_EXCEL_TABLE"], "FIELD_TYPE" => $arField["FIELD_TYPE"], "COMMENTS" => $arField["COMMENTS"], "FILTER_TITLE" => $arField["FILTER_TITLE"], "RESULTS_TABLE_TITLE" => $arField["RESULTS_TABLE_TITLE"], ); if (intval($arField["IMAGE_ID"])>0) { $arIMAGE = CFile::MakeFileArray(CFile::CopyFile($arField["IMAGE_ID"])); $arIMAGE["MODULE_ID"] = "form"; $arFields["arIMAGE"] = $arIMAGE; } $z = CFormField::GetFilterList($arField["FORM_ID"], Array("FIELD_ID" => $ID, "FIELD_ID_EXACT_MATCH" => "Y")); while ($zr = $z->Fetch()) { if ($arField["ADDITIONAL"]!="Y") $arFields["arFILTER_".$zr["PARAMETER_NAME"]][] = $zr["FILTER_TYPE"]; elseif ($zr["PARAMETER_NAME"]=="USER") $arFields["arFILTER_FIELD"][] = $zr["FILTER_TYPE"]; } $NEW_ID = CFormField::Set($arFields); if (intval($NEW_ID)>0) { if ($arField["ADDITIONAL"]!="Y") { $rsAnswer = CFormAnswer::GetList($ID, 'ID', 'ASC'); while ($arAnswer = $rsAnswer->Fetch()) CFormAnswer::Copy($arAnswer["ID"], $NEW_ID); $dbValidators = CFormValidator::GetList($ID); while ($arVal = $dbValidators->Fetch()) { CFormValidator::Set($arField['FORM_ID'], $NEW_ID, $arVal['NAME'], $arVal['PARAMS'], $arVal['C_SORT']); } } } return $NEW_ID; } else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."
"; } else $strError .= GetMessage("FORM_ERROR_FIELD_NOT_FOUND")."
"; return false; }