1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeauuse action_plugin_combo_metaprocessing; 6*04fd306cSNickeauuse dokuwiki\Extension\Event; 7*04fd306cSNickeau 8*04fd306cSNickeauclass MetadataMutation 9*04fd306cSNickeau{ 10*04fd306cSNickeau /** 11*04fd306cSNickeau * When the value of a metadata has changed, an event is created 12*04fd306cSNickeau */ 13*04fd306cSNickeau public const PAGE_METADATA_MUTATION_EVENT = "PAGE_METADATA_MUTATION_EVENT"; 14*04fd306cSNickeau public const NEW_VALUE_ATTRIBUTE = "new_value"; 15*04fd306cSNickeau const OLD_VALUE_ATTRIBUTE = "old_value"; 16*04fd306cSNickeau const NAME_ATTRIBUTE = "name"; 17*04fd306cSNickeau const PATH_ATTRIBUTE = PagePath::PROPERTY_NAME; 18*04fd306cSNickeau 19*04fd306cSNickeau /** 20*04fd306cSNickeau * 21*04fd306cSNickeau * Metadata modification can happen: 22*04fd306cSNickeau * * on the whole set (ie after rendering the meta on references for instance) 23*04fd306cSNickeau * * or for scalar mutation 24*04fd306cSNickeau * 25*04fd306cSNickeau * This function is then used in two places. 26*04fd306cSNickeau * 27*04fd306cSNickeau * @param string $attribute 28*04fd306cSNickeau * @param $valueBefore 29*04fd306cSNickeau * @param $valueAfter 30*04fd306cSNickeau * @param Path $wikiPath 31*04fd306cSNickeau * @return void 32*04fd306cSNickeau * 33*04fd306cSNickeau * TODO: The data is now store dependent 34*04fd306cSNickeau * * Can we also pass the store to decode 35*04fd306cSNickeau * * or do we pass just the objects 36*04fd306cSNickeau */ 37*04fd306cSNickeau public static function notifyMetadataMutation(string $attribute, $valueBefore, $valueAfter, Path $wikiPath) 38*04fd306cSNickeau { 39*04fd306cSNickeau if ($valueAfter !== $valueBefore) { 40*04fd306cSNickeau /** 41*04fd306cSNickeau * Event 42*04fd306cSNickeau */ 43*04fd306cSNickeau $eventData = [ 44*04fd306cSNickeau self::NAME_ATTRIBUTE => $attribute, 45*04fd306cSNickeau self::NEW_VALUE_ATTRIBUTE => $valueAfter, 46*04fd306cSNickeau self::OLD_VALUE_ATTRIBUTE => $valueBefore, 47*04fd306cSNickeau self::PATH_ATTRIBUTE => $wikiPath->toAbsoluteId() 48*04fd306cSNickeau ]; 49*04fd306cSNickeau Event::createAndTrigger(self::PAGE_METADATA_MUTATION_EVENT, $eventData); 50*04fd306cSNickeau } 51*04fd306cSNickeau } 52*04fd306cSNickeau} 53