/** * 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->access->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->access->setIgnoreAccess($ia); return $count; }
public function testGetSubscriptionsWithProperInput() { $methods = array('apples', 'bananas'); $queryResult = array($this->createObjectFromArray(array('guid' => '22', 'methods' => 'notifyapples')), $this->createObjectFromArray(array('guid' => '567', 'methods' => 'notifybananas,notifyapples'))); $subscriptions = array(22 => array('apples'), 567 => array('bananas', 'apples')); $this->db->expects($this->once())->method('getData')->will($this->returnValue($queryResult)); $service = new Elgg_Notifications_SubscriptionsService($this->db); $service->methods = $methods; $this->assertEquals($subscriptions, $service->getSubscriptions($this->event)); }