14cadd4f8SNickeau<?php /** @noinspection SpellCheckingInspection */ 24cadd4f8SNickeau 34cadd4f8SNickeauuse ComboStrap\Event; 404fd306cSNickeauuse ComboStrap\MarkupCacheDependencies; 504fd306cSNickeauuse ComboStrap\Meta\Field\PageH1; 604fd306cSNickeauuse ComboStrap\MetadataMutation; 74cadd4f8SNickeauuse ComboStrap\PageDescription; 84cadd4f8SNickeauuse ComboStrap\PagePath; 94cadd4f8SNickeauuse ComboStrap\PageTitle; 104cadd4f8SNickeauuse ComboStrap\ResourceName; 114cadd4f8SNickeau 124cadd4f8SNickeau 134cadd4f8SNickeaurequire_once(__DIR__ . '/../ComboStrap/PluginUtility.php'); 144cadd4f8SNickeau 154cadd4f8SNickeau/** 164cadd4f8SNickeau * Delete the cache 174cadd4f8SNickeau */ 184cadd4f8SNickeauclass action_plugin_combo_pageprimarymetamutation extends DokuWiki_Action_Plugin 194cadd4f8SNickeau{ 204cadd4f8SNickeau 214cadd4f8SNickeau 224cadd4f8SNickeau public const PRIMARY_META_MUTATION_EVENT_NAME = 'page_primary_meta_mutation'; 234cadd4f8SNickeau 244cadd4f8SNickeau public const PRIMARY_METAS = [PageTitle::PROPERTY_NAME, ResourceName::PROPERTY_NAME, PageH1::PROPERTY_NAME, PageDescription::DESCRIPTION_PROPERTY]; 254cadd4f8SNickeau 264cadd4f8SNickeau 274cadd4f8SNickeau public function register(Doku_Event_Handler $controller) 284cadd4f8SNickeau { 294cadd4f8SNickeau 304cadd4f8SNickeau /** 314cadd4f8SNickeau * create the async event 324cadd4f8SNickeau */ 3304fd306cSNickeau $controller->register_hook(MetadataMutation::PAGE_METADATA_MUTATION_EVENT, 'AFTER', $this, 'createPrimaryMetaMutation', array()); 344cadd4f8SNickeau 354cadd4f8SNickeau /** 364cadd4f8SNickeau * process the Async event 374cadd4f8SNickeau */ 384cadd4f8SNickeau $controller->register_hook(self::PRIMARY_META_MUTATION_EVENT_NAME, 'AFTER', $this, 'handlePrimaryMetaMutation'); 394cadd4f8SNickeau 404cadd4f8SNickeau } 414cadd4f8SNickeau 424cadd4f8SNickeau function createPrimaryMetaMutation($event) 434cadd4f8SNickeau { 444cadd4f8SNickeau 454cadd4f8SNickeau $data = $event->data; 464cadd4f8SNickeau 474cadd4f8SNickeau /** 484cadd4f8SNickeau * The slot cache are re-rendered only when the 494cadd4f8SNickeau * below property are updated 504cadd4f8SNickeau */ 514cadd4f8SNickeau if (!in_array($data["name"], self::PRIMARY_METAS)) return; 524cadd4f8SNickeau 534cadd4f8SNickeau Event::createEvent( 544cadd4f8SNickeau self::PRIMARY_META_MUTATION_EVENT_NAME, 55*9fc13f00Sgerardnico $data 564cadd4f8SNickeau ); 574cadd4f8SNickeau 584cadd4f8SNickeau 594cadd4f8SNickeau } 604cadd4f8SNickeau 614cadd4f8SNickeau function handlePrimaryMetaMutation($event) 624cadd4f8SNickeau { 634cadd4f8SNickeau 644cadd4f8SNickeau /** 654cadd4f8SNickeau * We need to re-render the slot 6604fd306cSNickeau * that are {@link \ComboStrap\MarkupCacheDependencies::PAGE_PRIMARY_META_DEPENDENCY} 674cadd4f8SNickeau * dependent 684cadd4f8SNickeau */ 694cadd4f8SNickeau $data = $event->data; 704cadd4f8SNickeau 714cadd4f8SNickeau /** 724cadd4f8SNickeau * Build the context back before getting the slots 734cadd4f8SNickeau */ 744cadd4f8SNickeau $path = $data[PagePath::getPersistentName()]; 7504fd306cSNickeau MarkupCacheDependencies::reRenderSideSlotIfNeeded( 764cadd4f8SNickeau $path, 7704fd306cSNickeau MarkupCacheDependencies::PAGE_PRIMARY_META_DEPENDENCY, 784cadd4f8SNickeau self::PRIMARY_META_MUTATION_EVENT_NAME 794cadd4f8SNickeau ); 804cadd4f8SNickeau 814cadd4f8SNickeau } 824cadd4f8SNickeau 834cadd4f8SNickeau 844cadd4f8SNickeau} 854cadd4f8SNickeau 864cadd4f8SNickeau 874cadd4f8SNickeau 88