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\Title; 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 $title = new Title($id); 43 44 if(!blank($event->data['current']['title'])) { 45 $title->setTitle($event->data['current']['title']); 46 } else { 47 $title->setTitle(null); 48 } 49 } catch(StructException $e) { 50 msg($e->getMessage(), -1); 51 } 52 } 53 54} 55