%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/modules/sender/lib/message/
Upload File :
Create Path :
Current File : /home/bitrix/www/bitrix/modules/sender/lib/message/factory.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage sender
 * @copyright 2001-2012 Bitrix
 */

namespace Bitrix\Sender\Message;

use Bitrix\Sender\Integration;
use Bitrix\Sender\Internals\CodeBasedFactory;

/**
 * Class Factory
 * @package Bitrix\Sender\Message
 */
class Factory extends CodeBasedFactory
{
	/**
	 * Get interface.
	 *
	 * @return string
	 */
	protected static function getInterface()
	{
		return __NAMESPACE__ . '\iBase';
	}

	protected static function getClasses()
	{
		return array(
			iBase::EVENT_NAME => Integration\EventHandler::onSenderMessageList(),
		);
	}

	/**
	 * Get ads message instances.
	 *
	 * @return iBase[]
	 */
	public static function getAdsMessages()
	{
		$list = array();
		foreach (static::getMessages() as $message)
		{
			if (!($message instanceof iAds))
			{
				continue;
			}

			$list[] = $message;
		}

		return $list;
	}

	/**
	 * Get non ads message instances.
	 *
	 * @return iBase[]
	 */
	public static function getMailingMessages()
	{
		$list = array();
		foreach (static::getMessages() as $message)
		{
			if (!($message instanceof iMailable))
			{
				continue;
			}

			$list[] = $message;
		}

		return $list;
	}

	/**
	 * Get non ads message instances.
	 *
	 * @return iBase[]
	 */
	public static function getReturnCustomerMessages()
	{
		$list = array();
		foreach (static::getMessages() as $message)
		{
			if (!($message instanceof iReturnCustomer))
			{
				continue;
			}

			$list[] = $message;
		}

		return $list;
	}

	/**
	 * Get ads message instances.
	 *
	 * @return iBase[]
	 */
	public static function getAdsMessageCodes()
	{
		return array_map(
			function ($message)
			{
				/** @var iBase $message */
				return $message->getCode();
			},
			static::getAdsMessages()
		);
	}

	/**
	 * Get non ads message instances.
	 *
	 * @return iBase[]
	 */
	public static function getMailingMessageCodes()
	{
		return array_map(
			function ($message)
			{
				/** @var iBase $message */
				return $message->getCode();
			},
			static::getMailingMessages()
		);
	}

	/**
	 * Get non ads message instances.
	 *
	 * @return string[]
	 */
	public static function getReturnCustomerMessageCodes()
	{
		return array_map(
			function ($message)
			{
				/** @var iBase $message */
				return $message->getCode();
			},
			static::getReturnCustomerMessages()
		);
	}

	/**
	 * Get message instances.
	 *
	 * @return iBase[]
	 */
	public static function getMessages()
	{
		return static::getObjectInstances(static::getInterface());
	}

	/**
	 * Get transport instance by code.
	 *
	 * @param string $code Transport code.
	 *
	 * @return null|iBase
	 */
	public static function getMessage($code)
	{
		return static::getObjectInstance(static::getInterface(), $code);
	}
}

Zerion Mini Shell 1.0