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