From 047afee2e807da6a71e50cad4d567d910e9f9257 Mon Sep 17 00:00:00 2001 From: Diego Najar Date: Sun, 22 Oct 2017 14:36:16 +0200 Subject: [PATCH] Bug fixes with static content https://github.com/bludit/bludit/issues/533 --- .../admin/controllers/settings-advanced.php | 4 +- bl-kernel/admin/views/edit-content.php | 6 +-- bl-kernel/boot/rules/69.pages.php | 2 +- bl-kernel/dbpages.class.php | 15 ++++-- bl-kernel/functions.php | 48 ++++++++++++------- 5 files changed, 48 insertions(+), 27 deletions(-) diff --git a/bl-kernel/admin/controllers/settings-advanced.php b/bl-kernel/admin/controllers/settings-advanced.php index 7b70a5c2..f789a6a5 100644 --- a/bl-kernel/admin/controllers/settings-advanced.php +++ b/bl-kernel/admin/controllers/settings-advanced.php @@ -29,11 +29,11 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { // ============================================================================ // Main after POST // ============================================================================ -$allPublishedPages = buildAllpages(true); +$allPages = buildAllpages($publishedPages=true, $staticPages=true, $draftPages=false, $scheduledPages=false); // Homepage select options $homepageOptions = array(' '=>'- '.$L->g('Latest content').' -'); -foreach($allPublishedPages as $key=>$page) { +foreach ($allPages as $key=>$page) { $parentKey = $page->parentKey(); if ($parentKey) { $homepageOptions[$key] = $pagesByParentByKey[PARENT][$parentKey]->title() .'->'. $page->title(); diff --git a/bl-kernel/admin/views/edit-content.php b/bl-kernel/admin/views/edit-content.php index 105cbb7e..a1745a68 100644 --- a/bl-kernel/admin/views/edit-content.php +++ b/bl-kernel/admin/views/edit-content.php @@ -162,7 +162,7 @@ echo '
'; // Parent input // Check if the page has children - if(count($page->children())==0) { + if (count($page->children())==0) { $options = array(' '=>'- '.$L->g('No parent').' -'); $parentsList = $dbPages->getParents(); $parentsKey = array_keys($parentsList); @@ -180,9 +180,9 @@ echo '
'; 'selected'=>$page->parentKey(), 'tip'=>'' )); - } - echo '
'; + echo '
'; + } // Position input HTML::formInputText(array( diff --git a/bl-kernel/boot/rules/69.pages.php b/bl-kernel/boot/rules/69.pages.php index e1ee3cf2..f9d50445 100644 --- a/bl-kernel/boot/rules/69.pages.php +++ b/bl-kernel/boot/rules/69.pages.php @@ -100,7 +100,7 @@ if ($dbPages->scheduler()) { } // Generate pages parent tree, only published pages -buildPagesByParent(true); +buildPagesByParent(true, true); // Set home page is the user defined one if ($Site->homepage() && $Url->whereAmI()==='home') { diff --git a/bl-kernel/dbpages.class.php b/bl-kernel/dbpages.class.php index 05355898..942f4910 100644 --- a/bl-kernel/dbpages.class.php +++ b/bl-kernel/dbpages.class.php @@ -264,7 +264,7 @@ class dbPages extends dbJSON } // Returns a database with published pages - public function getPublishedDB() + public function getPublishedDB($onlyKeys=false) { $tmp = $this->db; foreach ($tmp as $key=>$fields) { @@ -272,6 +272,9 @@ class dbPages extends dbJSON unset($tmp[$key]); } } + if ($onlyKeys) { + return array_keys($tmp); + } return $tmp; } @@ -293,7 +296,7 @@ class dbPages extends dbJSON } // Returns an array with a list of keys/database of draft pages - public function getDraftDB() + public function getDraftDB($onlyKeys=false) { $tmp = $this->db; foreach ($tmp as $key=>$fields) { @@ -301,11 +304,14 @@ class dbPages extends dbJSON unset($tmp[$key]); } } + if ($onlyKeys) { + return array_keys($tmp); + } return $tmp; } // Returns an array with a list of keys/database of scheduled pages - public function getScheduledDB() + public function getScheduledDB($onlyKeys=false) { $tmp = $this->db; foreach($tmp as $key=>$fields) { @@ -313,6 +319,9 @@ class dbPages extends dbJSON unset($tmp[$key]); } } + if ($onlyKeys) { + return array_keys($tmp); + } return $tmp; } diff --git a/bl-kernel/functions.php b/bl-kernel/functions.php index 6b9e1399..886bc153 100644 --- a/bl-kernel/functions.php +++ b/bl-kernel/functions.php @@ -168,28 +168,30 @@ function buildPagesFor($for, $categoryKey=false, $tagKey=false) { // Generate the global variable $pagesByParent, defined on 69.pages.php // (boolean) $allPages, TRUE include all status, FALSE only include published status -function buildPagesByParent($onlyPublished=true) { +function buildPagesByParent($publishedPages=true, $staticPages=true) { global $dbPages; global $pagesByParent; global $pagesByParentByKey; - // Get DB - $pageNumber = 1; - $amountOfItems = -1; - $db = $dbPages->getList($pageNumber, $amountOfItems, $onlyPublished); + $onlyKeys = true; + $keys = array(); + if ($publishedPages) { + $keys = array_merge($keys, $dbPages->getPublishedDB($onlyKeys)); + } + if ($staticPages) { + $keys = array_merge($keys, $dbPages->getStaticDB($onlyKeys)); + } - // Get Keys - $keys = array_keys($db); - foreach($keys as $pageKey) { + foreach ($keys as $pageKey) { $page = buildPage($pageKey); - if($page!==false) { + if ($page!==false) { $parentKey = $page->parentKey(); // FALSE if the page is parent - if($parentKey===false) { + if ($parentKey===false) { array_push($pagesByParent[PARENT], $page); $pagesByParentByKey[PARENT][$page->key()] = $page; } else { - if( !isset($pagesByParent[$parentKey]) ) { + if (!isset($pagesByParent[$parentKey])) { $pagesByParent[$parentKey] = array(); } array_push($pagesByParent[$parentKey], $page); @@ -221,19 +223,29 @@ function buildStaticPages() { pageKeyN => Page object, ) */ -function buildAllpages($onlyPublished=true) { +function buildAllpages($publishedPages=true, $staticPages=true, $draftPages=true, $scheduledPages=true) { global $dbPages; // Get DB - $pageNumber = 1; - $amountOfItems = -1; - $db = $dbPages->getList($pageNumber, $amountOfItems, $onlyPublished); + $onlyKeys = true; + $keys = array(); + if ($publishedPages) { + $keys = array_merge($keys, $dbPages->getPublishedDB($onlyKeys)); + } + if ($staticPages) { + $keys = array_merge($keys, $dbPages->getStaticDB($onlyKeys)); + } + if ($draftPages) { + $keys = array_merge($keys, $dbPages->getDraftDB($onlyKeys)); + } + if ($scheduledPages) { + $keys = array_merge($keys, $dbPages->getScheduledDB($onlyKeys)); + } $tmp = array(); - $keys = array_keys($db); - foreach($keys as $pageKey) { + foreach ($keys as $pageKey) { $page = buildPage($pageKey); - if($page!==false) { + if ($page!==false) { $tmp[$page->key()] = $page; } }