Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 43 additions & 13 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ def show
end
render_404 if @user.nil?

User.transaction do
@user.lock!
@user.update_tw_account(@user_tw_account)
end

#Words取得
@words = @user.words.all
words_p = @words.partition{|w| w.alive?}
Expand All @@ -32,41 +37,66 @@ def show
end

def report_history
#ログインしていないと見られない
if !logged_in?
redirect_to root_path
return
#ログインしていないと見られない
if !logged_in?
redirect_to root_path
return
end
@client = client_new

current_user.reports.all.uniq{ |rp| rp.reported_id }.each do |rp|
if rp.reported.screen_name.nil? or rp.reported.screen_name.blank?
User.transaction do
rp.reported.lock!
acc = @client.user(rp.reported.twid.to_i)
rp.reported.update_tw_account(acc)
end
end
@client = client_new
end

@rphists = current_user.reports.all.order("created_at DESC")
end

def report
if params[:ajax_tag] == 'report'
@user = User.find(params[:reported_id])
@client = client_new
@wordstr = params[:word]
@user_tw_account = @client.user(@user.twid.to_i)
render_404 if @user.nil?

if params[:word].blank?
@result = "blank"
return
end

@client = client_new
@wordstr = params[:word]
@user_tw_account = @client.user(@user.twid.to_i)

@word = @user.words.find_by(name: params[:word])

if !(@word.nil?)
if !(@word.report_available?)
#通報期限切れ
@result = "reportnotavailable"
elsif @word.detected
@result = "alreadyreported"
else
@word.detect_by(current_user)
current_user.reports.create(reported: @user, word_str: params[:word], succeed: true)
current_user.save
User.transaction do
me = current_user
@user.lock! # 摘発した相手のデータを更新するのでロックする
me.lock!
@word.detect_by(me)
me.reports.create(reported: @user, word_str: params[:word], succeed: true)
me.save!
end
@result = "success"
end
else
current_user.reports.create(reported: @user, word_str: params[:word], succeed: false)
current_user.save
User.transaction do
me = current_user
me.lock!
me.reports.create(reported: @user, word_str: params[:word], succeed: false)
me.save!
end
@result = "fail"
end
else
Expand Down
26 changes: 18 additions & 8 deletions app/helpers/users_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,27 @@ module UsersHelper
def render_users_home
@client = client_new

@user = current_user
@user_tw_account = @client.user(current_user.twid.to_i)
@user = current_user

#鍵垢判定
if @user.is_secret != @user_tw_account.protected?
@user.is_secret = @user_tw_account.protected?
@user.save
end
User.transaction do
@user.lock!

@user.refresh_wordcaches(@client)
@user.words_reset(@client)
@user.update_tw_account(@user_tw_account)

@user.refresh_wordcaches(@client)
@user.words_reset(@client)

@detected_word = []
@user.words.select{ |w| w.detected && !w.noticed_detection }.each do |word|
word.noticed_detection = true
word.save!
detector = User.find(word.detectorid)
next if detector.nil?
word.detectoraccount = @client.user(detector.twid.to_i)
@detected_word.push(word)
end
end

#Words取得
@words = @user.words.all
Expand Down
19 changes: 15 additions & 4 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ def refresh_wordcaches(client)
end

yesterdayswords.each do |w|
w.save
w.save!
end
todayswords.each do |w|
w.save
w.save!
end

self.get_todays_score(nil)
Expand Down Expand Up @@ -101,7 +101,6 @@ def words_reset(client)
def get_score(client)
#基準スコア(アップデート前のスコア)に単語スコアとレポートスコアを加算しキャッシュに保存
self.current_score_cache = self.score + self.get_words_score(nil) + self.get_reports_score(nil)
self.save
return self.current_score_cache
end

Expand All @@ -114,7 +113,7 @@ def get_todays_score(client)
self.reports.each do |rp|
self.todayscore += rp.succeed ? 100 : -20 if rp.today?
end
self.save
self.save!
return self.todayscore
end

Expand All @@ -134,4 +133,16 @@ def get_reports_score(client)
end
return reportscore
end

def update_tw_account(user_tw_account)
self.name = user_tw_account.name
self.screen_name = user_tw_account.screen_name
self.url = user_tw_account.url.to_s
self.imgurl = ApplicationController.helpers.get_twpic_uri(user_tw_account)
#鍵垢判定
if self.is_secret != user_tw_account.protected?
self.is_secret = user_tw_account.protected?
end
self.save!
end
end
2 changes: 2 additions & 0 deletions app/models/word.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,6 @@ def yesterday?
def report_available?
return (self.created_at.localtime("+09:00") > (Time.now - 1.hour).localtime("+09:00").beginning_of_day)
end

attr_accessor :detectoraccount
end
14 changes: 3 additions & 11 deletions app/views/users/_detected.html.erb
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
<% @words.select{|w| w.detected && !w.noticed_detection }.each do |word| %>

<% word.noticed_detection = true %>
<% word.save %>
<% detector = User.find(word.detectorid) %>
<% next if detector.nil? %>
<% detectoraccount = @client.user(detector.twid.to_i) %>

<% @detected_word.each do |word| %>
<div class="alert alert-danger text-center" role="alert">
<h4 class="alert-heading">通告</h4>
<small>
<p>貴方のスパイ活動が察知されました。<br/>貴方へのペナルティとして100ポイントが減算されます。</p>
<p>摘発された暗号:「<%= word.name %>」</p>
<p>摘発者は<%=detectoraccount.name%>(@<%=detectoraccount.screen_name%>)であると思われます。</p>
<%= link_to "情報を共有する", tweetlink("私が所持していた暗号「#{word.name}」が#{detectoraccount.name}( @#{detectoraccount.screen_name} )によって暴かれてしまった..."), class: "btn btn-danger", target: "_new" %>
<p>摘発者は<%=word.detectoraccount.name%>(@<%=word.detectoraccount.screen_name%>)であると思われます。</p>
<%= link_to "情報を共有する", tweetlink("私が所持していた暗号「#{word.name}」が#{word.detectoraccount.name}( @#{word.detectoraccount.screen_name} )によって暴かれてしまった..."), class: "btn btn-danger", target: "_new" %>
<hr>
<p class="text-sm mb-0">未摘発の暗号が残っている場合、貴方はまだ活動を継続することが出来ます。</p>
</small>
</div>

<% end %>
6 changes: 0 additions & 6 deletions app/views/users/_user_header.html.erb
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
<% user.name = @user_tw_account.name %>
<% user.screen_name = @user_tw_account.screen_name %>
<% user.url = @user_tw_account.url.to_s %>
<% user.imgurl = get_twpic_uri(@user_tw_account) %>
<% user.save %>

<div class="media mb-3">
<%= link_to image_tag(user.imgurl, size: "96x96" , alt: user.name, class: "mr-3 rounded-circle"), user.url, target:"_new" %>
<div class="media-body">
Expand Down
12 changes: 1 addition & 11 deletions app/views/users/report_history.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<h2>摘発履歴</h2>
<% rphists = current_user.reports.all.order("created_at DESC") %>

<table class="table">
<thead>
Expand All @@ -11,16 +10,7 @@
</tr>
</thead>
<tbody>
<% rphists.each do |rp| %>

<% if rp.reported.screen_name.nil? or rp.reported.screen_name.blank? %>
<% acc = @client.rp(rp.reported.twid.to_i) %>
<% rp.reported.name = acc.name %>
<% rp.reported.screen_name = acc.screen_name %>
<% rp.reported.url = acc.url.to_s %>
<% rp.reported.imgurl = get_twpic_uri(acc) %>
<% rp.reported.save %>
<% end %>
<% @rphists.each do |rp| %>
<tr>
<td><%= "#{rp.reported.name}(@#{rp.reported.screen_name})" %></td>
<td><%= rp.word_str %></td>
Expand Down
2 changes: 1 addition & 1 deletion app/views/words/_words.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@
<td><%= @user.get_score(nil) %></td>
</tr>
</table>
<% if !@todayswords.empty? %>
<% if !@todayswords.empty? && @todayswords.first.cached_at != nil %>
<p>※ <%= smart_time_to_str(@todayswords.first.cached_at) %> 現在の情報です</p>
<% end %>