ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
PageMetricsRepositoryImpl.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
26
33{
34 public function __construct(private readonly ilDBInterface $db)
35 {
36 }
37
38 public function store(PageMetrics $pageMetrics): void
39 {
40 $this->db->replace(
41 'content_page_metrics',
42 [
43 'content_page_id' => ['integer', $pageMetrics->contentPageId()],
44 'page_id' => ['integer', $pageMetrics->pageId()],
45 'lang' => ['text', $pageMetrics->language()],
46 ],
47 [
48 'reading_time' => ['integer', $pageMetrics->readingTime()->minutes()],
49 ]
50 );
51 }
52
53 public function delete(PageMetrics $pageMetrics): void
54 {
55 $this->db->queryF(
56 'DELETE FROM content_page_metrics WHERE content_page_id = %s AND page_id = %s AND lang = %s',
57 ['integer', 'integer', 'text'],
58 [$pageMetrics->contentPageId(), $pageMetrics->pageId(), $pageMetrics->language()]
59 );
60 }
61
65 public function findBy(int $contentPageId, int $pageId, string $language): PageMetrics
66 {
67 $res = $this->db->queryF(
68 'SELECT * FROM content_page_metrics WHERE content_page_id = %s AND page_id = %s AND lang = %s',
69 ['integer', 'integer', 'text'],
70 [$contentPageId, $pageId, $language]
71 );
72 $row = $this->db->fetchAssoc($res);
73 if (is_array($row) && isset($row['content_page_id'])) {
74 return new PageMetrics(
75 (int) $row['content_page_id'],
76 (int) $row['page_id'],
77 $row['lang'],
78 new PageReadingTime((int) $row['reading_time'])
79 );
80 }
81
82 throw CouldNotFindPageMetrics::by($contentPageId, $pageId, $language);
83 }
84}
static by(int $contentPageId, int $pageId, string $language)
findBy(int $contentPageId, int $pageId, string $language)
@inheritDoc
Interface ilDBInterface.
$res
Definition: ltiservices.php:69