implement postSave hook along with callback function
This commit is contained in:
parent
c7bc3d6e94
commit
b9175fa936
3 changed files with 70 additions and 42 deletions
|
@ -118,6 +118,12 @@ abstract class CRM_TwingleCampaign_BAO_Campaign {
|
||||||
else if (in_array($key, $filter)) {
|
else if (in_array($key, $filter)) {
|
||||||
$this->values[$key] = $value;
|
$this->values[$key] = $value;
|
||||||
}
|
}
|
||||||
|
else if ($key == 'embed') {
|
||||||
|
self::setEmbedData($value);
|
||||||
|
}
|
||||||
|
else if ($key == 'counter-url') {
|
||||||
|
self::setCounterUrl($value['url']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use CRM_TwingleCampaign_BAO_TwingleApiCall as TwingleApiCall;
|
use CRM_TwingleCampaign_BAO_TwingleApiCall as TwingleApiCall;
|
||||||
use CRM_TwingleCampaign_BAO_TwingleProject as TwingleProject;
|
use CRM_TwingleCampaign_BAO_TwingleProject as TwingleProject;
|
||||||
use CRM_TwingleCampaign_BAO_TwingleEvent as TwingleEvent;
|
use CRM_TwingleCampaign_BAO_TwingleEvent as TwingleEvent;
|
||||||
|
@ -66,9 +67,12 @@ function _civicrm_api3_twingle_sync_Sync_spec(array &$spec) {
|
||||||
function civicrm_api3_twingle_sync_Sync($params) {
|
function civicrm_api3_twingle_sync_Sync($params) {
|
||||||
|
|
||||||
$result_values = [];
|
$result_values = [];
|
||||||
|
$is_test = FALSE;
|
||||||
|
|
||||||
// Is this call a test?
|
// Is this call a test?
|
||||||
$is_test = (boolean) $params['is_test'];
|
if ($params['is_test']) {
|
||||||
|
$is_test = $params['is_test'];
|
||||||
|
}
|
||||||
|
|
||||||
// If function call provides an API key, use it instead of the API key set
|
// If function call provides an API key, use it instead of the API key set
|
||||||
// on the extension settings page
|
// on the extension settings page
|
||||||
|
@ -95,9 +99,10 @@ function civicrm_api3_twingle_sync_Sync($params) {
|
||||||
$projects_from_twingle[0] =
|
$projects_from_twingle[0] =
|
||||||
$projects_from_civicrm[$params['id']]['project_id']
|
$projects_from_civicrm[$params['id']]['project_id']
|
||||||
? $twingleApi->getProject($projects_from_civicrm[$params['id']]['project_id'])
|
? $twingleApi->getProject($projects_from_civicrm[$params['id']]['project_id'])
|
||||||
: Null;
|
: NULL;
|
||||||
}
|
}
|
||||||
else if ($params['project_id']) {
|
else {
|
||||||
|
if ($params['project_id']) {
|
||||||
// Get single project from Twingle
|
// Get single project from Twingle
|
||||||
$projects_from_twingle[0] = $twingleApi->getProject($params['project_id']);
|
$projects_from_twingle[0] = $twingleApi->getProject($params['project_id']);
|
||||||
|
|
||||||
|
@ -111,13 +116,14 @@ function civicrm_api3_twingle_sync_Sync($params) {
|
||||||
|
|
||||||
// Get all TwingleProjects from CiviCRM
|
// Get all TwingleProjects from CiviCRM
|
||||||
$projects_from_civicrm = civicrm_api3('TwingleProject', 'get',
|
$projects_from_civicrm = civicrm_api3('TwingleProject', 'get',
|
||||||
['is_active' => 1,]);
|
['is_active' => 1,])['values'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
// Push missing projects to Twingle
|
// Push missing projects to Twingle
|
||||||
foreach ($projects_from_civicrm['values'] as $project_from_civicrm) {
|
foreach ($projects_from_civicrm as $project_from_civicrm) {
|
||||||
if (!in_array($project_from_civicrm['project_id'],
|
if (!in_array($project_from_civicrm['project_id'],
|
||||||
array_column($projects_from_twingle, 'id'))) {
|
array_column($projects_from_twingle, 'id'))) {
|
||||||
// store campaign id in $id
|
// store campaign id in $id
|
||||||
|
|
|
@ -1,22 +1,25 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
//use CRM_TwingleCampaign_BAO_CampaignType as CampaignType;
|
use CRM_TwingleCampaign_BAO_CampaignType as CampaignType;
|
||||||
//use CRM_TwingleCampaign_Utils_ExtensionCache as ExtensionCache;
|
use CRM_TwingleCampaign_Utils_ExtensionCache as ExtensionCache;
|
||||||
|
|
||||||
require_once 'twinglecampaign.civix.php';
|
require_once 'twinglecampaign.civix.php';
|
||||||
|
|
||||||
use CRM_TwingleCampaign_ExtensionUtil as E;
|
use CRM_TwingleCampaign_ExtensionUtil as E;
|
||||||
|
|
||||||
//
|
//
|
||||||
//Civi::dispatcher()->addListener('hook_civicrm_postSave_civicrm_campaign',
|
//Civi::dispatcher()->addListener('hook_civicrm_postSave_civicrm_campaign',
|
||||||
// "twinglecampaign_postSave_civicrm_campaign", -1000);
|
// "twinglecampaign_postSave_civicrm_campaign", -1000);
|
||||||
/*/**
|
/**
|
||||||
* Implements hook_civicrm_postSave_Campaigns().
|
* Implements hook_civicrm_postSave_Campaigns().
|
||||||
*
|
*
|
||||||
* @param $dao
|
* @param $dao
|
||||||
*
|
*
|
||||||
* @throws CiviCRM_API3_Exception
|
* @throws CiviCRM_API3_Exception
|
||||||
*
|
*/
|
||||||
function twinglecampaign_civicrm_postSave_civicrm_campaign($dao) {
|
function twinglecampaign_civicrm_postSave_civicrm_campaign($dao) {
|
||||||
$twingle_campaign_types = ExtensionCache::getInstance()->getCampaigns()['campaign_types'];
|
$twingle_campaign_types = ExtensionCache::getInstance()
|
||||||
|
->getCampaigns()['campaign_types'];
|
||||||
$twingle_campaign_type_ids = [];
|
$twingle_campaign_type_ids = [];
|
||||||
$hook_campaign_type_id = $dao->campaign_type_id;
|
$hook_campaign_type_id = $dao->campaign_type_id;
|
||||||
$hook_campaign_id = $dao->id;
|
$hook_campaign_id = $dao->id;
|
||||||
|
@ -27,9 +30,22 @@ function twinglecampaign_civicrm_postSave_civicrm_campaign($dao) {
|
||||||
array_push($twingle_campaign_type_ids, $id);
|
array_push($twingle_campaign_type_ids, $id);
|
||||||
}
|
}
|
||||||
if (in_array($hook_campaign_type_id, $twingle_campaign_type_ids)) {
|
if (in_array($hook_campaign_type_id, $twingle_campaign_type_ids)) {
|
||||||
civicrm_api3('TwingleSync', 'sync', ['id' => $hook_campaign_id]);
|
if (CRM_Core_Transaction::isActive()) {
|
||||||
|
CRM_Core_Transaction::addCallback(
|
||||||
|
CRM_Core_Transaction::PHASE_POST_COMMIT,
|
||||||
|
'twinglecampaign_postSave_callback',
|
||||||
|
[$hook_campaign_id]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}*/
|
else {
|
||||||
|
twinglecampaign_postSave_callback($hook_campaign_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function twinglecampaign_postSave_callback($campaign_id) {
|
||||||
|
civicrm_api3('TwingleSync', 'sync', ['id' => $campaign_id]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements hook_civicrm_config().
|
* Implements hook_civicrm_config().
|
||||||
|
@ -176,23 +192,23 @@ function twinglecampaign_civicrm_themes(&$themes) {
|
||||||
*
|
*
|
||||||
* @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess
|
* @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess
|
||||||
*
|
*
|
||||||
function twinglecampaign_civicrm_preProcess($formName, &$form) {
|
* function twinglecampaign_civicrm_preProcess($formName, &$form) {
|
||||||
|
*
|
||||||
} // */
|
* } // */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements hook_civicrm_navigationMenu().
|
* Implements hook_civicrm_navigationMenu().
|
||||||
*
|
*
|
||||||
* @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu
|
* @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu
|
||||||
*
|
*
|
||||||
function twinglecampaign_civicrm_navigationMenu(&$menu) {
|
* function twinglecampaign_civicrm_navigationMenu(&$menu) {
|
||||||
_twinglecampaign_civix_insert_navigation_menu($menu, 'Mailings', array(
|
* _twinglecampaign_civix_insert_navigation_menu($menu, 'Mailings', array(
|
||||||
'label' => E::ts('New subliminal message'),
|
* 'label' => E::ts('New subliminal message'),
|
||||||
'name' => 'mailing_subliminal_message',
|
* 'name' => 'mailing_subliminal_message',
|
||||||
'url' => 'civicrm/mailing/subliminal',
|
* 'url' => 'civicrm/mailing/subliminal',
|
||||||
'permission' => 'access CiviMail',
|
* 'permission' => 'access CiviMail',
|
||||||
'operator' => 'OR',
|
* 'operator' => 'OR',
|
||||||
'separator' => 0,
|
* 'separator' => 0,
|
||||||
));
|
* ));
|
||||||
_twinglecampaign_civix_navigationMenu($menu);
|
* _twinglecampaign_civix_navigationMenu($menu);
|
||||||
} // */
|
* } // */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue