|
27 | 27 | use APP\core\Services;
|
28 | 28 | use APP\facades\Repo;
|
29 | 29 | use APP\publication\Publication;
|
| 30 | +use APP\services\StatsPublicationService; |
30 | 31 | use APP\statistics\StatisticsHelper;
|
31 | 32 | use PKP\facades\Locale;
|
| 33 | +use PKP\galley\Galley; |
32 | 34 | use PKP\submission\PKPSubmission;
|
33 | 35 |
|
34 | 36 | class Submission extends PKPSubmission
|
@@ -223,27 +225,28 @@ public function getLocalizedGalleys()
|
223 | 225 | */
|
224 | 226 | public function getTotalGalleyViews()
|
225 | 227 | {
|
226 |
| - $fileIds = []; |
227 |
| - $publications = $this->getPublishedPublications(); |
228 |
| - foreach ($publications as $publication) { |
229 |
| - foreach ($publication->getData('galleys') as $galley) { |
230 |
| - $file = $galley->getFile(); |
231 |
| - if (!$galley->getRemoteUrl() && $file && !in_array($file->getId(), $fileIds)) { |
232 |
| - $fileIds[] = $file->getId(); |
233 |
| - } |
234 |
| - } |
| 228 | + $submissionFileIds = collect($this->getPublishedPublications()) |
| 229 | + ->flatMap(fn (Publication $publication) => $publication->getData('galleys')->all()) |
| 230 | + ->map(fn (Galley $submissionFileId) => (int) $submissionFileId->getData('submissionFileId')) |
| 231 | + ->unique() |
| 232 | + ->filter(fn (int $submissionFileId) => (bool) $submissionFileId) |
| 233 | + ->all(); |
| 234 | + if (!count($submissionFileIds)) { |
| 235 | + return 0; |
235 | 236 | }
|
| 237 | + |
236 | 238 | $filters = [
|
237 | 239 | 'dateStart' => StatisticsHelper::STATISTICS_EARLIEST_DATE,
|
238 | 240 | 'dateEnd' => date('Y-m-d', strtotime('yesterday')),
|
239 |
| - 'contextIds' => [$this->getData('contextId')], |
240 |
| - 'fileIds' => $fileIds, |
| 241 | + 'contextIds' => [$this->getData('contextId')] |
241 | 242 | ];
|
242 |
| - $metrics = Services::get('publicationStats') |
| 243 | + /** @var StatsPublicationService $publicationStats */ |
| 244 | + $publicationStats = Services::get('publicationStats'); |
| 245 | + return (int) $publicationStats |
243 | 246 | ->getQueryBuilder($filters)
|
244 |
| - ->getSum([]) |
| 247 | + ->filterBySubmissionFiles($submissionFileIds) |
| 248 | + ->getSum() |
245 | 249 | ->value('metric');
|
246 |
| - return $metrics ? $metrics : 0; |
247 | 250 | }
|
248 | 251 |
|
249 | 252 | /**
|
|
0 commit comments