From 5ea73a9f268f17f2ef0113cf777967b57a942f90 Mon Sep 17 00:00:00 2001 From: Dave Greenberg Date: Wed, 13 Nov 2013 14:29:53 -0800 Subject: [PATCH] CRM-13750 Add search by permissioned relationship to Advanced Search. ---------------------------------------- * CRM-13750: Advanced search - add permissioned relationship as a criteria http://issues.civicrm.org/jira/browse/CRM-13750 --- CRM/Contact/BAO/Query.php | 15 +++++++++++++++ CRM/Contact/Form/Search/Criteria.php | 5 +++++ .../Contact/Form/Search/Criteria/Relationship.tpl | 3 +++ 3 files changed, 23 insertions(+) diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index 7c1582dea4..c5ef91bfe0 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -3788,6 +3788,7 @@ WHERE id IN ( $groupIDs ) // for relatinship search we always do wildcard $targetName = $this->getWhereValues('relation_target_name', $grouping); $relStatus = $this->getWhereValues('relation_status', $grouping); + $relPermission = $this->getWhereValues('relation_permission', $grouping); $targetGroup = $this->getWhereValues('relation_target_group', $grouping); $nameClause = $name = NULL; @@ -3898,6 +3899,20 @@ civicrm_relationship.start_date > {$today} $this->_qill[$grouping][] = ts('Relationship - Inactive or not Current'); } + //check for permissioned, non-permissioned and all permissioned relations + if ($relPermission[2] == 1) { + $this->_where[$grouping][] = "( +civicrm_relationship.is_permission_a_b = 1 +)"; + $this->_qill[$grouping][] = ts('Relationship - Permissioned'); + } elseif ($relPermission[2] == 2) { + //non-allowed permission relationship. + $this->_where[$grouping][] = "( +civicrm_relationship.is_permission_a_b = 0 +)"; + $this->_qill[$grouping][] = ts('Relationship - Non-permissioned'); + } + $this->addRelationshipDateClauses($grouping, $where); if(!empty($rType) && isset($rType->id)){ $where[$grouping][] = 'civicrm_relationship.relationship_type_id = ' . $rType->id; diff --git a/CRM/Contact/Form/Search/Criteria.php b/CRM/Contact/Form/Search/Criteria.php index 54f1e03cab..7022d257f1 100644 --- a/CRM/Contact/Form/Search/Criteria.php +++ b/CRM/Contact/Form/Search/Criteria.php @@ -433,9 +433,14 @@ class CRM_Contact_Form_Search_Criteria { $allRelationshipType = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, NULL, TRUE); $form->addElement('select', 'relation_type_id', ts('Relationship Type'), array('' => ts('- select -')) + $allRelationshipType); $form->addElement('text', 'relation_target_name', ts('Target Contact'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name')); + // relation status $relStatusOption = array(ts('Active '), ts('Inactive '), ts('All')); $form->addRadio('relation_status', ts('Relationship Status'), $relStatusOption); $form->setDefaults(array('relation_status' => 0)); + // relation permission + $relPermissionOption = array(ts('Any'), ts('Yes '), ts('No ') ); + $form->addRadio('relation_permission', ts('Permissioned Relationship?'), $relPermissionOption); + $form->setDefaults(array('relation_permission' => 0)); //add the target group if ($form->_group) { diff --git a/templates/CRM/Contact/Form/Search/Criteria/Relationship.tpl b/templates/CRM/Contact/Form/Search/Criteria/Relationship.tpl index 053fed89b5..5fae8341f1 100644 --- a/templates/CRM/Contact/Form/Search/Criteria/Relationship.tpl +++ b/templates/CRM/Contact/Form/Search/Criteria/Relationship.tpl @@ -44,6 +44,9 @@ {$form.relation_status.label}
{$form.relation_status.html} +

+ {$form.relation_permission.label}
+ {$form.relation_permission.html} {$form.relation_target_group.label} {help id="id-relationship-target-group" file="CRM/Contact/Form/Search/Advanced.hlp"}
-- 2.25.1