Your IP : 18.227.183.235


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/im/classes/general/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/im/classes/general/im_notify_schema.php

<?
IncludeModuleLangFile(__FILE__);

class CIMNotifySchema
{
	protected static $arNotifySchema = null;

	public function __construct()
	{
	}

	public static function GetNotifySchema()
	{
		if (is_null(self::$arNotifySchema))
		{
			self::$arNotifySchema = Array();
			foreach(GetModuleEvents("im", "OnGetNotifySchema", true) as $arEvent)
			{
				$ar = ExecuteModuleEventEx($arEvent);
				if(is_array($ar))
				{
					foreach($ar as $moduleId => $arNotifyType)
					{
						self::$arNotifySchema[$moduleId]['NAME'] = isset($arNotifyType['NOTIFY']) && isset($arNotifyType['NAME'])? $arNotifyType['NAME']: '';

						$arNotify = $arNotifyType;
						if (isset($arNotifyType['NOTIFY']))
							$arNotify = $arNotifyType['NOTIFY'];

						foreach($arNotify as $notifyEvent => $arConfig)
						{
							if (!isset($arConfig['PUSH']) || $arConfig['PUSH'] == 'NONE')
							{
								$arConfig['DISABLED'][] = IM_NOTIFY_FEATURE_PUSH;
							}

							$arConfig['SITE'] = !isset($arConfig['SITE']) || $arConfig['SITE'] == 'Y'? true: false;
							$arConfig['MAIL'] = !isset($arConfig['MAIL']) || $arConfig['MAIL'] == 'Y'? true: false;
							$arConfig['XMPP'] = !isset($arConfig['XMPP']) || $arConfig['XMPP'] == 'Y'? true: false;
							$arConfig['PUSH'] = isset($arConfig['PUSH']) && $arConfig['PUSH'] == 'Y'? true: false;

							$arDisabled['SITE'] = isset($arConfig['DISABLED']) && in_array(IM_NOTIFY_FEATURE_SITE, $arConfig['DISABLED'])? true: false;
							$arDisabled['MAIL'] = isset($arConfig['DISABLED']) && in_array(IM_NOTIFY_FEATURE_MAIL, $arConfig['DISABLED'])? true: false;
							$arDisabled['XMPP'] = isset($arConfig['DISABLED']) && in_array(IM_NOTIFY_FEATURE_XMPP, $arConfig['DISABLED'])? true: false;
							$arDisabled['PUSH'] = isset($arConfig['DISABLED']) && in_array(IM_NOTIFY_FEATURE_PUSH, $arConfig['DISABLED'])? true: false;
							$arConfig['DISABLED'] = $arDisabled;

							$arConfig['LIFETIME'] = intval($arConfig['LIFETIME']);

							self::$arNotifySchema[$moduleId]['NOTIFY'][$notifyEvent] = $arConfig;
						}
					}
				}
			}
		}
		return self::$arNotifySchema;
	}

	public static function CheckDisableFeature($moduleId, $notifyEvent, $feature)
	{
		$arNotifySchema = self::GetNotifySchema();

		return (bool)$arNotifySchema[$moduleId]['NOTIFY'][$notifyEvent]['DISABLED'][mb_strtoupper($feature)];
	}

	public static function GetDefaultFeature($moduleId, $notifyEvent, $feature)
	{
		$arNotifySchema = self::GetNotifySchema();

		return (bool)$arNotifySchema[$moduleId]['NOTIFY'][$notifyEvent][mb_strtoupper($feature)];
	}

	public static function GetLifetime($moduleId, $notifyEvent)
	{
		$arNotifySchema = self::GetNotifySchema();

		return intval($arNotifySchema[$moduleId]['NOTIFY'][$notifyEvent]['LIFETIME']);
	}

	public static function OnGetNotifySchema()
	{
		$config = array(
			"im" => Array(
				"NAME" => GetMessage('IM_NS_IM'),
				"NOTIFY" => Array(
					"message" => Array(
						"NAME" => GetMessage('IM_NS_MESSAGE_NEW'),
						"PUSH" => 'Y',
						"DISABLED" => Array(IM_NOTIFY_FEATURE_SITE, IM_NOTIFY_FEATURE_XMPP)
					),
					"chat" => Array(
						"NAME" => GetMessage('IM_NS_CHAT_NEW'),
						"MAIL" => 'N',
						"PUSH" => 'Y',
						"DISABLED" => Array(IM_NOTIFY_FEATURE_SITE, IM_NOTIFY_FEATURE_XMPP, IM_NOTIFY_FEATURE_MAIL)
					),
					"openChat" => Array(
						"NAME" => GetMessage('IM_NS_OPEN_NEW'),
						"MAIL" => 'N',
						"PUSH" => 'Y',
						"DISABLED" => Array(IM_NOTIFY_FEATURE_SITE, IM_NOTIFY_FEATURE_XMPP, IM_NOTIFY_FEATURE_MAIL)
					),
					"like" => Array(
						"NAME" => GetMessage('IM_NS_LIKE'),
					),
					"mention" => Array(
						"NAME" => GetMessage('IM_NS_MENTION_2'),
						"PUSH" => 'Y',
					),
					"default" => Array(
						"NAME" => GetMessage('IM_NS_DEFAULT'),
						"PUSH" => 'N',
						"MAIL" => 'N',
					),
				)
			)
		);

		if (!IsModuleInstalled("b24network"))
		{
			$config["main"] = array(
				"NAME" => GetMessage('IM_NS_MAIN'),
				"NOTIFY" => Array(
					"rating_vote" => Array(
						"NAME" => GetMessage('IM_NS_MAIN_RATING_VOTE'),
						"LIFETIME" => 86400*7
					),
					"rating_vote_mentioned" => Array(
						"NAME" => GetMessage('IM_NS_MAIN_RATING_VOTE_MENTIONED'),
						"LIFETIME" => 86400*7
					),
				),
			);
			$config["bizproc"] = array(
				"NOTIFY" => Array(
					"activity" => Array(
						"NAME" => GetMessage('IM_NS_BIZPROC_ACTIVITY'),
					),
				),
			);
		}

		return $config;
	}
}