1<?php
2if(!defined('DOKU_INC')) die();
3if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
4require_once(DOKU_PLUGIN.'action.php');
5
6
7class action_plugin_notfound extends DokuWiki_Action_Plugin {
8
9    function register(Doku_Event_Handler $controller) {
10        $controller->register_hook('ACTION_ACT_PREPROCESS','BEFORE', $this, '_check404');
11        $controller->register_hook('TPL_CONTENT_DISPLAY','BEFORE', $this, '_show404');
12    }
13
14
15    function _check404(Doku_Event $event , $param) {
16        if($event->data != 'show') return false;
17        global $INFO;
18        if($INFO['exists']) return false;
19
20        $event->data = 'notfound';
21        $event->stopPropagation();
22        $event->preventDefault();
23        return true;
24    }
25
26    function _show404(Doku_Event $event, $param) {
27        global $ACT;
28        if($ACT != 'notfound') return false;
29        $event->stopPropagation();
30        $event->preventDefault();
31
32        global $ID;
33        $oldid = $ID;
34        $ID = $this->getConf('404page');
35        echo p_wiki_xhtml($ID,'',false);
36        $ID = $oldid;
37        $ACT='show';
38
39        return true;
40    }
41}
42