17 import(
'lib.pkp.classes.plugins.ReportPlugin');
23 function register($category, $path, $mainContextId =
null) {
24 $success = parent::register($category, $path, $mainContextId);
35 return 'ViewReportPlugin';
39 return __(
'plugins.reports.views.displayName');
43 return __(
'plugins.reports.views.description');
53 __(
'plugins.reports.views.articleId'),
54 __(
'plugins.reports.views.articleTitle'),
56 __(
'plugins.reports.views.datePublished'),
57 __(
'plugins.reports.views.abstractViews'),
58 __(
'plugins.reports.views.galleyViews'),
60 $galleyLabels = array();
61 $galleyViews = array();
62 $galleyViewTotals = array();
63 $abstractViewCounts = array();
64 $issueIdentifications = array();
65 $issueDatesPublished = array();
66 $articleTitles = array();
67 $articleIssueIdentificationMap = array();
69 import(
'lib.pkp.classes.submission.PKPSubmission');
72 'contextId' => $context->getId(),
73 'status' => STATUS_PUBLISHED,
75 foreach ($submissionsIterator as $submission) {
76 $articleId = $submission->getId();
77 $issueId = $submission->getCurrentPublication()->getData(
'issueId');
81 $abstractViewCounts[$articleId] = $submission->getViews();
83 $articleIssueIdentificationMap[$articleId] = $issueId;
84 if (!isset($issueIdentifications[$issueId])) {
85 $issue = $issueDao->getById($issueId);
86 $issueIdentifications[$issueId] = $issue->getIssueIdentification();
87 $issueDatesPublished[$issueId] = $issue->getDatePublished();
92 $galleys = $submission->getGalleys();
93 $galleyViews[$articleId] = array();
94 $galleyViewTotals[$articleId] = 0;
95 foreach ($galleys as $galley) {
96 $label = $galley->getGalleyLabel();
97 $i = array_search($label, $galleyLabels);
99 $i = count($galleyLabels);
100 $galleyLabels[] = $label;
105 $galleyViews[$articleId] = array_pad($galleyViews[$articleId], count($galleyLabels),
'');
107 $views = $galley->getViews();
108 $galleyViews[$articleId][$i] = $views;
109 $galleyViewTotals[$articleId] += $views;
113 header(
'content-type: text/comma-separated-values');
114 header(
'content-disposition: attachment; filename=views-' . date(
'Ymd') .
'.csv');
115 $fp = fopen(
'php://output',
'wt');
117 fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
118 fputcsv($fp, array_merge($columns, $galleyLabels));
120 ksort($abstractViewCounts);
121 $dateFormatShort = $context->getLocalizedDateFormatShort();
122 foreach ($abstractViewCounts as $articleId => $abstractViewCount) {
125 $articleTitles[$articleId],
126 $issueIdentifications[$articleIssueIdentificationMap[$articleId]],
127 strftime($dateFormatShort, strtotime($issueDatesPublished[$articleIssueIdentificationMap[$articleId]])),
129 $galleyViewTotals[$articleId]
132 fputcsv($fp, array_merge($values, $galleyViews[$articleId]));