Fix all the trailing whitespace

This commit is contained in:
Jakub Arnold
2013-02-07 16:45:24 +01:00
parent 1839614bcc
commit 61654ab8f0
230 changed files with 1165 additions and 1165 deletions

View File

@@ -12,5 +12,5 @@ class Admin::AdminController < ApplicationController
def ensure_is_admin
raise Discourse::InvalidAccess.new unless current_user.admin?
end
end

View File

@@ -8,8 +8,8 @@ class Admin::EmailLogsController < Admin::AdminController
def test
requires_parameter(:email_address)
Jobs.enqueue(:test_email, to_address: params[:email_address])
Jobs.enqueue(:test_email, to_address: params[:email_address])
render nothing: true
end
end
end

View File

@@ -7,4 +7,4 @@ class Admin::ExportController < Admin::AdminController
render json: failed_json.merge( message: "An #{Export.is_export_running? ? 'export' : 'import'} is currently running. Can't start a new export job right now.")
end
end
end
end

View File

@@ -1,30 +1,30 @@
require_dependency 'sql_builder'
class Admin::FlagsController < Admin::AdminController
def index
def index
sql = SqlBuilder.new "select p.id, t.title, p.cooked, p.user_id, p.topic_id, p.post_number, p.hidden, t.visible topic_visible
from posts p
from posts p
join topics t on t.id = topic_id
join (
select
post_id,
count(*) as cnt,
max(created_at) max,
min(created_at) min
select
post_id,
count(*) as cnt,
max(created_at) max,
min(created_at) min
from post_actions
/*where2*/
group by post_id
) as a on a.post_id = p.id
/*where*/
/*order_by*/
/*order_by*/
limit 100
"
sql.where2 "post_action_type_id in (:flag_types)", flag_types: PostActionType.FlagTypes
# it may make sense to add a view that shows flags on deleted posts,
# it may make sense to add a view that shows flags on deleted posts,
# we don't clear the flags on post deletion, just supress counts
# they may have deleted_at on the action not set
if params[:filter] == 'old'
@@ -41,16 +41,16 @@ limit 100
end
posts = sql.exec.to_a
if posts.length == 0
render :json => {users: [], posts: []}
return
return
end
map = {}
map = {}
users = Set.new
posts.each{ |p|
posts.each{ |p|
users << p["user_id"]
p["excerpt"] = Post.excerpt(p["cooked"])
p.delete "cooked"
@@ -58,10 +58,10 @@ limit 100
map[p["id"]] = p
}
sql = SqlBuilder.new "select a.id, a.user_id, post_action_type_id, a.created_at, post_id, a.message
sql = SqlBuilder.new "select a.id, a.user_id, post_action_type_id, a.created_at, post_id, a.message
from post_actions a
/*where*/
"
/*where*/
"
sql.where("post_action_type_id in (:flag_types)", flag_types: PostActionType.FlagTypes)
sql.where("post_id in (:posts)", posts: posts.map{|p| p["id"].to_i})
@@ -72,33 +72,33 @@ from post_actions a
end
sql.exec.each do |action|
p = map[action["post_id"]]
p = map[action["post_id"]]
p[:post_actions] ||= []
p[:post_actions] << action
users << action["user_id"]
end
sql =
sql =
"select id, username, name, email from users
where id in (?)"
users = User.exec_sql(sql, users.to_a).to_a
users.each { |u|
users.each { |u|
u["avatar_template"] = User.avatar_template(u["email"])
u.delete("email")
}
render json: MultiJson.dump({users: users, posts: posts})
render json: MultiJson.dump({users: users, posts: posts})
end
def clear
p = Post.find(params[:id])
PostAction.clear_flags!(p, current_user.id)
p.hidden = false
p.hidden = false
p.hidden_reason_id = nil
p.save
render nothing: true
render nothing: true
end
end

View File

@@ -3,8 +3,8 @@ class Admin::ImpersonateController < Admin::AdminController
def create
requires_parameters(:username_or_email)
user = User.where(['username_lower = lower(?) or lower(email) = lower(?) or lower(name) = lower(?)',
params[:username_or_email],
user = User.where(['username_lower = lower(?) or lower(email) = lower(?) or lower(name) = lower(?)',
params[:username_or_email],
params[:username_or_email],
params[:username_or_email]]).first
raise Discourse::NotFound if user.blank?
@@ -15,6 +15,6 @@ class Admin::ImpersonateController < Admin::AdminController
log_on_user(user)
render nothing: true
end
end
end

View File

@@ -1,5 +1,5 @@
class Admin::SiteCustomizationsController < Admin::AdminController
def index
@site_customizations = SiteCustomization.all

View File

@@ -1,14 +1,14 @@
class Admin::SiteSettingsController < Admin::AdminController
def index
@site_settings = SiteSetting.all_settings
@site_settings = SiteSetting.all_settings
render_json_dump(@site_settings.as_json)
end
def update
def update
requires_parameter(:value)
SiteSetting.send("#{params[:id]}=", params[:value])
render nothing: true
end
end
end

View File

@@ -3,10 +3,10 @@ class Admin::UsersController < Admin::AdminController
def index
# Sort order
if params[:query] == "active"
@users = User.order("COALESCE(last_seen_at, '01-01-1970') DESC, username")
@users = User.order("COALESCE(last_seen_at, '01-01-1970') DESC, username")
else
@users = User.order("created_at DESC, username")
end
end
@users = @users.where('approved = false') if params[:query] == 'pending'
@users = @users.where('username_lower like :filter or email like :filter', filter: "%#{params[:filter]}%") if params[:filter].present?
@@ -60,7 +60,7 @@ class Admin::UsersController < Admin::AdminController
@user = User.where(id: params[:user_id]).first
guardian.ensure_can_grant_admin!(@user)
@user.update_column(:admin, true)
render_serialized(@user, AdminUserSerializer)
render_serialized(@user, AdminUserSerializer)
end
def approve

View File

@@ -12,4 +12,4 @@ class Admin::VersionsController < Admin::AdminController
rescue RestClient::Forbidden
render json: {errors: [I18n.t("mothership.access_token_problem")]}
end
end
end

View File

@@ -18,19 +18,19 @@ class ApplicationController < ActionController::Base
before_filter :store_incoming_links
before_filter :preload_json
before_filter :check_xhr
rescue_from Exception do |exception|
unless [ ActiveRecord::RecordNotFound, ActionController::RoutingError,
unless [ ActiveRecord::RecordNotFound, ActionController::RoutingError,
ActionController::UnknownController, AbstractController::ActionNotFound].include? exception.class
begin
begin
ErrorLog.report_async!(exception, self, request, current_user)
rescue
rescue
# dont care give up
end
end
raise
end
# Some exceptions
class RenderEmpty < Exception; end
@@ -48,9 +48,9 @@ class ApplicationController < ActionController::Base
if e.available_in < 1.minute.to_i
time_left = I18n.t("rate_limiter.seconds", count: e.available_in)
elsif e.available_in < 1.hour.to_i
time_left = I18n.t("rate_limiter.minutes", count: (e.available_in / 1.minute.to_i))
time_left = I18n.t("rate_limiter.minutes", count: (e.available_in / 1.minute.to_i))
else
time_left = I18n.t("rate_limiter.hours", count: (e.available_in / 1.hour.to_i))
time_left = I18n.t("rate_limiter.hours", count: (e.available_in / 1.hour.to_i))
end
render json: {errors: [I18n.t("rate_limiter.too_many_requests", time_left: time_left)]}, status: 429
@@ -98,7 +98,7 @@ class ApplicationController < ActionController::Base
def inject_preview_style
style = request['preview-style']
session[:preview_style] = style if style
session[:preview_style] = style if style
end
def guardian
@@ -106,7 +106,7 @@ class ApplicationController < ActionController::Base
end
def log_on_user(user)
session[:current_user_id] = user.id
session[:current_user_id] = user.id
unless user.auth_token
user.auth_token = SecureRandom.hex(16)
user.save!
@@ -116,7 +116,7 @@ class ApplicationController < ActionController::Base
# This is odd, but it seems that in Rails `render json: obj` is about
# 20% slower than calling MultiJSON.dump ourselves. I'm not sure why
# Rails doesn't call MultiJson.dump when you pass it json: obj but
# Rails doesn't call MultiJson.dump when you pass it json: obj but
# it seems we don't need whatever Rails is doing.
def render_serialized(obj, serializer, opts={})
@@ -125,7 +125,7 @@ class ApplicationController < ActionController::Base
if obj.is_a?(Array)
serializer_opts[:each_serializer] = serializer
render_json_dump(ActiveModel::ArraySerializer.new(obj, serializer_opts).as_json)
else
else
render_json_dump(serializer.new(obj, serializer_opts).as_json)
end
@@ -143,7 +143,7 @@ class ApplicationController < ActionController::Base
return false if current_user.present?
# Don't cache if there's restricted access
return false if SiteSetting.restrict_access?
return false if SiteSetting.restrict_access?
true
end
@@ -199,7 +199,7 @@ class ApplicationController < ActionController::Base
else
render_json_error(obj)
end
end
end
def block_if_maintenance_mode
if Discourse.maintenance_mode?
@@ -212,11 +212,11 @@ class ApplicationController < ActionController::Base
end
def check_restricted_access
# note current_user is defined in the CurrentUser mixin
# note current_user is defined in the CurrentUser mixin
if SiteSetting.restrict_access? && cookies[:_access] != SiteSetting.access_password
redirect_to request_access_path(:return_path => request.fullpath)
return false
end
return false
end
end
def mini_profiler_enabled?
@@ -229,7 +229,7 @@ class ApplicationController < ActionController::Base
end
def requires_parameters(*required)
required.each do |p|
required.each do |p|
raise Discourse::InvalidParameters.new(p) unless params.has_key?(p)
end
end
@@ -239,13 +239,13 @@ class ApplicationController < ActionController::Base
def store_incoming_links
if request.referer.present?
parsed = URI.parse(request.referer)
if parsed.host != request.host
if parsed.host != request.host
IncomingLink.create(url: request.url, referer: request.referer[0..999])
end
end
end
def check_xhr
def check_xhr
unless (controller_name == 'forums' || controller_name == 'user_open_ids')
# render 'default/empty' unless ((request.format && request.format.json?) or request.xhr?)
raise RenderEmpty.new unless ((request.format && request.format.json?) or request.xhr?)
@@ -255,5 +255,5 @@ class ApplicationController < ActionController::Base
def ensure_logged_in
raise Discourse::NotLoggedIn.new unless current_user.present?
end
end

View File

@@ -8,7 +8,7 @@ class CategoriesController < ApplicationController
list = CategoryList.new(current_user)
render_serialized(list, CategoryListSerializer)
end
def show
@category = Category.where(slug: params[:id]).first
render_serialized(@category, CategorySerializer)
@@ -20,7 +20,7 @@ class CategoriesController < ApplicationController
@category = Category.create(category_params.merge(user: current_user))
return render_json_error(@category) unless @category.save
render_serialized(@category, CategorySerializer)
end
@@ -30,7 +30,7 @@ class CategoriesController < ApplicationController
@category = Category.where(id: params[:id]).first
guardian.ensure_can_edit!(@category)
json_result(@category, :serializer => CategorySerializer) {|cat| cat.update_attributes(category_params) }
json_result(@category, :serializer => CategorySerializer) {|cat| cat.update_attributes(category_params) }
end
def destroy

View File

@@ -1,9 +1,9 @@
class ClicksController < ApplicationController
skip_before_filter :check_xhr
def track
requires_parameter(:url)
requires_parameter(:url)
if params[:topic_id].present? or params[:post_id].present?
args = {url: params[:url], ip: request.remote_ip}
args[:user_id] = current_user.id if current_user.present?
@@ -22,4 +22,4 @@ class ClicksController < ApplicationController
end
end
end
end

View File

@@ -8,7 +8,7 @@ class DraftController < ApplicationController
end
def update
Draft.set(current_user, params[:draft_key], params[:sequence].to_i, params[:data])
Draft.set(current_user, params[:draft_key], params[:sequence].to_i, params[:data])
render :text => 'ok'
end

View File

@@ -9,7 +9,7 @@ class EmailController < ApplicationController
end
def unsubscribe
@user = User.find_by_temporary_key(params[:key])
@user = User.find_by_temporary_key(params[:key])
# Don't allow the use of a key while logged in as a different user
@user = nil if current_user.present? and (@user != current_user)

View File

@@ -6,7 +6,7 @@ class ExceptionsController < ApplicationController
def not_found
f = Topic.where(deleted_at: nil, archetype: "regular")
@popular = f.order('views desc').take(10)
@popular = f.order('views desc').take(10)
@recent = f.order('created_at desc').take(10)
@slug = params[:slug].class == String ? params[:slug] : ''
@slug.gsub!('-',' ')

View File

@@ -11,8 +11,8 @@ class ExcerptController < ApplicationController
case route[:controller]
when 'topics'
# If we have a post number, retrieve the last post. Otherwise, first post.
# If we have a post number, retrieve the last post. Otherwise, first post.
topic_posts = Post.where(topic_id: route[:topic_id].to_i).order(:post_number)
post = route.has_key?(:post_number) ? topic_posts.last : topic_posts.first
guardian.ensure_can_see!(post)
@@ -22,14 +22,14 @@ class ExcerptController < ApplicationController
user = User.where(username_lower: route[:username].downcase).first
guardian.ensure_can_see!(user)
render :json => user, serializer: UserExcerptSerializer, root: false
when 'list'
when 'list'
if route[:action] == 'category'
category = Category.where(slug: route[:category]).first
guardian.ensure_can_see!(category)
render :json => category, serializer: CategoryExcerptSerializer, root: false
end
else
render nothing: true, status: 404
render nothing: true, status: 404
end
rescue ActionController::RoutingError, Discourse::NotFound

View File

@@ -2,7 +2,7 @@ class FacebookController < ApplicationController
skip_before_filter :check_xhr, only: [:frame, :complete]
layout false
def frame
def frame
redirect_to oauth_consumer.url_for_oauth_code(:permissions => "email")
end
@@ -23,7 +23,7 @@ class FacebookController < ApplicationController
# non verified accounts are just trouble
unless verified
render text: "Your account must be verified with facebook, before authenticating with facebook"
render text: "Your account must be verified with facebook, before authenticating with facebook"
return
end
@@ -41,7 +41,7 @@ class FacebookController < ApplicationController
email: me["email"],
email_valid: true
}
user_info = FacebookUserInfo.where(:facebook_user_id => me["id"]).first
@data = {
@@ -51,23 +51,23 @@ class FacebookController < ApplicationController
auth_provider: "Facebook",
email_valid: true
}
if user_info
user = user_info.user
if user
unless user.active
user.active = true
user.active = true
user.save
end
log_on_user(user)
@data[:authenticated] = true
end
else
else
user = User.where(email: me["email"]).first
if user
FacebookUserInfo.create!(session[:authentication][:facebook].merge(user_id: user.id))
unless user.active
user.active = true
user.active = true
user.save
end
log_on_user(user)
@@ -78,15 +78,15 @@ class FacebookController < ApplicationController
end
protected
protected
def oauth_consumer
require 'koala'
host = request.host
host = request.host
host = "#{host}:#{request.port}" if request.port != 80
callback_url = "http://#{host}/facebook/complete"
oauth = Koala::Facebook::OAuth.new(SiteSetting.facebook_app_id, SiteSetting.facebook_app_secret, callback_url)
end

View File

@@ -1,9 +1,9 @@
class FaqController < ApplicationController
skip_before_filter :check_xhr
skip_before_filter :check_xhr
def index
render layout: false
end
end
end

View File

@@ -1,5 +1,5 @@
class ForumsController < ApplicationController
skip_before_filter :check_xhr, only: [:request_access, :request_access_submit, :status]
skip_before_filter :check_restricted_access, only: [:status]
skip_before_filter :authorize_mini_profiler, only: [:status]

View File

@@ -8,7 +8,7 @@ class InvitesController < ApplicationController
if invite.present?
user = invite.redeem
if user.present?
if user.present?
log_on_user(user)
# Send a welcome message if required
@@ -31,7 +31,7 @@ class InvitesController < ApplicationController
def destroy
requires_parameter(:email)
invite = Invite.where(invited_by_id: current_user.id, email: params[:email]).first
invite = Invite.where(invited_by_id: current_user.id, email: params[:email]).first
raise Discourse::InvalidParameters.new(:email) if invite.blank?
invite.destroy

View File

@@ -5,7 +5,7 @@ class ListController < ApplicationController
# Create our filters
[:popular, :favorited, :read, :posted, :unread, :new].each do |filter|
define_method(filter) do
define_method(filter) do
list_opts = {page: params[:page]}
@@ -23,14 +23,14 @@ class ListController < ApplicationController
list = TopicQuery.new(current_user, list_opts).send("list_#{filter}")
list.more_topics_url = url_for(self.send "#{filter}_path".to_sym, list_opts.merge(format: 'json', page: next_page))
respond(list)
end
end
end
alias_method :index, :popular
def category
query = TopicQuery.new(current_user, page: params[:page])
list = nil
@@ -54,7 +54,7 @@ class ListController < ApplicationController
list.draft_key = Draft::NEW_TOPIC
list.draft_sequence = DraftSequence.current(current_user, Draft::NEW_TOPIC)
draft = Draft.get(current_user, list.draft_key, list.draft_sequence) if current_user
list.draft = draft
@@ -62,7 +62,7 @@ class ListController < ApplicationController
respond_to do |format|
format.html do
@list = list
@list = list
store_preloaded('topic_list', MultiJson.dump(TopicListSerializer.new(list, scope: guardian)))
render 'list'
end
@@ -71,7 +71,7 @@ class ListController < ApplicationController
end
end
end
def next_page
params[:page].to_i + 1
end

View File

@@ -16,8 +16,8 @@ class PostActionsController < ApplicationController
post_serializer = PostSerializer.new(@post, scope: guardian, root: false)
render_json_dump(post_serializer)
else
raise Discourse::InvalidParameters.new(:post_action_type_id)
else
raise Discourse::InvalidParameters.new(:post_action_type_id)
end
end
@@ -52,7 +52,7 @@ class PostActionsController < ApplicationController
PostAction.clear_flags!(@post, current_user.id, params[:post_action_type_id].to_i)
@post.reload
if @post.is_flagged?
if @post.is_flagged?
render json: {success: true, hidden: true}
else
@post.unhide!
@@ -62,9 +62,9 @@ class PostActionsController < ApplicationController
private
def fetch_post_from_params
def fetch_post_from_params
requires_parameter(:id)
@post = Post.where(id: params[:id]).first
@post = Post.where(id: params[:id]).first
guardian.ensure_can_see!(@post)
end
end

View File

@@ -34,7 +34,7 @@ class PostsController < ApplicationController
def update
requires_parameter(:post)
@post = Post.where(id: params[:id]).first
@post.image_sizes = params[:image_sizes] if params[:image_sizes].present?
guardian.ensure_can_edit!(@post)
@@ -56,7 +56,7 @@ class PostsController < ApplicationController
def by_number
@post = Post.where(topic_id: params[:topic_id], post_number: params[:post_number]).first
guardian.ensure_can_see!(@post)
guardian.ensure_can_see!(@post)
@post.revert_to(params[:version].to_i) if params[:version].present?
post_serializer = PostSerializer.new(@post, scope: guardian, root: false)
post_serializer.add_raw = true
@@ -66,7 +66,7 @@ class PostsController < ApplicationController
def show
@post = Post.where(id: params[:id]).first
guardian.ensure_can_see!(@post)
@post.revert_to(params[:version].to_i) if params[:version].present?
post_serializer = PostSerializer.new(@post, scope: guardian, root: false)
post_serializer.add_raw = true
@@ -82,7 +82,7 @@ class PostsController < ApplicationController
else
post.recover
end
Topic.reset_highest(post.topic_id)
Topic.reset_highest(post.topic_id)
end
render nothing: true
end
@@ -125,7 +125,7 @@ class PostsController < ApplicationController
def bookmark
post = Post.where(id: params[:post_id]).first
guardian.ensure_can_see!(post)
if current_user
if current_user
if params[:bookmarked] == "true"
PostAction.act(current_user, post, PostActionType.Types[:bookmark])
else

View File

@@ -1,9 +1,9 @@
class PrivacyController < ApplicationController
skip_before_filter :check_xhr
skip_before_filter :check_xhr
def index
render layout: false
end
end
end

View File

@@ -13,7 +13,7 @@ class RequestAccessController < ApplicationController
if params[:password] == SiteSetting.access_password
cookies.permanent['_access'] = SiteSetting.access_password
redirect_to @return_path
else
else
flash[:error] = I18n.t(:'request_access.incorrect')
render :new, layout: 'no_js'
end

View File

@@ -12,7 +12,7 @@ class SessionController < ApplicationController
@user = User.where(username_lower: login).first
end
if @user.present?
if @user.present?
# If the site requires user approval and the user is not approved yet
if SiteSetting.must_approve_users? and !@user.approved?

View File

@@ -19,4 +19,4 @@ class StaticController < ApplicationController
render file: 'public/404', layout: false, status: 404
end
end
end

View File

@@ -4,15 +4,15 @@ require_dependency 'promotion'
class TopicsController < ApplicationController
# Avatar is an image request, not XHR
before_filter :ensure_logged_in, only: [:timings,
:destroy_timings,
:update,
:star,
:destroy,
:status,
:invite,
:mute,
:unmute,
before_filter :ensure_logged_in, only: [:timings,
:destroy_timings,
:update,
:star,
:destroy,
:status,
:invite,
:mute,
:unmute,
:set_notifications,
:move_posts]
@@ -26,8 +26,8 @@ class TopicsController < ApplicationController
Promotion.new(current_user).review if current_user.trust_level == TrustLevel.Levels[:new]
end
@topic_view = TopicView.new(params[:id] || params[:topic_id],
current_user,
@topic_view = TopicView.new(params[:id] || params[:topic_id],
current_user,
username_filters: params[:username_filters],
best_of: params[:best_of],
page: params[:page])
@@ -40,7 +40,7 @@ class TopicsController < ApplicationController
split = fullpath.split('/')
split[2] = @topic_view.topic.slug
redirect_to split.join('/'), status: 301
redirect_to split.join('/'), status: 301
return
end
@@ -56,8 +56,8 @@ class TopicsController < ApplicationController
# No filter? Consider it a paged view, default to page 0 which is the first segment
@topic_view.filter_posts_paged(params[:page].to_i)
end
View.create_for(@topic_view.topic, request.remote_ip, current_user)
View.create_for(@topic_view.topic, request.remote_ip, current_user)
@topic_view.draft_key = @topic_view.topic.draft_key
@topic_view.draft_sequence = DraftSequence.current(current_user, @topic_view.draft_key)
@@ -74,9 +74,9 @@ class TopicsController < ApplicationController
if params[:post_number]
@post = @topic_view.posts.select{|p| p.post_number == params[:post_number].to_i}.first
page = ((params[:post_number].to_i - 1) / SiteSetting.posts_per_page) + 1
@canonical << "?page=#{page}" if page > 1
else
page = ((params[:post_number].to_i - 1) / SiteSetting.posts_per_page) + 1
@canonical << "?page=#{page}" if page > 1
else
@canonical << "?page=#{params[:page]}" if params[:page] && params[:page].to_i > 1
end
@@ -91,7 +91,7 @@ class TopicsController < ApplicationController
format.json do
render_json_dump(topic_view_serializer)
end
end
end
@@ -104,11 +104,11 @@ class TopicsController < ApplicationController
def update
topic = Topic.where(id: params[:topic_id]).first
guardian.ensure_can_edit!(topic)
guardian.ensure_can_edit!(topic)
topic.title = params[:title] if params[:title].present?
# TODO: we may need smarter rules about converting archetypes
if current_user.admin?
if current_user.admin?
topic.archetype = "regular" if params[:archetype] == 'regular'
end
@@ -138,7 +138,7 @@ class TopicsController < ApplicationController
render nothing: true
end
def mute
def mute
toggle_mute(true)
end
@@ -153,9 +153,9 @@ class TopicsController < ApplicationController
topic.destroy
render nothing: true
end
def excerpt
render nothing: true
render nothing: true
end
def invite
@@ -163,7 +163,7 @@ class TopicsController < ApplicationController
topic = Topic.where(id: params[:topic_id]).first
guardian.ensure_can_invite_to!(topic)
if topic.invite(current_user, params[:user])
if topic.invite(current_user, params[:user])
render json: success_json
else
render json: failed_json, status: 422
@@ -195,14 +195,14 @@ class TopicsController < ApplicationController
# TODO: all this should be optimised, tested better
last_seen_key = "user-last-seen:#{current_user.id}"
last_seen = $redis.get(last_seen_key)
last_seen = $redis.get(last_seen_key)
if last_seen.present?
diff = (Time.now.to_f - last_seen.to_f).round
if diff > 0
User.update_all ["time_read = time_read + ?", diff], ["id = ? and time_read = ?", current_user.id, current_user.time_read]
User.update_all ["time_read = time_read + ?", diff], ["id = ? and time_read = ?", current_user.id, current_user.time_read]
end
end
$redis.set(last_seen_key, Time.now.to_f)
end
$redis.set(last_seen_key, Time.now.to_f)
original_unread = current_user.unread_notifications_by_type
@@ -211,27 +211,27 @@ class TopicsController < ApplicationController
added_time = 0
if params[:timings].present?
if params[:timings].present?
params[:timings].each do |post_number_str, t|
post_number = post_number_str.to_i
if post_number >= 0
if post_number >= 0
if (highest_seen || 0) >= post_number
Notification.mark_post_read(current_user, topic_id, post_number)
end
PostTiming.record_timing(topic_id: topic_id,
post_number: post_number,
user_id: current_user.id,
post_number: post_number,
user_id: current_user.id,
msecs: t.to_i)
end
end
end
end
TopicUser.update_last_read(current_user, topic_id, highest_seen, params[:topic_time].to_i)
current_user.reload
if current_user.unread_notifications_by_type != original_unread
current_user.publish_notifications_state
end

View File

@@ -1,9 +1,9 @@
class TosController < ApplicationController
skip_before_filter :check_xhr
skip_before_filter :check_xhr
def index
render layout: false
end
end
end

View File

@@ -2,13 +2,13 @@ class TwitterController < ApplicationController
skip_before_filter :check_xhr, only: [:frame, :complete]
layout false
def frame
def frame
# defer the require as late as possible
require 'oauth'
consumer = oauth_consumer
host = request.host
host = request.host
host = "#{host}:#{request.port}" if request.port != 80
request_token = consumer.get_request_token(:oauth_callback => "http://#{host}/twitter/complete")
@@ -21,10 +21,10 @@ class TwitterController < ApplicationController
def complete
require 'oauth'
consumer = oauth_consumer
unless session[:request_token] && session[:request_token_secret]
unless session[:request_token] && session[:request_token_secret]
render :text => ('No authentication information was found in the session. Please try again.') and return
end
@@ -40,26 +40,26 @@ class TwitterController < ApplicationController
screen_name = access_token.params["screen_name"]
twitter_user_id = access_token.params["user_id"]
session[:authentication] = {
twitter_user_id: twitter_user_id,
twitter_screen_name: screen_name
}
user_info = TwitterUserInfo.where(:twitter_user_id => twitter_user_id).first
@data = {
username: screen_name,
auth_provider: "Twitter"
}
if user_info
if user_info.user.active
log_on_user(user_info.user)
@data[:authenticated] = true
else
@data[:awaiting_activation] = true
# send another email ?
# send another email ?
end
else
#TODO typheous or some other webscale http request lib that does not block thins
@@ -71,11 +71,11 @@ class TwitterController < ApplicationController
end
protected
protected
def oauth_consumer
OAuth::Consumer.new(
SiteSetting.twitter_consumer_key,
SiteSetting.twitter_consumer_key,
SiteSetting.twitter_consumer_secret,
:site => "https://api.twitter.com",
:authorize_path => '/oauth/authenticate'

View File

@@ -3,9 +3,9 @@ class UserActionsController < ApplicationController
requires_parameters(:user_id)
per_chunk = 60
render :json => UserAction.stream(
user_id: params[:user_id].to_i,
offset: params[:offset],
limit: per_chunk,
user_id: params[:user_id].to_i,
offset: params[:offset],
limit: per_chunk,
action_types: (params[:filter] || "").split(","),
guardian: guardian,
ignore_private_messages: params[:filter] ? false : true

View File

@@ -7,12 +7,12 @@ require_dependency 'email'
class UserOpenIdsController < ApplicationController
layout false
layout false
# need to be able to call this
skip_before_filter :check_xhr
# must be done, cause we may trigger a POST
skip_before_filter :check_xhr
# must be done, cause we may trigger a POST
skip_before_filter :verify_authenticity_token, :only => :complete
def frame
@@ -26,9 +26,9 @@ class UserOpenIdsController < ApplicationController
end
def destroy
@open_id = UserOpenId.find(params[:id])
@open_id = UserOpenId.find(params[:id])
if @open_id.user.id == current_user.id
@open_id.destroy
@open_id.destroy
end
redirect_to current_user
end
@@ -40,25 +40,25 @@ class UserOpenIdsController < ApplicationController
def create
url = params[:user_open_id]
begin
# validations
@open_id = UserOpenId.new(url)
begin
# validations
@open_id = UserOpenId.new(url)
open_id_request = openid_consumer.begin @open_id.url
return_to, realm = ['complete','index'].map {|a| url_for :action => a, :only_path => false}
return_to, realm = ['complete','index'].map {|a| url_for :action => a, :only_path => false}
add_ax_request(open_id_request)
add_sreg_request(open_id_request)
# immediate mode is not required
add_ax_request(open_id_request)
add_sreg_request(open_id_request)
# immediate mode is not required
if open_id_request.send_redirect?(realm, return_to, false)
redirect_to open_id_request.redirect_url(realm, return_to, false)
else
else
logger.warn("send_redirect? returned false")
render :text, open_id_request.html_markup(realm, return_to, false, {'id' => 'openid_form'})
end
rescue => e
flash[:error] = "There seems to be something wrong with your open id url"
logger.warn("failed to load contact open id: " + e.to_s)
flash[:error] = "There seems to be something wrong with your open id url"
logger.warn("failed to load contact open id: " + e.to_s)
render :text => 'Something went wrong, we have been notified, try again soon'
end
end
@@ -67,12 +67,12 @@ class UserOpenIdsController < ApplicationController
current_url = url_for(:action => 'complete', :only_path => false)
parameters = params.reject{|k,v|request.path_parameters[k]}.reject{|k,v| k == 'action' || k == 'controller'}
open_id_response = openid_consumer.complete(parameters, current_url)
case open_id_response.status
when OpenID::Consumer::SUCCESS
data = {}
data = {}
if params[:did_sreg]
data = get_sreg_response(open_id_response)
data = get_sreg_response(open_id_response)
end
if params[:did_ax]
@@ -81,20 +81,20 @@ class UserOpenIdsController < ApplicationController
end
trusted = open_id_response.endpoint.server_url =~ /^https:\/\/www.google.com\// ||
open_id_response.endpoint.server_url =~ /^https:\/\/me.yahoo.com\//
open_id_response.endpoint.server_url =~ /^https:\/\/me.yahoo.com\//
email = data[:email]
user_open_id = UserOpenId.where(url: open_id_response.display_identifier).first
user_open_id = UserOpenId.where(url: open_id_response.display_identifier).first
if trusted && user_open_id.nil? && user = User.where(email: email).first
# we trust so do an email lookup
user_open_id = UserOpenId.create(url: open_id_response.display_identifier, user_id: user.id, email: email, active: true)
end
authenticated = !user_open_id.nil?
if authenticated
user = user_open_id.user
user = user_open_id.user
# If we have to approve users
if SiteSetting.must_approve_users? and !user.approved?
@@ -104,10 +104,10 @@ class UserOpenIdsController < ApplicationController
@data = {authenticated: true}
end
else
else
@data = {
email: email,
name: User.suggest_name(email),
name: User.suggest_name(email),
username: User.suggest_username(email),
email_valid: trusted,
auth_provider: "Google"
@@ -116,24 +116,24 @@ class UserOpenIdsController < ApplicationController
email: @data[:email],
email_valid: @data[:email_valid],
openid_url: open_id_response.display_identifier
}
}
end
else
# note there are lots of failure reasons, we treat them all as failures
else
# note there are lots of failure reasons, we treat them all as failures
logger.warn("Verification #{open_id_response.display_identifier || "" }"\
" failed: #{open_id_response.status.to_s}" )
logger.warn(open_id_response.message)
flash[:error] = "Sorry, I seem to be having trouble confirming your open id account, please try again!"
render :text => "Apologies, something went wrong ... try again soon"
end
flash[:error] = "Sorry, I seem to be having trouble confirming your open id account, please try again!"
render :text => "Apologies, something went wrong ... try again soon"
end
end
protected
protected
def persist_session
def persist_session
if s = UserSession.find
s.remember_me = true
s.save
@@ -141,16 +141,16 @@ class UserOpenIdsController < ApplicationController
end
def openid_consumer
@openid_consumer ||= OpenID::Consumer.new(session,
@openid_consumer ||= OpenID::Consumer.new(session,
OpenID::Store::Filesystem.new("#{Rails.root}/tmp/openid"))
end
def get_sreg_response(open_id_response)
data = {}
data = {}
sreg_resp = OpenID::SReg::Response.from_success_response(open_id_response)
unless sreg_resp.empty?
data[:email] = sreg_resp.data['email']
data[:nickname] = sreg_resp.data['nickname']
data[:nickname] = sreg_resp.data['nickname']
end
data
end
@@ -159,15 +159,15 @@ class UserOpenIdsController < ApplicationController
data = {}
ax_resp = OpenID::AX::FetchResponse.from_success_response(open_id_response)
if ax_resp && !ax_resp.data.empty?
data[:email] = ax_resp.data['http://schema.openid.net/contact/email'][0]
data[:email] = ax_resp.data['http://schema.openid.net/contact/email'][0]
end
data
data
end
def add_sreg_request(open_id_request)
def add_sreg_request(open_id_request)
sreg_request = OpenID::SReg::Request.new
sreg_request.request_fields(['email'], true)
# optional
# optional
sreg_request.request_fields(['dob', 'fullname', 'nickname'], false)
open_id_request.add_extension(sreg_request)
open_id_request.return_to_args['did_sreg'] = 'y'
@@ -175,14 +175,14 @@ class UserOpenIdsController < ApplicationController
end
def add_ax_request(open_id_request)
ax_request = OpenID::AX::FetchRequest.new
requested_attrs = [
ax_request = OpenID::AX::FetchRequest.new
requested_attrs = [
['namePerson', 'fullname'],
['namePerson/friendly', 'nickname'],
['contact/email', 'email', true],
['contact/web/default', 'web_default'],
['birthDate', 'dob'],
['contact/country/home', 'country']
['contact/country/home', 'country']
]
requested_attrs.each {|a| ax_request.add(OpenID::AX::AttrInfo.new("http://schema.openid.net/#{a[0]}", a[1], a[2] || false))}

View File

@@ -7,8 +7,8 @@ class UsersController < ApplicationController
skip_before_filter :check_restricted_access, only: [:avatar]
before_filter :ensure_logged_in, only: [:username, :update, :change_email, :user_preferences_redirect]
def show
def show
@user = fetch_user_from_params
anonymous_etag(@user) do
render_serialized(@user, UserSerializer)
@@ -25,7 +25,7 @@ class UsersController < ApplicationController
json_result(user) do |u|
website = params[:website]
if website
if website
website = "http://" + website unless website =~ /^http/
end
@@ -42,19 +42,19 @@ class UsersController < ApplicationController
end
u.save
end
end
end
def username
requires_parameter(:new_username)
user = fetch_user_from_params
guardian.ensure_can_edit!(user)
guardian.ensure_can_edit!(user)
result = user.change_username(params[:new_username])
raise Discourse::InvalidParameters.new(:new_username) unless result
render nothing: true
render nothing: true
end
def preferences
@@ -144,7 +144,7 @@ class UsersController < ApplicationController
if user.save
msg = nil
msg = nil
active_result = user.active?
if active_result
@@ -158,7 +158,7 @@ class UsersController < ApplicationController
msg = I18n.t("login.active")
end
else
else
msg = I18n.t("login.activate_email", email: user.email)
Jobs.enqueue(:user_email, type: :signup, user_id: user.id, email_token: user.email_tokens.first.token)
end
@@ -174,8 +174,8 @@ class UsersController < ApplicationController
end
end
# Clear authentication session.
# Clear authentication session.
session[:authentication] = nil
# JSON result
@@ -196,22 +196,22 @@ class UsersController < ApplicationController
# all avatars are funneled through here
def avatar
# TEMP to catch all missing spots
# raise ActiveRecord::RecordNotFound
user = User.select(:email).where(:username_lower => params[:username].downcase).first
if user
# for now we only support gravatar in square (redirect cached for a day), later we can use x-sendfile and/or a cdn to serve local
size = params[:size].to_i
size = 64 if size == 0
size = 10 if size < 10
size = 128 if size > 128
size = 128 if size > 128
url = user.avatar_template.gsub("{size}", size.to_s)
expires_in 1.day
redirect_to url
else
redirect_to url
else
raise ActiveRecord::RecordNotFound
end
end
@@ -235,12 +235,12 @@ class UsersController < ApplicationController
log_on_user(@user)
flash[:success] = I18n.t('password_reset.success')
end
end
end
end
end
end
render :layout => 'no_js'
end
def change_email
requires_parameter(:email)
user = fetch_user_from_params
@@ -250,13 +250,13 @@ class UsersController < ApplicationController
raise Discourse::InvalidParameters.new(:email) if User.where("lower(email) = ?", params[:email].downcase).exists?
email_token = user.email_tokens.create(email: params[:email])
Jobs.enqueue(:user_email,
to_address: params[:email],
type: :authorize_email,
user_id: user.id,
Jobs.enqueue(:user_email,
to_address: params[:email],
type: :authorize_email,
user_id: user.id,
email_token: email_token.token)
render nothing: true
render nothing: true
end
def authorize_email
@@ -274,7 +274,7 @@ class UsersController < ApplicationController
if @user = EmailToken.confirm(params[:token])
# Log in the user unless they need to be approved
if SiteSetting.must_approve_users?
if SiteSetting.must_approve_users?
@needs_approval = true
else
@user.enqueue_welcome_message('welcome_user') if @user.send_welcome_message
@@ -295,25 +295,25 @@ class UsersController < ApplicationController
sql = "select username, name, email from users u "
if topic_id
sql << "left join (select distinct p.user_id from posts p where topic_id = :topic_id) s on
sql << "left join (select distinct p.user_id from posts p where topic_id = :topic_id) s on
s.user_id = u.id "
end
if term.length > 0
sql << "where username_lower like :term_like or
to_tsvector('simple', name) @@
sql << "where username_lower like :term_like or
to_tsvector('simple', name) @@
to_tsquery('simple',
regexp_replace(
regexp_replace(
cast(plainto_tsquery(:term) as text)
regexp_replace(
cast(plainto_tsquery(:term) as text)
,'\''(?: |$)', ':*''', 'g'),
'''', '', 'g')
) "
end
sql << "order by case when username_lower = :term then 0 else 1 end asc, "
if topic_id
if topic_id
sql << " case when s.user_id is null then 0 else 1 end desc, "
end
@@ -325,7 +325,7 @@ class UsersController < ApplicationController
r.delete("email")
r
end
render :json => results
render :json => results
end
private
@@ -341,11 +341,11 @@ class UsersController < ApplicationController
def fetch_user_from_params
username_lower = params[:username].downcase
username_lower.gsub!(/\.json$/, '')
user = User.where(username_lower: username_lower).first
raise Discourse::NotFound.new if user.blank?
guardian.ensure_can_see!(user)
user
end
end
end