getUser($request); if (!Authority::canIndexStructuralElementsShared($user)) { throw new AuthorizationFailedException(); } list($offset, $limit) = $this->getOffsetAndLimit(); $elements = []; $contents = StructuralElement::findBySQL( 'range_id != ? AND range_type = ? ORDER BY mkdate ASC', [$user->id, 'user'] ); foreach ($contents as $content) { if (count($content->content_approval) === 0) { continue; } $add_content = false; foreach ($content->content_approval['users'] as $listedUserPerm) { if ($listedUserPerm['id'] == $user->id && !empty($listedUserPerm['read'])) { $add_content = true; } } if ($add_content) { $elements[] = $content; } } $resources = []; foreach ($elements as $element) { $has_parent = array_column($elements, null, 'id')[$element->parent_id] ?? false; if (!$has_parent) { $resources[] = $element; } } return $this->getPaginatedContentResponse($resources, count($resources)); } }