Your IP : 18.222.127.152


Current Path : /home/bitrix/ext_www/dev.easy-comfort.com.ua/local/admin/
Upload File :
Current File : /home/bitrix/ext_www/dev.easy-comfort.com.ua/local/admin/export_webform.php

<?
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>