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