Документация для разработчиков
Темная тема

Set

Описание и параметры

mixed
CForm::Set(
	array fields,
	mixed form_id = false,
	string check_rights = "Y"
)

Добавляет новую веб-форму или обновляет заданную. Возвращает ID обновленной или добавленной веб-формы в случае положительного результата, в противном случае - "false". Метод нестатический.

Примечание
При обновлении существующей веб-формы (или при добавлении новой веб-формы), автоматически обновляется тип почтового события (либо создаётся новый тип).

Параметры метода

Параметр Описание
fields Массив значений полей; в качестве ключей массива допустимы:
  • NAME* - заголовок веб-формы;
  • SID* - символьный идентификатор веб-формы;
  • C_SORT - индекс сортировки;
  • BUTTON - подпись к кнопке при создании или редактировании результата;
  • USE_RESTRICTIONS - использовать ограничения;
  • RESTRICT_USER - максимальное количество результатов от пользователя;
  • RESTRICT_TIME - минимальный промежуток времени между результатами;
  • DESCRIPTION - описание;
  • DESCRIPTION_TYPE - тип описания, допустимы следующие значения:
    • text - текст;
    • html - HTML код.
  • FILTER_RESULT_TEMPLATE - путь относительно корня к файлу, который будет использован для показа фильтра результатов в административной части модуля;
  • TABLE_RESULT_TEMPLATE - путь относительно корня к файлу, который будет использован для показа таблицы результатов в административной части модуля;
  • STAT_EVENT1 - идентификатор EVENT1 типа события для модуля "Статистика";
  • STAT_EVENT2 - идентификатор EVENT2 типа события для модуля "Статистика";
  • STAT_EVENT3 - дополнительный параметр события для модуля "Статистика";
  • arIMAGE - массив, описывающий изображение веб-формы, допустимы следующие ключи этого массива:
    • name - имя файла;
    • size - размер файла;
    • tmp_name - временный путь на сервере;
    • type - тип загружаемого файла;
    • del - если значение равно "Y", то изображение будет удалено;
    • MODULE_ID - идентификатор модуля "Веб-формы" ("form").
  • USE_CAPTCHA - использование капчи, доступны значения:
    • Y - выводить капчу в публичке,
    • N - не выводить капчу.
  • arSITE - массив идентификаторов сайтов, к которым будет привязана данная форма:
    array("ID_САЙТА_1", "ID_САЙТА_2", ...)
  • arMAIL_TEMPLATE - массив ID почтовых шаблонов, приписанных к данной форме:
    array("ID_ШАБЛОНА_1", "ID_ШАБЛОНА_2", ...)

    Примечание: Будут привязаны только шаблоны почтового события с идентификатором FILLING_FORM_[символьный идентификатор веб-формы]

  • arMENU - массив заголовков меню, отображаемого в административной части и ведущего на результаты данной формы:
    array("ID_ЯЗЫКА_1" => "МЕНЮ_1", "ID_ЯЗЫКА_2" => "МЕНЮ_2", ...)
  • arGROUP - массив, описывающий права групп пользователей на данную веб-форму:
    array("ID_ГРУППЫ_1" => "ПРАВО_1", "ID_ГРУППЫ_2" => "ПРАВО_2", ...)
* - обязательно к заполнению.
form_id ID обновляемой веб-формы.

Параметр необязательный. По умолчанию - "false" (добавление новой веб-формы).
check_rights Флаг необходимости проверки прав текущего пользователя. Возможны следующие значения:
  • Y - права необходимо проверить;
  • N - право не нужно проверять.
Для обновления параметров веб-формы необходимо иметь право [30] Полный доступ на форму, указанную в параметре form_id. Для добавления новой веб-формы необходимо иметь право [W] Полный доступ на модуль Веб-формы.

Параметр необязательный. По умолчанию - "Y" (права необходимо проверить).

Примеры использования

<?
/*************************************************
             Добавление веб-формы
*************************************************/

// создадим массив описывающий изображение 
// находящееся в файле на сервере
$arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/web_form.gif");
$arIMAGE["MODULE_ID"] = "form";

$arFields = array(
	"NAME"              => "Анкета посетителя",
	"SID"               => "VISITOR_FORM",
	"C_SORT"            => 300,
	"BUTTON"            => "Сохранить",
	"DESCRIPTION"       => "Заполните пож-та анкету",
	"DESCRIPTION_TYPE"  => "text",
	"STAT_EVENT1"       => "form",
	"STAT_EVENT2"       => "visitor_form",
	"arSITE"            => array("r1"),
	"arMENU"            => array("ru" => "Анкета посетителя", "en" => "Visitor Form"),
	"arGROUP"           => array("2" => "15", "3" => "20"),
	"arIMAGE"           => $arIMAGE
);

// добавим новую веб-форму
$NEW_ID = CForm::Set($arFields);
if ($NEW_ID>0) echo "Добавлена веб-форма с ID=".$NEW_ID;
else // ошибка
{
	// выводим текст ошибки
	global $strError;
	echo $strError;
}
?>
<?
// пример обновления веб-формы параметры которой были визуально 
// отредактированы в административной части

$w = CGroup::GetList($v1, $v2, Array("ADMIN"=>"N"), $v3);
$arGroups = array();
while ($wr=$w->Fetch()) $arGroups[] = array("ID"=>$wr["ID"], "NAME"=>$wr["NAME"]);

$z = CLanguage::GetList($v1, $v2, array("ACTIVE" => "Y"));
$arFormMenuLang = array();
while ($zr=$z->Fetch()) $arFormMenuLang[] = array("LID"=>$zr["LID"], "NAME"=>$zr["NAME"]);

$rs = CSite::GetList(($by="sort"), ($order="asc"));
while ($ar = $rs->Fetch()) 
{
	if ($ar["DEF"]=="Y") $def_site_id = $ar["ID"];
	$arrSites[$ar["ID"]] = $ar;
}

if ((strlen($save)>0 || strlen($apply)>0) && $REQUEST_METHOD=="POST")
{
	$arIMAGE_ID = $HTTP_POST_FILES["IMAGE_ID"];
	$arIMAGE_ID["MODULE_ID"] = "form";
	$arIMAGE_ID["del"] = ${"IMAGE_ID_del"};
	$arFields = array(
		"NAME"                      => $NAME,
		"SID"                       => $SID,
		"C_SORT"                    => $C_SORT,
		"BUTTON"                    => $BUTTON,
		"DESCRIPTION"               => $DESCRIPTION,
		"DESCRIPTION_TYPE"          => $DESCRIPTION_TYPE,
		"FILTER_RESULT_TEMPLATE"    => $FILTER_RESULT_TEMPLATE,
		"TABLE_RESULT_TEMPLATE"     => $TABLE_RESULT_TEMPLATE,
		"STAT_EVENT1"               => $STAT_EVENT1,
		"STAT_EVENT2"               => $STAT_EVENT2,
		"STAT_EVENT3"               => $STAT_EVENT3,
		"arIMAGE"                   => $arIMAGE_ID,
		"arSITE"                    => $arSITE,
		"arMAIL_TEMPLATE"           => $arMAIL_TEMPLATE
	);

	// меню
	$arMENU = array();
	reset($arFormMenuLang);
	while (list(,$arrL)=each($arFormMenuLang))
	{
		$var = "MENU_".$arrL["LID"];
		global $$var;
		$arMENU[$arrL["LID"]] = $$var;
	}
	$arFields["arMENU"] = $arMENU;

	// права доступа
	$arGROUP = array();
	reset($arGroups);
	while (list(,$arrG)=each($arGroups))
	{
		$var = "PERMISSION_".$arrG["ID"];
		global $$var;
		$arGROUP[$arrG["ID"]] = $$var;
	}
	$arFields["arGROUP"] = $arGROUP;
    
	if ($ID = CForm::Set($arFields, $ID))
	{
		if (strlen($strError)<=0)
		{
			if (strlen($save)>0) LocalRedirect("form_list.php?lang=".LANGUAGE_ID); 
			else LocalRedirect("form_edit.php?ID=".$ID."〈=".LANGUAGE_ID);
		}
	}
	$DB->PrepareFields("b_form");
}
?>


© «Битрикс», 2001-2024, «1С-Битрикс», 2024