19413dce6SAnna Dabrowska<?php 29413dce6SAnna Dabrowska 39413dce6SAnna Dabrowskause dokuwiki\plugin\struct\meta\StructException; 4*06e440eaSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Assignments; 59413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants; 69413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision; 79413dce6SAnna Dabrowska 89413dce6SAnna Dabrowska/** 99413dce6SAnna Dabrowska * Action component to handle page save 109413dce6SAnna Dabrowska */ 1197a87056SAnna Dabrowskaclass action_plugin_structpublish_save extends DokuWiki_Action_Plugin 129413dce6SAnna Dabrowska{ 139413dce6SAnna Dabrowska /** @inheritDoc */ 149413dce6SAnna Dabrowska public function register(Doku_Event_Handler $controller) 159413dce6SAnna Dabrowska { 169413dce6SAnna Dabrowska $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handleSave'); 179413dce6SAnna Dabrowska } 189413dce6SAnna Dabrowska 199413dce6SAnna Dabrowska /** 209413dce6SAnna Dabrowska * Handle the page save event to store revision meta data 219413dce6SAnna Dabrowska * 229413dce6SAnna Dabrowska * @param Doku_Event $event 239413dce6SAnna Dabrowska * @return void 249413dce6SAnna Dabrowska */ 259413dce6SAnna Dabrowska public function handleSave(Doku_Event $event) 269413dce6SAnna Dabrowska { 279413dce6SAnna Dabrowska /** @var helper_plugin_structpublish_db $dbHelper */ 289413dce6SAnna Dabrowska $dbHelper = plugin_load('helper', 'structpublish_db'); 299413dce6SAnna Dabrowska 309413dce6SAnna Dabrowska $id = $event->data['id']; 319413dce6SAnna Dabrowska 32*06e440eaSAnna Dabrowska $assignments = Assignments::getInstance(); 33*06e440eaSAnna Dabrowska $assignments->updatePageAssignments($id); 34*06e440eaSAnna Dabrowska 359413dce6SAnna Dabrowska if (!$dbHelper->isPublishable()) { 369413dce6SAnna Dabrowska return; 379413dce6SAnna Dabrowska } 389413dce6SAnna Dabrowska 399413dce6SAnna Dabrowska $revision = new Revision($dbHelper->getDB(), $id, $event->data['newRevision']); 409413dce6SAnna Dabrowska $revision->setStatus(Constants::STATUS_DRAFT); 419413dce6SAnna Dabrowska 429413dce6SAnna Dabrowska try { 439413dce6SAnna Dabrowska $revision->save(); 449413dce6SAnna Dabrowska } catch(StructException $e) { 459413dce6SAnna Dabrowska msg($e->getMessage(), -1); 469413dce6SAnna Dabrowska } 479413dce6SAnna Dabrowska } 489413dce6SAnna Dabrowska} 49