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