dev/core#560 Replace instances of CRM_Core_Error::fatal with Exceptions or Status...
authorSeamus Lee <seamuslee001@gmail.com>
Sat, 23 Nov 2019 21:52:04 +0000 (08:52 +1100)
committerSeamus Lee <seamuslee001@gmail.com>
Mon, 25 Nov 2019 01:47:00 +0000 (12:47 +1100)
CRM/Activity/BAO/Activity.php
CRM/Core/BAO/ActionSchedule.php
CRM/SMS/BAO/Provider.php
CRM/SMS/Form/Group.php
CRM/SMS/Form/Schedule.php
CRM/SMS/Provider.php
tests/phpunit/CRM/Activity/BAO/ActivityTest.php

index 5d14e5f6adc28dbff4d9363607ab44eea806d335..930aaf631358a732165fddae18cd4570258a7fe9 100644 (file)
@@ -1336,21 +1336,19 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
         $errMsgs[] = PEAR::raiseError('Contact Does not accept SMS', NULL, PEAR_ERROR_RETURN);
       }
       else {
-        $sendResult = self::sendSMSMessage(
-          $contactId,
-          $tokenText,
-          $smsProviderParams,
-          $activityID,
-          $sourceContactId
-        );
-
-        if (PEAR::isError($sendResult)) {
-          // Collect all of the PEAR_Error objects
-          $errMsgs[] = $sendResult;
-        }
-        else {
+        try {
+          $sendResult = self::sendSMSMessage(
+            $contactId,
+            $tokenText,
+            $smsProviderParams,
+            $activityID,
+            $sourceContactId
+          );
           $success++;
         }
+        catch (CRM_Core_Exception $e) {
+          $errMsgs[] = $e->getMessage();
+        }
       }
     }
 
@@ -1381,8 +1379,8 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
    *   The activity ID that tracks the message.
    * @param int $sourceContactID
    *
-   * @return bool|PEAR_Error
-   *   true on success or PEAR_Error object
+   * @return bool true on success
+   * @throws CRM_Core_Exception
    */
   public static function sendSMSMessage(
     $toID,
@@ -1411,11 +1409,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
     // make sure both phone are valid
     // and that the recipient wants to receive sms
     if (empty($toPhoneNumber)) {
-      return PEAR::raiseError(
-        'Recipient phone number is invalid or recipient does not want to receive SMS',
-        NULL,
-        PEAR_ERROR_RETURN
-      );
+      throw new CRM_Core_Exception('Recipient phone number is invalid or recipient does not want to receive SMS');
     }
 
     $recipient = $toPhoneNumber;
@@ -1425,7 +1419,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
     $providerObj = CRM_SMS_Provider::singleton(['provider_id' => $smsProviderParams['provider_id']]);
     $sendResult = $providerObj->send($recipient, $smsProviderParams, $tokenText, NULL, $sourceContactID);
     if (PEAR::isError($sendResult)) {
-      return $sendResult;
+      throw new CRM_Core_Exception($sendResult->getMessage());
     }
 
     // add activity target record for every sms that is sent
index 7d3c857ac599fb1fc4bcee9950961561d606ca9c..d65d7b628b054407071337aa1c9e214344727431 100644 (file)
@@ -558,12 +558,17 @@ FROM civicrm_action_schedule cas
 
     $activity = CRM_Activity_BAO_Activity::create($activityParams);
 
-    CRM_Activity_BAO_Activity::sendSMSMessage($tokenRow->context['contactId'],
-      $sms_body_text,
-      $smsParams,
-      $activity->id,
-      $userID
-    );
+    try {
+      CRM_Activity_BAO_Activity::sendSMSMessage($tokenRow->context['contactId'],
+        $sms_body_text,
+        $smsParams,
+        $activity->id,
+        $userID
+      );
+    }
+    catch (CRM_Core_Exception $e) {
+      return ["sms_send_error" => $e->getMessage()];
+    }
 
     return [];
   }
index 4792a049f0bf9ea0f77cca6c2258b1ffd5cf3498..4e046f743390147e65923e2759ed5aadbcce17aa 100644 (file)
@@ -123,11 +123,11 @@ class CRM_SMS_BAO_Provider extends CRM_SMS_DAO_Provider {
    * @param int $providerID
    *
    * @return null
-   * @throws Exception
+   * @throws CRM_Core_Exception
    */
   public static function del($providerID) {
     if (!$providerID) {
-      CRM_Core_Error::fatal(ts('Invalid value passed to delete function.'));
+      throw new CRM_Core_Exception(ts('Invalid value passed to delete function.'));
     }
 
     $dao = new CRM_SMS_DAO_Provider();
index 3e32f31519413b846444176d145a1fbbdfaebc87..7aae52fb1b97afed2d4812360fe471c071f7402a 100644 (file)
@@ -25,7 +25,7 @@ class CRM_SMS_Form_Group extends CRM_Contact_Form_Task {
    */
   public function preProcess() {
     if (!CRM_SMS_BAO_Provider::activeProviderCount()) {
-      CRM_Core_Error::fatal(ts('The <a href="%1">SMS Provider</a> has not been configured or is not active.', [1 => CRM_Utils_System::url('civicrm/admin/sms/provider', 'reset=1')]));
+      CRM_Core_Error::statusBounce(ts('The <a href="%1">SMS Provider</a> has not been configured or is not active.', [1 => CRM_Utils_System::url('civicrm/admin/sms/provider', 'reset=1')]));
     }
 
     $session = CRM_Core_Session::singleton();
index 1fb81cd18210f164093a7ffb1340c939d4461df6..5cdf860cac108dfcf7781c40a73b7709d32709f9 100644 (file)
@@ -134,7 +134,7 @@ class CRM_SMS_Form_Schedule extends CRM_Core_Form {
     $params['mailing_id'] = $ids['mailing_id'] = $this->_mailingID;
 
     if (empty($params['mailing_id'])) {
-      CRM_Core_Error::fatal(ts('Could not find a mailing id'));
+      CRM_Core_Error::statusBounce(ts('Could not find a mailing id'));
     }
 
     $params['send_option'] = $this->controller->exportValue($this->_name, 'send_option');
index 019317277d706e3fd3ce16d20d371ea106639c18..18976e184865e5bdbfc63b51a1bff61c7beeb797 100644 (file)
@@ -32,6 +32,7 @@ abstract class CRM_SMS_Provider {
    * @param bool $force
    *
    * @return object
+   * @throws CRM_Core_Exception
    */
   public static function &singleton($providerParams = array(), $force = FALSE) {
     $mailingID = CRM_Utils_Array::value('mailing_id', $providerParams);
@@ -47,7 +48,7 @@ abstract class CRM_SMS_Provider {
     }
 
     if (!$providerName) {
-      CRM_Core_Error::fatal('Provider not known or not provided.');
+      throw new CRM_Core_Exception('Provider not known or not provided.');
     }
 
     $providerName = CRM_Utils_Type::escape($providerName, 'String');
@@ -62,7 +63,7 @@ abstract class CRM_SMS_Provider {
       else {
         // If we are running unit tests we simulate an SMS provider with the name "CiviTestSMSProvider"
         if ($providerName !== 'CiviTestSMSProvider') {
-          CRM_Core_Error::fatal("Could not locate extension for {$providerName}.");
+          throw new CRM_Core_Exception("Could not locate extension for {$providerName}.");
         }
         $providerClass = 'CiviTestSMSProvider';
       }
index 6b84cd7a3b9ca713af5f9440f854c54b1d8130a9..17f9497ba1221c27ba1766552bcd04c4b95e9443 100644 (file)
@@ -1178,7 +1178,7 @@ $text
     $this->assertEquals($activity['status_id'], $activityStatusCompleted, 'Expected activity status Completed.');
     $this->assertEquals($activity['subject'], 'createSendSmsTest subject', 'Activity subject does not match.');
     $this->assertEquals($activity['details'], $details, 'Activity details does not match.');
-    $this->assertEquals("Recipient phone number is invalid or recipient does not want to receive SMS", $sent[0]->message, "Expected error doesn't match");
+    $this->assertEquals("Recipient phone number is invalid or recipient does not want to receive SMS", $sent[0], "Expected error doesn't match");
     $this->assertEquals(0, $success, "Expected success to be 0");
   }
 
@@ -1193,7 +1193,7 @@ $text
     $this->assertEquals($activity['status_id'], $activityStatusCompleted, 'Expected activity status Completed.');
     $this->assertEquals($activity['subject'], 'createSendSmsTest subject', 'Activity subject does not match.');
     $this->assertEquals($activity['details'], $details, 'Activity details does not match.');
-    $this->assertEquals("Recipient phone number is invalid or recipient does not want to receive SMS", $sent[0]->message, "Expected error doesn't match");
+    $this->assertEquals("Recipient phone number is invalid or recipient does not want to receive SMS", $sent[0], "Expected error doesn't match");
     $this->assertEquals(0, $success, "Expected success to be 0");
   }
 
@@ -1229,7 +1229,7 @@ $text
   public function testSendSMSMobileInToProviderParamWithDoNotSMS() {
     list($sent, $activityId, $success) = $this->createSendSmsTest(2, TRUE, ['do_not_sms' => 1]);
     foreach ($sent as $error) {
-      $this->assertEquals('Contact Does not accept SMS', $error->getMessage());
+      $this->assertEquals('Contact Does not accept SMS', $error);
     }
     $this->assertEquals(1, count($sent), "Expected sent should a PEAR Error");
     $this->assertEquals(0, $success, "Expected success to be 0");