1246 lines
45 KiB
PHP
1246 lines
45 KiB
PHP
<?php
|
|
/*
|
|
+--------------------------------------------------------------------------
|
|
| Invision Power Board 2.2.2
|
|
| =============================================
|
|
| by Matthew Mecham
|
|
| (c) 2001 - 2006 Invision Power Services, Inc.
|
|
| http://www.invisionpower.com
|
|
| =============================================
|
|
| Web: http://www.invisionboard.com
|
|
| http://www.ibresource.ru/products/invisionpowerboard/
|
|
| Time: Monday 05th of March 2007 10:10:54 PM
|
|
| Release: e3790216629e5a2aaf37070b32237f06
|
|
| Licence Info: http://www.invisionboard.com/?license
|
|
| http://www.ibresource.ru/license
|
|
+---------------------------------------------------------------------------
|
|
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
|
|
+---------------------------------------------------------------------------
|
|
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
|
|
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
|
|
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
|
|
+---------------------------------------------------------------------------
|
|
| > $Date: 2006-12-05 09:12:45 -0600 (Tue, 05 Dec 2006) $
|
|
| > $Revision: 765 $
|
|
| > $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 "<h1>Íåêîððåêòíûé àäðåñ</h1>Âû íå èìååòå äîñòóïà ê ýòîìó ôàéëó íàïðÿìóþ. Åñëè âû íåäàâíî îáíîâëÿëè ôîðóì, âû äîëæíû îáíîâèòü âñå ñîîòâåòñòâóþùèå ôàéëû.";
|
|
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 .= "<a href='{$this->ipsclass->base_url}act=idx'>{$this->ipsclass->vars['board_name']}</a>";
|
|
|
|
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 : '';
|
|
|
|
if ($this->ipsclass->vars['ipb_copy_number'] && $this->ipsclass->vars['ips_cp_purchase'])
|
|
{
|
|
$copyright = "";
|
|
}
|
|
else if ( TRIAL_VERSION )
|
|
{
|
|
$copyright = "<!-- Copyright Information -->
|
|
<div align='center' style='background-color:#FFF;color:#000;font-size:11px;width:auto;'>
|
|
Ðàáîòàåò íà <a href='http://www.ibresource.ru/' style='text-decoration:none' target='_blank'>ðóññêîé âåðñèè</a> <a href='http://www.invisionboard.com' target='_blank' style='color:#000'>Invision Power Board</a> (Free Trial)
|
|
{$version} © ".date("Y")." <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
|
<br /><strong>Ñêà÷àéòå òðèàë-âåðñèþ <a href='http://www.invisionboard.com' target='_blank' style='text-decoration:underline;color:#000'>òóò!</a></strong>
|
|
</div>
|
|
<!-- / Copyright -->";
|
|
}
|
|
else
|
|
{
|
|
$copyright = "<!-- Copyright Information -->
|
|
<div align='center' class='copyright'>
|
|
<a href='http://www.ibresource.ru/' style='text-decoration:none' target='_blank'>Ðóññêàÿ âåðñèÿ</a> <a href='http://www.invisionboard.com' style='text-decoration:none' target='_blank'>IP.Board</a>
|
|
{$version} © ".date("Y")." <a href='http://www.invisionpower.com' style='text-decoration:none' target='_blank'>IPS, Inc</a>.
|
|
";
|
|
|
|
if ( $this->ipsclass->vars['ipb_reg_show'] and $this->ipsclass->vars['ipb_reg_name'] )
|
|
{
|
|
$copyright .= "<div>".$this->ipsclass->lang['licensed_to']. $this->ipsclass->vars['ipb_reg_name']."</div>";
|
|
}
|
|
|
|
|
|
$copyright .= "</div>\n\t\t<!-- / 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( "<!--IBF.RULES-->", $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 .= "<!--TASK--><img src='{$this->ipsclass->base_url}act=task' border='0' height='1' width='1' alt='' /><!--ETASK-->";
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// 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'], '<!--exec.' ) )
|
|
{
|
|
$this->_parse_exec_tags();
|
|
}
|
|
|
|
$output_array['JS'] = (isset($output_array['JS']) AND !is_numeric($output_array['JS'])) ? $output_array['JS'] : '';
|
|
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% CSS %>" , $css , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% JAVASCRIPT %>" , $output_array['JS'] , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% TITLE %>" , $output_array['TITLE'] , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% BOARD %>" , $this->to_print , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% STATS %>" , $stats , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% GENERATOR %>" , $this->_get_rss_export() , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% COPYRIGHT %>" , $copyright , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% BOARD HEADER %>" , $this_header , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% BOARD FOOTER %>" , $this_footer , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% NAVIGATION %>" , $nav , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% SKINCHOOSER %>" , $skin_jump , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% LANGCHOOSER %>" , $lang_jump , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% QUICKSTATS %>" , $quickstats , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% LOFIVERSION %>" , $this->_get_lofi_link() , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% SYNDICATION %>" , $this->_get_synd_link() , $this->ipsclass->skin['_wrapper']);
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% CHARSET %>" , $this->ipsclass->vars['gb_char_set'], $this->ipsclass->skin['_wrapper']);
|
|
|
|
if ( empty($output_array['OVERRIDE']) )
|
|
{
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% MEMBER BAR %>", $output_array['MEMBER_BAR'], $this->ipsclass->skin['_wrapper']);
|
|
}
|
|
else
|
|
{
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( "<% MEMBER BAR %>", $this->ipsclass->compiled_templates['skin_global']->member_bar_disabled(), $this->ipsclass->skin['_wrapper']);
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Do we have a PM show?
|
|
//-----------------------------------------
|
|
|
|
if ( isset($this->ipsclass->member['show_popup']) AND $this->ipsclass->member['show_popup'] AND ! $this->ipsclass->member['members_disable_pm'] )
|
|
{
|
|
$this->ipsclass->DB->simple_construct( array( 'update' => 'members', 'set' => 'show_popup=0', 'where' => 'id='.$this->ipsclass->member['id'] ) );
|
|
$this->ipsclass->DB->simple_shutdown_exec();
|
|
|
|
if ( $this->ipsclass->input['act'] != 'Msg' )
|
|
{
|
|
$this->ipsclass->skin['_wrapper'] = str_replace( '<!--IBF.NEWPMBOX-->', $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'];
|
|
|
|
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], "<!--included content-->\n".$data."\n<!--/ included content-->", $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->member['language'] == $data['ldir'] )
|
|
{
|
|
$selected = ' selected="selected"';
|
|
}
|
|
else
|
|
{
|
|
$selected = "";
|
|
}
|
|
|
|
$lang_list .= "\n<option value='{$data['ldir']}'{$selected}>{$data['lname']}</option>";
|
|
}
|
|
|
|
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<option value='$id'{$selected}>{$data['set_name']}{$star}</option><!--CHILDREN:{$id}-->";
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// 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<option value='$cid'{$selected}>---- {$this->ipsclass->cache['skin_id_cache'][ $cid ]['set_name']}{$star}</option>";
|
|
}
|
|
|
|
$skin_list = str_replace( "<!--CHILDREN:{$id}-->", $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 .= "<br />\n<div class='tableborder'>\n<div class='subtitle'>FORM and GET Input</div><div class='row1' style='padding:6px'>\n";
|
|
|
|
while( list($k, $v) = each($this->ipsclass->input) )
|
|
{
|
|
if ( in_array( strtolower( $k ), array( 'pass', 'password' ) ) )
|
|
{
|
|
$v = '*******';
|
|
}
|
|
|
|
$stats .= "<strong>$k</strong> = $v<br />\n";
|
|
}
|
|
|
|
$stats .= "</div>\n</div>";
|
|
|
|
$stats .= "<br />\n<div class='tableborder'>\n<div class='subtitle'>SKIN & TASK Info</div><div class='row1' style='padding:6px'>\n";
|
|
|
|
while( list($k, $v) = each($this->ipsclass->skin) )
|
|
{
|
|
if( is_array($v) )
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if ( strlen($v) > 120 )
|
|
{
|
|
$v = substr( $v, 0, 120 ). '...';
|
|
}
|
|
|
|
$stats .= "<strong>$k</strong> = ".$this->ipsclass->txt_htmlspecialchars($v)."<br />\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 .= "<b>Next task</b> = ".$this->ipsclass->get_date( $this->ipsclass->cache['systemvars']['task_next_run'], 'LONG' )."\n<br /><b>Time now</b> = ".$this->ipsclass->get_date( time(), 'LONG' );
|
|
$stats .= "<br /><b>Timestamp Now</b> = ".time();
|
|
|
|
$stats .= "</div>\n</div>";
|
|
|
|
$stats .= "<br />\n<div class='tableborder'>\n<div class='subtitle'>Loaded PHP Templates</div><div class='row1' style='padding:6px'>\n";
|
|
|
|
$stats .= "<strong>".implode(", ",array_keys($this->ipsclass->compiled_templates))."</strong><br />\n";
|
|
$stats .= "<strong>".implode(", ",array_keys($this->ipsclass->loaded_templates))."</strong><br />\n";
|
|
|
|
$stats .= "</div>\n</div>";
|
|
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// SQL
|
|
//-----------------------------------------
|
|
|
|
if ($this->ipsclass->vars['debug_level'] >= 3)
|
|
{
|
|
$stats .= "<br />\n<div class='tableborder' style='overflow:auto'>\n<div class='subtitle'>Queries Used</div><div class='row1' style='padding:6px'>";
|
|
|
|
foreach($this->ipsclass->DB->obj['cached_queries'] as $q)
|
|
{
|
|
$q = htmlspecialchars($q);
|
|
$q = preg_replace( "/^SELECT/i" , "<span class='red'>SELECT</span>" , $q );
|
|
$q = preg_replace( "/^UPDATE/i" , "<span class='blue'>UPDATE</span>" , $q );
|
|
$q = preg_replace( "/^DELETE/i" , "<span class='orange'>DELETE</span>", $q );
|
|
$q = preg_replace( "/^INSERT/i" , "<span class='green'>INSERT</span>" , $q );
|
|
$q = str_replace( "LEFT JOIN" , "<span class='red'>LEFT JOIN</span>" , $q );
|
|
|
|
$q = preg_replace( "/(".$this->ipsclass->vars['sql_tbl_prefix'].")(\S+?)([\s\.,]|$)/", "<span class='purple'>\\1\\2</span>\\3", $q );
|
|
|
|
$stats .= "$q<hr />\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" , "<span class='red'>SELECT</span>" , $q );
|
|
$q = preg_replace( "/^UPDATE/i" , "<span class='blue'>UPDATE</span>" , $q );
|
|
$q = preg_replace( "/^DELETE/i" , "<span class='orange'>DELETE</span>", $q );
|
|
$q = preg_replace( "/^INSERT/i" , "<span class='green'>INSERT</span>" , $q );
|
|
$q = str_replace( "LEFT JOIN" , "<span class='red'>LEFT JOIN</span>" , $q );
|
|
|
|
$q = preg_replace( "/(".$this->ipsclass->vars['sql_tbl_prefix'].")(\S+?)([\s\.,]|$)/", "<span class='purple'>\\1\\2</span>\\3", $q );
|
|
|
|
$stats .= "<div style='background:#DEDEDE'><b>SHUTDOWN:</b> $q</div><hr />\n";
|
|
}
|
|
}
|
|
|
|
$stats .= "</div>\n</div>";
|
|
}
|
|
|
|
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 = "<div align='center' style='display:{$show['div_fc']}' id='fc_debug'>
|
|
<div class='row2' style='padding:8px;vertical-align:middle'><a href='javascript:togglecategory(\"debug\", 0);'>Show Debug Information</a></div>
|
|
</div>
|
|
|
|
<div align='center' style='display:{$show['div_fo']}' id='fo_debug'>
|
|
<div class='row2' style='padding:8px;vertical-align:middle'><a href='javascript:togglecategory(\"debug\", 1);'>Hide Debug Information</a></div>
|
|
<br />
|
|
<div class='tableborder' align='left'>
|
|
<div class='maintitle'>Debug Information</div>
|
|
<div style='padding:5px;background:#8394B2;'>$stats</div>
|
|
</div>
|
|
</div>";
|
|
}
|
|
|
|
return $stats;
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// check_debug
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function _check_debug()
|
|
{
|
|
if ($this->ipsclass->DB->obj['debug'])
|
|
{
|
|
flush();
|
|
print "<html><head><title>SQL Debugger</title><body bgcolor='white'><style type='text/css'> TABLE, TD, TR, BODY { font-family: verdana,arial, sans-serif;color:black;font-size:11px }</style>";
|
|
print "<h1 align='center'>SQL Total Time: {$this->ipsclass->DB->sql_time} for {$this->ipsclass->DB->query_count} queries</h1><br />".$this->ipsclass->DB->debug_html;
|
|
print "<br /><div align='center'><strong>Total SQL Time: {$this->ipsclass->DB->sql_time}</div></body></html>";
|
|
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($_REQUEST['key']) ? trim( $_REQUEST['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 == 'v2.2.2' )
|
|
{
|
|
$this->ipsclass->version = 'v'.$latest_version['upgrade_version_human'];
|
|
}
|
|
|
|
if ( $this->ipsclass->acpversion == '22011' )
|
|
{
|
|
$this->ipsclass->acpversion = $latest_version['upgrade_version_id'];
|
|
}
|
|
|
|
list( $cust_number, $acc_number ) = explode( ',', $cust_number_tmp );
|
|
|
|
@header( "Content-type: text/xml" );
|
|
$out = '<?xml version="1.0" encoding="WINDOWS-1251"?'.'>';
|
|
$out .= "\n<ipscheck>\n\t<result>1</result>\n\t<customer_id>$cust_number</customer_id>\n\t<account_id>$acc_number</account_id>\n\t"
|
|
. "<version_id>{$this->ipsclass->acpversion}</version_id>\n\t<version_string>{$this->ipsclass->version}</version_string>\n\t<release_hash><![CDATA[<{%dyn.down.var.md5%}]]>></release_hash>"
|
|
. "\n</ipscheck>";
|
|
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 == 'v2.2.2' )
|
|
{
|
|
$this->ipsclass->version = 'v'.$latest_version['upgrade_version_human'];
|
|
}
|
|
|
|
if ( $this->ipsclass->acpversion == '22011' )
|
|
{
|
|
$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 "<result>0</result>\nÂû íå èìååòå äîñòóïà ê ýòîé ñòðàíèöå.";
|
|
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'] ) );
|
|
}
|
|
|
|
if ( defined('LEGACY_MODE') && LEGACY_MODE == 1 )
|
|
{
|
|
$css .= '<style type="text/css" media="all">table { width:100%; }'."\n".'tr, td { padding:4px }</style>';
|
|
}
|
|
|
|
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
|
|
|
|
|
|
?>
|