$Date: 2008-10-02 11:12:17 -0400 (Thu, 02 Oct 2008) $ | > $Revision: 2569 $ | > $Author: matt $ +--------------------------------------------------------------------------- | | > DISPLAY CLASS | > Module written by Matt Mecham | > Date started: 26th January 2004 | | > Module Version Number: 1.0.0 | > DBA Checked: Wed 19 May 2004 +-------------------------------------------------------------------------- */ if ( ! defined( 'IN_IPB' ) ) { print "

Incorrect access

You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } class display { # Global var $ipsclass; var $to_print = ""; var $output = ""; var $macros = ""; //----------------------------------------- // CONSTRUCTOR //----------------------------------------- function display() { } //----------------------------------------- // Appends the parsed HTML to our class var //----------------------------------------- function add_output($to_add) { $this->to_print .= $to_add; //return 'true' on success return true; } /*-------------------------------------------------------------------------*/ // // Parses all the information and prints it. // /*-------------------------------------------------------------------------*/ function do_output($output_array) { global $Debug; //----------------------------------------- // Global //----------------------------------------- $components_links = ""; //----------------------------------------- // Are we IPSing? //----------------------------------------- $this->_check_ips_report(); //----------------------------------------- // UNPACK MACROS //----------------------------------------- $this->_unpack_macros(); //----------------------------------------- // END TIMER //----------------------------------------- $this->ex_time = sprintf( "%.4f",$Debug->endTimer() ); //----------------------------------------- // SQL DEBUG? //----------------------------------------- $this->_check_debug(); $stats = $this->_show_debug(); //----------------------------------------- // Stop E_ALL moaning... //----------------------------------------- $this->ipsclass->cache['systemvars']['task_next_run'] = isset( $this->ipsclass->cache['systemvars']['task_next_run'] ) ? $this->ipsclass->cache['systemvars']['task_next_run'] : 0; //----------------------------------------- // NAVIGATION //----------------------------------------- $nav = $this->ipsclass->compiled_templates['skin_global']->start_nav(); $nav .= "{$this->ipsclass->vars['board_name']}"; if ( empty($output_array['OVERRIDE']) ) { if ( isset($output_array['NAV']) AND is_array( $output_array['NAV'] ) ) { foreach ($output_array['NAV'] as $n) { if ($n) { $nav .= "<{F_NAV_SEP}>" . $n; } } } } $nav .= $this->ipsclass->compiled_templates['skin_global']->end_nav(); //----------------------------------------- // CSS //----------------------------------------- $css = $this->_get_css(); //----------------------------------------- // REMOVAL OF THIS WITHOUT PURCHASING COPYRIGHT REMOVAL WILL VIOLATE THE LICENCE YOU AGREED // TO WHEN DOWNLOADING THIS PRODUCT. THIS COULD MEAN REMOVAL OF YOUR BOARD AND EVEN // CRIMINAL CHARGES //----------------------------------------- $version = ( isset( $this->ipsclass->vars['ipb_display_version'] ) AND $this->ipsclass->vars['ipb_display_version'] != 0 ) ? $this->ipsclass->version : ''; // Do we want a copyright? I say: No! // Guys... Make a "good" soft, and we keep your copyrights ;) $copyright = ""; //----------------------------------------- // Must be called before board_header //----------------------------------------- $this->ipsclass->member['new_msg'] = isset($this->ipsclass->member['new_msg']) ? intval($this->ipsclass->member['new_msg']) : 0; $this->ipsclass->member['msg_total'] = isset($this->ipsclass->member['msg_total']) ? $this->ipsclass->member['msg_total'] : 0; if ( ($this->ipsclass->member['g_max_messages'] > 0) and ($this->ipsclass->member['msg_total'] >= $this->ipsclass->member['g_max_messages']) ) { $msg_data['TEXT'] = $this->ipsclass->lang['msg_full']; } else { $msg_data['TEXT'] = sprintf( $this->ipsclass->lang['msg_new'], $this->ipsclass->member['new_msg']); } //----------------------------------------- // Components link //----------------------------------------- if ( is_array( $this->ipsclass->cache['components'] ) and count( $this->ipsclass->cache['components'] ) ) { # As of IPB 2.2, we use float:right which reverses the order of the elements $_tmp = array_reverse( $this->ipsclass->cache['components'] ); foreach( $_tmp as $data ) { if ( $data['com_url_title'] AND $data['com_url_uri'] ) { $data['com_url_uri'] = str_replace( '{ipb.base_url}' , $this->ipsclass->base_url , $data['com_url_uri'] ); $data['com_url_title'] = preg_replace_callback( '#{ipb.lang\[[\'"](.+?)[\'"]\]}#i', array( &$this, '_return_lang_var' ), $data['com_url_title'] ); $components_links .= $this->ipsclass->compiled_templates['skin_global']->global_board_header_component_link( $data['com_url_uri'],$data['com_url_title'], $data ); } } } //----------------------------------------- // Do it //----------------------------------------- $this_header = $this->ipsclass->compiled_templates['skin_global']->global_board_header( $components_links ); $this_footer = $this->ipsclass->compiled_templates['skin_global']->global_board_footer( $this->ipsclass->get_date( time(), 'SHORT', 1 ) ); //----------------------------------------- // Show rules link? //----------------------------------------- if ( $this->ipsclass->vars['gl_show'] and $this->ipsclass->vars['gl_title'] ) { if ( $this->ipsclass->vars['gl_link'] == "" AND $this->ipsclass->vars['gl_title'] ) { $this->ipsclass->vars['gl_link'] = $this->ipsclass->base_url."act=boardrules"; } $this_header = str_replace( "", $this->ipsclass->compiled_templates['skin_global']->rules_link($this->ipsclass->vars['gl_link'], $this->ipsclass->vars['gl_title']), $this_header ); } //----------------------------------------- // Build the members bar //----------------------------------------- $output_array['MEMBER_BAR'] = $this->ipsclass->compiled_templates['skin_global']->member_bar($msg_data); //----------------------------------------- // Board offline? //----------------------------------------- if ($this->ipsclass->vars['board_offline'] == 1) { $output_array['TITLE'] = $this->ipsclass->lang['warn_offline']." ".$output_array['TITLE']; } //----------------------------------------- // Showing skin jump? //----------------------------------------- if ( $this->ipsclass->vars['allow_skins'] and $this->ipsclass->member['id'] > 0 ) { $skin_jump_options = $this->_build_skin_list(); if( $skin_jump_options ) { $skin_jump = $this->ipsclass->compiled_templates['skin_global']->global_skin_chooser( $skin_jump_options ); } else { $skin_jump = ""; } } else { $skin_jump = ""; } //----------------------------------------- // Showing skin jump? //----------------------------------------- if ( $this->ipsclass->member['id'] > 0 ) { $lang_jump = $this->ipsclass->compiled_templates['skin_global']->global_lang_chooser( $this->_build_language_list() ); } else { $lang_jump = ""; } //----------------------------------------- // Show quick stats? //----------------------------------------- $gzip_status = $this->ipsclass->vars['disable_gzip'] == 1 ? $this->ipsclass->lang['gzip_off'] : $this->ipsclass->lang['gzip_on']; if ( ! $this->ipsclass->server_load ) { $this->ipsclass->server_load = '--'; } //----------------------------------------- // Basics //----------------------------------------- if( strstr( strtolower(PHP_OS), 'win' ) ) { $this->ipsclass->server_load = $this->ipsclass->server_load . '%'; } if ( $this->ipsclass->member['id'] and $this->ipsclass->vars['debug_level'] ) { $quickstats = $this->ipsclass->compiled_templates['skin_global']->global_quick_stats($this->ex_time, $gzip_status, $this->ipsclass->server_load, $this->ipsclass->DB->get_query_cnt() ); } else { $quickstats = ""; } //----------------------------------------- // Add in task image? //----------------------------------------- if ( time() >= $this->ipsclass->cache['systemvars']['task_next_run'] ) { $this->to_print .= ""; } //----------------------------------------- // Parse EXEC commands in wrapper only // If we moved this below the block of str_replace // we'd get exec commands parsed in HTML templates // too... Do we want that? Not for now... //----------------------------------------- if ( stristr( $this->ipsclass->skin['_wrapper'], '', $this->ipsclass->get_new_pm_notification(), $this->ipsclass->skin['_wrapper'] ); } } //----------------------------------------- // Get the macros and replace them //----------------------------------------- if ( is_array( $this->ipsclass->skin['_macros'] ) ) { foreach( $this->ipsclass->skin['_macros'] as $row ) { if ( $row['macro_value'] != "" ) { $this->ipsclass->skin['_wrapper'] = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $this->ipsclass->skin['_wrapper'] ); } } } $this->ipsclass->skin['_wrapper'] = str_replace( "<#IMG_DIR#>", $this->ipsclass->skin['_imagedir'], $this->ipsclass->skin['_wrapper'] ); $this->ipsclass->skin['_wrapper'] = str_replace( "<#EMO_DIR#>", $this->ipsclass->skin['_emodir'] , $this->ipsclass->skin['_wrapper'] ); //----------------------------------------- // Images on another server? uncomment and alter below //----------------------------------------- if ( $this->ipsclass->vars['ipb_img_url'] ) { $this->ipsclass->skin['_wrapper'] = preg_replace( "#img\s+?src=([\"'])style_(images|avatars|emoticons)(.+?)[\"'](.+?)?".">#is", "img src=\\1".$this->ipsclass->vars['ipb_img_url']."style_\\2\\3\\1\\4>", $this->ipsclass->skin['_wrapper'] ); } //----------------------------------------- // Stop one from removing cookie protection //----------------------------------------- $this->ipsclass->skin['_wrapper'] = preg_replace( "#htmldocument\.prototype#is", "HTMLDocument_prototype", $this->ipsclass->skin['_wrapper'] ); $this->_finish(); print $this->ipsclass->skin['_wrapper']; //----------------------------------------- // Clean up... //----------------------------------------- unset( $this->ipsclass->skin['_wrapper'], $output_array, $this->to_print ); //----------------------------------------- // Memory usage //----------------------------------------- if ( IPS_MEMORY_DEBUG_MODE AND defined( 'IPB_MEMORY_START' ) ) { if ( is_array( $this->ipsclass->_memory_debug ) ) { $memory .= "
\n
\n
MEMORY USAGE
\n"; $memory .= "\n"; $_c = 0; foreach( $this->ipsclass->_memory_debug as $usage ) { $_col = ( $_c % 2 ) ? '#eee' : '#ddd'; $_c++; if ( $usage[1] > 500 * 1024 ) { $_col .= ";color:#D00000"; } else if ( $usage[1] < 10 * 1024 ) { $_col .= ";color:darkgreen"; } else if ( $usage[1] < 100 * 1024 ) { $_col .= ";color:darkorange"; } $memory .= ""; } $memory .= "
{$usage[0]}".$this->ipsclass->size_format( $usage[1] )."
"; } $end = memory_get_usage(); $peak_end = function_exists('memory_get_peak_usage') ? memory_get_peak_usage() : memory_get_usage(); $_used = $end - IPB_MEMORY_START; $peak_used = $peak_end - IPB_MEMORY_START; print $memory; print "Total Memory Used: " . $this->ipsclass->size_format( $_used ) . " (Peak:".$this->ipsclass->size_format( $peak_used ).")"; } exit; } /*-------------------------------------------------------------------------*/ // // print the headers // /*-------------------------------------------------------------------------*/ function do_headers() { if ( $this->ipsclass->vars['print_headers'] ) { $this->ipsclass->vars['gb_char_set'] = $this->ipsclass->vars['gb_char_set'] ? $this->ipsclass->vars['gb_char_set'] : 'iso-8859-1'; header("HTTP/1.0 200 OK"); header("HTTP/1.1 200 OK"); header( "Content-type: text/html;charset={$this->ipsclass->vars['gb_char_set']}" ); if ( $this->ipsclass->vars['nocache'] ) { header("Cache-Control: no-cache, must-revalidate, max-age=0"); //header("Expires:" . gmdate("D, d M Y H:i:s") . " GMT"); header("Expires: 0"); header("Pragma: no-cache"); } } } /*-------------------------------------------------------------------------*/ // // print a pure redirect screen // /*-------------------------------------------------------------------------*/ function redirect_screen($text="", $url="", $override=0) { //----------------------------------------- // Make sure global skin is loaded //----------------------------------------- if ( !isset($this->ipsclass->compiled_templates['skin_global']) OR !is_object($this->ipsclass->compiled_templates['skin_global']) ) { $this->ipsclass->load_template('skin_global'); } if ( isset($this->ipsclass->input['debug']) AND $this->ipsclass->input['debug'] ) { flush(); exit(); } //----------------------------------------- // $ibforums not initialized yet? //----------------------------------------- if ( $override != 1 ) { if ( $this->ipsclass->base_url ) { $url = $this->ipsclass->base_url.$url; } else { $url = "{$this->ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}?".$url; } } //----------------------------------------- // Feck off first? //----------------------------------------- if ( $this->ipsclass->vars['ipb_remove_redirect_pages'] == 1 ) { $this->ipsclass->boink_it( $url ); } $this->ipsclass->lang['stand_by'] = stripslashes($this->ipsclass->lang['stand_by']); //----------------------------------------- // CSS //----------------------------------------- $css = $this->_get_css(); //----------------------------------------- // Fix up URLs //----------------------------------------- //$url = preg_replace( "#&(?!amp;)#", "&" , $url ); //$url = preg_replace( '/#(?!\d)/' , '#', $url ); //----------------------------------------- // Get template //----------------------------------------- $html = $this->ipsclass->compiled_templates['skin_global']->Redirect( ucfirst($text), $url, $css); //----------------------------------------- // Get and parse macros //----------------------------------------- $this->_unpack_macros(); foreach( $this->ipsclass->skin['_macros'] as $row ) { if ($row['macro_value'] != "") { $html = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $html ); } } $html = str_replace( "<% CHARSET %>" , $this->ipsclass->vars['gb_char_set'], $html ); $html = str_replace( "<#IMG_DIR#>" , $this->ipsclass->skin['_imagedir'] , $html ); $this->_finish(); echo ($html); exit; } /*-------------------------------------------------------------------------*/ // // print a minimalist screen suitable for small pop up windows // /*-------------------------------------------------------------------------*/ function pop_up_window($title = 'Invision Power Board', $text = "" ) { $this->_check_debug(); //----------------------------------------- // CSS //----------------------------------------- $css = $this->_get_css(); //----------------------------------------- // Get template //----------------------------------------- $html = $this->ipsclass->compiled_templates['skin_global']->pop_up_window($title, $css, $text); //----------------------------------------- // Get and parse macros //----------------------------------------- $this->_unpack_macros(); foreach( $this->ipsclass->skin['_macros'] as $row ) { if ( $row['macro_value'] != "" ) { $html = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $html ); } } $html = str_replace( "<% CHARSET %>" , $this->ipsclass->vars['gb_char_set'], $html ); $html = str_replace( "<#IMG_DIR#>" , $this->ipsclass->skin['_imagedir'] , $html ); $html = str_replace( "<#EMO_DIR#>" , $this->ipsclass->skin['_emodir'] , $html ); $html = str_replace( '<{__body_extra__}>', '', $html ); //----------------------------------------- // Images on another server? uncomment and alter below //----------------------------------------- if ( $this->ipsclass->vars['ipb_img_url'] ) { $html = preg_replace( "#img\s+?src=[\"']style_(images|avatars|emoticons)(.+?)[\"'](.+?)?".">#is", "img src=\"".$this->ipsclass->vars['ipb_img_url']."style_\\1\\2\"\\3>", $html ); } //----------------------------------------- // Stop one from removing cookie protection //----------------------------------------- $html = preg_replace( "#htmldocument\.prototype#is", "HTMLDocument_prototype", $html ); $this->_finish(); echo ($html); exit; } /*-------------------------------------------------------------------------*/ // Parse EXEC tags /*-------------------------------------------------------------------------*/ /** * Parses exec tags in the wrapper * Nicked from IP.Dynamic. */ function _parse_exec_tags() { preg_match_all( "#<\!--exec\.(file|url)=(?:[\"'])?(.+?)(?:[\"'])?-->#is", $this->ipsclass->skin['_wrapper'], $match ); for ($i=0; $i < count($match[0]); $i++) { $method = strtolower(trim( $match[1][$i] )); $uri = trim( $match[2][$i] ); //----------------------------------------- // PARSE: URL //----------------------------------------- if ( $method == 'url' AND IPB_ACP_ALLOW_EXEC_URL ) { //----------------------------------------- // Buffer... //----------------------------------------- @ob_start(); include( $uri ); $data = @ob_get_contents(); @ob_end_clean(); } //----------------------------------------- // PARSE: LOCAL FILE //----------------------------------------- else { if ( file_exists( $uri ) AND ! preg_match( "#http(s)?://#si", $uri ) ) { //----------------------------------------- // Buffer... //----------------------------------------- @ob_start(); include( $uri ); $data = @ob_get_contents(); @ob_end_clean(); } } $this->ipsclass->skin['_wrapper'] = str_replace( $match[0][$i], "\n".$data."\n", $this->ipsclass->skin['_wrapper'] ); unset( $data ); } } /*-------------------------------------------------------------------------*/ // Show Syndication Links /*-------------------------------------------------------------------------*/ function _get_synd_link() { //----------------------------------------- // INIT //----------------------------------------- $content = ""; //----------------------------------------- // Got any? //----------------------------------------- if ( ( ! is_array( $this->ipsclass->cache['rss_export'] ) OR ! count( $this->ipsclass->cache['rss_export'] ) ) AND ( ! is_array( $this->ipsclass->cache['rss_calendar'] ) OR ! count( $this->ipsclass->cache['rss_calendar'] ) )) { return; } //----------------------------------------- // Build //----------------------------------------- if ( is_array( $this->ipsclass->cache['rss_export'] ) and count( $this->ipsclass->cache['rss_export'] ) ) { foreach( $this->ipsclass->cache['rss_export'] as $data ) { $data['title'] = str_replace( '"', '\"', $data['title'] ); $content .= $this->ipsclass->compiled_templates['skin_global']->global_footer_synd_link( $data ) . "\n"; } } //----------------------------------------- // Build //----------------------------------------- if ( is_array( $this->ipsclass->cache['rss_calendar'] ) and count( $this->ipsclass->cache['rss_calendar'] ) ) { foreach( $this->ipsclass->cache['rss_calendar'] as $data ) { $data['title'] = $this->ipsclass->lang['rss_calendar'].' '.$data['title']; $content .= $this->ipsclass->compiled_templates['skin_global']->global_footer_synd_link( $data ) . "\n"; } } //----------------------------------------- // Clean up content //----------------------------------------- $content = preg_replace( "#,(\s+)?$#s", "", $content ); //----------------------------------------- // Return //----------------------------------------- return $this->ipsclass->compiled_templates['skin_global']->global_footer_synd_wrapper( $content ); } /*-------------------------------------------------------------------------*/ // Show RSS export links /*-------------------------------------------------------------------------*/ function _get_rss_export() { //----------------------------------------- // INIT //----------------------------------------- $content = ""; //----------------------------------------- // Got any? //----------------------------------------- if ( ( ! is_array( $this->ipsclass->cache['rss_export'] ) OR ! count( $this->ipsclass->cache['rss_export'] ) ) AND ( ! is_array( $this->ipsclass->cache['rss_calendar'] ) OR ! count( $this->ipsclass->cache['rss_calendar'] ) )) { return; } //----------------------------------------- // Build //----------------------------------------- if ( is_array( $this->ipsclass->cache['rss_export'] ) and count( $this->ipsclass->cache['rss_export'] ) ) { foreach( $this->ipsclass->cache['rss_export'] as $data ) { $data['title'] = str_replace( '"', '"', $data['title'] ); $content .= $this->ipsclass->compiled_templates['skin_global']->global_rss_link( $data ) . "\n"; } } //----------------------------------------- // Build //----------------------------------------- if ( is_array( $this->ipsclass->cache['rss_calendar'] ) and count( $this->ipsclass->cache['rss_calendar'] ) ) { foreach( $this->ipsclass->cache['rss_calendar'] as $data ) { $data['title'] = $this->ipsclass->lang['rss_calendar'] . ' ' . str_replace( '"', '"', $data['title'] ); $content .= $this->ipsclass->compiled_templates['skin_global']->global_rss_link( $data ) . "\n"; } } //----------------------------------------- // Return //----------------------------------------- return $content; } /*-------------------------------------------------------------------------*/ // Show lo-fi link /*-------------------------------------------------------------------------*/ function _get_lofi_link() { $link = ""; $char = '/'; if ( substr(PHP_OS, 0, 3) == 'WIN' OR strstr( php_sapi_name(), 'cgi') OR php_sapi_name() == 'apache2filter' ) { $char = '?'; } if ( $this->ipsclass->input['act'] == 'st' ) { $link = $char.'t'.$this->ipsclass->input['t'].'.html'; } else if ( $this->ipsclass->input['act'] == 'sf' ) { $link = $char.'f'.$this->ipsclass->input['f'].'.html'; } return $link; } /*-------------------------------------------------------------------------*/ // Build Languages List /*-------------------------------------------------------------------------*/ function _build_language_list() { $lang_list = ""; //----------------------------------------- // Roots //----------------------------------------- foreach( $this->ipsclass->cache['languages'] as $data ) { if ( $this->ipsclass->lang_id == $data['ldir'] ) { $selected = ' selected="selected"'; } else { $selected = ""; } $lang_list .= "\n"; } return $lang_list; } /*-------------------------------------------------------------------------*/ // Build Skin List /*-------------------------------------------------------------------------*/ function _build_skin_list() { $skin_list = ""; //----------------------------------------- // Roots //----------------------------------------- foreach( $this->ipsclass->cache['skin_id_cache'] as $id => $data ) { $skin_sets[ $data['set_parent'] ]['_children'][] = $id; if ( $data['set_parent'] < 1 and $id > 1 ) { if ( $data['set_hidden'] and ! $this->ipsclass->member['g_access_cp'] ) { continue; } $star = $data['set_hidden'] ? ' *' : ''; if ( isset($this->ipsclass->skin['_setid']) AND $this->ipsclass->skin['_setid'] == $id ) { $selected = ' selected="selected"'; } else { $selected = ""; } $skin_list .= "\n"; } } //----------------------------------------- // Kids... //----------------------------------------- foreach( $skin_sets as $id => $data ) { if ( is_array( $data['_children'] ) and count( $data['_children'] ) > 0 ) { $html = ""; foreach( $data['_children'] as $cid ) { if ( $this->ipsclass->cache['skin_id_cache'][ $cid ]['set_hidden'] and ! $this->ipsclass->member['g_access_cp'] ) { continue; } $star = $this->ipsclass->cache['skin_id_cache'][ $cid ]['set_hidden'] ? ' *' : ''; if ( isset($this->ipsclass->skin['_setid']) AND $this->ipsclass->skin['_setid'] == $cid ) { $selected = ' selected="selected"'; } else { $selected = ""; } $html .= "\n"; } $skin_list = str_replace( "", $html, $skin_list ); } } return $skin_list; } /*-------------------------------------------------------------------------*/ // unpack_macros /*-------------------------------------------------------------------------*/ function _unpack_macros() { if ( ! is_array( $this->ipsclass->skin['_macros'] ) OR ! count( $this->ipsclass->skin['_macros'] ) ) { $this->ipsclass->skin['_macros'] = unserialize( stripslashes($this->ipsclass->skin['_macro']) ); } if ( LEGACY_MODE ) { $this->macros =& $this->ipsclass->skin['_macros']; } } /*-------------------------------------------------------------------------*/ // show_debug /*-------------------------------------------------------------------------*/ function _show_debug() { $input = ""; $queries = ""; $sload = ""; $stats = ""; //----------------------------------------- // Form & Get & Skin //----------------------------------------- if ($this->ipsclass->vars['debug_level'] >= 2) { $stats .= "
\n
\n
FORM and GET Input
\n"; while( list($k, $v) = each($this->ipsclass->input) ) { if ( in_array( strtolower( $k ), array( 'pass', 'password' ) ) ) { $v = '*******'; } $stats .= "$k = $v
\n"; } $stats .= "
\n
"; $stats .= "
\n
\n
SKIN & TASK Info
\n"; while( list($k, $v) = each($this->ipsclass->skin) ) { if( is_array($v) ) { continue; } if ( strlen($v) > 120 ) { $v = substr( $v, 0, 120 ). '...'; } $stats .= "$k = ".$this->ipsclass->txt_htmlspecialchars($v)."
\n"; } //----------------------------------------- // Stop E_ALL moaning... //----------------------------------------- $this->ipsclass->cache['systemvars']['task_next_run'] = isset( $this->ipsclass->cache['systemvars']['task_next_run'] ) ? $this->ipsclass->cache['systemvars']['task_next_run'] : 0; $stats .= "Next task = ".$this->ipsclass->get_date( $this->ipsclass->cache['systemvars']['task_next_run'], 'LONG' )."\n
Time now = ".$this->ipsclass->get_date( time(), 'LONG' ); $stats .= "
Timestamp Now = ".time(); $stats .= "
\n
"; $stats .= "
\n
\n
Loaded PHP Templates
\n"; $stats .= "".implode(", ",array_keys($this->ipsclass->compiled_templates))."
\n"; $stats .= "".implode(", ",array_keys($this->ipsclass->loaded_templates))."
\n"; $stats .= "
\n
"; } //----------------------------------------- // SQL //----------------------------------------- if ($this->ipsclass->vars['debug_level'] >= 3) { $stats .= "
\n
\n
Queries Used
"; foreach($this->ipsclass->DB->obj['cached_queries'] as $q) { $q = htmlspecialchars($q); $q = preg_replace( "/^SELECT/i" , "SELECT" , $q ); $q = preg_replace( "/^UPDATE/i" , "UPDATE" , $q ); $q = preg_replace( "/^DELETE/i" , "DELETE", $q ); $q = preg_replace( "/^INSERT/i" , "INSERT" , $q ); $q = str_replace( "LEFT JOIN" , "LEFT JOIN" , $q ); $q = preg_replace( "/(".$this->ipsclass->vars['sql_tbl_prefix'].")(\S+?)([\s\.,]|$)/", "\\1\\2\\3", $q ); $stats .= "$q
\n"; } if ( count( $this->ipsclass->DB->obj['shutdown_queries'] ) ) { foreach($this->ipsclass->DB->obj['shutdown_queries'] as $q) { $q = htmlspecialchars($q); $q = preg_replace( "/^SELECT/i" , "SELECT" , $q ); $q = preg_replace( "/^UPDATE/i" , "UPDATE" , $q ); $q = preg_replace( "/^DELETE/i" , "DELETE", $q ); $q = preg_replace( "/^INSERT/i" , "INSERT" , $q ); $q = str_replace( "LEFT JOIN" , "LEFT JOIN" , $q ); $q = preg_replace( "/(".$this->ipsclass->vars['sql_tbl_prefix'].")(\S+?)([\s\.,]|$)/", "\\1\\2\\3", $q ); $stats .= "
SHUTDOWN: $q

\n"; } } $stats .= "
\n
"; } if ( $stats ) { $collapsed_ids = ','.$this->ipsclass->my_getcookie('collapseprefs').','; $show['div_fo'] = ''; $show['div_fc'] = 'none'; if ( strstr( $collapsed_ids, ',debug,' ) ) { $show['div_fo'] = 'none'; $show['div_fc'] = ''; } $stats = "
Show Debug Information
Hide Debug Information

Debug Information
$stats
"; } return $stats; } /*-------------------------------------------------------------------------*/ // check_debug /*-------------------------------------------------------------------------*/ function _check_debug() { if ($this->ipsclass->DB->obj['debug']) { flush(); print "SQL Debugger"; print "

SQL Total Time: {$this->ipsclass->DB->sql_time} for {$this->ipsclass->DB->query_count} queries


".$this->ipsclass->DB->debug_html; print "
Total SQL Time: {$this->ipsclass->DB->sql_time}
"; exit(); } } /*-------------------------------------------------------------------------*/ // check_ips_report /*-------------------------------------------------------------------------*/ function _check_ips_report() { //----------------------------------------- // Note, this is designed to allow IPS validate boards // who've purchased copyright removal / registration. // The order number is the only thing shown and the // order number is unique to the person who paid and // is no good to anyone else. // Showing the order number poses no risk at all - // the information is useless to anyone outside of IPS. //----------------------------------------- $pass = 0; $key = isset($this->ipsclass->input['key']) ? trim( $this->ipsclass->input['key'] ) : ''; $cust_number = 0; $acc_number = 0; $cust_number_tmp = '0,0'; if ( (isset($this->ipsclass->input['ipsreport']) AND $this->ipsclass->input['ipsreport']) or (isset($this->ipsclass->input['ipscheck']) AND $this->ipsclass->input['ipscheck']) ) { if ( $this->ipsclass->vars['ipb_copy_number'] ) { $cust_number_tmp = preg_replace( "/^(\d+?)-(\d+?)-(\d+?)-(\S+?)$/", "\\2,\\3", $this->ipsclass->vars['ipb_copy_number'] ); } else if ( $this->ipsclass->vars['ipb_reg_number'] ) { $cust_number_tmp = preg_replace( "/^(\d+?)-(\d+?)-(\d+?)-(\d+?)-(\S+?)$/", "\\2,\\4", $this->ipsclass->vars['ipb_reg_number'] ); } if ( md5($key) == '23f2554a507f6d52b8f27934d3d2a88d' ) { $latest_version = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'upgrade_history', 'order' => 'upgrade_version_id DESC', 'limit' => array(0, 1) ) ); if ( $this->ipsclass->version == 'v<{%dyn.down.var.human.version%}>' ) { $this->ipsclass->version = 'v'.$latest_version['upgrade_version_human']; } if ( $this->ipsclass->acpversion == '<{%dyn.down.var.long_version_id%}>' ) { $this->ipsclass->acpversion = $latest_version['upgrade_version_id']; } list( $cust_number, $acc_number ) = explode( ',', $cust_number_tmp ); @header( "Content-type: text/xml" ); $out = ''; $out .= "\n\n\t1\n\t$cust_number\n\t$acc_number\n\t" . "{$this->ipsclass->acpversion}\n\t{$this->ipsclass->version}\n\t>" . "\n"; print $out; exit(); } else if( md5($key) == 'd66ab5043c553f1f1fd5fad3ece252e3' ) { $latest_version = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'upgrade_history', 'order' => 'upgrade_version_id DESC', 'limit' => array(0, 1) ) ); if ( $this->ipsclass->version == 'v<{%dyn.down.var.human.version%}>' ) { $this->ipsclass->version = 'v'.$latest_version['upgrade_version_human']; } if ( $this->ipsclass->acpversion == '<{%dyn.down.var.long_version_id%}>' ) { $this->ipsclass->acpversion = $latest_version['upgrade_version_id']; } @header( "Content-type: text/plain" ); print $this->ipsclass->version.' (ID:'.$this->ipsclass->acpversion.')'; exit(); } else { @header( "Content-type: text/plain" ); print "0\nYou do not have permission to view this page."; exit(); } } } //*-------------------------------------------------------------------------*/ // get_css /*-------------------------------------------------------------------------*/ function _get_css() { if ( $this->ipsclass->skin['_usecsscache'] and @file_exists( CACHE_PATH.'style_images/css_'. $this->ipsclass->skin['_csscacheid'] .'.css' ) ) { $css = $this->ipsclass->compiled_templates['skin_global']->css_external($this->ipsclass->skin['_csscacheid']); } else { $css = $this->ipsclass->compiled_templates['skin_global']->css_inline( str_replace( "<#IMG_DIR#>", $this->ipsclass->skin['_imagedir'], $this->ipsclass->skin['_css'] ) ); } return $css; } /*-------------------------------------------------------------------------*/ // finish /*-------------------------------------------------------------------------*/ function _finish() { //----------------------------------------- // Do shutdown //----------------------------------------- if ( ! USE_SHUTDOWN ) { $this->ipsclass->my_deconstructor(); $this->ipsclass->DB->close_db(); } //----------------------------------------- // Start GZIP compression //----------------------------------------- if ($this->ipsclass->vars['disable_gzip'] != 1 ) { $buffer = ""; if ( count( ob_list_handlers() ) ) { $buffer = ob_get_contents(); ob_end_clean(); } @ob_start('ob_gzhandler'); print $buffer; } //----------------------------------------- // Print, plop and part //----------------------------------------- $this->do_headers(); } /*-------------------------------------------------------------------------*/ // Bleh. /*-------------------------------------------------------------------------*/ function _return_lang_var( $matches=array() ) { return $this->ipsclass->lang[ $matches[1] ]; } } // END class ?>