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{ 7*939e6e3cSAnna Dabrowska /** @var \helper_plugin_structpublish_db */ 8*939e6e3cSAnna Dabrowska protected $dbHelper; 9c2f8a3c4SAnna Dabrowska 10c2f8a3c4SAnna Dabrowska /** 11c2f8a3c4SAnna Dabrowska * @inheritDoc 12c2f8a3c4SAnna Dabrowska */ 13c2f8a3c4SAnna Dabrowska public function register(Doku_Event_Handler $controller) 14c2f8a3c4SAnna Dabrowska { 151b063be2SAnna 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 23*939e6e3cSAnna Dabrowska $this->dbHelper = plugin_load('helper', 'structpublish_db'); 24*939e6e3cSAnna Dabrowska 25e394901aSAnna Dabrowska global $INPUT; 26e394901aSAnna Dabrowska $in = $INPUT->arr('structpublish'); 27*939e6e3cSAnna Dabrowska if (!$in || !isset($in[$this->dbHelper::ACTION_PUBLISH])) { 28e394901aSAnna Dabrowska return; 29e394901aSAnna Dabrowska } 30e394901aSAnna Dabrowska 31e394901aSAnna Dabrowska // FIXME prevent bumping published version 32c2f8a3c4SAnna Dabrowska 33c2f8a3c4SAnna Dabrowska global $ID; 34c2f8a3c4SAnna Dabrowska global $INFO; 35*939e6e3cSAnna Dabrowska $sqlite = $this->dbHelper->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 } 451b063be2SAnna Dabrowska 461b063be2SAnna Dabrowska public function handleApprove(Doku_Event $event) 471b063be2SAnna Dabrowska { 481b063be2SAnna Dabrowska if ($event->data != 'show') return; 491b063be2SAnna Dabrowska 50*939e6e3cSAnna Dabrowska $this->dbHelper = plugin_load('helper', 'structpublish_db'); 51*939e6e3cSAnna Dabrowska 521b063be2SAnna Dabrowska global $INPUT; 531b063be2SAnna Dabrowska $in = $INPUT->arr('structpublish'); 54*939e6e3cSAnna Dabrowska if (!$in || !isset($in[$this->dbHelper::ACTION_APPROVE])) { 551b063be2SAnna Dabrowska return; 561b063be2SAnna Dabrowska } 571b063be2SAnna Dabrowska 581b063be2SAnna Dabrowska global $ID; 591b063be2SAnna Dabrowska global $INFO; 60*939e6e3cSAnna Dabrowska $sqlite = $this->dbHelper->getDB(); 611b063be2SAnna Dabrowska $revision = new Revision($sqlite, $ID, $INFO['currentrev']); 621b063be2SAnna Dabrowska $revision->setVersion($revision->getVersion()); 631b063be2SAnna Dabrowska $revision->setUser($_SERVER['REMOTE_USER']); 641b063be2SAnna Dabrowska $revision->setStatus(Revision::STATUS_APPROVED); 651b063be2SAnna Dabrowska $revision->setDate(time()); 661b063be2SAnna Dabrowska 671b063be2SAnna Dabrowska $revision->save(); 681b063be2SAnna Dabrowska } 69c2f8a3c4SAnna Dabrowska} 70