%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/texts.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\Message;
use Bitrix\Sender\Integration;

Loc::loadMessages(__FILE__);

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

	/**
	 * Get codes.
	 *
	 * @return array|null
	 */
	public static function getCodes()
	{
		return array(
			'hot_unplanned',
			'unplanned',
			'hot_lead2client',
			'lead2client',
			'hot_inc_profits',
			'inc_profits',
			'hot_brand2brain',
			'brand2brain',
			'hot_repeated',
			'repeated',
			'hot_push2deal',
			'push2deal',
			'hot_wakeup',
			'wakeup',
			'hot_satisfy',
			'satisfy',
			'hot_birthday',
			'birthday',
			'hot_inform_event',
			'inform_event',
			'hot_invite2event',
			'invite2event',
		);
	}

	/**
	 * Get texts list by type.
	 *
	 * @param string $type Type.
	 * @return array
	 */
	public static function getListByType($type)
	{
		$result = array();
		foreach (self::getCodes() as $code)
		{
			$item = self::getByCode($code);
			if (empty($item['TYPES'][$type]))
			{
				continue;
			}

			$fields = $item['TYPES'][$type];
			unset($item['TYPES']);
			foreach ($fields as $key => $value)
			{
				$item[$key] = $value;
			}

			$result[] = $item;
		}

		return $result;
	}

	/**
	 * Get replace.
	 *
	 * @param string $text Text.
	 * @return string
	 */
	public static function replace($text = '')
	{
		static $replace = null;
		if ($replace === null)
		{
			$card = array();
			foreach (Integration\EventHandler::onSenderCompanyCard() as $card)
			{
				if (!isset($card['DATA']) || !is_array($card['DATA']))
				{
					continue;
				}
				$card = $card['DATA'];

				if (!$card['COMPANY_NAME'])
				{
					continue;
				}

				break;
			}

			if (!isset($card['COMPANY_NAME']) || !$card['COMPANY_NAME'])
			{
				$card['COMPANY_NAME'] = Loc::getMessage('SENDER_PRESET_TEMPLATE_DEFAULT_COMPANY');
			}

			if (!isset($card['PHONE']) || !$card['PHONE'])
			{
				$card['PHONE'] = Loc::getMessage('SENDER_PRESET_TEMPLATE_DEFAULT_PHONE');
			}

			$replace = array(
				'%COMPANY%' => $card['COMPANY_NAME'],
				'%PHONE_FORMATTED%' => $card['PHONE'],
				'%PHONE%' => preg_replace('/[^\d]/', '', $card['PHONE']),
			);
		}

		if (count($replace) === 0)
		{
			return $text;
		}

		return str_replace(array_keys($replace), array_values($replace), $text);
	}

	protected static function getMessage($code)
	{
		return self::replace(Loc::getMessage($code));
	}

	/**
	 * Get texts by code.
	 *
	 * @param string $code Code.
	 * @return array|null
	 */
	public static function getByCode($code)
	{
		$dictionary = array(
			Message\iBase::CODE_MAIL => array(
				'SUBJECT',
				'TEXT_HEAD',
				'TEXT_BODY'
			),
			Message\iBase::CODE_SMS => array(
				'TEXT'
			),
			Message\iBase::CODE_IM => array(
				'TEXT'
			),
		);

		$isHot = strpos($code, 'hot_') === 0;
		$iconPath = $isHot ? substr($code, 4) : $code;
		$iconPath = BX_ROOT . self::IMAGE_DIR . $iconPath . '.png';

		$code = strtoupper($code);
		$result = array(
			'CODE' => $code,
			'NAME' => Loc::getMessage('SENDER_PRESET_TEMPLATE_' . $code . '_NAME'),
			'DESC' => Loc::getMessage('SENDER_PRESET_TEMPLATE_' . $code . '_DESC'),
			'HOT' => $isHot,
			'ICON' => $iconPath,
			'TYPES' => array(),
		);

		foreach ($dictionary as $type => $keys)
		{
			if (!is_array($result['TYPES'][$type]))
			{
				$result['TYPES'][$type] = array();
			}

			foreach ($keys as $key)
			{
				$msgId = 'SENDER_PRESET_' . $type . '_' . $code . '_' . $key;
				$result['TYPES'][$type][$key] = self::getMessage(strtoupper($msgId));
			}
		}

		return (strlen($result['NAME']) && !empty($result['TYPES'])) ? $result : null;
	}
}

Zerion Mini Shell 1.0