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