xref: /plugin/structpublish/action/publish.php (revision 939e6e3ca86690c99bc0cda50a62d61e0294ae7e)
1c2f8a3c4SAnna Dabrowska<?php
2c2f8a3c4SAnna Dabrowska
3c2f8a3c4SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision;
4c2f8a3c4SAnna Dabrowska
5c2f8a3c4SAnna Dabrowskaclass action_plugin_structpublish_publish extends DokuWiki_Action_Plugin
6c2f8a3c4SAnna Dabrowska{
7*939e6e3cSAnna Dabrowska    /** @var \helper_plugin_structpublish_db */
8*939e6e3cSAnna Dabrowska    protected $dbHelper;
9c2f8a3c4SAnna Dabrowska
10c2f8a3c4SAnna Dabrowska    /**
11c2f8a3c4SAnna Dabrowska     * @inheritDoc
12c2f8a3c4SAnna Dabrowska     */
13c2f8a3c4SAnna Dabrowska    public function register(Doku_Event_Handler $controller)
14c2f8a3c4SAnna Dabrowska    {
151b063be2SAnna Dabrowska        $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handleApprove');
16c2f8a3c4SAnna Dabrowska        $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handlePublish');
17c2f8a3c4SAnna Dabrowska    }
18c2f8a3c4SAnna Dabrowska
19c2f8a3c4SAnna Dabrowska    public function handlePublish(Doku_Event $event)
20c2f8a3c4SAnna Dabrowska    {
21c2f8a3c4SAnna Dabrowska        if ($event->data != 'show') return;
22e394901aSAnna Dabrowska
23*939e6e3cSAnna Dabrowska        $this->dbHelper = plugin_load('helper', 'structpublish_db');
24*939e6e3cSAnna Dabrowska
25e394901aSAnna Dabrowska        global $INPUT;
26e394901aSAnna Dabrowska        $in = $INPUT->arr('structpublish');
27*939e6e3cSAnna Dabrowska        if (!$in || !isset($in[$this->dbHelper::ACTION_PUBLISH])) {
28e394901aSAnna Dabrowska            return;
29e394901aSAnna Dabrowska        }
30e394901aSAnna Dabrowska
31e394901aSAnna Dabrowska        // FIXME prevent bumping published version
32c2f8a3c4SAnna Dabrowska
33c2f8a3c4SAnna Dabrowska        global $ID;
34c2f8a3c4SAnna Dabrowska        global $INFO;
35*939e6e3cSAnna Dabrowska        $sqlite = $this->dbHelper->getDB();
363449f9ceSAnna Dabrowska        $revision = new Revision($sqlite, $ID, $INFO['currentrev']);
37e394901aSAnna Dabrowska        // TODO do not autoincrement version, make it a string
38c2f8a3c4SAnna Dabrowska        $revision->setVersion($revision->getVersion() + 1);
39c2f8a3c4SAnna Dabrowska        $revision->setUser($_SERVER['REMOTE_USER']);
40c2f8a3c4SAnna Dabrowska        $revision->setStatus(Revision::STATUS_PUBLISHED);
41e394901aSAnna Dabrowska        $revision->setDate(time());
42c2f8a3c4SAnna Dabrowska
43c2f8a3c4SAnna Dabrowska        $revision->save();
44c2f8a3c4SAnna Dabrowska    }
451b063be2SAnna Dabrowska
461b063be2SAnna Dabrowska    public function handleApprove(Doku_Event $event)
471b063be2SAnna Dabrowska    {
481b063be2SAnna Dabrowska        if ($event->data != 'show') return;
491b063be2SAnna Dabrowska
50*939e6e3cSAnna Dabrowska        $this->dbHelper = plugin_load('helper', 'structpublish_db');
51*939e6e3cSAnna Dabrowska
521b063be2SAnna Dabrowska        global $INPUT;
531b063be2SAnna Dabrowska        $in = $INPUT->arr('structpublish');
54*939e6e3cSAnna Dabrowska        if (!$in || !isset($in[$this->dbHelper::ACTION_APPROVE])) {
551b063be2SAnna Dabrowska            return;
561b063be2SAnna Dabrowska        }
571b063be2SAnna Dabrowska
581b063be2SAnna Dabrowska        global $ID;
591b063be2SAnna Dabrowska        global $INFO;
60*939e6e3cSAnna Dabrowska        $sqlite = $this->dbHelper->getDB();
611b063be2SAnna Dabrowska        $revision = new Revision($sqlite, $ID, $INFO['currentrev']);
621b063be2SAnna Dabrowska        $revision->setVersion($revision->getVersion());
631b063be2SAnna Dabrowska        $revision->setUser($_SERVER['REMOTE_USER']);
641b063be2SAnna Dabrowska        $revision->setStatus(Revision::STATUS_APPROVED);
651b063be2SAnna Dabrowska        $revision->setDate(time());
661b063be2SAnna Dabrowska
671b063be2SAnna Dabrowska        $revision->save();
681b063be2SAnna Dabrowska    }
69c2f8a3c4SAnna Dabrowska}
70