Beispiel #1
0
		<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>
 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;
 }
	"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;
 /**
  * <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 int $field_id  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>, который необходимо
  * скопировать.
  *
  * @param string $check_rights = "Y" Флаг необходимости проверки <a
  * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#permissions">прав</a> текущего
  * пользователя. Возможны следующие значения: <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> необходимо обладать
  * нижеследующими <a
  * href="http://dev.1c-bitrix.ru/api_help/form/terms.php#permissions#module">правами</a>: <ol> <li> <b>[25]
  * просмотр параметров веб-формы</b> на веб-форму, из которой идет
  * копирование; </li> <li> <b>[30] полный доступ</b> на веб-форму, в которую
  * копируется </li> </ol> Параметр необязательный. По умолчанию - "Y"
  * (права необходимо проверить).
  *
  * @param mixed $form_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><br> Необязательный
  * параметр. По умолчанию - "false" (текущая веб-форма).
  *
  * @return mixed 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $FIELD_ID = 140; // ID вопроса
  * // скопируем вопрос
  * if ($NEW_FIELD_ID=<b>CFormField::Copy</b>($FIELD_ID))
  * {
  *     echo "Вопрос #140 успешно скопирован в новый вопрос #".$NEW_FIELD_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/cform/copy.php">CForm::Copy</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/form/classes/cformanswer/copy.php">CFormAnswer::Copy</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/form/classes/cformstatus/copy.php">CFormStatus::Copy</a> </li> </ul><a
  * name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformfield/copy.php
  * @author Bitrix
  */
 public static function Copy($ID, $CHECK_RIGHTS = "Y", $NEW_FORM_ID = false)
 {
     global $DB, $strError;
     $err_mess = CAllFormField::err_mess() . "<br>Function: Copy<br>Line: ";
     $ID = intval($ID);
     $NEW_FORM_ID = intval($NEW_FORM_ID);
     $rsField = CFormField::GetByID($ID);
     if ($arField = $rsField->Fetch()) {
         $RIGHT_OK = "N";
         if ($CHECK_RIGHTS != "Y" || CForm::IsAdmin()) {
             $RIGHT_OK = "Y";
         } else {
             $F_RIGHT = CForm::GetPermission($arField["FORM_ID"]);
             // если имеем право на просмотр параметров формы
             if ($F_RIGHT >= 25) {
                 // если задана новая форма
                 if ($NEW_FORM_ID > 0) {
                     $NEW_F_RIGHT = CForm::GetPermission($NEW_FORM_ID);
                     // если имеем полный доступ на новую форму
                     if ($NEW_F_RIGHT >= 30) {
                         $RIGHT_OK = "Y";
                     }
                 } elseif ($F_RIGHT >= 30) {
                     $RIGHT_OK = "Y";
                 }
             }
         }
         // если права проверили то
         if ($RIGHT_OK == "Y") {
             // символьный код поля
             if (!$NEW_FORM_ID) {
                 while (true) {
                     // change: SID изменяем только если для старой формы. Требование уникальности снято.
                     $SID = $arField["SID"];
                     if (strlen($SID) > 44) {
                         $SID = substr($SID, 0, 44);
                     }
                     $SID .= "_" . RandString(5);
                     $strSql = "SELECT 'x' FROM b_form WHERE SID='" . $DB->ForSql($SID, 50) . "'";
                     $z = $DB->Query($strSql, false, $err_mess . __LINE__);
                     if (!($zr = $z->Fetch())) {
                         $strSql = "SELECT 'x' FROM b_form_field WHERE SID='" . $DB->ForSql($SID, 50) . "' AND FORM_ID='" . $arField["FORM_ID"] . "'";
                         $t = $DB->Query($strSql, false, $err_mess . __LINE__);
                         if (!($tr = $t->Fetch())) {
                             break;
                         }
                     }
                 }
             } else {
                 $SID = $arField["SID"];
             }
             // копируем
             $arFields = array("FORM_ID" => $NEW_FORM_ID > 0 ? $NEW_FORM_ID : $arField["FORM_ID"], "ACTIVE" => $arField["ACTIVE"], "TITLE" => $arField["TITLE"], "TITLE_TYPE" => $arField["TITLE_TYPE"], "SID" => $SID, "C_SORT" => $arField["C_SORT"], "ADDITIONAL" => $arField["ADDITIONAL"], "REQUIRED" => $arField["REQUIRED"], "IN_FILTER" => $arField["IN_FILTER"], "IN_RESULTS_TABLE" => $arField["IN_RESULTS_TABLE"], "IN_EXCEL_TABLE" => $arField["IN_EXCEL_TABLE"], "FIELD_TYPE" => $arField["FIELD_TYPE"], "COMMENTS" => $arField["COMMENTS"], "FILTER_TITLE" => $arField["FILTER_TITLE"], "RESULTS_TABLE_TITLE" => $arField["RESULTS_TABLE_TITLE"]);
             // картинка
             if (intval($arField["IMAGE_ID"]) > 0) {
                 $arIMAGE = CFile::MakeFileArray(CFile::CopyFile($arField["IMAGE_ID"]));
                 $arIMAGE["MODULE_ID"] = "form";
                 $arFields["arIMAGE"] = $arIMAGE;
             }
             // фильтр
             $z = CFormField::GetFilterList($arField["FORM_ID"], array("FIELD_ID" => $ID, "FIELD_ID_EXACT_MATCH" => "Y"));
             while ($zr = $z->Fetch()) {
                 if ($arField["ADDITIONAL"] != "Y") {
                     $arFields["arFILTER_" . $zr["PARAMETER_NAME"]][] = $zr["FILTER_TYPE"];
                 } elseif ($zr["PARAMETER_NAME"] == "USER") {
                     $arFields["arFILTER_FIELD"][] = $zr["FILTER_TYPE"];
                 }
             }
             //echo "<pre>"; print_r($arFields); echo "</pre>";
             $NEW_ID = CFormField::Set($arFields);
             if (intval($NEW_ID) > 0) {
                 if ($arField["ADDITIONAL"] != "Y") {
                     // ответы
                     $rsAnswer = CFormAnswer::GetList($ID, $by = 'ID', $order = 'ASC', array(), $is_filtered);
                     while ($arAnswer = $rsAnswer->Fetch()) {
                         CFormAnswer::Copy($arAnswer["ID"], $NEW_ID);
                     }
                     // валидаторы
                     $dbValidators = CFormValidator::GetList($ID);
                     while ($arVal = $dbValidators->Fetch()) {
                         CFormValidator::Set($arField['FORM_ID'], $NEW_ID, $arVal['NAME'], $arVal['PARAMS'], $arVal['C_SORT']);
                     }
                 }
             }
             return $NEW_ID;
         } else {
             $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED") . "<br>";
         }
     } else {
         $strError .= GetMessage("FORM_ERROR_FIELD_NOT_FOUND") . "<br>";
     }
     return false;
 }
Beispiel #5
0
     $dbres = CForm::GetBySID($arParams["WEB_FORM_NAME"]);
 }
 // get form info
 if ($arParams["arFormInfo"] = $dbres->Fetch()) {
     $GLOBALS["WEB_FORM_ID"] = $arParams["WEB_FORM_ID"] = $arParams["arFormInfo"]["ID"];
     $GLOBALS["WEB_FORM_NAME"] = $arParams["WEB_FORM_NAME"] = $arParams["arFormInfo"]["SID"];
     // check form params
     $arParams["USER_ID"] = $USER->GetID();
     // prepare filter
     $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");
     $arResult["arrFORM_FILTER"] = array();
     $arListFilter = array("ACTIVE" => "Y");
     if (count($arParams["arrNOT_SHOW_FILTER"]) > 0) {
         $arListFilter["FIELD_SID"] = "~'" . implode("' & ~'", $arParams["arrNOT_SHOW_FILTER"]) . "'";
     }
     $z = CFormField::GetFilterList($arParams["WEB_FORM_ID"], $arListFilter);
     while ($zr = $z->Fetch()) {
         $FID = $arParams["WEB_FORM_NAME"] . "_" . $zr["SID"] . "_" . $zr["PARAMETER_NAME"] . "_" . $zr["FILTER_TYPE"];
         $zr["FID"] = $FID;
         if (!is_set($arResult["arrFORM_FILTER"][$zr["SID"]])) {
             $arResult["arrFORM_FILTER"][$zr["SID"]] = array();
         }
         $arResult["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";
Beispiel #6
0
 function GetFilterList($WEB_FORM_ID, $arFilter = array())
 {
     return CFormField::GetFilterList($WEB_FORM_ID, $arFilter);
 }
Beispiel #7
0
	public static function GetFilterList($WEB_FORM_ID, $arFilter=Array())
	{ return CFormField::GetFilterList($WEB_FORM_ID, $arFilter); }