[MediaWiki-commits] [Gerrit] wikimedia...crm[master]: Update Omnimail jobs to support storing settings about multi...
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...
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( -