@ -68,6 +68,106 @@ class Attachment < ActiveRecord::Base
before_save:be_user_score# user_score
after_destroy:delete_from_disk
# add by nwb
# 获取所有可公开的资源文件列表
scope:public_attachments,lambda{
#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)