xref: /plugin/combo/ComboStrap/CacheLog.php (revision 4cadd4f8c541149bdda95f080e38a6d4e3a640ca)
1*4cadd4f8SNickeau<?php
2*4cadd4f8SNickeau
3*4cadd4f8SNickeau
4*4cadd4f8SNickeaunamespace ComboStrap;
5*4cadd4f8SNickeau
6*4cadd4f8SNickeau
7*4cadd4f8SNickeauclass CacheLog
8*4cadd4f8SNickeau{
9*4cadd4f8SNickeau
10*4cadd4f8SNickeau
11*4cadd4f8SNickeau    const TIMESTAMP_ATT = "timestamp";
12*4cadd4f8SNickeau    const EVENT_ATT = "event";
13*4cadd4f8SNickeau    const PATH_ATT = "path";
14*4cadd4f8SNickeau    const EXTENSION_ATT = "extension";
15*4cadd4f8SNickeau    const OPERATION_ATT = "operation";
16*4cadd4f8SNickeau    const MESSAGE_ATT = "message";
17*4cadd4f8SNickeau    const CACHE_LOG_TABLE = 'cache_log';
18*4cadd4f8SNickeau    const CACHE_LOG_ATTRIBUTES = [
19*4cadd4f8SNickeau        self::TIMESTAMP_ATT,
20*4cadd4f8SNickeau        self::EVENT_ATT,
21*4cadd4f8SNickeau        self::PATH_ATT,
22*4cadd4f8SNickeau        self::EXTENSION_ATT,
23*4cadd4f8SNickeau        self::OPERATION_ATT,
24*4cadd4f8SNickeau        self::MESSAGE_ATT
25*4cadd4f8SNickeau        ];
26*4cadd4f8SNickeau
27*4cadd4f8SNickeau    public static function deleteCacheIfExistsAndLog(PageCompilerDocument $outputDocument, string $event, string $message)
28*4cadd4f8SNickeau    {
29*4cadd4f8SNickeau        $instructionsFile = $outputDocument->getCachePath();
30*4cadd4f8SNickeau        if (FileSystems::exists($instructionsFile)) {
31*4cadd4f8SNickeau            FileSystems::delete($instructionsFile);
32*4cadd4f8SNickeau            try {
33*4cadd4f8SNickeau                CacheLog::logCacheEvent(
34*4cadd4f8SNickeau                    $event,
35*4cadd4f8SNickeau                    $outputDocument->getPage()->getPath()->toString(),
36*4cadd4f8SNickeau                    $outputDocument->getExtension(),
37*4cadd4f8SNickeau                    CacheManager::CACHE_DELETION,
38*4cadd4f8SNickeau                    $message
39*4cadd4f8SNickeau                );
40*4cadd4f8SNickeau            } catch (ExceptionCombo $e) {
41*4cadd4f8SNickeau                // should not fired
42*4cadd4f8SNickeau                LogUtility::log2file("Error while logging cache event. Error: {$e->getMessage()}");
43*4cadd4f8SNickeau            }
44*4cadd4f8SNickeau        }
45*4cadd4f8SNickeau    }
46*4cadd4f8SNickeau
47*4cadd4f8SNickeau    public static function renderCacheAndLog(PageCompilerDocument $outputDocument, string $event, string $message)
48*4cadd4f8SNickeau    {
49*4cadd4f8SNickeau        $outputDocument->process();
50*4cadd4f8SNickeau        try {
51*4cadd4f8SNickeau            CacheLog::logCacheEvent(
52*4cadd4f8SNickeau                $event,
53*4cadd4f8SNickeau                $outputDocument->getPage()->getPath()->toString(),
54*4cadd4f8SNickeau                $outputDocument->getExtension(),
55*4cadd4f8SNickeau                CacheManager::CACHE_CREATION,
56*4cadd4f8SNickeau                $message
57*4cadd4f8SNickeau            );
58*4cadd4f8SNickeau        } catch (ExceptionCombo $e) {
59*4cadd4f8SNickeau            // should not fired
60*4cadd4f8SNickeau            LogUtility::log2file("Error while logging cache event. Error: {$e->getMessage()}");
61*4cadd4f8SNickeau        }
62*4cadd4f8SNickeau    }
63*4cadd4f8SNickeau
64*4cadd4f8SNickeau    /**
65*4cadd4f8SNickeau     * @throws ExceptionCombo
66*4cadd4f8SNickeau     */
67*4cadd4f8SNickeau    public static function logCacheEvent(string $event, string $path, string $format, string $operation, string $message)
68*4cadd4f8SNickeau    {
69*4cadd4f8SNickeau
70*4cadd4f8SNickeau
71*4cadd4f8SNickeau        $row = array(
72*4cadd4f8SNickeau            self::TIMESTAMP_ATT => date("c"),
73*4cadd4f8SNickeau            self::EVENT_ATT => $event,
74*4cadd4f8SNickeau            self::PATH_ATT => $path,
75*4cadd4f8SNickeau            self::EXTENSION_ATT => $format,
76*4cadd4f8SNickeau            self::OPERATION_ATT => $operation,
77*4cadd4f8SNickeau            self::MESSAGE_ATT => $message
78*4cadd4f8SNickeau        );
79*4cadd4f8SNickeau        $request = Sqlite::createOrGetBackendSqlite()
80*4cadd4f8SNickeau            ->createRequest()
81*4cadd4f8SNickeau            ->setTableRow(self::CACHE_LOG_TABLE, $row);
82*4cadd4f8SNickeau        try {
83*4cadd4f8SNickeau            $request
84*4cadd4f8SNickeau                ->execute();
85*4cadd4f8SNickeau        } finally {
86*4cadd4f8SNickeau            $request->close();
87*4cadd4f8SNickeau        }
88*4cadd4f8SNickeau
89*4cadd4f8SNickeau
90*4cadd4f8SNickeau    }
91*4cadd4f8SNickeau
92*4cadd4f8SNickeau    /**
93*4cadd4f8SNickeau     * @throws ExceptionCombo
94*4cadd4f8SNickeau     */
95*4cadd4f8SNickeau    public static function getCacheLog(): array
96*4cadd4f8SNickeau    {
97*4cadd4f8SNickeau        $sqlite = Sqlite::createOrGetBackendSqlite();
98*4cadd4f8SNickeau        if ($sqlite === null) {
99*4cadd4f8SNickeau            throw new ExceptionCombo("Sqlite is not available");
100*4cadd4f8SNickeau        }
101*4cadd4f8SNickeau
102*4cadd4f8SNickeau
103*4cadd4f8SNickeau        /**
104*4cadd4f8SNickeau         * Execute
105*4cadd4f8SNickeau         */
106*4cadd4f8SNickeau        $attributes[] = DatabasePageRow::ROWID;
107*4cadd4f8SNickeau        $attributes = array_merge($attributes,self::CACHE_LOG_ATTRIBUTES);
108*4cadd4f8SNickeau        $select = Sqlite::createSelectFromTableAndColumns(self::CACHE_LOG_TABLE, $attributes);
109*4cadd4f8SNickeau        $request = $sqlite->createRequest()
110*4cadd4f8SNickeau            ->setQuery($select);
111*4cadd4f8SNickeau        try {
112*4cadd4f8SNickeau            return $request->execute()
113*4cadd4f8SNickeau                ->getRows();
114*4cadd4f8SNickeau        } catch (ExceptionCombo $e) {
115*4cadd4f8SNickeau            throw new ExceptionCombo("Unable to get the cache log. Error:" . $e->getMessage(),self::CANONICAL,0,$e);
116*4cadd4f8SNickeau        } finally {
117*4cadd4f8SNickeau            $request->close();
118*4cadd4f8SNickeau        }
119*4cadd4f8SNickeau
120*4cadd4f8SNickeau    }
121*4cadd4f8SNickeau
122*4cadd4f8SNickeau}
123