diff options
Diffstat (limited to 'modules/notification/helpers/notification.php')
-rw-r--r-- | modules/notification/helpers/notification.php | 140 |
1 files changed, 75 insertions, 65 deletions
diff --git a/modules/notification/helpers/notification.php b/modules/notification/helpers/notification.php index 79f7288e..00ea994d 100644 --- a/modules/notification/helpers/notification.php +++ b/modules/notification/helpers/notification.php @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class notification { - static function get_subscriptions($item_id, $user=null) { + static function get_subscription($item_id, $user=null) { if (empty($user)) { $user = user::active(); } @@ -26,94 +26,104 @@ class notification { return ORM::factory("subscription") ->where("item_id", $item_id) ->where("user_id", $user->id) - ->find_all(); + ->find(); } - static function is_watching($item_id, $user=null) { + static function is_watching($item, $user=null) { if (empty($user)) { $user = user::active(); } - $count = ORM::factory("subscription") - ->where("item_id", $item_id) + return ORM::factory("subscription") + ->where("item_id", $item->id) ->where("user_id", $user->id) - ->count_all(); - - return $count > 0; + ->find() + ->loaded; } - static function add_watch($item, $watch_children=false, $user=null) { - if (empty($user)) { - $user = user::active(); - } - $subscription = ORM::factory("subscription"); - $subscription->item_id = $item->id; - $subscription->apply_to_children = $watch_children; - $subscription->user_id = $user->id; - $subscription->save(); - - if ($watch_children && $item->is_album()) { - $children = ORM::factory("item") - ->viewable() - ->where("parent_id", $item->id) - ->find_all(); - foreach ($children as $child) { - self::add_watch($child, $watch_children, $user); + static function add_watch($item, $user=null) { + if ($item->is_album()) { + if (empty($user)) { + $user = user::active(); } + $subscription = ORM::factory("subscription"); + $subscription->item_id = $item->id; + $subscription->user_id = $user->id; + $subscription->save(); } } - static function remove_watch($item, $watch_children=false, $user=null) { - if (empty($user)) { - $user = user::active(); - } - - $subscription = ORM::factory("subscription") - ->where("item_id", $item->id) - ->where("user_id", $user->id) - ->find(); - $subscription->delete(); - - if ($watch_children && $item->is_album()) { - $children = ORM::factory("item") - ->viewable() - ->where("parent_id", $item->id) - ->find_all(); - foreach ($children as $child) { - self::remove_watch($child, $watch_children, $user); + static function remove_watch($item, $user=null) { + if ($item->is_album()) { + if (empty($user)) { + $user = user::active(); } + + $subscription = ORM::factory("subscription") + ->where("item_id", $item->id) + ->where("user_id", $user->id) + ->find()->delete(); } } - static function get_subscribers($item_id) { - return ORM::factory("subscription") - ->where("item_id", $item_id) + static function get_subscribers($item) { + $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 <", $item->left) + ->where("items.right >", $item->right) ->find_all(); + + $subscribers = array(); + foreach ($users as $user) { + $subscribers[] = $user->email; + } + return $subscribers; } - static function count_subscribers($item_id) { - return ORM::factory("subscription") - ->where("item_id", $item_id) - ->count_all(); + static function send_item_changed($old, $new=null) { + $users = self::get_subscribers($item); } - - static function get_watched_items($user=null) { - if (empty($user)) { - $user = user::active(); - } - return ORM::factory("subscription") - ->where("user_id", $item_id) - ->find_all(); + static function send_item_add($item) { + $users = self::get_subscribers($item); + Sendmail::factory() + ->to($users) + ->from("from@gallery3.com") + ->subject(t("Item added to Gallery3")) + ->message($item->title) + ->send(); } - static function count_watched_items($user=null) { - if (empty($user)) { - $user = user::active(); - } + static function send_item_delete($item) { + $users = self::get_subscribers($item); + Sendmail::factory() + ->to($users) + ->from("from@gallery3.com") + ->subject("Item deleted: $item->title") + ->message("It was deleted") + ->send(); + } - return ORM::factory("subscription") - ->where("user_id", $item_id) - ->count_all(); + static function send_comment_added($comment) { + $users = self::get_subscribers($comment->item()); + Sendmail::factory() + ->to($users) + ->from("from@gallery3.com") + ->subject("Comment added to $comment->$item->title") + ->message($comment->text) + ->send(); } + + static function send_comment_changed($old, $new) { + $users = self::get_subscribers($comment->item()); + Sendmail::factory() + ->to($users) + ->from("from@gallery3.com") + ->subject("Comment updated on item: $comment->$item-title") + ->message($new->text) + ->send(); + } + } |