Your IP : 3.148.113.81


Current Path : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/modules/main/admin/
Upload File :
Current File : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/modules/main/admin/sms_template_edit.php

<?
/**
 * @global CUser $USER
 * @global CMain $APPLICATION
 */
require_once(__DIR__."/../include/prolog_admin_before.php");
define("HELP_FILE", "settings/sms_template_edit.php");

if(!$USER->CanDoOperation('edit_other_settings') && !$USER->CanDoOperation('view_other_settings'))
	$APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));

$isAdmin = $USER->CanDoOperation('edit_other_settings');

use Bitrix\Main;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Text\HtmlFilter;
use Bitrix\Main\Sms\TemplateTable;
use Bitrix\Main\Mail\Internal\EventTypeTable;

function fillTemplateFromPost(Main\Sms\Template $template)
{
	static $formFields = ["EVENT_NAME", "ACTIVE", "SENDER", "RECEIVER", "MESSAGE", "LANGUAGE_ID"];

	$request = Main\Context::getCurrent()->getRequest();

	$fields = $template->entity->getFields();

	//set values from the form
	foreach($formFields as $fieldName)
	{
		$value = $request->getPost($fieldName);
		if($fields[$fieldName] instanceof Main\ORM\Fields\BooleanField)
		{
			$value = ($value == "Y");
		}
		$template->set($fieldName, $value);
	}

	if(is_array($request->getPost("LID")))
	{
		foreach($request->getPost("LID") as $lid)
		{
			$site = Main\SiteTable::getEntity()->wakeUpObject($lid);
			$template->addToSites($site);
		}
	}
}

$aTabs = array(
	array("DIV" => "edit1", "TAB" => Loc::getMessage("sms_template_edit_tab"), "ICON" => "message_edit", "TITLE" => Loc::getMessage("sms_template_edit_tab_title")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);

$request = Main\Context::getCurrent()->getRequest();

$errors = array();
$ID = intval($request["ID"]);
$COPY_ID = intval($request["COPY_ID"]);

$entity = TemplateTable::getEntity();
$fields = $entity->getFields();

if($request->isPost() && ($request["save"] <> '' || $request["apply"] <> '') && $isAdmin && check_bitrix_sessid())
{
	if(empty($request->getPost("LID")))
	{
		$errors[] = GetMessage("sms_template_edit_err_site");
	}

	if(empty($errors))
	{
		if($ID > 0)
		{
			$template = $entity->wakeUpObject($ID);
			$template->removeAllSites();
		}
		else
		{
			$template = $entity->createObject();
		}

		//set values from the form
		fillTemplateFromPost($template);

		$result = $template->save();

		if($result instanceof Main\ORM\Data\AddResult)
		{
			$ID = $result->getId();
		}

		if($result->isSuccess())
		{
			if($request["save"] <> '')
				LocalRedirect(BX_ROOT."/admin/sms_template_admin.php?lang=".LANGUAGE_ID);
			else
				LocalRedirect(BX_ROOT."/admin/sms_template_edit.php?lang=".LANGUAGE_ID."&ID=".$ID."&".$tabControl->ActiveTabParam());
		}
		else
		{
			$errors = $result->getErrorMessages();
		}
	}
}

if($ID > 0 || $COPY_ID > 0)
{
	//existing
	$templateId = ($COPY_ID > 0? $COPY_ID : $ID);
	$template = TemplateTable::getById($templateId)->fetchObject();
	$template->fillSites();
}
else
{
	//new
	$template = $entity->createObject();
	$template->setEventName($request->getQuery("EVENT_NAME"));
}

if(!empty($errors))
{
	//set values from the form
	fillTemplateFromPost($template);
}

$APPLICATION->SetTitle(($ID > 0? Loc::getMessage("sms_template_edit_title") : Loc::getMessage("sms_template_edit_add")));

require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");

$aMenu = array(
	array(
		"TEXT"	=> Loc::getMessage("sms_template_edit_list"),
		"LINK"	=> "sms_template_admin.php?lang=".LANGUAGE_ID,
		"TITLE"	=> Loc::getMessage("sms_template_edit_list_title"),
		"ICON"	=> "btn_list"
	)
);

if($ID > 0 && $isAdmin)
{
	$aMenu[] = array("SEPARATOR"=>"Y");

	$aMenu[] = array(
		"TEXT"	=> Loc::getMessage("sms_template_edit_add_btn"),
		"LINK"	=> "sms_template_edit.php?lang=".LANGUAGE_ID,
		"TITLE"	=> Loc::getMessage("sms_template_edit_add_btn_title"),
		"ICON"	=> "btn_new"
	);
	$aMenu[] = array(
		"TEXT"	=> Loc::getMessage("sms_template_edit_copy"),
		"LINK"	=> "sms_template_edit.php?lang=".LANGUAGE_ID."&amp;COPY_ID=".$ID,
		"TITLE"	=> Loc::getMessage("sms_template_edit_copy_title"),
		"ICON"	=> "btn_copy"
	);
	$aMenu[] = array(
		"TEXT"	=> Loc::getMessage("sms_template_edit_del"),
		"LINK"	=> "javascript:if(confirm('".CUtil::JSEscape(Loc::getMessage("sms_template_edit_del_conf"))."')) window.location='sms_template_admin.php?ID=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."&action_button=delete';",
		"TITLE"	=> Loc::getMessage("sms_template_edit_del_title"),
		"ICON"	=> "btn_delete"
	);
}

$context = new CAdminContextMenu($aMenu);
$context->Show();

if(!empty($errors))
{
	CAdminMessage::ShowMessage(join("\n", $errors));
}
?>
<script type="text/javascript">
window.bxCurrentControl = null;
function PutString(str)
{
	if(window.bxCurrentControl)
	{
		window.bxCurrentControl.value += str;
	}
}
</script>

<form method="POST" action="<?= HtmlFilter::encode($request->getRequestedPage())?>" name="form1">
<?=bitrix_sessid_post()?>
<input type="hidden" name="lang" value="<?=LANGUAGE_ID?>">
<input type="hidden" name="ID" value="<?= $ID?>">
<?if($COPY_ID > 0):?><input type="hidden" name="COPY_ID" value="<?= $COPY_ID?>"><?endif?>
<?
$tabControl->Begin();

$tabControl->BeginNextTab();
?>
<?if($ID > 0):?>
	<tr>
		<td><?= $fields["ID"]->getTitle()?>:</td>
		<td><?= $ID?></td>
	</tr>
<?endif?>
	<tr class="adm-detail-required-field">
		<td><?= $fields["EVENT_NAME"]->getTitle()?>:</td>
		<td><?
			$eventTypes = array();
			$eventTypesDb = EventTypeTable::getList(array(
				'filter' => array(
					"=LID" => LANGUAGE_ID,
					"=EVENT_TYPE" => EventTypeTable::TYPE_SMS
				),
				'order' => array("NAME" => "ASC"),
			));
			while($eventType = $eventTypesDb->fetch())
			{
				$eventTypes[$eventType["EVENT_NAME"]] = $eventType;
			}

			if($ID > 0 && $COPY_ID <= 0):
			?>
				<input type="hidden" name="EVENT_NAME" value="<?= HtmlFilter::encode($template->getEventName())?>">
				<?
					$type = $eventTypes[$template->getEventName()];
					echo HtmlFilter::encode($type["NAME"]." [".$type["EVENT_NAME"]."]");
				?>
			<?else:?>
				<select name="EVENT_NAME" onchange="window.location='sms_template_edit.php?lang=<?=LANGUAGE_ID?>&EVENT_NAME='+this[this.selectedIndex].value">
				<?foreach($eventTypes as $type):?>
					<option value="<?= HtmlFilter::encode($type["EVENT_NAME"])?>"<?if($type["EVENT_NAME"] == $template->getEventName()) echo " selected";?>>
						<?= HtmlFilter::encode($type["NAME"]." [".$type["EVENT_NAME"]."]")?>
					</option>
				<?endforeach;?>
				</select>
			<?endif;?>
		</td>
	</tr>
	<tr>
		<td><label for="active"><?= $fields["ACTIVE"]->getTitle()?>:</label></td>
		<td><input type="checkbox" name="ACTIVE" id="active" value="Y"<?if($template->getActive()) echo " checked"?>></td>
	</tr>
	<tr class="adm-detail-required-field">
		<td class="adm-detail-valign-top"><?echo Loc::getMessage("sms_template_edit_sites")?></td>
		<td><?
			$sites = $template->getSites();
			echo CLang::SelectBoxMulti("LID", ($sites? $sites->getLidList() : []));
			?></td>
	</tr>
	<tr>
		<td><?= $fields["LANGUAGE_ID"]->getTitle()?>:</td>
		<td>
			<select name="LANGUAGE_ID">
				<option value=""><?echo Loc::getMessage("sms_template_edit_not_set")?></option>
				<?
				$languages = Main\Localization\LanguageTable::getList(array(
					"filter" => array("=ACTIVE" => "Y"),
					"order" => array("SORT" => "ASC", "NAME" => "ASC")
				));
				?>
				<? while($language = $languages->fetch()): ?>
					<option value="<?=$language["LID"]?>"<? if($template->getLanguageId() == $language["LID"]) echo " selected" ?>>
						<?= HtmlFilter::encode($language["NAME"])?>
					</option>
				<? endwhile ?>
			</select>
		</td>
	</tr>
	<tr class="heading">
		<td colspan="2"><?echo Loc::getMessage("sms_template_edit_mess")?></td>
	</tr>
	<tr class="adm-detail-required-field">
		<td><?= $fields["SENDER"]->getTitle()?>:</td>
		<td><input type="text" name="SENDER" size="30" maxlength="50" value="<?= HtmlFilter::encode($template->getSender())?>" onfocus="window.bxCurrentControl=this"></td>
	</tr>
	<tr class="adm-detail-required-field">
		<td><?= $fields["RECEIVER"]->getTitle()?>:</td>
		<td><input type="text" name="RECEIVER" size="30" maxlength="50" value="<?= HtmlFilter::encode($template->getReceiver())?>" onfocus="window.bxCurrentControl=this"></td>
	</tr>
	<tr>
		<td class="adm-detail-valign-top"><?= $fields["MESSAGE"]->getTitle()?>:</td>
		<td><textarea name="MESSAGE" cols="40" rows="7" onfocus="window.bxCurrentControl=this"><?=HtmlFilter::encode($template->getMessage())?></textarea></td>
	</tr>
<?
	$defaultFields =
		"#DEFAULT_SENDER# - ".Loc::getMessage("sms_template_edit_field_senser")."
		#SITE_NAME# - ".Loc::getMessage("sms_template_edit_field_site")."
		#SERVER_NAME# - ".Loc::getMessage("sms_template_edit_field_server");

	if($template->getEventName())
	{
		$eventFields = $eventTypes[$template->getEventName()]["DESCRIPTION"];
	}
	else
	{
		$eventFields = reset($eventTypes)["DESCRIPTION"];
	}
	$allFields = HtmlFilter::encode(trim($eventFields)."\r\n".$defaultFields);
	$allFields = preg_replace("/(#.+?#)/", '<a title="'.Loc::getMessage("sms_template_edit_insert").'" href="javascript:PutString(\'\\1\')">\\1</a>', $allFields);
?>
	<tr>
		<td align="left" colspan="2"><b><?echo Loc::getMessage("sms_template_edit_fields")?></b><br><br>
			<?= nl2br($allFields);?></td>
	</tr>
<?
$tabControl->Buttons(array("disabled"=>!$isAdmin, "back_url"=>"sms_template_admin.php?lang=".LANGUAGE_ID));
$tabControl->End();
?>
</form>

<?
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");