• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/event.php
  • Класс: BitrixImOpenLinesQueueEvent
  • Вызов: Event::onUserUpdate
static function onUserUpdate(&$userFields)
{
	if(
		$userFields['RESULT'] === true &&
		!empty(self::$userFieldsUpdate)
	)
	{
		if (
			isset($userFields['ACTIVE']) &&
			isset(self::$userFieldsUpdate['ACTIVE']) &&
			self::$userFieldsUpdate['ACTIVE'] === 'Y' &&
			$userFields['ACTIVE'] === 'N'
		)
		{
			self::onUserDelete($userFields['ID']);
		}
		else
		{
			$changedDepartments = [];

			if(
				isset($userFields['ACTIVE']) &&
				isset(self::$userFieldsUpdate['ACTIVE']) &&
				self::$userFieldsUpdate['ACTIVE'] === 'N' &&
				$userFields['ACTIVE'] === 'Y'
			)
			{
				if(isset($userFields['UF_DEPARTMENT']))
				{
					$changedDepartments = $userFields['UF_DEPARTMENT'];
				}
				else
				{
					$changedDepartments = self::$userFieldsUpdate['UF_DEPARTMENT'];
				}
			}
			elseif(
				isset($userFields['UF_DEPARTMENT'])
				&& is_array($userFields['UF_DEPARTMENT'])
				&& isset(self::$userFieldsUpdate['UF_DEPARTMENT'])
				&& is_array(self::$userFieldsUpdate['UF_DEPARTMENT'])
				&& (
					!isset($userFields['ACTIVE'])
					|| $userFields['ACTIVE'] === 'Y'
				)
			)
			{
				$changedDepartments = array_merge(
					array_diff($userFields['UF_DEPARTMENT'], self::$userFieldsUpdate['UF_DEPARTMENT']),
					array_diff(self::$userFieldsUpdate['UF_DEPARTMENT'], $userFields['UF_DEPARTMENT'])
				);
			}

			if(!empty($changedDepartments))
			{
				$lines = self::getLineIsDepartmentQueue($changedDepartments);

				if (!empty($lines))
				{
					foreach ($lines as $lineId)
					{
						$queueManager = new QueueManager($lineId);
						$queueManager->refresh();
					}
				}
			}
		}
	}

	self::$userFieldsUpdate = false;
}