xref: /plugin/structpublish/action/save.php (revision 97a87056b0ba063a39712885fe4846032d10ff1a)
19413dce6SAnna Dabrowska<?php
29413dce6SAnna Dabrowska
39413dce6SAnna Dabrowskause dokuwiki\plugin\struct\meta\StructException;
49413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants;
59413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision;
69413dce6SAnna Dabrowska
79413dce6SAnna Dabrowska/**
89413dce6SAnna Dabrowska * Action component to handle page save
99413dce6SAnna Dabrowska */
10*97a87056SAnna Dabrowskaclass action_plugin_structpublish_save extends DokuWiki_Action_Plugin
119413dce6SAnna Dabrowska{
129413dce6SAnna Dabrowska    /** @inheritDoc */
139413dce6SAnna Dabrowska    public function register(Doku_Event_Handler $controller)
149413dce6SAnna Dabrowska    {
159413dce6SAnna Dabrowska        $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handleSave');
169413dce6SAnna Dabrowska    }
179413dce6SAnna Dabrowska
189413dce6SAnna Dabrowska    /**
199413dce6SAnna Dabrowska     * Handle the page save event to store revision meta data
209413dce6SAnna Dabrowska     *
219413dce6SAnna Dabrowska     * @param Doku_Event $event
229413dce6SAnna Dabrowska     * @return void
239413dce6SAnna Dabrowska     */
249413dce6SAnna Dabrowska    public function handleSave(Doku_Event $event)
259413dce6SAnna Dabrowska    {
269413dce6SAnna Dabrowska        /** @var helper_plugin_structpublish_db $dbHelper */
279413dce6SAnna Dabrowska        $dbHelper = plugin_load('helper', 'structpublish_db');
289413dce6SAnna Dabrowska
299413dce6SAnna Dabrowska        $id = $event->data['id'];
309413dce6SAnna Dabrowska
319413dce6SAnna Dabrowska        if (!$dbHelper->isPublishable()) {
329413dce6SAnna Dabrowska            return;
339413dce6SAnna Dabrowska        }
349413dce6SAnna Dabrowska
359413dce6SAnna Dabrowska        $revision = new Revision($dbHelper->getDB(), $id, $event->data['newRevision']);
369413dce6SAnna Dabrowska        $revision->setStatus(Constants::STATUS_DRAFT);
379413dce6SAnna Dabrowska
389413dce6SAnna Dabrowska        try {
399413dce6SAnna Dabrowska            $revision->save();
409413dce6SAnna Dabrowska        } catch(StructException $e) {
419413dce6SAnna Dabrowska            msg($e->getMessage(), -1);
429413dce6SAnna Dabrowska        }
439413dce6SAnna Dabrowska    }
449413dce6SAnna Dabrowska}
45