function run() { if (CRM_Utils_System::authenticateKey()) { $request_type = CRM_Utils_Request::retrieve('type', 'String'); $request_data = CRM_Utils_Request::retrieve('data', 'String'); $config = CRM_Core_Config::singleton(); if ($config->debug) { $request_data_log = print_r($request_data, TRUE); CRM_Core_Error::debug_log_message("Mailchimp Webhook Request [{$request_type}]: \n{$request_data_log}"); } $function_name = 'self::mailchimpWebhook' . ucwords($request_type); if (is_callable($function_name)) { // Set a canary to prevent CiviMailchimp hooks from firing, which // would trigger updates back to Mailchimp, resulting in an endless // loop. civimailchimp_static('mailchimp_do_not_run_hooks', TRUE); try { call_user_func($function_name, $request_data); } catch (Exception $e) { $error = array('code' => get_class($e), 'message' => $e->getMessage(), 'exception' => $e); $message = "Mailchimp Webhook Request [{$request_type}]: {$error['code']}: {$error['message']}"; CRM_CiviMailchimp_BAO_SyncLog::saveMessage('error', 'mailchimp_to_civicrm', $message, $request_data); CRM_Core_Error::debug_var('Fatal Error Details', $error); CRM_Core_Error::backtrace('backTrace', TRUE); throw $e; } } } parent::run(); }
function tearDown() { // Normally, we wouldn't want to truncate any tables as it makes running // the tests slower and opens the door for writing test that aren't self- // sufficient, but we're forced into this as CiviUnitTestCase forces a // quickCleanup on civicrm_contact in its tearDown. :( $this->quickCleanup(array('civicrm_email', 'civicrm_queue_item', 'civimailchimp_sync_settings', 'civimailchimp_interest_groups_sync_settings', 'civimailchimp_sync_log')); civimailchimp_static('mailchimp_static_reset', NULL, TRUE); parent::tearDown(); }
function testForceCiviToMailchimpSyncNullEmail() { $mailchimp_sync_setting = CRM_CiviMailchimp_BAO_SyncSettingsTest::createTestGroupAndSyncSettings('Test Group testForceCiviToMailchimpSyncNullEmail'); $params = CRM_CiviMailchimp_UtilsTest::sampleContactParams(); unset($params['email']); $contact = CRM_Contact_BAO_Contact::create($params); $contact_ids = array($contact->id); CRM_Contact_BAO_GroupContact::addContactsToGroup($contact_ids, $mailchimp_sync_setting->civicrm_group_id); $contacts = CRM_CiviMailchimp_Form_Sync::forceCiviToMailchimpSync($mailchimp_sync_setting); $mailchimp_api_subscribe = civimailchimp_static('mailchimp_api_subscribe'); $this->assertCount(0, $contacts); $this->assertNull($mailchimp_api_subscribe); }
/** * @see Mailchimp_Lists::webhookDel() */ public function webhookDel($id, $url) { $webhooks = $this->defaultWebhooks(); if (isset($webhooks[$id])) { if ($url === $webhooks[$id]) { $response = array('complete' => true); } else { $response = array('status' => 'error', 'code' => 200, 'name' => 'Invalid_URL'); } } else { $response = array('status' => 'error', 'code' => 200, 'name' => 'List_DoesNotExist'); } civimailchimp_static('mailchimp_api_webhookDel', TRUE); return $response; }
/** * Implementation of hook_civicrm_post */ function civimailchimp_civicrm_post($op, $object_name, $object_id, &$object) { if (!civimailchimp_static('mailchimp_do_not_run_hooks')) { if ($object_name === "Individual" || $object_name === "Organization") { $object_name = "Contact"; } $function_name_object_op = "civimailchimp_civicrm_post_{$object_name}_{$op}"; $function_name_object = "civimailchimp_civicrm_post_{$object_name}"; if (is_callable($function_name_object_op)) { call_user_func($function_name_object_op, $object_id, $object); } elseif (is_callable($function_name_object)) { call_user_func($function_name_object, $op, $object_id, $object); } } }
function test_civimailchimp_static_reset() { civimailchimp_static('test_civimailchimp_static_reset', TRUE); civimailchimp_static('test_civimailchimp_static_reset', NULL, TRUE); $test_civimailchimp_static_reset = civimailchimp_static('test_civimailchimp_static_reset'); $this->assertEmpty($test_civimailchimp_static_reset); }