From 781d7ccc7820c6494c295862fc5ed702a210cc62 Mon Sep 17 00:00:00 2001 From: monishdeb Date: Mon, 5 Oct 2015 10:24:41 +0530 Subject: [PATCH] Relationship count fix --- CRM/Contact/BAO/Contact.php | 6 ++++-- CRM/Contact/BAO/Contact/Permission.php | 4 +++- CRM/Contact/BAO/Relationship.php | 11 ++++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CRM/Contact/BAO/Contact.php b/CRM/Contact/BAO/Contact.php index a465d71bd8..51430c9bee 100644 --- a/CRM/Contact/BAO/Contact.php +++ b/CRM/Contact/BAO/Contact.php @@ -2573,9 +2573,11 @@ AND civicrm_openid.is_primary = 1"; case 'rel': $result = CRM_Contact_BAO_Relationship::getRelationship($contactId, CRM_Contact_BAO_Relationship::CURRENT, - 0, 1 + 0, 0, 0, + NULL, NULL, + TRUE ); - return $result; + return count($result); case 'group': diff --git a/CRM/Contact/BAO/Contact/Permission.php b/CRM/Contact/BAO/Contact/Permission.php index ab361ac03a..2d42840291 100644 --- a/CRM/Contact/BAO/Contact/Permission.php +++ b/CRM/Contact/BAO/Contact/Permission.php @@ -257,7 +257,9 @@ AND $operationClause LIMIT 1"; return FALSE; } } - if ($contactID == $selectedContactID && CRM_Core_Permission::check('edit my contact')) { + if ($contactID == $selectedContactID && + (CRM_Core_Permission::check('edit my contact') || CRM_Core_Permission::check('view my contact')) + ) { return TRUE; } else { diff --git a/CRM/Contact/BAO/Relationship.php b/CRM/Contact/BAO/Relationship.php index 4abba80a53..9a2ff7ab87 100644 --- a/CRM/Contact/BAO/Relationship.php +++ b/CRM/Contact/BAO/Relationship.php @@ -1230,8 +1230,9 @@ LEFT JOIN civicrm_country ON (civicrm_address.country_id = civicrm_country.id) while ($relationship->fetch()) { $rid = $relationship->civicrm_relationship_id; $cid = $relationship->civicrm_contact_id; + if ($permissionedContact && - (!CRM_Contact_BAO_Contact_Permission::relationship($cid, $contactId)) + (!CRM_Contact_BAO_Contact_Permission::allow($cid)) ) { continue; } @@ -1955,13 +1956,12 @@ AND cc.sort_name LIKE '%$name%'"; } $mask = CRM_Core_Action::mask($permissions); + $permissionedContacts = TRUE; if ($params['context'] != 'user') { $links = CRM_Contact_Page_View_Relationship::links(); - $permissionedContacts = FALSE; } else { $links = CRM_Contact_Page_View_UserDashBoard::links(); - $permissionedContacts = TRUE; $mask = NULL; } // get contact relationships @@ -1977,12 +1977,13 @@ AND cc.sort_name LIKE '%$name%'"; $params['total'] = 0; if (!empty($relationships)) { // FIXME: we cannot directly determine total permissioned relationship, hence re-fire query - $params['total'] = $permissionedRelationships = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], + $permissionedRelationships = CRM_Contact_BAO_Relationship::getRelationship($params['contact_id'], $relationshipStatus, - 0, 1, 0, + 0, 0, 0, NULL, NULL, $permissionedContacts ); + $params['total'] = count($permissionedRelationships); // format params foreach ($relationships as $relationshipId => $values) { -- 2.25.1