xref: /plugin/acknowledge/action/pagesave.php (revision c38b6ca85313c7f98e013ff1ce06b406d156a85b)
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