Your IP : 18.222.127.152
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
$APPLICATION->SetTitle('Экспорт/импорт веб-форм');
// Экспорт формы
function exportWebForm($FORM_SID){
CModule::IncludeModule('form');
$ob=CForm::GetBySID($FORM_SID);
$arForm=$ob->Fetch();
if(!$arForm){
echo "Форма не найдена";
return;
}
$arForm['QUESTIONS']=array();
$ob=CFormField::GetList($arForm['ID']);
while($ar=$ob->Fetch()){
$ar['ANSWERS']=array();
$ob2=CFormAnswer::GetList($ar['ID']);
while($ar2=$ob2->Fetch()){
$ar['ANSWERS'][]=$ar2;
}
$arForm['QUESTIONS'][$ar['SID']]=$ar;
}
$arForm['STATUSES'] = array();
$ob=CFormStatus::GetList($arForm['ID']);
while($ar=$ob->Fetch()){
$arForm['STATUSES'][] = $ar;
}
return json_encode($arForm);
}
function importWebForm($arFormJson){
$arForm = json_decode($arFormJson, true);
CModule::IncludeModule('form');
//Создаем новую форму
$arFieldKeys = array(
'NAME' => '',
'SID' => '',
'BUTTON' => '',
'DESCRIPTION' => '',
'DESCRIPTION_TYPE' => '',
'FORM_TEMPLATE' => '',
'USE_DEFAULT_TEMPLATE' => '',
'SHOW_TEMPLATE' => '',
'MAIL_EVENT_TYPE' => '',
'SHOW_RESULT_TEMPLATE' => '',
'PRINT_RESULT_TEMPLATE' => '',
'EDIT_RESULT_TEMPLATE' => '',
'FILTER_RESULT_TEMPLATE' => '',
'TABLE_RESULT_TEMPLATE' => '',
'STAT_EVENT1' => 'form',
'STAT_EVENT2' => '',
'STAT_EVENT3' => '',
'VARNAME' => ''
);
$arFields = array_intersect_key($arForm, $arFieldKeys);
$newForm = CForm::Set($arForm);
if($newForm) {
echo "Новая форма создана ID - ".$newForm;
} else {
echo "Ошибочка...";
exit ("<br>...Выполнение скрипта остановлено");
}
//Создаем статус формы
foreach ($arForm['STATUSES'] as $arStatus) {
$arStatusFields = array(
"FORM_ID" => $newForm, // ID веб-формы
"C_SORT" => $arStatus['C_SORT'], // порядок сортировки
"ACTIVE" => $arStatus['ACTIVE'], // статус активен
"TITLE" => $arStatus['TITLE'], // заголовок статуса
"DESCRIPTION" => $arStatus['DESCRIPTION'], // описание статуса
"CSS" => $arStatus['CSS'], // CSS класс
"HANDLER_OUT" => $arStatus['HANDLER_OUT'], // обработчик
"HANDLER_IN" => $arStatus['HANDLER_IN'], // обработчик
"DEFAULT_VALUE" => $arStatus['DEFAULT_VALUE'], // не по умолчанию
);
$statusNew = CFormStatus::Set($arStatusFields);
if($statusNew)
{
echo "<br>Статус формы создан";
}
else {
echo "<br>Ошибочка при создании статуса формы...";
//exit ("<br>...Выполнение скрипта остановлено");
}
}
// Создаём вопросы формы
foreach ($arForm['QUESTIONS'] as $arQuestion) {
$arFields = array(
"SID" => $arQuestion["SID"],
"FORM_ID" => $newForm,
"ACTIVE" => $arQuestion['ACTIVE'],
"TITLE" => $arQuestion['TITLE'],
"IN_RESULTS_TABLE" => $arQuestion['IN_RESULTS_TABLE'],
"arANSWER" => array()
);
foreach ($arQuestion['ANSWERS'] as $arAnswer) {
$arFields['arANSWER'][] = array(
"MESSAGE" => $arAnswer["MESSAGE"],
"VALUE" => $arAnswer["VALUE"],
"FIELD_TYPE" => $arAnswer["FIELD_TYPE"],
"FIELD_WIDTH" => $arAnswer["FIELD_WIDTH"],
"FIELD_HEIGHT" => $arAnswer["FIELD_HEIGHT"],
"FIELD_PARAM" => $arAnswer["FIELD_PARAM"],
"C_SORT" => $arAnswer["C_SORT"],
"ACTIVE" => $arAnswer["ACTIVE"]
);
}
$fieldsFormCreate = CFormField::Set($arFields);
if($fieldsFormCreate)
{
echo "<br>Вопрос создан ".$arQuestion["SID"];
}
else {
echo "<br>Ошибка при создании вопроса...";
}
}
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
switch($_REQUEST['action']){
case('export'):
if(isset($_REQUEST['sid'])){
$json = exportWebForm($_REQUEST['sid']);
echo CAdminMessage::ShowNote('Веб форма экспортирована');
}
break;
case('import'):
if(isset($_REQUEST['data'])){
importWebForm($_REQUEST['data']);
echo CAdminMessage::ShowNote('Веб форма импортирована');
echo "<p>Не забудьте установить SITE_ID и название для отображения в меню</p>";
}
break;
}
?>
<form action="" method="POST">
<div style="margin-bottom: 20px;">SID формы: <input type="text" name="sid" value="" length="20" /> <input type="submit" name="action" value="export" /></div>
<div>JSON с данными формы:<br />
<textarea name="data" cols="80" rows="20"><?= $json ?></textarea><br />
<input type="submit" name="action" value="import" />
</div>
</form>