1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeau/** 6*04fd306cSNickeau * @deprecated - use the metadata/page properties instead 7*04fd306cSNickeau */ 8*04fd306cSNickeauclass CacheTag 9*04fd306cSNickeau{ 10*04fd306cSNickeau 11*04fd306cSNickeau public const MARKUP = "cache"; 12*04fd306cSNickeau public const EXPIRATION_ATTRIBUTE = "expiration"; 13*04fd306cSNickeau public const PARSING_STATE_UNSUCCESSFUL = "unsuccessful"; 14*04fd306cSNickeau public const PARSING_STATUS = "status"; 15*04fd306cSNickeau public const PARSING_STATE_SUCCESSFUL = "successful"; 16*04fd306cSNickeau 17*04fd306cSNickeau 18*04fd306cSNickeau public static function handle(TagAttributes $attributes): array 19*04fd306cSNickeau { 20*04fd306cSNickeau 21*04fd306cSNickeau $cronExpression = $attributes->getValue(self::EXPIRATION_ATTRIBUTE); 22*04fd306cSNickeau $returnedArray = array( 23*04fd306cSNickeau PluginUtility::PAYLOAD => $cronExpression 24*04fd306cSNickeau ); 25*04fd306cSNickeau 26*04fd306cSNickeau try { 27*04fd306cSNickeau $requestPage = MarkupPath::createPageFromPathObject( 28*04fd306cSNickeau ExecutionContext::getActualOrCreateFromEnv()->getExecutingWikiPath() 29*04fd306cSNickeau ); 30*04fd306cSNickeau } catch (ExceptionNotFound $e) { 31*04fd306cSNickeau $message = "No markup executing. Cache expiration date could not be set"; 32*04fd306cSNickeau LogUtility::error($message, self::MARKUP); 33*04fd306cSNickeau return array( 34*04fd306cSNickeau PluginUtility::EXIT_CODE => self::PARSING_STATE_UNSUCCESSFUL, 35*04fd306cSNickeau PluginUtility::EXIT_MESSAGE => $message 36*04fd306cSNickeau ); 37*04fd306cSNickeau } 38*04fd306cSNickeau 39*04fd306cSNickeau try { 40*04fd306cSNickeau CacheExpirationFrequency::createForPage($requestPage) 41*04fd306cSNickeau ->setValue($cronExpression) 42*04fd306cSNickeau ->sendToWriteStore(); 43*04fd306cSNickeau } catch (ExceptionBadSyntax $e) { 44*04fd306cSNickeau $returnedArray[PluginUtility::EXIT_CODE] = self::PARSING_STATE_UNSUCCESSFUL; 45*04fd306cSNickeau $returnedArray[PluginUtility::EXIT_MESSAGE] = "The expression ($cronExpression) is not a valid expression"; 46*04fd306cSNickeau return $returnedArray; 47*04fd306cSNickeau } catch (ExceptionBadArgument $e) { 48*04fd306cSNickeau // It should not happen 49*04fd306cSNickeau $message = "Internal Error: The cache expiration date could not be stored: {$e->getMessage()}"; 50*04fd306cSNickeau LogUtility::error($message, self::MARKUP, $e); 51*04fd306cSNickeau $returnedArray[PluginUtility::EXIT_CODE] = self::PARSING_STATE_UNSUCCESSFUL; 52*04fd306cSNickeau $returnedArray[PluginUtility::EXIT_MESSAGE] = $message; 53*04fd306cSNickeau return $returnedArray; 54*04fd306cSNickeau } 55*04fd306cSNickeau 56*04fd306cSNickeau LogUtility::warning("The cache syntax component has been deprecated for the cache frequency metadata", CacheExpirationFrequency::PROPERTY_NAME); 57*04fd306cSNickeau 58*04fd306cSNickeau $returnedArray[PluginUtility::EXIT_CODE] = self::PARSING_STATE_SUCCESSFUL; 59*04fd306cSNickeau $returnedArray[PluginUtility::PAYLOAD] = $cronExpression; 60*04fd306cSNickeau return $returnedArray; 61*04fd306cSNickeau 62*04fd306cSNickeau } 63*04fd306cSNickeau 64*04fd306cSNickeau public static function renderXhtml(array $data): string 65*04fd306cSNickeau { 66*04fd306cSNickeau 67*04fd306cSNickeau if ($data[PluginUtility::EXIT_CODE] !== CacheTag::PARSING_STATE_SUCCESSFUL) { 68*04fd306cSNickeau $message = $data[PluginUtility::EXIT_MESSAGE]; 69*04fd306cSNickeau LogUtility::error($message, CacheExpirationFrequency::PROPERTY_NAME); 70*04fd306cSNickeau } 71*04fd306cSNickeau return ""; 72*04fd306cSNickeau 73*04fd306cSNickeau } 74*04fd306cSNickeau 75*04fd306cSNickeau public static function metadata($data) 76*04fd306cSNickeau { 77*04fd306cSNickeau 78*04fd306cSNickeau if ($data[PluginUtility::EXIT_CODE] === CacheTag::PARSING_STATE_SUCCESSFUL) { 79*04fd306cSNickeau $cronExpression = $data[PluginUtility::PAYLOAD]; 80*04fd306cSNickeau try { 81*04fd306cSNickeau $requestPage = MarkupPath::createFromRequestedPage(); 82*04fd306cSNickeau } catch (ExceptionNotFound $e) { 83*04fd306cSNickeau LogUtility::error("Unable to store the cache expiration date because no requested page", self::MARKUP, $e); 84*04fd306cSNickeau return; 85*04fd306cSNickeau } 86*04fd306cSNickeau try { 87*04fd306cSNickeau CacheExpirationFrequency::createForPage($requestPage) 88*04fd306cSNickeau ->setValue($cronExpression) 89*04fd306cSNickeau ->sendToWriteStore(); 90*04fd306cSNickeau } catch (ExceptionCompile $e) { 91*04fd306cSNickeau // should not happen as we have test for its validity 92*04fd306cSNickeau } 93*04fd306cSNickeau 94*04fd306cSNickeau } 95*04fd306cSNickeau 96*04fd306cSNickeau } 97*04fd306cSNickeau} 98