1<?php 2 3/** 4 * DokuWiki Plugin struct (Action Component) 5 * 6 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 7 * @author Andreas Gohr, Michael Große <dokuwiki@cosmocode.de> 8 */ 9 10use dokuwiki\plugin\struct\meta\StructException; 11use dokuwiki\plugin\struct\meta\PageMeta; 12 13/** 14 * Class action_plugin_struct_title 15 * 16 * Saves the page title when meta data is saved 17 */ 18class action_plugin_struct_title extends DokuWiki_Action_Plugin 19{ 20 21 /** 22 * Registers a callback function for a given event 23 * 24 * @param Doku_Event_Handler $controller DokuWiki's event controller object 25 * @return void 26 */ 27 public function register(Doku_Event_Handler $controller) 28 { 29 $controller->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, 'handleMeta'); 30 } 31 32 /** 33 * Store the page's title 34 * 35 * @param Doku_Event $event 36 * @param $param 37 */ 38 public function handleMeta(Doku_Event $event, $param) 39 { 40 $id = $event->data['page']; 41 42 try { 43 $page = new PageMeta($id); 44 45 if (!blank($event->data['current']['title'])) { 46 $page->setTitle($event->data['current']['title']); 47 } else { 48 $page->setTitle(null); 49 } 50 51 if (!blank($event->data['current']['last_change']['date'])) { 52 $page->setLastRevision($event->data['current']['last_change']['date']); 53 } else { 54 $page->setLastRevision(null); 55 } 56 57 if (!blank($event->data['current']['last_change']['user'])) { 58 $page->setLastEditor($event->data['current']['last_change']['user']); 59 } elseif (!blank($event->data['current']['last_change']['ip'])) { 60 $page->setLastEditor($event->data['current']['last_change']['ip']); 61 } else { 62 $page->setLastEditor(null); 63 } 64 65 if (!blank($event->data['current']['last_change']['sum'])) { 66 $page->setLastSummary($event->data['current']['last_change']['sum']); 67 } else { 68 $page->setLastSummary(null); 69 } 70 71 $page->savePageData(); 72 } catch (StructException $e) { 73 msg($e->getMessage(), -1); 74 } 75 } 76} 77