summaryrefslogtreecommitdiff
path: root/modules/notification/helpers/notification.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/notification/helpers/notification.php')
-rw-r--r--modules/notification/helpers/notification.php140
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();
+ }
+
}