/**
* Pull notification events from queue until stop time is reached
*
* @param int $stopTime The Unix time to stop sending notifications
* @return int The number of notification events handled
* @access private
*/
public function processQueue($stopTime)
{
$this->subscriptions->methods = $this->methods;
$count = 0;
// @todo grab mutex
$ia = $this->session->setIgnoreAccess(true);
while (time() < $stopTime) {
// dequeue notification event
$event = $this->queue->dequeue();
if (!$event) {
break;
}
// test for usage of the deprecated override hook
if ($this->existsDeprecatedNotificationOverride($event)) {
continue;
}
$subscriptions = $this->subscriptions->getSubscriptions($event);
// return false to stop the default notification sender
$params = array('event' => $event, 'subscriptions' => $subscriptions);
if ($this->hooks->trigger('send:before', 'notifications', $params, true)) {
$this->sendNotifications($event, $subscriptions);
}
$this->hooks->trigger('send:after', 'notifications', $params);
$count++;
}
// release mutex
$this->session->setIgnoreAccess($ia);
return $count;
}