1*9413dce6SAnna Dabrowska<?php 2*9413dce6SAnna Dabrowska 3*9413dce6SAnna Dabrowskause dokuwiki\plugin\struct\meta\StructException; 4*9413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants; 5*9413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision; 6*9413dce6SAnna Dabrowska 7*9413dce6SAnna Dabrowska/** 8*9413dce6SAnna Dabrowska * Action component to handle page save 9*9413dce6SAnna Dabrowska */ 10*9413dce6SAnna Dabrowskaclass action_plugin_structpublish_revision extends DokuWiki_Action_Plugin 11*9413dce6SAnna Dabrowska{ 12*9413dce6SAnna Dabrowska /** @inheritDoc */ 13*9413dce6SAnna Dabrowska public function register(Doku_Event_Handler $controller) 14*9413dce6SAnna Dabrowska { 15*9413dce6SAnna Dabrowska $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handleSave'); 16*9413dce6SAnna Dabrowska } 17*9413dce6SAnna Dabrowska 18*9413dce6SAnna Dabrowska /** 19*9413dce6SAnna Dabrowska * Handle the page save event to store revision meta data 20*9413dce6SAnna Dabrowska * 21*9413dce6SAnna Dabrowska * @param Doku_Event $event 22*9413dce6SAnna Dabrowska * @return void 23*9413dce6SAnna Dabrowska */ 24*9413dce6SAnna Dabrowska public function handleSave(Doku_Event $event) 25*9413dce6SAnna Dabrowska { 26*9413dce6SAnna Dabrowska /** @var helper_plugin_structpublish_db $dbHelper */ 27*9413dce6SAnna Dabrowska $dbHelper = plugin_load('helper', 'structpublish_db'); 28*9413dce6SAnna Dabrowska 29*9413dce6SAnna Dabrowska $id = $event->data['id']; 30*9413dce6SAnna Dabrowska 31*9413dce6SAnna Dabrowska if (!$dbHelper->isPublishable()) { 32*9413dce6SAnna Dabrowska return; 33*9413dce6SAnna Dabrowska } 34*9413dce6SAnna Dabrowska 35*9413dce6SAnna Dabrowska $revision = new Revision($dbHelper->getDB(), $id, $event->data['newRevision']); 36*9413dce6SAnna Dabrowska $revision->setStatus(Constants::STATUS_DRAFT); 37*9413dce6SAnna Dabrowska 38*9413dce6SAnna Dabrowska try { 39*9413dce6SAnna Dabrowska $revision->save(); 40*9413dce6SAnna Dabrowska } catch(StructException $e) { 41*9413dce6SAnna Dabrowska msg($e->getMessage(), -1); 42*9413dce6SAnna Dabrowska } 43*9413dce6SAnna Dabrowska } 44*9413dce6SAnna Dabrowska} 45