Exemple #1
0
 if ($res > 0) {
     if ($bEditTemplate && $USE_DEFAULT_TEMPLATE == "N") {
         // structure
         $FORM_STRUCTURE = $_REQUEST["FORM_STRUCTURE"];
         $arrFS = CheckSerializedData($FORM_STRUCTURE) ? unserialize($FORM_STRUCTURE) : array();
         if (CFormOutput::CheckTemplate($FORM_TEMPLATE, $arrFS)) {
             $GLOBALS['CACHE_MANAGER']->ClearByTag('form_' . $res);
             foreach ($arrFS as $arQuestion) {
                 $arQuestionFields = array("FORM_ID" => $res, "TITLE" => $arQuestion["CAPTION_UNFORM"], "TITLE_TYPE" => $arQuestion["isHTMLCaption"] == "N" ? "text" : "html", "SID" => $arQuestion["FIELD_SID"], "REQUIRED" => $arQuestion["isRequired"] == "N" ? "N" : "Y", "IN_RESULTS_TABLE" => $arQuestion["inResultsTable"] == "Y" ? "Y" : "N", "IN_EXCEL_TABLE" => $arQuestion["inExcelTable"] == "Y" ? "Y" : "N", "ACTIVE" => CForm::isFieldInTemplate($arQuestion["FIELD_SID"], $FORM_TEMPLATE) ? "Y" : "N", 'FILTER_TITLE' => $arQuestion['FILTER_TITLE']);
                 $FIELD_ID = $arQuestion["isNew"] == "Y" ? false : $arQuestion["ID"];
                 $QID = CFormField::Set($arQuestionFields, $FIELD_ID, 'Y', 'N');
                 if ($QID) {
                     foreach ($arQuestion["structure"] as $arAnswer) {
                         if (strlen($arAnswer["MESSAGE"]) <= 0) {
                             if ($arAnswer['ANS_NEW'] != 'Y' && in_array($arAnswer['FIELD_TYPE'], array('dropdown', 'multiselect', 'checkbox', 'radio'))) {
                                 CFormAnswer::Delete($arAnswer['ID'], $QID);
                             }
                             continue;
                         }
                         if (isset($arAnswer['DEFAULT'])) {
                             if ($arAnswer["FIELD_TYPE"] == "dropdown" || $arAnswer['FIELD_TYPE'] == "multiselect") {
                                 if ($arAnswer["DEFAULT"] == "Y") {
                                     $arAnswer["FIELD_PARAM"] = "SELECTED";
                                 } else {
                                     $arAnswer["FIELD_PARAM"] = "";
                                 }
                             }
                             if ($arAnswer["FIELD_TYPE"] == "checkbox" || $arAnswer['FIELD_TYPE'] == "radio") {
                                 if ($arAnswer["DEFAULT"] == "Y") {
                                     $arAnswer["FIELD_PARAM"] = "CHECKED";
                                 } else {
Exemple #2
0
 function DeleteAnswer($ID)
 {
     return CFormAnswer::Delete($ID);
 }
 /**
  * <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] =&gt; Array ( [ID] =&gt; ID [DELETE] =&gt; флаг необходимости
  * удаления [Y|N] [MESSAGE] =&gt; параметр <font color="green">ANSWER_TEXT</font> [VALUE] =&gt;
  * параметр <font color="red">ANSWER_VALUE</font> [C_SORT] =&gt; порядок сортировки [ACTIVE] =&gt;
  * флаг активности [Y|N] [FIELD_TYPE] =&gt; тип, допустимы следующие значения:
  * <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] =&gt;
  * ширина поля ввода [FIELD_HEIGHT] =&gt; высота поля ввода [FIELD_PARAM] =&gt;
  * дополнительные параметры; допустимо использование любого 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] =&gt; массив описывающий
  * следующий <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>
  * &lt;?
  * //<************************************************
  *          Добавление <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"     =&gt; "да",                           // параметр <font color="green">ANSWER_TEXT</font>
  *     "C_SORT"      =&gt; 100,                            // порядок фортировки 
  *     "ACTIVE"      =&gt; "Y",                            // флаг активности
  *     "FIELD_TYPE"  =&gt; "radio",                        // тип ответа
  *     "FIELD_PARAM" =&gt; "checked class=\"inputradio\""  // параметры ответа
  *     );
  * 
  * $arANSWER[] = array(
  *     "MESSAGE"     =&gt; "нет",
  *     "C_SORT"      =&gt; 200,
  *     "ACTIVE"      =&gt; "Y",
  *     "FIELD_TYPE"  =&gt; "radio"
  *     );
  * 
  * // формируем массив полей
  * $arFields = array( 
  *     "FORM_ID"              =&gt; 4,                     // ID веб-формы
  *     "ACTIVE"               =&gt; "Y",                     // флаг активности
  *     "TITLE"                =&gt; "Вы женаты/замужем ?", // текст вопроса
  *     "TITLE_TYPE"           =&gt; "text",                // тип текста вопроса
  *     "SID"                  =&gt; "VS_MARRIED",          // символьный идентификатор вопроса
  *     "C_SORT"               =&gt; 400,                   // порядок сортировки
  *     "ADDITIONAL"           =&gt; "N",                   // мы добавляем <b>вопрос</b> веб-формы
  *     "REQUIRED"             =&gt; "Y",                   // ответ на данный вопрос обязателен
  *     "IN_RESULTS_TABLE"     =&gt; "Y",                   // добавить в HTML таблицу результатов
  *     "IN_EXCEL_TABLE"       =&gt; "Y",                   // добавить в Excel таблицу результатов
  *     "FILTER_TITLE"         =&gt; "Женат/замужем",       // подпись к полю фильтра
  *     "RESULTS_TABLE_TITLE"  =&gt; "Женат/замужем",       // заголовок столбца фильтра
  *     "arIMAGE"              =&gt; $arIMAGE,              // изображение вопроса
  *     "arFILTER_ANSWER_TEXT" =&gt; array("dropdown"),     // тип фильтра по <font color="green">ANSWER_TEXT</font>
  *     "arANSWER"             =&gt; $arANSWER,             // набор <a href="/api_help/form/terms.php#answer">ответов</a>
  * );
  * 
  * // добавим новый вопрос
  * $NEW_ID = <b>CFormField::Set</b>($arFields);
  * if ($NEW_ID&gt;0) echo "Добавлен вопрос с ID=".$NEW_ID;
  * else // ошибка
  * {
  *     // выводим текст ошибки
  *     global $strError;
  *     echo $strError;
  * }
  * ?&gt;
  * 
  * 
  * &lt;?
  * //<************************************************
  *           Добавление <a href="/api_help/form/terms.php#field">поля</a> веб-формы
  * ************************************************>//
  * 
  * $arFields = array( 
  *     "FORM_ID"             =&gt; 4
  *     "ACTIVE"              =&gt; "Y",
  *     "TITLE"               =&gt; "Рассчитанная стоимость",
  *     "SID"                 =&gt; "VS_PRICE",
  *     "C_SORT"              =&gt; 1000,
  *     "ADDITIONAL"          =&gt; "Y",
  *     "IN_RESULTS_TABLE"    =&gt; "Y",
  *     "IN_EXCEL_TABLE"      =&gt; "Y",
  *     "FIELD_TYPE"          =&gt; "text",
  *     "FILTER_TITLE"        =&gt; "Стоимость",
  *     "RESULTS_TABLE_TITLE" =&gt; "Стоимость",
  *     "arFILTER_FIELD"      =&gt; array("text")
  *     );
  * 
  * // добавим новое поле
  * $NEW_ID = <b>CFormField::Set</b>($arFields);
  * if ($NEW_ID&gt;0) echo "Добавлено поле с ID=".$NEW_ID;
  * else // ошибка
  * {
  *     // выводим текст ошибки
  *     global $strError;
  *     echo $strError;
  * }
  * ?&gt;
  * </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;
 }
Exemple #4
0
 public static function DeleteAnswer($ID)
 {
     return CFormAnswer::Delete($ID);
 }