/** * Filter folder list for frontend (published, ACL etc) * * @param JoomDOCFolder $root * @param string $parent * @return array */ public static function folders($root, $parent) { $folders = array(); $root->initIteration(); $parents = array(JoomDOCFileSystem::getRelativePath($parent)); while ($root->hasNext()) { $item = $root->getNext(); $access = new JoomDOCAccessHelper($item); $itemParent = JoomDOCFileSystem::getParentPath($access->relativePath); if (!(empty($itemParent) || in_array($itemParent, $parents))) { // parent has to be visible continue; } if ($access->docid && $item->document->published == JOOMDOC_STATE_UNPUBLISHED) { // item has to published continue; } $folder = new JObject(); // prepare data for MooTree $folder->set('ident', $access->relativePath); $folder->set('route', JoomDOCRoute::viewDocuments($access->relativePath, $access->alias)); $folder->set('title', $access->docid ? $item->document->title : $item->getFileName()); $folder->set('entry', $access->canEnterFolder); $folders[] = $folder; $parents[] = $access->relativePath; // save into visible parents } return $folders; }