From 4b030206c659d2904b95e54e371d94c8bd92fe17 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 26 Nov 2013 12:30:28 -0800 Subject: [PATCH] CRM_Dashlet_Page_Blog - Get feed URL from settings --- CRM/Dashlet/Page/Blog.php | 21 ++++++++++++++++++--- settings/Core.setting.php | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/CRM/Dashlet/Page/Blog.php b/CRM/Dashlet/Page/Blog.php index 40e355f9df..1c3d78c7be 100644 --- a/CRM/Dashlet/Page/Blog.php +++ b/CRM/Dashlet/Page/Blog.php @@ -42,6 +42,21 @@ class CRM_Dashlet_Page_Blog extends CRM_Core_Page { const CACHE_DAYS = 1; const BLOG_URL = 'https://civicrm.org/blog/feed'; + /** + * Get the final, usable URL string (after interpolating any variables) + * + * @return FALSE|string + */ + public function getBlogUrl() { + // Note: We use "*default*" as the default (rather than self::BLOG_URL) so that future + // developers can change BLOG_URL without needing to update {civicrm_setting}. + $url = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'blogUrl', NULL, '*default*'); + if ($url === '*default*') { + $url = self::BLOG_URL; + } + return CRM_Utils_System::evalUrl($url); + } + /** * List blog articles as dashlet * @@ -72,7 +87,7 @@ class CRM_Dashlet_Page_Blog extends CRM_Core_Page { $expire = time() - (60 * 60 * 24 * self::CACHE_DAYS); // Refresh data after CACHE_DAYS if (strtotime($cache->created_date) < $expire) { - $new_data = $this->_getFeed(); + $new_data = $this->_getFeed($this->getBlogUrl()); // If fetching the new rss feed was successful, return it // Otherwise use the old cached data - it's better than nothing if ($new_data) { @@ -81,7 +96,7 @@ class CRM_Dashlet_Page_Blog extends CRM_Core_Page { } return unserialize($cache->data); } - return $this->_getFeed(); + return $this->_getFeed($this->getBlogUrl()); } /** @@ -91,7 +106,7 @@ class CRM_Dashlet_Page_Blog extends CRM_Core_Page { * * @access public */ - public function _getFeed( $url = self::BLOG_URL) { + public function _getFeed($url) { $httpClient = new CRM_Utils_HttpClient(self::CHECK_TIMEOUT); list ($status, $rawFeed) = $httpClient->get($url); if ($status !== CRM_Utils_HttpClient::STATUS_OK) { diff --git a/settings/Core.setting.php b/settings/Core.setting.php index 4f1cfc6192..596f996836 100644 --- a/settings/Core.setting.php +++ b/settings/Core.setting.php @@ -516,6 +516,28 @@ When enabled, statistics about your CiviCRM installation are reported anonymousl 'description' => null, 'help_text' => null, ), + 'blogUrl' => array( + 'group_name' => 'CiviCRM Preferences', + 'group' => 'core', + 'name' => 'blogUrl', + 'prefetch' => 0, + 'config_only'=> 0, + 'type' => 'String', + 'quick_form_type' => 'Element', + 'html_type' => 'text', + 'html_attributes' => array( + 'size' => 64, + 'maxlength' => 128, + ), + 'html_type' => 'Text', + 'default' => '*default*', + 'add' => '4.3', + 'title' => 'Blog Feed URL', + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => 'Blog feed URL used by the blog dashlet', + 'help_text' => 'Use "*default*" for the system default or override with a custom URL', + ), 'communityMessagesUrl' => array( 'group_name' => 'CiviCRM Preferences', 'group' => 'core', -- 2.25.1