From 316e9554ec4dc717179ac0ff9c4712dfc39d46c8 Mon Sep 17 00:00:00 2001 From: Andrew Embler Date: Wed, 9 Aug 2017 16:02:20 -0700 Subject: [PATCH] Fix #5750 --- .../controllers/backend/page/multilingual.php | 2 +- concrete/controllers/panel/page/versions.php | 2 +- concrete/src/Page/Page.php | 17 +++++++++++------ concrete/src/Page/Type/Type.php | 3 +-- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/concrete/controllers/backend/page/multilingual.php b/concrete/controllers/backend/page/multilingual.php index 2e675e53f30..ffd7ffd642c 100644 --- a/concrete/controllers/backend/page/multilingual.php +++ b/concrete/controllers/backend/page/multilingual.php @@ -96,7 +96,7 @@ public function create_new() $cp = new \Permissions($newParent); if ($cp->canAddSubCollection($ct)) { if ($this->page->isPageDraft()) { - $targetParent = \Page::getByPath(\Config::get('concrete.paths.drafts')); + $targetParent = \Page::getDraftsParentPage(); } else { $targetParent = $newParent; } diff --git a/concrete/controllers/panel/page/versions.php b/concrete/controllers/panel/page/versions.php index 9640145c45f..6f20c7f4a8d 100644 --- a/concrete/controllers/panel/page/versions.php +++ b/concrete/controllers/panel/page/versions.php @@ -90,7 +90,7 @@ public function new_page() $c->loadVersionObject($_REQUEST['cvID']); $nc = $c->cloneVersion(t('New Page Created From Version')); $v = $nc->getVersionObject(); - $drafts = Page::getByPath(Config::get('concrete.paths.drafts')); + $drafts = Page::getDraftsParentPage(); $nc = $c->duplicate($drafts); $nc->deactivate(); $nc->move($drafts); diff --git a/concrete/src/Page/Page.php b/concrete/src/Page/Page.php index 19a5b297193..ee6c98ba20c 100644 --- a/concrete/src/Page/Page.php +++ b/concrete/src/Page/Page.php @@ -564,12 +564,19 @@ public function removePermissions($userOrGroup, $permissions = []) } } + public static function getDraftsParentPage(Site $site = null) + { + $db = Database::connection(); + $site = $site ? $site : \Core::make('site')->getSite(); + $cParentID = $db->fetchColumn('select p.cID from PagePaths pp inner join Pages p on pp.cID = p.cID inner join SiteLocales sl on p.siteTreeID = sl.siteTreeID where cPath = ? and sl.siteID = ?', [Config::get('concrete.paths.drafts'), $site->getSiteID()]); + return Page::getByID($cParentID); + } + public static function getDrafts(Site $site) { $db = Database::connection(); - $u = new User(); - $nc = self::getByPath(Config::get('concrete.paths.drafts'), 'RECENT', $site); - $r = $db->executeQuery('select Pages.cID from Pages inner join Collections c on Pages.cID = c.cID where cParentID = ? and siteTreeID = ? order by cDateAdded desc', [$nc->getCollectionID(), $site->getSiteTreeID()]); + $nc = self::getDraftsParentPage($site); + $r = $db->executeQuery('select Pages.cID from Pages inner join Collections c on Pages.cID = c.cID where cParentID = ? order by cDateAdded desc', [$nc->getCollectionID()]); $pages = []; while ($row = $r->FetchRow()) { $entry = self::getByID($row['cID']); @@ -583,9 +590,7 @@ public static function getDrafts(Site $site) public function isPageDraft() { - $site = \Core::make('site')->getSite(); - $nc = self::getByPath(Config::get('concrete.paths.drafts'), 'RECENT', $site); - + $nc = self::getDraftsParentPage(); return $this->getCollectionParentID() == $nc->getCollectionID(); } diff --git a/concrete/src/Page/Type/Type.php b/concrete/src/Page/Type/Type.php index ec31cd67c8d..581db6f1944 100644 --- a/concrete/src/Page/Type/Type.php +++ b/concrete/src/Page/Type/Type.php @@ -1158,8 +1158,7 @@ public function createDraft(\Concrete\Core\Entity\Page\Template $pt, $u = false) } $db = Loader::db(); $ptID = $this->getPageTypeID(); - $site = \Core::make('site')->getSite(); - $parent = Page::getByPath(Config::get('concrete.paths.drafts'), 'RECENT', $site); + $parent = Page::getDraftsParentPage(); $data = array('cvIsApproved' => 0, 'cIsActive' => false, 'cAcquireComposerOutputControls' => true); $p = $parent->add($this, $data, $pt);