function __form_CreateForm($SID, $__current_dir) { // check collisions $dbTmpForm = CForm::GetBySID($SID); if ($arTmpForm = $dbTmpForm->Fetch()) { return false; } //$dirName = ToLower($SID); $formConfigFile = $__current_dir . '/form.php'; $fieldsConfigFile = $__current_dir . '/fields.php'; // check config existence if (!file_exists($formConfigFile) || !file_exists($fieldsConfigFile)) { return false; } // load form config $arForm = array(); require $formConfigFile; // setup form if ($FORM_ID = CForm::Set($arForm, false, 'N')) { // load fields config $arFormFields = array(); require $fieldsConfigFile; // setup form fields foreach ($arFormFields as $key => $arField) { CFormField::Set($arField, false, 'N'); } $arStatus = array('FORM_ID' => $FORM_ID, 'TITLE' => 'DEFAULT', 'CSORT' => 100, 'ACTIVE' => 'Y', 'DEFAULT_VALUE' => 'Y', 'arPERMISSION_MOVE' => array(0)); CFormStatus::Set($arStatus, false, 'N'); } return $FORM_ID; }
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; }
"find_status_id_exact_match", "find_timestamp_1", "find_timestamp_2", "find_date_create_2", "find_date_create_1", "find_date_create_2", "find_registered", "find_user_auth", "find_user_id", "find_user_id_exact_match", "find_guest_id", "find_guest_id_exact_match", "find_session_id", "find_session_id_exact_match" ); $z = CFormField::GetFilterList($WEB_FORM_ID, array("ACTIVE" => "Y")); while ($zr=$z->Fetch()) { $FID = $WEB_FORM_NAME."_".$zr["SID"]."_".$zr["PARAMETER_NAME"]."_".$zr["FILTER_TYPE"]; $zr["FID"] = $FID; $arrFORM_FILTER[$zr["SID"]][] = $zr; $fname = "find_".$FID; if ($zr["FILTER_TYPE"]=="date" || $zr["FILTER_TYPE"]=="integer") { $FilterArr[] = $fname."_1"; $FilterArr[] = $fname."_2"; $FilterArr[] = $fname."_0"; } elseif ($zr["FILTER_TYPE"]=="text") { $FilterArr[] = $fname;
function SetMailTemplate($WEB_FORM_ID, $ADD_NEW_TEMPLATE = "Y", $old_SID = "", $bReturnFullInfo = false) { global $DB, $MESS, $strError; $err_mess = CAllForm::err_mess() . "<br>Function: SetMailTemplates<br>Line: "; $arrReturn = array(); $WEB_FORM_ID = intval($WEB_FORM_ID); $q = CForm::GetByID($WEB_FORM_ID); if ($arrForm = $q->Fetch()) { $MAIL_EVENT_TYPE = "FORM_FILLING_" . $arrForm["SID"]; if (strlen($old_SID) > 0) { $old_MAIL_EVENT_TYPE = "FORM_FILLING_" . $old_SID; } $et = new CEventType(); $em = new CEventMessage(); if (strlen($MAIL_EVENT_TYPE) > 0) { $et->Delete($MAIL_EVENT_TYPE); } $z = CLanguage::GetList($v1, $v2); $OLD_MESS = $MESS; while ($arLang = $z->Fetch()) { IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/form/admin/form_mail.php", $arLang["LID"]); $str = ""; $str .= "#RS_FORM_ID# - " . GetMessage("FORM_L_FORM_ID") . "\n"; $str .= "#RS_FORM_NAME# - " . GetMessage("FORM_L_NAME") . "\n"; $str .= "#RS_FORM_SID# - " . GetMessage("FORM_L_SID") . "\n"; $str .= "#RS_RESULT_ID# - " . GetMessage("FORM_L_RESULT_ID") . "\n"; $str .= "#RS_DATE_CREATE# - " . GetMessage("FORM_L_DATE_CREATE") . "\n"; $str .= "#RS_USER_ID# - " . GetMessage("FORM_L_USER_ID") . "\n"; $str .= "#RS_USER_EMAIL# - " . GetMessage("FORM_L_USER_EMAIL") . "\n"; $str .= "#RS_USER_NAME# - " . GetMessage("FORM_L_USER_NAME") . "\n"; $str .= "#RS_USER_AUTH# - " . GetMessage("FORM_L_USER_AUTH") . "\n"; $str .= "#RS_STAT_GUEST_ID# - " . GetMessage("FORM_L_STAT_GUEST_ID") . "\n"; $str .= "#RS_STAT_SESSION_ID# - " . GetMessage("FORM_L_STAT_SESSION_ID") . "\n"; $strFIELDS = ""; $w = CFormField::GetList($WEB_FORM_ID, "ALL", $by, $order, array(), $is_filtered); while ($wr = $w->Fetch()) { if (strlen($wr["RESULTS_TABLE_TITLE"]) > 0) { $FIELD_TITLE = $wr["RESULTS_TABLE_TITLE"]; } elseif (strlen($wr["TITLE"]) > 0) { $FIELD_TITLE = $wr["TITLE_TYPE"] == "html" ? htmlspecialcharsback(strip_tags($wr["TITLE"])) : $wr["TITLE"]; } else { $FIELD_TITLE = TrimEx($wr["FILTER_TITLE"], ":"); } $str .= "#" . $wr["SID"] . "# - " . $FIELD_TITLE . "\n"; $str .= "#" . $wr["SID"] . "_RAW# - " . $FIELD_TITLE . " (" . GetMessage('FORM_L_RAW') . ")\n"; $strFIELDS .= $FIELD_TITLE . "\n*******************************\n#" . $wr["SID"] . "#\n\n"; } $et->Add(array("LID" => $arLang["LID"], "EVENT_NAME" => $MAIL_EVENT_TYPE, "NAME" => GetMessage("FORM_FILLING") . " \"" . $arrForm["SID"] . "\"", "DESCRIPTION" => $str)); } // задаем новый тип событи¤ дл¤ старых шаблонов if (strlen($old_MAIL_EVENT_TYPE) > 0 && $old_MAIL_EVENT_TYPE != $MAIL_EVENT_TYPE) { $e = $em->GetList($by = "id", $order = "desc", array("EVENT_NAME" => $old_MAIL_EVENT_TYPE)); while ($er = $e->Fetch()) { $em->Update($er["ID"], array("EVENT_NAME" => $MAIL_EVENT_TYPE)); } if (strlen($old_MAIL_EVENT_TYPE) > 0) { $et->Delete($old_MAIL_EVENT_TYPE); } } if ($ADD_NEW_TEMPLATE == "Y") { $z = CSite::GetList($v1, $v2); while ($arSite = $z->Fetch()) { $arrSiteLang[$arSite["ID"]] = $arSite["LANGUAGE_ID"]; } $arrFormSite = CForm::GetSiteArray($WEB_FORM_ID); if (is_array($arrFormSite) && count($arrFormSite) > 0) { foreach ($arrFormSite as $sid) { IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/form/admin/form_mail.php", $arrSiteLang[$sid]); $SUBJECT = "#SERVER_NAME#: " . GetMessage("FORM_FILLING_S") . " [#RS_FORM_ID#] #RS_FORM_NAME#"; $MESSAGE = "#SERVER_NAME#\n\n" . GetMessage("FORM_FILLING") . ": [#RS_FORM_ID#] #RS_FORM_NAME#\n-------------------------------------------------------\n\n" . GetMessage("FORM_DATE_CREATE") . "#RS_DATE_CREATE#\n" . GetMessage("FORM_RESULT_ID") . "#RS_RESULT_ID#\n" . GetMessage("FORM_USER") . "[#RS_USER_ID#] #RS_USER_NAME# #RS_USER_AUTH#\n" . GetMessage("FORM_STAT_GUEST_ID") . "#RS_STAT_GUEST_ID#\n" . GetMessage("FORM_STAT_SESSION_ID") . "#RS_STAT_SESSION_ID#\n\n\n{$strFIELDS}\n" . GetMessage("FORM_VIEW") . "\nhttp://#SERVER_NAME#/bitrix/admin/form_result_view.php?lang=" . $arrSiteLang[$sid] . "&WEB_FORM_ID=#RS_FORM_ID#&RESULT_ID=#RS_RESULT_ID#\n\n-------------------------------------------------------\n" . GetMessage("FORM_GENERATED_AUTOMATICALLY") . "\n\t\t\t\t\t\t"; // добавл¤ем новый шаблон $arFields = array("ACTIVE" => "Y", "EVENT_NAME" => $MAIL_EVENT_TYPE, "LID" => $sid, "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#", "EMAIL_TO" => "#DEFAULT_EMAIL_FROM#", "SUBJECT" => $SUBJECT, "MESSAGE" => $MESSAGE, "BODY_TYPE" => "text"); $TEMPLATE_ID = $em->Add($arFields); if ($bReturnFullInfo) { $arrReturn[] = array('ID' => $TEMPLATE_ID, 'FIELDS' => $arFields); } else { $arrReturn[] = $TEMPLATE_ID; } } } } $MESS = $OLD_MESS; } return $arrReturn; }
$arCRMServers = array(); $dbRes = CFormCrm::GetList(array('NAME' => 'ASC', 'ID' => 'ASC'), array()); while ($arServer = $dbRes->Fetch()) { $arCRMServers[] = $arServer; } $dbRes = CFormCrm::GetByFormID($ID); $bLinkCreated = false; if ($arFormCrmLink = $dbRes->Fetch()) { $bLinkCreated = true; $dbRes = CFormCrm::GetFields($arFormCrmLink['ID']); $arFormCrmFields = array(); while ($arFld = $dbRes->Fetch()) { $arFormCrmFields[] = $arFld; } } $dbRes = CFormField::GetList($ID, 'ALL', $by, $order, array(), $is_filtered); $arFormFields = array(); while ($arFld = $dbRes->Fetch()) { $arFormFields[] = $arFld; } if (false && !$bLinkCreated) { ?> <tr> <td colspan="2" align="center"><?php echo BeginNote(), GetMessage('FORM_CRM_NOT_SET'), EndNote(); ?> </td> </tr> <?php } else { ?>
if (!$DB->Update("b_form_field", $arFieldsStore, "WHERE ID='" . $ID . "'", $err_mess . __LINE__)) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("DELETE_ERROR"), $ID); } $DB->Commit(); break; } } if (!$_REQUEST["mode"]) { LocalRedirect("form_field_list.php?lang=" . LANGUAGE_ID . "&WEB_FORM_ID=" . $WEB_FORM_ID . "&additional=" . $additional); } } $sDocTitle = $additional == "Y" ? GetMessage("FORM_PAGE_ADDITIONAL_TITLE") : GetMessage("FORM_PAGE_TITLE"); $APPLICATION->SetTitle(str_replace("#ID#", "{$WEB_FORM_ID}", $sDocTitle)); ////////////////////////////////////////////////////////////////////// $rsData = CFormField::GetList($WEB_FORM_ID, $additional, $by, $order, $arFilter, $is_filtered); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint($additional == "Y" ? GetMessage("FORM_PAGES") : GetMessage("FORM_PAGES_Q"))); $headers = array(); $headers[] = array("id" => "ID", "content" => "ID", "sort" => "s_id", "default" => true); $headers[] = array("id" => "ACTIVE", "content" => GetMessage("FORM_ACTIVE"), "sort" => "s_active", "default" => true); $headers[] = array("id" => "C_SORT", "content" => GetMessage("FORM_C_SORT"), "sort" => "s_sort", "default" => true); if ($additional != 'Y') { $headers[] = array("id" => "REQUIRED", "content" => GetMessage("FORM_REQUIRED"), "sort" => "s_required", "default" => true); } if (!$bSimple) { $headers[] = array("id" => "SID", "content" => GetMessage("FORM_SID"), "sort" => "s_sid", "default" => true); } if ($additional == "Y") { $headers[] = array("id" => "TITLE", "content" => GetMessage("FORM_ADDITIONAL_TITLE"), "sort" => "s_title", "default" => true);
/** * <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; }
} // get columns titles if ($arResult["res_counter"] > 0) { $arFilter = array( "IN_RESULTS_TABLE" => "Y", "RESULT_ID" => implode(" | ", $arResult["arRID"]) ); CForm::GetResultAnswerArray($arParams["WEB_FORM_ID"], $arResult["arrColumns"], $arResult["arrAnswers"], $arResult["arrAnswersSID"], $arFilter); } else { $arFilter = array("IN_RESULTS_TABLE" => "Y"); $rsFields = CFormField::GetList($arParams["WEB_FORM_ID"], "ALL", ($v1="s_c_sort"), ($v2="asc"), $arFilter, $v3); while ($arField = $rsFields->Fetch()) { $arResult["arrColumns"][$arField["ID"]] = $arField; } } if (is_array($arResult["arrAnswers"])) { foreach ($arResult["arrAnswers"] as $res_key => $arrResult) { foreach ($arrResult as $q_key => $arAnswers) { foreach ($arAnswers as $a_key => $arrA) { if (strlen(trim($arrA["USER_TEXT"]))>0)
function __prepareFilter() { $FilterArr = array("find_id", "find_id_exact_match", "find_status", "find_status_id", "find_status_id_exact_match", "find_timestamp_1", "find_timestamp_2", "find_date_create_2", "find_date_create_1", "find_date_create_2", "find_registered", "find_user_auth", "find_user_id", "find_user_id_exact_match", "find_guest_id", "find_guest_id_exact_match", "find_session_id", "find_session_id_exact_match"); $z = CFormField::GetFilterList($this->WEB_FORM_ID, array("ACTIVE" => "Y")); while ($zr = $z->Fetch()) { $FID = $this->WEB_FORM_NAME . "_" . $zr["SID"] . "_" . $zr["PARAMETER_NAME"] . "_" . $zr["FILTER_TYPE"]; $zr["FID"] = $FID; $arrFORM_FILTER[$zr["SID"]][] = $zr; $fname = "find_" . $FID; if ($zr["FILTER_TYPE"] == "date" || $zr["FILTER_TYPE"] == "integer") { $FilterArr[] = $fname . "_1"; $FilterArr[] = $fname . "_2"; $FilterArr[] = $fname . "_0"; } elseif ($zr["FILTER_TYPE"] == "text") { $FilterArr[] = $fname; $FilterArr[] = $fname . "_exact_match"; } else { $FilterArr[] = $fname; } } $sess_filter = "FORM_RESULT_LIST_" . $this->WEB_FORM_NAME; if (strlen($_REQUEST["set_filter"]) > 0) { InitFilterEx($FilterArr, $sess_filter, "set"); } else { InitFilterEx($FilterArr, $sess_filter, "get"); } if (strlen($_REQUEST["del_filter"]) > 0) { DelFilterEx($FilterArr, $sess_filter); } else { InitBVar($find_id_exact_match); InitBVar($find_status_id_exact_match); InitBVar($find_user_id_exact_match); InitBVar($find_guest_id_exact_match); InitBVar($find_session_id_exact_match); $str_error = ""; if ($this->__checkFilter($str_error)) { $arFilter = array("ID" => $find_id, "ID_EXACT_MATCH" => $find_id_exact_match, "STATUS" => $find_status, "STATUS_ID" => $find_status_id, "STATUS_ID_EXACT_MATCH" => $find_status_id_exact_match, "TIMESTAMP_1" => $find_timestamp_1, "TIMESTAMP_2" => $find_timestamp_2, "DATE_CREATE_1" => $find_date_create_1, "DATE_CREATE_2" => $find_date_create_2, "REGISTERED" => $find_registered, "USER_AUTH" => $find_user_auth, "USER_ID" => $find_user_id, "USER_ID_EXACT_MATCH" => $find_user_id_exact_match, "GUEST_ID" => $find_guest_id, "GUEST_ID_EXACT_MATCH" => $find_guest_id_exact_match, "SESSION_ID" => $find_session_id, "SESSION_ID_EXACT_MATCH" => $find_session_id_exact_match); if (is_array($arrFORM_FILTER)) { foreach ($arrFORM_FILTER as $arrF) { foreach ($arrF as $arr) { if ($arr["FILTER_TYPE"] == "date" || $arr["FILTER_TYPE"] == "integer") { $arFilter[$arr["FID"] . "_1"] = ${"find_" . $arr["FID"] . "_1"}; $arFilter[$arr["FID"] . "_2"] = ${"find_" . $arr["FID"] . "_2"}; $arFilter[$arr["FID"] . "_0"] = ${"find_" . $arr["FID"] . "_0"}; } elseif ($arr["FILTER_TYPE"] == "text") { $arFilter[$arr["FID"]] = ${"find_" . $arr["FID"]}; $exact_match = ${"find_" . $arr["FID"] . "_exact_match"} == "Y" ? "Y" : "N"; $arFilter[$arr["FID"] . "_exact_match"] = $exact_match; } else { $arFilter[$arr["FID"]] = ${"find_" . $arr["FID"]}; } } } } } } return $arFilter; }
<?php } //endif(CModule::IncludeModule("statistic")); ?> </table></td> <?php } //endif;($F_RIGHT>=25) ?> <?php if ($res_counter > 0) { $arFilter = array("IN_RESULTS_TABLE" => "Y", "RESULT_ID" => implode(" | ", $arRID)); CForm::GetResultAnswerArray($WEB_FORM_ID, $arrColumns, $arrAnswers, $arrAnswersSID, $arFilter); } else { $arFilter = array("IN_RESULTS_TABLE" => "Y"); $rsFields = CFormField::GetList($WEB_FORM_ID, "ALL", $v1 = "s_c_sort", $v2 = "asc", $arFilter, $v3); while ($arField = $rsFields->Fetch()) { $arrColumns[$arField["ID"]] = $arField; } } $colspan = 4; if (is_array($arrColumns)) { reset($arrColumns); while (list($key, $arrCol) = each($arrColumns)) { if (!is_array($arrNOT_SHOW_TABLE) || !in_array($arrCol["SID"], $arrNOT_SHOW_TABLE)) { if ($arrCol["ADDITIONAL"] == "Y" && $SHOW_ADDITIONAL == "Y" || $arrCol["ADDITIONAL"] != "Y") { $colspan++; if (strlen($arrCol["RESULTS_TABLE_TITLE"]) <= 0) { $title = $arrCol["TITLE_TYPE"] == "html" ? strip_tags($arrCol["TITLE"]) : htmlspecialchars($arrCol["TITLE"]); $title = TruncateText($title, 100); } else {
function GetList($WEB_FORM_ID, &$by, &$order, $arFilter=Array(), &$is_filtered, $CHECK_RIGHTS="Y", $records_limit=false) { $err_mess = (CFormResult::err_mess())."<br>Function: GetList<br>Line: "; global $DB, $USER, $strError; $CHECK_RIGHTS = ($CHECK_RIGHTS=="Y") ? "Y" : "N"; $WEB_FORM_ID = intval($WEB_FORM_ID); $F_RIGHT = CForm::GetPermission($WEB_FORM_ID); $USER_ID = intval($USER->GetID()); $arSqlSearch = array(); $arr["FIELDS"] = array(); $strSqlSearch = ""; if (is_array($arFilter)) { $arFilter = CFormResult::PrepareFilter($WEB_FORM_ID, $arFilter); $z = CForm::GetByID($WEB_FORM_ID); $form = $z->Fetch(); /***********************/ $z = CFormField::GetList($WEB_FORM_ID, "", $v1, $v2, array(), $v3); while ($zr=$z->Fetch()) { $arPARAMETER_NAME = array("ANSWER_TEXT", "ANSWER_VALUE", "USER"); CFormField::GetFilterTypeList($arrUSER, $arrANSWER_TEXT, $arrANSWER_VALUE, $arrFIELD); foreach ($arPARAMETER_NAME as $PARAMETER_NAME) { switch ($PARAMETER_NAME) { case "ANSWER_TEXT": $arFILTER_TYPE = $arrANSWER_TEXT["reference_id"]; break; case "ANSWER_VALUE": $arFILTER_TYPE = $arrANSWER_VALUE["reference_id"]; break; case "USER": $arFILTER_TYPE = $arrUSER["reference_id"]; break; } foreach ($arFILTER_TYPE as $FILTER_TYPE) { $arrUF = array(); $arrUF["ID"] = $zr["ID"]; $arrUF["PARAMETER_NAME"] = $PARAMETER_NAME; $arrUF["FILTER_TYPE"] = $FILTER_TYPE; $FID = $form["SID"]."_".$zr["SID"]."_".$PARAMETER_NAME."_".$FILTER_TYPE; if ($FILTER_TYPE=="date" || $FILTER_TYPE=="integer") { $arrUF["SIDE"] = "1"; $arrFORM_FILTER[$FID."_1"] = $arrUF; $arrUF["SIDE"] = "2"; $arrFORM_FILTER[$FID."_2"] = $arrUF; $arrUF["SIDE"] = "0"; $arrFORM_FILTER[$FID."_0"] = $arrUF; } else $arrFORM_FILTER[$FID] = $arrUF; } } } if (is_array($arrFORM_FILTER)) $arrFORM_FILTER_KEYS = array_keys($arrFORM_FILTER); //echo "arFilter:<pre>"; print_r($arFilter); echo "</pre>"; //echo "arrFORM_FILTER:<pre>"; print_r($arrFORM_FILTER); echo "</pre>"; //echo "arrFORM_FILTER_KEYS:<pre>"; print_r($arrFORM_FILTER_KEYS); echo "</pre>"; $t = 0; $filter_keys = array_keys($arFilter); for ($i=0; $i<count($filter_keys); $i++) { $key = $filter_keys[$i]; $val = $arFilter[$filter_keys[$i]]; if(is_array($val)) { if(count($val) <= 0) continue; } else { if( (strlen($val) <= 0) || ($val === "NOT_REF") ) continue; } $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys)) ? true : false; $key = strtoupper($key); switch($key) { case "ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.ID", $val, $match); break; case "STATUS": $arSqlSearch[] = "R.STATUS_ID='".intval($val)."'"; break; case "STATUS_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.STATUS_ID", $val, $match); break; case "TIMESTAMP_1": $arSqlSearch[] = "R.TIMESTAMP_X>=".$DB->CharToDateFunction($val, "SHORT"); break; case "TIMESTAMP_2": $arSqlSearch[] = "R.TIMESTAMP_X<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; break; case "DATE_CREATE_1": $arSqlSearch[] = "R.DATE_CREATE>=".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE_CREATE_2": $arSqlSearch[] = "R.DATE_CREATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; break; case "TIME_CREATE_1": $arSqlSearch[] = "R.DATE_CREATE>=".$DB->CharToDateFunction($val, "FULL"); break; case "TIME_CREATE_2": $arSqlSearch[] = "R.DATE_CREATE<".$DB->CharToDateFunction($val, "FULL"); break; case "REGISTERED": $arSqlSearch[] = ($val=="Y") ? "R.USER_ID>0" : "(R.USER_ID<=0 or R.USER_ID is null)"; break; case "USER_AUTH": $arSqlSearch[] = ($val=="Y") ? "(R.USER_AUTH='Y' and R.USER_ID>0)" : "(R.USER_AUTH='N' and R.USER_ID>0)"; break; case "USER_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.USER_ID", $val, $match); break; case "GUEST_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.STAT_GUEST_ID", $val, $match); break; case "SESSION_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.STAT_SESSION_ID", $val, $match); break; case "SENT_TO_CRM": $arSqlSearch[] = GetFilterQuery("R.SENT_TO_CRM", $val, "Y"); break; default: if (is_array($arrFORM_FILTER)) { $key = $filter_keys[$i]; if (in_array($key, $arrFORM_FILTER_KEYS)) { $arrF = $arrFORM_FILTER[$key]; if (is_array($arr["FIELDS"]) && !in_array($arrF["ID"],$arr["FIELDS"])) { $t++; $A = "A".$t; $arr["TABLES"][] = "b_form_result_answer ".$A; $arr["WHERE"][] = "(".$A.".RESULT_ID=R.ID and ".$A.".FIELD_ID='".$arrF["ID"]."')"; $arr["FIELDS"][] = $arrF["ID"]; } switch(strtoupper($arrF["FILTER_TYPE"])) { case "EXIST": if ($arrF["PARAMETER_NAME"]=="ANSWER_TEXT") $arSqlSearch[] = "length(".$A.".ANSWER_TEXT)+0>0"; elseif ($arrF["PARAMETER_NAME"]=="ANSWER_VALUE") $arSqlSearch[] = "length(".$A.".ANSWER_VALUE)+0>0"; elseif ($arrF["PARAMETER_NAME"]=="USER") $arSqlSearch[] = "length(".$A.".USER_TEXT)+0>0"; break; case "TEXT": $match = ($arFilter[$key."_exact_match"]=="Y") ? "N" : "Y"; $sql = ""; if ($arrF["PARAMETER_NAME"]=="ANSWER_TEXT") $sql = GetFilterQuery($A.".ANSWER_TEXT_SEARCH", ToUpper($val), $match); elseif ($arrF["PARAMETER_NAME"]=="ANSWER_VALUE") $sql = GetFilterQuery($A.".ANSWER_VALUE_SEARCH", ToUpper($val), $match); elseif ($arrF["PARAMETER_NAME"]=="USER") $sql = GetFilterQuery($A.".USER_TEXT_SEARCH", ToUpper($val), $match); if ($sql!=="0" && strlen(trim($sql))>0) $arSqlSearch[] = $sql; break; case "DROPDOWN": case "ANSWER_ID": $arSqlSearch[] = $A.".ANSWER_ID=".intval($val); break; case "DATE": if ($arrF["PARAMETER_NAME"]=="USER") { if (CheckDateTime($val)) { if ($arrF["SIDE"]=="1") $arSqlSearch[] = $A.".USER_DATE>=".$DB->CharToDateFunction($val, "SHORT"); elseif ($arrF["SIDE"]=="2") $arSqlSearch[] = $A.".USER_DATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; elseif ($arrF["SIDE"]=="0") $arSqlSearch[] = $A.".USER_DATE=".$DB->CharToDateFunction($val); } } break; case "INTEGER": if ($arrF["PARAMETER_NAME"]=="USER") { if ($arrF["SIDE"]=="1") $arSqlSearch[] = $A.".USER_TEXT+0>=".intval($val); elseif ($arrF["SIDE"]=="2") $arSqlSearch[] = $A.".USER_TEXT+0<=".intval($val); elseif ($arrF["SIDE"]=="0") $arSqlSearch[] = $A.".USER_TEXT='".intval($val)."'"; } elseif ($arrF["PARAMETER_NAME"]=="ANSWER_TEXT") { if ($arrF["SIDE"]=="1") $arSqlSearch[] = $A.".ANSWER_TEXT+0>=".intval($val); elseif ($arrF["SIDE"]=="2") $arSqlSearch[] = $A.".ANSWER_TEXT+0<=".intval($val); elseif ($arrF["SIDE"]=="0") $arSqlSearch[] = $A.".ANSWER_TEXT='".intval($val)."'"; } elseif ($arrF["PARAMETER_NAME"]=="ANSWER_VALUE") { if ($arrF["SIDE"]=="1") $arSqlSearch[] = $A.".ANSWER_VALUE+0>=".intval($val); elseif ($arrF["SIDE"]=="2") $arSqlSearch[] = $A.".ANSWER_VALUE+0<=".intval($val); elseif ($arrF["SIDE"]=="0") $arSqlSearch[] = $A.".ANSWER_VALUE='".intval($val)."'"; } break; } } } } } } if ($by == "s_id") $strSqlOrder = "ORDER BY R.ID"; elseif ($by == "s_date_create") $strSqlOrder = "ORDER BY R.DATE_CREATE"; elseif ($by == "s_timestamp") $strSqlOrder = "ORDER BY R.TIMESTAMP_X"; elseif ($by == "s_user_id") $strSqlOrder = "ORDER BY R.USER_ID"; elseif ($by == "s_guest_id") $strSqlOrder = "ORDER BY R.STAT_GUEST_ID"; elseif ($by == "s_session_id") $strSqlOrder = "ORDER BY R.STAT_SESSION_ID"; elseif ($by == "s_status") $strSqlOrder = "ORDER BY R.STATUS_ID"; elseif ($by == "s_sent_to_crm") $strSqlOrder = "ORDER BY R.SENT_TO_CRM"; else { $by = "s_timestamp"; $strSqlOrder = "ORDER BY R.TIMESTAMP_X"; } if ($order!="asc") { $strSqlOrder .= " desc "; $order="desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if (is_array($arr["TABLES"])) $str1 = implode(",\n ",$arr["TABLES"]); if (is_array($arr["WHERE"])) $str2 = implode("\n and ",$arr["WHERE"]); if (strlen($str1)>0) $str1 = ",\n ".$str1; if (strlen($str2)>0) $str2 = "\n and ".$str2; if ($records_limit===false) { $records_limit = "LIMIT ".intval(COption::GetOptionString("form","RECORDS_LIMIT")); } else { $records_limit = intval($records_limit); if ($records_limit>0) { $records_limit = "LIMIT ".$records_limit; } } //this hack is for mysql <3.23. we no longer support that dino. //$DB->Query("SET SQL_BIG_TABLES=1", false, $err_mess.__LINE__); if ($CHECK_RIGHTS!="Y" || $F_RIGHT >= 30 || CForm::IsAdmin()) { $strSql = " SELECT R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID, R.SENT_TO_CRM, ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE, ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X, S.TITLE STATUS_TITLE, S.CSS STATUS_CSS FROM b_form_result R, b_form_status S $str1 WHERE $strSqlSearch $str2 and R.FORM_ID = '$WEB_FORM_ID' and S.ID = R.STATUS_ID GROUP BY R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.DATE_CREATE, R.STATUS_ID, R.SENT_TO_CRM $strSqlOrder $records_limit "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); //echo '<pre>'.$strSql.'</pre>'; } elseif ($F_RIGHT>=15) { $arGroups = $USER->GetUserGroupArray(); if (!is_array($arGroups)) $arGroups[] = 2; if (is_array($arGroups) && count($arGroups)>0) $groups = implode(",",$arGroups); if ($F_RIGHT<20) $str3 = "and ifnull(R.USER_ID,0) = $USER_ID"; $strSql = " SELECT R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID, R.SENT_TO_CRM, ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE, ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X, S.TITLE STATUS_TITLE, S.CSS STATUS_CSS FROM b_form_result R, b_form_status S, b_form_status_2_group G$str1 WHERE $strSqlSearch $str2 $str3 and R.FORM_ID = '$WEB_FORM_ID' and S.ID = R.STATUS_ID and G.STATUS_ID = S.ID and ( (G.GROUP_ID in ($groups)) or (G.GROUP_ID in ($groups,0) and ifnull(R.USER_ID,0) = $USER_ID and $USER_ID>0) ) and G.PERMISSION in ('VIEW', 'EDIT', 'DELETE') GROUP BY R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.SENT_TO_CRM, R.DATE_CREATE, R.STATUS_ID, R.SENT_TO_CRM $strSqlOrder $records_limit "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); } else { $res = new CDBResult(); $res->InitFromArray(array()); } //echo "<pre>".$strSql."</pre>"; //echo "<pre>".$strSqlSearch."</pre>"; $is_filtered = (IsFiltered($strSqlSearch)); return $res; }
function GetFilterList($WEB_FORM_ID, $arFilter = array()) { return CFormField::GetFilterList($WEB_FORM_ID, $arFilter); }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule("form")) { return; } $arrForms = array(); $rsForm = CForm::GetList($by = 's_sort', $order = 'asc', !empty($_REQUEST["site"]) ? array("SITE" => $_REQUEST["site"]) : array(), $v3); while ($arForm = $rsForm->Fetch()) { $arrForms[$arForm["ID"]] = "[" . $arForm["ID"] . "] " . $arForm["NAME"]; } if (intval($arCurrentValues["WEB_FORM_ID"]) > 0) { $show_list = true; $rsFieldList = CFormField::GetList(intval($arCurrentValues["WEB_FORM_ID"]), "ALL", $by = "s_sort", $order = "asc", array(), $is_filtered); $arFieldList = array(); while ($arField = $rsFieldList->GetNext()) { $arFieldList[$arField["SID"]] = "[" . $arField["SID"] . "] " . $arField["TITLE"]; } } else { $show_list = false; } $arYesNo = array("Y" => GetMessage("FORM_COMP_VALUE_YES"), "N" => GetMessage("FORM_COMP_VALUE_NO")); $arComponentParameters = array("GROUPS" => array("FORM_PARAMS" => array("NAME" => GetMessage("COMP_FORM_GROUP_PARAMS"))), "PARAMETERS" => array("VARIABLE_ALIASES" => array(), "SEF_MODE" => array(), "WEB_FORM_ID" => array("NAME" => GetMessage("COMP_FORM_PARAMS_WEB_FORM_ID"), "TYPE" => "LIST", "VALUES" => $arrForms, "REFRESH" => "Y", "ADDITIONAL_VALUES" => "Y", "DEFAULT" => "={\$_REQUEST[WEB_FORM_ID]}", "PARENT" => "DATA_SOURCE"), "VIEW_URL" => array("NAME" => GetMessage("COMP_FORM_PARAMS_VIEW_URL"), "TYPE" => "STRING", "DEFAULT" => "result_view.php", "PARENT" => "FORM_PARAMS"), "EDIT_URL" => array("NAME" => GetMessage("COMP_FORM_PARAMS_EDIT_URL"), "TYPE" => "STRING", "DEFAULT" => "result_edit.php", "PARENT" => "FORM_PARAMS"), "NEW_URL" => array("NAME" => GetMessage("COMP_FORM_PARAMS_NEW_URL"), "TYPE" => "STRING", "DEFAULT" => "result_new.php", "PARENT" => "FORM_PARAMS"), "SHOW_ADDITIONAL" => array("NAME" => GetMessage("COMP_FORM_PARAMS_SHOW_ADDITIONAL"), "TYPE" => "CHECKBOX", "ADDITIONAL_VALUES" => "N", "DEFAULT" => "N", "PARENT" => "FORM_PARAMS"), "SHOW_ANSWER_VALUE" => array("NAME" => GetMessage("COMP_FORM_PARAMS_SHOW_ANSWER_VALUE"), "TYPE" => "CHECKBOX", "ADDITIONAL_VALUES" => "N", "DEFAULT" => "N", "PARENT" => "FORM_PARAMS"), "SHOW_STATUS" => array("NAME" => GetMessage("COMP_FORM_PARAMS_SHOW_STATUS"), "TYPE" => "CHECKBOX", "ADDITIONAL_VALUES" => "N", "DEFAULT" => "Y", "PARENT" => "FORM_PARAMS"), "NOT_SHOW_FILTER" => array("NAME" => $show_list ? GetMessage("COMP_FORM_PARAMS_NOT_SHOW_FILTER_LIST") : GetMessage("COMP_FORM_PARAMS_NOT_SHOW_FILTER"), "TYPE" => $show_list ? "LIST" : "STRING", "MULTIPLE" => $show_list ? "Y" : "", "VALUES" => $show_list ? $arFieldList : "", "ADDITIONAL_VALUES" => $show_list ? "Y" : "", "DEFAULT" => "", "PARENT" => "FORM_PARAMS"), "NOT_SHOW_TABLE" => array("NAME" => $show_list ? GetMessage("COMP_FORM_PARAMS_NOT_SHOW_TABLE_LIST") : GetMessage("COMP_FORM_PARAMS_NOT_SHOW_TABLE_LIST"), "TYPE" => $show_list ? "LIST" : "STRING", "MULTIPLE" => $show_list ? "Y" : "", "VALUES" => $show_list ? $arFieldList : "", "ADDITIONAL_VALUES" => $show_list ? "Y" : "", "DEFAULT" => "", "PARENT" => "FORM_PARAMS"), "CHAIN_ITEM_TEXT" => array("NAME" => GetMessage("COMP_FORM_PARAMS_CHAIN_ITEM_TEXT"), "TYPE" => "STRING", "DEFAULT" => "", "PARENT" => "FORM_PARAMS"), "CHAIN_ITEM_LINK" => array("NAME" => GetMessage("COMP_FORM_PARAMS_CHAIN_ITEM_LINK"), "TYPE" => "STRING", "DEFAULT" => "", "PARENT" => "FORM_PARAMS")));
/** * @return string */ public function getForm() { /* * select form list */ $formList = array(); $formDb = \CForm::GetList($by = "s_sort", $order = "asc", array(), $filtered); while ($form = $formDb->Fetch()) { $formList[] = array('ID' => $form['ID'], 'NAME' => $form['NAME']); } if (!empty($formList)) { $formList = array_merge(array(array('ID' => '', 'NAME' => Loc::getMessage('sender_connector_form_select'))), $formList); } else { $formList = array_merge(array(array('ID' => '', 'NAME' => Loc::getMessage('sender_connector_form_empty'))), $formList); } /* * select properties from all forms */ $propertyToForm = array(); $propertyList = array(); $propertyList[''][] = array('ID' => '', 'NAME' => Loc::getMessage('sender_connector_form_select')); $propertyList['EMPTY'][] = array('ID' => '', 'NAME' => Loc::getMessage('sender_connector_form_prop_empty')); foreach ($formList as $form) { if (empty($form['ID'])) { continue; } $formFieldsDb = \CFormField::GetList($form['ID'], 'N', $by = "s_sort", $order = "asc", array(), $filtered); while ($formFields = $formFieldsDb->Fetch()) { if ($formFields['TITLE_TYPE'] != 'text') { continue; } // add default value if (!array_key_exists($formFields['FORM_ID'], $propertyList)) { $propertyList[$formFields['FORM_ID']][] = array('ID' => '', 'NAME' => Loc::getMessage('sender_connector_form_field_select')); } // add property $propertyList[$formFields['FORM_ID']][] = array('ID' => $formFields['ID'], 'NAME' => $formFields['TITLE']); // add property link to iblock $propertyToForm[$formFields['ID']] = $formFields['FORM_ID']; } } /* * create html-control of form list */ $formInput = '<select name="' . $this->getFieldName('FORM') . '" id="' . $this->getFieldId('FORM') . '" onChange="FormSelect' . $this->getFieldId('FORM') . '()">'; foreach ($formList as $form) { $inputSelected = $form['ID'] == $this->getFieldValue('FORM') ? 'selected' : ''; $formInput .= '<option value="' . $form['ID'] . '" ' . $inputSelected . '>'; $formInput .= htmlspecialcharsbx($form['NAME']); $formInput .= '</option>'; } $formInput .= '</select>'; /* * create html-control of properties list for name */ $formPropertyNameInput = '<select name="' . $this->getFieldName('PROPERTY_NAME') . '" id="' . $this->getFieldId('PROPERTY_NAME') . '">'; if (array_key_exists($this->getFieldValue('PROPERTY_NAME', 0), $propertyToForm)) { $arProp = $propertyList[$propertyToForm[$this->getFieldValue('PROPERTY_NAME', 0)]]; } else { $arProp = $propertyList['']; } foreach ($arProp as $property) { $inputSelected = $property['ID'] == $this->getFieldValue('PROPERTY_NAME') ? 'selected' : ''; $formPropertyNameInput .= '<option value="' . $property['ID'] . '" ' . $inputSelected . '>'; $formPropertyNameInput .= htmlspecialcharsbx($property['NAME']); $formPropertyNameInput .= '</option>'; } $formPropertyNameInput .= '</select>'; /* * create html-control of properties list for email */ $formPropertyEmailInput = '<select name="' . $this->getFieldName('PROPERTY_EMAIL') . '" id="' . $this->getFieldId('PROPERTY_EMAIL') . '">'; if (array_key_exists($this->getFieldValue('PROPERTY_EMAIL', 0), $propertyToForm)) { $arProp = $propertyList[$propertyToForm[$this->getFieldValue('PROPERTY_EMAIL', 0)]]; } else { $arProp = $propertyList['']; } foreach ($arProp as $property) { $inputSelected = $property['ID'] == $this->getFieldValue('PROPERTY_EMAIL') ? 'selected' : ''; $formPropertyEmailInput .= '<option value="' . $property['ID'] . '" ' . $inputSelected . '>'; $formPropertyEmailInput .= htmlspecialcharsbx($property['NAME']); $formPropertyEmailInput .= '</option>'; } $formPropertyEmailInput .= '</select>'; $jsScript = "\n\t\t<script>\n\t\t\tfunction FormSelect" . $this->getFieldId('FORM') . "()\n\t\t\t{\n\t\t\t\tvar iblock = BX('" . $this->getFieldId('FORM') . "');\n\t\t\t\tFormPropertyAdd(iblock, BX('" . $this->getFieldId('PROPERTY_NAME') . "'));\n\t\t\t\tFormPropertyAdd(iblock, BX('" . $this->getFieldId('PROPERTY_EMAIL') . "'));\n\t\t\t}\n\t\t\tfunction FormPropertyAdd(iblock, iblockProperty)\n\t\t\t{\n\t\t\t\tif(iblockProperty.length>0)\n\t\t\t\t{\n\t\t\t\t\tfor (var j in iblockProperty.options)\n\t\t\t\t\t{\n\t\t\t\t\t\tiblockProperty.options.remove(j);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar propList = {};\n\t\t\t\tif(formProperties[iblock.value] && formProperties[iblock.value].length>0)\n\t\t\t\t\tpropList = formProperties[iblock.value];\n\t\t\t\telse\n\t\t\t\t\tpropList = formProperties['EMPTY'];\n\t\t\t\tfor(var i in propList)\n\t\t\t\t{\n\t\t\t\t\tvar optionName = propList[i]['NAME'];\n\t\t\t\t\tvar optionValue = propList[i]['ID'];\n\t\t\t\t\tiblockProperty.options.add(new Option(optionName, optionValue));\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar formProperties = " . \CUtil::PhpToJSObject($propertyList) . ";\n\t\t</script>\n\t\t"; return ' ' . Loc::getMessage('sender_connector_form_required_settings') . ' <br/><br/> <table> <tr> <td>' . Loc::getMessage('sender_connector_form_field_form') . '</td> <td>' . $formInput . '</td> </tr> <tr> <td>' . Loc::getMessage('sender_connector_form_field_name') . '</td> <td>' . $formPropertyNameInput . '</td> </tr> <tr> <td>' . Loc::getMessage('sender_connector_form_field_email') . '</td> <td>' . $formPropertyEmailInput . '</td> </tr> </table> ' . $jsScript . ' '; }
function GetList($WEB_FORM_ID, &$by, &$order, $arFilter = array(), &$is_filtered, $CHECK_RIGHTS = "Y", $records_limit = false) { $err_mess = CFormResult::err_mess() . "<br>Function: GetList<br>Line: "; global $DB, $USER, $strError; $CHECK_RIGHTS = $CHECK_RIGHTS == "Y" ? "Y" : "N"; $WEB_FORM_ID = intval($WEB_FORM_ID); $F_RIGHT = CForm::GetPermission($WEB_FORM_ID); $USER_ID = intval($USER->GetID()); $arSqlSearch = array(); $arrSEARCH = array(); $arrFIELDS = array(); $strSqlSearch = ""; if (is_array($arFilter)) { $arFilter = CFormResult::PrepareFilter($WEB_FORM_ID, $arFilter); $z = CForm::GetByID($WEB_FORM_ID); $form = $z->Fetch(); $z = CFormField::GetList($WEB_FORM_ID, "", $v1, $v2, array(), $v3); while ($zr = $z->Fetch()) { $arPARAMETER_NAME = array("ANSWER_TEXT", "ANSWER_VALUE", "USER"); CFormField::GetFilterTypeList($arrUSER, $arrANSWER_TEXT, $arrANSWER_VALUE, $arrFIELD); foreach ($arPARAMETER_NAME as $PARAMETER_NAME) { switch ($PARAMETER_NAME) { case "ANSWER_TEXT": $arFILTER_TYPE = $arrANSWER_TEXT["reference_id"]; break; case "ANSWER_VALUE": $arFILTER_TYPE = $arrANSWER_VALUE["reference_id"]; break; case "USER": $arFILTER_TYPE = $arrUSER["reference_id"]; break; } foreach ($arFILTER_TYPE as $FILTER_TYPE) { $arrUF = array(); $arrUF["ID"] = $zr["ID"]; $arrUF["PARAMETER_NAME"] = $PARAMETER_NAME; $arrUF["FILTER_TYPE"] = $FILTER_TYPE; $FID = $form["SID"] . "_" . $zr["SID"] . "_" . $PARAMETER_NAME . "_" . $FILTER_TYPE; if ($FILTER_TYPE == "date" || $FILTER_TYPE == "integer") { $arrUF["SIDE"] = "1"; $arrFORM_FILTER[$FID . "_1"] = $arrUF; $arrUF["SIDE"] = "2"; $arrFORM_FILTER[$FID . "_2"] = $arrUF; $arrUF["SIDE"] = "0"; $arrFORM_FILTER[$FID . "_0"] = $arrUF; } else { $arrFORM_FILTER[$FID] = $arrUF; } } } } if (is_array($arrFORM_FILTER)) { $arrFORM_FILTER_KEYS = array_keys($arrFORM_FILTER); } //echo "arFilter:<pre>"; print_r($arFilter); echo "</pre>"; //echo "arrFORM_FILTER:<pre>"; print_r($arrFORM_FILTER); echo "</pre>"; //echo "arrFORM_FILTER_KEYS:<pre>"; print_r($arrFORM_FILTER_KEYS); echo "</pre>"; $t = 0; $filter_keys = array_keys($arFilter); for ($i = 0; $i < count($filter_keys); $i++) { $key = $filter_keys[$i]; $val = $arFilter[$filter_keys[$i]]; if (strlen($val) <= 0 || "{$val}" == "NOT_REF") { continue; } if (is_array($val) && count($val) <= 0) { continue; } $match_value_set = in_array($key . "_EXACT_MATCH", $filter_keys) ? true : false; $key = strtoupper($key); switch ($key) { case "ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.ID", $val, $match); break; case "STATUS": $arSqlSearch[] = "R.STATUS_ID='" . intval($val) . "'"; break; case "STATUS_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.STATUS_ID", $val, $match); break; case "TIMESTAMP_1": $arSqlSearch[] = "R.TIMESTAMP_X>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "TIMESTAMP_2": $arSqlSearch[] = "R.TIMESTAMP_X<" . $DB->CharToDateFunction($val, "SHORT") . "+1"; break; case "DATE_CREATE_1": $arSqlSearch[] = "R.DATE_CREATE>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "DATE_CREATE_2": $arSqlSearch[] = "R.DATE_CREATE<" . $DB->CharToDateFunction($val, "SHORT") . "+1"; break; case "TIME_CREATE_1": $arSqlSearch[] = "R.DATE_CREATE>=" . $DB->CharToDateFunction($val, "FULL"); break; case "TIME_CREATE_2": $arSqlSearch[] = "R.DATE_CREATE<" . $DB->CharToDateFunction($val, "FULL"); break; case "REGISTERED": $arSqlSearch[] = $val == "Y" ? "R.USER_ID>0" : "(R.USER_ID<=0 or R.USER_ID is null)"; break; case "USER_AUTH": $arSqlSearch[] = $val == "Y" ? "(R.USER_AUTH='Y' and R.USER_ID>0)" : "(R.USER_AUTH='N' and R.USER_ID>0)"; break; case "USER_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.USER_ID", $val, $match); break; case "GUEST_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.STAT_GUEST_ID", $val, $match); break; case "SESSION_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("R.STAT_SESSION_ID", $val, $match); break; default: if (is_array($arrFORM_FILTER)) { $key = $filter_keys[$i]; if (in_array($key, $arrFORM_FILTER_KEYS)) { $arrF = $arrFORM_FILTER[$key]; if (!in_array($arrF["ID"], $arrFIELDS)) { $t++; $arSqlSearch_f = array(); $A = "A" . $t; $arrFIELDS[$t] = $arrF["ID"]; } switch (strtoupper($arrF["FILTER_TYPE"])) { case "EXIST": if ($arrF["PARAMETER_NAME"] == "ANSWER_TEXT") { $arSqlSearch_f[] = $A . ".ANSWER_TEXT is not null"; } elseif ($arrF["PARAMETER_NAME"] == "ANSWER_VALUE") { $arSqlSearch_f[] = $A . ".ANSWER_VALUE is not null"; } elseif ($arrF["PARAMETER_NAME"] == "USER") { $arSqlSearch_f[] = $A . ".USER_TEXT is not null"; } break; case "TEXT": $match = $arFilter[$key . "_exact_match"] == "Y" ? "N" : "Y"; $sql = ""; if ($arrF["PARAMETER_NAME"] == "ANSWER_TEXT") { $sql = GetFilterQuery($A . ".ANSWER_TEXT_SEARCH", ToUpper($val), $match, array(), "Y", "Y", "Y"); } elseif ($arrF["PARAMETER_NAME"] == "ANSWER_VALUE") { $sql = GetFilterQuery($A . ".ANSWER_VALUE_SEARCH", ToUpper($val), $match, array(), "Y", "Y", "Y"); } elseif ($arrF["PARAMETER_NAME"] == "USER") { $sql = GetFilterQuery($A . ".USER_TEXT_SEARCH", ToUpper($val), $match, array(), "Y", "Y", "Y"); } if ($sql !== "0" && strlen(trim($sql)) > 0) { $arSqlSearch_f[] = $sql; } break; case "DROPDOWN": case "ANSWER_ID": $arSqlSearch_f[] = $A . ".ANSWER_ID=" . intval($val); break; case "DATE": if ($arrF["PARAMETER_NAME"] == "USER") { if (CheckDateTime($val)) { if ($arrF["SIDE"] == "1") { $arSqlSearch_f[] = $A . ".USER_DATE>=" . $DB->CharToDateFunction($val, "SHORT"); } elseif ($arrF["SIDE"] == "2") { $arSqlSearch_f[] = $A . ".USER_DATE<" . $DB->CharToDateFunction($val, "SHORT") . "+1"; } elseif ($arrF["SIDE"] == "0") { $arSqlSearch_f[] = $A . ".USER_DATE=" . $DB->CharToDateFunction($val); } } } break; case "INTEGER": if ($arrF["PARAMETER_NAME"] == "USER") { if ($arrF["SIDE"] == "1") { $arSqlSearch_f[] = "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCONVERT_TO_NUMBER(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDBMS_LOB.SUBSTR(" . $A . ".USER_TEXT, \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDBMS_LOB.GETLENGTH(" . $A . ".USER_TEXT),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)>=" . intval($val); } elseif ($arrF["SIDE"] == "2") { $arSqlSearch_f[] = "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCONVERT_TO_NUMBER(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDBMS_LOB.SUBSTR(" . $A . ".USER_TEXT,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDBMS_LOB.GETLENGTH(" . $A . ".USER_TEXT),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)<=" . intval($val); } elseif ($arrF["SIDE"] == "0") { $arSqlSearch_f[] = "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCONVERT_TO_NUMBER(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDBMS_LOB.SUBSTR(" . $A . ".USER_TEXT,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDBMS_LOB.GETLENGTH(" . $A . ".USER_TEXT),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)=" . intval($val); } } elseif ($arrF["PARAMETER_NAME"] == "ANSWER_TEXT") { if ($arrF["SIDE"] == "1") { $arSqlSearch_f[] = "CONVERT_TO_NUMBER(" . $A . ".ANSWER_TEXT)>=" . intval($val); } elseif ($arrF["SIDE"] == "2") { $arSqlSearch_f[] = "CONVERT_TO_NUMBER(" . $A . ".ANSWER_TEXT)<=" . intval($val); } elseif ($arrF["SIDE"] == "0") { $arSqlSearch_f[] = "CONVERT_TO_NUMBER(" . $A . ".ANSWER_TEXT)=" . intval($val); } } elseif ($arrF["PARAMETER_NAME"] == "ANSWER_VALUE") { if ($arrF["SIDE"] == "1") { $arSqlSearch_f[] = "CONVERT_TO_NUMBER(" . $A . ".ANSWER_VALUE)>=" . intval($val); } elseif ($arrF["SIDE"] == "2") { $arSqlSearch_f[] = "CONVERT_TO_NUMBER(" . $A . ".ANSWER_VALUE)<=" . intval($val); } elseif ($arrF["SIDE"] == "0") { $arSqlSearch_f[] = "CONVERT_TO_NUMBER(" . $A . ".ANSWER_VALUE)=" . intval($val); } } break; } if (is_array($arSqlSearch_f) && count($arSqlSearch_f) > 0) { $arrSEARCH[$t] = $arSqlSearch_f; } } } } } } if ($by == "s_id") { $strSqlOrder = "ORDER BY R.ID"; } elseif ($by == "s_date_create") { $strSqlOrder = "ORDER BY R.DATE_CREATE"; } elseif ($by == "s_timestamp") { $strSqlOrder = "ORDER BY R.TIMESTAMP_X"; } elseif ($by == "s_user_id") { $strSqlOrder = "ORDER BY R.USER_ID"; } elseif ($by == "s_guest_id") { $strSqlOrder = "ORDER BY R.STAT_GUEST_ID"; } elseif ($by == "s_session_id") { $strSqlOrder = "ORDER BY R.STAT_SESSION_ID"; } elseif ($by == "s_valid") { $strSqlOrder = "ORDER BY R.VALID"; } else { $by = "s_timestamp"; $strSqlOrder = "ORDER BY R.TIMESTAMP_X"; } if ($order != "asc") { $strSqlOrder .= " desc "; $order = "desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSqlSearch_F = ""; if (is_array($arrSEARCH) && count($arrSEARCH) > 0) { reset($arrSEARCH); while (list($index, $arrS) = each($arrSEARCH)) { $field = intval($arrFIELDS[$index]); if ($field > 0) { $str = implode(" and ", $arrS); $strSqlSearch_F .= "\r\n\t\t\t\t\t\tand EXISTS (\r\n\t\t\t\t\t\t\tSELECT 'x' FROM b_form_result_answer A{$index} \r\n\t\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\t\tA{$index}.RESULT_ID=R.ID \r\n\t\t\t\t\t\t\tand A{$index}.FIELD_ID={$field}\r\n\t\t\t\t\t\t\tand {$str}\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t"; } } } $records_limit = $records_limit === false ? intval(COption::GetOptionString("form", "RECORDS_LIMIT")) : intval($records_limit); if ($CHECK_RIGHTS != "Y" || CForm::IsAdmin()) { $strSql = "\r\n\t\t\t\tSELECT \r\n\t\t\t\t\tR.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID,\r\n\t\t\t\t\t" . $DB->DateToCharFunction("R.DATE_CREATE") . "\tDATE_CREATE,\r\n\t\t\t\t\t" . $DB->DateToCharFunction("R.TIMESTAMP_X") . "\tTIMESTAMP_X,\r\n\t\t\t\t\tS.TITLE\t\t\t\tSTATUS_TITLE,\r\n\t\t\t\t\tS.CSS\t\t\t\tSTATUS_CSS\r\n\t\t\t\tFROM \r\n\t\t\t\t\tb_form_result R, \r\n\t\t\t\t\tb_form_status S\r\n\t\t\t\tWHERE \r\n\t\t\t\t{$strSqlSearch}\r\n\t\t\t\t{$strSqlSearch_F}\r\n\t\t\t\tand R.FORM_ID='{$WEB_FORM_ID}'\r\n\t\t\t\tand S.ID = R.STATUS_ID\r\n\t\t\t\tGROUP BY \r\n\t\t\t\t\tR.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.DATE_CREATE, R.TIMESTAMP_X, R.STATUS_ID, S.ID, S.TITLE, S.CSS\r\n\t\t\t\t{$strSqlOrder}\r\n\t\t\t\t"; if ($records_limit > 0) { $strSql = "SELECT * FROM ({$strSql}) WHERE ROWNUM<=" . $records_limit; } $res = $DB->Query($strSql, false, $err_mess . __LINE__); } elseif ($F_RIGHT >= 15) { $arGroups = $USER->GetUserGroupArray(); if (!is_array($arGroups)) { $arGroups[] = 2; } if (is_array($arGroups) && count($arGroups) > 0) { $groups = implode(",", $arGroups); } if ($F_RIGHT < 20) { $str3 = "and nvl(R.USER_ID,0) = {$USER_ID}"; } $strSql = "\r\n\t\t\t\tSELECT \r\n\t\t\t\t\tR.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID,\r\n\t\t\t\t\t" . $DB->DateToCharFunction("R.DATE_CREATE") . "\tDATE_CREATE,\r\n\t\t\t\t\t" . $DB->DateToCharFunction("R.TIMESTAMP_X") . "\tTIMESTAMP_X,\r\n\t\t\t\t\tS.TITLE\t\t\t\tSTATUS_TITLE,\r\n\t\t\t\t\tS.CSS\t\t\t\tSTATUS_CSS\r\n\t\t\t\tFROM \r\n\t\t\t\t\tb_form_result R, \r\n\t\t\t\t\tb_form_status S, \r\n\t\t\t\t\tb_form_status_2_group G\r\n\t\t\t\tWHERE \r\n\t\t\t\t{$strSqlSearch}\r\n\t\t\t\t{$strSqlSearch_F}\r\n\t\t\t\tand R.FORM_ID='{$WEB_FORM_ID}'\r\n\t\t\t\tand S.ID = R.STATUS_ID\r\n\t\t\t\tand G.STATUS_ID = S.ID\r\n\t\t\t\tand (\r\n\t\t\t\t\t(G.GROUP_ID in ({$groups})) or\r\n\t\t\t\t\t(G.GROUP_ID in ({$groups},0) and nvl(R.USER_ID,0) = {$USER_ID} and {$USER_ID}>0)\r\n\t\t\t\t\t)\r\n\t\t\t\tand G.PERMISSION in ('VIEW', 'EDIT', 'DELETE')\r\n\t\t\t\tGROUP BY \r\n\t\t\t\t\tR.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.DATE_CREATE, R.TIMESTAMP_X, R.STATUS_ID, S.ID, S.TITLE, S.CSS\r\n\t\t\t\t{$strSqlOrder}\r\n\t\t\t\t"; if ($records_limit > 0) { $strSql = "SELECT * FROM ({$strSql}) WHERE ROWNUM<=" . $records_limit; } $res = $DB->Query($strSql, false, $err_mess . __LINE__); } else { $res = new CDBResult(); $res->InitFromArray(array()); } //echo "<pre>".$strSqlSearch."</pre>"; //echo "<pre>".$strSql."</pre>"; $is_filtered = IsFiltered($strSqlSearch) || strlen($strSqlSearch_F) > 0; return $res; }
/** * <p>Создает почтовое событие для отсылки данных <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a> по e-mail. Возвращает "true" в случае успеха, в противном случае - "false".</p> * * * * * @param int $result_id ID <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#result">результата</a>. * * * * @param mixed $template_id = false ID почтового шаблона.<br><br> Параметр необязательный. По умолчанию - * "false" (будут использованы почтовые шаблоны из настроек * соответствующей веб-формы). * * * * @return bool * * * <h4>Example</h4> * <pre> * <? * $RESULT_ID = 189; // ID результата * * // создадим почтовое событие для отсылки по EMail данных результата * if (<b>CFormResult::Mail</b>($RESULT_ID)) * { * echo "Почтовое событие успешно создано."; * } * else // ошибка * { * global $strError; * echo $strError; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformresult/mail.php * @author Bitrix */ public static function Mail($RESULT_ID, $TEMPLATE_ID = false) { global $APPLICATION, $DB, $MESS, $strError; $err_mess = (CAllFormResult::err_mess())."<br>Function: Mail<br>Line: "; $RESULT_ID = intval($RESULT_ID); CTimeZone::Disable(); $arrResult = CFormResult::GetDataByID($RESULT_ID, array(), $arrRES, $arrANSWER); CTimeZone::Enable(); if ($arrResult) { $z = CForm::GetByID($arrRES["FORM_ID"]); if ($arrFORM = $z->Fetch()) { $TEMPLATE_ID = intval($TEMPLATE_ID); $arrFormSites = CForm::GetSiteArray($arrRES["FORM_ID"]); $arrFormSites = (is_array($arrFormSites)) ? $arrFormSites : array(); if (!defined('SITE_ID') || !in_array(SITE_ID, $arrFormSites)) return true; $rs = CSite::GetList(($by="sort"), ($order="asc"), array('ID' => implode('|', $arrFormSites))); $arrSites = array(); while ($ar = $rs->Fetch()) { if ($ar["DEF"]=="Y") $def_site_id = $ar["ID"]; $arrSites[$ar["ID"]] = $ar; } $arrFormTemplates = CForm::GetMailTemplateArray($arrRES["FORM_ID"]); $arrFormTemplates = (is_array($arrFormTemplates)) ? $arrFormTemplates : array(); $arrTemplates = array(); $rs = CEventMessage::GetList($by="id", $order="asc", array( "ACTIVE" => "Y", "SITE_ID" => SITE_ID, "EVENT_NAME" => $arrFORM["MAIL_EVENT_TYPE"] )); while ($ar = $rs->Fetch()) { if ($TEMPLATE_ID>0) { if ($TEMPLATE_ID == $ar["ID"]) { $arrTemplates[$ar["ID"]] = $ar; break; } } elseif (in_array($ar["ID"],$arrFormTemplates)) $arrTemplates[$ar["ID"]] = $ar; } foreach($arrTemplates as $arrTemplate) { $OLD_MESS = $MESS; $MESS = array(); IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/form_mail.php", $arrSites[$arrTemplate["SITE_ID"]]["LANGUAGE_ID"]); $USER_AUTH = " "; if (intval($arrRES["USER_ID"])>0) { $w = CUser::GetByID($arrRES["USER_ID"]); $arrUSER = $w->Fetch(); $USER_ID = $arrUSER["ID"]; $USER_EMAIL = $arrUSER["EMAIL"]; $USER_NAME = $arrUSER["NAME"]." ".$arrUSER["LAST_NAME"]; if ($arrRES["USER_AUTH"]!="Y") $USER_AUTH="(".GetMessage("FORM_NOT_AUTHORIZED").")"; } else { $USER_ID = GetMessage("FORM_NOT_REGISTERED"); $USER_NAME = ""; $USER_AUTH = ""; $USER_EMAIL = ""; } $arEventFields = array( "RS_FORM_ID" => $arrFORM["ID"], "RS_FORM_NAME" => $arrFORM["NAME"], "RS_FORM_VARNAME" => $arrFORM["SID"], "RS_FORM_SID" => $arrFORM["SID"], "RS_RESULT_ID" => $arrRES["ID"], "RS_DATE_CREATE" => $arrRES["DATE_CREATE"], "RS_USER_ID" => $USER_ID, "RS_USER_EMAIL" => $USER_EMAIL, "RS_USER_NAME" => $USER_NAME, "RS_USER_AUTH" => $USER_AUTH, "RS_STAT_GUEST_ID" => $arrRES["STAT_GUEST_ID"], "RS_STAT_SESSION_ID" => $arrRES["STAT_SESSION_ID"] ); $w = CFormField::GetList($arrFORM["ID"], "ALL", $by, $order, array(), $is_filtered); while ($wr=$w->Fetch()) { $answer = ""; $answer_raw = ''; if (is_array($arrResult[$wr["SID"]])) { //echo '<pre>'; print_r($wr); echo '</pre>'; //echo '<pre>'; print_r($arrResult[$wr['SID']]); $bHasDiffTypes = false; $lastType = ''; foreach ($arrResult[$wr['SID']] as $arrA) { if ($lastType == '') $lastType = $arrA['FIELD_TYPE']; elseif ($arrA['FIELD_TYPE'] != $lastType) { $bHasDiffTypes = true; break; } } foreach($arrResult[$wr["SID"]] as $arrA) { if ($wr['ADDITIONAL'] == 'Y') $arrA['FIELD_TYPE'] = $wr['FIELD_TYPE']; $USER_TEXT_EXIST = (strlen(trim($arrA["USER_TEXT"]))>0); $ANSWER_TEXT_EXIST = (strlen(trim($arrA["ANSWER_TEXT"]))>0); $ANSWER_VALUE_EXIST = (strlen(trim($arrA["ANSWER_VALUE"]))>0); $USER_FILE_EXIST = (intval($arrA["USER_FILE_ID"])>0); //echo 'USER_TEXT_EXIST '.$USER_TEXT_EXIST.' '.$USER_TEXT.'<br />'; //echo 'ANSWER_TEXT_EXIST '.$ANSWER_TEXT_EXIST.' '.$ANSWER_TEXT.'<br />'; //echo 'ANSWER_VALUE_EXIST '.$ANSWER_VALUE_EXIST.' '.$ANSWER_VALUE.'<br />'; //echo 'USER_FILE_EXIST '.$USER_FILE_EXIST.' '.$USER_FILE.'<br />'; if ($arrTemplate["BODY_TYPE"]=="html") { if ( $bHasDiffTypes && !$USER_TEXT_EXIST && ( $arrA['FIELD_TYPE'] == 'text' || $arrA['FIELD_TYPE'] == 'textarea' ) ) continue; if (strlen(trim($answer))>0) $answer .= "<br />"; if (strlen(trim($answer_raw))>0) $answer_raw .= ","; if ($ANSWER_TEXT_EXIST) $answer .= $arrA["ANSWER_TEXT"].': '; switch ($arrA['FIELD_TYPE']) { case 'text': case 'textarea': case 'hidden': case 'date': case 'password': case 'integer': if ($USER_TEXT_EXIST) { $answer .= trim($arrA["USER_TEXT"]); $answer_raw .= trim($arrA["USER_TEXT"]); } break; case 'email': case 'url': if ($USER_TEXT_EXIST) { $answer .= '<a href="'.($arrA['FIELD_TYPE'] == 'email' ? 'mailto:' : '').trim($arrA["USER_TEXT"]).'">'.trim($arrA["USER_TEXT"]).'</a>'; $answer_raw .= trim($arrA["USER_TEXT"]); } break; case 'checkbox': case 'multiselect': case 'radio': case 'dropdown': if ($ANSWER_TEXT_EXIST) { $answer = substr($answer, 0, -2).' '; $answer_raw .= $arrA['ANSWER_TEXT']; } if ($ANSWER_VALUE_EXIST) { $answer .= '('.$arrA['ANSWER_VALUE'].') '; if (!$ANSWER_TEXT_EXIST) $answer_raw .= $arrA['ANSWER_VALUE']; } if (!$ANSWER_VALUE_EXIST && !$ANSWER_TEXT_EXIST) $answer_raw .= $arrA['ANSWER_ID']; $answer .= '['.$arrA['ANSWER_ID'].']'; break; case 'file': case 'image': if ($USER_FILE_EXIST) { $f = CFile::GetByID($arrA["USER_FILE_ID"]); if ($fr = $f->Fetch()) { $file_size = CFile::FormatSize($fr["FILE_SIZE"]); $url = ($APPLICATION->IsHTTPS() ? "https://" : "http://").$_SERVER["HTTP_HOST"]. "/bitrix/tools/form_show_file.php?rid=".$RESULT_ID. "&hash=".$arrA["USER_FILE_HASH"]."&lang=".LANGUAGE_ID; if ($arrA["USER_FILE_IS_IMAGE"]=="Y") { $answer .= "<a href=\"$url\">".$arrA["USER_FILE_NAME"]."</a> [".$fr["WIDTH"]." x ".$fr["HEIGHT"]."] (".$file_size.")"; } else { $answer .= "<a href=\"$url&action=download\">".$arrA["USER_FILE_NAME"]."</a> (".$file_size.")"; } $answer_raw .= $arrA['USER_FILE_NAME']; } } break; } } else { //echo $bHasDiffTypes.'*'.$USER_TEXT_EXIST.'<br />'; if ( $bHasDiffTypes && !$USER_TEXT_EXIST && ( $arrA['FIELD_TYPE'] == 'text' || $arrA['FIELD_TYPE'] == 'textarea' ) ) continue; if (strlen(trim($answer)) > 0) $answer .= "\n"; if (strlen(trim($answer_raw)) > 0) $answer_raw .= ","; if ($ANSWER_TEXT_EXIST) $answer .= $arrA["ANSWER_TEXT"].': '; switch ($arrA['FIELD_TYPE']) { case 'text': case 'textarea': case 'email': case 'url': case 'hidden': case 'date': case 'password': case 'integer': if ($USER_TEXT_EXIST) { $answer .= trim($arrA["USER_TEXT"]); $answer_raw .= trim($arrA["USER_TEXT"]); } break; case 'checkbox': case 'multiselect': case 'radio': case 'dropdown': if ($ANSWER_TEXT_EXIST) { $answer = substr($answer, 0, -2).' '; $answer_raw .= $arrA['ANSWER_TEXT']; } if ($ANSWER_VALUE_EXIST) { $answer .= '('.$arrA['ANSWER_VALUE'].') '; if (!$ANSWER_TEXT_EXIST) { $answer_raw .= $arrA['ANSWER_VALUE']; } } if (!$ANSWER_VALUE_EXIST && !$ANSWER_TEXT_EXIST) { $answer_raw .= $arrA['ANSWER_ID']; } $answer .= '['.$arrA['ANSWER_ID'].']'; break; case 'file': case 'image': if ($USER_FILE_EXIST) { $f = CFile::GetByID($arrA["USER_FILE_ID"]); if ($fr = $f->Fetch()) { $file_size = CFile::FormatSize($fr["FILE_SIZE"]); $url = ($APPLICATION->IsHTTPS() ? "https://" : "http://").$_SERVER["HTTP_HOST"]. "/bitrix/tools/form_show_file.php?rid=".$RESULT_ID. "&hash=".$arrA["USER_FILE_HASH"]."&action=download&lang=".LANGUAGE_ID; if ($arrA["USER_FILE_IS_IMAGE"]=="Y") { $answer .= $arrA["USER_FILE_NAME"]." [".$fr["WIDTH"]." x ".$fr["HEIGHT"]."] (".$file_size.")\n".$url; } else { $answer .= $arrA["USER_FILE_NAME"]." (".$file_size.")\n".$url."&action=download"; } } $answer_raw .= $arrA['USER_FILE_NAME']; } break; } } } } $arEventFields[$wr["SID"]] = (strlen($answer)<=0) ? " " : $answer; $arEventFields[$wr["SID"].'_RAW'] = (strlen($answer_raw)<=0) ? " " : $answer_raw; } CEvent::Send($arrTemplate["EVENT_NAME"], $arrTemplate["SITE_ID"], $arEventFields, "Y", $arrTemplate["ID"]); $MESS = $OLD_MESS; } //foreach($arrTemplates as $arrTemplate) return true; } else $strError .= GetMessage("FORM_ERROR_FORM_NOT_FOUND")."<br>"; } else $strError .= GetMessage("FORM_ERROR_RESULT_NOT_FOUND")."<br>"; return false; }
<td><input type="text" name="RESULTS_TABLE_TITLE" size="50" value="<?php echo $str_RESULTS_TABLE_TITLE; ?> " /></td> </tr> <?php //******************** //General Tab //******************** $tabControl->BeginNextTab(); ?> <?php CFormField::GetFilterTypeList($arrUSER, $arrANSWER_TEXT, $arrANSWER_VALUE, $arrFIELD); if ($ID > 0) { $arrFilter = array(); $z = CFormField::GetFilterList($WEB_FORM_ID, array("FIELD_ID" => $ID, "FIELD_ID_EXACT_MATCH" => "Y")); while ($zr = $z->Fetch()) { $arrFilter[$zr["PARAMETER_NAME"]][] = $zr["FILTER_TYPE"]; } } if ($additional != "Y") { ?> <tr> <td><?php echo GetMessage("FORM_FILTER_FOR_USER"); ?> <br><img src="/bitrix/images/form/mouse.gif" width="44" height="21" border=0 alt="" /></td> <td><?php echo SelectBoxMFromArray("arFILTER_USER[]", array("REFERENCE" => $arrUSER["reference"], "REFERENCE_ID" => $arrUSER["reference_id"]), $arrFilter["USER"], "", false, "5"); ?> </td>
" id="btn_new" style="width:20;height:20;"></div></td> <td><?php echo GetMessage("FORM_ANS_ADD"); ?> </td> </tr> </table> </div> <div id="type_hidden"> <table class="internal"> <tr class="heading"> <td><?echo GetMessage("FORM_ADDITIONAL_FIELD_TYPE")?></td> </tr> <tr> <td><? echo SelectBoxFromArray("FIELD_HIDDEN_TYPE", CFormField::GetTypeList(), $str_FIELD_TYPE); ?></td> </tr> </table> </div> </td> </tr> <script>ShowSelected();</script> <? //******************** // Validators Tab //******************** $tabControl->BeginNextTab(); $rsValidators = CFormValidator::GetAllList(); if ($rsValidators->SelectedRowsCount() > 0)
protected static function _getAllFormFields($WEB_FORM_ID, $RESULT_ID, $arAnswers) { global $APPLICATION; $strResult = ""; $w = CFormField::GetList($WEB_FORM_ID, "ALL", $by, $order, array("ACTIVE" => "Y"), $is_filtered); while ($wr=$w->Fetch()) { $answer = ""; $answer_raw = ''; if (is_array($arAnswers[$wr["SID"]])) { $bHasDiffTypes = false; $lastType = ''; foreach ($arAnswers[$wr['SID']] as $arrA) { if ($lastType == '') $lastType = $arrA['FIELD_TYPE']; elseif ($arrA['FIELD_TYPE'] != $lastType) { $bHasDiffTypes = true; break; } } foreach($arAnswers[$wr["SID"]] as $arrA) { if ($wr['ADDITIONAL'] == 'Y') { $arrA['FIELD_TYPE'] = $wr['FIELD_TYPE']; } $USER_TEXT_EXIST = (strlen(trim($arrA["USER_TEXT"]))>0); $ANSWER_TEXT_EXIST = (strlen(trim($arrA["ANSWER_TEXT"]))>0); $ANSWER_VALUE_EXIST = (strlen(trim($arrA["ANSWER_VALUE"]))>0); $USER_FILE_EXIST = (intval($arrA["USER_FILE_ID"])>0); if ( $bHasDiffTypes && !$USER_TEXT_EXIST && ( $arrA['FIELD_TYPE'] == 'text' || $arrA['FIELD_TYPE'] == 'textarea' ) ) { continue; } if (strlen(trim($answer)) > 0) $answer .= "\n"; if (strlen(trim($answer_raw)) > 0) $answer_raw .= ","; if ($ANSWER_TEXT_EXIST) $answer .= $arrA["ANSWER_TEXT"].': '; switch ($arrA['FIELD_TYPE']) { case 'text': case 'textarea': case 'email': case 'url': case 'hidden': case 'date': case 'password': if ($USER_TEXT_EXIST) { $answer .= trim($arrA["USER_TEXT"]); $answer_raw .= trim($arrA["USER_TEXT"]); } break; case 'checkbox': case 'multiselect': case 'radio': case 'dropdown': if ($ANSWER_TEXT_EXIST) { $answer = substr($answer, 0, -2).' '; $answer_raw .= $arrA['ANSWER_TEXT']; } if ($ANSWER_VALUE_EXIST) { $answer .= '('.$arrA['ANSWER_VALUE'].') '; if (!$ANSWER_TEXT_EXIST) { $answer_raw .= $arrA['ANSWER_VALUE']; } } if (!$ANSWER_VALUE_EXIST && !$ANSWER_TEXT_EXIST) { $answer_raw .= $arrA['ANSWER_ID']; } $answer .= '['.$arrA['ANSWER_ID'].']'; break; case 'file': case 'image': if ($USER_FILE_EXIST) { $f = CFile::GetByID($arrA["USER_FILE_ID"]); if ($fr = $f->Fetch()) { $file_size = CFile::FormatSize($fr["FILE_SIZE"]); $url = ($APPLICATION->IsHTTPS() ? "https://" : "http://").$_SERVER["HTTP_HOST"]. "/freetrix/tools/form_show_file.php?rid=".$RESULT_ID. "&hash=".$arrA["USER_FILE_HASH"]."&action=download&lang=".LANGUAGE_ID; if ($arrA["USER_FILE_IS_IMAGE"]=="Y") { $answer .= $arrA["USER_FILE_NAME"]." [".$fr["WIDTH"]." x ".$fr["HEIGHT"]."] (".$file_size.")\n".$url; } else { $answer .= $arrA["USER_FILE_NAME"]." (".$file_size.")\n".$url."&action=download"; } } $answer_raw .= $arrA['USER_FILE_NAME']; } break; } } } $strResult .= $wr["TITLE"].":\r\n".(strlen($answer)<=0 ? " " : $answer)."\r\n\r\n"; } return $strResult; }
public static function GetFilterList($WEB_FORM_ID, $arFilter=Array()) { return CFormField::GetFilterList($WEB_FORM_ID, $arFilter); }