CRM-12499 Modify cms to WordPress translatePermission to make cms:administer users...
authorDave Greenberg <dave@civicrm.org>
Thu, 11 Jul 2013 17:12:07 +0000 (13:12 -0400)
committerDave Greenberg <dave@civicrm.org>
Thu, 11 Jul 2013 17:12:07 +0000 (13:12 -0400)
----------------------------------------
* CRM-12499: Allow users with 'access user profiles' to access $userRecordUrl
  http://issues.civicrm.org/jira/browse/CRM-12499

CRM/Contact/Page/View.php
CRM/Core/Permission/WordPress.php

index 6966452aac3ac428ea7c8effb8d51a0d1a30910c..3b92dd4e958c78122d6d35079268668086291bfa 100644 (file)
@@ -345,6 +345,7 @@ class CRM_Contact_Page_View extends CRM_Core_Page {
     $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')))
@@ -361,8 +362,11 @@ class CRM_Contact_Page_View extends CRM_Core_Page {
           $userRecordUrl = $config->userFrameworkBaseURL . "index.php?option=com_admin&view=profile&layout=edit&id=" . $uid;
         }
       }
-      else {
-        $userRecordUrl = NULL;
+      // 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;
       }
       $obj->assign('userRecordUrl', $userRecordUrl);
       $obj->assign('userRecordId', $uid);
index 9d9d347c0a064ac8ae3e03f6280e126501f38794..e2f5947b2eacd5236896b87bd62e5b23716127bd 100644 (file)
@@ -46,8 +46,9 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base {
    * @access public
    */
   function check($str) {
+    // Generic cms 'administer users' role tranlates to 'administrator' WordPress role 
     $str = $this->translatePermission($str, 'WordPress', array(
-      'view user account' => 'administrator',
+      'administer users' => 'administrator',
     ));
     if ($str == CRM_Core_Permission::ALWAYS_DENY_PERMISSION) {
       return FALSE;