Home › Super Admin › Reports
Reports
Platform-wide reporting across every hosted journal — manuscript submission counts/details, published-article counts/details plus article view-and-download tracking, an editorial-board directory, per-journal download statistics, a CRM/user-activity tracking search, and financial (payment) reporting. Legacy entry: main/adm.php's report / py_report / revTrack actions (class/adm.class.php admin-role dispatch), plus two report families (arst_report, act_report) that exist only in the sibling mainm/adm.php / mainn/adm.php dashboards, not in main/adm.php itself.
| Page | Status | E2E | Enhanced | Legacy Ref | Route | Roles |
|---|---|---|---|---|---|---|
| Submission Count Report | Full | Yes | filters | main/adm.php?_action=report&report_type=1 | /adm?_action=report&report_type=1 | Super Admin |
| Submission Details Report | Full | Yes | filters | main/adm.php?_action=report&report_type=2 | /adm?_action=report&report_type=2 | Super Admin |
| Published Articles Count Report | Full | Yes | export | main/adm.php?_action=report&report_type=3 | /adm?_action=report&report_type=3 | Super Admin |
| Published Articles Details Report | Full | Yes | sort | main/adm.php?_action=report&report_type=4 | /adm?_action=report&report_type=4 | Super Admin |
| Article Tracking Report | Full | Yes | sort | main/adm.php?_action=report&report_type=5 | /adm?_action=report&report_type=5 | Super Admin |
| Editorial Board Report | Pending | — | — | main/adm.php?_action=report&report_type=6 | /adm?_action=report&report_type=6 | Super Admin |
| Statistical Report | Full | Yes | charts | mainm/adm.php?_action=arst_report | /adm?_action=arst_report | Super Admin (mainm/adm.php only; also reachable by the restricted "report-only" account, contact code 3) |
| User Activity Report — Users Action | Pending | — | — | mainm/adm.php?_action=act_report&rtp=2 | /adm?_action=act_report&rtp=2 | Super Admin (mainm/adm.php & mainn/adm.php only — no main/adm.php case, same as the sibling Submission History row; also reachable by the restricted "report-only" account, contact code 3, on mainm since act_report is in its action whitelist) |
| User Activity Report — Submission History | Full | Yes | filters | mainm/adm.php?_action=act_report&rtp=1 | /adm?_action=act_report&rtp=1 | Super Admin (mainm/adm.php & mainn/adm.php only; also reachable by the restricted "report-only" account, contact code 3, on mainm) |
| Financial Report | Pending | — | — | main/adm.php?_action=py_report | /adm?_action=py_report | Super Admin (absent from mainm/adm.php) |
| Reviewers / Editors Report | Basic | Yes | — | main/adm.php?_action=revTrack | /adm?_action=revTrack | Super Admin (present & unconditionally linked on mainm/adm.php; gated by system setting adm_rev_track=1 on main/adm.php; absent from mainn/adm.php) |
| Overview Reports | New | Yes | — | — | /en/super-admin/reports/overview-reports | Super Admin |
Features
| Feature | Status | E2E | Description |
|---|---|---|---|
| Admin can run a per-journal submission count report with acceptance-rate and decision-time metrics | Full | Yes | Counts are scoped by journal multi-select and a limit-to-date-field + date range, mirroring legacy rev_limit semantics; results only appear after filters are applied. |
| Admin can view per-manuscript submission detail rows across all journals | Full | Yes | Journal and limit-to-date-field filters with sortable journal_title/submit_date/modify_date columns and pagination. |
| Admin can run an aggregate published-articles count report per journal | Full | Yes | Aggregate counts with journal/date filters, sort and pagination. |
| Admin can view per-article published-article detail rows including view/download engagement counts | Full | Yes | Per-article rows with journal + date filters and sortable engagement columns. |
| Admin can see per-article view and PDF-download tracking totals | Full | — | Legacy screen was hidden (URL-only, never linked); the port surfaces the totals inside the normal Articles Report. |
| Admin can inspect individual article-tracking hit events (view vs download type, timestamp, remote IP, referral URL) | Pending | — | Legacy admArticleTrackingReport (report.class.php:2143-2285) listed raw ju_article_tracking rows per hit; apps/web only shows aggregate counts — the raw hit log has no counterpart. |
| Admin can view a cross-journal editorial-board member directory report (name, role, speciality, contact info) | Pending | — | Legacy report_type=6 (JournalReport::getEdbReport) read-only platform-oversight listing, including its Excel export (edbReportExcel); distinct from per-journal board CRUD which lives in other segments. |
| Admin can run article view/download statistics grouped by journal and by country with date-range and journal filters | Full | Yes | Legacy grouped by journal/country/date from IP-resolved countries; a second unwired stub for the same concept exists at reports/stat-reports/page.tsx. |
| Admin can toggle journal-performance statistics between table and chart views, including a by-country visualization | New | Yes | Adds views/downloads numeric range filters and chart rendering with no legacy predecessor. |
| Admin can search the CRM user-activity log (contact actions joined to contacts) — legacy 'Users Action' tab | Pending | — | Legacy act_report&rtp=2 (default tab, CnActionReport over ju_contact_actions + ju_contacts, mainm/mainn only) has no apps/web counterpart; the system-settings Audit Logs screen is a different system audit trail. |
| Admin can search manuscript-tracking submission history with free-text 'search in' fields, journal and date filters | Full | Yes | An additional unwired stub of the same report exists at reports/submission-history/page.tsx (console.log handlers). |
| Admin can run a platform-wide financial/payment ledger report filtered by payment source (manuscript fees, reviewer honoraria, article purchases) | Pending | — | Legacy py_report (JUPaymentReport::manageActions/paymentReportResult, py_source filter — one continuous ledger view); apps/web only has per-manuscript author-payment panels in the publishing workflow, not a super-admin financial report. |
| Admin can run a reviewers/editors assignments report | Basic | Yes | Legacy version is gated by system setting adm_rev_track=1 on main/adm.php and includes an Excel export; neither gating nor data is present in the stub. |
| Admin can export report result sets to a spreadsheet file | Full | — | Export is only offered when filters are applied and results exist; legacy Editorial Board Excel export remains unported along with its report. |
| Admin can access an Overview Reports screen for the Reports & Analytics area | New | Yes | Recorded as New for claim-exactly-once accounting; Phase C/D must decide whether to wire or drop it. |
| A restricted 'report-only' super-admin account (contact code 3) can access only the dashboard, the report/arst_report/act_report reports, and its own password screen | Pending | — | Legacy mainm/adm.php exit()s before the action switch for juAdmUser==3 unless the action is in the whitelist ('', report, arst_report, act_report, pass); no equivalent restricted-report-viewer role exists in apps/web. |
One action, six report types, one hidden.
main/adm.php?_action=report renders a single form (JournalReport::admReportForm) with a report_type dropdown that dispatches to a materially different query/table per value — Submission Count (1), Submission Details (2), Published Articles Count (3), Published Articles Details (4), and Editorial Board (6) all appear as <option>s; report_type=5 (admArticleTrackingReport, per-article view/download tracking) is coded and reachable by setting the query param directly but is never rendered as a dropdown option or linked from anywhere in the app — kept as its own row since it renders a distinct screen, flagged here as hidden/undocumented. Cross-checked against apps/legacy/spec/superadmin/submission-details-report.md and published-articles-details-report.md, which independently confirm report types 2 and 4 as distinct features; the Excel-export variant of each (e.g. submission-details-report-excel.md) is a download of the same filtered result set, not a separate screen, so it isn't a separate row. This report action and its report_type switch are also present verbatim in mainm/adm.php (mainm/adm.php:404-410) and mainn/adm.php (mainn/adm.php:403-409) — reachable identically from all three dispatch files (and included in mainm/adm.php's "report-only" account whitelist, see the note below) — unlike py_report/arst_report/act_report/revTrack, which differ across dispatch files as documented in the rows and notes on this page.Three rows sourced from mainm/mainn, not main/adm.php.
arst_report and act_report have no case at all in main/adm.php's _action switch, but both are wired up with journalCode = 0 (platform-wide, matching the scoping pattern of every other row on this page) in mainm/adm.php and (for act_report) mainn/adm.php as well — the same "sourced from the sibling dashboard because main/adm.php's switch lacks the case" situation already documented on this segment's Subject Management and Content Management pages. act_report itself renders two materially different screens switched by its rtp GET param, printed as two visible tabs in CnActionReport::cnActionReportForm(): rtp=2 ("Users Action", the default whenever rtp is omitted) queries ju_contact_actions joined to ju_contacts with its own search fields/columns, while rtp=1 ("Submission History") queries ju_manu_tracking — hence the two separate rows above. rtp=1 is the code behind apps/legacy/spec/superadmin/submission-history-report.md ("User Activity Report — Submission History"), confirmed by the exact match between the spec's search/sort fields (ju_manu_tracking, "Search in" options, sort-by list) and class/cn.action.report.class.php; that same spec's "Inconsistency states" section independently corroborates the rtp=2/"Users Action" tab's existence and default status via its documented broken-email-link bug ("the report defaults to the other tab (Users Action)").The "report-only" super-admin account (mainm/adm.php only).
mainm/adm.php short-circuits to exit() before its _action switch whenever $_SESSION['juAdmUser__'] == 3, unless the action is one of "", "report", "arst_report", "act_report", "pass" — i.e. this restricted account's entire surface is the default dashboard, three of this module's reports, and its own password screen. Its dashboard menu still prints a revTrack link unconditionally alongside the whitelisted ones, but revTrack is not in the whitelist, so that link is a dead end (silent exit()) for this account — a genuine bug, not modeled as a separate page. main/adm.php and mainn/adm.php have no equivalent restricted-account gate.Financial Report's payment-source dropdown stays one row.
JUPaymentReport::paymentReportResult varies its joined columns by a py_source filter (manuscript fees / reviewer honoraria / article purchases — see apps/legacy/spec/payment/payment-roles-and-flows.md), but this is one continuous filtered ledger view submitted from one form, not separately linked screens, and no per-source spec exists — unlike the report_type dropdown above, kept as a single row.Not to be confused with editorial-board management.
"Editorial Board Report" is a read-only, cross-journal listing of board members (name, role, speciality, contact info) for platform oversight — distinct from the CRUD screens that manage a journal's own board membership, which live in the Journal Admin and Publishing Workflow segments (see those segments'
editorial-board pages).Reviewers/Editors Report search crashes on mainm/adm.php.
mainm/adm.php's revTrack case (mainm/adm.php:390-403) calls EditorManager::reviewersAssignments(), then, whenever the request carries search or excel_rv — the exact parameter names on the report's own "Go"/"Excel" submit buttons rendered inside reviewersAssignments()'s own view (view/editor.view.php:2304-2305 for the Classic theme, :2671-2672 for Modern) — additionally instantiates JournalReport and calls $repp->getReviewersReport($_PARAMS) (mainm/adm.php:399-401). JournalReport::getReviewersReport does not exist anywhere in class/report.class.php or anywhere else in apps/legacy/js (a full-tree search finds only the one call site at mainm/adm.php:401 and zero definitions) — the real handler for this data is EditorManager::getReviewersAssignments, already invoked internally by reviewersAssignments() itself when search is set (class/editor.class.php:4764-4773), on the pre-existing $rep (EditorManager) object, not the newly-created $repp (JournalReport) object. So submitting the report's own Search or Excel button on mainm/adm.php throws a PHP fatal "Call to undefined method JournalReport::getReviewersReport()" and crashes the request after partial output. main/adm.php's revTrack case (main/adm.php:275-286) has no equivalent second call and is unaffected; mainn/adm.php has no revTrack case at all. Flagged here as a genuine dead-code/fatal-error bug, not a separate screen.New pages (stage 2)
overview-reports is an unwired placeholder (filter form + Export are no-ops, hidden from the sidebar) with no legacy predecessor in the Reports module. Recorded as a New row for claim-exactly-once accounting; Phase C/D should decide whether to wire or drop it.