Wrap hook in a try/catch block.
authorDavid Thompson <davet@gnu.org>
Mon, 17 Nov 2014 21:16:18 +0000 (16:16 -0500)
committerDavid Thompson <davet@gnu.org>
Mon, 17 Nov 2014 21:16:18 +0000 (16:16 -0500)
* memberdashboard.php (memberdashboard_civicrm_post): Wrap DB and API
  calls in a try/catch.

memberdashboard.php

index e650b1b9e16e972cf595ae18ed9f1f129c240618..a8890f0f9d86b501c58fa4f73c26f92b3c067158 100644 (file)
@@ -121,45 +121,49 @@ function memberdashboard_civicrm_post($op, $objectName, $objectId, &$objectRef)
   $triggerOps = array('create', 'edit', 'delete');
 
   if($objectName == 'Membership' && in_array($op, $triggerOps)) {
-    // TODO: Extract all of this to a class for clarity and
-    // organization's sake.
-
-    // Get the oldest join date for the contact's memberships.
-    $contactId = $objectRef->contact_id;
-    $dao = CRM_Core_DAO::executeQuery(
-      'SELECT join_date FROM civicrm_membership WHERE contact_id=%1 ORDER BY join_date ASC LIMIT 1',
-      array( 1 => array($contactId, 'Integer') )
-    );
-
-    if($dao->fetch()) {
-      // Make the API call.
-      $joinDate = $dao->join_date;
-      $apiUrl = civicrm_api3('setting', 'getvalue', array(
-        'name' => 'memberdashboard_button_api_url',
-        'group' => MEMBERDASHBOARD_SETTINGS_GROUP
-      ));
-      $user = civicrm_api3('setting', 'getvalue', array(
-        'name' => 'memberdashboard_button_api_user',
-        'group' => MEMBERDASHBOARD_SETTINGS_GROUP
-      ));
-      $password = civicrm_api3('setting', 'getvalue', array(
-        'name' => 'memberdashboard_button_api_password',
-        'group' => MEMBERDASHBOARD_SETTINGS_GROUP
-      ));
-      $params = http_build_query(array(
-        'contact_id' => $contactId,
-        'date' => $joinDate
-      ));
-
-      if(!empty($apiUrl) && !empty($user) && !empty($password)) {
-        $curl = curl_init();
-        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
-        curl_setopt($curl, CURLOPT_USERPWD, "$user:$password");
-        curl_setopt($curl, CURLOPT_URL, "$apiUrl?$params");
-        curl_exec($curl);
+    try {
+      // TODO: Extract all of this to a class for clarity and
+      // organization's sake.
+
+      // Get the oldest join date for the contact's memberships.
+      $contactId = $objectRef->contact_id;
+      $dao = CRM_Core_DAO::executeQuery(
+        'SELECT join_date FROM civicrm_membership WHERE contact_id=%1 ORDER BY join_date ASC LIMIT 1',
+        array( 1 => array($contactId, 'Integer') )
+      );
+
+      if($dao->fetch()) {
+        // Make the API call.
+        $joinDate = $dao->join_date;
+        $apiUrl = civicrm_api3('setting', 'getvalue', array(
+          'name' => 'memberdashboard_button_api_url',
+          'group' => MEMBERDASHBOARD_SETTINGS_GROUP
+        ));
+        $user = civicrm_api3('setting', 'getvalue', array(
+          'name' => 'memberdashboard_button_api_user',
+          'group' => MEMBERDASHBOARD_SETTINGS_GROUP
+        ));
+        $password = civicrm_api3('setting', 'getvalue', array(
+          'name' => 'memberdashboard_button_api_password',
+          'group' => MEMBERDASHBOARD_SETTINGS_GROUP
+        ));
+        $params = http_build_query(array(
+          'contact_id' => $contactId,
+          'date' => $joinDate
+        ));
+
+        if(!empty($apiUrl) && !empty($user) && !empty($password)) {
+          $curl = curl_init();
+          curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
+          curl_setopt($curl, CURLOPT_USERPWD, "$user:$password");
+          curl_setopt($curl, CURLOPT_URL, "$apiUrl?$params");
+          curl_exec($curl);
+        }
       }
-    }
 
-    $dao->free();
+      $dao->free();
+    } catch(Exception $e) {
+      // Ignore it.  Not the end of the world if this fails.
+    }
   }
 }