• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/components/kanban/services/logs.php
  • Класс: BitrixTasksComponentsKanbanServicesLogs
  • Вызов: Logs::getNewLog
public function getNewLog(array $items): array
{
	if (empty($items))
	{
		return $items;
	}
	// first get last viewed dates
	$res = ViewedTable::getList([
		'filter' => [
			'USER_ID' => $this->userId,
			'TASK_ID' => array_keys($items)
		]
	]);
	while ($row = $res->fetch())
	{
		$items[$row['TASK_ID']]['data']['date_view'] = $row['VIEWED_DATE'];
	}
	// then get new log after view
	$filterLog = array(
		'LOGIC' => 'OR'
	);
	foreach ($items as $id => &$item)
	{
		if ($item['data']['date_view'])
		{
			$filterLog[] = array(
				'>CREATED_DATE' => $item['data']['date_view'],
				'TASK_ID' => $id
			);
		}
		$item['data']['date_view'] = $item['data']['date_view'] ? $item['data']['date_view']->getTimestamp() : 0;
	}
	unset($item);
	$res = LogTable::getList([
		'select' => [
			'TASK_ID', 'FIELD', 'FROM_VALUE', 'TO_VALUE'
		],
		'filter' => [
			'!USER_ID' => $this->userId,
			'=FIELD' => [
				'COMMENT',
				self::USER_WEBDAV_CODE,
				'CHECKLIST_ITEM_CREATE'
			],
			$filterLog
		]
	]);
	while ($row = $res->fetch())
	{
		$log =& $items[$row['TASK_ID']]['data']['log'];

		// wee need only files and comments
		if ($row['FIELD'] == 'COMMENT')
		{
			$log['comment']++;
		}
		elseif ($row['FIELD'] == self::USER_WEBDAV_CODE)
		{
			$row['FROM_VALUE'] = $row['FROM_VALUE'] == '' ? 0 : count(explode(',', $row['FROM_VALUE']));
			$row['TO_VALUE'] = $row['TO_VALUE'] == '' ? 0 : count(explode(',', $row['TO_VALUE']));
			if ($row['TO_VALUE'] > $row['FROM_VALUE'])
			{
				$log['file'] += ($row['TO_VALUE'] - $row['FROM_VALUE']);
			}
		}
		elseif ($row['FIELD'] == 'CHECKLIST_ITEM_CREATE')
		{
			$log['checklist']++;
		}
	}

	return $items;
}