/** * Get path details. * * @param string $path * @param string $parent * @param array $highlighted * @param array $selected * @return array */ public function getPathInfo($path, $parent, $highlighted, $selected) { $p = array('Path' => $parent, 'IsRoot' => false, 'UploadUrl' => (string) url('', array('module', 'path' => $parent, 'action' => 'Upload')), 'files' => array()); $realpath = realpath(Curry_Core::$config->curry->wwwPath . DIRECTORY_SEPARATOR . $path); $dit = new DirectoryIterator($realpath); foreach ($dit as $entry) { $name = $entry->getFilename(); $vpath = $parent . '/' . $name; if ($name[0] === '.') { continue; } if (isset($_GET['filter'])) { if ($_GET['filter'] == 'folder' && !$entry->isDir()) { continue; } if ($entry->isFile() && !self::matchFilter($_GET['filter'], $name)) { continue; } } $p['files'][] = array('Name' => $name, 'IsHighlighted' => $name == $highlighted, 'IsSelected' => in_array($vpath, $selected), 'IsFolder' => $entry->isDir(), 'Icon' => $entry->isDir() ? 'icon_folder' : Curry_Util::getIconFromExtension(pathinfo($entry->getPathname(), PATHINFO_EXTENSION)), 'Url' => (string) url('', array('module', 'path' => $vpath)), 'Path' => $vpath); } Curry_Array::sortOn($p['files'], array('IsFolder', 'Name'), array(Curry_Array::SORT_PROPERTY | Curry_Array::SORT_REVERSE, Curry_Array::SORT_PROPERTY | Curry_Array::SORT_CASEINSENSITIVE)); return $p; }
/** * Twig callback to get subpages for page. * * @param Page $page * @return array|Curry_Twig_CollectionWrapper */ public function twigGetSubpages(Page $page) { if ($page->isLeaf()) { return array(); } $subpages = array(); $children = Page::getCachedChildren($page); foreach ($children as $subpage) { if ($subpage->getEnabled() && ($this->showHidden || $subpage->getVisible())) { $subpages[] = $subpage; } } if ($children instanceof PropelCollection) { $children->clearIterator(); } // set order switch ($this->sortOrder) { case self::ORDER_SORTINDEX_DESC: Curry_Array::sortOn($subpages, 'getTreeLeft', Curry_Array::SORT_REVERSE); break; case self::ORDER_NAME_ASC: Curry_Array::sortOn($subpages, 'getName'); break; case self::ORDER_NAME_DESC: Curry_Array::sortOn($subpages, 'getName', Curry_Array::SORT_REVERSE); break; } return new Curry_Twig_CollectionWrapper($subpages, array($this, 'twigGetPage')); }