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

Reply via email to