Open Journal Systems  3.3.0
PKPUsageStatsReportPlugin.inc.php
1 <?php
2 
17 import('lib.pkp.classes.plugins.ReportPlugin');
18 
19 abstract class PKPUsageStatsReportPlugin extends ReportPlugin {
20 
24  function register($category, $path, $mainContextId = null) {
25  $success = parent::register($category, $path, $mainContextId);
26  $this->addLocaleData();
27  return $success;
28  }
29 
33  function getName() {
34  return 'usageStatsReportPlugin';
35  }
36 
40  function getDisplayName() {
41  return __('plugins.reports.usageStats.report.displayName');
42  }
43 
47  function getDescription() {
48  return __('plugins.reports.usageStats.report.description');
49  }
50 
54  function display($args, $request) {
55  $router = $request->getRouter();
56  $context = $router->getContext($request);
57 
58  $metricType = $this->getMetricTypes();
59 
60  import('classes.statistics.StatisticsHelper');
61  $statsHelper = new StatisticsHelper();
62  $columnNames = $statsHelper->getColumnNames();
63  // Make sure we aggregate by month instead of day.
64  unset($columnNames[STATISTICS_DIMENSION_DAY]);
65  $columns = array_keys($columnNames);
66 
67  $reportArgs = array(
68  'metricType' => $metricType,
69  'columns' => $columns,
70  'filters' => json_encode(array(STATISTICS_DIMENSION_CONTEXT_ID => $context->getId())),
71  'orderBy' => json_encode(array(STATISTICS_DIMENSION_MONTH => STATISTICS_ORDER_ASC))
72  );
73 
74  $request->redirect(null, null, 'tools', 'generateReport', $reportArgs);
75  }
76 
80  function getMetrics($metricType = null, $columns = null, $filters = null, $orderBy = null, $range = null) {
81  // This plug-in uses the MetricsDAO to store metrics. So we simply
82  // delegate there.
83  $metricsDao = DAORegistry::getDAO('MetricsDAO'); /* @var $metricsDao MetricsDAO */
84  return $metricsDao->getMetrics($metricType, $columns, $filters, $orderBy, $range);
85  }
86 
90  function getMetricDisplayType($metricType) {
91  return __('plugins.reports.usageStats.metricType');
92  }
93 
97  function getMetricFullName($metricType) {
98  return __('plugins.reports.usageStats.metricType.full');
99  }
100 
104  function getDefaultReportTemplates($metricTypes = null) {
105  $reports = array();
106  $pluginMetricTypes = $this->getMetricTypes();
107  if (is_null($metricTypes)) $metricTypes = $pluginMetricTypes;
108 
109  if (!$this->isMetricTypeValid($metricTypes)) return $reports;
110 
111  // Context index page views.
112  $columns = array(STATISTICS_DIMENSION_ASSOC_TYPE,
113  STATISTICS_DIMENSION_CONTEXT_ID,
114  STATISTICS_DIMENSION_MONTH,
115  STATISTICS_DIMENSION_COUNTRY);
116 
117  $filter = array(STATISTICS_DIMENSION_ASSOC_TYPE => Application::getContextAssocType());
118 
119  // We allow the subclasses to define the name locale key.
120  $reports[] = array('nameLocaleKey' => '',
121  'metricType' => $metricTypes, 'columns' => $columns, 'filter' => $filter,
122  'aggregationColumns' => $this->getAggregationColumns());
123 
124  return $reports;
125  }
126 
127 
131  function getOptionalColumns($metricType) {
132  if (!$this->isMetricTypeValid($metricType)) return array();
133  return array(
134  STATISTICS_DIMENSION_CITY,
135  STATISTICS_DIMENSION_REGION
136  );
137  }
138 
139 
140  //
141  // Protected methods.
142  //
149  protected function getAggregationColumns() {
150  return array(STATISTICS_DIMENSION_COUNTRY,
151  STATISTICS_DIMENSION_REGION,
152  STATISTICS_DIMENSION_CITY,
153  STATISTICS_DIMENSION_MONTH,
154  STATISTICS_DIMENSION_DAY);
155  }
156 
163  protected function isMetricTypeValid($metricType) {
164  $pluginMetricTypes = $this->getMetricTypes();
165  if (!is_array($metricType)) $metricType = array($metricType);
166 
167  // Check if the plugin supports the passed metric types.
168  $intersection = array_intersect($metricType, $pluginMetricTypes);
169  return !empty($intersection);
170  }
171 }
172 
PKPUsageStatsReportPlugin\getAggregationColumns
getAggregationColumns()
Definition: PKPUsageStatsReportPlugin.inc.php:149
PKPUsageStatsReportPlugin\getDefaultReportTemplates
getDefaultReportTemplates($metricTypes=null)
Definition: PKPUsageStatsReportPlugin.inc.php:104
PKPUsageStatsReportPlugin\display
display($args, $request)
Definition: PKPUsageStatsReportPlugin.inc.php:54
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PKPUsageStatsReportPlugin
OJS default statistics report plugin (and metrics provider)
Definition: PKPUsageStatsReportPlugin.inc.php:19
PKPUsageStatsReportPlugin\getDisplayName
getDisplayName()
Definition: PKPUsageStatsReportPlugin.inc.php:40
StatisticsHelper
Statistics helper class.
Definition: StatisticsHelper.inc.php:21
ReportPlugin\getMetricTypes
getMetricTypes()
Definition: ReportPlugin.inc.php:50
PKPUsageStatsReportPlugin\getDescription
getDescription()
Definition: PKPUsageStatsReportPlugin.inc.php:47
PKPUsageStatsReportPlugin\getMetricDisplayType
getMetricDisplayType($metricType)
Definition: PKPUsageStatsReportPlugin.inc.php:90
Application\getContextAssocType
static getContextAssocType()
Definition: Application.inc.php:199
ReportPlugin
Abstract class for report plugins.
Definition: ReportPlugin.inc.php:18
PKPUsageStatsReportPlugin\getName
getName()
Definition: PKPUsageStatsReportPlugin.inc.php:33
PKPUsageStatsReportPlugin\getOptionalColumns
getOptionalColumns($metricType)
Definition: PKPUsageStatsReportPlugin.inc.php:131
Plugin\$request
$request
Definition: Plugin.inc.php:68
Plugin\addLocaleData
addLocaleData($locale=null)
Definition: Plugin.inc.php:454
PKPUsageStatsReportPlugin\getMetricFullName
getMetricFullName($metricType)
Definition: PKPUsageStatsReportPlugin.inc.php:97
PKPUsageStatsReportPlugin\getMetrics
getMetrics($metricType=null, $columns=null, $filters=null, $orderBy=null, $range=null)
Definition: PKPUsageStatsReportPlugin.inc.php:80
PKPUsageStatsReportPlugin\isMetricTypeValid
isMetricTypeValid($metricType)
Definition: PKPUsageStatsReportPlugin.inc.php:163