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