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 10// must be run within Dokuwiki 11use dokuwiki\plugin\struct\meta\StructException; 12use dokuwiki\plugin\struct\meta\PageMeta; 13 14if (!defined('DOKU_INC')) die(); 15 16/** 17 * Class action_plugin_struct_title 18 * 19 * Saves the page title when meta data is saved 20 */ 21class action_plugin_struct_title extends DokuWiki_Action_Plugin 22{ 23 24 /** 25 * Registers a callback function for a given event 26 * 27 * @param Doku_Event_Handler $controller DokuWiki's event controller object 28 * @return void 29 */ 30 public function register(Doku_Event_Handler $controller) 31 { 32 $controller->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, 'handle_meta'); 33 } 34 35 /** 36 * Store the page's title 37 * 38 * @param Doku_Event $event 39 * @param $param 40 */ 41 public function handle_meta(Doku_Event $event, $param) 42 { 43 $id = $event->data['page']; 44 45 try { 46 $page = new PageMeta($id); 47 48 if (!blank($event->data['current']['title'])) { 49 $page->setTitle($event->data['current']['title']); 50 } else { 51 $page->setTitle(null); 52 } 53 54 if (!blank($event->data['current']['last_change']['date'])) { 55 $page->setLastRevision($event->data['current']['last_change']['date']); 56 } else { 57 $page->setLastRevision(null); 58 } 59 60 if (!blank($event->data['current']['last_change']['user'])) { 61 $page->setLastEditor($event->data['current']['last_change']['user']); 62 } elseif (!blank($event->data['current']['last_change']['ip'])) { 63 $page->setLastEditor($event->data['current']['last_change']['ip']); 64 } else { 65 $page->setLastEditor(null); 66 } 67 68 if (!blank($event->data['current']['last_change']['sum'])) { 69 $page->setLastSummary($event->data['current']['last_change']['sum']); 70 } else { 71 $page->setLastSummary(null); 72 } 73 74 $page->savePageData(); 75 } catch (StructException $e) { 76 msg($e->getMessage(), -1); 77 } 78 } 79} 80