diff -r 0931d60f5bdb -r 2b2084ca1e60 includes/pageprocess.php~ --- a/includes/pageprocess.php~ Wed Jun 13 16:32:27 2007 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,455 +0,0 @@ - - */ - -class PageProcessor -{ - - /** - * Page ID and namespace of the page handled by this instance - * @var string - */ - - var $page_id; - var $namespace; - - /** - * Tracks if the page we're loading exists in the database or not. - * @var bool - */ - - var $page_exists = false; - - /** - * Permissions! - * @var object - */ - - var $perms = null; - - /** - * Switch to track if redirects are allowed. Defaults to true. - * @var bool - */ - - var $allow_redir = true; - - /** - * If this is set to true, this will call the header and footer funcs on $template when render() is called. - * @var bool - */ - - var $send_headers = false; - - /** - * Cache the fetched text so we don't fetch it from the DB twice. - * @var string - */ - - var $text_cache = ''; - - /** - * Debugging information to track errors. You can set enable to false to disable sending debug information. - * @var array - */ - - var $debug = array( - 'enable' => true, - 'works' => false - ); - - /** - * Constructor. - * @param string The page ID (urlname) of the page - * @param string The namespace of the page - */ - - function __construct( $page_id, $namespace ) - { - global $db, $session, $paths, $template, $plugins; // Common objects - - // See if we can get some debug info - if ( function_exists('debug_backtrace') && $this->debug['enable'] ) - { - $this->debug['works'] = true; - $this->debug['backtrace'] = enano_debug_print_backtrace(true); - } - - // First things first - check page existence and permissions - - if ( !isset($paths->nslist[$namespace]) ) - { - $this->send_error('The namespace "' . htmlspecialchars($namespace) . '" does not exist.'); - } - - $this->_setup( $page_id, $namespace ); - - } - - /** - * The main method to send the page content. Also responsible for checking permissions. - */ - - function send() - { - global $db, $session, $paths, $template, $plugins; // Common objects - if ( !$this->perms->get_permissions('read') ) - { - $this->err_access_denied(); - return false; - } - if ( $this->namespace == 'Special' || $this->namespace == 'Admin' ) - { - if ( !$this->page_exists ) - { - redirect( makeUrl(getConfig('main_page')), 'Can\'t find special page', 'The special or administration page you requested does not exist. You will now be transferred to the main page.', 2 ); - } - $func_name = "page_{$this->namespace}_{$this->page_id}"; - if ( function_exists($func_name) ) - { - return @call_user_func($func_name); - } - else - { - $title = 'Page backend not found'; - $message = "The administration page you are looking for was properly registered using the page API, but the backend function - ($fname) was not found. If this is a plugin page, then this is almost certainly a bug with the plugin."; - - if ( $this->send_headers ) - { - $template->tpl_strings['PAGE_NAME'] = $title; - $template->header(); - echo "
$message
"; - $template->footer(); - } - else - { - echo "$message
"; - } - return false; - } - } - else if ( in_array($this->namespace, array('Article', 'User', 'Project', 'Help', 'File', 'Category')) && $this->page_exists ) - { - // Send as regular page - $text = $this->fetch_text(); - if ( $text == 'err_no_text_rows' ) - { - $this->err_no_rows(); - return false; - } - else - { - $this->render(); - } - } - else if ( ( $this->namespace == 'Template' || $this->namespace == 'System' ) && $this->page_exists ) - { - $this->header(); - - $text = $this->fetch_text(); - $text = preg_replace('/$message
"; - $template->footer(); - } - else - { - echo "$message
"; - } - } - - /** - * Tell the user the page doesn't exist, and present them with their options. - * @access private - */ - - function err_page_not_existent() - { - global $db, $session, $paths, $template, $plugins; // Common objects - - $this->header(); - header('HTTP/1.1 404 Not Found'); - echo 'You have requested a page that doesn\'t exist yet.'; - if ( $session->get_permissions('create_page') ) - { - echo ' You can create this page, or return to the homepage.'; - } - else - { - echo ' Return to the homepage.
'; - } - if ( $session->get_permissions('history_rollback') ) - { - $e = $db->sql_query('SELECT * FROM ' . table_prefix . 'logs WHERE action=\'delete\' AND page_id=\'' . $this->page_id . '\' AND namespace=\'' . $this->namespace . '\' ORDER BY time_id DESC;'); - if ( !$e ) - { - $db->_die('The deletion log could not be selected.'); - } - if ( $db->numrows() > 0 ) - { - $r = $db->fetchrow(); - echo 'This page also appears to have some log entries in the database - it seems that it was deleted on ' . $r['date_string'] . '. You can probably roll back the deletion.
'; - } - $db->free_result(); - } - echo '- HTTP Error: 404 Not Found -
'; - $this->footer(); - } - - /** - * PHP 4 constructor. - * @see PageProcessor::__construct() - */ - - function PageProcessor( $page_id, $namespace ) - { - $this->__construct($page_id, $namespace); - } - - /** - * Send an error message and die - * @var string Error message - * @var bool If true, send DBAL's debugging information as well - */ - - function send_error($message, $sql = false) - { - global $db, $session, $paths, $template, $plugins; // Common objects - - $content = "$message
"; - $template->tpl_strings['PAGE_NAME'] = 'General error in page fetcher'; - - if ( $this->debug['works'] ) - { - $content .= $this->debug['backtrace']; - } - - header('HTTP/1.1 500 Internal Server Error'); - - $template->header(); - echo $content; - $template->footer(); - - $db->close(); - - exit; - - } - -} // class PageProcessor - -?>