CRM-13750 Add search by permissioned relationship to Advanced Search.
authorDave Greenberg <dave@civicrm.org>
Wed, 13 Nov 2013 22:29:53 +0000 (14:29 -0800)
committerDave Greenberg <dave@civicrm.org>
Wed, 13 Nov 2013 22:29:53 +0000 (14:29 -0800)
----------------------------------------
* CRM-13750: Advanced search - add permissioned relationship as a criteria
  http://issues.civicrm.org/jira/browse/CRM-13750

CRM/Contact/BAO/Query.php
CRM/Contact/Form/Search/Criteria.php
templates/CRM/Contact/Form/Search/Criteria/Relationship.tpl

index 7c1582dea4b9fb14e456871d242975edde11f3a7..c5ef91bfe0ca35d108446ab1276b55f23918a111 100644 (file)
@@ -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;
index 54f1e03cab321416788b2ab4ad8207811c4c4ef7..7022d257f1cbf468e32cece00c5b63a196a8df22 100644 (file)
@@ -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) {
index 053fed89b54a4173b2705c1414cbe858a61594db..5fae8341f1f9ecaa889dc937099b2569ba0acf1d 100644 (file)
@@ -44,6 +44,9 @@
       <td>
          {$form.relation_status.label}<br />
          {$form.relation_status.html}
+         </p>
+         {$form.relation_permission.label}<br />
+         {$form.relation_permission.html}
       </td>
       <td>
         {$form.relation_target_group.label} {help id="id-relationship-target-group" file="CRM/Contact/Form/Search/Advanced.hlp"}<br />