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