Example #1
0
					<td><input type="text" name="MESSAGE_<?php 
        echo $i;
        ?>
" value="<?php 
        echo $message;
        ?>
" style="width:100%" onchange="jsFormValidatorSettings.UpdateAll();" /></td>
					<td><input type="text" name="VALUE_<?php 
        echo $i;
        ?>
" value="<?php 
        echo $value;
        ?>
" size="16" /></td>
					<td nowrap="nowrap"><?php 
        echo SelectBoxFromArray("FIELD_TYPE_" . $i, CFormAnswer::GetTypeList(), $ftype, "", "onchange=\"FIELD_TYPE_CHANGE(" . $i . "); jsFormValidatorSettings.UpdateAll();\"");
        ?>
</td>
					<td nowrap="nowrap"><input <?php 
        if ($ftype != "text" && $ftype != "textarea" && $ftype != "image" && $ftype != "date" && $ftype != 'email') {
            echo "disabled";
        }
        ?>
 type="text" id="FIELD_WIDTH_<?php 
        echo $i;
        ?>
" name="FIELD_WIDTH_<?php 
        echo $i;
        ?>
" value="<?php 
        echo $width;
Example #2
0
                                 $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 {
                                 $arAnswer["FIELD_PARAM"] = "";
                             }
                         }
                     }
                     $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);
         }
 function GetDataByID($WEB_FORM_ID, &$arForm, &$arQuestions, &$arAnswers, &$arDropDown, &$arMultiSelect, $additional = "N", $active = "N")
 {
     global $strError;
     $WEB_FORM_ID = intval($WEB_FORM_ID);
     $arForm = array();
     $arQuestions = array();
     $arAnswers = array();
     $arDropDown = array();
     $arMultiSelect = array();
     $z = CForm::GetByID($WEB_FORM_ID);
     if ($arForm = $z->Fetch()) {
         if (!is_set($arForm, "FORM_TEMPLATE")) {
             $arForm["FORM_TEMPLATE"] = CForm::GetFormTemplateByID($WEB_FORM_ID);
         }
         $u = CFormField::GetList($WEB_FORM_ID, $additional, $by = "s_c_sort", $order = "asc", $active == "N" ? array("ACTIVE" => "Y") : array(), $is_filtered);
         while ($ur = $u->Fetch()) {
             $arQuestions[$ur["SID"]] = $ur;
             $w = CFormAnswer::GetList($ur["ID"], $by = "s_c_sort", $order = "asc", $active == "N" ? array("ACTIVE" => "Y") : array(), $is_filtered);
             while ($wr = $w->Fetch()) {
                 $arAnswers[$ur["SID"]][] = $wr;
             }
         }
         // собираем по каждому вопросу все dropdown и multiselect в отдельные массивы
         if (is_array($arQuestions) && is_array($arAnswers)) {
             foreach ($arQuestions as $arQ) {
                 $QUESTION_ID = $arQ["SID"];
                 $arDropReference = array();
                 $arDropReferenceID = array();
                 $arDropParam = array();
                 $arMultiReference = array();
                 $arMultiReferenceID = array();
                 $arMultiParam = array();
                 if (is_array($arAnswers[$QUESTION_ID])) {
                     foreach ($arAnswers[$QUESTION_ID] as $arA) {
                         switch ($arA["FIELD_TYPE"]) {
                             case "dropdown":
                                 $arDropReference[] = $arA["MESSAGE"];
                                 $arDropReferenceID[] = $arA["ID"];
                                 $arDropParam[] = $arA["FIELD_PARAM"];
                                 break;
                             case "multiselect":
                                 $arMultiReference[] = $arA["MESSAGE"];
                                 $arMultiReferenceID[] = $arA["ID"];
                                 $arMultiParam[] = $arA["FIELD_PARAM"];
                                 break;
                         }
                     }
                 }
                 if (count($arDropReference) > 0) {
                     $arDropDown[$QUESTION_ID] = array("reference" => $arDropReference, "reference_id" => $arDropReferenceID, "param" => $arDropParam);
                 }
                 if (count($arMultiReference) > 0) {
                     $arMultiSelect[$QUESTION_ID] = array("reference" => $arMultiReference, "reference_id" => $arMultiReferenceID, "param" => $arMultiParam);
                 }
             }
         }
         reset($arForm);
         reset($arQuestions);
         reset($arAnswers);
         reset($arDropDown);
         reset($arMultiSelect);
         /*
         echo "<pre>";
         print_r($arForm);
         print_r($arQuestions);
         print_r($arAnswers);
         print_r($arDropDown);
         print_r($arMultiSelect);
         echo "</pre>";
         */
         return $arForm["ID"];
     } else {
         return false;
     }
 }
 /**
  * <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;
 }
Example #5
0
    $headers[] = array("id" => "IN_RESULTS_TABLE", "content" => GetMessage("FORM_IN_RESULTS_TABLE"), "sort" => "s_in_results_table", "default" => true);
    $headers[] = array("id" => "IN_EXCEL_TABLE", "content" => GetMessage("FORM_IN_EXCEL_TABLE"), "sort" => "s_in_excel_table", "default" => true);
}
$lAdmin->AddHeaders($headers);
if ($additional == "Y") {
    $msg = GetMessage("FORM_EDIT_ALT");
} else {
    $msg = GetMessage("FORM_EDIT_ALT_Q");
}
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    if ($bSimple) {
        if ($arRes['ADDITIONAL'] == "Y") {
            $p_FIELD_TYPE = 'hidden';
        } else {
            $rAnswer = CFormAnswer::GetList($f_ID, $a_by, $a_order, array(), $a_is_filtered);
            $rAnswer->ExtractFields("p_");
        }
        $row->AddViewField("A_FIELD_TYPE", $p_FIELD_TYPE);
    }
    $row->AddCheckField("ACTIVE");
    if ($arRes['ADDITIONAL'] != 'Y') {
        $row->AddCheckField("REQUIRED");
    } else {
        $row->AddViewField('REQUIRED', '');
    }
    $row->AddCheckField("IN_RESULTS_TABLE");
    $row->AddCheckField("IN_EXCEL_TABLE");
    $row->AddInputField("C_SORT");
    $row->AddViewField("SID", "<a href=\"form_field_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $f_ID . "&WEB_FORM_ID=" . $WEB_FORM_ID . "&additional=" . $additional . "\" title=\"" . $msg . "\">" . htmlspecialcharsbx($f_SID) . "</a>");
    $arActions = array();
		{
			$bResults=true;
			reset($arCompat_desc);
			while($e=each($arCompat_desc))
			{
				if (in_array($ftype,array_keys($e[1])))
				{
					$arCompatList=array_keys($e[1]); // list of compatible fields
					break;
				}

			}
		}
	}

	$arTypes = CFormAnswer::GetTypeList();
	reset($arTypes['reference']);
	while ($e=each($arTypes['reference']))
	{
		if (!$ID || !$bResults || in_array($e[1],$arCompatList))
			print "<option value='$e[1]'".($e[1]==$ftype?" selected=\"selected\"":"").">".$arTypeList_desc[$e[1]]." [".$e[1]."]</option>\n";
	}
	?>
		</select>
	</tr>
	<tr>
		<td valign="top"><?php 
echo GetMessage("FORM_ANSWER");
?>
</td>
		<td>
Example #7
0
	/**
	 * <p>Для указанного <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a> обновляет значения <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> или обновляет значение <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>.</p>
	 *
	 *
	 *
	 *
	 * @param int $result_id  ID <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a>.
	 *
	 *
	 *
	 * @param string $field_sid  Символьный идентификатор <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 mixed $value = false Значение, которое необходимо сохранить. В зависимости от типа
	 * обновляемого поля, данный параметр имеет различный формат. <ul>
	 * <li>При обновлении значения <a
	 * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>, в данном параметре
	 * достаточно указать новое значение обновляемого <a
	 * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a>. </li> <li>При обновлении
	 * значений <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 ( <i>ID ответа 1</i> =&gt; <i>значение ответа
	 * 1</i>, <i>ID ответа 2</i> =&gt; <i>значение ответа 2</i>, ... )</pre>Если <a
	 * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответ</a> принадлежит к одним из
	 * следующих типов: <ul> <li> <b>radio</b> - переключатель одиночного выбора
	 * (radio-кнопка); </li> <li> <b>checkbox</b> - флаг множественного выбора (checkbox); </li>
	 * <li> <b>dropdown</b> - элемент выпадающего списка одиночного выбора; </li> <li>
	 * <b>multiselect</b> - элемент списка множественного выбора, </li> </ul>то в
	 * качестве "<i>значения ответа</i>" достаточно указать "" (пустое
	 * значение). <br><br>Если <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответ</a>
	 * имеет один из следующих типов: <ul> <li> <b>text</b> - однострочное
	 * текстовое поле; </li> <li> <b>textarea</b> - многострочное текстовое поле; </li>
	 * <li> <b>date</b> - поле для ввода даты; </li> <li> <b>password</b> - поле для ввода
	 * пароля, </li> </ul>то в качестве "<i>значения ответа</i>" необходимо
	 * указать значение, которое могло бы быть введено с клавиатуры при
	 * ответе на данный <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопрос</a>.
	 * <br><br>Если <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#answer">ответ</a> имеет один
	 * из следующих типов: <ul> <li> <b>image</b> - поле для загрузки изображения;
	 * </li> <li> <b>file</b> - поле для загрузки произвольного файла. </li> </ul>то в
	 * качестве "<i>значения ответа</i>" необходимо указать массив,
	 * описывающий файл и имеющий следующий ключи: <ul> <li> <b>name</b> - имя
	 * файла; </li> <li> <b>size</b> - размер файла; </li> <li> <b>tmp_name</b> - временный путь
	 * на сервере; </li> <li> <b>type</b> - тип загружаемого файла. </li> </ul>Такой
	 * массив можно получить с помощью функции <a
	 * href="http://dev.1c-bitrix.ru/api_help/main/reference/cfile/makefilearray.php">CFile::MakeFileArray</a>. </li>
	 * </ul>Параметр <i>value</i> необязательный. По умолчанию - false (значение <a
	 * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#field">поля</a> или значение <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> будут просто
	 * удалены).
	 *
	 *
	 *
	 * @return mixed 
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * $RESULT_ID = 186;
	 * 
	 * //<*************************************************************
	 *             Обновление значений ответов на вопросы
	 * *************************************************************>//
	 * 
	 * // обновим ответ на вопрос "Фамилия, имя, отчество"
	 * $arVALUE = array();
	 * $FIELD_SID = "VS_NAME"; // символьный идентификатор вопроса
	 * $ANSWER_ID = 586; // ID поля ответа
	 * $arVALUE[$ANSWER_ID] = "Иванов Иван";
	 * <b>CFormResult::SetField</b>($RESULT_ID, $FIELD_SID, $arVALUE);
	 * 
	 * // обновим ответ на вопрос "Дата рождения"
	 * $arVALUE = array();
	 * $FIELD_SID = "VS_BIRTHDAY"; // символьный идентификатор вопроса
	 * $ANSWER_ID = 587; // ID поля ответа
	 * $arVALUE[$ANSWER_ID] = "18.06.1975";
	 * <b>CFormResult::SetField</b>($RESULT_ID, $FIELD_SID, $arVALUE);
	 * 
	 * // обновим ответ на вопрос "Какие области знаний вас интересуют?"
	 * $arVALUE = array();
	 * $FIELD_SID = "VS_INTEREST"; // символьный идентификатор вопроса
	 * $arVALUE[612] = ""; // ID поля ответа "математика"
	 * $arVALUE[613] = ""; // ID поля ответа "физика"
	 * $arVALUE[614] = ""; // ID поля ответа "история"
	 * <b>CFormResult::SetField</b>($RESULT_ID, $FIELD_SID, $arVALUE);
	 * 
	 * // обновим ответ на вопрос "Фотография"
	 * $arVALUE = array();
	 * $FIELD_SID = "VS_PHOTO"; // символьный идентификатор вопроса
	 * $ANSWER_ID = 607; // ID поля ответа
	 * $path = $_SERVER["DOCUMENT_ROOT"]."/images/news.gif"; // путь к файлу
	 * $arVALUE[$ANSWER_ID] = CFile::MakeFileArray($path);
	 * <b>CFormResult::SetField</b>($RESULT_ID, $FIELD_SID, $arVALUE);
	 * 
	 * // обновим ответ на вопрос "Резюме"
	 * $arVALUE = array();
	 * $FIELD_SID = "VS_RESUME"; // символьный идентификатор вопроса
	 * $ANSWER_ID = 610; // ID поля ответа
	 * $path = $_SERVER["DOCUMENT_ROOT"]."/docs/alawarauthorarea.doc"; // путь к файлу
	 * $arVALUE[$ANSWER_ID] = CFile::MakeFileArray($path);
	 * <b>CFormResult::SetField</b>($RESULT_ID, $FIELD_SID, $arVALUE);
	 * 
	 * //<*************************************************************
	 *                 Обновление значений полей
	 * *************************************************************>//
	 * 
	 * // обновим значение поля "Рассчитанная стоимость"
	 * $FIELD_SID = "VS_PRICE"; // символьный идентификатор вопроса
	 * $VALUE = "155";
	 * <b>CFormResult::SetField</b>($RESULT_ID, $FIELD_SID, $VALUE);
	 * ?&gt;
	 * </pre>
	 *
	 *
	 *
	 * <h4>See Also</h4> 
	 * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/form/classes/cformresult/update.php">CFormResult::Update</a> </li>
	 * <li><a href="http://dev.1c-bitrix.ru/api_help/main/reference/cfile/makefilearray.php">CFile::MakeFileArray</a></li>
	 * </ul><a name="examples"></a>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformresult/setfield.php
	 * @author Bitrix
	 */
	public static function SetField($RESULT_ID, $FIELD_SID, $VALUE=false)
	{
		global $DB, $strError;
		$err_mess = (CAllFormResult::err_mess())."<br>Function: SetField<br>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 "<pre>".$strSql."</pre>";
						$DB->Query($strSql, false, $err_mess.__LINE__);

						if (strlen($VALUE)>0)
						{

							$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 (strlen(CFile::CheckImageFile($arIMAGE))<=0)
												{
													if (!array_key_exists("MODULE_ID", $arIMAGE) || strlen($arIMAGE["MODULE_ID"]) <= 0)
														$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 (strlen($vl_ANSWER_TEXT)<=0) $vl_ANSWER_TEXT = false;
							if (strlen($vl_ANSWER_VALUE)<=0) $vl_ANSWER_VALUE = false;
							if (strlen($vl_USER_TEXT)<=0) $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;
	}
Example #8
0
 function GetAnswerTypeList()
 {
     return CFormAnswer::GetTypeList();
 }
 function Set($arFields, $ANSWER_ID = false)
 {
     $err_mess = CAllFormAnswer::err_mess() . "<br>Function: Set<br>Line: ";
     global $DB, $USER, $strError, $APPLICATION;
     $ANSWER_ID = intval($ANSWER_ID);
     if (CFormAnswer::CheckFields($arFields, $ANSWER_ID)) {
         $arFields_i = array();
         $arFields_i["TIMESTAMP_X"] = $DB->GetNowFunction();
         if (is_set($arFields, "MESSAGE")) {
             $arFields_i["MESSAGE"] = "'" . $DB->ForSql($arFields["MESSAGE"], 2000) . "'";
         }
         if (is_set($arFields, "VALUE")) {
             $arFields_i["VALUE"] = "'" . $DB->ForSql($arFields["VALUE"], 2000) . "'";
         }
         if (is_set($arFields, "ACTIVE")) {
             $arFields_i["ACTIVE"] = $arFields["ACTIVE"] == "Y" ? "'Y'" : "'N'";
         }
         if (is_set($arFields, "C_SORT")) {
             $arFields_i["C_SORT"] = "'" . intval($arFields["C_SORT"]) . "'";
         }
         if (is_set($arFields, "FIELD_TYPE")) {
             $arFields_i["FIELD_TYPE"] = "'" . $DB->ForSql($arFields["FIELD_TYPE"], 255) . "'";
         }
         if (is_set($arFields, "FIELD_WIDTH")) {
             $arFields_i["FIELD_WIDTH"] = "'" . intval($arFields["FIELD_WIDTH"]) . "'";
         }
         if (is_set($arFields, "FIELD_HEIGHT")) {
             $arFields_i["FIELD_HEIGHT"] = "'" . intval($arFields["FIELD_HEIGHT"]) . "'";
         }
         if (is_set($arFields, "FIELD_PARAM")) {
             $arFields_i["FIELD_PARAM"] = "'" . $DB->ForSql($arFields["FIELD_PARAM"], 2000) . "'";
         }
         if ($ANSWER_ID > 0) {
             $DB->Update("b_form_answer", $arFields_i, "WHERE ID='" . $ANSWER_ID . "'", $err_mess . __LINE__);
             // обновим все результаты для данного ответа
             $arFields_u = array();
             $arFields_u["ANSWER_TEXT"] = $arFields_i["MESSAGE"];
             $arFields_u["ANSWER_VALUE"] = $arFields_i["VALUE"];
             if (intval($CURRENT_FIELD_ID) > 0) {
                 $str = " FIELD_ID = " . intval($CURRENT_FIELD_ID) . " and ";
             }
             $DB->Update("b_form_result_answer", $arFields_u, "WHERE " . $str . " ANSWER_ID='" . $ANSWER_ID . "'", $err_mess . __LINE__);
         } else {
             if (intval($arFields["QUESTION_ID"]) > 0) {
                 $arFields["FIELD_ID"] = $arFields["QUESTION_ID"];
             } else {
                 $arFields["QUESTION_ID"] = $arFields["FIELD_ID"];
             }
             $arFields_i["FIELD_ID"] = "'" . intval($arFields["QUESTION_ID"]) . "'";
             $ANSWER_ID = $DB->Insert("b_form_answer", $arFields_i, $err_mess . __LINE__);
             $ANSWER_ID = intval($ANSWER_ID);
         }
         return $ANSWER_ID;
     }
     return false;
 }
Example #10
0
	public static function GetAnswerTypeList()
	{ return CFormAnswer::GetTypeList(); }