|
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