summaryrefslogtreecommitdiff
path: root/modules/notification/helpers/notification.php
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-10-06 07:55:31 -0700
committerTim Almdal <tnalmdal@shaw.ca>2009-10-06 07:55:31 -0700
commit6e59de2fb5b379a7a839e27c92f7546ee568cf00 (patch)
tree53c5df80660eff087799a036801ba7c418684d99 /modules/notification/helpers/notification.php
parent8285cd58e27dfdc2f013f44c1e69aa82f87b7c83 (diff)
Change the notification handler to use the Identity API to lookup subscribers
for event notifications. This drove out some issues in the user::users and group::groups API backend.
Diffstat (limited to 'modules/notification/helpers/notification.php')
-rw-r--r--modules/notification/helpers/notification.php21
1 files changed, 13 insertions, 8 deletions
diff --git a/modules/notification/helpers/notification.php b/modules/notification/helpers/notification.php
index 88d92b16..8cf9f428 100644
--- a/modules/notification/helpers/notification.php
+++ b/modules/notification/helpers/notification.php
@@ -67,15 +67,20 @@ class notification {
}
static function get_subscribers($item) {
- // @todo don't access the user table directly
// @todo only return distinct email addresses
- $users = ORM::factory("user")
- ->join("subscriptions", "users.id", "subscriptions.user_id")
- ->join("items", "subscriptions.item_id", "items.id")
- ->where("email IS NOT", null)
- ->where("items.left_ptr <=", $item->left_ptr)
- ->where("items.right_ptr >", $item->right_ptr)
- ->find_all();
+ $subscriber_ids = array();
+ foreach (ORM::factory("subscription")
+ ->select("user_id")
+ ->join("items", "subscriptions.item_id", "items.id")
+ ->where("items.left_ptr <=", $item->left_ptr)
+ ->where("items.right_ptr >", $item->right_ptr)
+ ->find_all()
+ ->as_array() as $subscriber) {
+ $subscriber_ids[] = $subscriber->user_id;
+ }
+
+ $users = user::users(array("in" => array("id", $subscriber_ids),
+ "where" => array("email IS NOT" => null)));
$subscribers = array();
foreach ($users as $user) {