jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/364363 )
Change subject: Omnimail, enable view tab into mailing events. ...................................................................... Omnimail, enable view tab into mailing events. Requires https://github.com/civicrm/civicrm-core/pull/10599 in CiviCRM repo Change-Id: Ica3827b59442e4092b8b868795b24c9b7f6ef309 --- M sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Page/MailingsView.php M sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/MailingProviderData.php M sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.civix.php M sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.php M sites/default/civicrm/extensions/org.wikimedia.omnimail/templates/CRM/Omnimail/Page/MailingsView.tpl A sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnigroupmemberGetTest.php M sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnimailBaseTestClass.php M sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientGetTest.php 8 files changed, 122 insertions(+), 19 deletions(-) Approvals: Mepps: Looks good to me, approved jenkins-bot: Verified diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Page/MailingsView.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Page/MailingsView.php index 152515e..7d101a2 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Page/MailingsView.php +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Page/MailingsView.php @@ -8,12 +8,22 @@ $mailings = civicrm_api3('MailingProviderData', 'get', array( 'contact_id' => CRM_Utils_Request::retrieve('cid', 'Integer'), - 'return' => array('event_type', 'mailing_identifier', 'email', 'recipient_action_datetime'), + 'return' => array('event_type', 'mailing_identifier', 'email', 'recipient_action_datetime', 'mailing_identifier.name', 'mailing_identifier.id'), 'sequential' => 1, 'options' => array('limit' => 500, 'sort' => 'recipient_action_datetime DESC') )); + $mailings = $mailings['values']; + + foreach ($mailings as $index => $mailing) { + $mailings[$index]['mailing_identifier'] = array( + 'display' => (isset($mailing['mailing_identifier.id']) ? '<a href="' . CRM_Utils_System::url( + 'civicrm/mailing/view', 'reset=1&id=' . $mailing['mailing_identifier.id'] + ) . '" class="action-item crm-hover-button" title=' . ts("View Mailing") . '> ' . $mailing['mailing_identifier.name'] . '</a>': $mailing['mailing_identifier']), + 'name' => (isset($mailing['mailing_identifier.name']) ? $mailing['mailing_identifier.name'] : $mailing['mailing_identifier']), + ); + } //CRM_Core_Resources::singleton()->ad - $this->assign('mailings', json_encode($mailings['values'])); + $this->assign('mailings', json_encode($mailings)); parent::run(); } diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/MailingProviderData.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/MailingProviderData.php index 01f051e..fc31b08 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/MailingProviderData.php +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/MailingProviderData.php @@ -42,8 +42,20 @@ * @throws API_Exception */ function civicrm_api3_mailing_provider_data_get($params) { - $bao = new CRM_Omnimail_BAO_MailingProviderData(); - _civicrm_api3_dao_set_filter($bao, $params, TRUE); - $bao->selectAdd('CONCAT(contact_identifier, mailing_identifier, recipient_action_datetime) as id'); - return civicrm_api3_create_success(_civicrm_api3_dao_to_array($bao, $params, FALSE, 'MailingProviderData'), $params, 'MailingProviderData', 'get'); + $sql = CRM_Utils_SQL_Select::fragment(); + $sql->select('CONCAT(contact_identifier, mailing_identifier, recipient_action_datetime) as id'); + return civicrm_api3_create_success(_civicrm_api3_basic_get('CRM_Omnimail_BAO_MailingProviderData', $params, FALSE, 'MailingProviderData', $sql, FALSE), $params, 'MailingProviderData', 'get'); +} + +/** + * Metadata for MailingProviderData.get API + * + * @param array $params + * + * @throws API_Exception + */ +function _civicrm_api3_mailing_provider_data_get_spec(&$params) { + $params['mailing_identifier']['FKClassName'] = 'CRM_Mailing_BAO_Mailing'; + $params['mailing_identifier']['FKApiName'] = 'Mailing'; + $params['mailing_identifier']['FKKeyColumn'] = 'hash'; } diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.civix.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.civix.php index 319776f..dd14e08 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.civix.php +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.civix.php @@ -355,14 +355,13 @@ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders */ function _omnimail_civix_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { - static $configured = FALSE; - if ($configured) { + if (isset(\Civi::$statics['_omnimail_settings'], \Civi::$statics['_omnimail_settings']['configured']) && \Civi::$statics['_omnimail_settings']['configured']) { return; } - $configured = TRUE; $settingsDir = __DIR__ . DIRECTORY_SEPARATOR . 'settings'; if (is_dir($settingsDir) && !in_array($settingsDir, $metaDataFolders)) { $metaDataFolders[] = $settingsDir; } + \Civi::$statics['_omnimail_settings']['configured'] = TRUE; } diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.php index 50e4863..bc4e479 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.php +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/omnimail.php @@ -148,19 +148,18 @@ * @param array $context */ function omnimail_civicrm_tabset($tabsetName, &$tabs, $context) { - // early return while I finish this off. - return; if ($tabsetName == 'civicrm/contact/view') { $contactID = $context['contact_id']; $url = CRM_Utils_System::url('civicrm/contact/mailings/view', "reset=1&snippet=json&force=1&cid=$contactID"); //add a new Volunteer tab along with url $tab['mailing_data'] = array( - 'title' => ts('Mailings'), + 'title' => ts('Mailing Events'), 'url' => $url, 'valid' => 1, 'active' => 1, 'current' => FALSE, 'class' => 'livePage', + 'count' => civicrm_api3('MailingProviderData', 'getcount', array('contact_id' => $contactID)) ); //Insert this tab into position 4 $tabs = array_merge( diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/templates/CRM/Omnimail/Page/MailingsView.tpl b/sites/default/civicrm/extensions/org.wikimedia.omnimail/templates/CRM/Omnimail/Page/MailingsView.tpl index ce695bd..98d73ea 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/templates/CRM/Omnimail/Page/MailingsView.tpl +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/templates/CRM/Omnimail/Page/MailingsView.tpl @@ -25,9 +25,9 @@ *} {* relationship selector *} <h3>Mailing events (up to 500 most recent)</h3> -<div> + <table - class="crm-contact-mailings" + class="crm-contact-mailings"> <thead> <tr> <th class='crm-contact-recipient_action_datetime'>{ts}When{/ts}</th> @@ -36,8 +36,9 @@ <th class='crm-contact-email'>{ts}Email{/ts}</th> </tr> </thead> + </table> -</div> + {literal} <script type="text/javascript"> {/literal}var tableData = {$mailings}{literal} @@ -46,7 +47,10 @@ columns: [ { data: 'recipient_action_datetime' }, { data: 'event_type' }, - { data: 'mailing_identifier' }, + { data: { + _: "mailing_identifier.display", + sort: "mailing_identifier.name" + } }, { data: 'email' } ] }); diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnigroupmemberGetTest.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnigroupmemberGetTest.php new file mode 100644 index 0000000..4ae373b --- /dev/null +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnigroupmemberGetTest.php @@ -0,0 +1,80 @@ +<?php + +use Civi\Test\EndToEndInterface; +use Civi\Test\HookInterface; +use Civi\Test\TransactionalInterface; +use GuzzleHttp\Client; +use GuzzleHttp\Handler\MockHandler; +use GuzzleHttp\HandlerStack; +use GuzzleHttp\Psr7\Response; +require_once __DIR__ . '/OmnimailBaseTestClass.php'; + +/** + * FIXME - Add test description. + * + * Tips: + * - With HookInterface, you may implement CiviCRM hooks directly in the test class. + * Simply create corresponding functions (e.g. "hook_civicrm_post(...)" or similar). + * - With TransactionalInterface, any data changes made by setUp() or test****() functions will + * rollback automatically -- as long as you don't manipulate schema or truncate tables. + * If this test needs to manipulate schema or truncate tables, then either: + * a. Do all that using setupHeadless() and Civi\Test. + * b. Disable TransactionalInterface, and handle all setup/teardown yourself. + * + * @group e2e + */ +class OmnigroupmemberGetTest extends OmnimailBaseTestClass implements EndToEndInterface, TransactionalInterface { + + public function setUpHeadless() { + // Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile(). + // See: https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md + return \Civi\Test::e2e() + ->installMe(__DIR__) + ->apply(); + } + + public function tearDown() { + parent::tearDown(); + } + + /** + * Example: Test that a version is returned. + */ + public function testOmnigroupmemberGet() { + // We are having weird cache issues ... :-( This is fine on extension only tests + // but not when run in WMF suite. Trying an extra clear. + // Maybe https://github.com/civicrm/civicrm-drupal/pull/447 will help (not on wmf yet). + $null = NULL; + \Civi::cache('settings')->set('settingsMetadata_' . \CRM_Core_Config::domainID() . '_', $null); + + $client = $this->setupSuccessfulDownloadClient(); + + $result = civicrm_api3('Omnigroupmember', 'get', array('mail_provider' => 'Silverpop', 'username' => 'Shrek', 'password' => 'Fiona', 'options' => array('limit' => 3), 'client' => $client, 'group_identifier' => 123)); + $this->assertEquals(3, $result['count']); + $this->assertEquals('e...@example.com', $result['values'][0]['email']); + $this->assertEquals('', $result['values'][0]['contact_id']); + $this->assertEquals(TRUE, $result['values'][0]['is_opt_out']); + $this->assertEquals('2016-10-18 20:01:00', $result['values'][0]['opt_in_date']); + $this->assertEquals('2017-07-04 11:11:00', $result['values'][0]['opt_out_date']); + $this->assertEquals('Added by WebForms', $result['values'][0]['opt_in_source']); + $this->assertEquals('Opt out via email opt out.', $result['values'][0]['opt_out_source']); + + } + + + /** + * @return \GuzzleHttp\Client + */ + protected function setupSuccessfulDownloadClient() { + $responses = array( + file_get_contents(__DIR__ . '/Responses/ExportListResponse.txt'), + file_get_contents(__DIR__ . '/Responses/JobStatusCompleteResponse.txt'), + ); + copy(__DIR__ . '/Responses/20170509_noCID - All - Jul 5 2017 06-27-45 AM.csv', sys_get_temp_dir() . '/20170509_noCID - All - Jul 5 2017 06-27-45 AM.csv'); + fopen(sys_get_temp_dir() . '/20170509_noCID - All - Jul 5 2017 06-27-45 AM.csv.complete', 'c'); + $this->createSetting('omnimail_omnigroupmembers_load', array('Silverpop' => array('last_timestamp' => '1487890800'))); + + $client = $this->getMockRequest($responses); + return $client; + } +} diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnimailBaseTestClass.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnimailBaseTestClass.php index 2c6b3bc..120d607 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnimailBaseTestClass.php +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnimailBaseTestClass.php @@ -27,8 +27,8 @@ public function setUp() { parent::setUp(); $null = NULL; - civicrm_api3('Setting', 'getfields', array('cache_clear' => 1)); - \Civi::cache('settings')->set('settingsMetadata_' . \CRM_Core_Config::domainID() . '_', $null); + Civi::service('settings_manager')->flush(); + \Civi::$statics['_omnimail_settings'] = array(); } /** diff --git a/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientGetTest.php b/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientGetTest.php index 21fb78e..b04204e 100644 --- a/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientGetTest.php +++ b/sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientGetTest.php @@ -35,7 +35,6 @@ public function setUp() { parent::setUp(); - Civi::service('settings_manager')->flush(); } public function tearDown() { -- To view, visit https://gerrit.wikimedia.org/r/364363 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ica3827b59442e4092b8b868795b24c9b7f6ef309 Gerrit-PatchSet: 6 Gerrit-Project: wikimedia/fundraising/crm Gerrit-Branch: master Gerrit-Owner: Eileen <emcnaugh...@wikimedia.org> Gerrit-Reviewer: Cdentinger <cdentin...@wikimedia.org> Gerrit-Reviewer: Eileen <emcnaugh...@wikimedia.org> Gerrit-Reviewer: Ejegg <ej...@ejegg.com> Gerrit-Reviewer: Mepps <me...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits