xref: /plugin/struct/action/title.php (revision 109edca8dd1de9402ad71e45de10aee175942306)
11c9ef013SAndreas Gohr<?php
21c9ef013SAndreas Gohr/**
31c9ef013SAndreas Gohr * DokuWiki Plugin struct (Action Component)
41c9ef013SAndreas Gohr *
51c9ef013SAndreas Gohr * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
61c9ef013SAndreas Gohr * @author  Andreas Gohr, Michael Große <dokuwiki@cosmocode.de>
71c9ef013SAndreas Gohr */
81c9ef013SAndreas Gohr
91c9ef013SAndreas Gohr// must be run within Dokuwiki
107cbcfbdbSAndreas Gohruse dokuwiki\plugin\struct\meta\StructException;
11*109edca8SMichael Grosseuse dokuwiki\plugin\struct\meta\Page;
121c9ef013SAndreas Gohr
131c9ef013SAndreas Gohrif(!defined('DOKU_INC')) die();
141c9ef013SAndreas Gohr
151c9ef013SAndreas Gohr/**
161c9ef013SAndreas Gohr * Class action_plugin_struct_title
171c9ef013SAndreas Gohr *
181c9ef013SAndreas Gohr * Saves the page title when meta data is saved
191c9ef013SAndreas Gohr */
201c9ef013SAndreas Gohrclass action_plugin_struct_title extends DokuWiki_Action_Plugin {
211c9ef013SAndreas Gohr
221c9ef013SAndreas Gohr    /**
231c9ef013SAndreas Gohr     * Registers a callback function for a given event
241c9ef013SAndreas Gohr     *
251c9ef013SAndreas Gohr     * @param Doku_Event_Handler $controller DokuWiki's event controller object
261c9ef013SAndreas Gohr     * @return void
271c9ef013SAndreas Gohr     */
281c9ef013SAndreas Gohr    public function register(Doku_Event_Handler $controller) {
291c9ef013SAndreas Gohr        $controller->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, 'handle_meta');
301c9ef013SAndreas Gohr    }
311c9ef013SAndreas Gohr
321c9ef013SAndreas Gohr    /**
331c9ef013SAndreas Gohr     * Store the page's title
341c9ef013SAndreas Gohr     *
351c9ef013SAndreas Gohr     * @param Doku_Event $event
361c9ef013SAndreas Gohr     * @param $param
371c9ef013SAndreas Gohr     */
381c9ef013SAndreas Gohr    public function handle_meta(Doku_Event $event, $param) {
39a7cffaf2SAndreas Gohr        $id = $event->data['page'];
40a7cffaf2SAndreas Gohr
417cbcfbdbSAndreas Gohr        try {
42*109edca8SMichael Grosse            $page = new Page($id);
431c9ef013SAndreas Gohr
441c9ef013SAndreas Gohr            if(!blank($event->data['current']['title'])) {
45*109edca8SMichael Grosse                $page->setTitle($event->data['current']['title']);
461c9ef013SAndreas Gohr            } else {
47*109edca8SMichael Grosse                $page->setTitle(null);
48*109edca8SMichael Grosse            }
49*109edca8SMichael Grosse
50*109edca8SMichael Grosse            if(!blank($event->data['current']['last_change']['date'])) {
51*109edca8SMichael Grosse                $page->setLastRevision($event->data['current']['last_change']['date']);
52*109edca8SMichael Grosse            } else {
53*109edca8SMichael Grosse                $page->setLastRevision(null);
54*109edca8SMichael Grosse            }
55*109edca8SMichael Grosse
56*109edca8SMichael Grosse            if(!blank($event->data['current']['last_change']['user'])) {
57*109edca8SMichael Grosse                $page->setLastEditor($event->data['current']['last_change']['user']);
58*109edca8SMichael Grosse            } elseif (!blank($event->data['current']['last_change']['ip'])) {
59*109edca8SMichael Grosse                $page->setLastEditor($event->data['current']['last_change']['user']);
60*109edca8SMichael Grosse            } else {
61*109edca8SMichael Grosse                $page->setLastEditor(null);
621c9ef013SAndreas Gohr            }
637cbcfbdbSAndreas Gohr        } catch(StructException $e) {
647cbcfbdbSAndreas Gohr            msg($e->getMessage(), -1);
657cbcfbdbSAndreas Gohr        }
661c9ef013SAndreas Gohr    }
671c9ef013SAndreas Gohr
681c9ef013SAndreas Gohr}
69