xref: /plugin/structpublish/action/publish.php (revision a42bec4d89385b31db812c8b46b99cce7509efed)
1c2f8a3c4SAnna Dabrowska<?php
2c2f8a3c4SAnna Dabrowska
3e31c94d7SAndreas Gohruse dokuwiki\plugin\structpublish\meta\Constants;
4c2f8a3c4SAnna Dabrowska
5c2f8a3c4SAnna Dabrowskaclass action_plugin_structpublish_publish extends DokuWiki_Action_Plugin
6c2f8a3c4SAnna Dabrowska{
78b0ba635SAndreas Gohr    /** @inheritDoc */
8c2f8a3c4SAnna Dabrowska    public function register(Doku_Event_Handler $controller)
9c2f8a3c4SAnna Dabrowska    {
103b7236c0SAnna Dabrowska        $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'changeStatus');
11c2f8a3c4SAnna Dabrowska    }
12c2f8a3c4SAnna Dabrowska
138b0ba635SAndreas Gohr    /**
148b0ba635SAndreas Gohr     * Handle the publish button and version field
158b0ba635SAndreas Gohr     *
168b0ba635SAndreas Gohr     * @param Doku_Event $event
178b0ba635SAndreas Gohr     * @return void
18*a42bec4dSAnna Dabrowska     * @throws Exception
198b0ba635SAndreas Gohr     */
203b7236c0SAnna Dabrowska    public function changeStatus(Doku_Event $event)
21c2f8a3c4SAnna Dabrowska    {
22b5c0ae7fSAndreas Gohr        if ($event->data != 'show') {
23b5c0ae7fSAndreas Gohr            return;
24b5c0ae7fSAndreas Gohr        }
25e394901aSAnna Dabrowska
26e394901aSAnna Dabrowska        global $INPUT;
27*a42bec4dSAnna Dabrowska
28e394901aSAnna Dabrowska        $in = $INPUT->arr('structpublish');
29*a42bec4dSAnna Dabrowska        $action = key($in);
30*a42bec4dSAnna Dabrowska        if (!$action || !in_array($action, [Constants::ACTION_PUBLISH, Constants::ACTION_APPROVE])) {
31e394901aSAnna Dabrowska            return;
32e394901aSAnna Dabrowska        }
33e394901aSAnna Dabrowska
343b7236c0SAnna Dabrowska        if (!checkSecurityToken()) return;
351b063be2SAnna Dabrowska
36*a42bec4dSAnna Dabrowska        /** @var helper_plugin_structpublish_publish $helper */
373b7236c0SAnna Dabrowska        $helper = plugin_load('helper', 'structpublish_publish');
38*a42bec4dSAnna Dabrowska        $newRevision = $helper->saveRevision(key($in), $INPUT->str('version'));
39*a42bec4dSAnna Dabrowska
40*a42bec4dSAnna Dabrowska        /** @var helper_plugin_structpublish_notify $notifyHelper */
41*a42bec4dSAnna Dabrowska        $notifyHelper  = plugin_load('helper', 'structpublish_notify');
42*a42bec4dSAnna Dabrowska        $notifyHelper->sendEmails($action, $newRevision);
438680d162SAnna Dabrowska    }
44c2f8a3c4SAnna Dabrowska}
45