• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/session/update.php
  • Класс: BitrixImOpenLinesSessionUpdate
  • Вызов: Update::updateSessionDate
private function updateSessionDate(): void
{
	if (array_key_exists('CHECK_DATE_CLOSE', $this->newData))
	{
		$this->updateCheckTable['DATE_CLOSE'] = $this->newData['CHECK_DATE_CLOSE'];
		unset($this->newData['CHECK_DATE_CLOSE']);
	}
	elseif (
		isset($this->newData['DATE_MODIFY'])
		&& $this->newData['DATE_MODIFY'] instanceof DateTime
		&& (!isset($this->newData['CLOSED']) || $this->newData['CLOSED'] !== 'Y')
	)
	{
		if ($this->session->getSessionField('PAUSE') === 'N' || $this->newData['PAUSE'] === 'N'
		)
		{
			$dateClose = $this->modifyOnNotPause();
		}
		else
		{
			$dateClose = $this->modifyOnPause();
		}

		if ($dateClose)
		{
			$this->updateCheckTable['DATE_CLOSE'] = $dateClose;
		}
	}

	if (
		isset($this->newData['DATE_LAST_MESSAGE'])
		&& $this->newData['DATE_LAST_MESSAGE'] instanceof DateTime
		&& $this->session->getSessionField('DATE_CREATE') instanceof DateTime
	)
	{
		$this->newData['TIME_DIALOG'] = $this->newData['DATE_LAST_MESSAGE']->getTimestamp() - $this->session->getSessionField('DATE_CREATE')->getTimestamp();
	}

	if (
		!isset($this->newData['DATE_FIRST_LAST_USER_ACTION'])
		&& isset($this->newData['INPUT_MESSAGE'])
		&& $this->newData['INPUT_MESSAGE'] === true
		&& (
			empty($this->session->getSessionField('DATE_FIRST_LAST_USER_ACTION'))
			|| (
				!empty($this->newData['STATUS'])
				&& (
					(int)$this->newData['STATUS'] === Session::STATUS_CLIENT
					|| (int)$this->newData['STATUS'] === Session::STATUS_CLIENT_AFTER_OPERATOR
				)
				&& (int)$this->session->getSessionField('STATUS') !== Session::STATUS_CLIENT
				&& (int)$this->session->getSessionField('STATUS') !== Session::STATUS_CLIENT_AFTER_OPERATOR
			)
		)
	)
	{
		$this->newData['DATE_FIRST_LAST_USER_ACTION'] = new DateTime();
	}
}