Your IP : 3.140.196.3


Current Path : /var/www/axolotl/data/www/nn.axolotls.ru/bitrix/modules/crm/lib/integration/
Upload File :
Current File : /var/www/axolotl/data/www/nn.axolotls.ru/bitrix/modules/crm/lib/integration/socialnetwork.php

<?php

namespace Bitrix\Crm\Integration;

use Bitrix\Main\Event;
use Bitrix\Main\EventResult;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\UserTable;

class Socialnetwork
{
	const DATA_ENTITY_TYPE_CRM_LEAD = 'CRM_LOG_LEAD';
	const DATA_ENTITY_TYPE_CRM_CONTACT = 'CRM_LOG_CONTACT';
	const DATA_ENTITY_TYPE_CRM_COMPANY = 'CRM_LOG_COMPANY';
	const DATA_ENTITY_TYPE_CRM_DEAL = 'CRM_LOG_DEAL';
	const DATA_ENTITY_TYPE_CRM_INVOICE = 'CRM_INVOICE';
	const DATA_ENTITY_TYPE_CRM_ACTIVITY = 'CRM_ACTIVITY';
	const DATA_ENTITY_TYPE_CRM_ENTITY_COMMENT = 'CRM_ENTITY_COMMENT';

	public static function onUserProfileRedirectGetUrl(Event $event)
	{
		$result = new EventResult(
			EventResult::UNDEFINED,
			array(),
			'crm'
		);

		$userFields = $event->getParameter('userFields');

		if (
			!is_array($userFields)
			|| empty($userFields["UF_USER_CRM_ENTITY"])
		)
		{
			return $result;
		}

		$entityCode = trim($userFields["UF_USER_CRM_ENTITY"]);
		$entityData = explode('_', $entityCode);

		if (
			!empty($entityData[0])
			&& !empty($entityData[1])
			&& intval($entityData[1]) > 0
		)
		{
			$url = \CCrmOwnerType::GetEntityShowPath(\CCrmOwnerType::resolveID(\CUserTypeCrm::getLongEntityType($entityData[0])), $entityData[1]);
			if (!empty($url))
			{
				$result = new EventResult(
					EventResult::SUCCESS,
					array(
						'url' => $url,
					),
					'crm'
				);
			}
		}

		return $result;
	}

	public static function onLogProviderGetProvider(Event $event)
	{
		$result = new EventResult(
			EventResult::UNDEFINED,
			array(),
			'crm'
		);

		$entityType = $event->getParameter('entityType');

		switch ($entityType)
		{
			case self::DATA_ENTITY_TYPE_CRM_LEAD:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmLead();
				break;
			case self::DATA_ENTITY_TYPE_CRM_CONTACT:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmContact();
				break;
			case self::DATA_ENTITY_TYPE_CRM_COMPANY:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmCompany();
				break;
			case self::DATA_ENTITY_TYPE_CRM_DEAL:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmDeal();
				break;
			case self::DATA_ENTITY_TYPE_CRM_INVOICE:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmInvoice();
				break;
			case self::DATA_ENTITY_TYPE_CRM_ACTIVITY:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmActivity();
				break;
			case self::DATA_ENTITY_TYPE_CRM_ENTITY_COMMENT:
				$provider = new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmEntityComment();
				break;
			default:
				$provider = false;
		}

		if ($provider)
		{
			$result = new EventResult(
				EventResult::SUCCESS,
				array(
					'provider' => $provider,
				),
				'crm'
			);
		}

		return $result;
	}

	public static function onLogProviderGetContentId(Event $event)
	{
		$result = new EventResult(
			EventResult::UNDEFINED,
			array(),
			'crm'
		);

		$eventFields = $event->getParameter('eventFields');
		$contentEntityType = $contentEntityId = false;

		if (!empty($eventFields["EVENT_ID"]))
		{
			$providersList = array(
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmInvoice(),
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmActivity(),
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmEntityComment(),
			);
			foreach($providersList as $provider)
			{
				if (in_array($eventFields["EVENT_ID"], $provider->getEventId()))
				{
					$contentEntityType = $provider->getContentTypeId();
					$contentEntityId = intval($eventFields["ENTITY_ID"]);
					break;
				}
			}

			$providersList = array(
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmLead(),
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmContact(),
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmCompany(),
				new \Bitrix\Crm\Integration\Socialnetwork\Livefeed\CrmDeal(),
			);
			foreach($providersList as $provider)
			{
				if (in_array($eventFields["EVENT_ID"], $provider->getEventId()))
				{
					$contentEntityType = $provider->getContentTypeId();
					$contentEntityId = intval($eventFields["ID"]);
					break;
				}
			}
		}

		if (
			$contentEntityType
			&& $contentEntityId > 0
		)
		{
			$result = new EventResult(
				EventResult::SUCCESS,
				array(
					'contentEntityType' => $contentEntityType,
					'contentEntityId' => $contentEntityId
				),
				'crm'
			);
		}

		return $result;
	}

	public static function onCommentAuxGetPostTypeList(Event $event)
	{
		return new EventResult(
			EventResult::SUCCESS,
			array(
				'typeList' => \Bitrix\Crm\Integration\Socialnetwork\CommentAux\CreateTask::getPostTypeList(),
			),
			'crm'
		);
	}

	public static function onCommentAuxGetCommentTypeList(Event $event)
	{
		return new EventResult(
			EventResult::SUCCESS,
			array(
				'typeList' => \Bitrix\Crm\Integration\Socialnetwork\CommentAux\CreateTask::getCommentTypeList(),
			),
			'crm'
		);
	}

	public static function onCommentAuxInitJs(Event $event)
	{
		\Bitrix\Crm\Integration\Socialnetwork\CommentAux::initJs();

		Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/crm/lib/integration/socialnetwork/commentaux/createtask.php');

		return new EventResult(
			EventResult::SUCCESS,
			array(
				'lang_additional' => array(
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_LEAD' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_LEAD'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_LEAD' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_LEAD'),
					'SONET_COMMENTAUX_JS_CREATETASK_POST_CRM_LEAD' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_POST_CRM_LEAD'),
					'SONET_COMMENTAUX_JS_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_LEAD' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_LEAD'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_CONTACT' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_CONTACT'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_CONTACT' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_CONTACT'),
					'SONET_COMMENTAUX_JS_CREATETASK_POST_CRM_CONTACT' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_POST_CRM_CONTACT'),
					'SONET_COMMENTAUX_JS_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_CONTACT' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_CONTACT'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_COMPANY' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_COMPANY'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_COMPANY' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_COMPANY'),
					'SONET_COMMENTAUX_JS_CREATETASK_POST_CRM_COMPANY' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_POST_CRM_COMPANY'),
					'SONET_COMMENTAUX_JS_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_COMPANY' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_COMPANY'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_DEAL' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_DEAL'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_DEAL' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_DEAL'),
					'SONET_COMMENTAUX_JS_CREATETASK_POST_CRM_DEAL' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_POST_CRM_DEAL'),
					'SONET_COMMENTAUX_JS_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_DEAL' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_DEAL'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_INVOICE' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_INVOICE'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_INVOICE' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_INVOICE'),
					'SONET_COMMENTAUX_JS_CREATETASK_POST_CRM_INVOICE' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_POST_CRM_INVOICE'),
					'SONET_COMMENTAUX_JS_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_INVOICE' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_INVOICE'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ACTIVITY' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ACTIVITY'),
					'SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_ACTIVITY' => Loc::getMessage('SONET_EXT_COMMENTAUX_CREATE_TASK_CRM_ENTITY_COMMENT_ACTIVITY'),
					'SONET_COMMENTAUX_JS_CREATETASK_POST_CRM_ACTIVITY' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_POST_CRM_ACTIVITY'),
					'SONET_COMMENTAUX_JS_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_ACTIVITY' => Loc::getMessage('SONET_COMMENTAUX_CREATETASK_COMMENT_CRM_ENTITY_COMMENT_ACTIVITY')
				)
			),
			'crm'
		);
	}

	public static function buildAuxTaskDescription(array $params, $entityType = '')
	{
		$result = false;

		if (isset($params['TITLE']))
		{
			$result = $params['TITLE'];
		}
		else if (
			$entityType == \Bitrix\Crm\Integration\Socialnetwork::DATA_ENTITY_TYPE_CRM_CONTACT
			&& isset($params['NAME'])
			&& isset($params['LAST_NAME'])
		)
		{
			$result = \CCrmContact::prepareFormattedName([
				'HONORIFIC' => isset($params['HONORIFIC']) ? $params['HONORIFIC'] : '',
				'NAME' => $params['NAME'],
				'LAST_NAME' => $params['LAST_NAME'],
				'SECOND_NAME' => isset($params['SECOND_NAME']) ? $params['SECOND_NAME'] : '',
			]);
		}
		elseif (
			isset($params['FINAL_RESPONSIBLE_ID'])
			&& intval($params['FINAL_RESPONSIBLE_ID']) > 0
		)
		{
			$res = UserTable::getList([
				'filter' => [
					'=ID' => intval($params['FINAL_RESPONSIBLE_ID'])
				],
				'select' => ['NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN']
			]);
			if ($userFields = $res->fetch())
			{
				$result = \CUser::formatName(\CSite::getNameFormat(), $userFields, true, false);
			}
		}
		elseif (
			$entityType == \Bitrix\Crm\Integration\Socialnetwork::DATA_ENTITY_TYPE_CRM_DEAL
			&& !empty($params['FINAL_STATUS_ID'])
			&& isset($params['CATEGORY_ID'])
		)
		{
			$info = \CCrmViewHelper::getDealStageInfos($params['CATEGORY_ID']);
			if (!empty($info[$params['FINAL_STATUS_ID']]))
			{
				$result = $info[$params['FINAL_STATUS_ID']]['NAME'];
			}
		}
		elseif (
			$entityType == \Bitrix\Crm\Integration\Socialnetwork::DATA_ENTITY_TYPE_CRM_LEAD
			&& !empty($params['FINAL_STATUS_ID'])
		)
		{
			$info = \CCrmViewHelper::getLeadStatusInfos();
			if (!empty($info[$params['FINAL_STATUS_ID']]))
			{
				$result = $info[$params['FINAL_STATUS_ID']]['NAME'];
			}
		}


		return $result;
	}
}