setUri($entry->getUri() . '.html'); } } else { $entry = new Raw($path, $new_parents); } if ($entry instanceof Entry) { $node->addChild($entry); } } $node->sort(); if (isset($node->getEntries()[$params['index_key']])) { $node->getEntries()[$params['index_key']]->setFirstPage($node->getFirstPage()); $node->setIndexPage($node->getEntries()[$params['index_key']]); } else { $node->setIndexPage(false); } return $node; } /** * @param Directory $parent * @param String $title * @return Directory */ public static function getOrCreateDir(Directory $parent, $title) { $slug = DauxHelper::slug($title); if (array_key_exists($slug, $parent->getEntries())) { return $parent->getEntries()[$slug]; } $dir = new Directory(); $dir->setTitle($title); $dir->setUri($slug); $parent->addChild($dir); return $dir; } /** * @param array $parents * @param string $title * @return Content */ public static function getOrCreatePage($parents, $title) { $slug = DauxHelper::slug($title); $uri = $slug . ".html"; /** * @var Directory $nearestParent */ $nearestParent = end($parents); if (array_key_exists($uri, $nearestParent->getEntries())) { return $nearestParent->getEntries()[$uri]; } $page = new Content('', $parents); $page->setUri($uri); $page->setContent("-"); //set an almost empty content to avoid problems if ($title == 'index') { $page->setName('_index'); $page->setTitle($nearestParent->getTitle()); $nearestParent->setIndexPage($page); } else { $page->setName($slug); $page->setTitle($title); } $nearestParent->addChild($page); return $page; } }