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