diff options
Diffstat (limited to 'modules/notification')
4 files changed, 37 insertions, 20 deletions
diff --git a/modules/notification/helpers/notification.php b/modules/notification/helpers/notification.php index 88d92b16..9a40b0b9 100644 --- a/modules/notification/helpers/notification.php +++ b/modules/notification/helpers/notification.php @@ -20,7 +20,7 @@ class notification { static function get_subscription($item_id, $user=null) { if (empty($user)) { - $user = user::active(); + $user = identity::active_user(); } return ORM::factory("subscription") @@ -31,7 +31,7 @@ class notification { static function is_watching($item, $user=null) { if (empty($user)) { - $user = user::active(); + $user = identity::active_user(); } return ORM::factory("subscription") @@ -44,7 +44,7 @@ class notification { static function add_watch($item, $user=null) { if ($item->is_album()) { if (empty($user)) { - $user = user::active(); + $user = identity::active_user(); } $subscription = ORM::factory("subscription"); $subscription->item_id = $item->id; @@ -56,7 +56,7 @@ class notification { static function remove_watch($item, $user=null) { if ($item->is_album()) { if (empty($user)) { - $user = user::active(); + $user = identity::active_user(); } $subscription = ORM::factory("subscription") @@ -67,19 +67,25 @@ 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; + } + + if (empty($subscriber_ids)) { + return array(); + } + $users = identity::get_user_list($subscriber_ids); $subscribers = array(); foreach ($users as $user) { - if (access::user_can($user, "view", $item)) { + if (access::user_can($user, "view", $item) && !empty($user->email)) { $subscribers[$user->email] = 1; } } diff --git a/modules/notification/helpers/notification_event.php b/modules/notification/helpers/notification_event.php index c50b04c4..6b2df574 100644 --- a/modules/notification/helpers/notification_event.php +++ b/modules/notification/helpers/notification_event.php @@ -52,6 +52,17 @@ class notification_event_Core { } } + static function user_deleted($user) { + ORM::factory("subscriptions") + ->where(array("user_id", $user->id)) + ->delete_all(); + } + + static function identity_provider_changed($old_provider, $new_provider) { + ORM::factory("subscriptions") + ->delete_all(); + } + static function comment_created($comment) { try { if ($comment->state == "published") { @@ -95,7 +106,7 @@ class notification_event_Core { } static function site_menu($menu, $theme) { - if (!user::active()->guest) { + if (!identity::active_user()->guest) { $item = $theme->item(); if ($item && $item->is_album() && access::can("view", $item)) { @@ -107,7 +118,7 @@ class notification_event_Core { ->append(Menu::factory("link") ->id("watch") ->label($label) - ->css_id("gNotifyLink") + ->css_id("g-notify-link") ->url(url::site("notification/watch/$item->id?csrf=" . access::csrf_token()))); } } diff --git a/modules/notification/views/comment_published.html.php b/modules/notification/views/comment_published.html.php index a8ca1899..ac36a2c1 100644 --- a/modules/notification/views/comment_published.html.php +++ b/modules/notification/views/comment_published.html.php @@ -11,11 +11,11 @@ <td><?= nl2br(html::purify($comment->text)) ?></td> </tr> <tr> - <td><?= t("Author Name:") ?></td> + <td><?= t("Author name:") ?></td> <td><?= html::clean($comment->author_name()) ?></td> </tr> <tr> - <td><?= t("Author Email:") ?></td> + <td><?= t("Author email:") ?></td> <td><?= html::clean($comment->author_email()) ?></td> </tr> <tr> diff --git a/modules/notification/views/item_updated.html.php b/modules/notification/views/item_updated.html.php index 9c200964..47856cab 100644 --- a/modules/notification/views/item_updated.html.php +++ b/modules/notification/views/item_updated.html.php @@ -8,7 +8,7 @@ <table> <tr> <? if ($item->original("title") != $item->title): ?> - <td><?= t("New Title:") ?></td> + <td><?= t("New title:") ?></td> <td><?= html::clean($item->title) ?></td> <? else: ?> <td><?= t("Title:") ?></td> @@ -21,7 +21,7 @@ </tr> <? if ($item->original("description") != $item->description): ?> <tr> - <td><?= t("New Description:") ?></td> + <td><?= t("New description:") ?></td> <td><?= html::clean($item->description) ?></td> </tr> <? elseif (!empty($item->description)): ?> |