Example #1
0
 public function render()
 {
     $uri = Template::uri_resolve();
     if (isset($uri['start']) && $uri['start'] === true) {
         // $content = $this->conn->select('pfx_pages', '*', 'startpage', 1)[0];
         $active_theme_id = $this->conn->select("pfx_theme_settings", "active_theme_id");
         $active_theme_id = (int) $active_theme_id[0]["active_theme_id"];
         $content = $this->conn->query("SELECT * FROM pfx_pages WHERE startpage = 1 && theme_id = 6")[0];
         // var_dump($content);
         return $content;
     }
     $admin = $uri['is_admin_page'];
     $params = count($uri['uris']);
     if (!$admin) {
         // assume we start from the 'beginning'
         $segments = $uri['uris'];
         $content = $this->conn->select('pfx_pages', '*', 'slug', $segments[0])[0];
         // but if we have a category f.e /category/page — could be more though
         if ($params > 1) {
             // im inner joining our category, only fetching the title though..
             $sql = "SELECT\n        pfx_pages.*,\n        pfx_categories.category_title\n        FROM pfx_pages\n        INNER JOIN pfx_categories\n        ON pfx_categories.id = pfx_pages.categories\n        WHERE pfx_pages.slug = '{$segments['1']}'";
             $sth = $this->pdo->prepare($sql);
             $sth->execute();
             $content = $sth->fetchAll($this->pdo::FETCH_ASSOC);
             $content = $content[0];
         }
         if ($content === FALSE) {
             Template::not_found();
         }
         return $content;
     } else {
         if ($admin) {
             // routing inside admin
             $admin_pages = ADMINPATH . '/pages';
             $uris = $uri['uris'];
             $queries = isset($uri['queries']) ? $uri['queries'] : [];
             $page_slug = 'dashboard';
             $content['editable'] = false;
             if ($params > 1) {
                 $fp = $admin_pages . '/' . $uris[1] . '.php';
                 $page_slug = $uris[1];
                 if (file_exists($fp)) {
                     if (count($queries) === 0) {
                         $content['content'] = Template::get($fp);
                     } else {
                         if (count($queries) > 0) {
                             $query_section_fp = $admin_pages . '/sections/' . $queries['section'] . '.php';
                             $page_slug .= ' ' . $queries['section'];
                             if (isset($queries['preview']) && $queries['preview'] !== '') {
                                 // If preview
                                 $query_preview = $this->conn->select('pfx_pages', '*', 'id', $queries['preview']);
                                 $content['editable'] = true;
                                 $content['id'] = $query_preview[0]['id'];
                                 $content['content'] = $query_preview[0]['content'];
                             } else {
                                 if (isset($queries['edit']) && $queries['edit'] !== '') {
                                     // If edit
                                     $query_edit = $this->conn->select('pfx_pages', '*', 'id', $queries['edit']);
                                     $content['editable'] = 'active';
                                     $content['id'] = $query_edit[0]['id'];
                                     $content['content'] = $query_edit[0]['content'];
                                 } else {
                                     $content['editable'] = false;
                                     if (file_exists($query_section_fp)) {
                                         $content['content'] = Template::get($query_section_fp, false);
                                     } else {
                                         Template::not_found();
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     Template::not_found();
                 }
             } else {
                 if ($params === 1) {
                     $dashboard_path = $admin_pages . '/dashboard.php';
                     if (file_exists($dashboard_path)) {
                         $content['content'] = Template::get($dashboard_path);
                     } else {
                         Template::not_found();
                     }
                 }
             }
             $content['page-slug'] = $page_slug;
             $content['admin'] = $uri['is_admin_page'];
             return $content;
         }
     }
 }