Skip to content
This repository has been archived by the owner on Feb 6, 2023. It is now read-only.

Commit

Permalink
When possible, use hook_civicrm_container instead of CIVICRM_FLEXMAIL…
Browse files Browse the repository at this point in the history
…ER_HACK_*
  • Loading branch information
totten committed Dec 31, 2016
1 parent 7bdb36e commit 17f142e
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 9 deletions.
14 changes: 12 additions & 2 deletions flexmailer.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
*/

define('CIVICRM_FLEXMAILER_HACK_DELIVER', '\Civi\FlexMailer\FlexMailer::createAndRun');
define('CIVICRM_FLEXMAILER_HACK_SERVICES', '\Civi\FlexMailer\Services::registerServices');
define('CIVICRM_FLEXMAILER_HACK_LISTENERS', '\Civi\FlexMailer\Services::registerListeners');
//define('CIVICRM_FLEXMAILER_HACK_SERVICES', '\Civi\FlexMailer\Services::registerServices');
//define('CIVICRM_FLEXMAILER_HACK_LISTENERS', '\Civi\FlexMailer\Services::registerListeners');

require_once 'flexmailer.civix.php';

Expand Down Expand Up @@ -199,3 +199,13 @@ function flexmailer_civicrm_navigationMenu(&$menu) {
));
_flexmailer_civix_navigationMenu($menu);
} // */

/**
* Implements hook_civicrm_container().
*/
function flexmailer_civicrm_container($container) {
if (version_compare(\CRM_Utils_System::version(), '4.7.0', '>=')) {
$container->addResource(new \Symfony\Component\Config\Resource\FileResource(__FILE__));
}
\Civi\FlexMailer\Services::registerServices($container);
}
65 changes: 58 additions & 7 deletions src/Services.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,68 @@ public static function registerServices(ContainerBuilder $container) {
$container->setDefinition('civi_flexmailer_open_tracker', new Definition('Civi\FlexMailer\Listener\OpenTracker'));
$container->setDefinition('civi_flexmailer_default_sender', new Definition('Civi\FlexMailer\Listener\DefaultSender'));
$container->setDefinition('civi_flexmailer_hooks', new Definition('Civi\FlexMailer\Listener\HookAdapter'));

foreach (self::getListenerSpecs() as $listenerSpec) {
$container->findDefinition('dispatcher')->addMethodCall('addListenerService', $listenerSpec);
}
}

public static function registerListeners(ContainerAwareEventDispatcher $dispatcher) {
foreach (self::getListenerSpecs() as $listenerSpec) {
$dispatcher->addListenerService($listenerSpec[0], $listenerSpec[1], $listenerSpec[2]);
}
}

/**
* Get a list of listeners required for FlexMailer.
*
* This is a standalone, private function because we're experimenting
* with how exactly to handle the registration -- e.g. via
* `registerServices()` or via `registerListeners()`.
*
* @return array
* Arguments to pass to addListenerService($eventName, $callbackSvc, $priority).
*/
protected static function getListenerSpecs() {
$terminalPriority = -100;
$dispatcher->addListenerService(FlexMailer::EVENT_RUN, array('civi_flexmailer_abdicator', 'onRun'), $terminalPriority);
$dispatcher->addListenerService(FlexMailer::EVENT_WALK, array('civi_flexmailer_default_batcher', 'onWalkBatches'), $terminalPriority);
$dispatcher->addListenerService(FlexMailer::EVENT_RUN, array('civi_flexmailer_default_composer', 'onRun'), 0);
$dispatcher->addListenerService(FlexMailer::EVENT_COMPOSE, array('civi_flexmailer_default_composer', 'onComposeBatch'), $terminalPriority);
$dispatcher->addListenerService(FlexMailer::EVENT_ALTER, array('civi_flexmailer_open_tracker', 'onAlterBatch'), -20);
$dispatcher->addListenerService(FlexMailer::EVENT_ALTER, array('civi_flexmailer_hooks', 'onAlterBatch'), -30);
$dispatcher->addListenerService(FlexMailer::EVENT_SEND, array('civi_flexmailer_default_sender', 'onSendBatch'), $terminalPriority);

$listenerSpecs = array();
$listenerSpecs[] = array(
FlexMailer::EVENT_RUN,
array('civi_flexmailer_abdicator', 'onRun'),
$terminalPriority,
);
$listenerSpecs[] = array(
FlexMailer::EVENT_WALK,
array('civi_flexmailer_default_batcher', 'onWalkBatches'),
$terminalPriority,
);
$listenerSpecs[] = array(
FlexMailer::EVENT_RUN,
array('civi_flexmailer_default_composer', 'onRun'),
0,
);
$listenerSpecs[] = array(
FlexMailer::EVENT_COMPOSE,
array('civi_flexmailer_default_composer', 'onComposeBatch'),
$terminalPriority,
);
$listenerSpecs[] = array(
FlexMailer::EVENT_ALTER,
array('civi_flexmailer_open_tracker', 'onAlterBatch'),
-20,
);
$listenerSpecs[] = array(
FlexMailer::EVENT_ALTER,
array('civi_flexmailer_hooks', 'onAlterBatch'),
-30,
);
$listenerSpecs[] = array(
FlexMailer::EVENT_SEND,
array('civi_flexmailer_default_sender', 'onSendBatch'),
$terminalPriority,
);
return $listenerSpecs;
}

}

0 comments on commit 17f142e

Please sign in to comment.