Class: Admin::ReportsController

Inherits:
StaffController
  • Object
show all
Defined in:
app/controllers/admin/reports_controller.rb

Constant Summary collapse

REPORTS_LIMIT =
50

Instance Method Summary collapse

Instance Method Details

#bulkObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/controllers/admin/reports_controller.rb', line 33

def bulk
  reports = []

  hijack do
    params[:reports].each do |report_type, report_params|
      args = parse_params(report_params)

      report = nil
      report = Report.find_cached(report_type, args) if (report_params[:cache])

      if report
        reports << report
      else
        report = Report.find(report_type, args)

        Report.cache(report) if (report_params[:cache]) && report

        if report.blank?
          report = Report._get(report_type, args)
          report.error = :not_found
        end

        reports << report
      end
    end

    render_json_dump(reports: reports)
  end
end

#indexObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/controllers/admin/reports_controller.rb', line 6

def index
  reports_methods =
    ["page_view_total_reqs"] +
      ApplicationRequest
        .req_types
        .keys
        .select { |r| r =~ /\Apage_view_/ && r !~ /mobile/ }
        .map { |r| r + "_reqs" } +
      Report.singleton_methods.grep(/\Areport_(?!about|storage_stats)/)

  reports =
    reports_methods.map do |name|
      type = name.to_s.gsub("report_", "")
      description = I18n.t("reports.#{type}.description", default: "")
      description_link = I18n.t("reports.#{type}.description_link", default: "")

      {
        type: type,
        title: I18n.t("reports.#{type}.title"),
        description: description.presence ? description : nil,
        description_link: description_link.presence ? description_link : nil,
      }
    end

  render_json_dump(reports: reports.sort_by { |report| report[:title] })
end

#showObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'app/controllers/admin/reports_controller.rb', line 63

def show
  report_type = params[:type]

  raise Discourse::NotFound unless report_type =~ /\A[a-z0-9\_]+\z/

  args = parse_params(params)

  report = nil
  report = Report.find_cached(report_type, args) if (params[:cache])

  return render_json_dump(report: report) if report

  hijack do
    report = Report.find(report_type, args)

    raise Discourse::NotFound if report.blank?

    Report.cache(report) if (params[:cache])

    render_json_dump(report: report)
  end
end