xref: /plugin/structpublish/action/publish.php (revision 1b063be2bba157e194f2f6e6f6eef66137461ea8)
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{
7c2f8a3c4SAnna Dabrowska    /** @var \helper_plugin_structpublish_permissions */
8c2f8a3c4SAnna Dabrowska    protected $permissionsHelper;
9c2f8a3c4SAnna Dabrowska
10c2f8a3c4SAnna Dabrowska    /**
11c2f8a3c4SAnna Dabrowska     * @inheritDoc
12c2f8a3c4SAnna Dabrowska     */
13c2f8a3c4SAnna Dabrowska    public function register(Doku_Event_Handler $controller)
14c2f8a3c4SAnna Dabrowska    {
15*1b063be2SAnna 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
23e394901aSAnna Dabrowska        global $INPUT;
24e394901aSAnna Dabrowska        $in = $INPUT->arr('structpublish');
25*1b063be2SAnna Dabrowska        if (!$in || !isset($in[\helper_plugin_structpublish_permissions::ACTION_PUBLISH])) {
26e394901aSAnna Dabrowska            return;
27e394901aSAnna Dabrowska        }
28e394901aSAnna Dabrowska
29e394901aSAnna Dabrowska        // FIXME prevent bumping published version
30c2f8a3c4SAnna Dabrowska
31c2f8a3c4SAnna Dabrowska        $this->permissionsHelper = plugin_load('helper', 'structpublish_permissions');
32c2f8a3c4SAnna Dabrowska
33c2f8a3c4SAnna Dabrowska        global $ID;
34c2f8a3c4SAnna Dabrowska        global $INFO;
35c2f8a3c4SAnna Dabrowska        $sqlite = $this->permissionsHelper->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    }
45*1b063be2SAnna Dabrowska
46*1b063be2SAnna Dabrowska    public function handleApprove(Doku_Event $event)
47*1b063be2SAnna Dabrowska    {
48*1b063be2SAnna Dabrowska        if ($event->data != 'show') return;
49*1b063be2SAnna Dabrowska
50*1b063be2SAnna Dabrowska        global $INPUT;
51*1b063be2SAnna Dabrowska        $in = $INPUT->arr('structpublish');
52*1b063be2SAnna Dabrowska        if (!$in || !isset($in[\helper_plugin_structpublish_permissions::ACTION_APPROVE])) {
53*1b063be2SAnna Dabrowska            return;
54*1b063be2SAnna Dabrowska        }
55*1b063be2SAnna Dabrowska
56*1b063be2SAnna Dabrowska        $this->permissionsHelper = plugin_load('helper', 'structpublish_permissions');
57*1b063be2SAnna Dabrowska
58*1b063be2SAnna Dabrowska        global $ID;
59*1b063be2SAnna Dabrowska        global $INFO;
60*1b063be2SAnna Dabrowska        $sqlite = $this->permissionsHelper->getDb();
61*1b063be2SAnna Dabrowska        $revision = new Revision($sqlite, $ID, $INFO['currentrev']);
62*1b063be2SAnna Dabrowska        $revision->setVersion($revision->getVersion());
63*1b063be2SAnna Dabrowska        $revision->setUser($_SERVER['REMOTE_USER']);
64*1b063be2SAnna Dabrowska        $revision->setStatus(Revision::STATUS_APPROVED);
65*1b063be2SAnna Dabrowska        $revision->setDate(time());
66*1b063be2SAnna Dabrowska
67*1b063be2SAnna Dabrowska        $revision->save();
68*1b063be2SAnna Dabrowska    }
69c2f8a3c4SAnna Dabrowska}
70