16 import(
'classes.handler.Handler');
17 import(
'lib.pkp.classes.core.JSONMessage');
18 import(
'classes.statistics.StatisticsHelper');
25 parent::__construct();
28 array(
'fetchReportGenerator',
'saveReportGenerator',
'fetchArticlesInfo',
'fetchRegions'));
34 function authorize($request, &$args, $roleAssignments) {
35 import(
'lib.pkp.classes.security.authorization.ContextAccessPolicy');
37 return parent::authorize($request, $args, $roleAssignments);
49 $reportGeneratorForm->initData();
51 $formContent = $reportGeneratorForm->fetch($request);
54 if ($request->getUserVar(
'refreshForm')) {
55 $json->setEvent(
'refreshForm', $formContent);
57 $json->setContent($formContent);
73 $reportGeneratorForm->readInputData();
75 if ($reportGeneratorForm->validate()) {
76 $reportUrl = $reportGeneratorForm->execute();
77 $json->setAdditionalAttributes(array(
'reportUrl' => $reportUrl));
79 $json->setStatus(
false);
95 $issueId = (int) $request->getUserVar(
'issueId');
96 import(
'lib.pkp.classes.core.JSONMessage');
101 $submissionsIterator =
Services::get(
'submission')->getMany([
102 'contextId' => $request->getContext()->getId(),
103 'issueIds' => $issueId,
105 $articlesInfo = array();
106 foreach ($submissionsIterator as $submission) {
107 $articlesInfo[] = array(
'id' => $submission->getId(),
'title' => $submission->getLocalizedTitle());
124 $countryId = (string) $request->getUserVar(
'countryId');
125 import(
'lib.pkp.classes.core.JSONMessage');
129 $geoLocationTool = $statsHelper->getGeoLocationTool();
130 if ($geoLocationTool) {
131 $regions = $geoLocationTool->getRegions($countryId);
132 if (!empty($regions)) {
133 $regionsData = array();
134 foreach ($regions as $id => $name) {
135 $regionsData[] = array(
'id' => $id,
'name' => $name);
149 parent::setupTemplate($request);
151 LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_APP_SUBMISSION);
163 $router = $request->getRouter();
164 $context = $router->getContext($request);
166 $metricType = $request->getUserVar(
'metricType');
168 $metricType = $context->getDefaultMetricType();
172 $reportPlugin = $statsHelper->getReportPluginByMetricType($metricType);
173 if (!is_scalar($metricType) || !$reportPlugin) {
177 $columns = $reportPlugin->getColumns($metricType);
178 $columns = array_flip(array_intersect(array_flip($statsHelper->getColumnNames()), $columns));
180 $optionalColumns = $reportPlugin->getOptionalColumns($metricType);
181 $optionalColumns = array_flip(array_intersect(array_flip($statsHelper->getColumnNames()), $optionalColumns));
183 $objects = $reportPlugin->getObjectTypes($metricType);
184 $objects = array_flip(array_intersect(array_flip($statsHelper->getObjectTypeString()), $objects));
186 $defaultReportTemplates = $reportPlugin->getDefaultReportTemplates($metricType);
190 if (isset($columns[STATISTICS_DIMENSION_FILE_TYPE])) {
191 $fileTypes = $statsHelper->getFileTypeString();
197 if (isset($columns[STATISTICS_DIMENSION_METRIC_TYPE])) unset($columns[STATISTICS_DIMENSION_METRIC_TYPE]);
199 $reportTemplate = $request->getUserVar(
'reportTemplate');
201 import(
'controllers.statistics.form.ReportGeneratorForm');
203 $objects, $fileTypes, $metricType, $defaultReportTemplates, $reportTemplate);
205 return $reportGeneratorForm;