Your IP : 18.189.14.251


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/imopenlines/lib/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/imopenlines/lib/preset.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage crm
 * @copyright 2001-2016 Bitrix
 */
namespace Bitrix\ImOpenlines;

use Bitrix\Main\Config\Option;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;

Loc::loadMessages(__FILE__);

class Preset
{
	protected $errors = array();
	protected static $version = 1;
	protected static $versionOptionName = 'preset_version';

	protected static function getVersion()
	{
		return self::$version;
	}

	protected static function getInstalledVersion()
	{
		return (int) Option::get('imopenlines', self::$versionOptionName, 0);
	}

	public static function updateInstalledVersion($version = null)
	{
		if($version === null)
		{
			$version = self::getVersion();
		}

		Option::set('imopenlines', self::$versionOptionName, $version);
	}

	public static function checkVersion()
	{
		return self::getVersion() > self::getInstalledVersion();
	}

	public function install()
	{
		if(!self::checkVersion())
		{
			return true;
		}

		$result = $this->createLiveChat();
		if($result)
		{
			self::updateInstalledVersion();
		}

		$callback = array(__CLASS__, 'installVersion' . self::getVersion());
		if (is_callable($callback))
		{
			call_user_func_array($callback, array());
		}

		return $result;
	}

	public function uninstall()
	{
	}

	protected function createLiveChat()
	{
		$orm = \Bitrix\ImOpenLines\Model\LivechatTable::getList(Array(
			'select' => Array('CNT'),
			'runtime' => array(
				new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)')
			),
			'filter' => Array('>CONFIG_ID' => 10)
		));
		$row = $orm->fetch();
		if ($row['CNT'] > 0)
		{
			return true;
		}

		if (!\Bitrix\Main\Loader::includeModule('imconnector'))
		{
			return false;
		}

		$orm = \Bitrix\ImOpenLines\Model\ConfigTable::getList(Array(
			'select' => Array('ID'),
			'filter' => Array('>ID' => 10)
		));
		if ($row = $orm->fetch())
		{
			$result = \Bitrix\ImConnector\Connector::add($row['ID'], 'livechat');
			return $result->isSuccess();
		}

		$configManager = new \Bitrix\ImOpenLines\Config();
		$configId = $configManager->create();
		if ($configId)
		{
			$result = \Bitrix\ImConnector\Connector::add($configId, 'livechat');
			if (!$result->isSuccess())
			{
				$configManager->delete($configId);
				return false;
			}
		}

		return true;
	}

	/*
	public static function installVersion2()
	{
	}
	*/
}