From 429ccadd2dfb62ec38bf9c1b1b93330a95106f59 Mon Sep 17 00:00:00 2001 From: Diego Najar Date: Thu, 21 Sep 2017 20:42:03 +0200 Subject: [PATCH] Bug fixes on URL router --- bl-kernel/abstract/dblist.class.php | 4 + bl-kernel/admin/controllers/pages.php | 2 +- bl-kernel/admin/views/edit-page.php | 2 +- bl-kernel/boot/rules/69.pages.php | 3 +- bl-kernel/functions.php | 6 ++ bl-kernel/page.class.php | 6 -- bl-kernel/url.class.php | 16 ++-- bl-languages/en.json | 3 +- bl-plugins/api/plugin.php | 106 ++++++++++++++++++++------ bl-themes/log/index.php | 32 ++++---- bl-themes/log/php/post.php | 57 -------------- 11 files changed, 123 insertions(+), 114 deletions(-) delete mode 100644 bl-themes/log/php/post.php diff --git a/bl-kernel/abstract/dblist.class.php b/bl-kernel/abstract/dblist.class.php index f1f86f47..75a9156d 100644 --- a/bl-kernel/abstract/dblist.class.php +++ b/bl-kernel/abstract/dblist.class.php @@ -26,6 +26,10 @@ class dbList extends dbJSON public function getList($key, $pageNumber, $amountOfItems) { + if (empty($key)) { + return false; + } + if (!isset($this->db[$key])) { Log::set(__METHOD__.LOG_SEP.'Error key does not exist '.$key); return false; diff --git a/bl-kernel/admin/controllers/pages.php b/bl-kernel/admin/controllers/pages.php index 9c3d6ac6..c6faae7d 100644 --- a/bl-kernel/admin/controllers/pages.php +++ b/bl-kernel/admin/controllers/pages.php @@ -39,4 +39,4 @@ $scheduled = $dbPages->getScheduledDB(); $static = $dbPages->getStaticDB(); // Title of the page -$layout['title'] .= ' - '.$Language->g('Manage Content'); \ No newline at end of file +$layout['title'] .= ' - '.$Language->g('Manage Pages'); \ No newline at end of file diff --git a/bl-kernel/admin/views/edit-page.php b/bl-kernel/admin/views/edit-page.php index 45cfbb87..e1c9ce88 100644 --- a/bl-kernel/admin/views/edit-page.php +++ b/bl-kernel/admin/views/edit-page.php @@ -196,7 +196,7 @@ echo '
'; 'value'=>$externalCoverImage, 'class'=>'uk-width-1-1 uk-form-medium', 'label'=>$L->g('External Cover Image'), - 'tip'=>$L->g('Image URL') + 'tip'=>$L->g('Full image URL') )); // Slug input diff --git a/bl-kernel/boot/rules/69.pages.php b/bl-kernel/boot/rules/69.pages.php index 5542c122..eea02282 100644 --- a/bl-kernel/boot/rules/69.pages.php +++ b/bl-kernel/boot/rules/69.pages.php @@ -122,7 +122,8 @@ elseif ($Url->whereAmI()==='home') { // Set page 404 not found if ($Url->notFound()) { - $page = buildPage( $Site->pageNotFound() ); + $pageNotFoundKey = $Site->pageNotFound(); + $page = buildPage( $pageNotFoundKey ); if ($page===false) { $page = buildErrorPage(); } diff --git a/bl-kernel/functions.php b/bl-kernel/functions.php index 09c47c6c..dbc2771b 100644 --- a/bl-kernel/functions.php +++ b/bl-kernel/functions.php @@ -8,6 +8,10 @@ function buildPage($key) { global $Parsedown; global $Site; + if (empty($key)) { + return false; + } + // Page object, content from index.txt file $page = new Page($key); if (!$page->isValid()) { @@ -70,10 +74,12 @@ function reindexTags() { function buildErrorPage() { global $dbPages; global $Language; + global $dbUsers; $page = new Page(false); $page->setField('title', $Language->get('page-not-found')); $page->setField('content', $Language->get('page-not-found-content')); + $page->setField('user', $dbUsers->getUser('admin')); return $page; } diff --git a/bl-kernel/page.class.php b/bl-kernel/page.class.php index 930ca945..442f13c8 100644 --- a/bl-kernel/page.class.php +++ b/bl-kernel/page.class.php @@ -359,12 +359,6 @@ class Page { return ($this->getValue('status')=='sticky'); } - // (boolean) Returns TRUE if the page is static, FALSE otherwise - public function static() - { - return ($this->getValue('status')=='static'); - } - // (string) Returns status of the page public function status() { diff --git a/bl-kernel/url.class.php b/bl-kernel/url.class.php index 936e2da5..6b4629e3 100644 --- a/bl-kernel/url.class.php +++ b/bl-kernel/url.class.php @@ -69,16 +69,18 @@ class Url // Check coincidence with complete filterURI if ($subString==$filterURI) { $this->slug = mb_substr($this->uri, $filterFullLenght); - $this->whereAmI = $filterName; + $this->setWhereAmI($filterName); $this->activeFilter = $filterURI; - if (empty($this->slug) && (($filterName=='blog') || ($filterURI=='/')) ) { - $this->whereAmI = 'home'; - } elseif (!empty($this->slug) && ($filterURI=='/')) { - $this->whereAmI = 'page'; + if (empty($this->slug) && ($filterName=='blog')) { + $this->setWhereAmI('home'); } elseif (!empty($this->slug) && ($filterName=='blog')) { $this->setNotFound(); return false; + } elseif (empty($this->slug) && ($filterURI=='/')) { + $this->setWhereAmI('home'); + } elseif (!empty($this->slug) && ($filterURI=='/')) { + $this->setWhereAmI('page'); } elseif ($filterName=='admin') { $this->slug = ltrim($this->slug, '/'); } @@ -87,8 +89,8 @@ class Url } } - return false; $this->setNotFound(); + return false; } public function slug() @@ -155,7 +157,7 @@ class Url public function setNotFound() { - $this->whereAmI = 'page'; + $this->setWhereAmI('page'); $this->notFound = true; $this->httpCode = 404; $this->httpMessage = 'Not Found'; diff --git a/bl-languages/en.json b/bl-languages/en.json index 32b3bb70..73255035 100644 --- a/bl-languages/en.json +++ b/bl-languages/en.json @@ -211,5 +211,6 @@ "create-a-new-category-to-organize-your-pages": "Create a new category to organize your pages", "edit-or-delete-pages-from-your-site": "Edit or delete pages from your site", "add-new-page": "Add new page", - "this-field-is-used-when-you-order-the-pages-by-position": "This field is used when you order the pages by position." + "this-field-is-used-when-you-order-the-pages-by-position": "This field is used when you order the pages by position.", + "about-your-site-or-yourself": "About your site or yourself" } \ No newline at end of file diff --git a/bl-plugins/api/plugin.php b/bl-plugins/api/plugin.php index eaafb566..4d7aafcb 100644 --- a/bl-plugins/api/plugin.php +++ b/bl-plugins/api/plugin.php @@ -43,6 +43,7 @@ class pluginAPI extends Plugin { global $Url; global $dbPages; global $dbUsers; + global $Login; // CHECK URL // ------------------------------------------------------------ @@ -95,6 +96,8 @@ class pluginAPI extends Plugin { if ($username!==false) { // Enable write permissions $writePermissions = true; + // Loggin the user to create the session + $Login->setLogin($username, 'admin'); } } @@ -107,11 +110,22 @@ class pluginAPI extends Plugin { } // (GET) /api/pages/ elseif ( ($method==='GET') && ($parameters[0]==='pages') && !empty($parameters[1]) ) { - $data = $this->getPage($parameters[1]); + $pageKey = $parameters[1]; + $data = $this->getPage($pageKey); + } + // (PUT) /api/pages/ + elseif ( ($method==='PUT') && ($parameters[0]==='pages') && !empty($parameters[1]) && $writePermissions ) { + $pageKey = $parameters[1]; + $data = $this->editPage($pageKey, $inputs); + } + // (DELETE) /api/pages/ + elseif ( ($method==='DELETE') && ($parameters[0]==='pages') && !empty($parameters[1]) && $writePermissions ) { + $pageKey = $parameters[1]; + $data = $this->deletePage($pageKey); } // (POST) /api/pages elseif ( ($method==='POST') && ($parameters[0]==='pages') && empty($parameters[1]) && $writePermissions ) { - $data = $this->newPage($inputs); + $data = $this->createPage($inputs); } else { $this->response(401, 'Unauthorized', array('message'=>'Access denied or invalid endpoint.')); @@ -201,26 +215,6 @@ class pluginAPI extends Plugin { exit($json); } - private function getPage($key) - { - // Generate the object Page - $Page = buildPage($key); - - if (!$Page) { - return array( - 'status'=>'1', - 'message'=>'Page not found.' - ); - } - - $data = array(); - $data['status'] = '0'; - $data['message'] = 'Page filtered by key: '.$key; - $data['data'] = $Page->json( $returnsArray=true ); - - return $data; - } - private function getPages() { global $dbPages; @@ -247,10 +241,76 @@ class pluginAPI extends Plugin { return $tmp; } + private function getPage($key) + { + // Generate the object Page + $Page = buildPage($key); + + if (!$Page) { + return array( + 'status'=>'1', + 'message'=>'Page not found.' + ); + } + + return array( + 'status'=>'0', + 'message'=>'Page filtered by key: '.$key, + 'data'=>$Page->json( $returnsArray=true ) + ); + } + private function createPage($args) { // This function is defined on functions.php - return createPage($args); + $key = createPage($args); + + if ($key===false) { + return array( + 'status'=>'1', + 'message'=>'Error trying to create the new page.' + ); + } + + return array( + 'status'=>'0', + 'message'=>'Page created.', + 'data'=>array('key'=>$key) + ); + } + + private function editPage($key, $args) + { + $args['key'] = $key; + $newKey = editPage($args); + + if ($newKey===false) { + return array( + 'status'=>'1', + 'message'=>'Error trying to edit the page.' + ); + } + + return array( + 'status'=>'0', + 'message'=>'Page edited.', + 'data'=>array('key'=>$newKey) + ); + } + + private function deletePage($key) + { + if (deletePage($key)) { + return array( + 'status'=>'0', + 'message'=>'Page deleted.' + ); + } + + return array( + 'status'=>'1', + 'message'=>'Error trying to delete the page.' + ); } } \ No newline at end of file diff --git a/bl-themes/log/index.php b/bl-themes/log/index.php index f9b97e82..8b0fc0fe 100644 --- a/bl-themes/log/index.php +++ b/bl-themes/log/index.php @@ -15,11 +15,11 @@