From 3d8f0941ed4266fe9d9976992b3b4cf606f7a39c Mon Sep 17 00:00:00 2001 From: zanderwar Date: Fri, 3 Nov 2017 08:32:03 +1300 Subject: [PATCH] Added config option check for disable_profiles and removed linking if it is disabled --- src/Model/BlogController.php | 15 +++++++++++++++ src/Model/BlogPost.php | 11 +++++++++++ templates/SilverStripe/Blog/Includes/EntryMeta.ss | 2 +- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Model/BlogController.php b/src/Model/BlogController.php index 4bc5565..6af2e62 100644 --- a/src/Model/BlogController.php +++ b/src/Model/BlogController.php @@ -4,6 +4,7 @@ namespace SilverStripe\Blog\Model; use PageController; use SilverStripe\Control\Director; +use SilverStripe\Control\HTTPResponse_Exception; use SilverStripe\Control\RSS\RSSFeed; use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\DataList; @@ -43,6 +44,14 @@ class BlogController extends PageController 'FilterDescription' => 'Text' ]; + /** + * If enabled, blog author profiles will be turned off for this site + * + * @config + * @var bool + */ + private static $disable_profiles = false; + /** * The current Blog Post DataList query. * @@ -68,10 +77,16 @@ class BlogController extends PageController /** * Renders a Blog Member's profile. * + * @throws HTTPResponse_Exception + * * @return string */ public function profile() { + if ($this->config()->get('disable_profiles')) { + $this->httpError(404, 'Not Found'); + } + $profile = $this->getCurrentProfile(); if (!$profile) { diff --git a/src/Model/BlogPost.php b/src/Model/BlogPost.php index c34da5c..b9194c8 100644 --- a/src/Model/BlogPost.php +++ b/src/Model/BlogPost.php @@ -9,6 +9,7 @@ use SilverStripe\Blog\Model\BlogCategory; use SilverStripe\Blog\Model\BlogPostFilter; use SilverStripe\Blog\Model\BlogTag; use SilverStripe\Control\Controller; +use SilverStripe\Core\Config\Config; use SilverStripe\Core\Manifest\ModuleLoader; use SilverStripe\Forms\DatetimeField; use SilverStripe\Forms\HiddenField; @@ -712,6 +713,16 @@ class BlogPost extends Page return $items; } + /** + * Checks to see if User Profiles has been disabled via config + * + * @return bool + */ + public function getProfilesDisabled() + { + return Config::inst()->get(BlogController::class, 'disable_profiles'); + } + /** * Sets the label for BlogPost.Title to 'Post Title' (Rather than 'Page name'). * diff --git a/templates/SilverStripe/Blog/Includes/EntryMeta.ss b/templates/SilverStripe/Blog/Includes/EntryMeta.ss index 11160a7..1b0044e 100644 --- a/templates/SilverStripe/Blog/Includes/EntryMeta.ss +++ b/templates/SilverStripe/Blog/Includes/EntryMeta.ss @@ -29,7 +29,7 @@ <% loop $Credits %> <% if not $First && not $Last %>, <% end_if %> <% if not $First && $Last %> <%t SilverStripe\\Blog\\Model\\Blog.AND "and" %> <% end_if %> - <% if $URLSegment %> + <% if $URLSegment && not $Up.ProfilesDisabled %> $Name.XML <% else %> $Name.XML