CRM-15451 - Fix api.getlist handling of deceased contacts
authorColeman Watts <coleman@civicrm.org>
Tue, 14 Oct 2014 22:13:05 +0000 (18:13 -0400)
committerColeman Watts <coleman@civicrm.org>
Tue, 14 Oct 2014 22:13:05 +0000 (18:13 -0400)
CRM/Activity/Form/Activity.php
api/v3/Contact.php
tests/phpunit/api/v3/ContactTest.php

index 28f9de52f28c112ac2b9b4f0026828faab948f75..4f82a425a8ce86ed0371dda0b0e37888d57315f3 100644 (file)
@@ -180,12 +180,12 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       'assignee_contact_id' => array(
         'type' => 'entityRef',
         'label' => ts('Assigned To'),
-        'attributes' => array('multiple' => TRUE, 'create' => TRUE),
+        'attributes' => array('multiple' => TRUE, 'create' => TRUE, 'api' => array('params' => array('is_deceased' => 0))),
       ),
       'followup_assignee_contact_id' => array(
         'type' => 'entityRef',
         'label' => ts('Assigned To'),
-        'attributes' => array('multiple' => TRUE, 'create' => TRUE),
+        'attributes' => array('multiple' => TRUE, 'create' => TRUE, 'api' => array('params' => array('is_deceased' => 0))),
       ),
       'followup_activity_type_id' => array(
         'type' => 'select',
index e287cb21e32d33b23e894fea5bba9ab7798a6fd7..de3602f10af6beb8d690953cd0497fb2d3b758a4 100644 (file)
@@ -984,10 +984,6 @@ function _civicrm_api3_contact_getlist_params(&$request) {
   if (!empty($request['input'])) {
     $request['params'][$request['search_field']] = $request['input'];
   }
-  // Exclude deceased contacts by default
-  if (!isset($request['params']['is_deceased'])) {
-    $request['params']['is_deceased'] = 0;
-  }
 }
 
 /**
index 7f3b519f0018f5ec32c3146d88033ddf2f377c06..c6cd376d2c27add4ebfd04a8e3ee2372d1e0ed30 100644 (file)
@@ -1853,16 +1853,20 @@ class api_v3_ContactTest extends CiviUnitTestCase {
   }
 
   /**
-   * CRM-15443 - ensure getlist api does not return deleted or deceased contacts
+   * CRM-15443 - ensure getlist api does not return deleted contacts
    */
   function testGetlistExcludeConditions() {
     $name = md5(time());
-    $contact1 = $this->individualCreate(array('last_name' => $name, 'is_deceased' => 1));
-    $contact2 = $this->individualCreate(array('last_name' => $name, 'is_deleted' => 1));
-    $contact3 = $this->individualCreate(array('last_name' => $name));
+    $contact = $this->individualCreate(array('last_name' => $name));
+    $deceasedContact = $this->individualCreate(array('last_name' => $name, 'is_deceased' => 1));
+    $deletedContact = $this->individualCreate(array('last_name' => $name, 'is_deleted' => 1));
+    // We should get all but the deleted contact
     $result = $this->callAPISuccess('contact', 'getlist', array('input' => $name));
+    $this->assertEquals(2, $result['count'], 'In line ' . __LINE__);
+    // Force-exclude the deceased contact
+    $result = $this->callAPISuccess('contact', 'getlist', array('input' => $name, 'params' => array('is_deceased' => 0)));
     $this->assertEquals(1, $result['count'], 'In line ' . __LINE__);
-    $this->assertEquals($contact3, $result['values'][0]['id'], 'In line ' . __LINE__);
+    $this->assertEquals($contact, $result['values'][0]['id'], 'In line ' . __LINE__);
   }
 
   /**