- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/focuscontroller.php
- Класс: BitrixDiskFocusController
- Вызов: FocusController::getPageWithObject
private function getPageWithObject(BaseObject $object, FolderListOptions $gridOptions, array $filter)
{
$storage = $object->getStorage();
$securityContext = $storage->getCurrentUserSecurityContext();
$pageSize = $gridOptions->getPageSize() ?: FolderListOptions::COUNT_ON_PAGE;
$parameters = array(
'select' => array('ID'),
'filter' => $filter,
'order' => $gridOptions->getOrderForOrm(),
'limit' => $pageSize,
);
$countQuery = new Query(ObjectTable::getEntity());
$countQuery->addSelect(new ExpressionField('CNT', 'COUNT(1)'));
$countQuery->setFilter($parameters['filter']);
$totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch();
$totalCount = $totalCount['CNT'];
$pageCount = ceil($totalCount / $pageSize);
$driver = Driver::getInstance();
$finalPage = null;
for($pageNumber = 1; $pageNumber <= $pageCount; $pageNumber++)
{
$fullParameters = $driver->getRightsManager()->addRightsCheck($securityContext, $parameters, array('ID', 'CREATED_BY'));
$fullParameters['offset'] = $pageSize * ($pageNumber - 1);
$query = ObjectTable::getList($fullParameters);
while($row = $query->fetch())
{
if($row['ID'] == $object->getId())
{
$finalPage = $pageNumber;
break;
}
}
if($finalPage !== null)
{
break;
}
}
return $finalPage?: 1;
}