(SELECTAVG(stars)FROMseems_rateable_ratesWHERErateable_type='HomeworkAttach'ANDrateable_id=homework_attaches.idANDrater_id=#{@bid.author_id}) AS t_score,
(SELECTAVG(stars)FROMseems_rateable_ratesWHERErateable_type='HomeworkAttach'ANDrateable_id=homework_attaches.idANDrater_id<>#{@bid.author_id}) AS s_score
FROMhomework_attachesWHEREbid_id=#{@bid.id} ORDER BY
(CASEWHENt_scoreISNULLTHEN0ELSEt_score*#{@bid.proportion * 1.0 / 100} END + CASE WHEN s_score IS NULL THEN 0 ELSE s_score * #{1 - @bid.proportion * 1.0 / 100} END) DESC,created_at ASC")
ifUser.current.logged?&&(!Member.where('user_id = ? and project_id = ?',User.current.id,@bid.courses.first.id).first.nil?&&(Member.where('user_id = ? and project_id = ?',User.current.id,@bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5,10,7)).size>0)
user_id=params[:user_id]
bid_id=params[:bid_id]
sta=0
name=params[:new_form][:name]
description=params[:new_form][:description]
options={
:user_id=>user_id,
:state=>sta,
:name=>name,
:description=>description,
:bid_id=>bid_id
}
bid=Bid.findparams[:bid_id]
ifUser.current.admin?||User.current.member_of_course?(bid.courses.first)# modify by nwb
homework.bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id not in (:users)",{:role_id=>[5,10],:users=>users}).joins(:user).where("users.login like '%#{q}%'")
course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{User.current.id}",{:role_id=>StudentRoles}).count!=0
ifUser.current.logged?&&(User.current.admin?||(!Member.where('user_id = ? and project_id = ?',User.current.id,project.bid.courses.first.id).first.nil?&&(Member.where('user_id = ? and project_id = ?',User.current.id,project.bid.courses.first.id).first.roles&Role.where('id = ? or id = ?',3,7)).size>0)||project.user_id==User.current.id)
Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ? and #{Project.table_name}.created_on like '%#{time_now}%' and #{Project.table_name}.identifier not in
courses=Course.visible.joins(:course_status).where("#{Course.table_name}.created_at like '%#{time_now}%' and #{Course.table_name}.school_id is not NULL
# activities = Activity.find_by_sql("select distinct user_id from activities order by id DESC limit #{limit}" )
# activities.each { |activity|
@ -319,9 +401,10 @@ module WelcomeHelper
"show_documents"=>true,
"show_messages"=>true,
"show_news"=>true,
"show_bids"=>true
"show_bids"=>true,
"show_contest"=>true
}
activity.scope_select{|t|['changesets','documents','memos','messages','journals_for_messages','bids','news'].include?(t)?nil:'You may think you know what the following code does, may be. but why don"t you close this file and go play with something else, Now?'}
activity.scope_select{|t|['changesets','documents','memos','messages','journals_for_messages','bids','news','contestnotification'].include?(t)?nil:'You may think you know what the following code does, may be. but why don"t you close this file and go play with something else, Now?'}
#joins(Project.table_name).where("container_type = 'Project' and ")
joins("LEFT JOIN #{Project.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Project.table_name}.id = #{Attachment.table_name}.container_id and #{Project.table_name}.is_public=1 "+
" LEFT JOIN #{Document.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Document.table_name}.project_id in "+self.public_project_id+
" LEFT JOIN #{Issue.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Issue.table_name}.project_id in "+self.public_project_id+
" LEFT JOIN #{Version.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Version.table_name}.project_id in "+self.public_project_id+
" LEFT JOIN #{WikiPage.table_name} ON #{Attachment.table_name}.container_type='WikiPage' AND #{WikiPage.table_name}.parent_id in "+self.public_wiki_id+
" LEFT JOIN #{Message.table_name} ON #{Attachment.table_name}.container_type='Message' AND #{Message.table_name}.parent_id in "+self.public_board_id+
" LEFT JOIN #{Course.table_name} ON #{Attachment.table_name}.container_type='Course' AND #{Course.table_name}.is_public=1 "+
" LEFT JOIN #{News.table_name} ON #{Attachment.table_name}.container_type='News' AND (#{News.table_name}.project_id in "+self.public_project_id+" OR #{News.table_name}.course_id in "+self.public_course_id+")"+
" LEFT JOIN #{HomeworkAttach.table_name} ON #{Attachment.table_name}.container_type='HomeworkAttach' AND #{HomeworkAttach.table_name}.bid_id in "+self.public_bid_id)
}
# add by nwb
# 公开的项目id列表
defself.public_project_id
idlist="("
projects=Project.all_public
count=projects.count
foriin0...count
project=projects[i]
idlist+="'"+project.id.to_s+"'"
ifi!=count-1
idlist+=","
end
end
idlist+=")"
idlist
end
# add by nwb
# 公开的课程id列表
defself.public_course_id
idlist="("
courses=Course.all_public
count=courses.count
foriin0...count
course=courses[i]
idlist+="'"+course.id.to_s+"'"
ifi!=count-1
idlist=idlist+","
end
end
idlist+=")"
idlist
end
# add by nwb
# 公开的wiki id列表
defself.public_wiki_id
idlist="("
wikis=Wiki.where("project_id in "+public_project_id)
count=wikis.count
foriin0...count
wiki=wikis[i]
idlist+="'"+wiki.id.to_s+"'"
ifi!=count-1
idlist=idlist+","
end
end
idlist+=")"
idlist
end
# add by nwb
# 公开的board id列表
defself.public_board_id
idlist="("
boards=Board.where("project_id in "+public_project_id+" or course_id in "+public_course_id)
count=boards.count
foriin0...count
board=boards[i]
idlist+="'"+board.id.to_s+"'"
ifi!=count-1
idlist=idlist+","
end
end
idlist+=")"
idlist
end
# add by nwb
# 公开的bid id列表
defself.public_bid_id
idlist="("
bids=Bid.where("reward_type=3")
count=bids.count
foriin0...count
bid=bids[i]
idlist+="'"+bid.id.to_s+"'"
ifi!=count-1
idlist=idlist+","
end
end
idlist+=")"
idlist
end
# Returns an unsaved copy of the attachment
defcopy(attributes=nil)
copy=self.class.new
@ -119,7 +229,7 @@ class Attachment < ActiveRecord::Base
validates_format_of:class_period,:message=>"class period can only digital!",:with=>/^[1-9]\d*$/
has_many:members,:include=>[:principal,:roles],:conditions=>"#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}"
has_many:memberships,:class_name=>'Member'
has_many:member_principals,:class_name=>'Member',
:include=>:principal,
:conditions=>"#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE})"
course_statement<<" OR (#{Course.table_name}.lft > #{options[:course].lft} AND #{Course.table_name}.rgt < #{options[:course].rgt})"ifoptions[:with_subcourses]
base_statement="(#{course_statement}) AND (#{base_statement})"
@ -87,6 +102,8 @@ class JournalsForMessage < ActiveRecord::Base
end
elsifself.jour_type=='Project'
self.acts<<Activity.new(:user_id=>self.reply_id)
elsifself.jour_type=='Course'
self.acts<<Activity.new(:user_id=>self.reply_id)
else
end
end
@ -99,4 +116,30 @@ class JournalsForMessage < ActiveRecord::Base
count=find_all_by_m_parent_id(journals_for_messages.m_parent_id).count#(SELECT COUNT(*) FROM #{JournalsForMessage.table_name} WHERE m_parent_id = #{jfm_id} )
@ -30,6 +30,7 @@ class Project < ActiveRecord::Base
# Specific overidden Activities
belongs_to:homework_attach
has_many:time_entry_activities
has_many:members,:include=>[:principal,:roles],:conditions=>"#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}"
has_many:memberships,:class_name=>'Member'
@ -38,9 +39,9 @@ class Project < ActiveRecord::Base
:conditions=>"#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE})"