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