xref: /plugin/combo/ComboStrap/CacheLog.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
14cadd4f8SNickeau<?php
24cadd4f8SNickeau
34cadd4f8SNickeau
44cadd4f8SNickeaunamespace ComboStrap;
54cadd4f8SNickeau
64cadd4f8SNickeau
74cadd4f8SNickeauclass CacheLog
84cadd4f8SNickeau{
94cadd4f8SNickeau
104cadd4f8SNickeau
114cadd4f8SNickeau    const TIMESTAMP_ATT = "timestamp";
124cadd4f8SNickeau    const EVENT_ATT = "event";
134cadd4f8SNickeau    const PATH_ATT = "path";
144cadd4f8SNickeau    const EXTENSION_ATT = "extension";
154cadd4f8SNickeau    const OPERATION_ATT = "operation";
164cadd4f8SNickeau    const MESSAGE_ATT = "message";
174cadd4f8SNickeau    const CACHE_LOG_TABLE = 'cache_log';
184cadd4f8SNickeau    const CACHE_LOG_ATTRIBUTES = [
194cadd4f8SNickeau        self::TIMESTAMP_ATT,
204cadd4f8SNickeau        self::EVENT_ATT,
214cadd4f8SNickeau        self::PATH_ATT,
224cadd4f8SNickeau        self::EXTENSION_ATT,
234cadd4f8SNickeau        self::OPERATION_ATT,
244cadd4f8SNickeau        self::MESSAGE_ATT
254cadd4f8SNickeau    ];
26*04fd306cSNickeau    const CANONICAL = "support";
274cadd4f8SNickeau
28*04fd306cSNickeau    public static function deleteCacheIfExistsAndLog(IFetcher $fetcher, string $event, string $message)
294cadd4f8SNickeau    {
30*04fd306cSNickeau
31*04fd306cSNickeau        try {
32*04fd306cSNickeau            $contentCachePath = $fetcher->getContentCachePath();
33*04fd306cSNickeau        } catch (ExceptionNotSupported $e) {
34*04fd306cSNickeau            return;
35*04fd306cSNickeau        }
36*04fd306cSNickeau
37*04fd306cSNickeau        if (!FileSystems::exists($contentCachePath)) {
38*04fd306cSNickeau            return;
39*04fd306cSNickeau        }
40*04fd306cSNickeau
41*04fd306cSNickeau        FileSystems::delete($contentCachePath);
424cadd4f8SNickeau        try {
434cadd4f8SNickeau            CacheLog::logCacheEvent(
444cadd4f8SNickeau                $event,
45*04fd306cSNickeau                $contentCachePath->toAbsoluteId(),
46*04fd306cSNickeau                $fetcher->getMime()->getExtension(),
474cadd4f8SNickeau                CacheManager::CACHE_DELETION,
484cadd4f8SNickeau                $message
494cadd4f8SNickeau            );
50*04fd306cSNickeau        } catch (ExceptionCompile $e) {
514cadd4f8SNickeau            // should not fired
524cadd4f8SNickeau            LogUtility::log2file("Error while logging cache event. Error: {$e->getMessage()}");
534cadd4f8SNickeau        }
54*04fd306cSNickeau
55*04fd306cSNickeau
564cadd4f8SNickeau    }
574cadd4f8SNickeau
58*04fd306cSNickeau    public static function renderCacheAndLog(IFetcherSource $fetcher, string $event, string $message)
594cadd4f8SNickeau    {
60*04fd306cSNickeau        try {
61*04fd306cSNickeau            $fetcher->process();
62*04fd306cSNickeau        } catch (ExceptionNotSupported $e) {
63*04fd306cSNickeau            return;
64*04fd306cSNickeau        }
654cadd4f8SNickeau        try {
664cadd4f8SNickeau            CacheLog::logCacheEvent(
674cadd4f8SNickeau                $event,
68*04fd306cSNickeau                $fetcher->getSourcePath()->toAbsoluteId(),
69*04fd306cSNickeau                $fetcher->getMime()->getExtension(),
704cadd4f8SNickeau                CacheManager::CACHE_CREATION,
714cadd4f8SNickeau                $message
724cadd4f8SNickeau            );
73*04fd306cSNickeau        } catch (ExceptionCompile $e) {
744cadd4f8SNickeau            // should not fired
754cadd4f8SNickeau            LogUtility::log2file("Error while logging cache event. Error: {$e->getMessage()}");
764cadd4f8SNickeau        }
774cadd4f8SNickeau    }
784cadd4f8SNickeau
794cadd4f8SNickeau    /**
80*04fd306cSNickeau     * @throws ExceptionCompile
814cadd4f8SNickeau     */
824cadd4f8SNickeau    public static function logCacheEvent(string $event, string $path, string $format, string $operation, string $message)
834cadd4f8SNickeau    {
844cadd4f8SNickeau
854cadd4f8SNickeau
864cadd4f8SNickeau        $row = array(
874cadd4f8SNickeau            self::TIMESTAMP_ATT => date("c"),
884cadd4f8SNickeau            self::EVENT_ATT => $event,
894cadd4f8SNickeau            self::PATH_ATT => $path,
904cadd4f8SNickeau            self::EXTENSION_ATT => $format,
914cadd4f8SNickeau            self::OPERATION_ATT => $operation,
924cadd4f8SNickeau            self::MESSAGE_ATT => $message
934cadd4f8SNickeau        );
944cadd4f8SNickeau        $request = Sqlite::createOrGetBackendSqlite()
954cadd4f8SNickeau            ->createRequest()
964cadd4f8SNickeau            ->setTableRow(self::CACHE_LOG_TABLE, $row);
974cadd4f8SNickeau        try {
984cadd4f8SNickeau            $request
994cadd4f8SNickeau                ->execute();
1004cadd4f8SNickeau        } finally {
1014cadd4f8SNickeau            $request->close();
1024cadd4f8SNickeau        }
1034cadd4f8SNickeau
1044cadd4f8SNickeau
1054cadd4f8SNickeau    }
1064cadd4f8SNickeau
1074cadd4f8SNickeau    /**
108*04fd306cSNickeau     * @throws ExceptionCompile
1094cadd4f8SNickeau     */
1104cadd4f8SNickeau    public static function getCacheLog(): array
1114cadd4f8SNickeau    {
1124cadd4f8SNickeau        $sqlite = Sqlite::createOrGetBackendSqlite();
1134cadd4f8SNickeau        if ($sqlite === null) {
114*04fd306cSNickeau            throw new ExceptionCompile("Sqlite is not available");
1154cadd4f8SNickeau        }
1164cadd4f8SNickeau
1174cadd4f8SNickeau
1184cadd4f8SNickeau        /**
1194cadd4f8SNickeau         * Execute
1204cadd4f8SNickeau         */
1214cadd4f8SNickeau        $attributes[] = DatabasePageRow::ROWID;
1224cadd4f8SNickeau        $attributes = array_merge($attributes, self::CACHE_LOG_ATTRIBUTES);
1234cadd4f8SNickeau        $select = Sqlite::createSelectFromTableAndColumns(self::CACHE_LOG_TABLE, $attributes);
1244cadd4f8SNickeau        $request = $sqlite->createRequest()
1254cadd4f8SNickeau            ->setQuery($select);
1264cadd4f8SNickeau        try {
1274cadd4f8SNickeau            return $request->execute()
1284cadd4f8SNickeau                ->getRows();
129*04fd306cSNickeau        } catch (ExceptionCompile $e) {
130*04fd306cSNickeau            throw new ExceptionCompile("Unable to get the cache log. Error:" . $e->getMessage(), self::CANONICAL, 0, $e);
1314cadd4f8SNickeau        } finally {
1324cadd4f8SNickeau            $request->close();
1334cadd4f8SNickeau        }
1344cadd4f8SNickeau
1354cadd4f8SNickeau    }
1364cadd4f8SNickeau
1374cadd4f8SNickeau}
138