- Модуль: 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;
}