/** * 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($this->app['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-' . ($name == $highlighted ? 'open' : 'close') : PathHelper::getIconFromExtension(pathinfo($entry->getPathname(), PATHINFO_EXTENSION)), 'Url' => (string) url('', array('module', 'path' => $vpath)), 'Path' => $vpath); } ArrayHelper::sortOn($p['files'], array('IsFolder', 'Name'), array(ArrayHelper::SORT_PROPERTY | ArrayHelper::SORT_REVERSE, ArrayHelper::SORT_PROPERTY | ArrayHelper::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(); /** @var \Page[] $children */ $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: ArrayHelper::sortOn($subpages, 'getTreeLeft', ArrayHelper::SORT_REVERSE); break; case self::ORDER_NAME_ASC: ArrayHelper::sortOn($subpages, 'getName'); break; case self::ORDER_NAME_DESC: ArrayHelper::sortOn($subpages, 'getName', ArrayHelper::SORT_REVERSE); break; } return new \Curry_Twig_CollectionWrapper($subpages, array($this, 'twigGetPage')); }