where("item_id", $item_id) ->where("user_id", $user->id) ->find_all(); } static function is_watching($item_id, $user=null) { if (empty($user)) { $user = user::active(); } $count = ORM::factory("subscription") ->where("item_id", $item_id) ->where("user_id", $user->id) ->count_all(); return $count > 0; } 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 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 get_subscribers($item_id) { return ORM::factory("subscription") ->where("item_id", $item_id) ->find_all(); } static function count_subscribers($item_id) { return ORM::factory("subscription") ->where("item_id", $item_id) ->count_all(); } 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 count_watched_items($user=null) { if (empty($user)) { $user = user::active(); } return ORM::factory("subscription") ->where("user_id", $item_id) ->count_all(); } }