xref: /plugin/structpublish/action/save.php (revision 9413dce69dd07ebac0d2b1c19f70eabc6b84c3d0)
1*9413dce6SAnna Dabrowska<?php
2*9413dce6SAnna Dabrowska
3*9413dce6SAnna Dabrowskause dokuwiki\plugin\struct\meta\StructException;
4*9413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants;
5*9413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision;
6*9413dce6SAnna Dabrowska
7*9413dce6SAnna Dabrowska/**
8*9413dce6SAnna Dabrowska * Action component to handle page save
9*9413dce6SAnna Dabrowska */
10*9413dce6SAnna Dabrowskaclass action_plugin_structpublish_revision extends DokuWiki_Action_Plugin
11*9413dce6SAnna Dabrowska{
12*9413dce6SAnna Dabrowska    /** @inheritDoc */
13*9413dce6SAnna Dabrowska    public function register(Doku_Event_Handler $controller)
14*9413dce6SAnna Dabrowska    {
15*9413dce6SAnna Dabrowska        $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handleSave');
16*9413dce6SAnna Dabrowska    }
17*9413dce6SAnna Dabrowska
18*9413dce6SAnna Dabrowska    /**
19*9413dce6SAnna Dabrowska     * Handle the page save event to store revision meta data
20*9413dce6SAnna Dabrowska     *
21*9413dce6SAnna Dabrowska     * @param Doku_Event $event
22*9413dce6SAnna Dabrowska     * @return void
23*9413dce6SAnna Dabrowska     */
24*9413dce6SAnna Dabrowska    public function handleSave(Doku_Event $event)
25*9413dce6SAnna Dabrowska    {
26*9413dce6SAnna Dabrowska        /** @var helper_plugin_structpublish_db $dbHelper */
27*9413dce6SAnna Dabrowska        $dbHelper = plugin_load('helper', 'structpublish_db');
28*9413dce6SAnna Dabrowska
29*9413dce6SAnna Dabrowska        $id = $event->data['id'];
30*9413dce6SAnna Dabrowska
31*9413dce6SAnna Dabrowska        if (!$dbHelper->isPublishable()) {
32*9413dce6SAnna Dabrowska            return;
33*9413dce6SAnna Dabrowska        }
34*9413dce6SAnna Dabrowska
35*9413dce6SAnna Dabrowska        $revision = new Revision($dbHelper->getDB(), $id, $event->data['newRevision']);
36*9413dce6SAnna Dabrowska        $revision->setStatus(Constants::STATUS_DRAFT);
37*9413dce6SAnna Dabrowska
38*9413dce6SAnna Dabrowska        try {
39*9413dce6SAnna Dabrowska            $revision->save();
40*9413dce6SAnna Dabrowska        } catch(StructException $e) {
41*9413dce6SAnna Dabrowska            msg($e->getMessage(), -1);
42*9413dce6SAnna Dabrowska        }
43*9413dce6SAnna Dabrowska    }
44*9413dce6SAnna Dabrowska}
45