xref: /plugin/structpublish/action/publish.php (revision e394901a0f7c5b3f8d056c0f4d754d974f4f8413)
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    {
15c2f8a3c4SAnna Dabrowska        $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handlePublish');
16c2f8a3c4SAnna Dabrowska    }
17c2f8a3c4SAnna Dabrowska
18c2f8a3c4SAnna Dabrowska    public function handlePublish(Doku_Event $event)
19c2f8a3c4SAnna Dabrowska    {
20c2f8a3c4SAnna Dabrowska        if ($event->data != 'show') return;
21*e394901aSAnna Dabrowska
22*e394901aSAnna Dabrowska        global $INPUT;
23*e394901aSAnna Dabrowska        $in = $INPUT->arr('structpublish');
24*e394901aSAnna Dabrowska        if (!$in || !$in[\helper_plugin_structpublish_permissions::ACTION_PUBLISH]) {
25*e394901aSAnna Dabrowska            return;
26*e394901aSAnna Dabrowska        }
27*e394901aSAnna Dabrowska
28*e394901aSAnna Dabrowska        // FIXME prevent bumping published version
29c2f8a3c4SAnna Dabrowska
30c2f8a3c4SAnna Dabrowska        $this->permissionsHelper = plugin_load('helper', 'structpublish_permissions');
31c2f8a3c4SAnna Dabrowska
32c2f8a3c4SAnna Dabrowska        global $ID;
33c2f8a3c4SAnna Dabrowska        global $INFO;
34c2f8a3c4SAnna Dabrowska        $sqlite = $this->permissionsHelper->getDb();
353449f9ceSAnna Dabrowska        $revision = new Revision($sqlite, $ID, $INFO['currentrev']);
36*e394901aSAnna Dabrowska        // TODO do not autoincrement version, make it a string
37c2f8a3c4SAnna Dabrowska        $revision->setVersion($revision->getVersion() + 1);
38c2f8a3c4SAnna Dabrowska        $revision->setUser($_SERVER['REMOTE_USER']);
39c2f8a3c4SAnna Dabrowska        $revision->setStatus(Revision::STATUS_PUBLISHED);
40*e394901aSAnna Dabrowska        $revision->setDate(time());
41c2f8a3c4SAnna Dabrowska
42c2f8a3c4SAnna Dabrowska        $revision->save();
43c2f8a3c4SAnna Dabrowska    }
44c2f8a3c4SAnna Dabrowska}
45