Switch to API calls and hard code execption list
authorSeamus Lee <seamuslee001@gmail.com>
Tue, 11 Apr 2017 05:09:06 +0000 (15:09 +1000)
committerSeamus Lee <seamuslee001@gmail.com>
Tue, 11 Apr 2017 09:00:24 +0000 (19:00 +1000)
CRM/SMS/Form/Provider.php
Civi/API/Subscriber/ChainSubscriber.php
tests/phpunit/CRM/SMS/BAO/ProviderTest.php

index 6f209565504d736fb30375c532287eda78aff950..1a94c13d0f866032e81b14321111186c81e583a0 100644 (file)
@@ -175,7 +175,7 @@ class CRM_SMS_Form_Provider extends CRM_Core_Form {
       if ($this->_id) {
         $recData['id'] = $this->_id;
       }
-      CRM_SMS_BAO_Provider::create($recData);
+      civicrm_api3('SmsProvider', 'create', $recData);
     }
   }
 
index fe8dce83403ca482af4e2dc6b92aebaab098fae6..5906878f690c207f7b0bd6f14dad878f4643c943 100644 (file)
@@ -125,6 +125,14 @@ class ChainSubscriber implements EventSubscriberInterface {
         );
         $subEntity = _civicrm_api_get_entity_name_from_camel($subAPI[1]);
 
+        // Hard coded list of entitys that have fields starting api_ and shouldn't be automatically
+        // deemed to be chained API calls
+        if ((($subEntity == 'type' || $subEntity == 'url') && $entity == 'SmsProvider') ||
+          ($entity == 'Job' && ($subEntity == 'prefix' || $subEntity == 'entity' || $subEntity == 'action')) ||
+          ($entity == 'Contact' && $subEntity == 'key')) {
+          continue;
+        }
+
         foreach ($result['values'] as $idIndex => $parentAPIValues) {
 
           if ($subEntity != 'contact') {
index a451d105c773560c9794146511914a4de53f3188..185edf826bcb63bdc37f2d1d5721388f9047a86b 100644 (file)
@@ -65,12 +65,11 @@ class CRM_SMS_BAO_ProviderTest extends CiviUnitTestCase {
       'api_type' => 1,
     );
     $this->callAPISuccess('SmsProvider', 'create', $values);
-    // CRM_SMS_BAO_Provider::create($values);
     $provider = $this->callAPISuccess('SmsProvider', 'getsingle', array('title' => 'test SMS provider'));
     $domain_id = CRM_Core_DAO::getFieldValue('CRM_SMS_DAO_Provider', $provider['id'], 'domain_id');
     $this->assertNull($domain_id);
     $values2 = array('title' => 'Test SMS Provider2', 'id' => $provider['id']);
-    CRM_SMS_BAO_Provider::create($values2);
+    $this->callAPISuccess('SmsProvider', 'create', $values2);
     $provider = $this->callAPISuccess('SmsProvider', 'getsingle', array('id' => $provider['id']));
     $this->assertEquals('Test SMS Provider2', $provider['title']);
     $domain_id = CRM_Core_DAO::getFieldValue('CRM_SMS_DAO_Provider', $provider['id'], 'domain_id');
@@ -90,7 +89,7 @@ class CRM_SMS_BAO_ProviderTest extends CiviUnitTestCase {
       'is_active' => 1,
       'api_type' => 1,
     );
-    CRM_SMS_BAO_Provider::create($values);
+    $this->callAPISuccess('SmsProvider', 'create', $values);
     $provider = $this->callAPISuccess('SmsProvider', 'getsingle', array('title' => 'test SMS provider'));
     $domain_id = CRM_Core_DAO::getFieldValue('CRM_SMS_DAO_Provider', $provider['id'], 'domain_id');
     $this->assertEquals(CRM_Core_Config::domainID(), $domain_id);