19413dce6SAnna Dabrowska<?php 29413dce6SAnna Dabrowska 3*9ab8cbaeSanndause dokuwiki\Extension\ActionPlugin; 4*9ab8cbaeSanndause dokuwiki\Extension\EventHandler; 5*9ab8cbaeSanndause dokuwiki\Extension\Event; 69413dce6SAnna Dabrowskause dokuwiki\plugin\struct\meta\StructException; 706e440eaSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Assignments; 89413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants; 99413dce6SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision; 109413dce6SAnna Dabrowska 119413dce6SAnna Dabrowska/** 129413dce6SAnna Dabrowska * Action component to handle page save 139413dce6SAnna Dabrowska */ 14*9ab8cbaeSanndaclass action_plugin_structpublish_save extends ActionPlugin 159413dce6SAnna Dabrowska{ 169413dce6SAnna Dabrowska /** @inheritDoc */ 17*9ab8cbaeSannda public function register(EventHandler $controller) 189413dce6SAnna Dabrowska { 199413dce6SAnna Dabrowska $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handleSave'); 209413dce6SAnna Dabrowska } 219413dce6SAnna Dabrowska 229413dce6SAnna Dabrowska /** 239413dce6SAnna Dabrowska * Handle the page save event to store revision meta data 249413dce6SAnna Dabrowska * 25*9ab8cbaeSannda * @param Event $event 269413dce6SAnna Dabrowska * @return void 279413dce6SAnna Dabrowska */ 28*9ab8cbaeSannda public function handleSave(Event $event) 299413dce6SAnna Dabrowska { 309413dce6SAnna Dabrowska /** @var helper_plugin_structpublish_db $dbHelper */ 319413dce6SAnna Dabrowska $dbHelper = plugin_load('helper', 'structpublish_db'); 329413dce6SAnna Dabrowska 339413dce6SAnna Dabrowska $id = $event->data['id']; 349413dce6SAnna Dabrowska 3506e440eaSAnna Dabrowska $assignments = Assignments::getInstance(); 3606e440eaSAnna Dabrowska $assignments->updatePageAssignments($id); 3706e440eaSAnna Dabrowska 389413dce6SAnna Dabrowska if (!$dbHelper->isPublishable()) { 399413dce6SAnna Dabrowska return; 409413dce6SAnna Dabrowska } 419413dce6SAnna Dabrowska 42b476f81dSAnna Dabrowska $revision = new Revision($id, $event->data['newRevision']); 439413dce6SAnna Dabrowska $revision->setStatus(Constants::STATUS_DRAFT); 449413dce6SAnna Dabrowska 459413dce6SAnna Dabrowska try { 469413dce6SAnna Dabrowska $revision->save(); 479413dce6SAnna Dabrowska } catch (StructException $e) { 489413dce6SAnna Dabrowska msg($e->getMessage(), -1); 499413dce6SAnna Dabrowska } 509413dce6SAnna Dabrowska } 519413dce6SAnna Dabrowska} 52