[MediaWiki-commits] [Gerrit] wikimedia...crm[master]: Update Omnimail jobs to support storing settings about multi...

2017-09-20 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/379174 )

Change subject: Update Omnimail jobs to support storing settings about multiple 
jobs.
..


Update Omnimail jobs to support storing settings about multiple jobs.

Omnimail jobs store information about where the job is up to. This change
permits an input parameter 'job_suffix' to denote a job,
allowing multiple jobs of the same type to be tracked.

This might be used if a slow back-fill job is running off-peak
(ahem) due to possibly a mistake cause some data to have been missed
.
without interfering with the up-to-date job.

Bug: T176255
Change-Id: If0a709b9e9cec7e3276d231e75cca49d2909d4cb
---
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnirecipient/Load.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnigroupmemberLoadTest.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientLoadTest.php
5 files changed, 139 insertions(+), 64 deletions(-)

Approvals:
  jenkins-bot: Verified
  Ejegg: Looks good to me, approved



diff --git 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
index b40f880..2d40168 100644
--- 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
+++ 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
@@ -42,6 +42,15 @@
   protected $retrievalParameters;
 
   /**
+   * @var string
+   */
+  protected $job_suffix;
+
+  /**
+   * @var string
+   */
+  protected $mail_provider;
+  /**
* CRM_Omnimail_Omnimail constructor.
*
* @param array $params
@@ -49,6 +58,8 @@
* @throws \API_Exception
*/
   public function __construct($params) {
+$this->job_suffix = !empty($params['job_suffix']) ? $params['job_suffix'] 
: '';
+$this->mail_provider = $params['mail_provider'];
 $this->setJobSettings($params);
 $this->setOffset($params);
 
$this->setRetrievalParameters(CRM_Utils_Array::value('retrieval_parameters', 
$this->jobSettings));
@@ -150,7 +161,20 @@
*/
   protected function setJobSettings($params) {
 $settings = CRM_Omnimail_Helper::getSettings();
-$this->jobSettings = CRM_Utils_Array::value($params['mail_provider'], 
$settings['omnimail_' . $this->job . '_load'], array());
+$this->jobSettings = CRM_Utils_Array::value($params['mail_provider'] . 
$this->job_suffix, $settings['omnimail_' . $this->job . '_load'], array());
+  }
+
+  /**
+   * Save the job settings.
+   *
+   * @param array $setting
+   */
+  function saveJobSetting($setting) {
+civicrm_api3('Setting', 'create', array(
+  'omnimail_' . $this->job . '_load' => array(
+$this->mail_provider . $this->job_suffix => $setting,
+  ),
+));
   }
 
 }
\ No newline at end of file
diff --git 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
index eba0d6c..e0e8b7f 100644
--- 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
+++ 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
@@ -27,15 +27,11 @@
 $contacts = $job->getResult($params);
   }
   catch (CRM_Omnimail_IncompleteDownloadException $e) {
-civicrm_api3('Setting', 'create', array(
-  'omnimail_omnigroupmembers_load' => array(
-$params['mail_provider'] => array(
-  'last_timestamp' => $jobSettings['last_timestamp'],
-  'retrieval_parameters' => $e->getRetrievalParameters(),
-  'progress_end_date' => $e->getEndTimestamp(),
-  'offset' => 0,
-),
-  ),
+$job->saveJobSetting(array(
+  'last_timestamp' => $jobSettings['last_timestamp'],
+  'retrieval_parameters' => $e->getRetrievalParameters(),
+  'progress_end_date' => $e->getEndTimestamp(),
+  'offset' => 0,
 ));
 return civicrm_api3_create_success(1);
   }
@@ -43,26 +39,17 @@
   $defaultLocationType = CRM_Core_BAO_LocationType::getDefault();
   $locationTypeID = $defaultLocationType->id;
 
-  if (isset($params['options']['offset'])) {
-$offset = $params['options']['offset'];
-  }
-  else {
-$offset = CRM_Utils_Array::value('offset', $jobSettings, 0);
-  }
+  $offset = $job->getOffset();
   $limit = (isset($params['options']['limit'])) ? $params['options']['limit'] 
: NULL;
   $count = 0;
 
   foreach ($contacts as $contact) {
 if ($count === $limit) {
-  civicrm_api3('Setting', 'create', array(
-'omnimail_omnigroupmembers_load' => array(

[MediaWiki-commits] [Gerrit] wikimedia...crm[master]: Update Omnimail jobs to support storing settings about multi...

2017-09-20 Thread Eileen (Code Review)
Eileen has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/379174 )

Change subject: Update Omnimail jobs to support storing settings about multiple 
jobs.
..

Update Omnimail jobs to support storing settings about multiple jobs.

Omnimail jobs store information about where the job is up to. This change
permits an input parameter 'job_suffix' to denote a job,
allowing multiple jobs of the same type to be tracked.

This might be used if a slow back-fill job is running off-peak
(ahem) due to possibly a mistake cause some data to have been missed
.
without interfering with the up-to-date job.

Bug: T176255
Change-Id: If0a709b9e9cec7e3276d231e75cca49d2909d4cb
---
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnirecipient/Load.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnigroupmemberLoadTest.php
M 
sites/default/civicrm/extensions/org.wikimedia.omnimail/tests/phpunit/OmnirecipientLoadTest.php
5 files changed, 131 insertions(+), 64 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm 
refs/changes/74/379174/1

diff --git 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
index b40f880..c700aa8 100644
--- 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
+++ 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/CRM/Omnimail/Omnimail.php
@@ -42,6 +42,15 @@
   protected $retrievalParameters;
 
   /**
+   * @var string
+   */
+  protected $job_suffix;
+
+  /**
+   * @var string
+   */
+  protected $mail_provider;
+  /**
* CRM_Omnimail_Omnimail constructor.
*
* @param array $params
@@ -49,6 +58,8 @@
* @throws \API_Exception
*/
   public function __construct($params) {
+$this->job_suffix = $params['job_suffix'];
+$this->mail_provider = $params['mail_provider'];
 $this->setJobSettings($params);
 $this->setOffset($params);
 
$this->setRetrievalParameters(CRM_Utils_Array::value('retrieval_parameters', 
$this->jobSettings));
@@ -150,7 +161,20 @@
*/
   protected function setJobSettings($params) {
 $settings = CRM_Omnimail_Helper::getSettings();
-$this->jobSettings = CRM_Utils_Array::value($params['mail_provider'], 
$settings['omnimail_' . $this->job . '_load'], array());
+$this->jobSettings = CRM_Utils_Array::value($params['mail_provider'] . 
$this->job_suffix, $settings['omnimail_' . $this->job . '_load'], array());
+  }
+
+  /**
+   * Save the job settings.
+   *
+   * @param array $setting
+   */
+  function saveJobSetting($setting) {
+civicrm_api3('Setting', 'create', array(
+  'omnimail_' . $this->job . '_load' => array(
+$this->mail_provider . $this->job_suffix => $setting,
+  ),
+));
   }
 
 }
\ No newline at end of file
diff --git 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
index eba0d6c..e0e8b7f 100644
--- 
a/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
+++ 
b/sites/default/civicrm/extensions/org.wikimedia.omnimail/api/v3/Omnigroupmember/Load.php
@@ -27,15 +27,11 @@
 $contacts = $job->getResult($params);
   }
   catch (CRM_Omnimail_IncompleteDownloadException $e) {
-civicrm_api3('Setting', 'create', array(
-  'omnimail_omnigroupmembers_load' => array(
-$params['mail_provider'] => array(
-  'last_timestamp' => $jobSettings['last_timestamp'],
-  'retrieval_parameters' => $e->getRetrievalParameters(),
-  'progress_end_date' => $e->getEndTimestamp(),
-  'offset' => 0,
-),
-  ),
+$job->saveJobSetting(array(
+  'last_timestamp' => $jobSettings['last_timestamp'],
+  'retrieval_parameters' => $e->getRetrievalParameters(),
+  'progress_end_date' => $e->getEndTimestamp(),
+  'offset' => 0,
 ));
 return civicrm_api3_create_success(1);
   }
@@ -43,26 +39,17 @@
   $defaultLocationType = CRM_Core_BAO_LocationType::getDefault();
   $locationTypeID = $defaultLocationType->id;
 
-  if (isset($params['options']['offset'])) {
-$offset = $params['options']['offset'];
-  }
-  else {
-$offset = CRM_Utils_Array::value('offset', $jobSettings, 0);
-  }
+  $offset = $job->getOffset();
   $limit = (isset($params['options']['limit'])) ? $params['options']['limit'] 
: NULL;
   $count = 0;
 
   foreach ($contacts as $contact) {
 if ($count === $limit) {
-  civicrm_api3('Setting', 'create', array(
-'omnimail_omnigroupmembers_load' => array(
-