Your IP : 18.117.12.247


Current Path : /home/bitrix/ext_www/easy-comfort.com.ua/bitrix/modules/im/lib/
Upload File :
Current File : /home/bitrix/ext_www/easy-comfort.com.ua/bitrix/modules/im/lib/alias.php

<?php
namespace Bitrix\Im;

class Alias
{
	const ENTITY_TYPE_USER = 'USER';
	const ENTITY_TYPE_CHAT = 'CHAT';
	const ENTITY_TYPE_OPEN_LINE = 'LINES';
	const ENTITY_TYPE_OTHER = 'OTHER';

	const CACHE_TTL = 31536000;
	const CACHE_PATH = '/bx/im/alias/';

	const FILTER_BY_ALIAS = 'alias';
	const FILTER_BY_ID = 'id';

	public static function add(array $fields)
	{
		$alias = self::prepareAlias($fields['ALIAS']);
		$entityType = $fields['ENTITY_TYPE'];
		$entityId = $fields['ENTITY_ID'];

		if (empty($entityId) || empty($entityType) || empty($alias))
		{
			return false;
		}

		$aliasData = self::get($alias);
		if ($aliasData)
			return false;

		$result = \Bitrix\Im\Model\AliasTable::add(Array(
			'ALIAS' => $alias,
			'ENTITY_TYPE' => $entityType,
			'ENTITY_ID' => $entityId,
		));
		if (!$result->isSuccess())
		{
			return false;
		}

		return $result->getId();
	}

	public static function addUnique(array $fields)
	{
		$alias = \Bitrix\Im\Alias::prepareAlias(substr(uniqid(),-6));
		$fields['ALIAS'] = $alias;

		$id = self::add($fields);
		if (!$id)
		{
			return self::addUnique($fields);
		}

		return Array(
			'ID' => $id,
			'ALIAS' => $alias
		);
	}

	public static function update($id, $fields)
	{
		$id = intval($id);
		if ($id <= 0)
			return false;

		$update = Array();
		if (isset($fields['ALIAS']))
		{
			$update['ALIAS'] = self::prepareAlias($fields['ALIAS']);
			$result = self::get($update['ALIAS']);
			if ($result)
			{
				return false;
			}
		}

		if (isset($fields['ENTITY_TYPE']))
		{
			$update['ENTITY_TYPE'] = $fields['ENTITY_TYPE'];
		}
		if (isset($fields['ENTITY_ID']))
		{
			$update['ENTITY_ID'] = $fields['ENTITY_ID'];
		}

		if (empty($update))
			return false;

		\Bitrix\Im\Model\AliasTable::update($id, $update);

		return true;
	}


	public static function delete($id, $filter = self::FILTER_BY_ID)
	{
		if ($filter == self::FILTER_BY_ALIAS)
		{
			$aliasData = self::get($id);
			if (!$aliasData)
				return false;
		}
		else
		{
			$aliasData['ID'] = intval($id);
		}

		\Bitrix\Im\Model\AliasTable::delete($aliasData['ID']);

		return true;
	}

	public static function get($alias)
	{
		$alias = self::prepareAlias($alias);
		if (empty($alias))
		{
			return false;
		}

		$orm = \Bitrix\Im\Model\AliasTable::getList(Array(
			'filter' => Array('=ALIAS' => $alias)
		));

		return $orm->fetch();
	}

	public static function prepareAlias($alias)
	{
		$alias = preg_replace("/[^\.\-0-9a-zA-Z]+/", "", $alias);
		$alias = substr($alias, 0, 255);

		return $alias;
	}
}