xref: /plugin/structpublish/action/save.php (revision 9ab8cbae39a6ffa37705f745bc76916ea212a92b)
19413dce6SAnna Dabrowska<?php
29413dce6SAnna Dabrowska
3*9ab8cbaeSanndause dokuwiki\Extension\ActionPlugin;
4*9ab8cbaeSanndause dokuwiki\Extension\EventHandler;
5*9ab8cbaeSanndause dokuwiki\Extension\Event;
69413dce6SAnna Dabrowskause dokuwiki\plugin\struct\meta\StructException;
706e440eaSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Assignments;
89413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants;
99413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision;
109413dce6SAnna Dabrowska
119413dce6SAnna Dabrowska/**
129413dce6SAnna Dabrowska * Action component to handle page save
139413dce6SAnna Dabrowska */
14*9ab8cbaeSanndaclass action_plugin_structpublish_save extends ActionPlugin
159413dce6SAnna Dabrowska{
169413dce6SAnna Dabrowska    /** @inheritDoc */
17*9ab8cbaeSannda    public function register(EventHandler $controller)
189413dce6SAnna Dabrowska    {
199413dce6SAnna Dabrowska        $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handleSave');
209413dce6SAnna Dabrowska    }
219413dce6SAnna Dabrowska
229413dce6SAnna Dabrowska    /**
239413dce6SAnna Dabrowska     * Handle the page save event to store revision meta data
249413dce6SAnna Dabrowska     *
25*9ab8cbaeSannda     * @param Event $event
269413dce6SAnna Dabrowska     * @return void
279413dce6SAnna Dabrowska     */
28*9ab8cbaeSannda    public function handleSave(Event $event)
299413dce6SAnna Dabrowska    {
309413dce6SAnna Dabrowska        /** @var helper_plugin_structpublish_db $dbHelper */
319413dce6SAnna Dabrowska        $dbHelper = plugin_load('helper', 'structpublish_db');
329413dce6SAnna Dabrowska
339413dce6SAnna Dabrowska        $id = $event->data['id'];
349413dce6SAnna Dabrowska
3506e440eaSAnna Dabrowska        $assignments = Assignments::getInstance();
3606e440eaSAnna Dabrowska        $assignments->updatePageAssignments($id);
3706e440eaSAnna Dabrowska
389413dce6SAnna Dabrowska        if (!$dbHelper->isPublishable()) {
399413dce6SAnna Dabrowska            return;
409413dce6SAnna Dabrowska        }
419413dce6SAnna Dabrowska
42b476f81dSAnna Dabrowska        $revision = new Revision($id, $event->data['newRevision']);
439413dce6SAnna Dabrowska        $revision->setStatus(Constants::STATUS_DRAFT);
449413dce6SAnna Dabrowska
459413dce6SAnna Dabrowska        try {
469413dce6SAnna Dabrowska            $revision->save();
479413dce6SAnna Dabrowska        } catch (StructException $e) {
489413dce6SAnna Dabrowska            msg($e->getMessage(), -1);
499413dce6SAnna Dabrowska        }
509413dce6SAnna Dabrowska    }
519413dce6SAnna Dabrowska}
52