1*c38b6ca8SAnna Dabrowska<?php 2*c38b6ca8SAnna Dabrowska 3*c38b6ca8SAnna Dabrowska/** 4*c38b6ca8SAnna Dabrowska * DokuWiki Plugin acknowledge (Action Component) 5*c38b6ca8SAnna Dabrowska * 6*c38b6ca8SAnna Dabrowska * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 7*c38b6ca8SAnna Dabrowska * @author Andreas Gohr, Anna Dabrowska <dokuwiki@cosmocode.de> 8*c38b6ca8SAnna Dabrowska */ 9*c38b6ca8SAnna Dabrowska 10*c38b6ca8SAnna Dabrowskause dokuwiki\Extension\ActionPlugin; 11*c38b6ca8SAnna Dabrowskause dokuwiki\Extension\EventHandler; 12*c38b6ca8SAnna Dabrowskause dokuwiki\Extension\Event; 13*c38b6ca8SAnna Dabrowska 14*c38b6ca8SAnna Dabrowskaclass action_plugin_acknowledge_pagesave extends ActionPlugin 15*c38b6ca8SAnna Dabrowska{ 16*c38b6ca8SAnna Dabrowska /** @inheritDoc */ 17*c38b6ca8SAnna Dabrowska public function register(EventHandler $controller) 18*c38b6ca8SAnna Dabrowska { 19*c38b6ca8SAnna Dabrowska $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handlePageSave'); 20*c38b6ca8SAnna Dabrowska } 21*c38b6ca8SAnna Dabrowska 22*c38b6ca8SAnna Dabrowska /** 23*c38b6ca8SAnna Dabrowska * Manage page meta data 24*c38b6ca8SAnna Dabrowska * 25*c38b6ca8SAnna Dabrowska * Store page last modified date 26*c38b6ca8SAnna Dabrowska * Handle page deletions 27*c38b6ca8SAnna Dabrowska * Handle page creations 28*c38b6ca8SAnna Dabrowska * 29*c38b6ca8SAnna Dabrowska * @param Event $event 30*c38b6ca8SAnna Dabrowska * @param $param 31*c38b6ca8SAnna Dabrowska */ 32*c38b6ca8SAnna Dabrowska public function handlePageSave(Event $event, $param) 33*c38b6ca8SAnna Dabrowska { 34*c38b6ca8SAnna Dabrowska /** @var helper_plugin_acknowledge $helper */ 35*c38b6ca8SAnna Dabrowska $helper = plugin_load('helper', 'acknowledge'); 36*c38b6ca8SAnna Dabrowska 37*c38b6ca8SAnna Dabrowska if ($event->data['changeType'] === DOKU_CHANGE_TYPE_DELETE) { 38*c38b6ca8SAnna Dabrowska $helper->removePage($event->data['id']); // this cascades to assignments 39*c38b6ca8SAnna Dabrowska } elseif ($event->data['changeType'] !== DOKU_CHANGE_TYPE_MINOR_EDIT) { 40*c38b6ca8SAnna Dabrowska $helper->storePageDate($event->data['id'], $event->data['newRevision'], $event->data['newContent']); 41*c38b6ca8SAnna Dabrowska } 42*c38b6ca8SAnna Dabrowska 43*c38b6ca8SAnna Dabrowska // Remove page assignees here because the syntax might have been removed 44*c38b6ca8SAnna Dabrowska // they are readded on metadata rendering if still there 45*c38b6ca8SAnna Dabrowska $helper->clearPageAssignments($event->data['id']); 46*c38b6ca8SAnna Dabrowska 47*c38b6ca8SAnna Dabrowska if ($event->data['changeType'] === DOKU_CHANGE_TYPE_CREATE) { 48*c38b6ca8SAnna Dabrowska // new pages need to have their auto assignments updated based on the existing patterns 49*c38b6ca8SAnna Dabrowska $helper->setAutoAssignees($event->data['id']); 50*c38b6ca8SAnna Dabrowska } 51*c38b6ca8SAnna Dabrowska } 52*c38b6ca8SAnna Dabrowska} 53