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