summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-06-12 19:13:25 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-06-12 19:13:25 +0000
commitf9ddb562d58ae98bcc69f74396b028cbc8cce0b1 (patch)
tree8019be9178fb3d14c764c04e3e3a5be955de1385 /app
parent136cdc765afda57b9be02704e52b27334da42c73 (diff)
downloadredmine-f9ddb562d58ae98bcc69f74396b028cbc8cce0b1.tar.gz
redmine-f9ddb562d58ae98bcc69f74396b028cbc8cce0b1.zip
Cleanup of finders with :conditions option.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11963 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/context_menus_controller.rb3
-rw-r--r--app/controllers/issues_controller.rb2
-rw-r--r--app/controllers/messages_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/controllers/repositories_controller.rb19
-rw-r--r--app/controllers/sys_controller.rb6
-rw-r--r--app/controllers/users_controller.rb2
-rw-r--r--app/controllers/versions_controller.rb10
-rw-r--r--app/helpers/queries_helper.rb2
-rw-r--r--app/helpers/versions_helper.rb7
-rw-r--r--app/models/issue.rb15
-rw-r--r--app/models/issue_query.rb67
-rw-r--r--app/models/repository.rb25
-rw-r--r--app/models/repository/bazaar.rb14
-rw-r--r--app/models/repository/cvs.rb21
-rw-r--r--app/models/repository/git.rb17
-rw-r--r--app/models/wiki.rb4
-rw-r--r--app/views/users/show.html.erb2
18 files changed, 104 insertions, 116 deletions
diff --git a/app/controllers/context_menus_controller.rb b/app/controllers/context_menus_controller.rb
index d78ef3d3e..8f6fc1cb4 100644
--- a/app/controllers/context_menus_controller.rb
+++ b/app/controllers/context_menus_controller.rb
@@ -71,8 +71,7 @@ class ContextMenusController < ApplicationController
end
def time_entries
- @time_entries = TimeEntry.all(
- :conditions => {:id => params[:ids]}, :include => :project)
+ @time_entries = TimeEntry.where(:id => params[:ids]).preload(:project).to_a
(render_404; return) unless @time_entries.present?
@projects = @time_entries.collect(&:project).compact.uniq
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 327530009..0546db36b 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -301,7 +301,7 @@ class IssuesController < ApplicationController
end
def destroy
- @hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f
+ @hours = TimeEntry.where(:issue_id => @issues.map(&:id)).sum(:hours).to_f
if @hours > 0
case params[:todo]
when 'destroy'
diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb
index ad9107639..585101fbd 100644
--- a/app/controllers/messages_controller.rb
+++ b/app/controllers/messages_controller.rb
@@ -35,7 +35,7 @@ class MessagesController < ApplicationController
page = params[:page]
# Find the page of the requested reply
if params[:r] && page.nil?
- offset = @topic.children.count(:conditions => ["#{Message.table_name}.id < ?", params[:r].to_i])
+ offset = @topic.children.where("#{Message.table_name}.id < ?", params[:r].to_i).count
page = 1 + offset / REPLIES_PER_PAGE
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 4b1befdd5..968898411 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -155,7 +155,7 @@ class ProjectsController < ApplicationController
@total_issues_by_tracker = Issue.visible.where(cond).count(:group => :tracker)
if User.current.allowed_to?(:view_time_entries, @project)
- @total_hours = TimeEntry.visible.sum(:hours, :include => :project, :conditions => cond).to_f
+ @total_hours = TimeEntry.visible.where(cond).sum(:hours).to_f
end
@key = User.current.rss_key
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 0e4f4821f..2db9c3f92 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -352,15 +352,18 @@ class RepositoriesController < ApplicationController
@date_to = Date.today
@date_from = @date_to << 11
@date_from = Date.civil(@date_from.year, @date_from.month, 1)
- commits_by_day = Changeset.count(
- :all, :group => :commit_date,
- :conditions => ["repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
+ commits_by_day = Changeset.
+ where("repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to).
+ group(:commit_date).
+ count
commits_by_month = [0] * 12
commits_by_day.each {|c| commits_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
- changes_by_day = Change.count(
- :all, :group => :commit_date, :include => :changeset,
- :conditions => ["#{Changeset.table_name}.repository_id = ? AND #{Changeset.table_name}.commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to])
+ changes_by_day = Change.
+ joins(:changeset).
+ where("#{Changeset.table_name}.repository_id = ? AND #{Changeset.table_name}.commit_date BETWEEN ? AND ?", repository.id, @date_from, @date_to).
+ group(:commit_date).
+ count
changes_by_month = [0] * 12
changes_by_day.each {|c| changes_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
@@ -393,10 +396,10 @@ class RepositoriesController < ApplicationController
end
def graph_commits_per_author(repository)
- commits_by_author = Changeset.count(:all, :group => :committer, :conditions => ["repository_id = ?", repository.id])
+ commits_by_author = Changeset.where("repository_id = ?", repository.id).group(:committer).count
commits_by_author.to_a.sort! {|x, y| x.last <=> y.last}
- changes_by_author = Change.count(:all, :group => :committer, :include => :changeset, :conditions => ["#{Changeset.table_name}.repository_id = ?", repository.id])
+ changes_by_author = Change.joins(:changeset).where("#{Changeset.table_name}.repository_id = ?", repository.id).group(:committer).count
h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o}
fields = commits_by_author.collect {|r| r.first}
diff --git a/app/controllers/sys_controller.rb b/app/controllers/sys_controller.rb
index b822c5c1e..295f6c030 100644
--- a/app/controllers/sys_controller.rb
+++ b/app/controllers/sys_controller.rb
@@ -19,11 +19,7 @@ class SysController < ActionController::Base
before_filter :check_enabled
def projects
- p = Project.active.has_module(:repository).find(
- :all,
- :include => :repository,
- :order => "#{Project.table_name}.identifier"
- )
+ p = Project.active.has_module(:repository).order("#{Project.table_name}.identifier").preload(:repository).all
# extra_info attribute from repository breaks activeresource client
render :xml => p.to_xml(
:only => [:id, :identifier, :name, :is_public, :status],
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 3ea65c7aa..4d89e04f5 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -60,7 +60,7 @@ class UsersController < ApplicationController
def show
# show projects based on current user visibility
- @memberships = @user.memberships.all(:conditions => Project.visible_condition(User.current))
+ @memberships = @user.memberships.where(Project.visible_condition(User.current)).all
events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10)
@events_by_day = events.group_by(&:event_date)
diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb
index f159f7ecc..aa5beb0f9 100644
--- a/app/controllers/versions_controller.rb
+++ b/app/controllers/versions_controller.rb
@@ -46,11 +46,11 @@ class VersionsController < ApplicationController
@issues_by_version = {}
if @selected_tracker_ids.any? && @versions.any?
- issues = Issue.visible.all(
- :include => [:project, :status, :tracker, :priority, :fixed_version],
- :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)},
- :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id"
- )
+ issues = Issue.visible.
+ includes(:project, :tracker).
+ preload(:status, :priority, :fixed_version).
+ where(:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)).
+ order("#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
@issues_by_version = issues.group_by(&:fixed_version)
end
@versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb
index 2de6b0c90..d92c300e1 100644
--- a/app/helpers/queries_helper.rb
+++ b/app/helpers/queries_helper.rb
@@ -185,7 +185,7 @@ module QueriesHelper
if !params[:query_id].blank?
cond = "project_id IS NULL"
cond << " OR project_id = #{@project.id}" if @project
- @query = IssueQuery.find(params[:query_id], :conditions => cond)
+ @query = IssueQuery.where(cond).find(params[:query_id])
raise ::Unauthorized unless @query.visible?
@query.project = @project
session[:query] = {:id => @query.id, :project_id => @query.project_id}
diff --git a/app/helpers/versions_helper.rb b/app/helpers/versions_helper.rb
index 61cb382c5..082daabd3 100644
--- a/app/helpers/versions_helper.rb
+++ b/app/helpers/versions_helper.rb
@@ -35,12 +35,9 @@ module VersionsHelper
h = Hash.new {|k,v| k[v] = [0, 0]}
begin
# Total issue count
- Issue.count(:group => criteria,
- :conditions => ["#{Issue.table_name}.fixed_version_id = ?", version.id]).each {|c,s| h[c][0] = s}
+ Issue.where(:fixed_version_id => version.id).group(criteria).count.each {|c,s| h[c][0] = s}
# Open issues count
- Issue.count(:group => criteria,
- :include => :status,
- :conditions => ["#{Issue.table_name}.fixed_version_id = ? AND #{IssueStatus.table_name}.is_closed = ?", version.id, false]).each {|c,s| h[c][1] = s}
+ Issue.open.where(:fixed_version_id => version.id).group(criteria).count.each {|c,s| h[c][1] = s}
rescue ActiveRecord::RecordNotFound
# When grouping by an association, Rails throws this exception if there's no result (bug)
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index bdb9582b7..e68dc02f7 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -812,7 +812,7 @@ class Issue < ActiveRecord::Base
# Preloads relations for a collection of issues
def self.load_relations(issues)
if issues.any?
- relations = IssueRelation.all(:conditions => ["issue_from_id IN (:ids) OR issue_to_id IN (:ids)", {:ids => issues.map(&:id)}])
+ relations = IssueRelation.where("issue_from_id IN (:ids) OR issue_to_id IN (:ids)", :ids => issues.map(&:id)).all
issues.each do |issue|
issue.instance_variable_set "@relations", relations.select {|r| r.issue_from_id == issue.id || r.issue_to_id == issue.id}
end
@@ -822,7 +822,7 @@ class Issue < ActiveRecord::Base
# Preloads visible spent time for a collection of issues
def self.load_visible_spent_hours(issues, user=User.current)
if issues.any?
- hours_by_issue_id = TimeEntry.visible(user).sum(:hours, :group => :issue_id)
+ hours_by_issue_id = TimeEntry.visible(user).group(:issue_id).sum(:hours)
issues.each do |issue|
issue.instance_variable_set "@spent_hours", (hours_by_issue_id[issue.id] || 0)
end
@@ -850,7 +850,7 @@ class Issue < ActiveRecord::Base
# Finds an issue relation given its id.
def find_relation(relation_id)
- IssueRelation.find(relation_id, :conditions => ["issue_to_id = ? OR issue_from_id = ?", id, id])
+ IssueRelation.where("issue_to_id = ? OR issue_from_id = ?", id, id).find(relation_id)
end
# Returns all the other issues that depend on the issue
@@ -1350,12 +1350,11 @@ class Issue < ActiveRecord::Base
def self.update_versions(conditions=nil)
# Only need to update issues with a fixed_version from
# a different project and that is not systemwide shared
- Issue.scoped(:conditions => conditions).all(
- :conditions => "#{Issue.table_name}.fixed_version_id IS NOT NULL" +
+ Issue.includes(:project, :fixed_version).
+ where("#{Issue.table_name}.fixed_version_id IS NOT NULL" +
" AND #{Issue.table_name}.project_id <> #{Version.table_name}.project_id" +
- " AND #{Version.table_name}.sharing <> 'system'",
- :include => [:project, :fixed_version]
- ).each do |issue|
+ " AND #{Version.table_name}.sharing <> 'system'").
+ where(conditions).each do |issue|
next if issue.project.nil? || issue.fixed_version.nil?
unless issue.project.shared_versions.include?(issue.fixed_version)
issue.init_journal(User.current)
diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb
index cf6074f72..f9adf4697 100644
--- a/app/models/issue_query.rb
+++ b/app/models/issue_query.rb
@@ -226,7 +226,7 @@ class IssueQuery < Query
# Returns the issue count
def issue_count
- Issue.visible.count(:include => [:status, :project], :conditions => statement)
+ Issue.visible.joins(:status, :project).where(statement).count
rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new(e.message)
end
@@ -237,7 +237,12 @@ class IssueQuery < Query
if grouped?
begin
# Rails3 will raise an (unexpected) RecordNotFound if there's only a nil group value
- r = Issue.visible.count(:joins => joins_for_order_statement(group_by_statement), :group => group_by_statement, :include => [:status, :project], :conditions => statement)
+ r = Issue.visible.
+ joins(:status, :project).
+ where(statement).
+ joins(joins_for_order_statement(group_by_statement)).
+ group(group_by_statement).
+ count
rescue ActiveRecord::RecordNotFound
r = {nil => issue_count}
end
@@ -256,14 +261,16 @@ class IssueQuery < Query
def issues(options={})
order_option = [group_by_sort_order, options[:order]].flatten.reject(&:blank?)
- issues = Issue.visible.where(options[:conditions]).all(
- :include => ([:status, :project] + (options[:include] || [])).uniq,
- :conditions => statement,
- :order => order_option,
- :joins => joins_for_order_statement(order_option.join(',')),
- :limit => options[:limit],
- :offset => options[:offset]
- )
+ issues = Issue.visible.
+ joins(:status, :project).
+ where(statement).
+ includes(([:status, :project] + (options[:include] || [])).uniq).
+ where(options[:conditions]).
+ order(order_option).
+ joins(joins_for_order_statement(order_option.join(','))).
+ limit(options[:limit]).
+ offset(options[:offset]).
+ all
if has_column?(:spent_hours)
Issue.load_visible_spent_hours(issues)
@@ -280,12 +287,16 @@ class IssueQuery < Query
def issue_ids(options={})
order_option = [group_by_sort_order, options[:order]].flatten.reject(&:blank?)
- Issue.visible.scoped(:conditions => options[:conditions]).scoped(:include => ([:status, :project] + (options[:include] || [])).uniq,
- :conditions => statement,
- :order => order_option,
- :joins => joins_for_order_statement(order_option.join(',')),
- :limit => options[:limit],
- :offset => options[:offset]).find_ids
+ Issue.visible.
+ joins(:status, :project).
+ where(statement).
+ includes(([:status, :project] + (options[:include] || [])).uniq).
+ where(options[:conditions]).
+ order(order_option).
+ joins(joins_for_order_statement(order_option.join(','))).
+ limit(options[:limit]).
+ offset(options[:offset]).
+ find_ids
rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new(e.message)
end
@@ -293,13 +304,14 @@ class IssueQuery < Query
# Returns the journals
# Valid options are :order, :offset, :limit
def journals(options={})
- Journal.visible.all(
- :include => [:details, :user, {:issue => [:project, :author, :tracker, :status]}],
- :conditions => statement,
- :order => options[:order],
- :limit => options[:limit],
- :offset => options[:offset]
- )
+ Journal.visible.
+ joins(:issue => [:project, :status]).
+ where(statement).
+ order(options[:order]).
+ limit(options[:limit]).
+ offset(options[:offset]).
+ preload(:details, :user, {:issue => [:project, :author, :tracker, :status]}).
+ all
rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new(e.message)
end
@@ -307,10 +319,11 @@ class IssueQuery < Query
# Returns the versions
# Valid options are :conditions
def versions(options={})
- Version.visible.where(options[:conditions]).all(
- :include => :project,
- :conditions => project_statement
- )
+ Version.visible.
+ where(project_statement).
+ where(options[:conditions]).
+ includes(:project).
+ all
rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new(e.message)
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index b0e946365..de3ca99a6 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -249,19 +249,18 @@ class Repository < ActiveRecord::Base
# Default behaviour is to search in cached changesets
def latest_changesets(path, rev, limit=10)
if path.blank?
- changesets.find(
- :all,
- :include => :user,
- :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC",
- :limit => limit)
+ changesets.
+ reorder("#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC").
+ limit(limit).
+ preload(:user).
+ all
else
- filechanges.find(
- :all,
- :include => {:changeset => :user},
- :conditions => ["path = ?", path.with_leading_slash],
- :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC",
- :limit => limit
- ).collect(&:changeset)
+ filechanges.
+ where("path = ?", path.with_leading_slash).
+ reorder("#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC").
+ limit(limit).
+ preload(:changeset => :user).
+ collect(&:changeset)
end
end
@@ -393,7 +392,7 @@ class Repository < ActiveRecord::Base
end
def set_as_default?
- new_record? && project && !Repository.first(:conditions => {:project_id => project.id})
+ new_record? && project && Repository.where(:project_id => project.id).empty?
end
protected
diff --git a/app/models/repository/bazaar.rb b/app/models/repository/bazaar.rb
index ea20fe37d..135be83ca 100644
--- a/app/models/repository/bazaar.rb
+++ b/app/models/repository/bazaar.rb
@@ -68,15 +68,11 @@ class Repository::Bazaar < Repository
full_path = File.join(root_url, e.path)
e.size = File.stat(full_path).size if File.file?(full_path)
end
- c = Change.find(
- :first,
- :include => :changeset,
- :conditions => [
- "#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?",
- e.lastrev.revision,
- id
- ],
- :order => "#{Changeset.table_name}.revision DESC")
+ c = Change.
+ includes(:changeset).
+ where("#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", e.lastrev.revision, id).
+ order("#{Changeset.table_name}.revision DESC").
+ first
if c
e.lastrev.identifier = c.changeset.revision
e.lastrev.name = c.changeset.revision
diff --git a/app/models/repository/cvs.rb b/app/models/repository/cvs.rb
index 155ac10ed..7bae8c091 100644
--- a/app/models/repository/cvs.rb
+++ b/app/models/repository/cvs.rb
@@ -143,14 +143,11 @@ class Repository::Cvs < Repository
)
cmt = Changeset.normalize_comments(revision.message, repo_log_encoding)
author_utf8 = Changeset.to_utf8(revision.author, repo_log_encoding)
- cs = changesets.find(
- :first,
- :conditions => {
- :committed_on => tmp_time - time_delta .. tmp_time + time_delta,
- :committer => author_utf8,
- :comments => cmt
- }
- )
+ cs = changesets.where(
+ :committed_on => tmp_time - time_delta .. tmp_time + time_delta,
+ :committer => author_utf8,
+ :comments => cmt
+ ).first
# create a new changeset....
unless cs
# we use a temporaray revision number here (just for inserting)
@@ -185,10 +182,10 @@ class Repository::Cvs < Repository
end
# Renumber new changesets in chronological order
- Changeset.all(
- :order => 'committed_on ASC, id ASC',
- :conditions => ["repository_id = ? AND revision LIKE 'tmp%'", id]
- ).each do |changeset|
+ Changeset.
+ order('committed_on ASC, id ASC').
+ where("repository_id = ? AND revision LIKE 'tmp%'", id).
+ each do |changeset|
changeset.update_attribute :revision, next_revision_number
end
end # transaction
diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb
index c1f0020eb..9b3617ba9 100644
--- a/app/models/repository/git.rb
+++ b/app/models/repository/git.rb
@@ -191,13 +191,8 @@ class Repository::Git < Repository
offset = 0
revisions_copy = revisions.clone # revisions will change
while offset < revisions_copy.size
- recent_changesets_slice = changesets.find(
- :all,
- :conditions => [
- 'scmid IN (?)',
- revisions_copy.slice(offset, limit).map{|x| x.scmid}
- ]
- )
+ scmids = revisions_copy.slice(offset, limit).map{|x| x.scmid}
+ recent_changesets_slice = changesets.where(:scmid => scmids).all
# Subtract revisions that redmine already knows about
recent_revisions = recent_changesets_slice.map{|c| c.scmid}
revisions.reject!{|r| recent_revisions.include?(r.scmid)}
@@ -246,13 +241,7 @@ class Repository::Git < Repository
revisions = scm.revisions(path, nil, rev, :limit => limit, :all => false)
return [] if revisions.nil? || revisions.empty?
- changesets.find(
- :all,
- :conditions => [
- "scmid IN (?)",
- revisions.map!{|c| c.scmid}
- ]
- )
+ changesets.where(:scmid => revisions.map {|c| c.scmid}).all
end
def clear_extra_info_of_changesets
diff --git a/app/models/wiki.rb b/app/models/wiki.rb
index d58212d68..dabe19a4e 100644
--- a/app/models/wiki.rb
+++ b/app/models/wiki.rb
@@ -50,10 +50,10 @@ class Wiki < ActiveRecord::Base
@page_found_with_redirect = false
title = start_page if title.blank?
title = Wiki.titleize(title)
- page = pages.first(:conditions => ["LOWER(title) = LOWER(?)", title])
+ page = pages.where("LOWER(title) = LOWER(?)", title).first
if !page && !(options[:with_redirect] == false)
# search for a redirect
- redirect = redirects.first(:conditions => ["LOWER(title) = LOWER(?)", title])
+ redirect = redirects.where("LOWER(title) = LOWER(?)", title).first
if redirect
page = find_page(redirect.redirects_to, :with_redirect => false)
@page_found_with_redirect = true
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index 8c32235b7..3ac92fe07 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -40,7 +40,7 @@
:from => @events_by_day.keys.first %></h3>
<p>
-<%=l(:label_reported_issues)%>: <%= Issue.count(:conditions => ["author_id=?", @user.id]) %>
+<%=l(:label_reported_issues)%>: <%= Issue.where(:author_id => @user.id).count %>
</p>
<div id="activity">