From 59f97da68f7dd1c543c523c43fe6388ccd33c464 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Wed, 21 May 2014 20:06:28 +1200 Subject: [PATCH] separation of concerns - move uf specific code to uf classes --- CRM/Contact/Page/View.php | 46 ++++++++----------------------- CRM/Contact/Page/View/Summary.php | 2 +- CRM/Utils/System/Base.php | 17 ++++++++++++ CRM/Utils/System/DrupalBase.php | 23 ++++++++++++++++ CRM/Utils/System/Joomla.php | 28 +++++++++++++++++++ CRM/Utils/System/WordPress.php | 13 +++++++++ 6 files changed, 94 insertions(+), 35 deletions(-) diff --git a/CRM/Contact/Page/View.php b/CRM/Contact/Page/View.php index 0a8dcaff09..82bc7cbdb7 100644 --- a/CRM/Contact/Page/View.php +++ b/CRM/Contact/Page/View.php @@ -311,6 +311,12 @@ class CRM_Contact_Page_View extends CRM_Core_Page { } } + /** + * @param $contactId + * @param bool $isDeleted + * + * @return string + */ static function setTitle($contactId, $isDeleted = FALSE) { static $contactDetails; $displayName = $contactImage = NULL; @@ -340,47 +346,19 @@ class CRM_Contact_Page_View extends CRM_Core_Page { /** * Add urls for display in the actions menu + * @param CRM_Core_Page $obj + * @param integer $cid */ static function addUrls(&$obj, $cid) { - // TODO rewrite without so many hard-coded CMS bits; use abstractions like CRM_Core_Permission::check('cms:...') and CRM_Utils_System + $uid = CRM_Core_BAO_UFMatch::getUFId($cid); - $config = CRM_Core_Config::singleton(); - $session = CRM_Core_Session::singleton(); - $uid = CRM_Core_BAO_UFMatch::getUFId($cid); - $userRecordUrl = NULL; if ($uid) { - if ($config->userSystem->is_drupal == '1' && - ($session->get('userID') == $cid || CRM_Core_Permission::checkAnyPerm(array('cms:administer users', 'cms:view user account'))) - ) { - $userRecordUrl = CRM_Utils_System::url('user/' . $uid); - } - elseif ($config->userFramework == 'Joomla') { - $userRecordUrl = NULL; - // if logged in user is super user, then he can view other users joomla profile - if (JFactory::getUser()->authorise('core.admin')) { - $userRecordUrl = $config->userFrameworkBaseURL . "index.php?option=com_users&view=user&task=user.edit&id=" . $uid; - } - elseif ($session->get('userID') == $cid) { - $userRecordUrl = $config->userFrameworkBaseURL . "index.php?option=com_admin&view=profile&layout=edit&id=" . $uid; - } - } - // For WordPress, provide link to user profile is contact belongs to logged in user OR user has administrator role - elseif ($config->userFramework == 'WordPress' && - ($session->get('userID') == $cid || CRM_Core_Permission::checkAnyPerm(array('cms:administer users'))) - ) { - $userRecordUrl = $config->userFrameworkBaseURL . "wp-admin/user-edit.php?user_id=" . $uid; - } + $userRecordUrl = CRM_Core_Config::singleton()->userSystem->getUserRecordUrl($cid); $obj->assign('userRecordUrl', $userRecordUrl); $obj->assign('userRecordId', $uid); } - elseif (($config->userSystem->is_drupal == '1' && CRM_Core_Permission::check('administer users')) || - ($config->userFramework == 'Joomla' && - JFactory::getUser()->authorise('core.create', 'com_users') - ) - ) { - $userAddUrl = CRM_Utils_System::url('civicrm/contact/view/useradd', - 'reset=1&action=add&cid=' . $cid - ); + elseif (CRM_Core_Config::singleton()->userSystem->checkPermissionAddUser()) { + $userAddUrl = CRM_Utils_System::url('civicrm/contact/view/useradd', 'reset=1&action=add&cid=' . $cid); $obj->assign('userAddUrl', $userAddUrl); } diff --git a/CRM/Contact/Page/View/Summary.php b/CRM/Contact/Page/View/Summary.php index a8df6e947d..ee94b0173a 100644 --- a/CRM/Contact/Page/View/Summary.php +++ b/CRM/Contact/Page/View/Summary.php @@ -275,7 +275,7 @@ class CRM_Contact_Page_View_Summary extends CRM_Contact_Page_View { //for birthdate format with respect to birth format set $this->assign('birthDateViewFormat', CRM_Utils_Array::value('qfMapping', CRM_Utils_Date::checkBirthDateFormat())); } - + $defaults['external_identifier'] = $contact->external_identifier; $this->assign($defaults); diff --git a/CRM/Utils/System/Base.php b/CRM/Utils/System/Base.php index aae668cd8c..1aa78eb0bb 100644 --- a/CRM/Utils/System/Base.php +++ b/CRM/Utils/System/Base.php @@ -295,5 +295,22 @@ abstract class CRM_Utils_System_Base { } return $this->getLoggedInUniqueIdentifier(); } + + /** + * Get Url to view user record + * @param integer $contactID Contact ID + * + * @return string + */ + function getUserRecordUrl($contactID) { + return NULL; + } + /** + * Is the current user permitted to add a user + * @return bool + */ + function checkPermissionAddUser() { + return FALSE; + } } diff --git a/CRM/Utils/System/DrupalBase.php b/CRM/Utils/System/DrupalBase.php index b0cff3e7c6..fd3523ccbf 100644 --- a/CRM/Utils/System/DrupalBase.php +++ b/CRM/Utils/System/DrupalBase.php @@ -237,4 +237,27 @@ abstract class CRM_Utils_System_DrupalBase extends CRM_Utils_System_Base { function permissionDenied() { drupal_access_denied(); } + + /** + * Get Url to view user record + * @param integer $contactID Contact ID + * + * @return string + */ + function getUserRecordUrl($contactID) { + $uid = CRM_Core_BAO_UFMatch::getUFId($contactID); + if (CRM_Core_Session::singleton()->get('userID') == $contactID || CRM_Core_Permission::checkAnyPerm(array('cms:administer users', 'cms:view user account'))) { + return CRM_Utils_System::url('user/' . $uid); + }; + } + + /** + * Is the current user permitted to add a user + * @return bool + */ + function checkPermissionAddUser() { + if (CRM_Core_Permission::check('administer users')) { + return TRUE; + } + } } diff --git a/CRM/Utils/System/Joomla.php b/CRM/Utils/System/Joomla.php index c92dbe4093..e7d8a4765b 100644 --- a/CRM/Utils/System/Joomla.php +++ b/CRM/Utils/System/Joomla.php @@ -798,5 +798,33 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base { ); return array($url, NULL, $siteRoot); } + + /** + * Get Url to view user record + * @param integer $contactID Contact ID + * + * @return string + */ + function getUserRecordUrl($contactID) { + $uid = CRM_Core_BAO_UFMatch::getUFId($contactID); + $userRecordUrl = NULL; + // if logged in user is super user, then he can view other users joomla profile + if (JFactory::getUser()->authorise('core.admin')) { + return CRM_Core_Config::singleton()->userFrameworkBaseURL . "index.php?option=com_users&view=user&task=user.edit&id=" . $uid; + } + elseif (CRM_Core_Session::singleton()->get('userID') == $contactID) { + return CRM_Core_Config::singleton()->userFrameworkBaseURL . "index.php?option=com_admin&view=profile&layout=edit&id=" . $uid; + } + } + + /** + * Is the current user permitted to add a user + * @return bool + */ + function checkPermissionAddUser() { + if (JFactory::getUser()->authorise('core.create', 'com_users')) { + return TRUE; + } + } } diff --git a/CRM/Utils/System/WordPress.php b/CRM/Utils/System/WordPress.php index d02ce668b1..78ad9f0d92 100644 --- a/CRM/Utils/System/WordPress.php +++ b/CRM/Utils/System/WordPress.php @@ -733,5 +733,18 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { function getTimeZoneString() { return get_option('timezone_string'); } + + /** + * Get Url to view user record + * @param integer $contactID Contact ID + * + * @return string + */ + function getUserRecordUrl($contactID) { + $uid = CRM_Core_BAO_UFMatch::getUFId($contactID); + if (CRM_Core_Session::singleton()->get('userID') == $contactID || CRM_Core_Permission::checkAnyPerm(array('cms:administer users'))) { + return CRM_Core_Config::singleton()->userFrameworkBaseURL . "wp-admin/user-edit.php?user_id=" . $uid; + } + } } -- 2.25.1