getTasks() as $task) { /** @var \Civi\FlexMailer\FlexMailerTask $task */ $value = $task->getMailParam($field); if ($value !== NULL) { $task->setMailParam($field, call_user_func($filter, $value, $task, $e)); } } } /** * Apply a filter function to a property of all email messages. * * This variant visits the values as a big array. This makes it * amenable to batch-mode filtering in preg_replace or preg_replace_callback. * * @param \Civi\FlexMailer\Event\ComposeBatchEvent $e * @param string $field * The name of a MailParam field. * @param mixed $filter * Function($values, ComposeBatchEvent $e). * Return a modified list of values. * @throws \CRM_Core_Exception * @see \CRM_Utils_Hook::alterMailParams */ public static function byColumn(ComposeBatchEvent $e, $field, $filter) { $tasks = $e->getTasks(); $values = array(); foreach ($tasks as $k => $task) { /** @var \Civi\FlexMailer\FlexMailerTask $task */ $value = $task->getMailParam($field); if ($value !== NULL) { $values[$k] = $value; } } $values = call_user_func_array($filter, array($values, $e)); foreach ($values as $k => $value) { $tasks[$k]->setMailParam($field, $value); } } }