xref: /plugin/structpublish/action/publish.php (revision 9ab8cbae39a6ffa37705f745bc76916ea212a92b)
1c2f8a3c4SAnna Dabrowska<?php
2c2f8a3c4SAnna Dabrowska
3*9ab8cbaeSanndause dokuwiki\Extension\ActionPlugin;
4*9ab8cbaeSanndause dokuwiki\Extension\EventHandler;
5*9ab8cbaeSanndause dokuwiki\Extension\Event;
6e31c94d7SAndreas Gohruse dokuwiki\plugin\structpublish\meta\Constants;
7c2f8a3c4SAnna Dabrowska
8*9ab8cbaeSanndaclass action_plugin_structpublish_publish extends ActionPlugin
9c2f8a3c4SAnna Dabrowska{
108b0ba635SAndreas Gohr    /** @inheritDoc */
11*9ab8cbaeSannda    public function register(EventHandler $controller)
12c2f8a3c4SAnna Dabrowska    {
133b7236c0SAnna Dabrowska        $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'changeStatus');
14c2f8a3c4SAnna Dabrowska    }
15c2f8a3c4SAnna Dabrowska
168b0ba635SAndreas Gohr    /**
178b0ba635SAndreas Gohr     * Handle the publish button and version field
188b0ba635SAndreas Gohr     *
19*9ab8cbaeSannda     * @param Event $event
208b0ba635SAndreas Gohr     * @return void
21a42bec4dSAnna Dabrowska     * @throws Exception
228b0ba635SAndreas Gohr     */
23*9ab8cbaeSannda    public function changeStatus(Event $event)
24c2f8a3c4SAnna Dabrowska    {
25b5c0ae7fSAndreas Gohr        if ($event->data != 'show') {
26b5c0ae7fSAndreas Gohr            return;
27b5c0ae7fSAndreas Gohr        }
28e394901aSAnna Dabrowska
29e394901aSAnna Dabrowska        global $INPUT;
30a42bec4dSAnna Dabrowska
31e394901aSAnna Dabrowska        $in = $INPUT->arr('structpublish');
32a42bec4dSAnna Dabrowska        $action = key($in);
33a42bec4dSAnna Dabrowska        if (!$action || !in_array($action, [Constants::ACTION_PUBLISH, Constants::ACTION_APPROVE])) {
34e394901aSAnna Dabrowska            return;
35e394901aSAnna Dabrowska        }
36e394901aSAnna Dabrowska
373b7236c0SAnna Dabrowska        if (!checkSecurityToken()) return;
381b063be2SAnna Dabrowska
39a42bec4dSAnna Dabrowska        /** @var helper_plugin_structpublish_publish $helper */
403b7236c0SAnna Dabrowska        $helper = plugin_load('helper', 'structpublish_publish');
41a42bec4dSAnna Dabrowska        $newRevision = $helper->saveRevision(key($in), $INPUT->str('version'));
42a42bec4dSAnna Dabrowska
43a42bec4dSAnna Dabrowska        /** @var helper_plugin_structpublish_notify $notifyHelper */
44a42bec4dSAnna Dabrowska        $notifyHelper  = plugin_load('helper', 'structpublish_notify');
45a42bec4dSAnna Dabrowska        $notifyHelper->sendEmails($action, $newRevision);
468680d162SAnna Dabrowska    }
47c2f8a3c4SAnna Dabrowska}
48