function CreateForm($arForm, $arFormFields, $langFile) { if (!CModule::IncludeModule("form")) { return false; } // set defaults $arFieldDefaults = array("ACTIVE" => "Y", "C_SORT" => 0, "ADDITIONAL" => "N", "TITLE_TYPE" => "text", "IN_RESULTS_TABLE" => "Y", "IN_EXCEL_TABLE" => "Y"); foreach ($arFormFields as $key => $arField) { if ($arFormFields['ADDITIONAL'] == 'Y' && !is_set($arFormFields['C_SORT'])) { $arFormFields['C_SORT'] = 5000; } $arFieldDefaults["C_SORT"] += 100; $arFormFields[$key] = array_merge($arFieldDefaults, $arField); $arFormFields[$key]["TITLE"] = GetMessage($arField["SID"] . "_QUESTION"); } $rsLanguage = CLanguage::GetList($by, $order, array()); while ($arLanguage = $rsLanguage->Fetch()) { WizardServices::IncludeServiceLang($langFile, $arLanguage["LID"]); $arForm["arMENU"][$arLanguage["LID"]] = GetMessage(substr($arForm["SID"], 0, -3) . "_MENU_NAME"); } $dbForm = CForm::GetBySID($arForm["SID"]); if ($dbForm->Fetch()) { return; } WizardServices::IncludeServiceLang("status.php"); if ($formID = CForm::Set($arForm, false, "N")) { // setup form fields foreach ($arFormFields as $key => $arField) { $arField["FORM_ID"] = $formID; $fieldID = CFormField::Set($arField, false, "N"); } if ($arTemplates = CForm::SetMailTemplate($formID)) { CForm::Set(array('SID' => $arForm['SID'], 'arMAIL_TEMPLATE' => $arTemplates), $formID, 'N'); } $arStatuses = array(array("FORM_ID" => $formID, "TITLE" => GetMessage("STATUS_NEW"), "C_SORT" => 100, "ACTIVE" => "Y", "DEFAULT_VALUE" => "Y", "CSS" => "statusgray", "arPERMISSION_VIEW" => array(0), "arPERMISSION_MOVE" => array(0), "arPERMISSION_EDIT" => array(0), "arPERMISSION_DELETE" => array(0)), array("FORM_ID" => $formID, "TITLE" => GetMessage("STATUS_RECEIVED"), "C_SORT" => 200, "ACTIVE" => "Y", "DEFAULT_VALUE" => "N", "CSS" => "statusblue", "arPERMISSION_VIEW" => array(0)), array("FORM_ID" => $formID, "TITLE" => GetMessage("STATUS_DONE"), "C_SORT" => 300, "ACTIVE" => "Y", "DEFAULT_VALUE" => "N", "CSS" => "statusgreen", "arPERMISSION_VIEW" => array(0)), array("FORM_ID" => $formID, "TITLE" => GetMessage("STATUS_REFUSE"), "C_SORT" => 400, "ACTIVE" => "Y", "DEFAULT_VALUE" => "N", "CSS" => "statusred", "arPERMISSION_VIEW" => array(0))); foreach ($arStatuses as $key => $arStatus) { if ($STATUS_ID = CFormStatus::Set($arStatus, false, "N")) { if ($arStatus['DEFAULT_VALUE'] == 'N' && ($arTemplates = CFormStatus::SetMailTemplate($formID, $STATUS_ID))) { foreach ($arTemplates as $TEMPLATE_ID) { if (null == $em) { $em = new CEventMessage(); } $em->Update($TEMPLATE_ID, array('MESSAGE' => GetMessage('STATUS_MESSAGE'))); } CFormStatus::Set(array('FORM_ID' => $formID, 'arMAIL_TEMPLATE' => $arTemplates), $STATUS_ID, 'N'); } } } } return $formID; }
function Set($arFields, $FORM_ID = false, $CHECK_RIGHTS = "Y") { $err_mess = CAllForm::err_mess() . "<br>Function: Set<br>Line: "; global $DB, $USER, $strError, $APPLICATION; $FORM_ID = intval($FORM_ID); if (CForm::CheckFields($arFields, $FORM_ID, $CHECK_RIGHTS)) { $arFields_i = array(); if (strlen(trim($arFields["SID"])) > 0) { $arFields["VARNAME"] = $arFields["SID"]; } elseif (strlen($arFields["VARNAME"]) > 0) { $arFields["SID"] = $arFields["VARNAME"]; } //$arFields_i["TIMESTAMP_X"] = $DB->GetNowFunction(); $arFields_i["TIMESTAMP_X"] = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time() + CTimeZone::GetOffset()); if (is_set($arFields, "NAME")) { $arFields_i["NAME"] = $arFields['NAME']; } //"'".$DB->ForSql($arFields["NAME"],255)."'"; if (is_set($arFields, "SID")) { $arFields_i["SID"] = $arFields['SID']; } //"'".$DB->ForSql($arFields["SID"],255)."'"; if (is_set($arFields, "DESCRIPTION")) { $arFields_i["DESCRIPTION"] = $arFields['DESCRIPTION']; } //"'".$DB->ForSql($arFields["DESCRIPTION"],2000)."'"; if (is_set($arFields, "C_SORT")) { $arFields_i["C_SORT"] = intval($arFields["C_SORT"]); } //"'".intval($arFields["C_SORT"])."'"; if (is_array($arrSITE)) { reset($arrSITE); list($k, $arFields["FIRST_SITE_ID"]) = each($arrSITE); } if (is_set($arFields, "BUTTON")) { $arFields_i["BUTTON"] = $arFields['BUTTON']; } //"'".$DB->ForSql($arFields["BUTTON"],255)."'"; if (is_set($arFields, "USE_CAPTCHA")) { $arFields_i["USE_CAPTCHA"] = $arFields["USE_CAPTCHA"] == "Y" ? "Y" : "N"; } // "'Y'" : "'N'"; if (is_set($arFields, "DESCRIPTION_TYPE")) { $arFields_i["DESCRIPTION_TYPE"] = $arFields["DESCRIPTION_TYPE"] == "html" ? "html" : "text"; } //"'html'" : "'text'"; if (is_set($arFields, "FORM_TEMPLATE")) { $arFields_i["FORM_TEMPLATE"] = $arFields['FORM_TEMPLATE']; } //"'".$DB->ForSql($arFields["FORM_TEMPLATE"])."'"; if (is_set($arFields, "USE_DEFAULT_TEMPLATE")) { $arFields_i["USE_DEFAULT_TEMPLATE"] = $arFields["USE_DEFAULT_TEMPLATE"] == "Y" ? "Y" : "N"; } //"'Y'" : "'N'"; if (is_set($arFields, "SHOW_TEMPLATE")) { $arFields_i["SHOW_TEMPLATE"] = $arFields['SHOW_TEMPLATE']; } //"'".$DB->ForSql($arFields["SHOW_TEMPLATE"],255)."'"; if (is_set($arFields, "SHOW_RESULT_TEMPLATE")) { $arFields_i["SHOW_RESULT_TEMPLATE"] = $arFields['SHOW_RESULT_TEMPLATE']; } //"'".$DB->ForSql($arFields["SHOW_RESULT_TEMPLATE"],255)."'"; if (is_set($arFields, "PRINT_RESULT_TEMPLATE")) { $arFields_i["PRINT_RESULT_TEMPLATE"] = $arFields['PRINT_RESULT_TEMPLATE']; } //"'".$DB->ForSql($arFields["PRINT_RESULT_TEMPLATE"],255)."'"; if (is_set($arFields, "EDIT_RESULT_TEMPLATE")) { $arFields_i["EDIT_RESULT_TEMPLATE"] = $arFields['EDIT_RESULT_TEMPLATE']; } //"'".$DB->ForSql($arFields["EDIT_RESULT_TEMPLATE"],255)."'"; if (is_set($arFields, "FILTER_RESULT_TEMPLATE")) { $arFields_i["FILTER_RESULT_TEMPLATE"] = $arFields['FILTER_RESULT_TEMPLATE']; } //"'".$DB->ForSql($arFields["FILTER_RESULT_TEMPLATE"],255)."'"; if (is_set($arFields, "TABLE_RESULT_TEMPLATE")) { $arFields_i["TABLE_RESULT_TEMPLATE"] = $arFields['TABLE_RESULT_TEMPLATE']; } //"'".$DB->ForSql($arFields["TABLE_RESULT_TEMPLATE"],255)."'"; if (is_set($arFields, "USE_RESTRICTIONS")) { $arFields_i["USE_RESTRICTIONS"] = $arFields["USE_RESTRICTIONS"] == "Y" ? "Y" : "N"; } //"'Y'" : "'N'"; if (is_set($arFields, "RESTRICT_USER")) { $arFields_i["RESTRICT_USER"] = intval($arFields["RESTRICT_USER"]); } //"'".intval($arFields["RESTRICT_USER"])."'"; if (is_set($arFields, "RESTRICT_TIME")) { $arFields_i["RESTRICT_TIME"] = intval($arFields["RESTRICT_TIME"]); } //"'".intval($arFields["RESTRICT_TIME"])."'"; if (is_set($arFields, "arRESTRICT_STATUS")) { $arFields_i["RESTRICT_STATUS"] = implode(",", $arFields["arRESTRICT_STATUS"]); } //"'".$DB->ForSql(implode(",", $arFields["arRESTRICT_STATUS"]))."'"; if (is_set($arFields, "STAT_EVENT1")) { $arFields_i["STAT_EVENT1"] = $arFields['STAT_EVENT1']; } //"'".$DB->ForSql($arFields["STAT_EVENT1"],255)."'"; if (is_set($arFields, "STAT_EVENT2")) { $arFields_i["STAT_EVENT2"] = $arFields['STAT_EVENT2']; } //"'".$DB->ForSql($arFields["STAT_EVENT2"],255)."'"; if (is_set($arFields, "STAT_EVENT3")) { $arFields_i["STAT_EVENT3"] = $arFields['STAT_EVENT3']; } //"'".$DB->ForSql($arFields["STAT_EVENT3"],255)."'"; if (CForm::IsOldVersion() != "Y") { unset($arFields_i["SHOW_TEMPLATE"]); unset($arFields_i["SHOW_RESULT_TEMPLATE"]); unset($arFields_i["PRINT_RESULT_TEMPLATE"]); unset($arFields_i["EDIT_RESULT_TEMPLATE"]); } $z = $DB->Query("SELECT IMAGE_ID, SID, SID as VARNAME FROM b_form WHERE ID='" . $FORM_ID . "'", false, $err_mess . __LINE__); $zr = $z->Fetch(); $oldSID = $zr["SID"]; if (strlen($arFields["arIMAGE"]["name"]) > 0 || strlen($arFields["arIMAGE"]["del"]) > 0) { if (intval($zr["IMAGE_ID"]) > 0) { $arFields["arIMAGE"]["old_file"] = $zr["IMAGE_ID"]; } if (!array_key_exists("MODULE_ID", $arFields["arIMAGE"]) || strlen($arFields["arIMAGE"]["MODULE_ID"]) <= 0) { $arFields["arIMAGE"]["MODULE_ID"] = "form"; } $fid = CFile::SaveFile($arFields["arIMAGE"], "form"); if (intval($fid) > 0) { $arFields_i["IMAGE_ID"] = intval($fid); } else { $arFields_i["IMAGE_ID"] = "null"; } } if ($arFields['SID']) { $arFields_i["MAIL_EVENT_TYPE"] = "FORM_FILLING_" . $arFields["SID"]; } else { $arFields_i["MAIL_EVENT_TYPE"] = "FORM_FILLING_" . $oldSID; } if ($FORM_ID > 0) { $strUpdate = $DB->PrepareUpdate('b_form', $arFields_i); if ($strUpdate != '') { $query = 'UPDATE b_form SET ' . $strUpdate . " WHERE ID='" . $FORM_ID . "'"; $arBinds = array('FORM_TEMPLATE' => $arFields_i['FORM_TEMPLATE']); $DB->QueryBind($query, $arBinds); } //$DB->Update("b_form", $arFields_i, "WHERE ID='".$FORM_ID."'", $err_mess.__LINE__); CForm::SetMailTemplate($FORM_ID, "N", $oldSID); } else { //$FORM_ID = $DB->Insert("b_form", $arFields_i, $err_mess.__LINE__); $FORM_ID = $DB->Add("b_form", $arFields_i, array('FORM_TEMPLATE')); CForm::SetMailTemplate($FORM_ID, "N"); } $FORM_ID = intval($FORM_ID); if ($FORM_ID > 0) { // сайты if (is_set($arFields, "arSITE")) { $DB->Query("DELETE FROM b_form_2_site WHERE FORM_ID='" . $FORM_ID . "'", false, $err_mess . __LINE__); if (is_array($arFields["arSITE"])) { reset($arFields["arSITE"]); foreach ($arFields["arSITE"] as $sid) { $strSql = "\n\t\t\t\t\t\t\t\tINSERT INTO b_form_2_site (FORM_ID, SITE_ID) VALUES (\n\t\t\t\t\t\t\t\t\t{$FORM_ID},\n\t\t\t\t\t\t\t\t\t'" . $DB->ForSql($sid, 2) . "'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t"; $DB->Query($strSql, false, $err_mess . __LINE__); } } } // меню if (is_set($arFields, "arMENU")) { $DB->Query("DELETE FROM b_form_menu WHERE FORM_ID='" . $FORM_ID . "'", false, $err_mess . __LINE__); if (is_array($arFields["arMENU"])) { reset($arFields["arMENU"]); while (list($lid, $menu) = each($arFields["arMENU"])) { $arFields_i = array("FORM_ID" => $FORM_ID, "LID" => "'" . $DB->ForSql($lid, 2) . "'", "MENU" => "'" . $DB->ForSql($menu, 50) . "'"); $DB->Insert("b_form_menu", $arFields_i, $err_mess . __LINE__); } } } // почтовые шаблоны if (is_set($arFields, "arMAIL_TEMPLATE")) { $DB->Query("DELETE FROM b_form_2_mail_template WHERE FORM_ID='" . $FORM_ID . "'", false, $err_mess . __LINE__); if (is_array($arFields["arMAIL_TEMPLATE"])) { reset($arFields["arMAIL_TEMPLATE"]); foreach ($arFields["arMAIL_TEMPLATE"] as $mid) { $strSql = "\n\t\t\t\t\t\t\t\tINSERT INTO b_form_2_mail_template (FORM_ID, MAIL_TEMPLATE_ID) VALUES (\n\t\t\t\t\t\t\t\t\t{$FORM_ID},\n\t\t\t\t\t\t\t\t\t'" . intval($mid) . "'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t"; $DB->Query($strSql, false, $err_mess . __LINE__); } } } // группы if (is_set($arFields, "arGROUP")) { $DB->Query("DELETE FROM b_form_2_group WHERE FORM_ID='" . $FORM_ID . "'", false, $err_mess . __LINE__); if (is_array($arFields["arGROUP"])) { reset($arFields["arGROUP"]); while (list($group_id, $perm) = each($arFields["arGROUP"])) { if (intval($perm) > 0) { $arFields_i = array("FORM_ID" => $FORM_ID, "GROUP_ID" => "'" . intval($group_id) . "'", "PERMISSION" => "'" . intval($perm) . "'"); $DB->Insert("b_form_2_group", $arFields_i, $err_mess . __LINE__); } } } } } return $FORM_ID; } return false; }
$DB->StartTransaction(); if(!$emessage->Delete($ID)) { $DB->Rollback(); } else $DB->Commit(); } die(); } $q = CForm::GetByID($WEB_FORM_ID); $arrForm = $q->Fetch(); $arTemplates = CForm::SetMailTemplate($WEB_FORM_ID, "Y", '', true); IncludeModuleLangFile(__FILE__); $strNote .= GetMessage("FORM_GENERATING_FINISHED")."<br>"; $arReturn = array( 'NOTE' => $strNote, 'TEMPLATES' => $arTemplates ); /*************************************************************************** HTML form ****************************************************************************/ //$APPLICATION->SetTitle(GetMessage("FORM_PAGE_TITLE")); //require($_SERVER["DOCUMENT_ROOT"]."/freetrix/modules/main/include/prolog_popup_admin.php")
} } } $arAnswerFields = array("FIELD_ID" => $QID, "MESSAGE" => $arAnswer["MESSAGE"], "C_SORT" => $arAnswer["C_SORT"], "ACTIVE" => $arAnswer["ACTIVE"], "VALUE" => $arAnswer["VALUE"], "FIELD_TYPE" => $arAnswer["FIELD_TYPE"], "FIELD_WIDTH" => $arAnswer["FIELD_WIDTH"], "FIELD_HEIGHT" => $arAnswer["FIELD_HEIGHT"], "FIELD_PARAM" => $arAnswer["FIELD_PARAM"]); $ANS_ID = $arAnswer["ANS_NEW"] == "Y" ? false : $arAnswer["ID"]; CFormAnswer::Set($arAnswerFields, $ANS_ID); } } } } } if ($bSimple) { // mail template $arr = CForm::GetTemplateList("MAIL", "xxx", $res); if ($_REQUEST['USE_MAIL_TEMPLATE'] && count($arr['reference_id']) == 0) { CForm::SetMailTemplate($res, "Y"); } elseif (!$_REQUEST['USE_MAIL_TEMPLATE'] && count($arr['reference_id']) > 0) { reset($arr['reference_id']); while (list($num, $tmp_id) = each($arr['reference_id'])) { CEventMessage::Delete($tmp_id); } } $arr = CForm::GetTemplateList("MAIL", "xxx", $res); $arFields['SID'] = "SIMPLE_FORM_{$res}"; $arFields['arMAIL_TEMPLATE'] = $arr['reference_id']; CForm::Set($arFields, $res); // create default status if ($ID == 0) { $arFields_status = array("FORM_ID" => $res, "C_SORT" => 100, "ACTIVE" => "Y", "TITLE" => "DEFAULT", "DESCRIPTION" => "DEFAULT", "CSS" => "statusgreen", "DEFAULT_VALUE" => "Y", "arPERMISSION_VIEW" => array(0), "arPERMISSION_MOVE" => array(0), "arPERMISSION_EDIT" => array(0), "arPERMISSION_DELETE" => array(0)); CFormStatus::Set($arFields_status, 0); }
/** * <p>Добавляет новый <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a>/<a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поле</a> или обновляет существующий. Возвращает ID обновленного или добавленного <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>/<a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> в случае положительного результата, в противном случае - "false".</p> * * * @param array $fields Массив значений, в качестве ключей массива допустимы: <ul> <li> * <b>SID</b><font color="red">*</font> - символьный идентификатор <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>/<a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>; </li> <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>ACTIVE</b> - флаг активности; допустимы следующие значения: <ul> <li> * <b>Y</b> - <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a>/<a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поле</a> активен; </li> <li> <b>N</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a>/<a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поле</a> не активен (по умолчанию). * </li> </ul> </li> <li> <b>ADDITIONAL</b> - допустимы следующие значения: <ul> <li> <b>Y</b> - * данная запись является <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">полем</a> веб-формы; </li> <li> <b>N</b> - * данная запись является <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопросом</a> веб-формы (по * умолчанию). </li> </ul> </li> <li> <b>FIELD_TYPE</b><font color="green">*</font> - тип <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>, допустимые следующие * значения: <ul> <li> <b>text</b> - текст; </li> <li> <b>integer</b> - число; </li> <li> <b>date</b> - * дата. </li> </ul> </li> <li> <b>TITLE</b> - текст <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a> либо заголовок <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>. </li> <li> <b>TITLE_TYPE</b><font * color="green">*</font> - тип <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>; * допустимы следующие значения: <ul> <li> <b>text</b> - текст; </li> <li> <b>html</b> - * HTML код. </li> </ul> </li> <li> <b>C_SORT</b> - порядок сортировки; </li> <li> <b>REQUIRED</b><font * color="green">*</font> - флаг обязательности ответа на <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a>: <ul> <li> <b>Y</b> - ответ на * данный <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a> обязателен; * </li> <li> <b>N</b> - ответ на данный <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a> обязателен (по * умолчанию). </li> </ul> </li> <li> <b>FILTER_TITLE</b> - подпись к полю фильтра; </li> <li> * <b>IN_RESULTS_TABLE</b> - флаг вхождения в HTML таблицу результатов: <ul> <li> <b>Y</b> * - ответ на данный <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a> * либо значения <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> веб-формы * отражены в HTML таблице результатов; </li> <li> <b>N</b> - ответ на данный <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a> либо значения <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> веб-формы отражены в HTML * таблице результатов (по умолчанию). </li> </ul> </li> <li> <b>IN_EXCEL_TABLE</b> - флаг * вхождения в Excel таблицу <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результатов</a>: <ul> <li> <b>Y</b> - * ответ на данный <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a> * либо значения <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> веб-формы * отражены в Excel таблице <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результатов</a> </li> <li> <b>N</b> - * ответ на данный <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a> * либо значения <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> веб-формы * отражены в Excel таблице <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результатов</a> (по умолчанию). * </li> </ul> </li> <li> <b>RESULTS_TABLE_TITLE</b> - заголовок столбца в таблицах * результатов; </li> <li> <b>COMMENTS</b> - служебный комментарий; </li> <li> * <b>arIMAGE</b><font color="green">**</font> - массив, описывающий изображение <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>, допустимы * следующие ключи этого массива: <ul> <li> <b>name</b> - имя файла; </li> <li> * <b>size</b> - размер файла; </li> <li> <b>tmp_name</b> - временный путь на сервере; * </li> <li> <b>type</b> - тип загружаемого файла; </li> <li> <b>del</b> - если значение * равно "Y", то изображение будет удалено; </li> <li> <b>MODULE_ID</b> - * идентификатор модуля "Веб-формы" - <b>form</b> </li> </ul> </li> <li> <b>arANSWER</b><font * color="green">**</font> - массив, описывающий <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответы</a> на <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a>, со следующей * структурой: <pre>Array ( [0] => Array ( [ID] => ID [DELETE] => флаг необходимости * удаления [Y|N] [MESSAGE] => параметр <font color="green">ANSWER_TEXT</font> [VALUE] => * параметр <font color="red">ANSWER_VALUE</font> [C_SORT] => порядок сортировки [ACTIVE] => * флаг активности [Y|N] [FIELD_TYPE] => тип, допустимы следующие значения: * <b>text</b> - однострочное текстовое поле <b>textarea</b> - многострочное * текстовое поле <b>radio</b>* - переключатель одиночного выбора * (radio-кнопка) <b>checkbox</b>* - флаг множественного выбора (checkbox) <b>dropdown</b>* - * элемент выпадающего списка одиночного выбора <b>multiselect</b>* - * элемент списка множественного выбора <b>date</b> - поле для ввода даты * <b>image</b> - поле для загрузки изображения <b>file</b> - поле для загрузки * произвольного файла <b>password</b> - поле для ввода пароля [FIELD_WIDTH] => * ширина поля ввода [FIELD_HEIGHT] => высота поля ввода [FIELD_PARAM] => * дополнительные параметры; допустимо использование любого HTML * кода; для типов помеченных символом * допустимо использование * следующих зарезервированных строк: <b>checked</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответ</a> будет выбран (отмечен) * по умолчанию (синоним - <b>selected</b>) <b>not_answer</b> - выбор данного <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответа</a> не означает, что был * дан ответ на вопрос (как правило это первый элемент выпадающего * списка и важно при <b>REQUIRED</b>="Y") ) [1] => массив описывающий * следующий <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответ</a> ... )</pre> </li> * <li> <b>arFILTER_USER</b><font color="green">**</font> - массив полей фильтра для * фильтрации по значению <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответа</a>, введенному с * клавиатуры пользователем при заполнении веб-формы; в данном * массиве допустимы следующие значения: <ul> <li> <b>text</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/gettextfilter.php">текстовое поле</a> * фильтра; </li> <li> <b>integer</b> - поля фильтра для <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getnumberfilter.php">числового * интервала</a>; </li> <li> <b>date</b> - поля фильтра для <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getdatefilter.php">интервала дат</a>; </li> <li> * <b>exist</b> - поле для фильтрации по <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getexistflagfilter.php">факту * существования</a> введенного ответа. </li> </ul> </li> <li> * <b>arFILTER_ANSWER_TEXT</b><font color="green">**</font> - массив полей фильтра для * фильтрации по параметру <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответа</a> <font color="green">ANSWER_TEXT</font>; * в данном массиве допустимы следующие значения: <ul> <li> <b>text</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/gettextfilter.php">текстовое поле</a> * фильтра; </li> <li> <b>integer</b> - поля фильтра для <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getnumberfilter.php">числового * интервала</a>; </li> <li> <b>dropdown</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getdropdownfilter.php">выпадающий список * одиночного выбора</a>; </li> <li> <b>exist</b> - поле для фильтрации по <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getexistflagfilter.php">факту * существования</a>. </li> </ul> </li> <li> <b>arFILTER_ANSWER_VALUE</b><font color="green">**</font> - * массив полей фильтра для фильтрации по параметру <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответа</a> <font color="red">ANSWER_VALUE</font>; в * данном массиве допустимы следующие значения: <ul> <li> <b>text</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/gettextfilter.php">текстовое поле</a> * фильтра; </li> <li> <b>integer</b> - поля фильтра для <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getnumberfilter.php">числового * интервала</a>; </li> <li> <b>dropdown</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getdropdownfilter.php">выпадающий список * одиночного выбора</a>; </li> <li> <b>exist</b> - поле для фильтрации по <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getexistflagfilter.php">факту * существования</a>. </li> </ul> </li> <li> <b>arFILTER_FIELD</b><font color="green">*</font> - массив * полей фильтра для фильтрации по значению <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля веб-формы</a>: <ul> <li> <b>text</b> - <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/gettextfilter.php">текстовое поле</a> * фильтра; </li> <li> <b>integer</b> - поля фильтра для <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getnumberfilter.php">числового * интервала</a>; </li> <li> <b>date</b> - поля фильтра для <a * href="http://dev.1c-bitrix.ru/api_help/form/classes/cform/getdatefilter.php">интервала дат</a>. </li> </ul> * </li> </ul> <br><font color="red">*</font> - обязательно к заполнению; <br><font * color="green">*</font> - заполняется <b>только</b> для <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">полей веб-формы</a>; <br><font * color="green">**</font> - заполняется <b>только</b> для <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопросов веб-формы</a>. * * @param mixed $field_id = false ID обновляемого <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>/<a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>.<br>Параметр * необязательный. По умолчанию - "false" (добавление нового <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>/<a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>). * * @param string $check_rights = "Y" Флаг необходимости проверки прав текущего пользователя. * Возможны следующие значения: <ul> <li> <b>Y</b> - права необходимо * проверить; </li> <li> <b>N</b> - право не нужно проверять. </li> </ul> Для * добавления нового <a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>/<a * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> или обновления их * параметров необходимо иметь право <b>[30] Полный доступ</b> на * веб-форму указанную в <i>fields</i>["<b>FORM_ID</b>"].<br><br>Параметр * необязательный. По умолчанию - "Y" (права необходимо проверить). * * @return mixed * * <h4>Example</h4> * <pre> * <? * //<************************************************ * Добавление <a href="/api_help/form/terms.php#question">вопроса</a> веб-формы * ************************************************>// * * // создадим массив описывающий изображение * // находящееся в файле на сервере * $arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/question.gif"); * $arIMAGE["MODULE_ID"] = "form"; * * // формируем массив ответов * $arANSWER = array(); * * $arANSWER[] = array( * "MESSAGE" => "да", // параметр <font color="green">ANSWER_TEXT</font> * "C_SORT" => 100, // порядок фортировки * "ACTIVE" => "Y", // флаг активности * "FIELD_TYPE" => "radio", // тип ответа * "FIELD_PARAM" => "checked class=\"inputradio\"" // параметры ответа * ); * * $arANSWER[] = array( * "MESSAGE" => "нет", * "C_SORT" => 200, * "ACTIVE" => "Y", * "FIELD_TYPE" => "radio" * ); * * // формируем массив полей * $arFields = array( * "FORM_ID" => 4, // ID веб-формы * "ACTIVE" => "Y", // флаг активности * "TITLE" => "Вы женаты/замужем ?", // текст вопроса * "TITLE_TYPE" => "text", // тип текста вопроса * "SID" => "VS_MARRIED", // символьный идентификатор вопроса * "C_SORT" => 400, // порядок сортировки * "ADDITIONAL" => "N", // мы добавляем <b>вопрос</b> веб-формы * "REQUIRED" => "Y", // ответ на данный вопрос обязателен * "IN_RESULTS_TABLE" => "Y", // добавить в HTML таблицу результатов * "IN_EXCEL_TABLE" => "Y", // добавить в Excel таблицу результатов * "FILTER_TITLE" => "Женат/замужем", // подпись к полю фильтра * "RESULTS_TABLE_TITLE" => "Женат/замужем", // заголовок столбца фильтра * "arIMAGE" => $arIMAGE, // изображение вопроса * "arFILTER_ANSWER_TEXT" => array("dropdown"), // тип фильтра по <font color="green">ANSWER_TEXT</font> * "arANSWER" => $arANSWER, // набор <a href="/api_help/form/terms.php#answer">ответов</a> * ); * * // добавим новый вопрос * $NEW_ID = <b>CFormField::Set</b>($arFields); * if ($NEW_ID>0) echo "Добавлен вопрос с ID=".$NEW_ID; * else // ошибка * { * // выводим текст ошибки * global $strError; * echo $strError; * } * ?> * * * <? * //<************************************************ * Добавление <a href="/api_help/form/terms.php#field">поля</a> веб-формы * ************************************************>// * * $arFields = array( * "FORM_ID" => 4 * "ACTIVE" => "Y", * "TITLE" => "Рассчитанная стоимость", * "SID" => "VS_PRICE", * "C_SORT" => 1000, * "ADDITIONAL" => "Y", * "IN_RESULTS_TABLE" => "Y", * "IN_EXCEL_TABLE" => "Y", * "FIELD_TYPE" => "text", * "FILTER_TITLE" => "Стоимость", * "RESULTS_TABLE_TITLE" => "Стоимость", * "arFILTER_FIELD" => array("text") * ); * * // добавим новое поле * $NEW_ID = <b>CFormField::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/cformfield/index.php">Поля CFormField</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/form/permissions.php#form">Права на веб-форму</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cfile/makefilearray.php">CFile::MakeFileArray</a> <br> * </li> </ul> <a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformfield/set.php * @author Bitrix */ public static function Set($arFields, $FIELD_ID = false, $CHECK_RIGHTS = "Y", $UPDATE_FILTER = "Y") { $err_mess = CAllFormField::err_mess() . "<br>Function: Set<br>Line: "; global $DB; if (CFormField::CheckFields($arFields, $FIELD_ID, $CHECK_RIGHTS)) { $arFields_i = array(); if (strlen(trim($arFields["SID"])) > 0) { $arFields["VARNAME"] = $arFields["SID"]; } elseif (strlen($arFields["VARNAME"]) > 0) { $arFields["SID"] = $arFields["VARNAME"]; } $arFields_i["TIMESTAMP_X"] = $DB->GetNowFunction(); 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"], 2000) . "'"; } if (is_set($arFields, "TITLE_TYPE")) { $arFields_i["TITLE_TYPE"] = $arFields["TITLE_TYPE"] == "html" ? "'html'" : "'text'"; } if (is_set($arFields, "SID")) { $arFields_i["SID"] = "'" . $DB->ForSql($arFields["SID"], 50) . "'"; } if (is_set($arFields, "C_SORT")) { $arFields_i["C_SORT"] = "'" . intval($arFields["C_SORT"]) . "'"; } if (is_set($arFields, "ADDITIONAL")) { $arFields_i["ADDITIONAL"] = $arFields["ADDITIONAL"] == "Y" ? "'Y'" : "'N'"; } if (is_set($arFields, "REQUIRED")) { $arFields_i["REQUIRED"] = $arFields["REQUIRED"] == "Y" ? "'Y'" : "'N'"; } if (is_set($arFields, "IN_RESULTS_TABLE")) { $arFields_i["IN_RESULTS_TABLE"] = $arFields["IN_RESULTS_TABLE"] == "Y" ? "'Y'" : "'N'"; } if (is_set($arFields, "IN_EXCEL_TABLE")) { $arFields_i["IN_EXCEL_TABLE"] = $arFields["IN_EXCEL_TABLE"] == "Y" ? "'Y'" : "'N'"; } if (is_set($arFields, "FIELD_TYPE")) { $arFields_i["FIELD_TYPE"] = "'" . $DB->ForSql($arFields["FIELD_TYPE"], 50) . "'"; } if (is_set($arFields, "COMMENTS")) { $arFields_i["COMMENTS"] = "'" . $DB->ForSql($arFields["COMMENTS"], 2000) . "'"; } if (is_set($arFields, "FILTER_TITLE")) { $arFields_i["FILTER_TITLE"] = "'" . $DB->ForSql($arFields["FILTER_TITLE"], 2000) . "'"; } if (is_set($arFields, "RESULTS_TABLE_TITLE")) { $arFields_i["RESULTS_TABLE_TITLE"] = "'" . $DB->ForSql($arFields["RESULTS_TABLE_TITLE"], 2000) . "'"; } // fcuk knows why he wrote it. maybe for some checking. but it's absolutely useless. //$z = $DB->Query("SELECT IMAGE_ID FROM b_form_field WHERE ID='$FIELD_ID'", false, $err_mess.__LINE__); //$zr = $z->Fetch(); if (strlen($arFields["arIMAGE"]["name"]) > 0 || strlen($arFields["arIMAGE"]["del"]) > 0) { if (!array_key_exists("MODULE_ID", $arFields["arIMAGE"]) || strlen($arFields["arIMAGE"]["MODULE_ID"]) <= 0) { $arFields["arIMAGE"]["MODULE_ID"] = "form"; } $fid = CFile::SaveFile($arFields["arIMAGE"], "form"); if (intval($fid) > 0) { $arFields_i["IMAGE_ID"] = intval($fid); } else { $arFields_i["IMAGE_ID"] = "null"; } } $FIELD_ID = intval($FIELD_ID); if ($FIELD_ID > 0) { $DB->Update("b_form_field", $arFields_i, "WHERE ID='" . $FIELD_ID . "'", $err_mess . __LINE__); } else { $arFields_i["FORM_ID"] = "'" . intval($arFields["FORM_ID"]) . "'"; $FIELD_ID = $DB->Insert("b_form_field", $arFields_i, $err_mess . __LINE__); } if ($FIELD_ID > 0) { // ответы на вопрос if ($arFields["ADDITIONAL"] != "Y" && is_set($arFields, "arANSWER")) { $arANSWER = $arFields["arANSWER"]; if (is_array($arANSWER) && count($arANSWER) > 0) { $arrAnswers = array(); $rs = CFormAnswer::GetList($FIELD_ID, $by = 'ID', $order = 'ASC', array(), $is_filtered); while ($ar = $rs->Fetch()) { $arrAnswers[] = $ar["ID"]; } foreach ($arANSWER as $arA) { $answer_id = in_array($arA["ID"], $arrAnswers) ? intval($arA["ID"]) : 0; if ($arA["DELETE"] == "Y" && $answer_id > 0) { CFormAnswer::Delete($answer_id, $FIELD_ID); } else { if ($answer_id > 0 || $answer_id <= 0 && strlen($arA["MESSAGE"]) > 0) { $arFields_a = array("FIELD_ID" => $FIELD_ID, "MESSAGE" => $arA["MESSAGE"], "VALUE" => $arA["VALUE"], "C_SORT" => $arA["C_SORT"], "ACTIVE" => $arA["ACTIVE"], "FIELD_TYPE" => $arA["FIELD_TYPE"], "FIELD_WIDTH" => $arA["FIELD_WIDTH"], "FIELD_HEIGHT" => $arA["FIELD_HEIGHT"], "FIELD_PARAM" => $arA["FIELD_PARAM"]); //echo "<pre>"; print_r($arFields_a); echo "</pre>"; CFormAnswer::Set($arFields_a, $answer_id, $FIELD_ID); } } } } } // тип почтового события CForm::SetMailTemplate(intval($arFields["FORM_ID"]), "N"); if ($UPDATE_FILTER == 'Y') { // фильтр $in_filter = "N"; $DB->Query("UPDATE b_form_field SET IN_FILTER='N' WHERE ID='" . $FIELD_ID . "'", false, $err_mess . __LINE__); $arrFilterType = array("arFILTER_USER" => "USER", "arFILTER_ANSWER_TEXT" => "ANSWER_TEXT", "arFILTER_ANSWER_VALUE" => "ANSWER_VALUE", "arFILTER_FIELD" => "USER"); foreach ($arrFilterType as $key => $value) { if (is_set($arFields, $key)) { $strSql = "DELETE FROM b_form_field_filter WHERE FIELD_ID='" . $FIELD_ID . "' and PARAMETER_NAME='" . $value . "'"; $DB->Query($strSql, false, $err_mess . __LINE__); if (is_array($arFields[$key])) { reset($arFields[$key]); foreach ($arFields[$key] as $type) { $arFields_i = array("FIELD_ID" => "'" . intval($FIELD_ID) . "'", "FILTER_TYPE" => "'" . $DB->ForSql($type, 50) . "'", "PARAMETER_NAME" => "'" . $value . "'"); $DB->Insert("b_form_field_filter", $arFields_i, $err_mess . __LINE__); $in_filter = "Y"; } } } } if ($in_filter == "Y") { $DB->Query("UPDATE b_form_field SET IN_FILTER='Y' WHERE ID='" . $FIELD_ID . "'", false, $err_mess . __LINE__); } } } return $FIELD_ID; } return false; }