diff --git a/app/controllers/tag_subscriptions_controller.rb b/app/controllers/tag_subscriptions_controller.rb index e213a8860..9791be938 100644 --- a/app/controllers/tag_subscriptions_controller.rb +++ b/app/controllers/tag_subscriptions_controller.rb @@ -15,8 +15,8 @@ class TagSubscriptionsController < ApplicationController def index @user = CurrentUser.user - @search = TagSubscription.owned_by(@user).order("name").search(params[:search]) - @tag_subscriptions = @search.paginate(params[:page], :limit => params[:limit]) + @query = TagSubscription.order("name").search(params[:search]) + @tag_subscriptions = @query.paginate(params[:page], :limit => params[:limit]) respond_with(@tag_subscriptions) end diff --git a/app/models/tag_subscription.rb b/app/models/tag_subscription.rb index 4353e4075..f6bf08b02 100644 --- a/app/models/tag_subscription.rb +++ b/app/models/tag_subscription.rb @@ -66,28 +66,34 @@ class TagSubscription < ActiveRecord::Base post_ids.split(/,/) end - def self.search(params) - q = scoped - return q if params.blank? - - if params[:creator_id] - q = q.where("creator_id = ?", params[:creator_id].to_i) + module SearchMethods + def visible_to(user) + where("(is_public = TRUE OR creator_id = ? OR ?)", user.id, user.is_moderator?) end - if params[:creator_name] - q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].mb_chars.downcase.strip.tr(" ", "_")) + def owned_by(user) + where("creator_id = ?", user.id) end - q + def search(params) + q = scoped + params = {} if params.blank? + + if params[:creator_id] + q = q.where("creator_id = ?", params[:creator_id].to_i) + elsif params[:creator_name] + q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].mb_chars.downcase.strip.tr(" ", "_")) + else + q = q.where("creator_id = ?", CurrentUser.user.id) + end + + q = q.visible_to(CurrentUser.user) + + q + end end - def self.visible_to(user) - where("(is_public = TRUE OR creator_id = ? OR ?)", user.id, user.is_moderator?) - end - - def self.owned_by(user) - where("creator_id = ?", user.id) - end + extend SearchMethods def self.find_tags(subscription_name) if subscription_name =~ /^(.+?):(.+)$/