• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/recentlyusedmanager.php
  • Класс: BitrixDiskRecentlyUsedManager
  • Вызов: RecentlyUsedManager::push
public function push($user, $object)
{
	$userId = User::resolveUserId($user);
	if (!$userId)
	{
		$this->errorCollection->addOne(new Error('Could not get user id.'));
		return false;
	}
	$objectId = ($object instanceof DiskInternalsModel ? $object->getId() : (int)$object);

	$rows = RecentlyUsedTable::getList(
		[
			'select' => ['ID'],
			'filter' => [
				'=OBJECT_ID' => $objectId,
				'=USER_ID' => $userId,
			]
		]
	);

	$alreadyUpdateTime = false;
	foreach ($rows as $row)
	{
		if (!$alreadyUpdateTime)
		{
			$result = RecentlyUsedTable::update($row['ID'], [
				'CREATE_TIME' => new DateTime(),
			]);

			$alreadyUpdateTime = $result->isSuccess();
		}
		else
		{
			RecentlyUsedTable::delete($row['ID']);
		}
	}

	if (!$alreadyUpdateTime)
	{
		$result = RecentlyUsedTable::add(array(
			'OBJECT_ID' => $objectId,
			'USER_ID' => $userId,
		));

		$alreadyUpdateTime = $result->isSuccess();
	}

	if ($object instanceof File)
	{
		DiskDriver::getInstance()->getTrackedObjectManager()->pushFile($userId, $object);
	}

	if (!$alreadyUpdateTime)
	{
		return false;
	}

	RecentlyUsedTable::deleteOldObjects($userId);

	return true;
}