settings = $settingsService; $this->contents = $contentService; $this->themes = $themeService; } public function tags() { $pages = $this->contents->loadAllPages(); foreach ($pages as $page) { $temp = []; if (isset($page['tags'])) { $temp = explode(',', $page['tags']); foreach ($temp as $tag) { $label = trim($tag); if (!find($this->p_tags, ['tag_name' => $label])) { array_push($this->p_tags, [ 'tag_name' => $label, 'slug' => safeString($label), 'pages' => $this->tagPages($label, $pages), ]); } } } } $global = $this->settings->getGlobal(); $tagData = []; $pageInfo = [ 'keywords' => isset($global['keywords']) ? $global['keywords'] : 'fipamo, blog, jamstack, php, markdown, js', 'menu' => $this->settings->getMenu(), 'tags' => $this->settings->getTags(), 'description' => $global['descriptions'], 'image' => $global['base_url'] . $global['background'], 'baseURL' => $global['base_url'], 'dynamicRender' => $global['dynamicRender'], ]; $tagData = [ 'tags' => $this->p_tags, 'info' => $pageInfo, ]; return $tagData; } private function tagPages($tag, $pages) { $tagged = []; foreach ($pages as $page) { if (isset($page['tags'])) { if (strpos($page['tags'], $tag) !== false) { array_push($tagged, [ 'title' => $page['title'], 'slug' => $page['slug'], 'path' => $page['path'], 'feature' => $page['feature'], ]); } } } return $tagged; } public function archive() { $pages = $this->contents->loadAllPages(); $years = []; $archive = []; foreach ($pages as $page) { // $year = date("Y", date($page["rawCreated"])); $date = explode('/', $page['path']); // echo $page["title"] . " : " . $year . "\n"; if (!find($years, ['year' => trim($date[0])])) { $findPages = filter($pages, ['createdYear' => trim($date[0])]); // var_dump($findPages); array_push( $years, [ 'year' => trim($date[0]), 'count' => count($findPages), ] ); } } foreach ($years as $year) { $sorted = []; $filtered = filter($pages, ['createdYear' => $year['year']]); foreach ($filtered as $obj) { $month = date('m', date($obj['rawCreated'])); if (!find($sorted, ['month' => $month])) { $perMonth = filter( $pages, [ 'path' => $year['year'] . '/' . $month, 'deleted' => false, 'published' => true, 'layout' => 'page', ] ); array_push($sorted, [ 'month' => $month, 'full_month' => date('F', date($obj['rawCreated'])), 'count' => count($perMonth), 'pages' => $perMonth, ]); } } array_push($this->p_archive, [ 'year' => $year['year'], 'year_data' => $sorted, ]); } $global = $this->settings->getGlobal(); $archive_data = []; $pageInfo = [ 'keywords' => isset($global['keywords']) ? $global['keywords'] : 'fipamo, blog, jamstack, php, markdown, js', 'menu' => $this->settings->getMenu(), 'tags' => $this->settings->getTags(), 'description' => $global['descriptions'], 'image' => $global['base_url'] . $global['background'], 'baseURL' => $global['base_url'], 'dynamicRender' => $global['dynamicRender'], ]; $archiveData = [ 'archive' => $this->p_archive, 'info' => $pageInfo, ]; return $archiveData; } public function page($page) { $global = $this->settings->getGlobal(); $pageOptions = []; $pageInfo = [ 'keywords' => isset($global['keywords']) ? $global['keywords'] : 'fipamo, blog, jamstack, php, markdown, js', 'description' => $global['descriptions'], 'image' => $global['base_url'] . $global['background'], 'baseURL' => $global['base_url'], ]; $tags = []; if (isset($page['tags'])) { $taglist = explode(',', $page['tags']); foreach ($taglist as $tag) { $label = trim($tag); array_push($tags, [ 'label' => $label . ' ', 'slug' => safeString($label), ]); } } $meta = [ 'who' => $page['author'], 'when' => $page['created'], 'tags' => $tags, ]; // if page feature isn't empty, find image from list and set it as background image // if it is empty, just use global background if ($page['feature'] != '' || $page['feature'] != null) { $media = explode(',', $page['feature']); $set = false; foreach ($media as $file) { $item = trim($file); $ext = pathinfo($item, PATHINFO_EXTENSION); if ($ext != 'mp4' && !$set) { $pageInfo['image'] = $pageInfo['baseURL'] . $item; $set = true; } } } $recent = []; $featured = []; $limit = 4; $pages = $this->contents->loadAllPages(); foreach ($pages as $item) { if ( !$item['deleted'] && $item['published'] && $item['menu'] != 'true' ) { if (count($recent) < $limit) { array_push($recent, [ 'path' => $item['path'], 'slug' => $item['slug'], 'title' => $item['title'], 'feature' => $item['feature'], ]); } if ($item['featured'] == true) { if (count($featured) < $limit) { array_push($featured, [ 'path' => $item['path'], 'slug' => $item['slug'], 'title' => $item['title'], 'feature' => $item['feature'], ]); } } } } $pageOptions = [ 'title' => $page['title'], 'background' => $page['feature'], 'content' => $page['html'], 'meta' => $meta, 'recent' => $recent, 'featured' => $featured, 'info' => $pageInfo, 'menu' => $this->settings->getMenu(), 'dynamicRender' => $global['dynamicRender'], 'media' => $page['media'], 'files' => $page['docs'], 'tags' => $meta['tags'], ]; return $pageOptions; } public function navigation() { $pageOptions = [ 'title' => 'Edit Navigation', 'status' => session('member') != '' ? true : false, 'menu' => $this->settings->getMenu(), ]; return $pageOptions; } public function settings() { $global = $this->settings->getGlobal(); $email = $this->settings->getEmail(); $updated = new Carbon($global['last_backup']); $status = session('member') != '' ? true : false; $pageOptions = [ 'title' => 'Settings', 'private' => $global['private'], 'renderOnSave' => $global['renderOnSave'], 'background' => $global['background'], 'member' => session('member'), 'ftoken' => session('form_token'), 'siteTitle' => $global['title'], 'baseUrl' => $global['base_url'], 'desc' => $global['descriptions'], 'lastBackup' => $updated->format('Y M D d'), 'currentTheme' => $global['theme'], 'themes' => $this->themes->getThemes(), 'apiStatus' => isset($global['externalAPI']) ? $global['externalAPI'] : 'false', 'dynamicRenderStatus' => isset($global['dynamicRender']) ? $global['dynamicRender'] : 'false', 'mailOption' => $email['active'], 'mailConfig' => $email, 'status' => $status, ]; return $pageOptions; } }