Conditionally declare hex2bin() due to a function of the same name being introduced in PHP 5.4
+ − <?php
+ −
+ − /*
+ − * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
+ − * Copyright (C) 2006-2009 Dan Fuhry
+ − *
+ − * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ − * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ − *
+ − * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ − * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ − */
+ −
+ − class Namespace_Special extends Namespace_Default
+ − {
+ − public function __construct($page_id, $namespace, $revision_id = 0)
+ − {
+ − global $db, $session, $paths, $template, $plugins; // Common objects
+ −
+ − $this->page_id = sanitize_page_id($page_id);
+ − $this->namespace = $namespace;
+ − $this->build_cdata();
+ − $this->revision_id = intval($revision_id);
+ −
+ − $this->page_protected = true;
+ − $this->wiki_mode = 0;
+ − }
+ −
+ − public function build_cdata()
+ − {
+ − global $db, $session, $paths, $template, $plugins; // Common objects
+ − global $lang;
+ −
+ − if ( strstr($this->page_id, '/') )
+ − list($base_page_id) = explode('/', $this->page_id);
+ − else
+ − $base_page_id = $this->page_id;
+ − $this->exists = function_exists("page_{$this->namespace}_{$base_page_id}");
+ −
+ − if ( isset($paths->pages[ $paths->get_pathskey($this->page_id, $this->namespace) ]) )
+ − {
+ − $page_name = $paths->pages[ $paths->get_pathskey($this->page_id, $this->namespace) ]['name'];
+ − }
+ − else
+ − {
+ − $page_name = "{$paths->nslist[ $this->namespace ]}{$this->page_id}";
+ − if ( ($_ = $lang->get('specialpage_' . strtolower($this->page_id))) !== 'specialpage_' . strtolower($this->page_id) )
+ − {
+ − $page_name = $_;
+ − }
+ − }
+ −
+ − $this->cdata = array(
+ − 'name' => $lang->get($page_name),
+ − 'urlname' => $this->page_id,
+ − 'namespace' => $this->namespace,
+ − 'special' => 0,
+ − 'visible' => 0,
+ − 'comments_on' => 0,
+ − 'protected' => 0,
+ − 'delvotes' => 0,
+ − 'delvote_ips' => '',
+ − 'wiki_mode' => 2,
+ − 'page_exists' => $this->exists,
+ − 'page_format' => getConfig('default_page_format', 'wikitext'),
+ − 'require_admin' => $this->namespace === 'Admin'
+ − );
+ −
+ − $code = $plugins->setHook('ns_special_cdata');
+ − foreach ( $code as $cmd )
+ − {
+ − eval($cmd);
+ − }
+ −
+ − $this->cdata = Namespace_Default::bake_cdata($this->cdata);
+ −
+ − $this->title =& $this->cdata['name'];
+ − }
+ −
+ − function send()
+ − {
+ − global $output;
+ −
+ − if ( $this->exists )
+ − {
+ − call_user_func("page_{$this->namespace}_{$this->page_id}");
+ − }
+ − else
+ − {
+ − $output->header();
+ − $this->error_404();
+ − $output->footer();
+ − }
+ − }
+ −
+ − // We add the unused variable $userpage here to silence "declaration should be compatible" errors
+ − function error_404()
+ − {
+ − global $lang, $output;
+ − $func_name = "page_{$this->namespace}_{$this->page_id}";
+ −
+ − if ( $this->namespace == 'Admin' )
+ − die_semicritical($lang->get('page_msg_admin_404_title'), $lang->get('page_msg_admin_404_body', array('func_name' => $func_name)), true);
+ −
+ − $title = $lang->get('page_err_custompage_function_missing_title');
+ − $message = $lang->get('page_err_custompage_function_missing_body', array( 'function_name' => $func_name ));
+ −
+ − $output->set_title($title);
+ − $output->header();
+ − echo "<p>$message</p>";
+ − $output->footer();
+ − }
+ −
+ − function set_conds()
+ − {
+ − parent::set_conds();
+ −
+ − $this->conds['printable'] = false;
+ − $this->conds['adminpage'] = false;
+ − }
+ − }