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