diff --git a/upload/admin.php b/upload/admin.php index 2b0fbd24..4facfcc1 100644 --- a/upload/admin.php +++ b/upload/admin.php @@ -2,27 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Email: matt@invisionpower.com | 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: 2005-10-11 14:29:43 +0100 (Tue, 11 Oct 2005) $ -| > $Revision: 39 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -33,374 +24,18 @@ +-------------------------------------------------------------------------- */ -/** -* Main ACP executable wrapper. -* -* Set-up and load module to run -* -* @package InvisionPowerBoard -* @author Matt Mecham -* @version 2.1 -*/ - -/** -* Script type -* -*/ -define( 'IPB_THIS_SCRIPT', 'admin' ); -define( 'IPB_LOAD_SQL' , 'admin_queries' ); - require_once( './init.php' ); - -//----------------------------------------------- -// USER CONFIGURABLE ELEMENTS -//----------------------------------------------- - -// Check IP address to see if they match? -// this may cause problems for users on proxies -// where the IP address changes during a session - -$check_ip = 1; - -// Use GZIP content encoding for fast page generation -// in the admin center? - -$use_gzip = 1; - -//=========================================================================== -// NO USER EDITABLE SECTIONS BELOW -//=========================================================================== - - -if (function_exists("set_time_limit") == 1 and SAFE_MODE_ON == 0) -{ - @set_time_limit(0); -} - -//-------------------------------- -// Load up our classes -//-------------------------------- - -require ROOT_PATH . "sources/ipsclass.php"; -require ROOT_PATH . "sources/classes/class_session.php"; -require ROOT_PATH . "sources/classes/class_forums.php"; -require KERNEL_PATH . "class_converge.php"; require ROOT_PATH . "conf_global.php"; -require ROOT_PATH . "sources/lib/admin_functions.php"; -require ROOT_PATH . "sources/lib/admin_skin.php"; -$ipsclass = new ipsclass(); -$ipsclass->vars = $INFO; +//----------------------------------------- +// NEVER EVER try and be helpful and update +// the link below when the ACP folder changes +// You'll just be giving hackers an easy way +// to find it... +//----------------------------------------- -//-------------------------------- -// The clocks a' tickin' -//-------------------------------- - -$Debug = new Debug; -$Debug->startTimer(); - -//-------------------------------- -// Additional set up -//-------------------------------- - -if ( defined($ipsclass->vars['safe_mode_skins']) ) -{ - define( 'SAFE_MODE_SKINS', $ipsclass->vars['safe_mode_skins'] ); -} -else -{ - define( 'SAFE_MODE_SKINS', SAFE_MODE_ON ); -} - -//=========================================================================== -// Load up our database library -//=========================================================================== - -$ipsclass->init_db_connection(); - -//=========================================================================== -// Get cache... -//=========================================================================== - -$ipsclass->init_load_cache( array('rss_export', 'bbcode', 'badwords', 'emoticons', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats') ); - -//-------------------------------- -// Set up classes -//-------------------------------- - -$ipsclass->sess = new session(); -$ipsclass->sess->ipsclass =& $ipsclass; - -$ipsclass->forums = new forum_functions(); -$ipsclass->forums->ipsclass =& $ipsclass; - -//-------------------------------- -// Set up incoming array -//-------------------------------- - -$ipsclass->parse_incoming(); - -//-------------------------------- -// Initialize the FUNC -//-------------------------------- - -$ipsclass->initiate_ipsclass(); - -//-------------------------------- -// Set converge -//-------------------------------- - -$ipsclass->converge = new class_converge( $ipsclass->DB ); - -//-------------------------------- -// Message in a bottle? -//-------------------------------- - -if ( $ipsclass->input['messageinabottleacp'] ) -{ - $ipsclass->input['messageinabottleacp'] = $ipsclass->clean_evil_tags( $ipsclass->txt_UNhtmlspecialchars( urldecode($ipsclass->input['messageinabottleacp']) ) ); - $ipsclass->main_msg = $ipsclass->input['messageinabottleacp']; -} - -//-------------------------------- -// Fix up base URLs -//-------------------------------- - -$ipsclass->skin_acp = 'IPB2_Standard'; - -$ipsclass->base_url = $ipsclass->vars['board_url']."/admin." .$ipsclass->vars['php_ext'].'?adsess='.$ipsclass->input['adsess']; -$ipsclass->skin_url = $ipsclass->vars['board_url']."/skin_acp/".$ipsclass->skin_acp; - -//-------------------------------- -// Load global ACP skin -//-------------------------------- - -$ipsclass->skin_global_acp = $ipsclass->acp_load_template('cp_skin_global'); - -//-------------------------------- -// Import Admin Functions -//-------------------------------- - -$ipsclass->admin = new admin_functions(); -$ipsclass->admin->ipsclass =& $ipsclass; - -//------------------------------------------------ -// Load skin & lang -//------------------------------------------------ - -$ipsclass->load_skin(); - -$ipsclass->skin_id = $ipsclass->skin['_setid']; -$ipsclass->vars['img_url'] = 'style_images/' . $ipsclass->skin['_imagedir']; -$ipsclass->vars['AVATARS_URL'] = 'style_avatars'; -$ipsclass->vars['EMOTICONS_URL'] = 'style_emoticons/<#EMO_DIR#>'; -$ipsclass->vars['mime_img'] = 'style_images/<#IMG_DIR#>/folder_mime_types'; - -$ipsclass->load_template( 'skin_global' ); -$ipsclass->load_language( 'lang_global' ); - -//------------------------------------------------ -// Import Skinable elements -//------------------------------------------------ - -$ipsclass->adskin = new admin_skin(); -$ipsclass->adskin->ipsclass =& $ipsclass; -$ipsclass->adskin->init_admin_skin(); - -//------------------------------------------------------ -// Require.. -//------------------------------------------------------ - -require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); -$ipsclass->cache_func = new admin_cache_functions(); -$ipsclass->cache_func->ipsclass =& $ipsclass; - -//------------------------------------------------------ -// Legacy mode? -//------------------------------------------------------ - -if ( LEGACY_MODE ) -{ - $DB =& $ipsclass->DB; - $std =& $ipsclass; - $ibforums =& $ipsclass; - $forums =& $ipsclass->forums; - $print =& $ipsclass->print; - $sess =& $ipsclass->sess; -} - -//------------------------------------------------------ -// ACP Session-ize the member -//------------------------------------------------------ - -$ipsclass->admin_session = array( '_session_validated' => 0 ); - -$ipsclass->admin->acp_session_validation( $check_ip ); - -//------------------------------------------------------ -// What are we doing, then? -//------------------------------------------------------ - -if ( ( $ipsclass->input['act'] != 'login' ) AND ( ! $ipsclass->admin_session['_session_validated'] ) ) -{ - //------------------------------ - // Force log in - //------------------------------ - - $ipsclass->input['act'] = 'login'; - $ipsclass->input['code'] = 'login'; - - require_once( ROOT_PATH."sources/action_admin/login.php" ); - - $runme = new ad_login(); - $runme->ipsclass =& $ipsclass; - $runme->auto_run(); - - exit(); -} -else if ( strtolower($ipsclass->input['act']) == 'login' ) -{ - //------------------------------ - // Ok - got a log in, kill section - //------------------------------ - - $ipsclass->input['section'] = ''; -} - -//------------------------------------------------------ -// Re-define base URL -//------------------------------------------------------ - -$ipsclass->base_url = $ipsclass->vars['board_url']."/admin.".$ipsclass->vars['php_ext'].'?adsess='.$ipsclass->input['adsess']; - -//------------------------------------------------------ -// What do you want to require today? -//------------------------------------------------------ - -$choice = array( - 'content' => array( 'acp_content' , 'acp_content' , 'content' ), - 'lookandfeel' => array( 'acp_lookandfeel' , 'acp_lookandfeel' , 'lookandfeel' ), - 'tools' => array( 'acp_tools' , 'acp_tools' , 'tools' ), - 'components' => array( 'acp_components' , 'acp_components' , 'components' ), - 'admin' => array( 'acp_admin' , 'acp_admin' , 'admin' ), - - # Non CP specific action - 'xmlout' => array( "xmlout" , 'xmlout' ), - 'prefs' => array( "prefs" , 'prefs' ), - 'login' => array( 'login' , 'login' ), - 'rtempl' => array( 'remote_template' , 'remote_template' ), - 'quickhelp' => array( "quickhelp" , 'quickhelp' ), - ); - -//--------------------------------------------------- -// Check to make sure the array key exits.. -//--------------------------------------------------- - -if ( ( ! isset($choice[ $ipsclass->input['section'] ][0]) ) OR ( ! $ipsclass->input['section'] ) ) -{ - # Got an act? - if ( $choice[ $ipsclass->input['act'] ][0] ) - { - require_once( ROOT_PATH.'sources/action_admin/'.$choice[ $ipsclass->input['act'] ][0].'.php' ); - $constructor = 'ad_'.$choice[ $ipsclass->input['act'] ][1]; - $runmeagain = new $constructor; - $runmeagain->ipsclass =& $ipsclass; - $runmeagain->auto_run(); - } - else - { - $ipsclass->input['section'] = 'admin'; - } -} - -//--------------------------------------------------- -// Menu type -//--------------------------------------------------- - -$ipsclass->menu_type = $choice[ $ipsclass->input['section'] ][2]; - -//--------------------------------------------------- -// Require and run -//--------------------------------------------------- - -require ROOT_PATH."sources/acp_loaders/".$choice[ $ipsclass->input['section'] ][0].".php"; - -$runme = new $choice[ $ipsclass->input['section'] ][1]; -$runme->ipsclass =& $ipsclass; -$runme->auto_run(); - -//+------------------------------------------------- -// Skin emergency mode... -//+------------------------------------------------- - -function skin_emergency() -{ - global $ipsclass; - - if ( $_GET['skinrebuild'] == 1 ) - { - print "Попытка перестроить стили прошла неудачно.
Пожалуйста, свяжитесь с технической поддержкой для оказания помощи."; - exit(); - } - - //----------------------------------------- - // Rebuild ID cache.. - //----------------------------------------- - - require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); - $adcache = new admin_cache_functions(); - $adcache->ipsclass =& $this->ipsclass; - - $ipsclass->cache['skin_id_cache'] = $adcache->_rebuild_skin_id_cache(); - - //----------------------------------------- - // Attempt to recache the default skin - //----------------------------------------- - - foreach( $ipsclass->cache['skin_id_cache'] as $sid => $data ) - { - if ( $data['set_default'] ) - { - $default_skin = $data['set_skin_set_id']; - } - } - - //----------------------------------------- - // Load library - //----------------------------------------- - - require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); - $ipsclass->cache_func = new admin_cache_functions(); - $ipsclass->cache_func->ipsclass =& $this->ipsclass; - $ipsclass->cache_func->_rebuild_all_caches( array($default_skin) ); - - //----------------------------------------- - // Try to turn on safe mode - //----------------------------------------- - - if ( ! @file_exists( CACHE_PATH.'cache/skin_cache/cacheid_'.$default_skin.'/skin_global.php' ) ) - { - if ( $ipsclass->vars['safe_mode_skins'] != 1 ) - { - $ipsclass->DB->do_update( "conf_settings", array( 'conf_value' => 1 ), "conf_key='safe_mode_skins'" ); - - require_once( ROOT_PATH.'sources/action_admin/settings.php' ); - $adsettings = new ad_settings(); - $adsettings->ipsclass =& $this->ipsclass; - $adsettings->setting_rebuildcache(); - } - } - - //----------------------------------------- - // Update panic message - //----------------------------------------- - - $ipsclass->DB->simple_exec_query( array( "delete" => "cache_store", "where" => "cs_key='skinpanic'" ) ); - $ipsclass->DB->do_insert( 'cache_store', array( 'cs_value' => 'rebuildemergency', 'cs_key' => 'skinpanic' ) ); - - $ipsclass->boink_it( $ipsclass->base_url.'&skinrebuild=1' ); -} +header( 'Location: '.$INFO['base_url'].'admin/index.php' ); ?> \ No newline at end of file diff --git a/upload/admin/favicon.ico b/upload/admin/favicon.ico new file mode 100644 index 00000000..41b763df Binary files /dev/null and b/upload/admin/favicon.ico differ diff --git a/upload/admin/index.php b/upload/admin/index.php new file mode 100644 index 00000000..0f7d660e --- /dev/null +++ b/upload/admin/index.php @@ -0,0 +1,407 @@ + $Date: 2006-05-23 15:58:32 +0100 (Tue, 23 May 2006) $ +| > $Revision: 271 $ +| > $Author: bfarber $ ++--------------------------------------------------------------------------- +| +| > Admin wrapper script +| > Script written by Matt Mecham +| > Date started: 1st March 2002 +| ++-------------------------------------------------------------------------- +*/ + +/** +* Main ACP executable wrapper. +* +* Set-up and load module to run +* +* @package InvisionPowerBoard +* @author Matt Mecham +* @version 2.1 +*/ + +/** +* Script type +* +*/ +define( 'IPB_THIS_SCRIPT', 'admin' ); +define( 'IPB_LOAD_SQL' , 'admin_queries' ); + +require_once( '../init.php' ); + +//=========================================================================== +// NO USER EDITABLE SECTIONS BELOW +//=========================================================================== + +if (function_exists("set_time_limit") == 1 and SAFE_MODE_ON == 0) +{ + @set_time_limit(0); +} + +//-------------------------------- +// Load up our classes +//-------------------------------- + +require ROOT_PATH . "sources/ipsclass.php"; +require ROOT_PATH . "sources/classes/class_session.php"; +require ROOT_PATH . "sources/classes/class_forums.php"; +require KERNEL_PATH . "class_converge.php"; +require ROOT_PATH . "conf_global.php"; +require ROOT_PATH . "sources/lib/admin_functions.php"; +require ROOT_PATH . "sources/lib/admin_skin.php"; + +$ipsclass = new ipsclass(); + +$ipsclass->vars = $INFO; + +//-------------------------------- +// The clocks a' tickin' +//-------------------------------- + +$Debug = new Debug; +$Debug->startTimer(); + +//-------------------------------- +// Additional set up +//-------------------------------- + +if ( isset($ipsclass->vars['safe_mode_skins']) ) +{ + define( 'SAFE_MODE_SKINS', $ipsclass->vars['safe_mode_skins'] ); +} +else +{ + define( 'SAFE_MODE_SKINS', SAFE_MODE_ON ); +} + +//=========================================================================== +// Load up our database library +//=========================================================================== + +$ipsclass->init_db_connection(); + +//=========================================================================== +// Get cache... +//=========================================================================== + +$ipsclass->init_cache_setup(); +$ipsclass->init_load_cache( array('rss_export', 'bbcode', 'badwords', 'emoticons', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats') ); + +//-------------------------------- +// Set up classes +//-------------------------------- + +$ipsclass->sess = new session(); +$ipsclass->sess->ipsclass =& $ipsclass; + +$ipsclass->forums = new forum_functions(); +$ipsclass->forums->ipsclass =& $ipsclass; + +//-------------------------------- +// Set up incoming array +//-------------------------------- + +$ipsclass->parse_incoming(); + +//-------------------------------- +// Initialize the FUNC +//-------------------------------- + +$ipsclass->initiate_ipsclass(); + +//-------------------------------- +// Set converge +//-------------------------------- + +$ipsclass->converge = new class_converge( $ipsclass->DB ); + +//----------------------------------------- +// Clean up ad session +//----------------------------------------- + +$ipsclass->input['adsess'] = substr( preg_replace( "#[^\w\d]#", "", $ipsclass->input['adsess'] ), 0, 32 ); + +//-------------------------------- +// Message in a bottle? +//-------------------------------- + +if ( isset($ipsclass->input['messageinabottleacp']) AND $ipsclass->input['messageinabottleacp'] ) +{ + $ipsclass->input['messageinabottleacp'] = $ipsclass->clean_evil_tags( $ipsclass->txt_UNhtmlspecialchars( urldecode($ipsclass->input['messageinabottleacp']) ) ); + $ipsclass->main_msg = $ipsclass->input['messageinabottleacp']; +} + +//-------------------------------- +// Fix up base URLs +//-------------------------------- + +$ipsclass->skin_acp = 'IPB2_Standard'; + +$ipsclass->base_url = $ipsclass->vars['board_url']."/" . IPB_ACP_DIRECTORY . "/index." . $ipsclass->vars['php_ext'].'?adsess='.$ipsclass->input['adsess']; +$ipsclass->skin_acp_url = $ipsclass->vars['board_url']."/skin_acp/".$ipsclass->skin_acp; + +//-------------------------------- +// Load global ACP skin +//-------------------------------- + +$ipsclass->skin_acp_global = $ipsclass->acp_load_template('cp_skin_global'); + +//-------------------------------- +// Load public skin +//-------------------------------- + +$ipsclass->load_skin(); + +//-------------------------------- +// Import Admin Functions +//-------------------------------- + +$ipsclass->admin = new admin_functions(); +$ipsclass->admin->ipsclass =& $ipsclass; +$ipsclass->admin->img_url = $ipsclass->skin_acp_url; + +//------------------------------------------------ +// Load skin & lang +//------------------------------------------------ + +$ipsclass->vars['AVATARS_URL'] = $ipsclass->vars['board_url'].'/style_avatars'; +$ipsclass->vars['EMOTICONS_URL'] = $ipsclass->vars['board_url'].'/style_emoticons/<#EMO_DIR#>'; +$ipsclass->vars['mime_img'] = $ipsclass->vars['board_url'].'/style_images/<#IMG_DIR#>/folder_mime_types'; + +$ipsclass->load_language( 'lang_global' ); + +//------------------------------------------------ +// Import Skinable elements +//------------------------------------------------ + +$ipsclass->adskin = new admin_skin(); +$ipsclass->adskin->ipsclass =& $ipsclass; +$ipsclass->adskin->init_admin_skin(); + +//------------------------------------------------------ +// Require.. +//------------------------------------------------------ + +require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); +$ipsclass->cache_func = new admin_cache_functions(); +$ipsclass->cache_func->ipsclass =& $ipsclass; + +//------------------------------------------------------ +// Legacy mode? +//------------------------------------------------------ + +if ( LEGACY_MODE ) +{ + $DB =& $ipsclass->DB; + $std =& $ipsclass; + $ibforums =& $ipsclass; + $forums =& $ipsclass->forums; + $print =& $ipsclass->print; + $sess =& $ipsclass->sess; +} + +//------------------------------------------------------ +// ACP Session-ize the member +//------------------------------------------------------ + +$ipsclass->admin_session = array( '_session_validated' => 0 ); + +$ipsclass->admin->acp_session_validation(); + +//------------------------------------------------------ +// Generate auth key +//------------------------------------------------------ + +$ipsclass->_admin_auth_key = $ipsclass->admin->security_auth_get(); + +//------------------------------------------------------ +// What are we doing, then? +//------------------------------------------------------ + +$ipsclass->input['act'] = isset($ipsclass->input['act']) ? $ipsclass->input['act'] : ''; +$ipsclass->input['st'] = isset($ipsclass->input['st']) ? intval($ipsclass->input['st']) : 0; + +if ( ( $ipsclass->input['act'] != 'login' ) AND ( ! $ipsclass->admin_session['_session_validated'] ) ) +{ + //------------------------------ + // Force log in + //------------------------------ + + $ipsclass->input['act'] = 'login'; + $ipsclass->input['code'] = 'login'; + + require_once( ROOT_PATH."sources/action_admin/login.php" ); + + $runme = new ad_login(); + $runme->ipsclass =& $ipsclass; + $runme->auto_run(); + + exit(); +} +else if ( strtolower($ipsclass->input['act']) == 'login' ) +{ + //------------------------------ + // Ok - got a log in, kill section + //------------------------------ + + $ipsclass->input['section'] = ''; +} + +//------------------------------------------------------ +// Fix up board url +//------------------------------------------------------ + +if ( $ipsclass->admin->session_type == 'cookie' ) +{ + $ipsclass->base_url = $ipsclass->vars['board_url']."/" . IPB_ACP_DIRECTORY . "/index." . $ipsclass->vars['php_ext'].'?'; +} +else +{ + $ipsclass->base_url = $ipsclass->vars['board_url']."/" . IPB_ACP_DIRECTORY . "/index." . $ipsclass->vars['php_ext'].'?adsess='.$ipsclass->input['adsess']; +} + +//------------------------------------------------------ +// What do you want to require today? +//------------------------------------------------------ + +$choice = array( + 'content' => array( 'acp_content' , 'acp_content' , 'content' ), + 'lookandfeel' => array( 'acp_lookandfeel' , 'acp_lookandfeel' , 'lookandfeel' ), + 'tools' => array( 'acp_tools' , 'acp_tools' , 'tools' ), + 'components' => array( 'acp_components' , 'acp_components' , 'components' ), + 'admin' => array( 'acp_admin' , 'acp_admin' , 'admin' ), + 'help' => array( 'acp_help' , 'acp_help' , 'help' ), + + # Non CP specific action + 'xmlout' => array( "xmlout" , 'xmlout' ), + 'prefs' => array( "prefs" , 'prefs' ), + 'login' => array( 'login' , 'login' ), + 'rtempl' => array( 'remote_template' , 'remote_template' ), + 'quickhelp' => array( "quickhelp" , 'quickhelp' ), + ); + +//--------------------------------------------------- +// Check to make sure the array key exits.. +//--------------------------------------------------- + +if ( ( ! isset($ipsclass->input['section']) ) OR ( ! isset($choice[ $ipsclass->input['section'] ][0]) ) OR ( ! $ipsclass->input['section'] ) ) +{ + # Got an act? + if ( isset($ipsclass->input['act']) AND isset($choice[ $ipsclass->input['act'] ][0]) AND $choice[ $ipsclass->input['act'] ][0] ) + { + require_once( ROOT_PATH.'sources/action_admin/'.$choice[ $ipsclass->input['act'] ][0].'.php' ); + $constructor = 'ad_'.$choice[ $ipsclass->input['act'] ][1]; + $runmeagain = new $constructor; + $runmeagain->ipsclass =& $ipsclass; + $runmeagain->auto_run(); + } + else + { + $ipsclass->input['section'] = 'admin'; + } +} + +//--------------------------------------------------- +// Menu type +//--------------------------------------------------- + +$ipsclass->menu_type = $choice[ $ipsclass->input['section'] ][2]; + +//--------------------------------------------------- +// Require and run +//--------------------------------------------------- + +require ROOT_PATH."sources/acp_loaders/".$choice[ $ipsclass->input['section'] ][0].".php"; + +$runme = new $choice[ $ipsclass->input['section'] ][1]; +$runme->ipsclass =& $ipsclass; +$runme->auto_run(); + +//+------------------------------------------------- +// Skin emergency mode... +//+------------------------------------------------- + +function skin_emergency() +{ + global $ipsclass; + + if ( $_GET['skinrebuild'] == 1 ) + { + print "Attempted to rebuild the skins and failed.
Please contact technical support for more assistance."; + exit(); + } + + //----------------------------------------- + // Rebuild ID cache.. + //----------------------------------------- + + require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); + $adcache = new admin_cache_functions(); + $adcache->ipsclass =& $this->ipsclass; + + $ipsclass->cache['skin_id_cache'] = $adcache->_rebuild_skin_id_cache(); + + //----------------------------------------- + // Attempt to recache the default skin + //----------------------------------------- + + foreach( $ipsclass->cache['skin_id_cache'] as $data ) + { + if ( $data['set_default'] ) + { + $default_skin = $data['set_skin_set_id']; + } + } + + //----------------------------------------- + // Load library + //----------------------------------------- + + require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); + $ipsclass->cache_func = new admin_cache_functions(); + $ipsclass->cache_func->ipsclass =& $this->ipsclass; + $ipsclass->cache_func->_rebuild_all_caches( array($default_skin) ); + + //----------------------------------------- + // Try to turn on safe mode + //----------------------------------------- + + if ( ! @file_exists( CACHE_PATH.'cache/skin_cache/cacheid_'.$default_skin.'/skin_global.php' ) ) + { + if ( $ipsclass->vars['safe_mode_skins'] != 1 ) + { + $ipsclass->DB->do_update( "conf_settings", array( 'conf_value' => 1 ), "conf_key='safe_mode_skins'" ); + + require_once( ROOT_PATH.'sources/action_admin/settings.php' ); + $adsettings = new ad_settings(); + $adsettings->ipsclass =& $this->ipsclass; + $adsettings->setting_rebuildcache(); + } + } + + //----------------------------------------- + // Update panic message + //----------------------------------------- + + $ipsclass->DB->simple_exec_query( array( "delete" => "cache_store", "where" => "cs_key='skinpanic'" ) ); + $ipsclass->DB->do_insert( 'cache_store', array( 'cs_value' => 'rebuildemergency', 'cs_key' => 'skinpanic' ) ); + + $ipsclass->boink_it( $ipsclass->base_url.'&skinrebuild=1' ); +} + + +?> \ No newline at end of file diff --git a/upload/cache/._index.html b/upload/cache/._index.html new file mode 100644 index 00000000..0f63958b Binary files /dev/null and b/upload/cache/._index.html differ diff --git a/upload/cache/index.html b/upload/cache/index.html index 787531db..52a588b2 100644 --- a/upload/cache/index.html +++ b/upload/cache/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

Ошибка < Русская версия Invision Power Board

-
-Вы попали на несуществующую страницу!
Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
-Invision Power Board: - - - + Invision Power Board - Bulletin Board System

403: Invision Power Board -> Forbidden


You have reached this Page in error, please use your back button to return to Invision Board.
Invision Power Board \ No newline at end of file diff --git a/upload/cache/lang_cache/._index.html b/upload/cache/lang_cache/._index.html new file mode 100644 index 00000000..0f63958b Binary files /dev/null and b/upload/cache/lang_cache/._index.html differ diff --git a/upload/cache/lang_cache/en/acp_lang_acpperms.php b/upload/cache/lang_cache/en/acp_lang_acpperms.php new file mode 100644 index 00000000..93d31c15 --- /dev/null +++ b/upload/cache/lang_cache/en/acp_lang_acpperms.php @@ -0,0 +1,197 @@ + "Diagnostics", +'help:diag:do' => "Perform Diagnostics", +'help:support' => "Support Pages", +'help:support:view' => "View Support Pages", + +// 2.1.5 +'admin:splash' => "Splash Page", +'admin:splash:splash' => "Allow to view the splash page", + + +'admin:adminlog' => "Admin Logs", +'admin:adminlog:remove' => "", +'admin:components' => "Components System", +'admin:components:add' => "", +'admin:components:edit' => "", +'admin:components:export' => "", +'admin:components:import' => "", +'admin:emailerror' => "Email Error Logs", +'admin:emailerror:remove' => "", +'admin:emaillog' => "Email Logs", +'admin:emaillog:remove' => "", +'admin:modlog' => "Moderation Logs", +'admin:modlog:remove' => "", +'admin:spiderlog' => "Search Engine Logs", +'admin:spiderlog:remove' => "", +'admin:stats' => "Statistics", +'admin:stats:show' => "Generate and view statistics", +'admin:warnlog' => "Warn Log", +'admin:warnlog:remove' => "", +'admin:warnlog:view' => "", +'content:attach' => "Attachments", +'content:attach:add' => "", +'content:attach:edit' => "", +'content:attach:export' => "", +'content:attach:import' => "", +'content:attach:remove' => "", +'content:attach:search' => "", +'content:attach:stats' => "Allow VIEW STATISTICS Permission", +'content:babw' => "Ban & Bad Word Filters", +'content:babw:ban-add' => "Allow ADD Ban Entries", +'content:babw:ban-remove' => "Allow REMOVE Ban Entries", +'content:babw:ban-view' => "Allow VIEW Ban Entries", +'content:babw:bw-add' => "Allow ADD Bad Word Entries", +'content:babw:bw-edit' => "Allow EDIT Bad Word Entries", +'content:babw:bw-export' => "Allow EXPORT Bad Word Entries", +'content:babw:bw-import' => "Allow IMPORT Bad Word Entries", +'content:babw:bw-remove' => "Allow REMOVE Bad Word Entries", +'content:bbcode' => "Custom BBCode", +'content:bbcode:add' => "", +'content:bbcode:edit' => "", +'content:bbcode:export' => "", +'content:bbcode:import' => "", +'content:bbcode:remove' => "", +'content:calendars' => "Calendars", +'content:calendars:add' => "", +'content:calendars:edit' => "", +'content:calendars:recache' => "", +'content:field' => "Custom Profile Fields", +'content:field:add' => "", +'content:field:edit' => "", +'content:field:remove' => "", +'content:forum' => "Forum Control", +'content:forum:add' => "", +'content:forum:edit' => "", +'content:forum:empty' => "Allow EMPTY Forums", +'content:forum:permedit' => "Allow EDIT Forum Permission", +'content:forum:recount' => "Allow RECOUNT Forum", +'content:forum:remove' => "", +'content:forum:reorder' => "Allow REORDER Forum", +'content:forum:rules' => "Allow MANAGE Forum Rules", +'content:forum:skin' => "Allow MANAGE Forum Skins", +'content:group' => "User Groups", +'content:group:add' => "", +'content:group:edit' => "", +'content:group:perms' => "Allow MANAGE Permission Masks", +'content:group:remove' => "", +'content:mem' => "Members", +'content:mem:add' => "", +'content:mem:ban' => "Allow BAN Members", +'content:mem:edit' => "", +'content:mem:remove' => "", +'content:mem:suspend' => "Allow SUSPEND Members", +'content:mem:title-add' => "Allow ADD Member Title", +'content:mem:title-edit' => "Allow EDIT Member Title", +'content:mem:title-remove' => "Allow REMOVE Member Title", +'content:mem:title-view' => "Allow VIEW Member Title", +'content:mod' => "Moderators", +'content:mod:add' => "", +'content:mod:edit' => "", +'content:mod:remove' => "", +'content:msubs' => "Subscriptions", +'content:msubs:add' => "", +'content:msubs:edit' => "", +'content:msubs:install' => "Allow INSTALL Gateways", +'content:msubs:remove' => "", +'content:msubs:search' => "", +'content:mtools' => "Member Tools", +'content:mtools:view' => "", +'content:mtools:mod' => "Allow MANAGE Moderation/Locked Queue", +'content:multimod' => "Multi-Moderation", +'content:multimod:add' => "", +'content:multimod:edit' => "", +'content:multimod:remove' => "", +'content:rssexport' => "RSS Export", +'content:rssexport:add' => "", +'content:rssexport:edit' => "", +'content:rssexport:recache' => "", +'content:rssimport' => "RSS Import", +'content:rssimport:add' => "", +'content:rssimport:edit' => "", +'content:rssimport:recache' => "", +'content:rssimport:remove' => "", +'lookandfeel:emoticons' => "Emoticons", +'lookandfeel:emoticons:add' => "", +'lookandfeel:emoticons:edit' => "", +'lookandfeel:emoticons:export' => "", +'lookandfeel:emoticons:import' => "", +'lookandfeel:emoticons:remove' => "", +'lookandfeel:emoticons:upload' => "", +'lookandfeel:image' => "Skin Macros", +'lookandfeel:image:add' => "", +'lookandfeel:image:edit' => "", +'lookandfeel:image:remove' => "", +'lookandfeel:import' => "Skin Import and Export", +'lookandfeel:import:export' => "", +'lookandfeel:import:import' => "", +'lookandfeel:lang' => "Language", +'lookandfeel:lang:add' => "", +'lookandfeel:lang:edit' => "", +'lookandfeel:lang:export' => "", +'lookandfeel:lang:import' => "", +'lookandfeel:lang:remove' => "", +'lookandfeel:sets' => "Skin Sets", +'lookandfeel:sets:add' => "", +'lookandfeel:sets:edit' => "", +'lookandfeel:sets:rebuild' => "", +'lookandfeel:sets:remove' => "", +'lookandfeel:skindiff' => "Skin Differences", +'lookandfeel:skindiff:rundiff' => "Allow RUN DIFF permission", +'lookandfeel:skintools' => "Skin Tools", +'lookandfeel:skintools:changemember' => "Allow CHANGE Member's Skin", +'lookandfeel:skintools:recache' => "Allow RECACHE skins", +'lookandfeel:skintools:search' => "Allow SEARCH AND REPLACE templates", +'lookandfeel:style' => "Skin CSS", +'lookandfeel:style:edit' => "", +'lookandfeel:templ' => "Skin HTML Templates", +'lookandfeel:templ:add' => "", +'lookandfeel:templ:edit' => "", +'lookandfeel:templ:remove' => "", +'lookandfeel:wrap' => "Skin Headers & Footers", +'lookandfeel:wrap:edit' => "", +'tools:admin' => "Cache Tools", +'tools:admin:recache' => "", +'tools:help' => "Help", +'tools:help:add' => "", +'tools:help:edit' => "", +'tools:help:remove' => "", +'tools:loginauth' => "Log-in Authentication", +'tools:loginauth:add' => "", +'tools:loginauth:diagnostics' => "Allow VIEW DIAGNOSTICS Permission", +'tools:loginauth:edit' => "", +'tools:loginauth:export' => "", +'tools:loginauth:import' => "", +'tools:op' => "Settings", +'tools:portal' => "Portal Plug-ins", +'tools:op:add' => "", +'tools:op:edit' => "", +'tools:op:export' => "", +'tools:op:import' => "", +'tools:op:remove' => "", +'tools:op:search' => "", +'tools:postoffice' => "Post Office", +'tools:postoffice:add' => "", +'tools:postoffice:edit' => "", +'tools:postoffice:remove' => "", +'tools:postoffice:send' => "Allow MAIL SEND Permission", +'tools:rebuild' => "Recount & Rebuild", +'tools:rebuild:rebuild' => "", +'tools:rebuild:recount' => "", +'tools:task' => "Task Manager", +'tools:task:add' => "", +'tools:task:edit' => "", +'tools:task:log' => "", +'tools:task:remove' => "", +'tools:task:runnow' => "Allow RUN NOW Permission", +'admin' => "Admin", +'content' => "Management", +'lookandfeel' => "Look and Feel", +'components' => "Components", +'tools' => "Tools and Settings", +'help' => "Help and Support", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/acp_lang_member.php b/upload/cache/lang_cache/en/acp_lang_member.php new file mode 100644 index 00000000..3d18f4f1 --- /dev/null +++ b/upload/cache/lang_cache/en/acp_lang_member.php @@ -0,0 +1,28 @@ + "Use Trash Can?", +'mem_delete_posts_trash_desc' => "Members posts and topics will be placed in the trashcan instead of deleted.", +'mem_delete_posts_title' => "Delete Posts/Topics For:", +'mem_delete_delete_posts' => "Delete ALL of this member's %s POSTS?", +'mem_delete_delete_posts_desc' => 'If enabled: a topic started by this member that has no replies is deleted otherwise the topic is left.', +'mem_delete_delete_topics' => "Delete ALL of this member's %s TOPICS?", +'mem_delete_delete_topics_desc' => "If enabled: all topics started by this member will be deleted, regardless of other member's replies.", +'mem_delete_delete_pergo' => "Delete n posts/topics per iteration", +'mem_delete_delete_pergo_desc' => "Deleting posts and topics is fairly intensive.", +'mem_delete_process' => "Process...", + +'mem_edit_pm_title' => "Disable Member's Personal Messenger", +'mem_edit_pm_no' => "No", +'mem_edit_pm_yes' => "Yes - but allow the member to re-enable", +'mem_edit_pm_yes_really' => "Yes - and DON'T allow the member to re-enable", + +'mem_delete_title' => "Delete Member Posts / Topics", +'mem_delete_title_desc' => 'This section allows you to remove all posts and or topics started by a member', + +'mem_posts_process_done' => "Complete!", +'mem_posts_process_more' => "%s posts processed (%s posts and %s topics examined)...", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/acp_lang_portal.php b/upload/cache/lang_cache/en/acp_lang_portal.php new file mode 100644 index 00000000..d4868522 --- /dev/null +++ b/upload/cache/lang_cache/en/acp_lang_portal.php @@ -0,0 +1,23 @@ + "Manage Portal Plug-ins", +'main_title' => "Manage Portal Plug-ins", +'main_help' => "Portal plug-ins are modules which reside in the 'sources/portal_plugins' folder. When successfully installed, each module will allow you access to special tags which enable functionality within the portal", + +'error_no_dir' => "The directory 'sources/portal_plugins' does not exist. Create it and try again.", +'error_no_key' => "There is no matching plug-in for the key used to find it.", +'error_no_settings' => "There are no settings for this plug-in", + +'portal_main_title' => 'Registered Portal Plug-ins', +'portal_main_key' => 'Plug-in Title', +'portal_pop_tags' => 'Exportable Tags:', +'portal_pop_name' => 'Tag Name', +'portal_pop_desc' => 'Tag Description', + +'portal_row_menu_view_tags' => "View Exportable Tags...", +'portal_row_menu_settings' => "Edit Settings...", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/index.html b/upload/cache/lang_cache/en/index.html new file mode 100644 index 00000000..52a588b2 --- /dev/null +++ b/upload/cache/lang_cache/en/index.html @@ -0,0 +1 @@ + Invision Power Board - Bulletin Board System

403: Invision Power Board -> Forbidden


You have reached this Page in error, please use your back button to return to Invision Board.
Invision Power Board \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_boards.php b/upload/cache/lang_cache/en/lang_boards.php new file mode 100644 index 00000000..703d665d --- /dev/null +++ b/upload/cache/lang_cache/en/lang_boards.php @@ -0,0 +1,100 @@ + "posts", +'cs_members' => "members", +'cs_active' => "users online", +'q_topics' => "Queued topics:", +'q_posts' => "posts:", + +// added in 2.0 + +'enter_search_words' => "Enter words to search...", +'sub_forum_title' => "Subforums", + +// + +'whoschatting_total' => "Member(s) active in", +'whoschatting_loadchat' => "live chat", +'whoschatting_none' => "There are no members talking in live chat at the moment", +'whoschatting_delay' => "Updated every %s minutes", + +'rd_hits' => "Redirected Hits", +'oul_show_more' => "Show detailed by:", +'oul_click' => "Last Click", +'oul_name' => "Member Name", + +'qli_title' => "Quick Log In", +'qli_name' => "User Name", +'qli_go' => "Go", + +'by' => "By", + +'calender_f_title' => "Forthcoming Calendar Events within the next %s days", + +'no_calendar_events' => "There are no forthcoming calendar events", + +'newslink' => "latest news: ", + +'welcome_back_text' => "Welcome back; your last visit was", + +'sm_today_posters' => "Today's top 20 posters", +'sm_all_posters' => "Overall top 20 posters", +'sm_forum_leaders' => "The moderating team", +'sm_todays_posts' => "Today's active topics", + +'protected_forums' => "Protected Forums", +'no_birth_users' => "No members are celebrating a birthday today", +'total_forums' => "Total Forums:", +'public_forums' => "Public Forums", +'public_members' => "members", + +'total_word_string' => "Our members have made a total of <#posts#> posts
We have <#reg#> registered members
The newest member is <#mem#>", + + +'birthday_header' => "Today's Birthdays", + +'replies' => "Replies", +'board_stats' => "Board Statistics", + +'guests' => "guests", +'posts' => "posts", +'total_of' => "has a total of", +'browser_user_list' => "View Complete List", + +'forum_leader' => "Forum Led by: ", +'birth_user' => "member is celebrating his/her birthday today", +'forum_users' => "User(s) active in this forum", +'forums' => "Forums", +'restricted_forums' => "Restricted Forums", +'invite_submit' => "Go!", +'all_times' => "All Times", +'new_posts' => "View New Posts", +'anon_members' => "anonymous members", +'d_post_read' => "Mark all posts as read", +'last_post_info' => "Last Post Info", +'birth_users' => "members are celebrating their birthday today", +'forum_off' => "Read Only", + +'cat_name' => "Forum", +'in' => "In", +'registered_mems' => "registered members", +'topics' => "Topics", +'f_protected' => "Protected Forum", +'d_delete_cookies' => "Delete cookies set by this board", +'forum_icons' => "Forum Icons", + + + +'info' => "Information", +'active_users' => "user(s) active in the past %s minutes", + +'f_none' => "----", +'most_online' => "Most users ever online was <#NUM#> on <#DATE#>", +'no_new' => "No New Posts", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_buddy.php b/upload/cache/lang_cache/en/lang_buddy.php new file mode 100644 index 00000000..f2976b7c --- /dev/null +++ b/upload/cache/lang_cache/en/lang_buddy.php @@ -0,0 +1,56 @@ + "You have no new or unread PMs", + +// 2.1 + +'tab_info' => 'Information', +'tab_posts' => 'New Posts', +'tab_search' => 'Search', +'tab_pms' => 'Recent PMs', +'tab_newpms' => 'NEW PMs', +'legend_forum' => 'Forum Information', +'legend_post' => 'Posting Information', + +// Old + +'page_title' => "My Assistant", +'log_in_needed' => "Log in required", +'no_guests' => "This feature is for registered members only.

If you are a registered member, please log in.", +'log_in' => "Log In", +'lin_name' => "Username", +'lin_pass' => "PassWord", + +'reg_text' => "If you are not a registered member you will need to register an account before you can use this feature.", + + +'reg_link' => "Register a new account", + +'close_win' => "Close Window", +'refresh' => "Refresh", + +'show_me' => "Show me...", + +'sm_today_posters' => "Today's top 20 posters", +'sm_all_posters' => "Overall top 20 posters", +'sm_forum_leaders' => "The moderating team", +'sm_todays_posts' => "Today's active topics", +'sm_my_last_posts' => "My last 10 posts", + +'while_away' => "Since your last visit...", +'no_new_posts' => "There have been no new posts", + +'new_posts' => "There are %s new posts.", +'view_link' => "View", +'my_replies' => "%s of these posts are replies to topics you started.", +'none' => "none", +'search_forums' => "Search posts for...", +'search_help' => "Search help for...", +'go' => "Go!", + +); + +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_calendar.php b/upload/cache/lang_cache/en/lang_calendar.php new file mode 100644 index 00000000..48614ef7 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_calendar.php @@ -0,0 +1,107 @@ + "If this is not an all-day event, do you wish to specify a 'start' time?", +'form_timestart' => "Start Time (HH:MM)", + +// 2.1 (NEW) + +'cal_title_jump' => 'Calendar Jump', +'cal_title_nav' => 'Calendar Navigation', +'cal_event_add_single' => 'Add New Single Event', +'cal_event_add_ranged' => 'Add New Ranged Event', +'cal_event_add_recurring' => 'Add New Recurring Event', + + +'cal_event_delete' => 'Calendar event removed', +'button_delete' => "Delete", +'button_edit' => "Edit", +'button_approve' => "Approve (Make Visible)", +'button_unapprove' => "Un-approve (Make Invisible)", +'new_event_mod' => "Your event has been posted to the moderation queue and will require approval before it's shown", +'day_add_event' => 'Add New Event', +'show_n_events' => '(%s) Events', +'form_whichcal' => 'Add to Calendar', +'form_tz' => 'Event Time Zone', +'calendar_group_filter' => "Admin Option
(only applies to public events)", +'calendar_delete_box' => "Delete Event", +'calendar_title' => "Event Title", +'calendar_event_date' => "Date for Event", +'calendar_event_type' => "Type of Event", +'calendar_type_private' => "Personal Event (Viewable by you only)", +'calendar_type_public' => "Public Event (Viewable by all)", +'calendar_submit' => "Add Calendar Event", + +'calendar_edit_submit' => "Edit Event", + +// 2.1 (CHANGED) + +'entry_birthdays' => "(%s) Birthdays", +'post_new_event' => "Manage Calendar Event", + +//------------------------------------------------ + +'bd_birthday' => "'s Birthday", +'aa_add_new_event' => "Add New Event", +'aa_cur_month' => "View Current Month", +'aa_view_week' => "View Current Week", + +// 1.2 + +'fv_single' => "Event On/Starts", +'fv_range' => "Ranged Event...", +'fv_range_ends' => 'Ends', +'fv_recur' => "Recurring Event...", +'fv_recur_every' => "Every", +'fv_days' => "Week", +'fv_months' => "Month", +'fv_years' => "Year", +'fv_hidden' => '------------', +'fv_bgcolor' => "Background", +'fv_font' => "Text", +'fv_until' => "Until", +'tbt_recur' => "Recurring Event", +'js_del_1' => "Are you sure you want to delete this event?", +'js_del_2' => "Action cancelled", + +'se_normal' => "Single Day Event", +'se_recur' => "Recurring Event", +'se_range' => "Ranged Event", +'se_ends' => "ends", +'month_jump' => "Month Jump", + +// --- + + +'page_title' => 'Calendar', +'table_title' => 'Event Calendar', + +'form_submit_show' => "Show", + +'new_event_redirect' => "your calendar event has been posted", + +'cal_title_events' => "Calendar Events", + +'cal_birthdays' => "Birthdays", + +'back' => "Back", + +'private_event' => "Private Event", +'public_event' => "Public Event", +'restricted_event' => "Restricted Event", + +'joined' => "Joined:", +'posts' => "Posts:", +'group' => "Group:", + +'edit_event' => "Edit Event:", + +'edit_event_redirect' => "the calendar event has been edited", +'delete_event_redirect' => "the calendar event has been deleted", + +'event_date' => "Event Date:", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_chatpara.php b/upload/cache/lang_cache/en/lang_chatpara.php new file mode 100644 index 00000000..6d86633c --- /dev/null +++ b/upload/cache/lang_cache/en/lang_chatpara.php @@ -0,0 +1,21 @@ + "Live Chat Main Window", +'chat_help' => "Live Chat Help", +'chat_online' => "Chatting in live chat", +'chat_help_text' => "If you are running a version of a Microsoft Windows™ and see only a broken link icon, you will need to download a copy of the Java™ Virtual Machine in order to run our application. You may download Java™ Support for your browser from one of the following links below:
+
+ * Microsoft Virtual Machine (for MSIE)
+ * Sun Java™ Plugin (for Netscape, Opera, MSIE, etc..)
+
+ Older versions of Netscape (on certain platforms) such as v4.08, and v4.7x may not run the software. We strongly recommend upgrading to a newer version of Netscape (v6.xx or better) if this is the case. Certain browsers running on Macintosh platforms are not capable of running our software due to problems outside of our control. As WebTV does not support Java™, WebTV users will not be able to access the live chat rooms.
+
+ Users behind firewalls may need to inform their local IT/network administrator to allow TCP connections on ports 9000-9009 at client.invisionchat.com.
+
+ AOL Members: Some users have reported that the built-in AOL browser has difficulty connecting to our service, or does not load colors/emoticons properly. To resolve this, minimize your AOL connection, and use the Internet Explorer browser that came with your computer to access our chat rooms.
+
", +'chat_chatpara' => 1, +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_chatsigma.php b/upload/cache/lang_cache/en/lang_chatsigma.php new file mode 100644 index 00000000..806508a9 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_chatsigma.php @@ -0,0 +1,21 @@ + "Live Chat Main Window", +'chat_help' => "Live Chat Help", +'chat_online' => "Chatting in live chat", +'chat_help_text' => "If you are running a version of a Microsoft Windows™ and see only a broken link icon, you will need to download a copy of the Java™ Virtual Machine in order to run our application. You may download Java™ Support for your browser from one of the following links below:
+
+ * Microsoft Virtual Machine (for MSIE)
+ * Sun Java™ Plugin (for Netscape, Opera, MSIE, etc..)
+
+ Older versions of Netscape (on certain platforms) such as v4.08, and v4.7x may not run the software. We strongly recommend upgrading to a newer version of Netscape (v6.xx or better) if this is the case. Certain browsers running on Macintosh platforms are not capable of running our software due to problems outside of our control. As WebTV does not support Java™, WebTV users will not be able to access the live chat rooms.
+
+ Users behind firewalls may need to inform their local IT/network administrator to allow TCP connections on ports 9000-9009 at client.invisionchat.com.
+
+ AOL Members: Some users have reported that the built-in AOL browser has difficulty connecting to our service, or does not load colors/emoticons properly. To resolve this, minimize your AOL connection, and use the Internet Explorer browser that came with your computer to access our chat rooms.
+
", +'chat_chatsigma' => 1, +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_editors.php b/upload/cache/lang_cache/en/lang_editors.php new file mode 100644 index 00000000..db253f1f --- /dev/null +++ b/upload/cache/lang_cache/en/lang_editors.php @@ -0,0 +1,118 @@ + "Wrap in code tags", +'js_rte_lite_quote' => "Wrap in quote tags", +'js_rte_lite_link' => "Insert Link", +'js_rte_lite_img' => "Insert Image", +'js_rte_lite_email' => "Insert Email Link", +'toggle_side_panel' => "Toggle Side Panel", +'emos_show_all' => "Show All", +'emos_show_prev' => "Previous", +'emos_show_next' => "Next", +'ed_quick_access' => "Quick Access", +'js_tt_emoticons' => "Emoticons", +'js_tt_unlink' => "Unlink", +'js_tt_sub' => "Sub-script", +'js_tt_sup' => "Super-script", +'js_rte_quote' => "Wrap as Quote", +'js_rte_code' => "Wrap as Code", +'js_tt_spellcheck' => "Spellcheck", +'js_tt_switcheditor' => "Switch between standard and rich text editor", + +'js_rte_link' => "Insert Link...", +'js_rte_unlink' => "Unlink Text...", +'js_rte_image' => "Insert Image...", +'js_rte_email' => "Insert Email...", +'js_rte_erroriespell' => "ieSpell not detected. Click Ok to go to download page.", +'js_rte_errorliespell' => "Error Loading ieSpell: Exception ", +'js_rte_optionals' => "Enter the optional arguments for this tag", + +'the_max_length' => "0", +'override' => "0", + +'js_tt_noformat' => "Remove Formatting", +'js_tt_htmlsource' => "Toggle HTML Source", +'js_tt_insert_item' => "Insert Special Item", + +//2.1.2 + +'box_font' => "Fonts", +'box_size' => "Sizes", +'js_tt_undo' => "Undo", +'js_tt_redo' => "Redo", +'js_tt_smaller' => "Resize smaller", +'js_tt_larger' => "Resize larger", +'js_tt_bold' => "Bold", +'js_tt_italic' => "Italic", +'js_tt_underline' => "Underline", +'js_extra_formatting' => "Extra Formatting", +'js_text_formatting' => "Text Formatting", +'js_tt_font_col' => "Text Color", +'js_tt_back_col' => "Background Color", +'js_tt_indent' => "Indent", +'js_tt_outdent' => "Outdent", +'js_tt_left' => "Align Left", +'js_tt_center' => "Align Center", +'js_tt_right' => "Align Right", +'js_tt_jfull' => "Justify Full", +'js_tt_list' => "Insert List", + + +'button_init' => "Initializing...", +'jsfile_error' => "Error!", +'jsfile_error_c' => "Error:", +'jsfile_mywebpage' => "My Webpage", +'jsfile_alert1' => "Some revisions of Mozilla/Firefox do not support programatic ", +'jsfile_alert2' => "access to cut/copy/paste functions, for security reasons. ", +'jsfile_alert3' => "Your browser is one of them. Please use the standard key combinations:", +'jsfile_alert4' => "CTRL-X for cut, CTRL-C for copy, CTRL-V for paste.", +'jsfile_highlight' => "You must highlight some text before making it a link", + +'js_forced_change' => "You have set 'Rich Text Editor' as your editor but your browser isn't compatible with it. The standard editor has been used instead.", +'js_tt_closeall' => "Close All Tags", + +'js_tt_strike' => "Strikethrough", + +'js_tt_copy' => "Copy", +'js_tt_paste' => "Paste", +'js_tt_cut' => "Cut", +'js_tt_code' => "Code", + + +'js_bbeasy_on' => 'Guided Mode Enabled', +'js_bbeasy_off' => 'Guided Mode Off', +'js_bbeasy_toggle' => 'Click to toggle guided mode', + +'remove_attach' => "Are you sure you wish to remove this attachment?", + +'js_close_all_tags' => "Close all Tags", +'js_tag_list' => "Enter a list item. Click 'cancel' or leave blank to end the list", +'jscode_text_enter_url' => "Enter the complete URL for the hyperlink", +'jscode_text_enter_email' => "Enter the email address", +'jscode_text_code' => "Usage: [CODE] Your Code Here.. [/CODE]", +'jscode_error_no_title' => "You must enter a title", +'jscode_text_quote' => "Usage: [QUOTE] Your Quote Here.. [/QUOTE]", +'jscode_error_no_url' => "You must enter a URL", +'jscode_text_enter_image' => "Enter the complete URL for the image", +'jscode_error_no_width' => "You must enter a width", +'jscode_text_enter_url_name' => "Enter the title of the webpage", +'jscode_error_no_email' => "You must enter an email address", +'js_used' => "So far, you have used", +'js_max_length' => "The maximum allowed length is", +'js_post' => "Post", +'js_no_message' => "You must enter a message to post!", +'js_current' => "Current Characters", +'js_characters' => "characters", +'msg_no_title' => "You must enter a message title", +'js_check_length' => "Check Post Length", + +'hb_open_tags' => "Open Tags", + + +'js_text_to_format' => "Enter the text to be formatted", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_email_content.php b/upload/cache/lang_cache/en/lang_email_content.php new file mode 100644 index 00000000..c1d6e3b7 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_email_content.php @@ -0,0 +1,733 @@ + team. +<#BOARD_ADDRESS#> + +EOF; + +/*------------------------------------------------------------------------------------*/ +// IPB 2.2.0 +/*------------------------------------------------------------------------------------*/ + +//------------------------------- +// MODERATED: Add Friend Done +//------------------------------- + +$lang['subject__new_friend_approved'] = 'New Friend Approved'; +$lang['new_friend_approved'] = <<, + +<#FRIEND_NAME#> has approved your friend request! + +Log in and then manage your friends: <#LINK#> + +EOF; + +//------------------------------- +// MODERATED: Add Friend +//------------------------------- + +$lang['subject__new_friend_request'] = 'New Friend Request'; +$lang['new_friend_request'] = <<, + +<#FRIEND_NAME#> wants to be your friend! + +This message has been sent because <#FRIEND_NAME#> has added you to their friends +list. As you've chosen to approve all friend requests, you will need to visit your +friends list and approve them. + +Log in and then manage your friends: <#LINK#> + +EOF; + +//------------------------------- +// Friend added +//------------------------------- + +$lang['subject__new_friend_added'] = 'Friend Added'; +$lang['new_friend_added'] = <<, + +<#FRIEND_NAME#> has successfully added you to their friends list. + +Manage your friends: <#LINK#> + +EOF; + +//------------------------------- +// MODERATED: Add Friend +//------------------------------- + +$lang['subject__new_comment_request'] = 'New Comment Pending Approval'; +$lang['new_comment_request'] = <<, + +<#COMMENT_NAME#> has left you a comment that requires your approval. + +This message has been sent because <#COMMENT_NAME#> has posted a comment on your profile. +As you've chosen to approve all new comments the new comment will not appear on your +profile until it's been approved. + +Log in and then manage your comments: <#LINK#> + +EOF; + +//------------------------------- +// Friend added +//------------------------------- + +$lang['subject__new_comment_added'] = 'New Comment'; +$lang['new_comment_added'] = <<, + +<#COMMENT_NAME#> has left you a comment. + +This message has been sent because <#COMMENT_NAME#> has posted a new comment to your profile. + +Manage your comments: <#LINK#> + +EOF; + +/*------------------------------------------------------------------------------------*/ +// SUBSCRIPTIONS +/*------------------------------------------------------------------------------------*/ + +//------------------------------- +// NEW PAID SUBSCRIPTION +//------------------------------- + + +$lang['subject__new_subscription'] = 'New Subscription Purchase'; +$lang['new_subscription'] = << as confirmation of your +subscription purchase. + +---------------------------------- +Package Purchased: <#PACKAGE#> +Package Expires: <#EXPIRES#> +Subscriptions: <#LINK#> +---------------------------------- + +EOF; + +//------------------------------- +// SUBSCRIPTION EXPIRES +//------------------------------- + +$lang['subject__subscription_expires'] = 'Subscription Expiration'; +$lang['subscription_expires'] = << to remind you that your +subscription is due to expire soon. + +---------------------------------- +Package Purchased: <#PACKAGE#> +Package Expires: <#EXPIRES#> +Subscriptions: <#LINK#> +---------------------------------- + +If you wish to continue with your subscription, please re-purchase the subscription +when your current subscription expires. + +If you wish to allow your subscription to expire, you do not need to do anything. + +EOF; + + +//------------------------------- +// NEW MOD __TOPIC__ +//------------------------------- + + +$lang['subject__new_topic_queue_notify'] = 'New Topic Awaiting Approval'; +$lang['new_topic_queue_notify'] = <<. + +A new topic has been entered into the moderation queue and is awaiting +approval. + +---------------------------------- +Topic: <#TOPIC#> +Forum: <#FORUM#> +Author: <#POSTER#> +Time: <#DATE#> +Manage Queue: <#LINK#> +---------------------------------- + +If you no longer require notification, you can stop these emails by simply +removing your email address from the forum settings options. + +<#BOARD_ADDRESS#> + + +EOF; + +//------------------------------- +// NEW MOD __POST__ +//------------------------------- + + +$lang['subject__new_post_queue_notify'] = 'New Post Awaiting Approval'; +$lang['new_post_queue_notify'] = <<. + +A new post has been entered into the moderation queue and is awaiting +approval. + +---------------------------------- +Topic: <#TOPIC#> +Forum: <#FORUM#> +Author: <#POSTER#> +Time: <#DATE#> +Manage Queue: <#LINK#> +---------------------------------- + +If you no longer require notification, you can stop these emails by simply +removing your email address from the forum settings options. + +<#BOARD_ADDRESS#> + + +EOF; + +//------------------------------- +// FORUM: WEEKLY +//------------------------------- + + +$lang['subject__digest_forum_weekly'] = 'Your weekly new topics digest'; +$lang['digest_forum_weekly'] = <<, + +This is the digest of this weeks posts in forum <#NAME#>. + +---------------------------------------------------------------------- + + + +<#CONTENT#> + + + + +---------------------------------------------------------------------- + +The topic can be found here: +<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. + +EOF; + +//------------------------------- +// FORUM: DAILY +//------------------------------- + + +$lang['subject__digest_forum_daily'] = 'Your daily new topics digest'; +$lang['digest_forum_daily'] = <<, + +This your daily new topics digest! + +---------------------------------------------------------------------- + + + +<#CONTENT#> + + + + +---------------------------------------------------------------------- + +The forum can be found here: +<#BOARD_ADDRESS#>?showforum=<#FORUM_ID#> + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. + +EOF; + + +//------------------------------- +// TOPIC: WEEKLY +//------------------------------- + + +$lang['subject__digest_topic_weekly'] = 'Your weekly new posts digest'; +$lang['digest_topic_weekly'] = <<, + +This your weekly new topics digest! + +---------------------------------------------------------------------- + + + +<#CONTENT#> + + + + +---------------------------------------------------------------------- + +The forum can be found here: +<#BOARD_ADDRESS#>?showforum=<#FORUM_ID#> + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. + +EOF; + +//------------------------------- +// TOPIC: DAILY +//------------------------------- + + +$lang['subject__digest_topic_daily'] = 'Your daily new posts digest'; +$lang['digest_topic_daily'] = <<, + +This is the digest of posts in topic "<#TITLE#>" for today. + +---------------------------------------------------------------------- + + + +<#CONTENT#> + + + + +---------------------------------------------------------------------- + +The topic can be found here: +<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. + +EOF; + + + +//---------- + + +$lang['subject__pm_notify'] = 'You have a new personal message'; +$lang['pm_notify'] = <<, + +<#POSTER#> has sent you a new personal message entitled "<#TITLE#>". + +You can read this personal message by following the link below: + +<#BOARD_ADDRESS#><#LINK#> + + +EOF; + + + +$lang['send_text'] = << + +From, + +<#USER NAME#> + +EOF; + + +$lang['report_post'] = <<, + +You have been sent this communication from <#USERNAME#> via the "Report this post to a moderator" link. + +------------------------------------------------ +Topic: <#TOPIC#> +------------------------------------------------ + +Link to post: <#LINK_TO_POST#> + +------------------------------------------------ +Report: + +<#REPORT#> + +------------------------------------------------ + +EOF; + + + +$lang['pm_archive'] = <<, +This email has been sent from <#BOARD_ADDRESS#>. + +Your archived messages have been compiled into a single +file and has been attached to this message. + +EOF; + +$lang['reg_validate'] = <<, +This email has been sent from <#BOARD_ADDRESS#>. + +You have received this email because this email address +was used during registration for our forums. +If you did not register at our forums, please disregard this +email. You do not need to unsubscribe or take any further action. + +------------------------------------------------ +Activation Instructions +------------------------------------------------ + +Thank you for registering. +We require that you "validate" your registration to ensure that +the email address you entered was correct. This protects against +unwanted spam and malicious abuse. + +To activate your account, simply click on the following link: + +<#THE_LINK#> + +(AOL Email users may need to copy and paste the link into your web +browser). + +------------------------------------------------ +Not working? +------------------------------------------------ + +If you could not validate your registration by clicking on the link, please +visit this page: + +<#MAN_LINK#> + +It will ask you for a user id number, and your validation key. These are shown +below: + +User ID: <#ID#> + +Validation Key: <#CODE#> + +Please copy and paste, or type those numbers into the corresponding fields in the form. + +If you still cannot validate your account, it's possible that the account has been removed. +If this is the case, please contact an administrator to rectify the problem. + +Thank you for registering and enjoy your stay! + +EOF; + +$lang['admin_newuser'] = << completed their registration on <#DATE#> + +You can turn off user notification in the Admin Control Panel + +Have a super day! + +EOF; + +$lang['lost_pass'] = <<, +This email has been sent from <#BOARD_ADDRESS#>. + +You have received this email because a user account password recovery +was instigated by you on <#BOARD_NAME#>. + +------------------------------------------------ +IMPORTANT! +------------------------------------------------ + +If you did not request this password change, please IGNORE and DELETE this +email immediately. Only continue if you wish your password to be reset! + +------------------------------------------------ +Activation Instructions Below +------------------------------------------------ + +We require that you "validate" your password recovery to ensure that +you instigated this action. This protects against +unwanted spam and malicious abuse. + +Simply click on the link below and complete the rest of the form + +<#THE_LINK#> + +(AOL Email users may need to copy and paste the link into your web +browser). + +------------------------------------------------ +Not working? +------------------------------------------------ + +If you could not validate your registration by clicking on the link, please +visit this page: + +<#MAN_LINK#> + +It will ask you for a user id number, and your validation key. These are shown +below: + +User ID: <#ID#> + +Validation Key: <#CODE#> + +Please copy and paste, or type those numbers into the corresponding fields in the form. + +------------------------------------------------ +Is this not working? +------------------------------------------------ + +If you cannot re-activate your account, it's possible that the account has been removed or you +are in the process of another activation, such as registering or changing your registered email address. +If this is the case, then please complete the previous activation. +If the error persists, please contact an administrator to rectify the problem. + +IP address of sender: <#IP_ADDRESS#> + + +EOF; + + +$lang['lost_pass_email_pass'] = <<, +This email has been sent from <#BOARD_ADDRESS#>. + +This email completes your lost password request. + +------------------------------------------------ +YOUR NEW PASSWORD +------------------------------------------------ + +Your username is: <#USERNAME#> +Your new password is: <#PASSWORD#> + +Log in here: <#LOGIN#> + +------------------------------------------------ +CHANGING YOUR PASSWORD +------------------------------------------------ + +Once you've logged in, you can visit your UserCP to +change your password. + +UserCP: <#THE_LINK#> + + +EOF; + + + + + + +$lang['newemail'] = <<, +This email has been sent from <#BOARD_ADDRESS#>. + +You have received this email because you requested an +email address change. + +------------------------------------------------ +Activation Instructions Below +------------------------------------------------ + +We require that you "validate" your email address change to ensure that +you instigated this action. This protects against +unwanted spam and malicious abuse. + +To activate your account, simply click on the following link: + +<#THE_LINK#> + +(AOL Email users may need to copy and paste the link into your web +browser). + +------------------------------------------------ +Not working? +------------------------------------------------ + +If you could not validate your registration by clicking on the link, please +visit this page: + +<#MAN_LINK#> + +It will ask you for a user id number, and your validation key. These are shown +below: + +User ID: <#ID#> + +Validation Key: <#CODE#> + +Please copy and paste, or type those numbers into the corresponding fields in the form. + +Once the activation is complete, you may need to log back in to update your member group +permissions. + +------------------------------------------------ +Help! I get an error! +------------------------------------------------ + +If you cannot re-activate your account, it's possible that the account has been removed or you +are in the process of another activation, such as registering or changing your registered email address. +If this is the case, then please complete the previous activation. +If the error persists, please contact an administrator to rectify the problem. + + +EOF; + +$lang['forward_page'] = << + + +<#THE_MESSAGE#> + +--------------------------------------------------- +Please note that <#BOARD_NAME#> has no control over the +contents of this message. +--------------------------------------------------- + +EOF; + +$lang['subject__subs_with_post'] = 'Topic Subscription Reply Notification'; + +$lang['subs_with_post'] = <<, + +<#POSTER#> has just posted a reply to a topic that you have subscribed to titled "<#TITLE#>". + +---------------------------------------------------------------------- +<#POST#> +---------------------------------------------------------------------- + +The topic can be found here: +<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost + + + +If you have configured in your control panel to receive immediate topic reply notifications, you may receive an +email for each reply made to this topic. Otherwise, only 1 email is sent per board visit for each subscribed topic. +This is to limit the amount of mail that is sent to your inbox. + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. + +EOF; + +$lang['subject__subs_new_topic'] = 'Forum Subscription New Topic Notification'; +$lang['subs_new_topic'] = <<, + +<#POSTER#> has just posted a new topic entitled "<#TITLE#>" in forum "<#FORUM#>". + +---------------------------------------------------------------------- +<#POST#> +---------------------------------------------------------------------- + +The topic can be found here: +<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#> + +Please note that if you wish to get email notification of any replies to this topic, you will have to click on the +"Track this Topic" link shown on the topic page, or by visiting the link below: +<#BOARD_ADDRESS#>?act=Track&f=<#FORUM_ID#>&t=<#TOPIC_ID#> + + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. +If you are not subscribed to any forums and wish to stop receiving notification, uncheck the setting +"Send me any updates sent by the board administrator" found in 'My Controls' under 'Email Settings'. + +EOF; + +$lang['subject__subs_no_post'] = 'Topic Subscription Reply Notification'; +$lang['subs_no_post'] = <<, + +<#POSTER#> has just posted a reply to a topic that you have subscribed to titled "<#TITLE#>". + +The topic can be found here: +<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost + +There may be more replies to this topic, but only 1 email is sent per board visit for each subscribed topic. This is +to limit the amount of mail that is sent to your inbox. + +Unsubscribing: +-------------- + +You can unsubscribe at any time by logging into your control panel and clicking on the "View Subscriptions" link. + +EOF; + + + +$lang['email_member'] = <<, + +<#FROM_NAME#> has sent you this email from <#BOARD_ADDRESS#>. + + +<#MESSAGE#> + +--------------------------------------------------- +Please note that <#BOARD_NAME#> has no control over the +contents of this message. +--------------------------------------------------- + + +EOF; + +$lang['complete_reg'] = <<. You may now log in with +your chosen details and access your full user account at <#BOARD_ADDRESS#> + +EOF; + + +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_emails.php b/upload/cache/lang_cache/en/lang_emails.php new file mode 100644 index 00000000..937eeaf7 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_emails.php @@ -0,0 +1,67 @@ + "Forum", +'topic_langbit' => "Topic", + +//1.2 + +'imp_text' => "IMPORTANT: To prevent malicious use, all emails sent via this form are logged and the contents recorded and available to the administrators. DO NOT email user names, passwords or any personal details.", + +'exceeded_quota' => "The mail could not be sent because you have exceeded your alloted quota of <#EXTRA#> emails a day", +'exceeded_flood' => "The mail could not be sent because you have already sent an email within the last <#EXTRA#> minutes", +'errors_found' => "The following errors have been found", +'no_message' => "You must enter some content for the email", +'no_subject' => "You must enter a subject for the email", +'gen_error' => "You are not logged in or able to send emails", +//--- + + +'msn_send_msg' => "Send this member an MSN Message", +'msn_add_contact' => "Add this member to your MSN buddy list", + + + +'report_title' => "Report this post to a moderator", +'report_submit' => "Submit Report", +'report_message' => "Enter your report

Please note: The moderator will be made aware of the link to the post and the topic title.

This form is to be used ONLY for reporting objectional content, etc and is not to be used as a method of communicating with moderators for other reasons.", +'report_topic' => "Topic Title", + + +'report_subject' => "Reported Post from", + +'report_redirect' => "the report has been submitted, returning you to the topic", + + +'title' => "Send a page to a friend", +'send_lang' => "Send this email in", +'to_name' => "Send to (Person's Name):", +'redirect' => "The email has been sent", +'to_email' => "Send to (Email Address):", +'submit_send' => "Send Email", +'send_email_to' => "Send an email to", +'message' => "Message", +'show_address_text' => "You can send this member an email by clicking on the link below. Invision Power Board does not show email addresses in the topic view to prevent email addresses being harvested by 'spam bots'.", +'send_header' => ", please fill in this form fully to send an email to", +'member_address_title' => "Members Email Address", +'send_title' => "Email Form", +'msg_txt' => "Note: By using this form, the recipient will be able to view your email address", +'subject' => "Subject", +'email_sent_txt' => "Thanks, the email has been successfully sent to", +'email_sent' => "The email has been sent", + +'invite_subject' => "<#MEMBER_NAME#> thought you would like to see this", +'subs_redirect' => "You have subscribed to this topic", +'invite_redirect' => "The email has been sent to ", +'sub_added' => "Your subscription has been added", + +'submit' => "Send this message", + +'msg' => "Enter your message", +'email' => "Your Email", +'name' => "Your Name", +'forum_jump' => "Forum Jump", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_error.php b/upload/cache/lang_cache/en/lang_error.php new file mode 100644 index 00000000..e0c6a99d --- /dev/null +++ b/upload/cache/lang_cache/en/lang_error.php @@ -0,0 +1,326 @@ + "You already have that member stored in your PM block list", +// 2.2 +'err_attach_not_attached' => "The attachment clicked has come from a new post which isn't yet saved", +'csite_not_enabled' => 'The portal has not been enabled. Please check your Invision Power Board Admin Settings', +'bruteforce_account_lock' => "Sorry, your account has been locked due to an excessive number of failed login attempts within a defined period. <#EXTRA#>", +'md5check_failed' => "Sorry, the authentication key did not match", + +'cannot_block' => "You are not permitted to block this member's private messages to you.", +'invalid_use' => "There was an error processing the request. Please go back and try again, or contact an administrator for assistance.", +'no_usepm_member_full' => "This message can not be sent because the recipient's inbox is full.", + +//2.1 +'ucp_name_change' => 'You have already used up your allowed number of display name changes for this 24 hour period.', +'topic_rate_no_perm' => 'You do not have permission to rate this topic', +'cal_no_perm' => 'You do not have permission to view this calendar or this calendar does not exist', +'cp_admin_user' => "You cannot edit an administrators profile from this control panel", + +// 2.1 changed + +'no_usepm_member' => "This message can not be sent because the recipient has their personal messenger disabled or they are in a member group not allowed to use the personal messenger.", +'search_word_short' => "One or all of your search keywords were below <#EXTRA#> characters or you searched for words which are not allowed, such as 'html', 'img', etc, please go back and increase the length of these search keywords or choose different keywords.", + + +// 2.0 + +'erl_email' => 'Your email address', +'reg_no_agree' => "You did not click the 'I agree' checkbox. If you do agree to the terms and conditions, please ensure you check the box before continuing. If you do not agree to the terms and conditions, please click here to cancel.", +'no_upload_permission' => "You do not have permission to upload files", + + +// added in 1.2.1 + +'banned_email' => "Sorry, you are not allowed to use that email address for your account. Please use another email address.", +'subs_no_curid' => "A current subscriptions package ID was not passed to the payment methods form, transaction failed.", +'subs_no_upgrade' => "There are no packages to upgrade to!", +'subs_no_selected' => "You did not select a subscription package. Please go back and select one before continuing.", +'subs_nomethod_selected' => "You did not select a payment method. Please go back and select one before continuing.", +'subs_no_api' => "Cannot locate the required API file, process cannot continue.", +'subs_no_upgrade' => "This payment method does not support upgrades. This process cannot continue.", +'subs_fail' => "An unspecified failure occured. Code <#EXTRA#>.", +'sub_already' => "You are already subscribed to a package that is either paid or pending. You cannot continue.", + + +'auth_no_key_not_allow' => "Sorry, you cannot perform this action until the board administrator has approved your account", + + +// added 1.2 B3 + +'no_flash_av' => "You are not permitted to use flash in your avatar, post or signature", +'no_warn_max' => "This member cannot be warned in that direction any further. They have reached their maximum or minumum level", + +// added 1.2 +'split_too_much' => "You cannot select all of the posts to split, you must leave at least one post in the original topic", + +'ml_error' => "This member group has chosen to not be shown on this member list.", +'protected_user' => "You cannot proceed with that action. This member is a protected member", +'warned_already' => "This member has been warned once already within the allotted time allowed", +'no_mmid' => "That is not a valid multi-moderation action for this forum", +'del_post' => "Authorization mismatch - please go back and try again. If you have been trying to access a function incorrectly, please use the proper method.", +'stupid_beggar' => "Out of all the options in all the drop down, you had to choose one with dashed lines, well done. Go back and behave yourself.", +'fd_noneselected' => "You did not select any PM folders to empty, please go back and try again", +'cal_range_wrong' => "Sorry, the event end date must be later than the start date.", +'posting_off_susp' => "Sorry, your posting rights have been temporarily suspended. The suspension is due to end on <#EXTRA#>.", +'account_susp' => "Your account has been temporarily suspended. This suspension is due to end on <#EXTRA#>.", +'email_change_v' => "Sorry, you are already pending validation. Please revalidate your account before attempting this.", +'is_broken_link' => "Sorry, the link that brought you to this page seems to be out of date or broken.", +'pass_no_match' => "The entered passwords did not match, please go back and try again", +'av_no_gallery' => "Sorry, the chosen avatar gallery doesn't exist anymore - please try again", +'no_integ' => "Sorry, this member doesn't have an Integrity Messenger profile at present.", + +'file_2_big' => "Sorry, that file is too wide or too high - please try again after resizing the image", +'no_photo_selected' => "You must enter a URL to a photograph or choose an image to upload from your computer before continuing", +'photo_invalid_ext' => "Sorry, you are not permitted to use that image as a personal photo as the extension isn't on the permitted list.", + + +// Added in RC2 + +'no_help_file' => "Sorry, we could not locate that help file, please try again.", + + +// Added in RC1 + +'no_member_mail' => "Sorry, you are not permitted to send an email via this board", + +// Added in Beta 3 + +'no_vote' => "You did not choose a poll choice to vote against. Please go back and ensure you click on one of the radio buttons next to the choice you wish to vote for", + +//--- End B3 additions --- + +'me_no_forum' => "You don't appear to have any forums to moderate.", + +'no_name_search_results' => "The member name you chose to filter by cannot be found, please go back and try again.", + +'split_not_enough' => "You must choose at least one post to split or move!", + +'mt_not_enough' => "You must choose at least two topics to merge", +'mt_no_topic' => "We could not find a topic in the database that matches the URL you entered, please try again and double check the information entered", +'mt_same_topic' => "You cannot merge the same topic, that's just silly", + +'forum_no_post_allowed' => "You cannot move topics into this forum as it does not allow posts to be made", + + +'no_msn' => "This member does not have a valid MSN Messenger Name.", +'no_yahoo' => "This member does not have a valid Yahoo! Messenger Name", + +'cf_to_long' => "You entered too much data for the field '<#EXTRA#>', please go back and check the input", + + +'search_flood' => "Sorry, the board administrator has enabled search flood control. Please wait at least <#EXTRA#> seconds before trying again.", + +'cal_no_events' => "There are no birthdays or events for that date, please go back and try again.", +'cal_date_oor' => "The date you have chosen for that event is not a legal date (You may have chosen 30th February for example). Please go back and check your input and try again.", + +'cal_title_none' => "You must enter an event title that is longer than 2 characters", +'cal_title_long' => "The event title you entered was too long, please limit it to under 64 characters", + +'reg_off' => "The board administrator is no longer accepting any new registrations at the moment.", + +'offline_title' => "Board Offline", +'offline_login' => "If you have permission to access an offline board, please log in below", + +'skin_not_found' => "The skin you chose could not be found. It's possible that an administrator has removed the skin, please go back and choose another.", + +'no_view_board' => "You do not have permission to view this board", + +'forum_read_only' => "This forum is read only, no new posts or replies can be made.", + +'no_av_upload' => "You do not have permission to upload avatars or personal photos to this server", +'no_av_type' => "You are not allowed to upload that type of file as an avatar or personal photo", +'no_av_name' => "The uploaded file does not have a name, please go back and check your input", + +'upload_failed' => "The upload failed. Please contact a member of staff to help rectify the problem", + +'er_log_in_title' => "You are not logged in, you may log in below", +'erl_enter_name' => "Your account username", +'erl_enter_pass' => "Your account password", +'erl_log_in_submit' => "Log In", + +'er_useful_links' => "Useful Links", +'er_lost_pass' => "Forgotten Password Recovery", +'er_register' => "Register a new account", +'er_contact_admin' => "Contact the forums administrator", +'er_help_files' => "Our help documentation", + +'no_archive_messages' => "Sorry, no personal messages were found using that search critera. Try again and broaden the scope.", + +'no_delete_post' => "Sorry, you cannot delete the first post in this topic. If you wish to delete the complete topic, choose 'Delete Topic' from your moderator bar at the foot of the topic view screen.", +'exp_text' => "Sorry, an error occurred. If you are unsure on how to use a feature, or don't know why you got this error message, try looking through the help files for more information.", +'msg_head' => "The error returned was:", + +'auth_no_mem' => "We could not find any member matching the User ID that you entered. Please double check the URL, or the data you entered into the form. If the error persists, please contact a member of staff to assist you.", +'auth_key_wrong' => "Sorry, the Validation Key is incorrect for this member. Please check the URL or the data you entered into the form. If the error persists, please contact a member of staff to assist you. If this validation isn't recent, it's possible your old account has been removed.", +'auth_no_key' => "Sorry, that member does not have to validate their account. Please double check the data you entered. If this validation isn't recent, it's possible your old account has been removed.", + +'email_addy_mismatch' => "Sorry, the email addresses did not match, please go back and check the data you entered.", + +'lp_no_pass' => "Sorry, we do not have a new password for this account in our records, please contact a staff member to rectify the problem", + +'val_key_present' => "This account is already under activation verification for either a new registration, lost password or email address change. Please complete the previous activation before attempting to continue with this one. If you believe this account has been activated or re-activated, please contact a member of staff to rectify the problem", + +'complete_form' => "You must complete the form fully before proceeding. Please go back and check the data you entered.", + +'forum_no_access' => "Sorry, you do not have reading permissions on this forum. If this is a password protected forum, please log into the forum by clicking on the forum link from the board index page.", +'name_too_long' => "The username you entered was too long", +'msg_blocked' => "This member has chosen not to be contactable by the board Messenger", +'no_msg_title' => "You must enter a message title", +'reg_link' => "Register Now!", +'wrong_pass' => "Sorry, you have entered an incorrect password. Please try again.", +'poll_no_guests' => "Guests cannot vote", +'no_such_user' => "Sorry, we don't have a member with that name in our records, please try again and double check the data you entered.", +'search_no_input' => "You must enter a keyword(s) to search by!", +'stf_no_msg' => "You must enter a message to send", +'invite_no_name' => "You must enter your name", +'poll_none_found' => "We could not find that poll", +'no_search_id' => "No search file ID number was recorded, please try again", +'no_guest_new_topics' => "sorry, but the board administrator does not allow guests to start new posts in this forum. If you are a registered member please log in", +'no_user' => "Sorry, we could not find that member", +'no_search_words' => "You did not enter any keywords to search by or the keywords you used are not permitted due to the high number of matches.", +'invalid_login' => "Invalid log in. Either your password or your username was not correct. Please go back and double check the information you entered. Please remember that usernames and passwords are case sensitive, so 'PaSSwOrD' is different from 'password'", +'web_too_long' => "Your website entry is too long.", +'stf_no_email' => "You must enter the email address of the person you are sending this page to", +'mem_id_wrong' => "Sorry, but your Member ID is not in the correct format", +'forum_off' => "Sorry, but this forum has been disabled", +'no_newer' => "There are no topics newer than this one", +'poss_hack_attempt' => "We are treating that action as a possible hack attempt, this action will be logged and the board administrator will be informed via email", +'not_logged_in' => "You are not logged in", +'int_too_long' => "Your Interests entry is too long.", +'no_to_member' => "We could not find that member in our database, please check the spelling of the name", +'invalid_ext' => "You are not allowed to use that image extension on this board. A valid format is: http://www.domain.com/picture.gif, an invalid format is: http://www.domain.com/picture.one.gif", +'subject_long' => "The email subject was too long", +'move_already_moved' => "This is the original moved topic and it can't be moved again, if you want to move it again, please choose the topic that was moved into the previous destination forum", +'cookie_error' => "Sorry, there is a cookie error, please re-log in", +'no_attach' => "Attachments are not allowed for this forum", +'no_aol' => "That member does not have a valid AOL Name", +'name_too_short' => "The username you entered was too short", +'missing_files' => "Sorry, some required files are missing, if you intended to view a topic, it's possible that it's been moved or deleted. Please go back and try again.", +'post_too_long' => "Sorry, your post was too long, please reduce it", +'locked_topic' => "Sorry, this topic has been locked", +'flash_url' => "That is not a valid Flash URL", +'profile_guest' => "We could not find this member in our database, it's possible that the member has been removed.", +'stf_no_subject' => "You must enter a subject for the email", +'not_icq_number' => "That is not a valid ICQ number", +'rp_noemail' => "You must enter a valid email address before we can send this report", + +'upload_to_big' => "The file you requested to upload was greater than the limit the administrator has set for your group.", + + +'user_exists' => "We already have a member by that name, please choose another", +'no_msg_chosen' => "You did not select any messages. You select them by clicking on the checkbox on the far right of each entry", +'error_back' => "Go Back", +'log_in_yes' => "You are currently logged in as ", +'flash_number' => "The height and width attributes of the flash tag have to be a number", +'no_avatar' => "The administrator has disabled avatars on this board", +'poll_you_voted' => "You have already voted in this poll", +'not_url_photo' => "That is not a valid URL for your Photo. We do not allow dynamic pages in the IMG tags", +'no_action' => "Please don't adjust the generated URLs. If you came here in error, please go back and try again", +'no_guest_posting' => "Sorry, but the board administrator has disabled guest posting in this forum, if you are a registered member - please log in", +'invalid_email' => "You must enter a VALID email address", +'no_start_polls' => "You cannot start a poll", +'move_no_forum' => "You did not choose a destination forum", +'no_use_messenger' => "You are not allowed to use the messenger feature on this board", +'no_msg' => "You must enter a message", +'no_dynamic' => "Sorry, dynamic pages in the [IMG] tags are not allowed", +'no_rules_show' => "There isn't any FAQ/Rule files for this forum", +'membername_none' => "Sorry, we could not find an account with that membername", +'log_in_now' => "Log in Now!", +'no_subject' => "You did not enter a subject for the email", +'pass_too_long' => "The password entered was too long", +'username_short' => "The username you entered was too short", +'already_sub' => "You are already subscribed to this topic or forum.", +'forgot_pass' => "Forgotten your password?", +'no_older' => "There are no topics older than this one", +'stf_no_name' => "You must enter the name of the person you are sending this page to", +'no_view_topic' => "You do not have permission to view this topic", +'IBForums_error' => "Board Error", +'no_replies' => "Sorry, you do not have permission to reply to that topic", +'error_title' => "Board Message", +'no_chosen_member' => "You didn't enter or choose a name to send the message to!", +'pass_blank' => "Your password field was not complete", +'flood_control' => "Flood control is enabled on this board, please wait <#EXTRA#> seconds before replying or posting a new topic", +'no_message' => "You did not enter a message for the email", +'posting_off' => "Your posting permissions have been removed", +'move_same_forum' => "You cannot move this topic into the same forum, well, you could but there wouldn't be a lot of point", +'error_txt' => "An error has occurred", +'rp_nomsg' => "You must enter a message to the moderators", +'too_many_images' => "Sorry, but your post contains more than the allowed number of images", +'invite_no_email' => "You must enter your email address", +'not_op' => "Sorry, you do not have permission to edit that message", +'no_poll_reply' => "The poll creator has created this as a vote-only topic", +'request_hack' => "Some of the data did not match our records, we are treating this as a possible hack attempt!", +'photo_too_long' => "Your Photo field is too long.", +'avatar_invalid_ext' => "Sorry, that is not a valid file extension", +'no_reply_polls' => "You cannot vote in this poll", +'no_post' => "You must enter a post", +'calendar_not_all' => "Either complete all the birthdate fields, or leave them all blank - we cannot process partial birthdates", +'not_authorised' => "Sorry, but you have yet to validate your user account. Please check the email account you registered with.", +'no_email_stored' => "Sorry, but we could not find that email address in our records", +'topictitle_too_long' => "The topic title you entered is too long", +'no_such_msg' => "That message does not exist", +'wrong_name' => "Sorry, we could not find a membername matching your input (this could have been from a log in form, or a session authentication).", +'too_many_emoticons' => "You have posted a message with more emoticons than this board allows. Please reduce the number of emoticons you've added to the message", +'no_topic_title' => "You must enter a topic title", +'guest_abuse' => "We could not determine your posting status. Please try logging back in, or if you are a guest - please try again", +'password_no_match' => "The password is not the same as the data entered", +'already_logged_in' => "That user is already logged in!", +'no_guests' => "Sorry, but this function isn't available to guests", +'no_permission' => "Sorry, but you do not have permission to use this feature. If you are not logged in, you may do so using the form below if available.", +'server_too_busy' => "Sorry, the server is too busy to handle your request, please try again in a moment", +'loc_too_long' => "Your Location entry is too long.", +'poll_you_created' => "You created this poll", +'go_back' => "Please go back and correct this error", +'log_in_no' => "You are NOT logged in", +'pass_too_short' => "The password entered was too short", +'no_register' => "Sorry, the board administrator has switched off Registrations", +'move_no_topic' => "That Topic is not in our Database, it's possible it was deleted", +'flash_too_big' => "Sorry, but the flash movie you posted was either too large in height, width or both", +'end_subs_value' => "You must enter a numeric value for the 'End Subscription' field", +'no_starting' => "Sorry, you do not have permission to start a topic in this forum", +'no_search_forum' => "You did not choose any forums to search in, or the forums you chose to search in are password protected. If this is the case, please make sure you are logged into the password protected forums before searching.", +'not_registered' => "Guests cannot peform this action, if you are a registered member, please log-in", +'no_icq' => "That member does not have a valid ICQ Number", +'not_aol_name' => "That is not a valid AOL Identity", +'private_email' => "That member has chosen to keep their email address private", +'user_agent_no_match' => "You are using a different computer than the one you logged in under.", +'poll_add_vote' => "Vote!", +'you_are_banned' => "Sorry, you are not permitted to use this board", +'incorrect_use' => "Incorrect use of one of the board files", +'no_search_results' => "Sorry, but we did not find any matches to display. Try again and broaden your search criteria. If you were searching for new posts since your last visit, it's possible that there are none to show.", +'request_error' => "An error occurred, not all of the required fields were sent from the validation link. Please ensure that they whole link was entered, it's possible that your email clients auto-wrapper cut the link in half. Please try again.", +'not_yahoo_name' => "That is not a valid YAHOO name", +'stf_invalid_email' => "The email address you entered was of an incorrect format", +'pass_link' => "Click here!", +'no_email' => "You must enter an email address to request your log-in details", +'max_message_from' => "Your Personal Messenger box is full. You have reached the limit set for this board. You will need to delete some of your currently saved messages from either your inbox, or your saved items folder.", +'cant_use_feature' => "You are not allowed to use this part of the board", +'memid_too_long' => "Your member Id field was too long", +'moderate_no_permission' => "You do not have permission to carry out that function", +'too_many_img' => "Sorry, but you have posted more images than you are allowed to", +'no_sub_id' => "Sorry, we could not find that topic subscription", +'max_message_to' => "That member's Personal Messenger box is full and is unable to accept any new messages.", +'error_not_registered' => "Not Registered? ", +'username_long' => "The username you entered was too long", +'memid_too_short' => "Your member Id field was too short", +'sig_too_long' => "Your signature is too long.", +'no_username' => "You must enter a username", +'no_email_login' => "You must enter your email address", +'no_avatar_selected' => "No avatar was selected, please go back and correct this error", +'incorrect_avatar' => "Sorry, but that is not a valid avatar", +'avatar_invalid_url' => "Sorry, but the URL you entered for your avatar was incorrectly formatted or the link is not valid.", +'rp_noname' => "You must enter your name before we can send this report", +'illegal_img_ext' => "Sorry, but you cannot use that file extension for an image tag", +'cannot_remove_dir' => "You cannot remove that virtual directory", +'email_exists' => "That email address cannot be used as it is already in our records", +'please_complete_form' => "Please complete the form fully before submitting it", +'invite_no_email_f' => "You must enter an email address for your friend", +'move_no_source' => "No source forum was chosen", +'log_in' => "Not Logged in?", +'data_incorrect' => "One of the data fields contained the incorrect type of data, please double check the URL or data you entered into the form", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_forum.php b/upload/cache/lang_cache/en/lang_forum.php new file mode 100644 index 00000000..a09abd4e --- /dev/null +++ b/upload/cache/lang_cache/en/lang_forum.php @@ -0,0 +1,141 @@ + "from other pages", +'remember_options' => "Remember these options", + +// 2.1.2 +'multipage_alt' => "multipage jump", + +// 2.1: NEW + +'forum_options' => 'Forum Options', +'moderator_options' => 'Moderator Options', +'js_clickhold' => 'Click and hold to edit title', + +// 2.1 CHANGED + +'mark_as_read' => "Mark forum as read and return", +'mark_as_read2' => "Mark forum as read and return to board index", + + +'announce_row' => "Announcement", +'mod_showallinvisible' => 'Show All Invisible Topics', +'mod_showallposts' => 'Show All Topics With Invisible Posts', +'mod_resync' => 'Resynchronize Forum', +'mod_prune' => 'Prune / Mass Move', + +'click_for_mod' => 'Click to select this topic for bulk moderation', + +'back_to_forum' => 'Return to the forum', +'cpt_close' => "Close Topics", +'cpt_open' => "Open Topics", +'cpt_pin' => "Pin Topics", +'cpt_unpin' => "Unpin Topics", +'cpt_move' => "Move Topics", +'cpt_delete' => "Delete Topics", +'cpt_merge' => "Merge Topics", +'cpt_approve' => "Set Visible (Approve)", +'cpt_unapprove' => "Set Invisible (Unapprove)", +'f_go' => "With Selected", +'cp_js_delete' => "Are you sure you wish to delete these topics?", +'mm_title' => "Multi Moderation", +'topic_attach' => 'attachment(s): View', +'attach_title' => 'Attachment', +'attach_size' => 'Size', +'attach_post' => 'Post #', +'attach_page_title' => "Attachments", +'attach_post_date' => 'Posted on', + +'pinned_start' => "Important Topics", +'regular_topics' => "Forum Topics", +'announce_start' => "Announcements", + +'ft_title' => "Subscribe to this forum", + +'active_users_detail' => "%s Guests and %s Anonymous Users", +'active_users_title' => "%s User(s) are browsing this forum", +'active_users_members' => "%s Members:", + + +'enter_keywords' => "Enter Keywords", +'search_forum' => "Search forum", + +'pm_open_new' => "New Replies", +'pm_open_no' => "No New Replies", +'pm_hot_no' => "Hot Topic (No New)", +'pm_hot_new' => "Hot Topic (New)", +'pm_poll' => "Poll (New)", +'pm_poll_no' => "Poll (No New)", +'pm_locked' => "Locked Topic", +'pm_moved' => "Moved Topic", + +'last_post_by' => "Last post by:", + +'h_topic_title' => "Topic Title", +'last_updated' => "Last Updated:", +'logged_in' => "You have been authorized to access this forum", +'forum_jump' => "Forum Jump", +'re_order_forum' => "Reorder this forum", +'h_last_action' => "Last Action", +'no_topics' => "No topics were found. This is either because there are no topics in this forum, or the topics are older than the current age cut-off.", +'topic_sp_pages' => "Pages", + + +'show_today' => "From: Today", +'show_5_days' => "From: 5 days", +'show_15_days' => "From: 15 days", +'show_25_days' => "From: 25 days", +'show_20_days' => "From: 20 days", +'show_10_days' => "From: 10 days", +'show_60_days' => "From: 60 days", +'show_30_days' => "From: 30 days", +'show_90_days' => "From: 90 days", +'show_year' => "From: 365 days", +'show_all' => "Show All", +'show_7_days' => "From: 7 days", + + +'sort_by_date' => "Order: Last Post", +'sort_by_last_poster' => "Order: Last Poster", +'sort_by_poster' => "Order: Topic Starter", +'sort_by_replies' => "Order: Replies", +'sort_by_topic' => "Order: Topic Title", +'sort_by_start' => "Order: Topic Started", +'sort_by_attach' => "Order: Attachments", +'sort_by_views' => "Order: Views", + +'descending_order' => "Z-A", +'ascending_order' => "A-Z", + +'topicfilter_all' => 'Topics: All', +'topicfilter_open' => 'Topics: Open', +'topicfilter_hot' => 'Topics: Hot', +'topicfilter_poll' => 'Topics: Polls', +'topicfilter_locked' => 'Topics: Locked', +'topicfilter_moved' => 'Topics: Moved', +'topicfilter_istarted' => 'Topics: I Started', +'topicfilter_ireplied' => 'Topics: I Replied', + +'single_page_forum' => " ", +'h_topic_starter' => "Topic Starter", +'f_pass_submit' => "PROCEED", + +'enter_pass' => "Forum Password", + +'need_password' => "Please enter the Forum Password", + +'need_password_txt' => "This forum is protected by a password!
You must enter the correct forum password to gain access to this forum. Please ensure that your browser is capable of storing temporary cookies", + +'topic_started_on' => "This topic was started:", + +'h_replies' => "Replies", + +'multi_page_forum' => "Pages:", +'h_hits' => "Views", + +'sort_submit' => "Go", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_global.php b/upload/cache/lang_cache/en/lang_global.php new file mode 100644 index 00000000..8bc14e6c --- /dev/null +++ b/upload/cache/lang_cache/en/lang_global.php @@ -0,0 +1,271 @@ + "More Search Options", +'gbl_auto_close' => "(Message will auto close in 2 seconds)", +'gbl_my_friends' => "My Friends", +'gbl_sitemsg_header' => 'Site Message', +'gbl_gd_reload' => 'Click to generate a new image', +'mygallery' => "My Albums", +//2.1.4 - for IDM when released +'idm_header' => "Downloads", + +//2.1.3 +'ajax_topicstate' => "Altered topic state (opened/closed) from forum view", +'ajax_topicdesc' => "Edited topic description from forum view", +'ajax_topictitle' => "Edited topic title from '%s' to '%s' from forum view", + +// For BBCODE +'bbcode_wrap_html' => "HTML", +'bbcode_wrap_sql' => "SQL", +'bbcode_wrap_quote' => "QUOTE", +'bbcode_wrap_code' => "CODE", +'bbcode_img_alt' => "IPB Image", + + +//2.1.2 +'mailto_erroronforums' => "Error on the forums", +'stats_sec' => "sec", +'stats_queries' => "queries", +'myass_chars' => "Not enough characters", +'global_guestname' => "Guest", + +//2.1.2 - LOFI Additions +'lofi_noperm' => "You do not have permission to view this page", +'lofi_attach' => "Click to view attachment", +'lofi_fullversion' => "Full Version: ", +'lofi_maintext' => "This is a \"lo-fi\" version of our main content. To view the full version with more information, formatting and images, please ", +'lofi_clickhere' => "click here", +'lofi_posts' => "posts", +'lofi_replies' => "replies", +'lofi_reply' => "reply", +'lofi_please' => "Pages:", +'lofi_pinned' => 'Pinned: ', +'lofi_moved' => 'Moved: ', + +//2.1 + +'global_unregistered' => "Unregistered", +'global_open_menu' => "Open Menu", +'global_pm_title' => 'New Personal Message', +'global_pm_sent' => 'Sent on', +'global_pm_read' => 'Read Message', +'global_pm_from' => 'From', +'global_page_jump' => 'Jump to Page', +'ajax_loading_msg' => 'Loading. Please Wait...', +'au_reading' => 'Reading (%s)...', +'au_posting' => 'Posting (%s)...', + + +'global_forum_title' => "Forums", +'rss_calendar' => 'Calendar:', +'myass_title' => 'My Assistant', +'myass_drag' => 'Click and hold to drag this window', + +'time_seconds_ago' => '%s seconds ago', +'time_less_minute' => 'A minute ago', +'time_minutes_ago' => '%s minutes ago', +'time_less_hour' => 'An hour ago', +'time_hours_ago' => '%s hours ago', +'time_less_day' => 'A day ago', +'time_days_ago' => '%s days ago', +'time_less_week' => 'A week ago', +'time_weeks_ago' => '%s weeks ago', + +//2.0.2 + +'blog' => "Blogs", +'myblog' => "My Blog", + +//2.0 + +'pmp_title' => "You have a new personal message from", +'pmp_read_in_window' => "Read in this window", +'pmp_read_new_window' => 'Read in a new window', +'pmp_part1' => 'is a member of the', +'pmp_part2' => 'group and has', +'pmp_part3' => 'posts.', + +'global_lofi' => "Lo-Fi Version", +'global_timeisnow' => "Time is now", +'global_skinselector' => "Skin Selector", +'global_language' => "Language", +'gallery' => "Gallery", +'time_today' => "Today", +'time_yesterday' => "Yesterday", +'tpl_gotolast' => 'Go to last page', +'tpl_gotofirst' => 'Go to first page', +'tpl_next' => "Next page", +'tpl_prev' => "Previous Page", +'resend_val' => 'Resend Validation', +'email_address' => 'Email Address', + +//rc1 + +'fj_redirect' => " (Redirect Forum)", +'tb_toplist' => "Top Site List", + +//Added in 1.2 + +'tpl_jump' => "Jump to page...", +'tpl_q1' => "Please enter a page number to jump to between 1 and", +'tpl_pages' => "Pages", + +'sf_bytes' => "bytes", +'sf_mb' => "mb", +'sf_k' => "k", + +'bi_markread' => "Mark forum as read?", +'bi_markallread' => "Mark all subforums as read?", +'err_select' => "Select All", + +'err_title' => "Post Data Saved!", +'err_expl' => "The following post data has been saved. In some cases, using your browser's back button will empty out form fields which results in the loss of any typed and unsaved material. You may select all of the text area below and copy before hitting back.", + +'bbc_help' => 'BB Code Help', + +'ml_revalidate' => "Resend Validation Email", +'tt_golast' => "Go to the last post", +'tt_gounread' => "Go to the first unread post", +'tt_poll_vote' => "Add your vote to this poll", +'tt_poll_null' => "View results, but forfeit your vote in this poll", +'tt_poll_show' => "View poll results before adding your vote", +'tt_poll_svote' => "Go back and show the voting options", + + +'mb_disabled' => "This menu has been disabled", + +'sj_title' => 'Site Jump', +'sj_home' => 'Forum Home', +'sj_search' => 'Search', +'sj_help' => 'Help', +'er_links' => "Useful Links", + +// Added in 1.1a + +'live_chat' => "Live Chat", + +// Added in B3 + +'fj_subforums' => 'sub-forums', +'ps_page' => "Page:", +'ps_first' => 'First', +'ps_last' => 'Last', +'ps_next' => 'Next', +'ps_previous' => 'Previous', + +//--- End B3 additions --- + +'mod_cp' => "Mod CP", + +'tb_help' => "Help", +'tb_search' => "Search", +'tb_mlist' => "Members", +'tb_calendar' => "Calendar", + +'gzip_on' => "GZIP Enabled", +'gzip_off' => "GZIP Disabled", + +'l_qb' => 'My Assistant', +'view_new_posts' => "View New Posts", + +'your_cp' => "My Controls", + + +'bb_tool_tip' => "View posts since your last visit, moderator lists and more...", +'cp_tool_tip' => "Edit my settings, such as signature, avatar and more...", + + +'find_user_names' => "Search for user names", +'opens_new_window' => "( opens in new window )", + + +'warn_offline' => "(OFFLINE)", + +'all_emoticons' => "Show All", + +'jmp_go' => "Go", +'forum_jump' => "Forum Jump", + +'yes' => "Yes", +'no' => "No", + +'ct_size' => "SIZE", +'ct_lrg' => "Large", +'ct_sml' => "Small", +'ct_lest' => "Largest", + +'ct_font' => "FONT", +'ct_arial' => "Arial", +'ct_times' => "Times", +'ct_courier' => "Courier", +'ct_impact' => "Impact", +'ct_geneva' => "Geneva", + +'ct_color' => "COLOR", +'ct_blue' => "Blue", +'ct_red' => "Red", +'ct_purple' => "Purple", +'ct_orange' => "Orange", +'ct_yellow' => "Yellow", +'ct_grey' => "Gray", +'ct_green' => "Green", + +'msg_full' => "Messenger FULL!", + +'ba_edit' => "Edit", +'ba_delete' => "Delete", + +'submit_li' => "Log in", +'quote_text' => "Quote", +'pass' => "Password", +'thanks' => "Thanks", +'forum_read' => "The forum has been marked as read", +'guest_stuff' => "Welcome Guest", +'offline_title' => "IBForums Offline Mode", +'you_last_visit' => "You last visited on:", +'code_sample' => "Code Sample", +'transfer_you' => "Please wait while we transfer you...", +'new_posts' => "New Posts", +'admin_login' => "Administrators Log in", +'you_running_time' => "Your last action was on:", +'admin_cp' => "Admin CP", + +'M_1' => "January", +'M_2' => "February", +'M_3' => "March", +'M_4' => "April", +'M_5' => "May", +'M_6' => "June", +'M_7' => "July", +'M_8' => "August", +'M_9' => "September", +'M_10' => "October", +'M_11' => "November", +'M_12' => "December", + +'D_0' => "Sunday", +'D_1' => "Monday", +'D_2' => "Tuesday", +'D_3' => "Wednesday", +'D_4' => "Thursday", +'D_5' => "Friday", +'D_6' => "Saturday", + + +'name' => "Name", +'register' => "Register", +'logged_in_as' => "Logged in as: ", + +'msg_new' => "%s New Messages", +'offline' => "Sorry, the boards are offline at the moment", +'log_out' => "Log Out", +'dont_wait' => "Or click here if you do not wish to wait", +'stand_by' => "Please stand by...", +'your_messenger' => "Your messenger", +'log_in' => "Log In", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_help.php b/upload/cache/lang_cache/en/lang_help.php new file mode 100644 index 00000000..751b6a01 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_help.php @@ -0,0 +1,19 @@ + "Here is the topic you chose to view", +'results_title' => "Your Help Search Results", +'choose_file' => "Choose a Topic", +'help_txt' => "Choose a topic from the list, or search for a topic", +'submit' => "Search!", +'search_txt' => "Enter keywords to search for", +'search_results' => "Search Results", +'results_txt' => "Here are the results of the search you performed.", +'help_topics' => "Help Topics", +'no_results' => "Sorry, we could not find any help topics that matched your search criteria, please try again", +'help_topic' => "Help Topic", +'page_title' => "Search Help Topics", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_javascript.js b/upload/cache/lang_cache/en/lang_javascript.js new file mode 100644 index 00000000..0d3c8ff6 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_javascript.js @@ -0,0 +1,62 @@ +/** +* JS Language File: English +*/ + +var message_pop_up_lang = +{ + // DEFAULT + 'error' : 'An Error Occurred', + 'no_permission' : 'You do not have permission for that action', + 'cannot_cont' : 'Cannot continue with this request', + 'settings_updated' : 'Settings Updated', + + // Custom errors: + 'pp_date_error' : 'Date must be a legal valid date', + 'pp_comment_error' : 'You cannot post empty comments', + 'pp_friend_exist' : 'That member does not appear to exist', + 'pp_friend_already' : 'You already have that member as your friend', + 'pp_friend_removed' : 'Friend(s) Removed', + + // Friend added: + 'pp_friend_added' : 'Your friend(s) have been added to your list!', + 'pp_friend_added_mod' : 'Your friend must approve your request', + 'pp_friend_approved' : 'Friend request approved', + + // Comments update + 'pp_comments_updated' : 'Comments updated', + 'pp_comment_added_mod' : "Comment must be approved before it's shown", + + // POLL MODULE + 'already_voted' : 'You have already voted', + + // ARTICLES MODULE + 'rating_updated' : 'Your rating has been updated', + 'rating_added' : 'Your rating has been added', + 'rating_already' : 'You have rated this article already' +}; + +/** +* Global stuff +*/ + +var ipb_global_lang = +{ + // ERROR + 'post_upload_not_empty' : 'You have an item to be uploaded. Click the UPLOAD button to upload it or click OK to continue without uploading', + // EDITORS + 'editor_enter_url' : 'Please enter the full URL', + 'editor_enter_title' : 'Please enter the title for this item', + 'editor_enter_email' : 'Please enter the email address', + 'editor_enter_image' : 'Please enter the URL for this image', + 'editor_enter_list' : 'Enter a list item', + // GENERAL + 'general_error' : 'Error', + 'general_ok' : 'OK', + 'image_resized' : 'Image Size Reduced: <%1>% of original size [ <%2> x <%3> ]', + 'image_attach_percent' : 'Reduced <%1>%', + 'image_attach_no_percent' : 'Image Reduced', + 'image_attach_dims' : '<%1> x <%2>', + 'image_attach_size' : ' (<%1>)', + 'click_to_view' : 'Click to view full image', + 'visit_my_website' : 'Visit My Website' +}; \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_legends.php b/upload/cache/lang_cache/en/lang_legends.php new file mode 100644 index 00000000..b6630a60 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_legends.php @@ -0,0 +1,36 @@ + "List Item", +'bbc_helloworld' => "Hello World", +'bbc_testpage' => "A Test Page", + +'bbc_ex1' => "This is sample text", +'bbc_ex2' => "Click here!", +'bbc_title' => "BB Code", +'bbc_intro' => "What is BB Code?

BB Code is a quick and easy way to add effects or formatting to your posts.
It is used in a similar format to HTML tags which you may already be familiar with.
Below is a quick guide to the most common BB Code uses.", +'bbc_before' => "You Type", +'bbc_after' => "We Show", + +'emo_title' => "Emoticons", +'emo_type' => "Code", +'emo_img' => "Image", + +'fu_title' => "Find User Names", +'fu_close_win' => "Close Window", +'fu_enter_name' => "Enter part or all of the name", +'fu_search_but' => "Search", + +'fu_error' => "Error", + +'fu_no_data' => "You must enter all or part of a name to search by", +'fu_no_match' => "We found no matches using your search criteria", +'fu_kc_loads' => "We found over 100 matches, please try and enter more of the username", +'fu_back' => "Back", +'fu_add_mem' => "Insert member into form", +'fu_add_desc' => "Please select a name from the drop down box and click on the button to add the name into the form that opened this window", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_login.php b/upload/cache/lang_cache/en/lang_login.php new file mode 100644 index 00000000..4469a037 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_login.php @@ -0,0 +1,68 @@ + "Your account will automatically be unlocked in %s minutes", + +#2.1 + +'form_title_attention' => "Attention!", +'wrong_auth' => "Username or password incorrect", + +'logged_in' => "You are logged in, returning you to the board index", +'not_logged_in' => "You are not logged in, taking you to the log in form", + +'reg_log_in' => "You are now registered and logged in, returning you to the board index", +'reg_not_log_in' => "You are now registered, taking you to the log in form", + +'email_log_in' => "Your email address change has been approved, returning you to the board index", +'email_not_log_in' => "Your email address change has been approved, taking you to the log in form", + +'pass_log_in' => "Your password change has been approved, returning you to the board index", +'pass_not_log_in' => "Your password change has been approved, taking you to the log in form", + +'need_validation' => "Sorry, you have not validated your account yet.
Please check your email for the validation information before attempting to log in.
Resend the validation email", + +'login_text' => "You must already have registered for an account before you can log in.
If you do not have an account, you may register by clicking the 'register' link near the top of the screen", + +'force_login' => "The board administrator requires that all members log in before viewing the board", +'wrong_name' => "Sorry, we could not find a member using those log in details.", +'please_log_in' => "Please enter your details below to log in", +'cookie_no' => "No", + +'options' => "Options", +'wrong_pass' => "Sorry, the password was wrong. All passwords are case sensitive", +'admin_force_log_in' => "The board administrator requires all members to log in", +'log_in_submit' => "Log me in", + +'add_name' => "Yes, add my name to the active users list", +'errors_found' => "The following errors were found:", +'thanks_for_logout' => "You are now logged out", + +'forgot_pass' => "I've forgotten my password!", + +'thanks_for_login' => "you are now logged in as:", + +'log_out' => "Log Out", + +'enter_name' => "Enter your user name", +'enter_pass' => "Enter your password", +'enter_email' => "Enter your email address", + +'rememberme' => "Remember me?", +'notrecommended' => "This is not recommended for shared computers", +'form_invisible' => "Log in as invisible", +'anon_name' => "Don't add me to the active users list", + +'pass_link' => "Click here!", + +'privacy' => "Privacy, do you want to appear on the active users list?", + +'cookie_yes' => "Yes", +'blank_fields_user' => "Please enter your name and password before continuing", +'blank_fields_email' => "Please enter your email address and password before continuing", +'log_out_submit' => "Log me out", +'log_in' => "Log In", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_mlist.php b/upload/cache/lang_cache/en/lang_mlist.php new file mode 100644 index 00000000..bab7066b --- /dev/null +++ b/upload/cache/lang_cache/en/lang_mlist.php @@ -0,0 +1,84 @@ + "Rating", + +'m_dd_views' => 'Profile Views', +'m_gender_s' => "Members' Gender", +'m_gender_a' => "Any", +'m_gender_m' => "Male", +'m_gender_f' => "Female", + +'m_rating' => "Rating", +'m_rating_morethan' => "More than", + +'m_views' => "Views", +'m_view_profile' => "View Public Profile", +'m_remove_friend' => "Remove Friend", +'m_add_friend' => "Add as Friend", +'m_send_message' => "Send Message", +'m_find_posts' => "Find Member's Posts", + +'button_quickjump' => 'Name begins with...', +'toggle_more' => 'Toggle More Options...', +'s_aim' => 'AIM Identity contains', +'s_yahoo' => 'Yahoo! Identity contains', +'s_icq' => 'ICQ Number contains', +'s_msn' => 'MSN Identity contains', + +'s_posts' => 'Post count is', +'s_joined' => 'Join date is', +'s_lastpost' => 'Last post is', +'s_lastvisit' => 'Last visit is', + +'photo_only' => "Must have a photo", + +'s_signature' => 'Signature contains', + +'s_homepage' => 'Home page contains', + +'s_name' => 'Member name', + +'s_dateformat' => '(MM-DD-YYYY)', +'title_search' => "Search and Filter Options", +'title_messengers' => 'Messengers', +'title_date' => 'Post & Date Ranges', +'title_options' => "Additional Options", +'s_morethan' => 'more than', +'s_lessthan' => 'less than', +'s_begins' => "begins with", +'s_contains' => "contains", +'s_any' => 'Any...', + + +//added 1.2 + +'member_photo' => "Photo", + + +'qs_go' => "Go!", +'pages' => "Pages:", +'no_results' => 'No Results', + +'member_group' => "Group", + +'sort_by_name' => "Member Name", +'member_joined' => "Joined", + +'sorting_text' => "<#FILTER#> by <#SORT_KEY#> in <#SORT_ORDER#> with <#MAX_RESULTS#> results per page", +'member_name' => "Name", +'member_posts' => "Posts", +'multi_pages' => "Multiple Pages", +'sort_by_posts' => "Total Posts", +'descending_order' => "Descending Order", +'ascending_order' => "Ascending Order", +'show_admin' => "Administrators", +'member_level' => "Level", +'sort_submit' => "Go!", +'show_all' => "All Members", +'member_email' => "Email", +'sort_by_joined' => "Join Date", +'page_title' => "Member List", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_mod.php b/upload/cache/lang_cache/en/lang_mod.php new file mode 100644 index 00000000..90b487c5 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_mod.php @@ -0,0 +1,282 @@ + "Note Added", +'mod_warn_note' => "Warn Level Unchanged", +'mod_warn_new_note' => "Add a new note for", +'mod_warn_fieldset' => "New Note Contents", +'mod_warn_note_save' => "Save Note", +'acp_edited_profile' => "Edited Profile for:", +'acp_moved_posts' => "Moved posts from '%s' to '%s'", +'acp_approved_posts' => "Approved %s pending posts for '%s'", +'acp_unapproved_posts' => "Un-approved %s pending posts for '%s'", +'acp_trashcan_post' => "Applied trash can for deleted post", +'acp_split_topic' => "Split topic", +'acp_approve_topic' => "Approved a topic (tid: %s)", +'acp_mass_moved' => "Mass moved topics", +'acp_pruned_forum' => "Pruned Forum", +'acp_moved_topics' => "Moved topics from %s to %s", +'acp_multi_mod' => "Applied multi-mod '%s' on forum %s", +'acp_altered_topics' => "Altered topics (%s) (%s)", +'acp_trashcan_topics' => "Applied trash can to delete topic id(s):", +'acp_deleted_topics' => "Deleted topics (IDs: %s )", +'acp_merged_topic' => "Merged topic '%s' with '%s'", +'acp_moved_a_topic' => "Moved a topic from %s to %s", +'acp_trashcan_a_topic' => "Applied trash can to delete topic id:", +'acp_deleted_a_topic' => "Deleted a topic", +'acp_edit_title' => "Moderator edited a topic title: (ID: %s) from '%s' to '%s'", +'acp_opened_topic' => "Opened Topic", +'acp_locked_topic' => "Locked Topic", +'acp_pinned_topic' => "Pinned Topic", +'acp_unpinned_topic' => "Unpinned Topic", + +'warn_popup_title' => "WARN", + +// IPB 2.1: New + +'mod_from' => "From:", +'mod_from_id' => "From Topic ID:", + +'cp_batch_done' => "%s topics processed so far. %s to go...", +'cp_optional' => 'All these settings are optional', +'cp_prune_days2' => "Have no replies over n days", +'cp_prune_action2' => "Prune or move to", +'cp_per_go' => "Process n topics per cycle", + +// IPB 2.1: Changed + +'cpp_close' => "Close this window", + +'cp_prune_domove' => "Move the topics!", +'cp_prune_dorem' => "Remove the topics!", + +'cp_prune' => "Manage Topics in forum: ", + +'cp_action' => "Prune Action", +'cp_prune_replies' => "Have less than n replies", +'cp_prune_days' => "Prune Topics Which...", + +'cp_prune_type' => "Matches the topic state", +'mps_ignorepin' => "Is not a pinned topic", + + +'cp_pday_open' => "Open Topics only", +'cp_pday_closed' => "Locked Topics only", +'cp_pday_link' => "Move linked Topics only", +'cp_pday_all' => "Any type of topic", + +'cp_prune_member' => "Were started by member", + + +'cp_prune_sub1' => "Check Form Submission", +'cp_prune_sub2' => "Prune this forum!", + +'cp_ac_prune' => "PRUNE ONLY, DON'T MOVE", +'cp_prune_text' => "You may remove topics or move topics to another forum based on your criteria. To move topics, choose a destination forum from the drop down menu. To simply remove the topics, choose 'PRUNE ONLY' from the forums drop down menu. Moving topics will not leave moved links in the source forum", +'cp_pages' => "Page: ", +'cp_error_no_mem' => "We could not locate a member by that name, please try again", +'cp_error_no_topics' => "There are no topics left in the moderation queue in this forum.", +'cp_error_no_subforum' => "You cannot move topics into a category or a subforum that does not allow new posts", +'cp_total_topics' => "Total topics in this forum", +'cp_total_match' => "Total topics to (re)move", +'cp_check_result' => "Form Check Results", +'cp_check_text' => "Continue only if satisfied with the results, clicking the link below WILL carry out the action. If you need to make any changes, please adjust the form below and re-check the submission.", + +// ---- + +'cp_remove_photo' => "Remove member's photo?", +'cp_remove_av' => "Remove member's avatar?", +'cp_edit_website' => "Website", +'cp_edit_location' => "Location", +'cp_edit_signature' => "Signature", +'cp_edit_interests' => "Interests", +'cp_em_title' => "Editing Member", +'cp_vp_title' => 'Profile', +'cp_em_sub_main' => "Main Member Information", +'cp_em_sub_other' => "Other Member Information", +'cp_em_yahoo' => 'Yahoo! Identity', +'cp_em_aim' => 'AIM Identity', +'cp_em_icq' => 'ICQ Identity', +'cp_em_msn' => 'MSN Identity', +'cp_em_submit' => 'Edit Member', + +'cm_title' => 'Merging Posts', +'cm_post' => 'Final Merged Post Date', +'cm_author' => 'Final Merged Post Author', +'cm_text' => 'Final Merged Post Content', +'cm_submit' => 'Merge Posts', +'cm_attach' => 'Final Merged Post Attachments', +'cm_attach2' => 'Select which attachments you wish to keep', +'cm_keep' => 'Keep', +'cm_delete' => 'Delete', +'cmp_title' => "Move Posts", +'cmp_topic' => 'Enter topic ID', +'cmp_topic2' => 'This is the ID of the topic these posts will be moved into.
(Tip: You can simply copy the URL from your browser address bar when viewing the topic and paste it here)', +'cmp_submit' => 'Move Posts', +'cmp_notopic' => 'That is not a valid topic to move these posts into. Please try again and check the input carefully', + +'redirect_modified' => 'Modified Topic', +'cp_redirect_posts' => "Posts updated, returning to the topic", +'cp_results' => "Result", +'cp_result_move' => "Number of topics moved: ", +'cp_result_del' => "Number of topics deleted: ", + +'cp_redirect_topics' => "Topics updated, returning to the topic list", +'cp_tmove_start' => "Moving topics from forum:", +'cp_tmove_to' => "Select a destination forum", +'cp_tmove_end' => "Move selected topics", +'cp_ttitle' => "Moving Topics", +'cp_resync' => "Forum Resynchronized", +'mpt_title' => "Prune Settings", +'mpt_help' => "Prune Help", +'mpt_confirm' => "Prune Confirm", + +// Added 1.2 +'w_v_pages' => "Pages", +'w_v_warnby' => "Warned by", +'w_v_none' => "There are no saved notes for this member", +'w_v_add' => "Added to warn level", +'w_v_minus' => "Removed from warn level", +'w_v_notes' => "Notes", +'w_v_warned_on' => "Warned on", +'w_v_title' => "Saved warn logs", +'w_done_t' => "Warn Adjustment Result", +'w_done_te' => "%s's warning level has been adjusted successfully and the action logged.", +'w_done_home' => "Go back to the forum home", +'w_done_forum' => "Go back to forum", +'w_done_topic' => "Go back to topic", +'errors_found' => "Error", +'we_no_reason' => "You must enter a reason for this warn adjustment in the relevant section below", +'we_no_subject' => "You must enter a PM / Email subject", +'pm_email_subject' => "You have a new PM", +'w_title' => "Member Warning Center", +'w_restricted' => "Restriction in progress, the remaining time has been recalculated", +'w_warnfor' => "Member Warning Panel for", +'w_complete' => "Please complete the form below fully", +'w_adjust_level' => "Adjust member's warn level", +'w_add' => "Increase Warning Level", +'w_remove' => 'Decrease Warning Level', +'w_modq' => "Enforce moderator preview of all new posts?", +'w_modq_i' => "Moderator Preview indefinitely", +'w_day' => "Days", +'w_hour' => "Hours", +'w_resposts' => "Disable this members posting ability", +'w_resposts_i' => "Disable indefinitely", +'w_suspend' => "Suspend member's account", +'w_orfor' => "or for", +'w_susfor' => "Suspend for", +'w_reason' => "Reason for this warn adjustment", +'w_reason2' => "This section must be completed", +'w_contact' => "Send message to member", +'w_c' => "Method", +'w_c_subj' => "Email / PM Subject", +'w_c_e' => "Email", +'w_c_p' => "PM", +'w_submit' => "Alter Warn Level", +'w_contact2' => "Leave blank to not contact the member", + +'mm_applied' => 'Topic multi-moderation %s applied', +'pe_unused' => "Unused", + +// Added BETA 2: + +'pe_question' => "Poll Question", + +'st_top' => "Split Topic", +'st_explain' => "Splitting a topic allows you to select posts to be moved into a new topic. Please specify the title and description for the new topic and its destination forum before continuing.
Note Long posts are reverted back to code tags and shortened to prevent long pages", +'st_forum' => "Forum for new topic", +'st_submit' => "Split the selected posts", +'st_post' => "Post Review", +'st_split' => "Move this post", +'st_top_bit' => "Posted by %s on %s", +'st_redirect' => "The topic has been split, returning you to the original forum", + +'th_title' => "Topic History Report", +'th_topic' => "Topic Title", +'th_desc' => "Topic Description", +'th_start_date' => "Topic Started on", +'th_start_name' => "Topic Started by", +'th_last_date' => "Last Post on", +'th_last_name' => "Last Post by", +'th_avg_post' => "Average Posts per day", + +'ml_title' => "Moderator Log Entries", +'ml_name' => "Member Name", +'ml_desc' => "Description", +'ml_date' => "Date", +'ml_none' => "There are no entries for this topic", + +'mt_top' => "Merge Topic", +'mt_explain' => "Merging topics allows you to 'move' all the posts from another topic into this one. The new topic will be sorted in chronological order, ensure this is the desired effect before continuing. Polls and poll voter information will not be merged.", +'mt_new_title' => "Topic Title", +'mt_new_desc' => "Topic Description", +'mt_tid' => "Enter in the URL of the topic that you wish to merge with this one.
(Tip: You can simply copy the URL from your browser address bar when viewing the topic and paste it here)", +'mt_submit' => "Merge Topics", +'mt_redirect' => "The topics have been merged, returning you to the newly merged topic", + +'ts_title' => 'Topic Subscriptions', +'ts_count' => 'There are %s members subscribed to this topic, do you wish to unsubscribe them all?', +'ts_submit' => "Unsubscribe all members", +'ts_none' => "There are no members subscribed to this topic. You can still unsubscribe all members, but it won't make any difference", +'ts_redirect' => "all members have been unsubscribed from this topic", + + +'leave_link' => "Leave a link to the new topic in the source forum?", + +'yes' => "Yes", +'no' => "No", + +'move_exp' => "Please select the destination forum and method of moving", + +'pe_top' => "Editing Poll: ", +'pe_option' => "Poll Option:", + +'pe_submit' => "Edit this poll", + +'pe_pollonly' => "Make poll only (no new replies allowed?)", +'pe_yes' => "Yes", +'pe_no' => "No", +'pe_done' => "Poll Edited", + +'pd_top' => "Deleting Poll:", + +'pd_text' => "Please confirm poll removal by clicking the button below", +'pd_submit' => "Remove this poll", +'pd_redirect' => "Poll Removed", + +'post_deleted' => "Post deleted", + +'top_edit' => "Editing Topic ", +'submit_move' => "Move this topic", + +'t_open' => "Open Topic", +'t_edit' => "Edit Topic", +'p_moved' => "Topic Moved", +'p_pinned' => "Topic Pinned", +'t_delete' => "Delete Topic", +'top_move' => "Move Topic ", +'p_edited' => "Topic Edited", + +'edit_f_desc' => "Topic Description", + +'t_close' => "Close Topic", +'delete_topic' => "Deleting Topic, only continue if you wish to delete this topic, there will be no other confirmation screens.", +'move_from' => "Move this topic from", +'p_deleted' => "Topic Deleted", +'t_move' => "Move Topic", +'edit_f_title' => "Topic Title", +'to' => "to", +'submit_close' => "Close this topic", +'p_closed' => "Topic Closed", +'top_delete' => "Deleting Topic ", +'p_opened' => "Topic Opened", +'edit_topic' => "Editing Topic Details", +'p_pdeleted' => "Post Deleted", +'post_icon' => "Post Icons", +'submit_edit' => "Edit this topic", +'submit_delete' => "Delete this topic", +'p_unpinned' => "Topic Unpinned", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_msg.php b/upload/cache/lang_cache/en/lang_msg.php new file mode 100644 index 00000000..980ca8f8 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_msg.php @@ -0,0 +1,290 @@ + "You must enter a message title longer than 2 characters.", +'mess_contact' => "PM Block List", +'address_list_empty' => "Friends list empty", +'address_none' => "You have no members in your block list at the moment", +'address_current' => "Members already in your block list", +'member_add' => "Add a member to block from sending you a PM", +'enter_desc' => "Optionally enter a reason", +'submit_address' => "Add this member to my block list", +'member_edit' => "You may edit this entry.", +'add_to_book' => "Block", + +// 2.2 +'dd_forward_pm' => "Forward PM", +'dd_add_to_block' => "Add to PM block list", +'deleted_user' => 'Deleted Member', +'m_personal_portal' => 'Edit Personal Portal Information', +'m_manage_friends' => 'Manage Friend List', +'xml_no_pms' => "No messages in your inbox", +'tt_menu' => "Menu", +'m_messenger' => "Messenger", +'mess_new' => "Compose New Message", +'mess_folders' => "Edit Storage Folders", +'mess_inbox' => "Go to Inbox", +'mess_archive' => "Archive Messages", +'mess_tracker' => "Message Tracker", +'mi_prune_msg' => "Empty PM Folders", +'forum_jump' => "Forum Jump", +'mess_saved' => "Saved (Unsent) PMs", +'m_tracker' => "Subscriptions", +'m_view_subs' => "View Topics", +'m_view_forum' => "View Forums", +'m_personal' => "Personal Profile", +'m_bio_info' => "Edit Biography", +'m_sig_info' => "Edit Signature", +'m_avatar_info' => "Edit Avatar Settings", +'m_options' => "Options", +'m_email_opt' => "Email Settings", +'m_board_opt' => "Board Settings", +'m_email_change' => "Change Email Address", +'m_passy_opt' => "Change Password", +'m_contact_info' => "Edit Profile Information", +'m_change_photo' => "Change Personal Photo", +'m_dname_change' => "Change Display Name", +'new_sub_link' => "Purchase Paid Subscriptions", +'m_top_list' => "Top Site List", +'tsl_home' => "Goto List Home", +'tsl_your_sites' => "Edit Your Sites", +'m_attach' => 'Manage Your Attachments', +'m_ignore_users' => "Manage Ignored Users", +'menu_title_mod' => 'Moderator Tools', +'menu_ipsearch' => 'IP Address Look-up Tool', +'menu_memsearch' => 'Member Look-up Tool', +'menu_announcements' => "Manage Announcements", +'m_blog' => "Community Blog", +'m_blog_ucp_main' => "Your Blog Settings", +'m_blog_cblocks' => "Content Blocks Settings", +'m_blog_aboutme' => "About Me Settings", +'m_blog_your_blog' => "Your Blog", +'m_gallery' => 'Invision Gallery', +'m_gallery_albums' => 'Your Albums', +'m_gallery_favs' => 'Your Favorites', +'m_gallery_controls' => 'Your Controls', +'msg_options' => "Options", + + +// 2.1.2 +'pm_textbit' => "PM: ", +'on_textbit' => "on", +'sentby_textbit' => "Sent by ", +'sentto_textbit' => "Sent to ", + +// v2.1 + +'msg_ip_address' => 'IP Address:', +'xml_go_inbox' => "Go to Inbox", + +'pma_title' => "Private Message Archive", +'cc_hide_users' => 'Hide CC recipients from others?', + +// Added in 1.2 + +'arch_new' => "and newer", +'arch_old' => "and older", + +'err_no_chosen_member' => "You must either choose a member from your address book or enter their name in the appropriate field fully.", +'err_errors' => "The following errors were found", +'err_no_msg' => "You must enter a message larger than 3 characters.", +'err_no_such_member' => "There is no such member - please check the name entered and try again.", + +'fd_text' => "You may remove your stored personal messages - simply choose which folders you wish to empty and click on the continue button.
Note: There is no undo - please double check before continuing.", +'fd_name' => "Folder", +'fd_count' => "No. PMs", +'fd_empty' => "Empty?", +'fd_continue' => "Continue", +'fd_unsent' => "Unsent PMs", +'fd_save_unread' => "Keep Unread PMs?", + +// Added in RC1 + +'msg_pages' => "Pages", + +'pm_email_subject' => "New Personal Message", + +'tk_read_messages' => "Read Messages", +'tk_read_desc' => "The messages shown here have been read by the person they were sent to.", +'tk_read_date' => "Date Read", +'tk_unread_date' => "Date Sent", +'tk_untrack_button' => "End tracking with", + +'tk_unread_messages' => "Unread Messages", +'tk_unread_desc' => "The messages shown here have not been read by the person they were sent to. You may delete them before they are read.", +'vm_delete_pm' => "Delete PM", +'vm_forward_pm' => "Forward PM", +'vm_track_msg' => "Track this message?", + +'vm_forward_text' => "Message Forwarded From %s", + +'inbox_no_msg' => "No messages found", + +'pm_reply_link' => "Reply", + + +'pmpc_full_string' => "Your folders are <#PERCENT#>% full", +'pmpc_info_string' => "You have %s messages out of %s maximum storable messages", +'pmpc_unlimited' => "an unlimited amount of", + +'pmpc_mark_read' => "Select read messages", +'pmpc_unmark_all' => "Unselect all", + +'pme_title' => "ERROR", +'pme_none_sent' => "This personal message has not been sent", +'pms_send_later' => "Save (Send later)", +'pms_redirect' => "this message has been stored for later completion and has not been sent", + +'pms_saved_title' => "Saved Unsent Messages", +'pms_message_to' => "Message For", +'pms_cc_users' => "CC Users?", +'pms_saved_date' => "Saved Date", + +'pme_no_cc_user' => "We could not find any matches for the member names you entered into the carbon copy box, please check the input before resubmitting", +'pme_too_many' => "You are not permitted to carbon copy this message to that many people, please reduce the list and try again", + +'pme_failed_nopm' => "Personal Message to %s will fail because %s has their personal messenger disabled", +'pme_failed_maxed' => "Personal Message to %s will fail because %s has reached the maximum allowed stored messages", +'pme_failed_nomem' => "Personal Message to %s will fail because %s does not exist!", +'pme_failed_block' => "Personal Message to %s will fail because %s has blocked incoming messages", + +'pm_preview' => "Preview", + +'pm_pre_button' => "Preview Message", + +'pmp_title' => "You have a new personal message!", + +'pmp_get_last' => "Read this message in this window", + +'pmp_string' => "Your newest message is from <#NAME#>, entitled '<#TITLE#>'
This was sent on <#DATE#>", + +'pmp_go_inbox' => "Take me to my inbox", + +'pmp_ignore' => "Close this window", + +'pmp_thiswindow' => "Open in this window", + +'carbon_copy_title' => "Carbon copy to other members", +'carbon_copy_desc' => "You may enter up to %s names in the carbon copy box.

One name per line.", + +'forum_jump' => "Forum Jump", + +'author' => "Author", +'m_pmessage' => "Personal Message", +'all_folders' => "All folders", +'archive_title' => "Archive Messages", +'archive_text' => "Please select the archive criteria.
The archived messages will be compiled into a single file and emailed to your address as an attachment of your choice.", +'arc_folders' => "Archive from which folder?", +'arc_dateline' => "Archive messages received in the last", +'arc_days' => "days", +'arc_alldays' => "all", +'arc_delete' => "Delete messages after archiving?", +'arc_yes' => "Yes", +'arc_no' => "No", +'arc_submit' => "Process", +'arc_complete' => "The archiving process has completed.
You should receive your email shortly with an attachment containing <#NUM#> archived messages.", +'arc_comp_title' => "Archive Complete", + +'arc_email_subject' => "Personal Message Archive Attached", + +'arc_type' => "Compile datafile as", + +'arc_html' => "HTML page", +'arc_xls' => "Importable MS Excel datafile", + +'arc_max' => "Number of messages to archive", + +'t_book' => "Address Book", +'prefs_title' => "Messenger Preferences", +'m_posts' => "Posts:", +'from_title' => "Message Title", +'message_from' => "Sender", +'mem_read_msg' => "has read this message", +'no' => "No", +'read_rec_title' => "Read Receipt:", +'delete_button' => "delete", +'from_date' => "Date (oldest first)", +'message_date' => "Date", +'enter_a_name' => "Members name", +'to_whom' => "Recipients Name", +'prefs' => "Preferences", + +'prefs_help' => "You may set up your messenger preferences from here.", +'auto_sent_add' => "Add a copy of this message to my sent items folder", +'sort_by' => "Sort Messages by", +'member_added' => "Member has been added to your address book", +'move_button' => "move to", +'a_msg_no_new' => "You have no new messages", +'can_contact' => "Message Allow", +'send' => "Send New Message", +'sent_text' => "Your message '<#MESSAGE_TITLE#>' has been sent. They will now be informed that they have a new message.", +'welcome' => "Welcome to your messenger", +'cannot_contact' => "Message Ban", +'member_name' => "Member Name", +'viewing_message' => "Viewing Message:", +'submit_send' => "Send Message", +'delete' => "Delete", + +'send_header' => " you can choose from the list of stored names from your address book, or enter the name of the member you wish to message", +'yes' => "Yes", +'goto_folder' => "Jump to folder", +'enter_name' => "OR Enter the members name here", +'enter_message' => "Enter your message", +'prefs_submit' => "Submit Changes", +'allow_msg' => "Allow this member to message you?", +'sent_on' => "Sent on", +'sent_url' => "Click here to return to your messenger", +'msg_deleted' => "That message has been deleted", +'out_box' => "Outbox", +'t_welcome' => "Welcome to your messenger", +'max_msg' => "Maximum message size is <#MAX_MSG_SIZE#> k", +'sent_title' => "Your Message has been sent", +'submit_address_edit' => "Edit this entry", +'move_or_delete' => "or", +'address_list' => "Choose from your address book", +'prefs_new' => "Add New Virtual Directories", +'selected_msg' => "the selected messages", +'from_date_new' => "Date (newest first)", +'address_title' => "Your Address Book", +'no_msg_chosen' => "You did not select any messages. You select them by clicking on the checkbox on the far right of each entry", +'from_name' => "Member", +'new_message' => "New Message Status", +'your_options' => "Your Options", +'send_title' => "Send a new message", +'posted' => "Posted", +'msg_title' => "Message Title", +'icon_read' => "Read messages", +'cannot_remove' => "Cannot Remove", +'goto_submit' => "Go!", +'m_joined' => "Joined:", +'t_title' => "Your control panel", +'message_read_state' => "Read?", +'other' => "Other", +'c_msg_full' => "
WARNING: YOUR FOLDERS ARE FULL
You MUST delete some saved messages in your inbox or folders before you can receive any more personal messages", +'msg_body' => "Message", +'dir_title' => "Current Messenger Folder:", +'saved_sent_msg' => "Sent: ", +'in_box' => "Inbox", +'a_msg_new' => "You have <#NEW_MESSAGES#> new messages!", +'member_options' => "Options", +'prefs_text_a' => "You may edit the names, or delete the name to delete this virtual directory. Please note, you will be unable to remove a directory if it contains messages.", +'edit' => "Edit", +'enter_block' => "Options", +'prefs_text_b' => "You may add extra directories. You do not have to use all the input boxes.", +'icon_unread' => "Unread messages", +'splash' => "Summary", +'current_sort' => "Messages are currently sorted by: ", +'contact' => "Address Book", +'message_options' => "Options", +'no_reply' => "You haven't replied to this message", +'c_msg_total' => "You have <#NUM#> total messages in all your folders.", +'read_rec_text' => "Original message sent on:", +'button_preview' => "Preview", +'m_group' => "Group:", +'prefs_current' => "Current Virtual Directories", +'message_to' => "This message was sent to", +'message_title' => "Message Title", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_online.php b/upload/cache/lang_cache/en/lang_online.php new file mode 100644 index 00000000..4347c735 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_online.php @@ -0,0 +1,49 @@ + "Sort by: ", +'s_sort_key_click' => "Last Click", +'s_sort_key_name' => "Member Name", +'s_sort_order_asc' => "Ascending", +'s_sort_order_desc' => "Descending", +'s_show_mem_guest' => "Show Guests Only", +'s_show_mem_reg' => "Show Registered Only", +'s_show_mem_all' => "Show All Users", +'s_go' => "Update", +'member_name' => "Member Name", +'guest' => "Guest", +'board_index' => "Viewing Board Index", +'n_a' => "[ N/A ]", +'pages' => "Pages:", +'time' => "Time", +'where' => "Location", +'user_ops' => "Options", +'page_title' => "Online Users", + +'WHERE_toplist' => "Top Site List", +'WHERE_sf' => "Viewing Forum:", +'WHERE_sr' => "Viewing Forum Rules:", +'WHERE_st' => "Viewing Topic:", +'WHERE_login' => "Logging in...", +'WHERE_post' => "Posting in forum:", +'WHERE_reg' => "Registering...", +'WHERE_online' => "Viewing Online List", +'WHERE_members' => "Viewing the Members List", +'WHERE_help' => "Viewing the Help Files", +'WHERE_search' => "Searching...", +'WHERE_print' => "Printing a topic", +'WHERE_forward' => "Emailing a topic", +'WHERE_msg' => "Using Personal Messenger", +'WHERE_usercp' => "Using User CP", +'WHERE_mail' => "Contacting member via email", +'WHERE_invite' => "Inviting a friend to the board", +'WHERE_icq' => "Contacting member via ICQ", +'WHERE_aol' => "Contacting member via AIM", +'WHERE_profile' => "Viewing Members Profile", +'WHERE_stats' => "Viewing Stats", + + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_portal.php b/upload/cache/lang_cache/en/lang_portal.php new file mode 100644 index 00000000..d677fe95 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_portal.php @@ -0,0 +1,50 @@ + "%s New Messages", +'wbox_last_visit' => "You last visited our website on %s", +'wbox_guest_reg' => "You have to %s before you can post to our site", +'wbox_register' => "register", +'wbox_g_username' => "Username", +'wbox_g_password' => "Password", +'wbox_g_login' => "Log in", +'wbox_guest_name' => "visitor", +'wbox_welcome' => "Welcome", +'wbox_getnewposts' => "View new posts", +'wbox_mycontrols' => "My Controls", +'wbox_myassistant' => "My Assistant", +'wbox_logout' => "Log out", +'pm_title' => "Personal Messages", +'search_title' => "Search Website", +'search_go' => "Go", +'search_advanced' => "Advanced Search", +'links_title' => "Site Navigation", +'cskin_title' => "Skins", +'cskin_text' => "Select a skin to use", +'cskin_go' => "Go", +'online_title' => "Online Users", +'online_breakdown' => "There are %s online users browsing:", +'online_split' => "%s members and %s visitors", +'poll_title' => "Website Poll", +'poll_total_votes' => "Total: %s votes", +'poll_voted' => "You have already voted", +'poll_novote' => 'You cannot vote', +'poll_noguest' => 'Log in to vote', +'poll_vote' => 'Vote!', +'poll_finished' => 'This poll is completed', +'poll_discuss' => 'Discuss this poll', +'recent_title' => 'Recent Articles', +'recent_read' => 'Read', +'recent_comments' => 'Comments', +'discuss_title' => 'Latest Discussions', +'article_postedby' => 'Posted by %s - %s - %s comments', +'article_noreply' => 'Read %s times - make a %s', +'article_reply' => 'Read %s times - last %s by %s', +'article_comment' => 'comment', +'article_readmore' => 'read more', +'aff_title' => "Recommended Sites", + + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_post.php b/upload/cache/lang_cache/en/lang_post.php new file mode 100644 index 00000000..d6279a05 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_post.php @@ -0,0 +1,237 @@ + "Reason for edit", +'captcha_explain' => "Please enter the 6 character code shown in the image. If you cannot read the code, click the image to generate a new one.", + +'attach_space_used' => "Attachment space used", +'attach_space_of' => "of", +'max_single_attach' => "Max. single upload size", +'attach_select_file' => "Select a file", +'attach_but_upload' => "UPLOAD", +'attach_manage_current' => "Manage Current Attachments", +'attach_header' => "Attachments", + +'attach_js__no_items' => "There are no items currently", +'attach_js__uploading' => "Uploading File...", +'attach_js__init' => "Initializing Attachments...", +'attach_js__upload_success' => "Upload successful and is available from the 'Manage Current Attachments' menu", +'attach_js__upload_fail' => "Upload failed. Please ask the administrator to check the settings and permissions", +'attach_js__upload_fail1' => "Upload failed. The file was larger than the available space", +'attach_js__upload_fail2' => "Upload failed. You are not permitted to upload this type of file", +'attach_js__upload_fail3' => "Upload failed. Please ask the administrator to ensure the uploads directory is available", +'attach_js__upload_fail4' => "Upload failed. Please ask the administrator to ensure the uploads directory is writeable", +'attach_js__upload_fail5' => "You did not select a file to upload", +'attach_js__ready' => "Attachment system ready", +'attach_js__delete' => "Delete attachment", +'attach_js__insert' => "Insert attachment into text editor", +'attach_js__confirm' => "Proceed with attachment removal?", +'attach_js__isremoved' => "Attachment Removed", +'attach_js__removing' => "Removing Attachment...", + + + +'poll_multichoice' => "Multiple choice question? (Allows users to select more than one choice) ", +'poll_only_title' => "Make Poll Only", +'poll_only_desc' => "Do you wish to disallow replies and only allow poll votes?", + +'domain_not_allowed' => "You have entered a link to a website that the administrator does not allow links to", +'too_many_quotes' => "You have posted more than the allowed number of quoted blocks of text", + +// 2.2 +'quote_mismatch' => "The number of opening and closing quote tags does not match. Please fix this to submit your post.", +'merge_too_many_img' => "Sorry, but when your post merges with your previous post, you will have used too many images in your combined posts", +'merge_too_many_emoticons' => "You have posted a message with more emoticons that this board allows. Please reduce the number of emoticons you've added to the message", +'guest_captcha' => "Confirm Code", +'alt_codebit' => "Code Bit", +'alt_loadingimg' => "Loading Image", +'err_reg_code' => "The generated code did not match the one displayed, a new code has been generated, please try again", +'reg_code_enter' => "The administrator requires all guests to confirm their post before it will be accepted. Please enter the code displayed below and press 'Add Reply' to submit your reply.", + + +'ignore_first_line' => "You have chosen to ignore all posts from:", + +//v2.1 NEW + +'qe_complete_edit' => "Complete Edit", +'qe_cancel_edit' => "Cancel Edit", + +'attach_button' => 'Add into Post', +'attach_button_title' => 'Adds a placeholder tag for the attachment in the post', +'picons_none' => '[ Use None ]', +'calendar_delete_t' => 'Check this box and submit the form to delete this event.', +'calendar_group_filter_t' => '
Click on which groups can see this event (Admin group always selected), or leave alone so all groups can see this event.
Multiple group selection allowed', +'mod_open_time' => 'Specify Topic Open Time', +'mod_close_time' => 'Specify Topic Close Time', +'mod_date_format' => 'MM/DD/YYYY', +'mod_time_format' => 'HH:MM', +'post_optional' => '(Optional)', +'poll_tt_add_question' => 'Add Poll Question', +'poll_tt_add_choice' => 'Add Poll Choice', +'poll_tt_remove_question' => "Remove Question", +'poll_tt_remove_choice' => "Remove Choice", +'poll_tt_confirm' => "Please confirm this action", +'poll_tt_stat_lang' => "You are allowed <%1> more question(s) with <%2> choices per question.", + +'poll_manage_link' => "Click here to manage this topic's poll", +'poll_fs_title' => 'Poll Title', +'poll_fs_content' => 'Poll Content', +'poll_fs_close' => 'Close Poll Form', +'poll_fs_options' => 'Poll Options', + +//v2.1 CHANGED +//v2.0 + +'upload_text' => "File Attachments
Global Space Left:", +'upload_unlimited' => "unlimited space", +'invalid_mime_type' => "Upload failed. You are not permitted to upload a file with that file extension.", +'upload_to_big' => "The total filespace required to upload all the attached files is greater than your per post or global limit. Please reduce the number of attachments or the size of the attachments.", + +'pp_nohtml' => 'HTML Off', +'pp_html1' => 'HTML On - Raw Linebreak Mode', +'pp_html2' => 'HTML On - Auto Linebreak Mode', + +'button_add_attachment' => "Add This Attachment", +'attach_remove' => 'Remove', +'attach_space_left' => "You have used %s of attachment space for this post.
You have %s left for this post.", +'custom_tags_incorrect' => "There is an error with your BBCode, the number of opening tags do not meet the number of closing tags.", +'custom_tags_incorrect2' => "There is an error with your BBCode. It is possible that you have incorrectly used a tag such as [TAG] when it is meant to be used as [TAG=] or vice-versa.", + + +// v1.2 +'enable_track' => "Enable email notification of replies?", +'already_sub' => "You are currently receiving email notification of replies", +'mod_pinclose' => "Pin & Close this topic", +'posting_poll' => "Posting a Poll", + +'po_options' => "Post Options", + +'poll_tag_allowed' => "[URL] and [IMG] tags allowed", + +'eu_keep' => "Keep current attachment", +'eu_delete' => "Remove attachment", +'eu_new' => "Replace with a new attachment", + +'append_edit' => "Add the 'Edit by' line in this post?", +'edit_ops' => "Edit Options", + + +'unreg_namestuff' => "Unregistered User Info", + +'mod_options' => "After Posting", + +'mod_close' => "Close this topic", +'mod_move' => "Move this topic", +'mod_pin' => "Pin this topic", +'mod_nowt' => "( Do Nothing )", + +'msg_no_title' => "You must enter a message title", + +'tt_topic_settings' => "Topic Settings", +'tt_options' => "Options", +'tt_poll_settings' => "Poll Settings", + +'tt_subject' => "Topic Subscription Reply Notification", +'ft_subject' => "Forum Subscription New Topic Notification", + +'upload_failed' => "The requested file upload failed because suitable permissions have not been enabled on the 'uploads' directory. Please contact the board administrator and inform them of this error.", + + + +'post_to_quote_txt' => "You may edit the post you are quoting here", +'submit_poll' => "Add my Poll", + + +'submit_new' => "Post New Topic", + + + +'enabled' => "Enabled", + +'errors_found' => "THE FOLLOWING ERROR(S) WERE FOUND", +'post_edited' => "The post has been edited", + +'replying_in' => "Replying in", + +'email_address' => "Your registered email address", + +'no_post' => "You must enter a post", + +'submit_reply' => "Add Reply", +'stat_allow_img' => "[IMG] tag: ", +'original_post' => "Original Post", +'html_on' => "Posting HTML is allowed", +'please_log_in' => "You are not authorized to view this forum", +'reply_added' => "Your reply has been added", +'no_topic_title' => "You must enter a topic title longer than 2 characters", +'too_many_emoticons' => "You have posted a message with more emoticons that this board allows. Please reduce the number of emoticons you've added to the message", +'no_poll_data' => "There is are no poll questions, that makes for a rubbish poll!", +'top_txt_new' => "Post a new topic in", +'posting_cond' => "Posting Abilities", + +'moderate_topic' => "Your new topic will be previewed by a moderator before it is added into this forum", + +'invalid_ext' => "You are not allowed to use that image extension on this board. A valid format is: http://www.domain.com/picture.gif, an invalid format is: http://www.domain.com/picture.one.gif", +'reg_username' => "Your Registered Username", +'upload_title' => "File Attachments", + +'post_icon' => "Post Icons", + +'moderate_post' => "Your post will be previewed by a moderator before it is added to this topic", +'flash_too_big' => "Please reduce the size of the flash movie you are posting", +'guest_name' => "Enter your Name", + +'topic_title' => "Topic Title", +'flash_url' => "The URL you posted for the flash movie is not valid", +'post_preview' => "Post Preview", +'non_quotes' => "The number of opening quote tags does not match the number of closing quote tags", +'max_length' => "Maximum message length in characters:", +'options' => "Options", +'disabled' => "Disabled", + +'no_file_ext' => "Please ensure that the file you are attempting to upload has a file extension", +'help_cards' => "Help Cards:", +'review_topic' => "Review the complete topic (launches new window)", + +'editing_post' => "Editing Post ", +'posting_new_topic' => "Posting New Topic", + +'flash_number' => "The width and height attributes of the flash movie must be numeric in value", +'enable_sig' => "Enable signature?", +'top_txt_edit' => "Editing a post in", + +'poll_to_many' => "You have more poll choices than the administrator allows for this forum, please reduce them", + +'last_posts' => "Last 10 Posts [ In reverse order ]", +'top_txt_poll' => "Creating a Poll", +'too_many_img' => "Sorry, but you have posted more images than you are allowed to", +'topic_desc' => "Topic Description", + +'no_dynamic' => "Sorry, dynamic pages in the [IMG] tags are not allowed", + +'post_options' => "Post Options", + +'click_smilie' => "Clickable Smilies", +'button_spell' => "Spell Check", + +'topic_title_long' => "Topic titles cannot be longer than 50 characters", + +'new_post_added' => "Your new post has been added", +'top_txt_reply' => "Replying to", +'posted_on' => "Posted", +'post' => "Enter your Post", +'poll_not_enough' => "A Poll is a choice, 1 entry is not a choice", +'post_rules' => "Posting Rules", + +'post_icon_txt' => "You may choose a post icon", +'submit_edit' => "Submit Modified Post", + +'enable_emo' => "Enable emoticons?", +'quoting_post' => "Quoting a Post in ", + +'email_title' => "Reply to Topic Notification", +'button_preview' => "Preview Post", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_printpage.php b/upload/cache/lang_cache/en/lang_printpage.php new file mode 100644 index 00000000..b6cd0ecb --- /dev/null +++ b/upload/cache/lang_cache/en/lang_printpage.php @@ -0,0 +1,27 @@ + "Please choose an option below", +'powered_by' => "Powered by ", +'click_toview' => "Click to view Topic", + +'end' => "end", +'forum' => "Forum", +'on ' => "on", +'title' => "Printable Version of Topic", +'by' => "Posted by", +'start' => "started by", +'topic' => "Topic", +'tvo_title' => "Topic View Options for:", +'o_print_title' => "Printer Friendly Version", +'o_print_desc' => "This will display the topic in a simple, printer friendly format on this page, no download is required.", +'o_html_title' => "Download HTML Version", +'o_html_desc' => "This will enable you to download a HTML version of this topic to your hard drive. This will open your browser's download dialogue box", +'o_word_title' => "Download Microsoft Word Version", +'o_word_desc' => "This will enable you to download a version of this topic in an editable Word format. This will open your browser's download dialogue box", +'back_topic' => "Back to the topic", +'topic_here' => "Click here to view this topic in its original format", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_profile.php b/upload/cache/lang_cache/en/lang_profile.php new file mode 100644 index 00000000..3ac39751 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_profile.php @@ -0,0 +1,253 @@ + "Posts", +'pp_tab_topics' => "Topics", +'pp_tab_gallery' => "Gallery", +'pp_tab_blog' => "Blog", + +'op_change_refresh' => "These changes will take effect next time your profile is viewed", +'op_dd_none' => "No Notification", +'op_dd_email' => 'Notify Via Email', +'op_dd_pm' => 'Notify Via Personal Message (PM)', +'op_dd_disabled' => 'Disabled - Allow addition without approving', +'op_dd_enabled' => 'Enabled - Only add when I approve them', + +'profile_read_topic' => 'Read Topic', +'profile_in_topic' => 'In Topic: ', +'header_personal_info' => "Personal Info", +'born_key' => "Born", +'fl_show_who_added_me' => "Show who has added me", +'fl_show_mutual' => "Show mutual friends", +'op_add_pm_to_block' => "Add to PM Block List", + +'err_no_posts_to_show' => "There are no posts to display.", +'js_img_alt_rate' => 'Rate this member, click on desired star to send rating', +'js_gender_male' => 'Male', +'js_gender_female' => 'Female', +'js_gender_mystery' => 'Gender Not Set', +'js_saving_comment' => 'Saving Comment...', +'js_loading_tab' => 'Loading Content...', +'js_deleting_comment' => 'Deleting Comment...', + +'m_personal_statement' => 'Personal Statement', +'m_visit_website' => "Visit My Website", +'m_go' => "Go", +'m_dd_with_selected' => "With checked", +'m_dd_approve_add' => "Approve & Add To My List", +'m_dd_approve' => "Approve Only", +'m_dd_refuse' => "Refuse & Remove", +'m_profile_views' => 'Profile Views:', +'m_profile_views_desc' => "* Profile views updated each hour", +'m_statement_bbcode' => "BBCode Allowed: [b] [i] [u]", +'m_show_x_friends' => "Show x Sidebar Friends", +'m_show_x_comments' => "Show x Sidebar Comments", +'m_show_x_visitors' => "Show x Sidebar Last Visitors", +'m_settings_header' => "Settings", +'m_new_comments' => "New Comments", +'m_new_friends' => "New Friends", +'m_member_since' => "Joined:", +'m_website_title' => 'Your Website', +'m_website_explain' => 'Your website must be a valid link beginning with http://', +'m_rate_me' => "Rate me", +'m_friend_remove' => "Remove Friend", +'m_friend_add' => "Add as Friend", +'m_no_friends' => 'There are no friends to display', +'m_view_friends' => "View All Friends", +'m_bit_active' => 'Active:', +'m_bit_posts' => 'posts', +'m_title_friends' => "Friends", +'m_max_chars' => "(Max 400 chars)", +'m_enter_comment' => "Enter your Comment", +'m_add_comment' => "Add Comment", +'m_title_comments' => "Comments", +'m_visitors_none' => "has no visitors to display", +'m_title_visitors' => "Last Visitors", +'m_title_content' => 'My Content', +'m_tab_settings' => "Settings", +'m_tab_friends' => "Friends", +'m_tab_comments' => 'Comments', +'m_personal_info' => "Personal Info", +'m_enter_aim' => "Enter your AIM Identity", +'m_enter_msn' => "Enter your MSN Identity", +'m_enter_icq' => "Enter your ICQ Identity", +'m_enter_yahoo' => "Enter your Yahoo! Identity", +'m_contact_info' => "Contact Information", +'m_local_time_is' => "Local Time:", +'m_last_seen' => "Last Seen:", +'m_stats_title' => "Statistics", +'m_other_info' => "Other Information", +'m_enter_bdate' => "Enter your birthdate", +'m_bday_unknown' => 'Birthday Unknown', +'m_enter_location' => "Enter your location", +'m_location_unknown' => "Location Unknown", +'m_gender_as_none' => "Set as 'Not Set'", +'m_gender_as_female' => "Set as Female", +'m_gender_as_male' => "Set as Male", +'m_no_gender' => "Gender Not Set", +'m_age_unknown' => 'Age Unknown', +'m_years_old' => "years old", +'m_save_button' => "Save", +'m_friends_list' => "Friends List", +'m_friends_pending' => "Friends Pending Approval", +'m_friends_mutual' => "Mutual Friends", +'m_showall_friends' => "Show All", +'m_showonline_friends' => "Show Online", +'m_showoffline_friends' => "Show Offline", +'m_remove_friend' => "Remove this friend", +'m_sendpm_friend' => "Send this friend a PM", +'m_approve' => "Approve", +'m_requested' => "Request Added", +'m_lastactive' => "Last Active", +'m_pending' => "Pending", +'m_nofriends' => "There are no friends to display", +'m_active' => "Active", +'m_manage_friends' => "Manage Friends", +'m_manage_friends_list' => "Manage your friends list", + +'m_friend_str_1' => "You have", +'m_friend_str_2' => "friends pending approval.", + +'m_comment_app' => "Approve Selected Comments", +'m_comment_unapp' => "Un-approve Selected Comments", +'m_comment_delete' => "Delete Selected Comments", +'m_go_button' => " Go ", +'m_no_comments' => "Other users have left no comments for", +'m_confirm' => "Please confirm that you wish to proceed", + +'pp_photo_desc' => "Maximum size %sx%s and %sk (%s).
Larger images resized when possible.", +'pp_no_photo_upload_permission' => "You do not have permission to upload a personal photo", +'pp_upload_failed' => "The upload failed. Please contact a board administrator.", +'pp_invalid_file_extension' => "You used an invalid file extension", +'pp_upload_to_big' => "The uploaded file you used is too big", + +'m_your_pic' => "Your Picture", +'m_delete_pic' => "Delete Image", + +'rating' => "Rating", +'options' => "Options", + +'m_personal_statement' => "Personal Statement", +'m_char_limit' => "(300 Chars Max.)", +'m_notifications' => "Notification Options", +'m_new_comments' => "New Comments", +'m_choose_comm_type' => "Choose the type of notification for when comments are added", +'m_new_friends' => "New Friends", +'m_choose_friend_type' => "Choose the type of notification for when new friends are added", +'m_mod_type' => "Moderation Options", +'m_choose_cmod_type' => "Choose the type of moderation for when comments are added", +'m_choose_fmod_type' => "Choose the type of moderation for when new friends are added", +'m_save_settings' => " Save Settings ", +'m_delete_comment' => "Delete Comment", + +'m_no_statement' => "doesn't have a personal statement currently", + +'m_profile_title' => "Profile", + +//2.1.x +'tt_warn_add' => "Increase warn level", +'tt_warn_minus' => "Decrease warn level", + +'mygallery' => 'View My Gallery', +'no_photo_avail' => "No Photo Available", + +//2.1.2 +'open_menu' => "Open Menu", +'get_photo' => "Personal Photo", + +// 2.1 + +'dname_title' => "Member's Display Name History", +'dname_window_title' => "Display Name History For:", +'dname_name_from' => "From", +'dname_name_to' => "To", +'dname_date' => "Change Date", +'warn_title' => "Warn:", + +// 2.0 +'profile_options' => "Profile Options", +'find_member_topics' => "Find member's topics", +'website_addr' => 'Website', +'supmod_edit_member' => 'Edit Member', +'ignore_user' => 'Ignore User', +'last_active' => 'Last Active', +'last_click' => 'Status', +'online_offline' => "Offline", + +'wol_index' => 'Reading Board Index', +'wol_topic' => 'Active in topic', +'wol_forum' => 'Active in forum', +'wol_ucp' => 'Active in User Control Panel / PM Center', +'wol_profile' => 'Reading a profile', +'wol_search' => "Searching", + +// 1.2 + +'rating_level' => "Rating", +'warn_level' => "Warn", +'photo_title' => "Photo", +'ac_close' => "Close card", +'ac_download' => "Download this card", + + +'user_local_time' => "User's local time", +'head_addit' => "Additional Information", +'head_title' => "Viewing Profile", + +'head_contact' => "Contact Details", + +'head_posts' => "Posting Information", + +'head_info' => "Member Information", + +'no_info' => "No Information", + +'click_here' => "Click Here", +'private' => "Private", + +'active_stats' => "Active Stats", + +'total_posts' => "Total Cumulative Posts", +'joined' => "Joined", +'posts_per_day' => "per day", +'total_percent' => "of total forum posts", +'fav_forum' => "Most active in", +'fav_posts' => "posts", +'fav_percent' => "of this member's active posts", + +'communicate' => "Communicate", +"info" => "Information", +'post_detail' => "Posting Details", + +'email' => "Send an Email", +'aim' => "AIM Name", +'icq' => "ICQ Number", +'yahoo' => "Yahoo Identity", +'msn' => "MSN Identity", +'pm' => "Send Message", + +'page_title' => "Viewing Profile", + +'find_posts' => "Find member's posts", +'add_to_contact' => "Add to contact list", + +'edit_my_sig' => "Edit my Signature", +'edit_profile' => "Edit my Profile", +'edit_avatar' => "Avatar Options", + + +'mgroup' => "Member Group", +'mtitle' => "Member Title", +'homepage' => "Home Page", +'birthday' => "Birthday", +'location' => "Location", +'interests' => "Interests", +'avatar' => "Avatar", +'siggie' => "Signature", + + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_register.php b/upload/cache/lang_cache/en/lang_register.php new file mode 100644 index 00000000..34be23e7 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_register.php @@ -0,0 +1,230 @@ + "This is the name shown with all your topics and posts. Between 3 and %s chars. Illegal chars: [ ] | ; , $", +'reg_error_dname_len' => "The display name must be between 3 and %s characters", +'reg_error_username_none' => "The username must be between 3 and %s characters", +'reg_error_no_name' => "You must enter a name longer than 3 characters and shorter than %s", +'user_name_text' => "This is the name you'll use to log in. [3 and %s characters long]", + +'lp_text' => "Enter your account username in the field below. The username is case insensitive.
Once you have submitted the form, you will receive an email asking for validation of this request to ensure that no malicious use has occured. This email will also contain a link that you must click for futher instruction.", +'lp_text_email' => "Enter your account email address in the field below. The email address is case insensitive.
Once you have submitted the form, you will receive an email asking for validation of this request to ensure that no malicious use has occured. This email will also contain a link that you must click for futher instruction.", +'las_input_text' => "Please enter the 6 character code shown in the image. If you cannot read the code, click the image to generate a new one.", + +// 2.2: NEW +'form_title_attention' => "Attention!", +'reg_error_email_invalid' => "The email address you entered is invalid (ex: name@domain.com)
or contains illegal characters: [ ] ; # & ! * ' " < > % ( ) { } ? \", +'reg_error_dname_only' => "The display name can only contain these characters: ", +'reg_error_uname_only' => "The username can only contain these characters: ", +'lp_random_pass_subject' => "Your new password", +'lp_random_pass' => "Click the proceed button below to have a new password emailed to the email address registered to your account.", +'lpass_text_random' => "An email has been sent to your registered email address containing your new password.", + + +//2.1.3 +'reg_error_email_ban' => "The email address you used is not accepted by this board. Please select a different email address.", +'new_registration_email' => "Registration at ", +'new_registration_email1' => "New Registration at ", + +//2.1.2 +'alt_codebit' => "Code Bit", +'alt_loadingimg' => "Loading Image", + +# Added 2.1 +'coppa_bounce' => 'You must either cancel your registration or have your parent complete the COPPA registration form and send it to us', + +'clogin_submit' => "Continue...", +'clogin_done' => "You are now logged in", +'clogin_title' => "Welcome to our forum", +'clogin_text' => "As this is the first time you've logged in, we require just a few more details before we can proceed", +'dname_name' => "Enter your desired display name", + +'reg_error_no_pass' => "The password section is incomplete", +'reg_error_pass_nm' => "The passwords do not match", +'reg_error_chars' => "The display name contains one or more of these illegal characters: [ ] | ; , $", +'reg_error_taken' => "The display name is already in use by another member", +'reg_error_username_taken' => "The username is already taken by another member", + +'reg_error_email_missing' => "The email address section is not complete", +'reg_error_email_nm' => "The email addresses do not match", +'reg_error_email_taken' => "The email address is already in use by another member", + +'user_admin_validation' => "After successful validation your account will then be entered into the administration queue for review and approval.", + +# Changed 2.1 + +'user_name' => "Enter your desired log in username", + + +# Already in 2.0 +'subsm_title' => 'Subscription Packages', +'subsm_none' => '--NONE--', +'subsm_na' => 'N/A', +'subsm_more' => 'More Info...', +'subsm_no_desc' => "No package selected to purchase", +'subsm_close' => "Close", +'tc_title' => "Registration Terms & Rules", +'tc_text' => 'In order to proceed, you must agree to the following:', +'tc_regbut' => "Register", +'op_email_title' => "Receiving Email", +'op_email_text' => "Now and again, the administrators and other members might wish to contact you via email through this board.", +'op_email_ad' => "Receive email from administrators", +'op_email_mem' => "Receive email from other members", +'op_tz_title' => "Time Zone Settings", +'op_tz_text' => "You can adjust the default time zone setting below", +'op_tz_dst' => 'Observing Daylight Saving Time?', +'submit_text' => "I agree to the terms of this registration and wish to proceed.", + +'cf_optional' => "Optional Information", + +'las_title' => "Security Code Confirmation", +'las_img' => 'Your unique security code', +'las_img_text' => 'If you do not see any numbers, or see broken images, please contact a board administrator to rectify the problem.', +'las_input' => 'Confirm security code', + +'las_numbers' => "Your unique security code
If you do not see any numbers, or see broken images, please contact a board administrator to rectify the problem.", +'las_text' => "Confirm security code
Please enter the 6 digit code shown above in image format.
Note: Only numbers are allowed, a '0' is a numerical zero, not the alphabetical 'O'.", + +'user_name_title' => "Username:", + +'password_title' => "Password:", +'password' => "Enter your password", +'password_text' => "Passwords must be between 3 and 32 characters long", +'password_confirm' => "Confirm Password", +'password_confirm_text' => "Please re-enter your password: It must match exactly", + +'email_address_title' => "Email Address:", +'email_address_text' => "Enter a valid email address. Illegal characters: [ ] ; # & ! * ' " < > % ( ) { } ? \", +'email_address_confirm' => "Confirm Email Address", +'email_address_confirm_text' => "Please re-enter your email address: It must match exactly", + +'email_address' => "Enter your Email Address", + +// added RC2 + +'incorrect_thing_name' => "Incorrect name for the %s. This may be because it contains illegal characters", +'thing_name_taken' => "Unfortunately, the %s name you entered has already been taken. Please choose another", + +'rv_title' => "Resend validation email", +'rv_process' => "Revalidation Process", +'rv_done' => "Your revalidation request was successful
A revalidation email has been sent to the registered address for that member. Please check your email within the next few minutes - including any 'junk mail' or 'spam' folders you may have.", +'rv_ins' => "Please enter your registered member name below to search for any pending validation requests. If any are found, the email will be resent to the email address you registered with.", +'rv_name' => "Registered Member Name", +'rv_email' => "Registered Member Email", +'rv_go' => "Search and Send", + +'lpass_text' => "An email containing further activation instructions has been sent. This email should be received within the next 10 minutes (usually instantly).", +'lpf_title' => "Lost Password Recovery", +'lpf_pass1' => "Enter a new password", +'lpf_pass11' => "It must be no more than 32 characters and no less than 3 characters", +'lpf_pass2' => "Re-enter your new password", +'lpf_pass22' => "It must match exactly", + +'err_complete_form' => "This field is required and must be completed", +'err_cf_to_long' => "You have entered more data than allowed in this field", +'err_invalid' => "The data you entered in this field is in an invalid format", +'err_user_start_zero' => "Your chosen username must not begin with a zero (0)", +'errors_found' => "The Following Errors Were Found", +'err_email_address_match' => "The email addresses entered did not match", +'err_no_username' => "You must enter a valid username between 3 and 32 characters", +'err_no_password' => "You must enter a valid password between 3 and 32 characters", +'err_pass_match' => "The entered passwords did not match each other, please check the entered values", +'err_invalid_email' => "The email address entered was not a valid email address", +'err_user_exists' => "An account is already registered with that username, please choose another", +'err_email_exists' => "An account is already registered with that email address, please choose another", +'err_reg_code' => "The registration code did not match the one displayed, a new code has been generated, please try again", +'err_no_validations' => "There are no pending validation requests for that member. Please check the name and try again", +'email_reg_subj' => "Registration at", +'ne_subject' => "Email change request at", + +'ras_title' => "Registration Anti SPAM Confirmation", +'ras_numbers' => "Your unique registration code
If you do not see any numbers, or see broken images, please contact a board administrator to rectify the problem.", +'ras_text' => "Confirm registration code
To prevent mass registration programs from registering accounts, please enter the 6 digit code shown above in image format.
Note: Only numbers are allowed, a '0' is a numerical zero, not the alphabetical 'O'.", + +'coppa_title' => "COPPA Registration", +'coppa_info' => "COPPA Information", +'coppa_form' => "COPPA Form", + +'coppa_link' => "Please click the link that corresponds with your birth date", +'coppa_date_before' => "On or before", +'coppa_date_after' => "After", +'coppa_form_text' => "A parent or guardian must complete and mail or fax a signed <#FORM_LINK#> to the administrator of the board before a child under the age of 13 can complete the registration process.

For further information, please contact:", +'coppa_link_form' => "permission form", + +'cp2_text' => " All users under the age of 13 must seek permission from a parent or guardian before you may participate on these forums.

If you would like to start the registration process prior to us receiving a permission form, please click the continue link below. However, please note that you will not be able to complete your registration until we have the signed form.", +'cp2_continue' => "Continue", +'cp2_title' => "Our COPPA registration policy", +'cp2_cancel' => "Cancel", + +'cp_success' => "your registration was successful! Redirecting you to the consent form", + +'cpf_title' => "COPPA Permission Form", +'cpf_perm_parent' => "Instructions for a parent or guardian

Please print this form out, complete it and fax it to the number specified (if present) or mail to the mailing address below.", +'cpf_fax' => "Fax Number:", +'cpf_address' => "Mailing Address:", + +'cpf_sign' => "Please sign the form below and send to us.

I understand that the information that the child has supplied is correct. I understand that the profile information may be changed by entering a password and I understand that I may ask for this registration profile to be removed.", + +'cpf_name' => "Parent / Legal Guardian FULL name", +'cpf_relation' => "Relation to child", +'cpf_signature' => "Signature", +'cpf_email' => "Email Address", +'cpf_phone' => "Phone Number", +'cpf_date' => "Date", + +'lost_pass_form' => "Lost Password Form", +'lp_header' => "How to reset your password", + + +'lp_send' => "Proceed", + +'lp_user_name' => "Enter your account username", +'lp_email_address' => "Enter your email address", +'lp_email_or' => "OR Enter your email address", + +'lp_subject' => "Password recovery information from", + +'lp_redirect' => "The password has been sent, taking you to the activate page...", + +'activation_form' => "Activation Form", + +'registration_form' => "Registration Form", +'user_validate_text' => "The board administrator wishes to preview all accounts before allowing you to register fully. Register now then please wait until you receive an email from the board administrator before attempting to log in.", +'js_blanks' => "You must complete all of the form", +'reg_header' => "Registration Instructions", +'intro_proceed' => "Proceed to log in", +'js_no_check' => "You cannot register unless you agree to the terms and check the 'I agree' checkbox", +'title_reg' => "Registration", +'email_validate_text' => "You will be sent an email to the email address you give after registering. Please read the email carefully, you will need to validate your account by clicking on a link in the email.", +'done_reg_1' => "Your account has been activated! Proceeding to the board rules", +'done_reg_2' => "Your account has been activated! Proceeding to log in", +'board_rules' => "Board Rules", +'dumb_text' => "Please ensure that you complete the form fully. The information you need will be in the email that was sent to you.", +'registration_agree' => "Registration Agreement", +'agree_submit' => "I have read, understood and agree to these rules and conditions", +'std_text' => "Please ensure that you complete all the fields fully, taking particular care over the password fields.", + +'reg_success' => "Registration Successful", +'thank_you' => "Thank you", +'registration_process' => "Registration Process", +'preview_reg_text' => "Your registration has been successful. The administrator wishes to preview all new registered accounts before posting permissions are granted. The administrator has been notified of your registration.", +'dumb_email' => "Please enter the Email Address you registered with", +'complete_form' => "Please complete the form fully", +'auth_text' => "Your registration has been submitted.

The board administrator has chosen to require validation for all email addresses. Within the next 10 minutes (usually instantly) you'll receive an email with instructions on the next step. Don't worry, it won't take long before you can post!

The email has been sent to", +'submit_form' => "Submit my registration", +'nav_reg' => "Registration", +'dumb_submit' => "Proceed", +'dumb_header' => "Account Activation", + +'val_key' => "Validation Key:", +'user_id' => "User ID:", + +'email_address_two' => "Please re-enter your email address", + +'click_wrap' => "Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. The messages express the views of the author of the message, not necessarily the views of this BB. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. You agree, through your use of this service, that you will not use this BB to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. You agree not to post any copyrighted material unless the copyright is owned by you or by this BB.", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_search.php b/upload/cache/lang_cache/en/lang_search.php new file mode 100644 index 00000000..9f88a676 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_search.php @@ -0,0 +1,161 @@ + "Sorry, the administrator has taken the search engine offline for the moment. Please try again later", +'no_xml_permission' => "Sorry, but you do not have permission to use the search feature.", + + +'nav_at' => "Today's Active Topics", +'nav_aut' => "All topics by a member", + +// 2.1 (NEW) + +'xml_nopost' => 'No new posts found', +'xml_char' => 'Some or all of your search words contain less than %s characters or contained unsearchable words', +'xml_flood' => 'Flood control is enabled. Please wait at least %s seconds before attempting to search again', +'xml_nomatches' => 'Your search for %s returned no results', +'xml_matches' => 'Your search for %s matched at least %s posts.
View Results »', + +//2.0.2 + +'too_many_children_for_santa' => '(Search results limited to first %num)', + +'active_start' => 'Get active topics for:', +'active_today' => 'today', +'active_week' => 'this week', +'active_week2' => 'past 2 weeks', +'active_month' => 'this month', +'active_month3' => 'past 3 months', +'active_year' => 'this year', +'active_go' => 'Go', +'no_search_topics' => "There are no topics to show for those search parameters", + +'you_search_for' => "You searched for:", +'no_results_so_there_ha_ha' => "Unfortunately your search didn't return any results.
Try broadening the search parameters by searching by different keywords or altering the format of your search.
Remember to use the wildcard '*' to increase the number of matches. Apple* will match 'apple' and 'apples'.", +'search_again' => "Search Again?", + +'mark_search_as_read' => "Mark all forums as read and return to index", +'your_results' => "Your topics", + +//added in 1.2 +'be_use' => "Use", +'be_means' => "Means", + +'be_u1' => "apple banana", +'be_m1' => "Find posts that contain at least one of these words", +'be_u2' => '+apple +juice', +'be_m2' => 'Find posts with both words', +'be_u3' => '+apple -juice', +'be_m3' => "Find posts with 'apple' but not 'juice'", +'be_u4' => "apple*", +'be_m4' => "Find posts with 'apple' and/or 'applesauce'", +'be_u5' => '"Some Words"', +'be_m5' => "Find posts with the phrase 'some words of wisdom', 'some words' but not 'some noise words'", + +'be_link' => "Advanced Usage Help", +'be_ttip' => "Find out how to improve your search with boolean operators", +'nav_au' => "All posts by a member", +'sp_single' => "Single Page", +'so_more_opts' => "More Options", +'so_less_opts' => "Simple Mode", +'search_where' => "Search Where", +'result_type' => "Result Type", +'all_forums' => "» All Forums", +'location_g' => "Location", +'g_b_home' => "Board Home", +'g_relevance' => "Relevance", +'g_simple_title' => "Forum Search Engine", +'g_new_window' => "New Window", +'g_searched_for' => "Searched the forum for", +'g_results' => "Results", +'g_of_about' => "of about", +'g_search_took' => "Search took", +'g_seconds' => "seconds", +'sf_show_me' => "Show me", +'sf_most_r_f' => "most relevant", +'sf_most_date' => "most recent first", +//--- ADDED IN B3 ----- + +'is_sub' => " (Sub Category)", +'search_in_subs' => "Search in child forums if sub category is chosen?", + +///--- END B3 --------- + +'rp_topic' => "Topic:", +'rp_post' => "Post Preview:", +'rp_forum' => "Forum:", +'rp_author' => "Author", +'rp_replies' => "Replies:", +'rp_hits' => "Views:", +'rp_message' => "Message", +'rp_postedon' => "Posted on:", + +'joinname_true' => "Search With Keywords and Username", +'joinname_false' => "Search With Username alone", + +'nav_since_lv' => "Posts since your last visit", +'nav_lt' => "Your last ten posts", + +'results_post' => "Show results as posts", +'results_topics' => "Show results as topics", + +'search_redirect' => "your search has been completed, please stand by as we take you to the search results.", + +'search_pages' => "Result Pages:", +'search_title' => "Search Engine", +'key_search' => "Search by Keywords", +'mem_search' => "Filter by Member Name (optional)", +'keysearch_text' => "Enter a keyword or phrase to search by.", +'match_name_ex' => "Match Exact Name", +'match_name_pa' => "Match Partial Name", +'keywords_title' => "Search Keywords", + +'search_options' => "Search Options", +'search_forums' => "Search in forum", +'search_cats' => "Search in category", +'search_refine' => "Refine Search", + +'search_results' => "Search Results", +'search_form' => "Search Form", + +'h_forum_name' => "Forum", + +'se_simple' => "Simple Search", +'se_advanced' => "Advanced", + +'in_posts' => "Search entire post", +'in_topics' => "Search titles only", + +'search_from' => "Search posts from...", + +'do_search' => "Perform the search", + +'today' => "Today", +'this_week' => "7 days ago and...", +'this_month' => "30 days ago and...", +'this_60' => "60 days ago and...", +'this_90' => "90 days ago and...", +'this_180' => "180 days ago and...", +'this_year' => "365 days ago and...", +'ever' => "Any date", +'older' => "Older", +'newer' => "Newer", +'and' => "and", + +'sort_results' => "Sort results by...", + +'last_date' => "Last Posting Date", +'number_topics' => "Number of Replies", +'poster_name' => "Poster Name", +'forum_name' => "Forum Name", + +'in' => "in", + +'ascending' => 'ascending order', +'descending' => 'descending order', + +'order' => 'order', + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_stats.php b/upload/cache/lang_cache/en/lang_stats.php new file mode 100644 index 00000000..050bf593 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_stats.php @@ -0,0 +1,40 @@ + "Who posted in:", +'no_forums' => "View Forums (%s total...)", + +'who_poster' => "Poster", +'who_posts' => "Posts", +'who_go' => "Close window & open topic", + +'todays_posters' => "Today's Top 20 Posters", +'member' => "Member", +'member_posts' => "Total Member Posts", +'member_today' => "Posts Today", +'member_joined' => "Joined", +'member_percent' => "% of today's posts", +'total_today' => "Total posts today: ", +'no_info' => "No information is available at this time", + +'top_poster_title' => "Today's top 20 posters", + + +'forum_leaders' => "The moderating team", + +'leader_admins' => "Administrators", +'leader_global' => "Global Moderators", +'leader_mods' => "Forum Moderators", + + +'leader_name' => "Member Name", +'leader_email' => "Email", +'leader_aol' => "AOL", +'leader_icq' => "ICQ", +'leader_location' => "Location", +'leader_forums' => "Forums", +'leader_all_forums' => "All Forums", + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_subscriptions.php b/upload/cache/lang_cache/en/lang_subscriptions.php new file mode 100644 index 00000000..9b631ca1 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_subscriptions.php @@ -0,0 +1,83 @@ + "Pay with NOCHEX now", +'paywith_paypal' => "Make payments with PayPal - it\'s fast, free and secure!", +'paywith_protx' => "Pay Using Protx", +'paywith_gen' => "Purchase", +'choose_another_pkg' => "Choose Another Package", +'cancel_purchase' => "Cancel Purchase & View Forums", +'no_expire' => "Lifetime (Never Expires)", +'msg_reg_title' => "Thanks for registering!", +'msg_reg_text' => "During registration, you opted to purchase a subscription package.
Please review the details below and select from the payment methods below to confirm your choice.", +'msg_gen_title' => "Subscription Packages", +'msg_gen_text' => "Thanks for visiting our subscription packages screen.
Please select from a package below to proceed to choose from the available payment options.", +'msg_force_title' => "Please Purchase a Subscriptions Package", +'msg_force_text' => "We require that you purchase a subscriptions package before you are granted full access to this forum.", +'cc_currency_in' => "All prices in", +'cc_change' => "Change", +'man_tick_title' => "Please print this ticket off or copy the information and include it with your payment", +'man_mem' => "Member Name", +'man_mem_id' => "Member ID", +'man_email' => "Member Email", +'man_trans_id' => "Trans ID", +'man_sub' => "Sub Title", +'man_pay' => "Payment Enclosed", +'man_title' => "Remittance Ticket", +'gw_upgrade' => "Upgrade", +'gw_protx' => "Click the button below to complete this order via Protx\'s website", +'gw_paypal' => "Click the button below to complete this order via PayPal\'s website. All costs will be converted into USD for PayPal\'s website", +'gw_nochex' => "Click the button below to complete this order via NOCHEX\'s website. All costs will be converted into GBP for NOCHEX\'s website", +'gw_safshop' => "Click the button below to complete this order via Safshop\'s website. All costs will be converted into USD for Safshop\'s website", +'gw_authorize' => "Click the button below to complete this order via our secure online payment page.", +'post_manual' => "You have selected to pay by post. When you click the button below, your order will be marked as \'Pending\' and a new window will open containing a ticket you can print off and include with the payment. This means that you will not be able to use the subscription until your payment has been received and manually verified.", +'post_manual_more' => "Please send the above amount in the correct currency to:
%s
%s
%s
%s
%s


If you require currency conversion, please visit this website.", +'gw_manual' => "Click here to continue...", +'sc_complete' => "Completing the order...", +'sc_upgrade_title' => "Upgrade Confirmation", +'sc_normal_title' => "Purchase Confirmation", +'sc_upgrade_explain' => "Please review the order details below before continuing.", +'sc_upgrade_string' => "You have chosen to upgrade from %s to %s which is due to expire on %s.
The cost for this upgrade is %s and your package will then end on %s.

Please select a payment method below and continue to the next step.", +'sc_normal_string' => "You have chosen to purchase subscription %s.
The cost for this subscription is %s.", +'sc_available_methods' => "Available Payment Methods", +'sc_method' => "Payment Method", +'s_page_title' => "Subscriptions Control Panel", +'s_current_subs' => "Your Current Subscription", +'s_current_explain' => "Details of the package that you are currently subscribed to.", +'s_dead_subs' => "Your Expired Subscriptions", +'s_dead_explain' => "This is a reference of all past or cancelled subscriptions.", +'s_continue_button' => "Continue to select a payment method...", +'s_continue_button2' => "Continue...", +'s_upgrade_subs' => "Upgrade to a new subscription", +'s_upgrade_explain' => "You can upgrade to any of the following subscriptions below. You will only need to pay the balance and when payment has cleared your new subscription will replace the current until the original expiry date.", +'s_started' => "Start Date", +'s_end' => "End Date", +'s_paid' => "Paid", +'s_status' => "Status", +'s_transid' => "ID", +'s_balance_cost' => "Balance to pay", +'s_current_bottom' => "If you have any questions about your current or past subscriptions, you should contact a member of the administrative team who will be able to deal with any enquiries you might have.", +'s_available_subs' => "Your Available Subscriptions", +'s_detail' => "Details", +'s_duration' => "Duration", +'s_cost' => "Cost", +'s_explain' => "To subscribe, simply select the radio button next to your subscription choice and then choose which payment method you wish to use below. Clicking on the continue button will bring you to a confirmation screen and may ask for more details depending on which payment method you\'ve chosen.", +'pay_paid' => "Paid", +'pay_failed' => "Failed", +'pay_pending' => "Pending", +'pay_expired' => "Expired", +'pay_dead' => "Cancelled", +'time_y' => "Year", +'time_m' => "Month", +'time_d' => "Day", +'time_w' => "Week", +'timep_y' => "Years", +'timep_m' => "Months", +'timep_d' => "Days", +'timep_w' => "Weeks", +'gw_authorizenet' => "Click the button below to complete this order via our secure online payment page.", + +); + +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_tar.php b/upload/cache/lang_cache/en/lang_tar.php new file mode 100644 index 00000000..73f25b07 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_tar.php @@ -0,0 +1,31 @@ + "Extract files error: Destination directory (%s) does not exist", +'error_tar2' => "%s is not a directory", +'error_tar3' => "Could not locate %s", +'error_tar4' => "WARNING: %s exists, but is not a directory", +'error_tar5' => "ERROR: CHDIR to %s FAILED!", +'error_tar6' => "Could not write data to %s", +'error_tar7' => "%s exists, but is not a directory", +'error_tar8' => "Cannot handle named pipes", +'error_tar9' => "Cannot handle system links", +'error_tar11' => "Cannot handle device files", +'error_tar12' => "Unknown typeflag found", +'error_tar13' => "ERROR: CHMOD %s on %s FAILED!", +'error_tar14' => "Error: Stat failed on %s", +'error_tar15' => "ERROR: Failed to open %s", +'error_tar16' => 'No filename or path was specified to create a new tar file', +'error_tar17' => 'No data to write to the new tar file', +'error_tar18' => "Filename %s exceeds the length allowed by GNU Tape ARchives", +'error_tar19' => "File path exceeds the length allowed by GNU Tape ARchives", +'error_tar21' => 'No filename specified when attempting to read a tar file', +'error_tar22' => 'Cannot locate the file ', +'error_tar23' => "Cannot open %s for reading", +'error_tar24' => "Read error on tar file", + + +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_topic.php b/upload/cache/lang_cache/en/lang_topic.php new file mode 100644 index 00000000..a2f07975 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_topic.php @@ -0,0 +1,211 @@ + "Rating", +'group_icon' => "Group Icon", + +// 2.2 + +'reason_for_edit' => 'Reason for edit', +'js_rate_me' => "Rate Topic:", +'js_img_alt_rate' => 'Rate this topic, click on desired star to send rating', +'dd_view_profile' => 'View Public Profile', +'dd_remove_friend' => 'Remove Friend', +'dd_add_friend' => 'Add Friend', +'dd_send_pm' => 'Send Message', +'dd_find_posts' => "Find Member's Posts", + +'you_have_not_rated' => 'N/A', +'you_have_rated_x' => 'Your rating:', +'total_ratings' => 'Total rates:', +'poll_noview_guest' => "You cannot see the results of the poll until you have voted. Please login and cast your vote to see the results of this poll.", +'js_no_empty_post' => "You cannot submit an empty post", +'to_post_alt' => "post", + +//2.1.2 +'add_selected_text' => "Add Selected Text As Quote", + +// 2.1.1 + +'js_error_no_permission' => "Sorry, you do not have permission to edit that post", + +// 2.1 + +'dd_display_modes' => "Display Modes", +'dd_rate_button' => "Rate", + +'announce_title' => "Announcement", +'click_for_mod' => "Click to select this topic for bulk moderation", + +'outline_posts_topic' => "Posts in this topic", +'ignore_first_line' => "You have chosen to ignore all posts from:", +'ignore_view_post' => "View this post", +'ignore_unignore' => "Un-ignore", + +'edit_full_title' => 'Full Edit', +'edit_full_desc' => 'Full edit screen with all options', +'edit_quick_title' => 'Quick Edit', +'edit_quick_desc' => 'Edit this post in place with basic options', +'topic_rating_done' => 'Your rating has been added!', +'topic_rating_changed' => 'Your rating has been changed!', +'topic_rated_already' => 'You have already rated this topic and you are not allowed to change your rating.', +'topic_rating' => 'Rating', +'topic_options' => 'Options', +'topic_display' => 'Display Mode', +'topic_display_switch' => 'Switch to:', +'poll_vote_added' => "Your vote has been added", +'poll_viewing_results' => "Viewing poll results", +'poll_add_vote' => "Vote!", +'poll_s_stats' => "Statistics", +'poll_you_voted' => "You have already voted in this poll", +'poll_no_guests' => "Guests cannot vote", +'poll_vote_created' => "Your poll has been created", +'poll_s_total' => "Total Votes", +'poll_null_vote' => "View Results (Null Vote)", +'poll_s_votes' => "Votes", +'poll_you_created' => "You created this poll", + +// 2.0.3 + +'qr_add_email' => "Enable email notification of replies", + +// 2.0 +'ip_private' => 'Private', +'tom_outline' => 'Outline', +'tom_standard' => 'Standard', +'tom_linear' => 'Linear+', + +'tom_replies' => "Replies", +'announce_both' => "Announcement started %s and ends %s", +'announce_start' => "Announcement started %s", +'announce_end' => "Announcement ends %s", + +'cpt_approve' => "Set Visible (Approve Post)", +'cpt_unapprove' => "Set Invisible (Unapprove Post)", +'cpt_approvet' => "Set Visible (Approve Topic)", +'cpt_unapprovet' => "Set Invisible (Unapprove Topic)", +'cpt_merge' => 'Merge Posts', +'cpt_delete' => "Delete Posts", +'cpt_split' => "Split Topic", +'cpt_move' => "Move Posts", +'cp_js_delete' => "Are you sure you wish to delete these posts?", +'enter_keywords' => "Enter Keywords", +'search_topic' => "Search Topic", +'f_go' => "With Selected", + +'m_location' => "From:", + +'tt_reply_to_post' => "Reply directly to this post", + + +'attach_thumbs' => 'Attached thumbnail(s)', +'attach_images' => 'Attached image(s)', +'attach_normal' => 'Attached File(s)', +'attach_ahits' => 'Downloads:', +'attach_size' => 'Size:', +'mq_title' => 'Toggle multiquote addition', + +'tt_link' => "Show the link to this post", +'tt_prompt' => "Manually copy the direct link to this post below to store the link in your computer's clipboard", + +// new 1.2 B3 (RC1) + +'tt_rating' => "Rating:", + +// new in 1.2 +'tt_warn' => "Warn:", +'tt_warn_add' => "Increase warn level", +'tt_warn_minus' => "Decrease warn level", +'mm_title' => "Multi-Moderation", +'mm_submit' => "Go", +'pv_total_votes' => "Total Votes", +'new_poll_link' => "Attach New Poll", +'ac_title' => "Show Contact Card", +'to_open' => "Open Topic Options", +'to_close' => "Close Topic Options", +'show_emo' => "Show Smilies Pop Up Window", +'pl_show_results' => "Show Results", +'pl_show_vote' => "Show Vote Options", + +'pic_attach_thumb' => "Attached Image (Click thumbnail to expand)", + +'attached_file' => "Attached File", +'qr_title' => "Fast Reply", +'qr_open' => "Open Fast Reply Window", +'qr_hide' => "Close Fast Reply Window", + +'qr_submit' => "Add Reply", +'qr_more_opts' => "More Options", +'qr_closeit' => "Close Fast Reply", +'qr_add_smilie' => "Enable Smilies", +'qr_add_sig' => "Enable Signature", + +// new in RC1 + +'b_back_to' => "Back to", + +// end + +'SPLIT_TOPIC' => "Split Topic", +'MERGE_TOPIC' => "Merge Topic", +'TOPIC_HISTORY' => "View Topic History (Admin Option)", + +'tt_title' => "Track this topic", + +'ft_title' => "Subscribe to this forum", + +'av_title' => "Download this topic", + +'active_users_detail' => "%s Guests and %s Anonymous Users", +'active_users_title' => "%s User(s) are reading this topic", +'active_users_members' => "%s Members:", + +'go_new_post' => "Go to first unread post", +'edited_by' => "This post has been edited by %s: %s", + +'UNSUBBIT' => "Unsubscribe all from topic", + +'EDIT_TOPIC' => "Edit Topic Title", +'forum_jump' => "Forum Jump", +'UNPIN_TOPIC' => "Unpin this Topic", +'OPEN_TOPIC' => "Open this topic", +'attach_hits' => "Number of downloads", +'DELETE_TOPIC' => "Delete this topic", +'topic_moved' => "This topic has moved, taking you to the correct forum", +'pic_attach' => "Attached Image", +'m_posts' => "Posts:", + +'multi_page_topic' => "Pages:", +'snitch_geezer_to_a_copper' => "Report this post", +'MOVE_TOPIC' => "Move this topic", +'CLOSE_TOPIC' => "Close this topic", +'topic_page_h' => "Topic", +'member_warn_level' => "Member Warn Level", +'start_new_poll' => "Start a new poll", +'m_joined' => "Joined:", +'track_topic' => "Track this topic", +'js_del_1' => "Are you sure you want to delete this message?", +'please_log_in' => "You are not logged into this forum.", +'js_del_2' => "Ok, no action has been taken", +'start_new_topic' => "Start a new topic", +'moderation_ops' => "Moderation Options", +'RECOUNT' => "Rebuild Topic", +'ip' => "IP", +'reply_to_topic' => "Reply to this topic", +'topic_stats' => "<#POSTS#> replies since <#START#>", +'single_page_topic' => " ", +'PIN_TOPIC' => "Pin this Topic", +'print' => "Print this topic", +'topic' => "Topic", +'posted_on' => "Post", +'attach_dl' => "Download attachment", +'DELETE_POST' => "Delete Posts", +'t_old' => "Next Oldest", +'t_new' => "Next Newest", +'forward' => "Email this topic", +'m_group' => "Group:", +'back_top' => "Back to top", +'member_no' => "Member No.:", +); +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/en/lang_ucp.php b/upload/cache/lang_cache/en/lang_ucp.php new file mode 100644 index 00000000..62212583 --- /dev/null +++ b/upload/cache/lang_cache/en/lang_ucp.php @@ -0,0 +1,624 @@ + "You have", +'pp_pending_approval' => "friends pending approval.", +'pp_manage_friends_link' => "Manage your friends list (launches new window)", +'pp_find_friends_title' => "Find Friends", +'pp_find_friends' => "Find new friends via the member list.", +'pp_go_memberlist' => "Go to the member list", +'pp_friends_manage_title' => "Friends Pending Approval", +'max_dname_length' => 'Max Characters:', +'m_personal_portal' => 'Edit Personal Portal Information', +'m_manage_friends' => 'Manage Friend List', + +'m_personal_statement' => "Personal Statement", +'m_char_limit' => "(300 Chars Max.)", +'m_notifications' => "Notification Options", +'m_new_comments' => "New Comments", +'m_choose_comm_type' => "Choose the type of notification for when comments are added", +'m_new_friends' => "New Friends", +'m_choose_friend_type' => "Choose the type of notification for when new friends are added", +'m_mod_type' => "Moderation Options", +'m_choose_cmod_type' => "Choose the type of moderation for when comments are added", +'m_choose_fmod_type' => "Choose the type of moderation for when new friends are added", +'m_save_settings' => " Save Settings ", + +// NEW : 2.1 + +'ucp_op_pm_title' => "Personal Messenger Options", +'ucp_op_pm' => "Disable your personal messenger?", +'ucp_op_pm_dowhat' => 'If you disable your personal messenger, you will not be able to make or receive personal messages.', + +'sub_added' => "Your subscription has been added", +'dname_change_ok' => "Display name changed successfully", +'dname_error_title' => "Errors Found:", +'dname_error_no_name' => "You must enter a name longer than 3 characters and shorter than 32", +'dname_error_no_pass' => "The password field is empty", +'dname_error_chars' => "The display name contains illegal characters", +'dname_error_taken' => "The display name is already in use by another member", +'dname_error_pass_wrong' => "The password you entered is incorrect", +'dname_submit' => "Continue...", +'dname_choose' => "Enter a new display name", +'dname_choose2' => "This is the display name you wish to now use.
Characters not permitted: [ ] | , ; $", +'dname_password' => "Enter your current password", +'dname_password2' => "This is to ensure security on your account", +'dname_title' => "Change Display Name", +'dname_string' => "You have made %s of %s display name changes since %s.
You are permitted to make %s changes in a %s day period.

Changing your display name will not affect your log in username.", +'m_dname_change' => "Change Display Name", +'dst_error' => "An error occured when trying to automatically change your DST settings. If the error continues, please switch off auto DST correction.", +'dst_box2' => "(If you have selected the correct time zone and the clock appears an hour out, check or uncheck box to suit)", +'dst_auto' => 'Auto correct DST?', +'dst_auto2' => '(If selected, your DST setting is automatically adjusted when you next load the board index)', +'dst_correction_title' => 'DST Correction', +'settings_time_txt2' => "The time (including your current adjustment) is:", +'ucp_title_posting' => 'Posting Settings', +'ucp_use_rte' => 'Rich Text Editor', +'ucp_use_std' => 'Standard Editor', +'type_of_editor' => 'Type of text editor to use when posting', +'rte_text' => 'Rich Text Editor requires either IE6, Mozilla or Firefox', + +// CHANGED: 2.1 + +'dst_box' => "Is daylight saving time in effect?", +'need_cookie_yum_yum' => "This function requires cookies", +'open_qr' => "Open Fast Reply automatically when available?", +'m_contact_info' => "Edit Profile Information", +'settings_time_txt' => "Your base time zone", + +//2.0.2 + +'m_blog' => "Community Blog", +'m_blog_ucp_main' => "Your Blog Settings", +'m_blog_cblocks' => "Content Blocks Settings", +'m_blog_aboutme' => "About Me Settings", +'m_blog_your_blog' => "Your Blog", + +//2.0 + +'announce_delete' => "Delete", +'announce_edit' => "Edit", +'announce_by' => "By:", +'conv_email_warning_title' => "EMAIL WARNING", +'conv_email_warning' => "Your email address has been changed because it was in use by another account. This means that all email will NOT go to your correct email address - this could include lost password notifications, etc.
PLEASE change your email address immediately.", + +'attach_topicmoved' => 'This topic has been moved', +'attach_inpm' =>'Personal Message', +'m_gallery' => 'Invision Gallery', +'m_gallery_albums' => 'Your Albums', +'m_gallery_favs' => 'Your Favorites', +'m_gallery_controls' => 'Your Controls', +'auto_track' => "Enable 'Email Notification' by default?
If ticked, choose default type:
", +'auto_track_desc' => "Enabling this option will automatically subscribe you to any topic you start or reply to.", + +'subs_c_title' => 'Subscription Information', +'subs_c_forum' => 'Forum Subscription:', +'subs_c_topic' => 'Topic Subscription:', +'subs_c_type' => 'Type', +'subs_exp_text' => 'Please choose your notification method.
Forum subscriptions will notify when new topics have been made and topic subscriptions notify when a reply has been made.', +'subs_delayed' => 'Delayed Emailed Notification', +'subs_delayed_desc' => "This option will send out a notification if a new topic or reply has been made and you're not active on the board.", +'subs_immediate' => 'Immediate Email Notification', +'subs_immediate_desc' => 'This option will send out a notification immediately after a new topic or reply has been made regardless of your activity.', +'subs_daily' => 'Daily Email Digest', +'subs_daily_desc' => 'This option will send out a daily digest showing all new replies or topics for that day', +'subs_weekly' => 'Weekly Email Digest', +'subs_weekly_desc' => 'This option will send out a weekly digest showing all new replies or topics for that week', +'subs_none_title' => 'No Email Notification', +'subs_none_desc' => 'This option will not send out any email notification but will retain the topic or forum in your subscriptions panel.', +'subs_submit' => 'Proceed', + +'subs_c_change' => "Change to:", + +'announce_page_disabled' => "(Not Active)", +'announce_del1' => "Are you sure you wish to delete this announcement?", +'announce_del2' => "Ok, no action taken!", +'announce_error_date' => "The start or end date is not a real date, please check the dates entered.", +'announce_error_title' => "You must enter a title and content for this announcement.", +'announce_error_forums' => "You must choose at least one forum for this announcement.", +'announce_title' => "Title", +'announce_author' => "Author", +'announce_end' => "Ends", +'announce_starts' => "Starts", +'announce_forums' => "Forums", +'announce_current' => "Current Announcements", +'announce_add' => "Add Announcement", +'announce_none' => "There are no announcements", +'announce_button_add' => "Add Announcement", +'announce_button_edit' => "Edit Announcement", +'announce_form_title' => "Announcement Title", +'announce_form_start' => "Start Date (MM-DD-YYYY)", +'announce_form_end' => "End Date (MM-DD-YYYY)", +'announce_form_startdesc' => "Leave blank to not use a start date", +'announce_form_enddesc' => "Leave blank to not use an end date", +'announce_form_content' => "Announcement Content", +'announce_form_forums' => "Activate in Forums", +'announce_form_forums2' => "You may choose more than one", +'announce_form_allforums' => "-- All Forums --", +'announce_use_html' => "Enable HTML?", +'announce_form_options' => "Options", +'announce_page_allforums' => "All Forums", +'announce_page_numbforums' => "Forums...", +'announce_form_enable' => "Enable this announcement", + +'menu_announcements' => "Manage Announcements", +'mfm_title_result' => 'Member Search Results', +'cp_edit_user' => "Member Look-up", +'cp_find_user' => "Enter part, or all of the username you wish to edit", +'cp_find_submit' => "Find user", +'cp_find_2_user' => "Please select a member from the matches", +'cp_find_2_submit' => "Edit users profile", + +'cp_no_perms' => "You do not have permission for this action.", + + +'ipp_found' => "Your search returned the following number of matching posts:", +'ipp_click' => "Click here to view the results in a new window", +'ip_desc_text' => "Resolve IP Address: This option will allow you to look up an IP address for more information (note, you must enter all 4 parts of the IP address to use this tool)
Find Posts with this IP: This option will run a search for all posts associated with this IP address
Find members who registered with this IP: This tool will run a seach for all members who registered with the entered IP address", +'ip_warn_text' => "Please Note: You may enter a wildcard '*' (without quotes) as the last part of the IP address.
For example, 127.*.*.* will match all IP address that start with 127.
127.1.0.* will match all IP addresses that start with 127.1.0.
An error will occur if you attempt to use a wildcard in the middle of the IP address. For example, 127.*.0.1 will return an error.", +'ip_enter' => "Enter the IP address", +'ip_submit' => "Run Tool", +'ip_resolve_result' => "The host name for %s is %s

Try visiting nic.com to get more information by running this match via WHOIS.", +'cp_no_matches' => "There was no data returned from your search input, please try again", + +'ip_resolve' => "Resolve", +'ip_posts' => "Find Posts", +'ip_members' => "Find Members", +'ipm_title' => "Member Search Results", +'ipm_name' => "Name", +'ipm_ip' => "IP Address", +'ipm_posts' => "Posts", +'ipm_reg' => "Date Registered", +'ipm_options' => "Options", +'ipm_group' => "Group", +'ipm_edit' => "Edit Member", +'ipm_view' => "View Profile", + +'menu_title_mod' => 'Moderator Tools', +'menu_ipsearch' => 'IP Address Look-up Tool', +'menu_memsearch' => 'Member Look-up Tool', + +'m_attach' => 'Manage Your Attachments', +'attach_title' => 'Attachment', +'attach_topic' => 'Topic', +'attach_date' => 'Date', +'attach_hsize' => 'Size', +'attach_delete' => 'Delete Selected', + +'attach_space_count' => "You have %s attachments (%s% used)", +'attach_space_used' => 'You have used %s of %s', +'attach_space_unl' => 'You have used %s of global upload space.', + +'splash_last5' => "Recently Read Topics", +'splash_nopost' => 'No topics to show', +'splash_attach' => 'Recent Attachments', +'splash_noattach' => 'No recent attachments to display', + +'m_ignore_users' => "Manage Ignored Users", +'mi5_title' => "Manage your ignored users", +'mi5_text' => "This section allows you to set up your ignored users list.
When you add a user to your ignore list, any posts they make will be masked until you specify that you wish to read them. You may not be able to ignore users if they are in a member group which doesn't allow them to be added.", +'mi5_norows' => "Your ignore list is currently empty - you can add members below", +'mi5_name' => "Name", +'mi5_group' => "Group", +'mi5_posts' => "Posts", +'mi5_remove' => "Remove", +'mi5_edit' => "Update Ignored Users", +'mi5_finduser' => "Find User", +'mi5_addem' => 'Add new users to your list', +'mi5_error' => "Error", +'mi5_cantfind' => "Couldn't add the following: %s. This could be because they are already in your list or they are not affected by the ignore list or the member name does not exist.", + +'pph_max2' => "Photos must be no bigger than %s pixels by %s pixels.", +'pph_max' => "All photos must be no larger than %s kB.
", + +// added 1.2.1 + +'new_sub_link' => "Purchase Paid Subscriptions", +'m_top_list' => "Top Site List", +'tsl_home' => "Goto List Home", +'tsl_your_sites' => "Edit Your Sites", + +// added 1.2 + +'ec_passy' => "Your Current Password", +'mi_prune_msg' => "Empty PM Folders", + +'av_gallery_title' => "Avatar Gallery:", +'av_gall_submit' => "Use Selected Avatar", +'av_gall_cancel' => "Cancel Avatar Gallery", +'av_gall_jump' => "Choose another avatar gallery:", +'av_root' => "Base Gallery", +'av_go_gal' => "Choose an avatar from one of our galleries", +'av_go_go' => "Go!", +'av_upload' => "Upload a new image from your computer", +'av_url' => "Enter a URL to an online avatar image", +'av_update' => "Update Avatar", +'av_remove' => "Remove Avatar", +'av_current' => "Your Current Avatar", +'av_settings' => "Your Avatar Settings", +'av_text_upload' => "Uploaded avatars from your computer must be no larger than %s KB.", +'av_allowed_files' => "The following file types are allowed: %s", +'av_t_upload' => "Uploaded File", +'av_t_url' => "Offsite File", +'av_t_local' => "Gallery Avatar", +'av_t_na' => "No avatar selected", +'av_text_url' => "Your avatar must be no bigger than %s pixels by %s pixels in size.", +'av_confirm' => "Remove your avatar?", +'av_autosize' => "Image Scale On", +'av_as_desc' => "This will scale the image down for you if it's too big in pixel size", + +'pp_restore' => "Restore", +'pp_confirm' => "Remove your personal photo?", +'av_c_up' => "Avatar choice updated", +'photo_c_up' => "Personal Photo Choice Updated", +'pph_title' => "Your Personal Photo", +'pph_desc' => "This section will allow you to specify a photo to be used in your profile which is viewable by other board members.", +'pph_current' => "Currently Used Photo", +'pph_change' => "Change Photo...", +'pph_none' => "(None Specified)", +'pph_upload' => "Upload an image from your computer", +'pph_url' => "Enter a URL to an online photo image", +'pph_submit' => "Update Photo", +'pph_remove' => "Remove Photo", + +'pph_autosize' => "Image Scale On", +'pph_as_desc' => "This will scale the image down for you if it's too big in pixel size", +'pph_t_upload' => "Uploaded File", +'pph_t_url' => "URL Location", + +'email_c_up' => "Email settings updated", + +'integ_msg' => "Integrity Messenger identity", + +'dead_section_title' => "No access permissions", +'dead_section_text' => "Sorry, the board administrator has not enabled your permissions for this part of the control panel.", + + +'tt_menu' => "Menu", +'m_change_photo' => "Change Personal Photo", + +'hs_exp' => "Choosing 'no' may cause problems when sharing links with people on the same proxy as you.", + +// Added in B4 + +'ras_title' => "Security Code", +'ras_numbers' => "Your unique security code
If you do not see any numbers, or see broken images, please contact a board administrator to rectify the problem.", +'ras_text' => "Confirm security code
Please enter the 6 character code shown in the image. If you cannot read the code, click the image to generate a new one.", +'err_security_code' => "The security code did not match the one displayed, a new code has been generated, please try again", +'email_changed_now' => "Your email address has been changed", + +//--- + +'forum_subs_header' => "Your Forum Subscriptions", + +'forum_subs_none' => "You are not subscribed to any forums at present", +'f_none' => "--", +'in' => "In:", +'by' => "By:", + +'ft_forum' => "Forum", +'ft_posts' => "Replies", +'ft_topics' => "Topics", +'ft_newpost' => "Start New Topic", +'ft_last_post' => "Last Post", + + +'subs_today' => "Last day", +'subs_day' => "Last %s days", +'subs_all' => "the beginning", + +'show_topics_from' => "Show topics from:", + +'subs_none' => "There are no subscriptions to show, try selecting a less restrictive date range", + +'auto_prune' => "Note: Subscriptions are pruned if there is no reply to the topic after %s days", +'no_auto_prune' => "Subscription auto pruning is switched off at present", + + +'cf_required' => "Required Information, this section must be completed", + +'pp_number_posts' => "Number of posts to show for each topic page", +'pp_number_topics' => "Number of topics to show for each forum page", +'pp_use_default' => "Use forum default", + +'mess_saved' => "Saved (Unsent) PMs", + + + +'lp_subject' => "Email address change at", + +'avup_yes' => "You already have an uploaded avatar (shown at the top of this page)
Unless you choose to enter a URL for an avatar, or upload another avatar, your current uploaded avatar will remain", +'avup_no' => "You do not have an uploaded avatar stored, you may choose to upload an avatar by using the box above", + +'set_updated' => "Settings updated", + +'hide_session_txt' => "Do you wish to hide your session id in the links? *", + +'m_messenger' => "Messenger", + +'av_tt_one' => "I don't wish to use an avatar (remove all current)", +'av_tt_two' => "Selecting this option will remove all current avatars if you have any selected/uploaded or entered in the URL field", + +'mess_new' => "Compose New Message", + +'mess_contact' => "PM Block List", +'mess_folders' => "Edit Storage Folders", + +'mess_inbox' => "Go to Inbox", + +'mess_archive' => "Archive Messages", +'mess_tracker' => "Message Tracker", + +'forum_jump' => "Forum Jump", + +'m_personal' => "Personal Profile", + +'m_bio_info' => "Edit Biography", +'m_sig_info' => "Edit Signature", +'m_avatar_info' => "Edit Avatar Settings", + +'m_options' => "Options", + +'m_email_opt' => "Email Settings", +'m_board_opt' => "Board Settings", +'m_email_change' => "Change Email Address", +'m_passy_opt' => "Change Password", + +'m_tracker' => "Subscriptions", +'m_view_subs' => "View Topics", +'m_view_forum' => "View Forums", + +'ta_size' => 'Notepad size:', + +'new_window' => "New Window", + +'subs_delete' => "Unsubscribe", + +'with_selected' => "with selected", + +'ta_s' => 'small', +'ta_m' => 'medium', +'ta_l' => 'large', + +'cp_edit_sig' => "Edit your signature", +'cp_current_sig' => "Your current Signature", +'cp_submit_sig' => "Update my Signature", + +'messenger_summary' => "Your messenger summary", +'total_messages' => "Total messages (in all folders)", +'messages_left' => "Message space left: ", +'folders_full' => "YOUR MESSENGER FOLDERS ARE FULL!", +'total_capacity' => "of total capacity", + +'change_email_title' => "Change your registered email address", + +'ce_new_email' => "Enter your new email address", +'ce_new_email2' => "Confirm the new email address", + +'ce_current' => "Your current email address: ", +'ce_auth' => "

PLEASE NOTE: You will have to re-activate your account after changing your email address.
An email will be sent to the email address you specify below, outlining what you need to do.

Proceeding with this action will log you out. It is strongly recommended that you reset your password before changing your email address if you are unable to remember your password.", + +'ce_redirect' => "An email has been sent, redirecting to the activation screen", + +'ce_subject' => "Email change request from ", + +'pass_change_text' => "You may change your password here.

We will attempt to update your current session after your successful password change. If, however, you do experience difficulties, please try logging out and logging back in before contacting a staff member to help resolve the problem", + +'pass_redirect' => "Your password has been changed. Depending on your cookie settings, you may need to log back in with your new password.", + + +'total_posts' => "Total Posts", +'aol_name' => "AOLAIM Name", +'home_page' => "Home Page", +'viewing_profile' => "Viewing member profile", +'registration_date' => "Registration Date", +'change_email' => "Email Address Change request", +'no_information' => "No Information Entered", +'msn_name' => "MSN Identity", +'profile_edited' => "Your profile has been edited", +'member_level' => "Member Level", +'post_average' => "Post Average", +'b_date' => "Your Date of Birth", +'send_pm' => "Click here to send <# NAME #> a Private Message", +'thank_you' => "Thank you", +'send_email' => "Send <# NAME #> an email", +'registration_process' => "Email address change request", +'per_day' => "posts per day", +'no_photo' => "[ No Personal Photograph ]", + +'M_1' => "Jan.", +'M_2' => "Feb.", +'M_3' => "Mar.", +'M_4' => "April", +'M_5' => "May", +'M_6' => "June", +'M_7' => "July", +'M_8' => "Aug.", +'M_9' => "Sep.", +'M_10' => "Oct.", +'M_11' => "Nov.", +'M_12' => "Dec.", + +'D_0' => "Sun", +'D_1' => "Mon", +'D_2' => "Tue", +'D_3' => "Wed", +'D_4' => "Thur", +'D_5' => "Fri", +'D_6' => "Sat", + +'month1' => "January", +'month2' => "February", +'month3' => "March", +'month4' => "April", +'month5' => "May", +'month6' => "June", +'month7' => "July", +'month8' => "August", +'month9' => "September", +'month10' => "October", +'month11' => "November", +'month12' => "December", + +'hidden_email' => "<# NAME #> has chosen to keep his/her email address private", +'auth_text' => "Your Email address change request has been processed.

The board administrator has chosen to require validation for all email addresses. Within the next 10 minutes (usually instantly) you'll receive an email with instructions on the next step.
The email has been sent to", +'icq_number' => "ICQ Number", +'add_book' => "Click here to add <# NAME #> to your contact book", +'contact_header' => "Contact Details", +'signature' => "Signature", +'last_modification' => "Last Profile Update", +'yahoo_name' => "Yahoo Identity", +'personal_header' => "Statistics and Personal Information for <# NAME #>", + +//---- + +'note_pad' => "Your personal note pad", +'submit_notepad' => "Update", + +'note_pad_empty' => "You may store post snippets, or any other information you need to hand here", +'birthday' => "Your Date of Birth", +'av_personal' => "You are currently using a personal avatar", +'width' => "Width", +'js_used' => "You have used", +'avatar_pre_title' => "Pre-installed avatars", +'lp_redirect' => "Email dispatched", +'account' => "Modify Account", + +'settings_hour' => "Hours", +'edit_profile' => "Edit your profile", +'messenger_url' => "Go to your messenger", +'no' => "No", +'personal_help' => "This is where you can amend your personal profile for other visitors to view", +'subs_forum' => "Forum", +'settings_submit' => "Change my Account Options", +'js_location' => "Location", + +'avatar_url_allowed' => "
You can either select an avatar already installed on this board, or enter a URL for an image you've got uploaded on your website. Please choose which you'd prefer.", +'privacy_settings' => "Privacy Settings", +'avatar_show_all' => "
[ Help Cards: Show all avatars ]", +'account_title' => "Modify Your Account", +'welcome' => "Welcome to your control panel ", +'maximum' => "Maximum", +'avatar_pre_txt' => "Please select an avatar from the list below, simply click on the avatar's name to view it.", +'height' => "Height", +'icq' => "Your ICQ UIN", +'subs_replies' => "Replies", +'avatar_url_title' => "Your image avatars", +'avatar_title' => "Your avatar options", + +'hide_email' => "Hide my email address from other members
Enabling this option will deny other members sending you an email via the board.", +'account_email_txt' => "Your Email Address", +'account_pass_new2' => "Please confirm your NEW password", +'website' => "Your website url", +'account_pass_title' => "Your Password", +'personal_ops' => "Your personal options", +'settings_title' => "Your Account Options", +'yahoo' => "Your Yahoo identity", +'subs_cancel' => "Cancel", + +'account_email_title' => "Your registered email address", +'js_signature' => "Signature", +'settings_viewimg' => "Do you wish to view images in posts, such as smilies and posted images?", +'t_title' => "Your control panel", + +'av_none_selected' => "[ No Avatar Selected ]", +'subs_header' => "Current Subscriptions", +'profile_title' => "Your personal profile, this section is optional", +'board_prefs' => "Board Preferences", +'subs_left' => "Days Left", +'subs_topic' => "Topic", +'settings_viewava' => "Do you wish to view members avatars when reading topics?", +'personal_ops_txt' => "this is where you can modify your personal information to allow others to find out a little more about you. This is also where you can set up your avatar. An avatar is a little image that is displayed under your name when you make a post.", +'subs_start' => "Subscribed on", +'submit_email' => "Amend my email settings", + +'msg_options' => "Options", + +'subs_view' => "Views", +'email_text_lp' => "Lost Password request at", +'js_max' => "The maximum allowed length is", +'interests' => "Your interests", +'submit_profile' => "Amend my profile", +'avatar_click' => "Click on one of the avatars in this list to add it into the 'Your Avatar' box.", +'location' => "Your Location", +'avatar_url_ext' => "The following file types are allowed: ", +'email_address' => "Email address", +'pm_reminder' => "Send a confirmation email when I receive a new private message
Enabling this option will send an email confirmation of any new private messages sent to you.", +'subs_last_post' => "Last Post", +'email' => "Email Settings", +'account_email_submit' => "Change my Email Address", +'settings' => "Account Options", +'photo' => "You may enter a URL for a personal photograph
[This will only be displayed on your profile - not with your posts]", +'js_so_far' => "characters so far", +'email_help' => "This is where you can change your email settings", +'settings_dopopup' => "Do you wish to get a board notification when you get a new personal message?", +'settings_display' => "Board Display Settings", +'send_full_msg' => "Include a copy of the post when emailing me from a subscribed topic
Enabling this option will send a plain text version of the post in the subscription email.", +'member_title' => "Custom member title", +'yes' => "Yes", +'account_pass_new' => "Enter your NEW password", +'settings_viewsig' => "Do you wish to view members signatures when reading topics?", +'js_interests' => "Interests", +'av_preset' => "You are currently using a pre-installed avatar", +'aol' => "Your AOL identity", +'settings_lang' => "Board Interface Language", +'pixels' => "pixels", +'t_welcome' => "Welcome to your control panel", +'personal' => "Personal Info", +'daily_average' => "Average posts per day", +'account_pass_submit' => "Change my Password", +'stats_header' => "Your account summary", +'settings_time' => "Time Zone", +'subs_title' => "Your Topic Subscriptions", +'no_posts' => "You've yet to post", +'subs' => "Topic Tracker", +'subs_deleted' => "The subscription has been deleted", +'msn' => "Your MSN Messenger identity", +'registered' => "Registered on ", +'subs_by' => "By:", +'number_posts' => "Posts", +'account_pass_old' => "Enter your CURRENT password", +'js_characters' => "characters", +'account_email_req' => "You will receive an email asking you to verify this change", +'email_title' => "Your email settings", + +'check_length' => "Check Length", +'admin_send' => "Send me any updates sent by the board administrator
Enabling this option will add your email address to the administrators mail list and you will receive any updates sent.", +); + +// Time zones... + +$lang['time_-12'] = "(GMT - 12:00 hours) Enitwetok, Kwajalien"; +$lang['time_-11'] = "(GMT - 11:00 hours) Midway Island, Samoa"; +$lang['time_-10'] = "(GMT - 10:00 hours) Hawaii"; +$lang['time_-9'] = "(GMT - 9:00 hours) Alaska"; +$lang['time_-8'] = "(GMT - 8:00 hours) Pacific Time (US & Canada)"; +$lang['time_-7'] = "(GMT - 7:00 hours) Mountain Time (US & Canada)"; +$lang['time_-6'] = "(GMT - 6:00 hours) Central Time (US & Canada), Mexico City"; +$lang['time_-5'] = "(GMT - 5:00 hours) Eastern Time (US & Canada), Bogota, Lima"; +$lang['time_-4'] = "(GMT - 4:00 hours) Atlantic Time (Canada), Caracas, La Paz"; +$lang['time_-3.5'] = "(GMT - 3:30 hours) Newfoundland"; +$lang['time_-3'] = "(GMT - 3:00 hours) Brazil, Buenos Aires, Falkland Is."; +$lang['time_-2'] = "(GMT - 2:00 hours) Mid-Atlantic, Ascention Is., St Helena"; +$lang['time_-1'] = "(GMT - 1:00 hours) Azores, Cape Verde Islands"; +$lang['time_0'] = "(GMT) Casablanca, Dublin, London, Lisbon, Monrovia"; +$lang['time_1'] = "(GMT + 1:00 hours) Brussels, Copenhagen, Madrid, Paris"; +$lang['time_2'] = "(GMT + 2:00 hours) Kaliningrad, South Africa"; +$lang['time_3'] = "(GMT + 3:00 hours) Baghdad, Riyadh, Moscow, Nairobi"; +$lang['time_3.5'] = "(GMT + 3:30 hours) Tehran"; +$lang['time_4'] = "(GMT + 4:00 hours) Abu Dhabi, Baku, Muscat, Tbilisi"; +$lang['time_4.5'] = "(GMT + 4:30 hours) Kabul"; +$lang['time_5'] = "(GMT + 5:00 hours) Ekaterinburg, Karachi, Tashkent"; +$lang['time_5.5'] = "(GMT + 5:30 hours) Bombay, Calcutta, Madras, New Delhi"; +$lang['time_6'] = "(GMT + 6:00 hours) Almaty, Colombo, Dhaka"; +$lang['time_7'] = "(GMT + 7:00 hours) Bangkok, Hanoi, Jakarta"; +$lang['time_8'] = "(GMT + 8:00 hours) Hong Kong, Perth, Singapore, Taipei"; +$lang['time_9'] = "(GMT + 9:00 hours) Osaka, Sapporo, Seoul, Tokyo, Yakutsk"; +$lang['time_9.5'] = "(GMT + 9:30 hours) Adelaide, Darwin"; +$lang['time_10'] = "(GMT + 10:00 hours) Melbourne, Papua New Guinea, Sydney"; +$lang['time_11'] = "(GMT + 11:00 hours) Magadan, New Caledonia, Solomon Is."; +$lang['time_12'] = "(GMT + 12:00 hours) Auckland, Fiji, Marshall Island"; + +?> \ No newline at end of file diff --git a/upload/cache/lang_cache/index.html b/upload/cache/lang_cache/index.html index 787531db..52a588b2 100644 --- a/upload/cache/lang_cache/index.html +++ b/upload/cache/lang_cache/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

Ошибка < Русская версия Invision Power Board

-
-Вы попали на несуществующую страницу!
Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
-Invision Power Board: - - - + Invision Power Board - Bulletin Board System

403: Invision Power Board -> Forbidden


You have reached this Page in error, please use your back button to return to Invision Board.
Invision Power Board \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/acp_lang_acpperms.php b/upload/cache/lang_cache/ru/acp_lang_acpperms.php deleted file mode 100644 index c7f4d501..00000000 --- a/upload/cache/lang_cache/ru/acp_lang_acpperms.php +++ /dev/null @@ -1,193 +0,0 @@ - "Главн. страница админцентра", -'admin:splash:splash' => "Разрешить просмотр главной страницы", - -'admin:adminlog' => "Действия администраторов", -'admin:adminlog:remove' => "", -'admin:components' => "Система компонентов", -'admin:components:add' => "", -'admin:components:edit' => "", -'admin:components:export' => "", -'admin:components:import' => "", -'admin:emailerror' => "Журнал e-mail ошибок", -'admin:emailerror:remove' => "", -'admin:emaillog' => "E-mail отправления", -'admin:emaillog:remove' => "", -'admin:modlog' => "Действия модераторов", -'admin:modlog:remove' => "", -'admin:spiderlog' => "Действия поисковых ботов", -'admin:spiderlog:remove' => "", -'admin:stats' => "Статистика", -'admin:stats:show' => "Генерация и просмотр статистики", -'admin:warnlog' => "Журнал предупреждений", -'admin:warnlog:remove' => "", -'admin:warnlog:view' => "", -'content:attach' => "Прикрепляемые файлы", -'content:attach:add' => "", -'content:attach:edit' => "", -'content:attach:export' => "", -'content:attach:import' => "", -'content:attach:remove' => "", -'content:attach:search' => "", -'content:attach:stats' => "Разрешить ПРОСМОТР СТАТИСТИКИ", -'content:babw' => "Фильтры (блокировки и нецензурных слов)", -'content:babw:ban-add' => "Разрешить ДОБАВЛЕНИЕ фильтров блокировки", -'content:babw:ban-remove' => "Разрешить УДАЛЕНИЕ фильтров блокировки", -'content:babw:ban-view' => "Разрешить ПРОСМОТР фильтров блокировки", -'content:babw:bw-add' => "Разрешить ДОБАВЛЕНИЕ фильтров блокировки", -'content:babw:bw-edit' => "Разрешить ИЗМЕНЕНИЕ фильтров блокировки", -'content:babw:bw-export' => "Разрешить ЭКСПОРТ фильтров блокировки", -'content:babw:bw-import' => "Разрешить ИМПОРТ фильтров блокировки", -'content:babw:bw-remove' => "Разрешить ДОБАВЛЕНИЕ фильтров блокировки", -'content:bbcode' => "Дополнительные BB-коды", -'content:bbcode:add' => "", -'content:bbcode:edit' => "", -'content:bbcode:export' => "", -'content:bbcode:import' => "", -'content:bbcode:remove' => "", -'content:calendars' => "Календари", -'content:calendars:add' => "", -'content:calendars:edit' => "", -'content:calendars:recache' => "", -'content:field' => "Дополнительные поля профиля", -'content:field:add' => "", -'content:field:edit' => "", -'content:field:remove' => "", -'content:forum' => "Управление форумами", -'content:forum:add' => "", -'content:forum:edit' => "", -'content:forum:empty' => "Разрешить ОЧИСТКУ форумов", -'content:forum:permedit' => "Разрешить РЕДАКТИРОВАНИЕ форумов", -'content:forum:recount' => "Разрешить ПЕРЕСЧЕТ форумов", -'content:forum:remove' => "", -'content:forum:reorder' => "Разрешить СОРТИРОВКУ форумов", -'content:forum:rules' => "Разрешить УПРАВЛЕНИЕ правилами форумов", -'content:forum:skin' => "Разрешить УПРАВЛЕНИЕ стилями форумов", -'content:group' => "Группы пользователей", -'content:group:add' => "", -'content:group:edit' => "", -'content:group:perms' => "Разрешить УПРАВЛЕНИЕ масками доступа", -'content:group:remove' => "", -'content:mem' => "Пользователи", -'content:mem:add' => "", -'content:mem:ban' => "Разрешить БЛОКИРОВАНИЕ пользователей", -'content:mem:edit' => "", -'content:mem:mod' => "Разрешить УПРАВЛЕНИЕ ожидающими публикации модератором темами", -'content:mem:remove' => "", -'content:mem:suspend' => "Разрешить ВРЕМЕННОЕ БЛОКИРОВАНИЕ пользователя", -'content:mem:title-add' => "Разрешить ДОБАВЛЕНИЕ личного звания пользователю", -'content:mem:title-edit' => "Разрешить РЕДАКТИРОВАНИЕ личного звания пользователя", -'content:mem:title-remove' => "Разрешить УДАЛЕНИЕ личного звания пользователя", -'content:mem:title-view' => "Разрешить ПРОСМОТР личного звания пользователя", -'content:mod' => "Модераторы", -'content:mod:add' => "", -'content:mod:edit' => "", -'content:mod:remove' => "", -'content:msubs' => "Подписки", -'content:msubs:add' => "", -'content:msubs:edit' => "", -'content:msubs:install' => "Разрешить УСТАНОВКУ шлюзов", -'content:msubs:remove' => "", -'content:msubs:search' => "", -'content:mtools' => "IP Утилиты", -'content:mtools:view' => "", -'content:multimod' => "Мульти-модерация тем", -'content:multimod:add' => "", -'content:multimod:edit' => "", -'content:multimod:remove' => "", -'content:rssexport' => "RSS Экспорт", -'content:rssexport:add' => "", -'content:rssexport:edit' => "", -'content:rssexport:recache' => "", -'content:rssimport' => "RSS Импорт", -'content:rssimport:add' => "", -'content:rssimport:edit' => "", -'content:rssimport:recache' => "", -'content:rssimport:remove' => "", -'lookandfeel:emoticons' => "Смайлики", -'lookandfeel:emoticons:add' => "", -'lookandfeel:emoticons:edit' => "", -'lookandfeel:emoticons:export' => "", -'lookandfeel:emoticons:import' => "", -'lookandfeel:emoticons:remove' => "", -'lookandfeel:emoticons:upload' => "", -'lookandfeel:image' => "Макросы стилей", -'lookandfeel:image:add' => "", -'lookandfeel:image:edit' => "", -'lookandfeel:image:remove' => "", -'lookandfeel:import' => "Импорт и Экспорт стилей", -'lookandfeel:import:export' => "", -'lookandfeel:import:import' => "", -'lookandfeel:lang' => "Языки", -'lookandfeel:lang:add' => "", -'lookandfeel:lang:edit' => "", -'lookandfeel:lang:export' => "", -'lookandfeel:lang:import' => "", -'lookandfeel:lang:remove' => "", -'lookandfeel:sets' => "Стили", -'lookandfeel:sets:add' => "", -'lookandfeel:sets:edit' => "", -'lookandfeel:sets:rebuild' => "", -'lookandfeel:sets:remove' => "", -'lookandfeel:skindiff' => "Различия стилей", -'lookandfeel:skindiff:rundiff' => "Разрешить ЗАПУСК УТИЛИТЫ СРАВНЕНИЯ стилей", -'lookandfeel:skintools' => "Утилиты для стилей", -'lookandfeel:skintools:changemember' => "Разрешить ИЗМЕНЕНИЕ стиля пользователей", -'lookandfeel:skintools:recache' => "Разрешить ПЕРЕСТРОЙКУ КЕША стилей", -'lookandfeel:skintools:search' => "Разрешить ПОИСК И ЗАМЕНУ в HTML шаблонах", -'lookandfeel:style' => "CSS стиля", -'lookandfeel:style:edit' => "", -'lookandfeel:templ' => "HTML шаблоны стиля", -'lookandfeel:templ:add' => "", -'lookandfeel:templ:edit' => "", -'lookandfeel:templ:remove' => "", -'lookandfeel:wrap' => "Общий шаблон форума", -'lookandfeel:wrap:edit' => "", -'tools:admin' => "Кеш утилиты", -'tools:admin:recache' => "", -'tools:help' => "Разделы помощи", -'tools:help:add' => "", -'tools:help:edit' => "", -'tools:help:remove' => "", -'tools:loginauth' => "Системы авторизации", -'tools:loginauth:add' => "", -'tools:loginauth:diagnostics' => "Разрешить ДИАГНОСТИКУ системы", -'tools:loginauth:edit' => "", -'tools:loginauth:export' => "", -'tools:loginauth:import' => "", -'tools:op' => "Настройки", -'tools:portal' => "Дополнения портала", -'tools:op:add' => "", -'tools:op:edit' => "", -'tools:op:export' => "", -'tools:op:import' => "", -'tools:op:remove' => "", -'tools:op:search' => "", -'tools:postoffice' => "Работа с e-mail", -'tools:postoffice:add' => "", -'tools:postoffice:edit' => "", -'tools:postoffice:remove' => "", -'tools:postoffice:send' => "Разрешить ОТПРАВКУ РАССЫЛКИ", -'tools:rebuild' => "Пересчет и перестройка", -'tools:rebuild:rebuild' => "", -'tools:rebuild:recount' => "", -'tools:task' => "Менеджер задач", -'tools:task:add' => "", -'tools:task:edit' => "", -'tools:task:log' => "", -'tools:task:remove' => "", -'tools:task:runnow' => "Разрешить использовать опцию ЗАПУСК СЕЙЧАС для задач", -'admin' => "Администрирование", -'content' => "Управление", -'lookandfeel' => "Внешний вид", -'components' => "Компоненты", -'tools' => "Утилиты и настройки", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/acp_lang_member.php b/upload/cache/lang_cache/ru/acp_lang_member.php deleted file mode 100644 index 59e6c335..00000000 --- a/upload/cache/lang_cache/ru/acp_lang_member.php +++ /dev/null @@ -1,26 +0,0 @@ - "Удалить сообщения/темы для:", -'mem_delete_delete_posts' => "Удалить ВСЕ %s СООБЩЕНИЙ этого пользователя?", -'mem_delete_delete_posts_desc' => 'Если включить: темы, открытые этим пользователем и не имеющие ответов, будет удалены, остальные темы не удаляются.', -'mem_delete_delete_topics' => "Удалить ВСЕ %s ТЕМ этого пользователя?", -'mem_delete_delete_topics_desc' => "Если включить: все темы, открытые этим пользователем, будут удалены, независимо от ответов в эту тему от других пользователей.", -'mem_delete_delete_pergo' => "Удалять по n сообщений/тем за раз", -'mem_delete_delete_pergo_desc' => "Удаление сообщений и тем происходит небыстро, не рекомендуем указывать большое число за раз...", -'mem_delete_process' => "В обработке...", - -'mem_edit_pm_title' => "Отключить использование пользователем личных сообщений", -'mem_edit_pm_no' => "Нет", -'mem_edit_pm_yes' => "Да — но разрешить пользователю включать повторно", -'mem_edit_pm_yes_really' => "Да — и не разрешать пользователю включать повторно", - -'mem_delete_title' => "Удаление сообщений/тем пользователя", -'mem_delete_title_desc' => 'Эта секция позволяет вам удалить все сообщения или темы, опубликованные данным пользователем', - -'mem_posts_process_done' => "Завершено!", -'mem_posts_process_more' => "%s сообщений обработано (проверено сообщений: %s, тем: %s)...", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/acp_lang_portal.php b/upload/cache/lang_cache/ru/acp_lang_portal.php deleted file mode 100644 index 2115fa5c..00000000 --- a/upload/cache/lang_cache/ru/acp_lang_portal.php +++ /dev/null @@ -1,23 +0,0 @@ - "Управление дополнениями портала", -'main_title' => "Управление дополнениями портала", -'main_help' => "Дополнения портала — модули, которые находятся в папке /sources/portal_plugins/. После успешной установки каждый модуль позволит вам использовать специальные тэги, которые увеличивают функциональность в пределах портала", - -'error_no_dir' => "Папка /sources/portal_plugins/ не существует. Создайте ее и попробуйте снова.", -'error_no_key' => "Не существует дополнения по указанному ключу.", -'error_no_settings' => "Настроек для этого дополнения не существует", - -'portal_main_title' => 'Зарегистрированные дополнения портала', -'portal_main_key' => 'Название дополнения', -'portal_pop_tags' => 'Экспортируемые тэги:', -'portal_pop_name' => 'Имя тэга', -'portal_pop_desc' => 'Описание тэга', - -'portal_row_menu_view_tags' => "Просмотр экспортируемых тэгов...", -'portal_row_menu_settings' => "Изменить настройки...", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/index.html b/upload/cache/lang_cache/ru/index.html deleted file mode 100644 index 787531db..00000000 --- a/upload/cache/lang_cache/ru/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -Ошибка < Русская версия Invision Power Board - -

Ошибка < Русская версия Invision Power Board

-
-Вы попали на несуществующую страницу!
Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
-Invision Power Board: - - - diff --git a/upload/cache/lang_cache/ru/lang_boards.php b/upload/cache/lang_cache/ru/lang_boards.php deleted file mode 100644 index 65823985..00000000 --- a/upload/cache/lang_cache/ru/lang_boards.php +++ /dev/null @@ -1,111 +0,0 @@ - "сообщений", -'cs_members' => "пользователей", -'cs_active' => "пользователей в онлайне", -'q_topics' => "Ожидающих тем:", -'q_posts' => "сообщений:", - - -// build #003 -'foruma' => "форума", -'messages' => "Сообщений:", -'polzovateley' => "Пользователей", -'v_online' => "в онлайне:", -'ozhidayushih_tem' => "Ожидающих тем:", -'soobsheniy' => "сообщений:", -'avtorizatsiya' => "Авторизация:", -'poisk_po_forumu' => "Поиск по форуму:", - -// added in 2.0 - -'enter_search_words' => "Что ищем?", -'sub_forum_title' => "— подфорумы", - -// - -'whoschatting_total' => "В чате сейчас пользователей:", -'whoschatting_loadchat' => "Чат", -'whoschatting_none' => "В чате сейчас никого нет", -'whoschatting_delay' => "Обновляется каждые %s минут", - -'rd_hits' => "Переходов", -'oul_show_more' => "Полный список по:", -'oul_click' => "последним действиям", -'oul_name' => "именам пользователей", - -'qli_title' => "Быстрый вход", -'qli_name' => "Имя пользователя", -'qli_go' => "Войти!", - -'by' => "Автор", - -'calender_f_title' => "Будущие календарные события (в пределах %s дней)", - -'no_calendar_events' => "Будущие календарные события отсутствуют", - -'newslink' => "— последние новости: ", - -'welcome_back_text' => "С возвращением, последний раз вы были здесь", - -'sm_today_posters' => "Активные сегодня", -'sm_all_posters' => "Самые активные", -'sm_forum_leaders' => "Администрация", -'sm_todays_posts' => "Активные темы", - -'protected_forums' => "Закрытые форумы", -'no_birth_users' => "Именинников сегодня нет", -'total_forums' => "Всего форумов:", -'public_forums' => "Открытых форумов", -'public_members' => "пользователей", - -'total_word_string' => "На форуме сообщений: <#posts#>
Зарегистрировано пользователей: <#reg#>
Приветствуем последнего зарегистрированного по имени <#mem#>", - - -'birthday_header' => "Поздравляем с днём рождения наших пользователей:", - -replies => "Ответов", -board_stats => "Статистика форума", - -guests => "гостей", -posts => "сообщений", -total_of => "всего", -browser_user_list => "Полный список", - -forum_leader => "Модераторы: ", -birth_user => "пользователь празднует свой день рождения", -forum_users => "Пользователей в этом форуме", -forums => "Форумов", -restricted_forums => "Закрытых форумов", -invite_submit => "ОК", -all_times => "Все время", -new_posts => "Новые сообщения", -anon_members => "скрытых пользователей", -d_post_read => "Отметить все сообщения прочитанными", -last_post_info => "Последнее сообщение", -birth_users => "пользователей празднуют сегодня свой день рождения", -forum_off => "Только для чтения", - -cat_name => "Форум", -in => "Тема", -registered_mems => "зарегистрированных пользователей", -topics => "Тем", -f_protected => "Закрытый форум", -d_delete_cookies => "Удалить установленные форумом cookies", -forum_icons => "Иконка форума", - - - -info => "Информация", -active_users => "посетителей за последние %s минут", - -f_none => "----", -most_online => "Рекорд посещаемости форума — <#NUM#>, зафиксирован — <#DATE#>", -no_new => "Нет новых сообщений", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_buddy.php b/upload/cache/lang_cache/ru/lang_buddy.php deleted file mode 100644 index 329440ab..00000000 --- a/upload/cache/lang_cache/ru/lang_buddy.php +++ /dev/null @@ -1,56 +0,0 @@ - "Вы не имеете новых/непрочитанных л.с.", - - -// 2.1 - -'tab_info' => 'Информация', -'tab_posts' => 'Новые сообщения', -'tab_search' => 'Поиск', -'tab_pms' => 'Личные сообщения', -'tab_newpms' => 'НОВЫЕ личн. сообщения', -'legend_forum' => 'Информация о форуме', -'legend_post' => 'Информация о публикации', - - -'page_title' => "Помощник", -'log_in_needed' => "Требуется войти", -'no_guests' => "Эта функция недоступна для гостей.

Если вы зарегистрированы, авторизуйтесь.", -'log_in' => "Авторизация", -'lin_name' => "Имя пользователя", -'lin_pass' => "Пароль", - -'reg_text' => "Для использования этой функции необходимо быть зарегистрированным пользователем.", - - -'reg_link' => "Регистрация", - -'close_win' => "Закрыть окно", -'refresh' => "Обновить окно", - -'show_me' => "Показать:", - -'sm_today_posters' => "Самые активные сегодня", -'sm_all_posters' => "Самые активные форумчане", -'sm_forum_leaders' => "Администрация форума", -'sm_todays_posts' => "Активные темы ", -'sm_my_last_posts' => "10 ваших последних сообщений", - -'while_away' => "Пока вас не было:", -'no_new_posts' => "Новых сообщений не появилось", - -'new_posts' => "Появилось новых сообщений: %s.", -'view_link' => "Просмотр", -'my_replies' => "Ответов в ваших темах: %s", -'none' => "0", -'search_forums' => "Поиск по форуму", -'search_help' => "Поиск в разделе «Помощь»", -'go' => "ОК", - -); - -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_calendar.php b/upload/cache/lang_cache/ru/lang_calendar.php deleted file mode 100644 index 20967324..00000000 --- a/upload/cache/lang_cache/ru/lang_calendar.php +++ /dev/null @@ -1,118 +0,0 @@ - "Если это событие не действует весь день, вы можете указать начальное время", -'form_timestart' => "Начальное время (ЧЧ:ММ)", - - -// 2.1 (NEW) - -'cal_title_jump' => 'Переход по календарю', -'cal_title_nav' => 'Навигация', -'cal_event_add_single' => 'Однодневное событие', -'cal_event_add_ranged' => 'Многодневное событие', -'cal_event_add_recurring' => 'Повторяющееся событие', - -'cal_event_delete' => 'Событие календаря успешно удалено', -'button_delete' => "Удалить", -'button_edit' => "Изменить", -'button_approve' => "Опубликовать (сделать видимым)", -'button_unapprove' => "Скрыть (сделать невидимым)", -'new_event_mod' => "Опубликованное вами событие добавлено в список на проверку модератором, только после его одобрения оно будет опубликовано", -'day_add_event' => 'Добавить новое событие', -'show_n_events' => 'Событий: (%s)', -'form_whichcal' => 'Добавить календарь', -'form_tz' => 'Временная зона события', -'calendar_group_filter' => "Опция администраторов
(доступна только для публичных событий)", -'calendar_delete_box' => "Удалить событие", -'calendar_title' => "Заголовок события", -'calendar_event_date' => "Даты", -'calendar_event_type' => "Тип события", -'calendar_type_private' => "Приватное событие (видно только вам)", -'calendar_type_public' => "Публичное событие (видно всем)", -'calendar_submit' => "Добавить событие календаря", - -'calendar_edit_submit' => "Изменить событие", - -// 2.1 (CHANGED) - -'entry_birthdays' => "Именинников: %s", -'post_new_event' => "Управление событиями календаря", - -//------------------------------------------------ - - -// build #003 -'add_new_event_to_calendar' => "Добавить новое событие", -'view_current_month' => "Просмотр текущего месяца", -'view_current_week' => "Просмотр текущей недели", -'delete_event' => "Удалить событие", -'edit_event' => "Изменить событие", - -'bd_birthday' => ", с днем рождения!", -'aa_add_new_event' => "Добавить событие", -'aa_cur_month' => "Текущий месяц", -'aa_view_week' => "Текущая неделя", -// 1.2 - -'fv_single' => "Дата события", -'fv_range' => "Многодневное событие...", -'fv_range_ends' => 'Завершить', -'fv_recur' => "Повторяющееся событие...", -'fv_recur_every' => "", -'fv_days' => "Еженедельно", -'fv_months' => "Ежемесячно", -'fv_years' => "Ежегодно", -'fv_hidden' => '------------', -'fv_bgcolor' => "Фон", -'fv_font' => "Текст", -'fv_until' => "До", -'tbt_recur' => "Повторяющееся событие", -'js_del_1' => "Вы точно хотите удалить это событие?", -'js_del_2' => "Действие отменено!", - -'se_normal' => "Однодневное событие", -'se_recur' => "Повторяющееся событие", -'se_range' => "Многодневное событие", -'se_ends' => "до", -'month_jump' => "Перейти к месяцу", - -// --- - - -'page_title' => 'Календарь', -'table_title' => 'Календарь событий и именинников', - -'form_submit_show' => "ОК", - -//'entry_birthdays' => "именинников: %s", - -//'post_new_event' => "Добавить событие", - -'new_event_redirect' => "ваше календарное событие успешно добавлено", - -'cal_title_events' => "Календарь", - -'cal_birthdays' => "Именинники", - -'back' => "Назад", - -'private_event' => "Приватное событие", -'public_event' => "Публичное событие", -'restricted_event' => "Ограниченное событие", - -'joined' => "Регистрация:", -'posts' => "Сообщений:", -'group' => "Группа:", - -'edit_event' => "Изменить событие:", - -'edit_event_redirect' => "календарное событие отредактировано", -'delete_event_redirect' => "календарное событие удалено", - -'event_date' => "Дата события:", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_chatpara.php b/upload/cache/lang_cache/ru/lang_chatpara.php deleted file mode 100644 index 68f28f6c..00000000 --- a/upload/cache/lang_cache/ru/lang_chatpara.php +++ /dev/null @@ -1,22 +0,0 @@ - "Основное окно чата", -'chat_help' => "Помощь по чату", -'chat_online' => "Находится в чате", -'chat_help_text' => "Если Вы работаете в Windows и видите только иконку «мертвой» ссылки, то вам необходимо скачать и установить Java Virtual Machine, после этого зайти в чат заново. Скачать это Java приложение можно по ссылке ниже:
-
- * Microsoft Virtual Machine (для Internet Explorer)
- * Sun Java™ Plugin (для Netscape, Opera и т.д.)
-
- Внимание: в старых версиях браузеров некоторых систем чат у вас может не открываться.
-
- Пользователи, использующие firewall, должны открыть доступ к client.invisionchat.com через порты 9000-9009.
-

", - -'chat_chatpara' => 1, -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_chatsigma.php b/upload/cache/lang_cache/ru/lang_chatsigma.php deleted file mode 100644 index 3afc6ff8..00000000 --- a/upload/cache/lang_cache/ru/lang_chatsigma.php +++ /dev/null @@ -1,22 +0,0 @@ - "Основное окно чата", -'chat_help' => "Помощь по чату", -'chat_online' => "Находится в чате", -'chat_help_text' => "Если Вы работаете в Windows и видите только иконку «мертвой» ссылки, то вам необходимо скачать и установить Java Virtual Machine, после этого зайти в чат заново. Скачать это Java приложение можно по ссылке ниже:
-
- * Microsoft Virtual Machine (для Internet Explorer)
- * Sun Java™ Plugin (для Netscape, Opera и т.д.)
-
- Внимание: в старых версиях браузеров некоторых систем чат у вас может не открываться.
-
- Пользователи, использующие firewall, должны открыть доступ к client.invisionchat.com через порты 9000-9009.
-

", - -'chat_chatsigma' => 1, -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_editors.php b/upload/cache/lang_cache/ru/lang_editors.php deleted file mode 100644 index 717b2407..00000000 --- a/upload/cache/lang_cache/ru/lang_editors.php +++ /dev/null @@ -1,87 +0,0 @@ - "Инициализация...", -'jsfile_error' => "Ошибка!", -'jsfile_error_c' => "Ошибка:", -'jsfile_mywebpage' => "Сайт", -'jsfile_alert1' => "Некоторые версии Mozilla/Firefox не поддерживают programatic ", -'jsfile_alert2' => "доступ к функциям вырезать/копировать/вставить, по причинам безопасности. ", -'jsfile_alert3' => "Ваш браузер один из них. Пожалуйста, используйте стандартные комбинации клавиш:", -'jsfile_alert4' => "CTRL-X - вырезать, CTRL-C - копировать, CTRL-V - вставить.", -'jsfile_highlight' => "Вы обязаны выделить часть текста перед созданием этой ссылки", -'jsfile_erroriespell' => "ieSpell не найден. Нажмите Ok для перехода на страницу загрузки.", -'jsfile_errorliespell' => "Ошибка загрузки ieSpell: Exception ", - - -'js_forced_change' => "У вас установлено отображение при помощи «Rich Text» редактора, но ваш браузер не поддерживает его. Для вас используется стандартный режим отображения.", -'js_tt_closeall' => "Закрыть все тэги", -'js_tt_bold' => "Полужирный", -'js_tt_italic' => "Курсив", -'js_tt_underline' => "Подчеркнутый", -'js_tt_strike' => "Перечеркнутый", -'js_tt_font_col' => "Цвет шрифта", -'js_tt_back_col' => "Цвет фона", -'js_tt_link' => "Вставить ссылку", -'js_tt_image' => "Вставить изображение", -'js_tt_email' => "Вставить e-mail", -'js_tt_quote' => "Сделать цитатой", -'js_tt_left' => "По левому краю", -'js_tt_center' => "По центру", -'js_tt_right' => "По правому краю", -'js_tt_list' => "Вставить список", -'js_tt_indent' => "Увеличить отступ", -'js_tt_outdent' => "Уменьшить отступ", -'js_tt_noformat' => "Удалить форматирование", -'js_tt_undo' => "Отменить ввод", -'js_tt_redo' => "Вернуть ввод", -'js_tt_copy' => "Копировать", -'js_tt_paste' => "Вставить", -'js_tt_cut' => "Вырезать", -'js_tt_code' => "Код", - -'box_font' => "Шрифт", -'box_size' => "Размер", - -'js_bbeasy_on' => 'Обучающий режим включен', -'js_bbeasy_off' => 'Обучающий режим отключен', -'js_bbeasy_toggle' => 'Нажмите для переключения между режимами', - -'remove_attach' => "Вы действительно хотите удалить этот файл?", - -'js_close_all_tags' => "Закрыть все тэги", -'js_tag_list' => "Введите пункт списка. Для завершения списка, нажмите «отмена» или оставьте очередное поле пустым", -'jscode_text_enter_url' => "Введите полный URL ссылки", -'jscode_text_enter_email' => "Введите e-mail адрес", -'jscode_text_code' => "Использование: [CODE] Здесь исходный код.. [/CODE]", -'jscode_error_no_title' => "Вы должны ввести название", -'jscode_text_quote' => "Использование: [QUOTE] Вставляйте сюда цитируемые тексты... [/QUOTE]", -'jscode_error_no_url' => "Вы должны ввести URL", -'jscode_text_enter_image' => "Введите полный URL изображения", -'jscode_error_no_width' => "Вы должны ввести ширину", -'jscode_text_enter_url_name' => "Введите название сайта", -'jscode_error_no_email' => "Вы должны ввести e-mail адрес", -'js_used' => "Вами использовано", -'js_max_length' => "Максимально допустимая длина", -'js_post' => "Сообщение", -'js_no_message' => "Вы должны ввести текст сообщения!", -'js_current' => "Текущие символы", -'js_characters' => "символов", -'msg_no_title' => "Необходимо ввести заголовок письма", -'js_check_length' => "Проверить длину сообщения", - - - - - - -'hb_open_tags' => "Открытые тэги", - - -'js_text_to_format' => "Введите текст для форматирования", - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_email_content.php b/upload/cache/lang_cache/ru/lang_email_content.php deleted file mode 100644 index 7b7a0af1..00000000 --- a/upload/cache/lang_cache/ru/lang_email_content.php +++ /dev/null @@ -1,512 +0,0 @@ -. -<#BOARD_ADDRESS#> - -EOF; - -//------------------------------- -// NEW PAID SUBSCRIPTION -//------------------------------- - - -$lang['subject__new_subscription'] = 'New Subscription Purchase'; -$lang['new_subscription'] = << as confirmation of your -subscription purchase. - ----------------------------------- -Package Purchased: <#PACKAGE#> -Package Expires: <#EXPIRES#> -Subscriptions: <#LINK#> ----------------------------------- - -EOF; - -//------------------------------- -// SUBSCRIPTION EXPIRES -//------------------------------- - -$lang['subject__subscription_expires'] = 'Subscription Expiration'; -$lang['subscription_expires'] = << to remind you that your -subscription is due to expire soon. - ----------------------------------- -Package Purchased: <#PACKAGE#> -Package Expires: <#EXPIRES#> -Subscriptions: <#LINK#> ----------------------------------- - -If you wish to continue with your subscription, please re-purchase the subscription -when your current subscription expires. - -If you wish to allow your subscription to expire, you do not need to do anything. - -EOF; - - -//------------------------------- -// NEW MOD __TOPIC__ -//------------------------------- - - -$lang['subject__new_topic_queue_notify'] = 'Новая тема, требующая проверки'; -$lang['new_topic_queue_notify'] = <<. - -Была открыта новая тема, требующая проверки перед публикацией! -Она может быть или опубликована или удалена! - ----------------------------------- -Тема: <#TOPIC#> -Форум: <#FORUM#> -Автор: <#POSTER#> -Дата: <#DATE#> -Управление темами, требующими проверки: -<#LINK#> ----------------------------------- - -Если вас такие уведомления не интересуют, то удалите ваш e-mail адрес из настроек -форума через «Управление форумами». - -<#BOARD_ADDRESS#> - - -EOF; - -//------------------------------- -// NEW MOD __POST__ -//------------------------------- - - -$lang['subject__new_post_queue_notify'] = 'Новое сообщение, требующее проверки'; -$lang['new_post_queue_notify'] = <<. - -Создано новое сообщение, требующее проверки модератором перед публикацией! -Оно может быть или опубликовано или удалено! - ----------------------------------- -Тема: <#TOPIC#> -Форум: <#FORUM#> -Автор: <#POSTER#> -Дата: <#DATE#> -Управление: <#LINK#> ----------------------------------- - -Если вас такие уведомления не интересуют, то удалите ваш e-mail адрес из настроек -форума через «Управление форумами». - -<#BOARD_ADDRESS#> - - -EOF; - -//------------------------------- -// FORUM: WEEKLY -//------------------------------- - - -$lang['subject__digest_forum_weekly'] = 'Еженедельное уведомление о новых темах'; -$lang['digest_forum_weekly'] = <<, - -Уведомление о новых сообщениях в теме «<#TITLE#>» за текущую неделю: ----------------------------------------------------------------------- - - -<#CONTENT#> - - ----------------------------------------------------------------------- - -Тема находится по адресу: -<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost - -Отписка: --------------- -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. - -EOF; - -//------------------------------- -// FORUM: DAILY -//------------------------------- - - -$lang['subject__digest_forum_daily'] = 'Ежедневное уведомление о новых темах'; -$lang['digest_forum_daily'] = <<, - -Уведомление о новых темах в разделе за день: ----------------------------------------------------------------------- - - -<#CONTENT#> - - ----------------------------------------------------------------------- - -Форум находится по адресу: -<#BOARD_ADDRESS#>?showforum=<#FORUM_ID#> - -Отписка: --------------- -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. - -EOF; - - -//------------------------------- -// TOPIC: WEEKLY -//------------------------------- - - -$lang['subject__digest_topic_weekly'] = 'Еженедельное уведомление о новых сообщениях'; -$lang['digest_topic_weekly'] = <<, - -Уведомление о новых темах за текущую неделю: ----------------------------------------------------------------------- - - -<#CONTENT#> - - ----------------------------------------------------------------------- - -Форум находится по адресу: -<#BOARD_ADDRESS#>?showforum=<#FORUM_ID#> - -Отписка: --------------- -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. - -EOF; - -//------------------------------- -// TOPIC: DAILY -//------------------------------- - - -$lang['subject__digest_topic_daily'] = 'Ежедневное уведомление о новых сообщениях'; -$lang['digest_topic_daily'] = <<, - -Уведомление о новых сообщениях в теме «<#TITLE#>» за день: ----------------------------------------------------------------------- - - -<#CONTENT#> - - ----------------------------------------------------------------------- - -Тема находится здесь: -<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost - -Отписка: --------------- -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. - -EOF; - - - -//---------- - - -$lang['subject__pm_notify'] = 'Вам новое личное сообщение!'; -$lang['pm_notify'] = <<, -Вам пришло новое личное сообщение. - -Тема: <#TITLE#> -Отправитель: <#POSTER#> - -Для прочтения сообщения пройдите по ссылке: -<#BOARD_ADDRESS#><#LINK#> - - -EOF; - - - -$lang['send_text'] = << - -С уважением, -<#USER NAME#> - -EOF; - - -$lang['report_post'] = <<, - -Всем модераторам было отправлено уведомление от <#USERNAME#> через кнопку «Жалоба». ------------------------------------------------- -Тема: <#TOPIC#> ------------------------------------------------- -Ссылка на сообщение: <#LINK_TO_POST#> ------------------------------------------------- -Жалоба: - -<#REPORT#> - ------------------------------------------------- - -EOF; - - - -$lang['pm_archive'] = <<, -Это письмо отправлено из <#BOARD_ADDRESS#>. - -Все ваши архивированные сообщения сжаты и прикреплены к этому письму. -EOF; - -$lang['reg_validate'] = << появилась регистрационная запись, -в которой был указал ваш электронный адрес (e-mail). - -При заполнении регистрационной формы было указано следующее имя пользователя: - -=================================== -Имя пользователя (login): <#NAME#> -=================================== - -Если вы не понимаете, о чем идет речь — просто проигнорируйте это сообщение! - -Если же именно вы решили зарегистрироваться в форуме по адресу <#BOARD_ADDRESS#>, -то вам следует подтвердить свою регистрацию и тем самым активировать вашу учетную запись. -Подтверждение регистрации производится один раз и необходимо для повышения безопасности форума и защиты его от злоумышленников. -Чтобы активировать вашу учетную запись, необходимо перейти по ссылке: -<#THE_LINK#> -Активация произойдет автоматически. - -Если таким способом активировать учетную запись не удалось, попробуйте сделать это вручную. Пройдите по ссылке -<#MAN_LINK#> -и введите указанные ниже ID пользователя и код активации (не пароль!) в соответствующие поля. - -=================================== -ID пользователя: <#ID#> -Код активации: <#CODE#> -=================================== - -После активации учетной записи вы сможете войти в форум, используя выбранные вами имя пользователя (login) и пароль. С этого момента вы сможете оставлять сообщения. - -Пожалуйста, не забудьте заполнить свои личные данные: -<#BOARD_ADDRESS#>?act=UserCP&CODE=00 - -Благодарим за регистрацию! -EOF; - -$lang['admin_newuser'] = << зарегистрировался <#DATE#> - -(вы можете отключить подобные уведомления в админцентре) -EOF; - -$lang['lost_pass'] = <<! - -Вы получили это письмо, поскольку был сделан запрос на восстановление вашего пароля в форуме по адресу <#BOARD_ADDRESS#>. -Если вы не делали такой запрос, проигнорируйте это сообщение. - - - -Если же вы в самом деле забыли свой пароль, заново активируйте вашу учетную запись. - -Чтобы активировать вашу учетную запись, необходимо перейти по ссылке -<#THE_LINK#> -и ввести НОВЫЙ пароль. Активация произойдет автоматически. - -Если таким способом ввести новый пароль не удалось, попробуйте активировать вручную. Пройдите по ссылке -<#MAN_LINK#> -и введите НОВЫЙ пароль и указанные ниже ID пользователя и код активации (не пароль!) в соответствующие поля. - -=================================== -ID пользователя: <#ID#> -Код активации: <#CODE#> -=================================== - -После активации учетной записи вы сможете войти в форум, используя ваше имя пользователя (login) и НОВЫЙ пароль. - -Если ничего не получается, свяжитесь с администратором форума! -(IP адрес отправителя: <#IP_ADDRESS#>) - -EOF; - -$lang['newemail'] = <<! - -Вы получили это письмо, потому что выслали запрос на изменение E-mail. - ------------------------------------------------- -Инструкция по активации ниже ------------------------------------------------- - -Вам необходимо будет подтвердить изменение вашего E-mail для проверки того, что это -действие выполнено именно вами. Это требуется для защиты от нежелательных -злоупотреблений и спама. - -Для активации учетной записи зайдите по ссылке: - -<#THE_LINK#> - ------------------------------------------------- -Не сработало? ------------------------------------------------- - -Если подтвердить вам не удалось, зайдите по ссылке - -<#MAN_LINK#> - -и введите указанные ниже ID пользователя и код активации (не пароль!) в соответствующие поля. - -=================================== -ID пользователя: <#ID#> -Код активации: <#CODE#> -=================================== - -Если ничего не получается, свяжитесь с администратором форума! - -EOF; - -$lang['forward_page'] = << - - -<#THE_MESSAGE#> - ---------------------------------------------------- -Помните, что администрация <#BOARD_NAME#> не несет ответственности за содержание этого письма! ---------------------------------------------------- - -EOF; - -$lang['subject__subs_with_post'] = 'Уведомление об ответе в теме'; - -$lang['subs_with_post'] = <<, - -<#POSTER#> ответил в тему «<#TITLE#>», на которую вы подписаны. - ----------------------------------------------------------------------- -<#POST#> ----------------------------------------------------------------------- - -Тема находится по адресу: -<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost - -Возможно, в теме гораздо больше новых ответов, но после каждого посещения вам отправляется только одно уведомление! -Если вы выбрали в ваших личных данных немедленное получение уведомлений об ответе на подписанные темы, вы будете получать -письмо на e-mail при каждом ответе в эту тему. В противном случае между вашими визитами на форум будет отправляться только одно письмо для каждой подписанной темы. -Это является пределом на количество отправляемых писем. - -Отписка: --------------- -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. -EOF; - -$lang['subject__subs_new_topic'] = 'Уведомление о новой теме в форуме'; -$lang['subs_new_topic'] = <<, - -<#POSTER#> открыл новую тему с заголовком «<#TITLE#>» в форуме «<#FORUM#>». - ----------------------------------------------------------------------- -<#POST#> ----------------------------------------------------------------------- - -Тема находится по адресу: -<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#> - -Если вы хотите получать уведомления об ответах в эту тему вы должны нажать на ссылку -«Подписка на тему», которая находится на странице просмотра темы или же прямо здесь, -нажав на следующую ссылку: -<#BOARD_ADDRESS#>?act=Track&f=<#FORUM_ID#>&t=<#TOPIC_ID#> - - -Отписка: --------------- - -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. - -Если вы не подписывались ни на какие уведомления в форумах и желаете, чтобы форум перестал посылать вам такие письма, зайдите по ссылке «Личные данные», далее «Настройки e-mail» и снимите галочку в окошке поля -«Сообщать мне обо всех изменениях, проводимых администратором форума». - -EOF; - -$lang['subject__subs_no_post'] = 'Уведомление об ответе в подписанной теме'; -$lang['subs_no_post'] = <<! - -<#POSTER#> ответил в тему «<#TITLE#>», на которую вы подписаны. - -Тема находится по адресу: -<#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost - -Возможно, в теме гораздо больше новых ответов, но после каждого посещения темы вам отправляется только одно уведомление! -Это является пределом на количество отправляемых писем. - -Отписка: --------------- - -Вы можете в любое время отписаться от такой рассылки через ссылку «Подписки» в ваших личных данных. -EOF; - - - -$lang['email_member'] = <<! - -Вам было отправлено письмо через форум по адресу <#BOARD_ADDRESS#> -Отправитель: <#FROM_NAME#> - -<#MESSAGE#> - ---------------------------------------------------- -Администрация <#BOARD_NAME#> не несет ответственности за содержание этого письма! ---------------------------------------------------- - - -EOF; - -$lang['complete_reg'] = <<». Вы можете авторизоваться -с вашими данными и иметь полный доступ к форуму по адресу: -<#BOARD_ADDRESS#> - -EOF; - - -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_emails.php b/upload/cache/lang_cache/ru/lang_emails.php deleted file mode 100644 index 6d0f620a..00000000 --- a/upload/cache/lang_cache/ru/lang_emails.php +++ /dev/null @@ -1,75 +0,0 @@ - "Отправь мне сообщение", -'add_me_to_contact_list' => "Добавь меня в контакт лист", -'add_link_on_page' => "Добавить ссылку на свою страницу", -'download_aol' => "Скачать AOL Instant Messenger", - -//1.2 - -'imp_text' => "ВНИМАНИЕ: Помните, что все отправляемые через эту форму письма сохраняются в специальном журнале, доступном администраторам. Мы не рекомендуем оставлять здесь конфиденциальные данные.", - -'exceeded_quota' => "Письмо не было отправлено, так как лимит отправляемых вами писем в день исчерпан. В день можно отправить не более, чем <#EXTRA#> писем.", -'exceeded_flood' => "Письмо не отправлено, так как в течение последних <#EXTRA#> минут вы уже отправляли письмо. Должно пройти время, пока вы сможете опять отправить письмо.", -'errors_found' => "Обнаружены следующие ошибки", -'no_message' => "Вы должны ввести текст письма", -'no_subject' => "Вы должны ввести заголовок письма", -'gen_error' => "Вы не авторизованы или не имеете возможность отправлять письма", -//--- - - -'msn_send_msg' => "Отправить этому пользователю сообщение в MSN", -'msn_add_contact' => "Добавить пользователя в контакт-лист в MSN", -'msn_name' => "Имя пользователя в MSN", - - -'yahoo_send_msg' => "Отправить пользователю сообщение в Yahoo!", -'yahoo_view_profile' => "Просмотр профиля пользователя в Yahoo!", -'yahoo_status' => "Онлайн статус в Yahoo!", -'yahoo_name' => "Имя пользователя в Yahoo!", - -'report_title' => "Отправить жалобу модератору на это сообщение", -'report_submit' => "Отправить жалобу", -'report_message' => "Введите текст жалобы

Примечание: вам не нужно указывать здесь тему и сообщение, модератор автоматически получит эту информацию.

Пожалуйста, используйте эту возможность форума только для жалоб о некорректном сообщении! Для связи с модератором используйте личные сообщения.", -'report_topic' => "Название темы", - - -'report_subject' => "Жалоба о сообщении в", - -'report_redirect' => "жалоба успешно отправлена. Сейчас вы будете перемещены обратно в тему", - - -title => "Отправка письма другу", -'send_lang' => "Язык письма", -to_name => "Кому (имя друга):", -redirect => "Письмо успешно отправлено", -to_email => "Отправить на (e-mail):", -submit_send => "Отправить", -send_email_to => "Отправка письма для", -message => "Сообщение", -show_address_text => "Вы можете отправить письмо на e-mail этому пользователю, нажав на ссылку ниже. Форум не показывает e-mail адреса в темах, для предотвращения спама.", -send_header => ", заполните все поля формы, чтобы отправить e-mail для", -member_address_title => "E-mail адрес пользователя", -send_title => "E-mail форма", -msg_txt => "Внимание: при использовании этой формы получатель узнает ваш e-mail адрес", -subject => "Тема", -email_sent_txt => "Ваше письмо успешно отправлено для", -email_sent => "Письмо отправлено", - -invite_subject => "<#MEMBER_NAME#> отправил вам интересную ссылку", -subs_redirect => "Вы подписались на эту тему", -invite_redirect => "Письмо отправлено для ", -sub_added => "Ваша подписка успешно добавлена", - -icq_title => "ICQ", -submit => "Отправить", -aol_title => "AOL", -msg => "Введите текст письма", -email => "Ваш e-mail", -name => "Ваше имя", -forum_jump => "Переход по форумам", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_error.php b/upload/cache/lang_cache/ru/lang_error.php deleted file mode 100644 index f4011d5c..00000000 --- a/upload/cache/lang_cache/ru/lang_error.php +++ /dev/null @@ -1,331 +0,0 @@ - "Возникла неизвестная ошибка при обработки вашего запроса. Пожалуйста вернитесь назад и попробуйте снова. Если эта ошибка возникает постоянно, свяжитесь с администратором форума", - -//2.1 -'ucp_name_change' => 'Вы уже использовали все свои попытки изменять отображаемое имя за эти 24 часа.', -'topic_rate_no_perm' => 'Вам не разрешено оценивать эту тему', -'cal_no_perm' => 'Вам не разрешено просматривать этот календарь или же он попросту не существует', -'cp_admin_user' => "Вы не можете изменять профиль администраторов из этих личных данных", - -// 2.1 changed - - -'no_usepm_member' => "Невозможно отправить это сообщение, так как получатель отключил его личный ящик или он попросту переполнен.", -'search_word_short' => "Одно или все введенные вами ключевые слова для поиска, имеет менее <#EXTRA#> символов, или же вы ввели в качестве ключевого слова недопустимые к поиску слова, такие как 'html', 'img' и т.д. Вернитесь назад и увеличьте количество символов в ключевом слове, либо измените его.", - - -// 2.0.2 -'cp_admin_user' => "Вы не можете редактировать профиль администраторов через панель управления", - -// 2.0 - -'erl_email' => 'Ваш e-mail адрес', - -'reg_no_agree' => "Вы не отметили галочкой, что вы согласны с правилами и положениями форума. Для продолжения регистрации сделайте это. Если вы не согласны с правилами и положениями, нажмите на эту ссылку.", - -'no_upload_permission' => "Вы не можете загружать файлы", - - -// added in 1.2.1 - -'banned_email' => "Вам запрещено использовать этот e-mail адрес для вашей учетной записи. Используйте другой.", -'subs_no_curid' => "Сделка не состоялась, потому что идентификатор (id) текущего пакета подписок не был передан в форму для оплаты.", -'subs_no_upgrade' => "Нет пакетов для обновления!", -'subs_no_selected' => "Вы не выбрали пакета подписок. Вернитесь назад и выберите хотя бы один пакет.", -'subs_nomethod_selected' => "Вы не указали метод оплаты. Вернитесь назад и укажите метод оплаты.", -'subs_no_api' => "Невозможно определить местоположение требуемого API файла, процесс приосстановлен.", -'subs_no_upgrade' => "Данный метод оплаты больше не поддерживается. Процесс приостановлен.", -'subs_fail' => "Произошла неопределенная ошибка. Код <#EXTRA#>.", -'sub_already' => "Вы уже подписаны на данный пакет и он либо оплачен, либо срок его действия пока не истек. Процесс приостановлен.", -//-- - - - -'auth_no_key_not_allow' => "Вы не можете выполнять это действие, пока администратор не подтвердил вашу регистрацию", - - -// added 1.2 B3 - -'no_flash_av' => "У вас недостаточно прав для использования flash в качестве аватара, в подписи или в сообщениях", -'no_warn_max' => "Этому пользователю больше невозможно изменить рейтинг. Уровень положительного/отрицательного рейтинга предельный", - -// added 1.2 -'split_too_much' => "Нельзя выбрать все сообщения для разделения темы. По понятным причинам необходимо оставить хотя бы одно сообщение в этой теме.", - -'ml_error' => "Данная группа пользователей не отображается в списке пользователей.", -'protected_user' => "Вы не можете продолжить это действие. Данный пользователь является защищенным от таких действий.", -'warned_already' => "Этот пользователь уже предупрежден на данный момент.", -'no_mmid' => "Это неверное действие мульти-модерации.", -'del_post' => "Неверная авторизация. Вернитесь назад и попробуйте снова. Если вы неправильно обратились к данной функции, исправьте ошибку и используйте соответствующий этой функции метод.", -'stupid_beggar' => "Нельзя использовать одновременно все опции выпадающего меню. Используйте по одной. Вернитесь назад и исправьте ошибку.", -'fd_noneselected' => "Вы не выбрали ни одной папки в личной ящике для ее очистки. Вернитесь назад и повторите попытку.", -'cal_range_wrong' => "Дата окончания события должна быть позже даты начала события.", -'posting_off_susp' => "Вы временно лишены прав отправки сообщений. Дата и время возобновления ваших прав — <#EXTRA#>.", -'account_susp' => "Вы временно заблокированы. Дата и время разблокирования — <#EXTRA#>.", -'email_change_v' => "Вы уже ожидаете подтверждения активации. Необходимо пройти активацию, перед выполнением этого действия.", -'is_broken_link' => "Ссылка, по которой вы попали на эту страницу является «мертвой» или удаленной.", -'pass_no_match' => "Введенные вами пароли не идентичны. Вернитесь назад и повторите попытку.", -'av_no_gallery' => "Выбранная вами галерея аватаров уже не существует. Вернитесь назад и попробуйте выбрать другую.", -'no_integ' => "Этот пользователь не имеет учетной записи в IM (Integrity Messenger).", - -'file_2_big' => "Высота или ширина изображения превышает норму допустимого. Уменьшите размеры изображения и повторите попытку.", -'no_photo_selected' => "Перед продолжением вы должны указать ссылку или загрузить фотографию с компьютера.", -'photo_invalid_ext' => "Запрещено использовать такое расширение для фотографий.", - - -// Added in RC2 - -'no_help_file' => "Невозможно найти этот раздел помощи. Повторите попытку.", - - -//-- - -// Added in RC1 - -'no_member_mail' => "У вас нет прав отправки из форума писем на e-mail", - -//-- - -// Added in Beta 3 - -'no_vote' => "Вы не выбрали пункт, за который хотите проголосовать. Вернитесь назад и выберите один из пунктов голосования, которому хотите отдать свой голос", - -//--- End B3 additions --- - -'me_no_forum' => "Вы не имеете прав модерирования всех форумов.", - - - -'no_name_search_results' => "Выбранное имя пользователя не найдено. Вернитесь назад и попробуйте снова.", - - -'split_not_enough' => "Для разделения, необходимо выбрать хотя бы одно сообщение!", - -'mt_no_topic' => "Тема, соответствующая введенному вами URL, не обнаружена в базе данных. Дважды проверьте введенную информацию и повторите попытку.", -'mt_same_topic' => "Невозможно соединить эту же тему", - -'forum_no_post_allowed' => "Вы не можете переместить темы в этот форум, так как в нем ответы запрещены!", - - -'no_msn' => "У этого пользователя некорректное имя в MSN.", -'no_yahoo' => "У этого пользователя некорректное имя в Yahoo!", - -'cf_to_long' => "Вы ввели слишком много данных в поле «<#EXTRA#>», вернитесь назад и проверьте введенные данные", - - -'search_flood' => "Включено ограничение на повторное использование поиска. Необходимо подождать <#EXTRA#> секунд перед тем, как воспользоваться поиском снова. Это сделано для защиты сервера от атак на форум.", - -'cal_no_events' => "В эту дату событий и именинников нет. Вернитесь назад и попробуйте снова", -'cal_date_oor' => "Дата, выбранная для этого события, не соответствует действительности (к примеру нельзя выбирать 30 февраля). Вернитесь назад, проверьте введенные данные и попробуйте снова.", - -'cal_title_none' => "Необходимо ввести название события, длиной более двух символов", -'cal_title_long' => "Введенное вами название события слишком длинное. Вы должны вводить не более 64 символов", - -'search_off' => "В данный момент поиск по форуму отключен.", -'reg_off' => "В данный момент регистрация на форуме отключена.", - -'offline_title' => "Форум закрыт!", -'offline_login' => "Если у вас есть права посещения форума во время его закрытия, войдите, используя форму ниже.", - -'skin_not_found' => "Выбранный вами стиль не обнаружен. Возможно администратор удалил этот стиль. Вернитесь назад и выберите другой.", - -'no_view_board' => "Вам запрещен доступ в этот форум", - -'forum_read_only' => "Этот форум только для чтения — новые темы и сообщения не принимаются.", - -'no_av_upload' => "Вы не имеете прав загрузки аватаров или фотографий на сервер", -'no_av_type' => "Запрещено загружать файлы такого типа, в качестве аватаров или фотографий", -'no_av_name' => "Загружаемый файл не имеет названия. Вернитесь назад и проверьте данные.", - -'upload_failed' => "Неудачная загрузка. Обратитесь к администрации форума для помощи.", - -'er_log_in_title' => "Вы не авторизованы. Вы можете это сделать ниже.", -'erl_enter_name' => "Ваше имя", -'erl_enter_pass' => "Ваш пароль", -'erl_log_in_submit' => "Войти!", - -'er_useful_links' => "Полезные ссылки", -'er_lost_pass' => "Восстановление забытого пароля", -'er_register' => "Регистрация нового пользователя", -'er_contact_admin' => "Связь с администрацией форума", -'er_help_files' => "Разделы помощи", - -'no_archive_messages' => "По указанным критериям личных сообщений не найдено. Расширьте критерии и повторите попытку.", - -'no_delete_post' => "Невозможно удалять первое сообщение темы. Для удаления темы, выберите «Удалить тему» в опциях модератора, в нижней части темы.", -'exp_text' => "Обнаружена ошибка. Если вам неизвестны причины ошибки, попробуйте обратиться к разделам помощи.", -'msg_head' => "Обнаружена ошибка:", - -'auth_no_mem' => "Не найдено ни одного пользователя по введенному вами id пользователя. Дважды проверьте URL, по которому Вы вошли или данные, введенные в эту форму. Если ошибка будет повторяться, обратитесь к администрации форума.", -'auth_key_wrong' => "Это неверный ключ подтверждения для этого пользователя. Дважды проверьте URL, по которому вы вошли, или данные, введенные в эту форму. Если ошибка будет повторяться, обратитесь к администрации форума. Если вы проходите процедуру подтверждения не сразу, то возможно ваша учетная запись уже удалена.", -'auth_no_key' => "Неверная активация учетной записи. Дважды проверьте введенные вами данные. Если вы проходите процедуру подтверждения не сразу, то возможно ваша учетная запись уже удалена.", - -'email_addy_mismatch' => "Введенные e-mail адреса не совпадают, вернитесь назад, проверьте введенные вами данные и попробуйте снова.", - -'lp_no_pass' => "В базе не обнаружено нового пароля для этой учетной записи. Обратитесь к администрации форума для помощи.", - -'val_key_present' => "Эта учетная запись не прошла предыдущую активацию для новой регистрации, забытого пароля или изменения e-mail адреса. Перед продолжением, необходимо завершить предыдущую активацию. Если вы считаете это ошибкой, обратитесь к администрации форума для разрешения проблемы.", - -'complete_form' => "Вы должны заполнить все поля формы. Вернитесь назад, проверьте введенные данные и попробуйте снова.", - -forum_no_access => "Вы не имеете прав чтения этого форума. Если данный форум защищен паролем, то вы должны авторизоваться в нем, зайдя в него с главной страницы форума.", -name_too_long => "Введенное имя пользователя слишком длинное.", -msg_blocked => "Этот пользователь не желает принимать личные сообщения.", -no_msg_title => "Необходимо ввести заголовок письма.", -reg_link => "Зарегистрироваться!", -wrong_pass => "Введенный пароль неверный. Повторите попытку.", -poll_no_guests => "Гости не могут голосовать.", -no_such_user => "Пользователя с таким именем не существует. Вернитесь назад и дважды проверьте введенные вами данные.", -search_no_input => "Необходимо ввести ключевое слово для поиска!", -stf_no_msg => "Необходимо ввести текст письма", -invite_no_name => "Вы должны ввести ваше имя", -poll_none_found => "Невозможно найти данный опрос", -no_search_id => "Невозможно найти файл с этим id, повторите попытку", -no_guest_new_topics => "Администратор форума запретил гостям писать в этом форуме. Если вы зарегистрированы, авторизуйтесь.", -no_user => "Невозможно найти такого пользователя.", -no_search_words => "Вы не ввели ключевых слов для поиска, либо введенные вами ключевые слова содержат очень много символов.", -invalid_login => "Ошибка авторизации. Неверное имя пользователя или пароль. Вернитесь назад и дважды проверьте введенные вами данные. Не забывайте, что имя пользователя и пароль, чувствительны к регистру, к примеру «ПаРОлЬ» отличается от «пароль»", -web_too_long => "Введенный вами адрес сайта слишком длинный.", -stf_no_email => "Необходимо ввести e-mail адрес человека, которому Вы отправляете эту страницу", -mem_id_wrong => "Ваш ID пользователя в неправильном формате.", -forum_off => "Этот форум закрыт", -no_newer => "Нет тем, новее этой", -poss_hack_attempt => "Форум предполагает, что это попытка взлома. Данное действие уже записано в журнале администратора форума и он будет уведомлен по e-mail", -not_logged_in => "Вы не авторизованы", -int_too_long => "Введенный текст ваших интересов слишком большой.", -no_to_member => "Такого пользователя не обнаружено в базе данных. Проверьте орфографию введенного имени.", -invalid_ext => "В этом форуме запрещено использовать такой формат для изображений. Правильный формат: http://www.domain.com/picture.gif, неправильный формат: http://www.domain.com/picture.one.gif", -subject_long => "Заголовок письма слишком длинный", -move_already_moved => "Это оригинал перемещенной темы и ее невозможно переместить снова. Если вы хотите переместить эту тему, переместите ее сначала в предыдущий форум.", -cookie_error => "Произошла ошибка cookie, авторизуйтесь снова", -no_attach => "В этом форуме запрещена загрузка файлов", -no_aol => "У этого пользователя некорректное имя в AOL", -name_too_short => "Введенное вами имя пользователя слишком короткое", -missing_files => "Некоторые требуемые файлы отсутствуют. Если вы хотели просмотреть тему, возможно эта тема перемещена или удалена. Вернитесь назад и попробуйте снова.", -post_too_long => "Ваше сообщение слишком длинное. Укоротите его.", -locked_topic => "Эта тема закрыта", -flash_url => "Это неверный URL для Flash", -profile_guest => "Не найдено такого пользователя в базе данных. Возможно пользователь удален.", -stf_no_subject => "Вы должны ввести заголовок письма", -not_icq_number => "У этого пользователя некорректный номер ICQ", -rp_noemail => "Необходимо ввести корректный e-mail адрес для отправки этого сообщения", - -upload_to_big => "Размер загружаемого файла превышает норму, установленную администратором для вашей группы.", - - -user_exists => "У нас уже есть пользователь с таким именем. Выберите другое имя.", -no_msg_chosen => "Вы не выбрали ни одного письма. Вы можете выбрать письма, отметив окошки с правой стороны каждого письма", -error_back => "Вернуться назад", -log_in_yes => "Вы вошли как ", -flash_number => "Высота и ширина для Flash должны быть численными", -no_avatar => "Администратор запретил использование аватаров на форуме.", -poll_you_voted => "Вы уже проголосовали в этом опросе", -not_url_photo => "Это неверный URL для вашей фотографии. Динамические страницы в тэгах IMG запрещены", -no_action => "Не регулируйте сгенерированные URL. Вернитесь назад и попробуйте снова.", -no_guest_posting => "Администратор запретил гостям писать в этом форуме. Если вы уже зарегистрированы, войдите", -invalid_email => "Необходимо ввести СУЩЕСТВУЮЩИЙ e-mail адрес", -no_start_polls => "Вы не можете создавать опросы", -move_no_forum => "Вы не выбрали форум для перемещения", -no_use_messenger => "Вам запрещено использовать личные сообщения на форуме", -no_msg => "Вы должны ввести текст письма", -no_dynamic => "Использование [IMG] тэгов для динамических страниц запрещено", -no_rules_show => "Нет правил для этого форума", -membername_none => "Не найдена учетная запись с таким именем пользователя", -log_in_now => "Войти!", -no_subject => "Вы не ввели заголовок письма", -pass_too_long => "Введенный пароль слишком длинный", -username_short => "Введенное вами имя пользователя слишком короткое", -already_sub => "Вы уже подписаны на эту тему или форум.", -forgot_pass => "Забыли пароль?", -no_older => "Нет тем, старее этой", -stf_no_name => "Вы должны ввести имя человека, кому отправляете эту страницу", -no_view_topic => "У вас нет прав просмотра этой темы", -IBForums_error => "Ошибка форума", -no_replies => "У вас нет прав публиковать ответ в эту тему", -error_title => "Сообщение форума", -no_chosen_member => "Вы не ввели или не выбрали имя для отправки сообщения!", -pass_blank => "Вы не ввели пароль", -flood_control => "На форуме включена блокировка массовых сообщений (для предотвращения возможных атак на сервер), необходимо подождать <#EXTRA#> секунд для публикации повторного ответа в тему или открытия новой темы", -no_message => "Вы не ввели текст письма", -member_in_add_book => "Этот пользователь уже сохранен в вашем списке контактов", -posting_off => "Вам запрещено отправлять сообщения", -move_same_forum => "Невозможно переместить тему в тот же форум", -error_txt => "Произошла ошибка", -rp_nomsg => "Вы должны ввести текст жалобы для модератора", -too_many_images => "Количество изображений в вашем сообщении, превышает норму допустимого", -invite_no_email => "Вы должны ввести свой e-mail адрес", -not_op => "У вас нет прав редактирования этого сообщения", -no_poll_reply => "Автор опроса, создал эту тему только для голосований", -request_hack => "Некоторые данные не соответствуют нашим записям. Это действие рассмотрено, как попытка взлома!", -photo_too_long => "Поле фотографии слишком длинное.", -avatar_invalid_ext => "Это неверное расширение файла", -no_reply_polls => "Вы не можете голосовать в этом опросе", -no_post => "Вы должны ввести сообщение", -calendar_not_all => "Полностью заполните дату рождения, либо вообще ничего не заполняйте, так как невозможно обрабатывать частично введенные данные.", -not_authorised => "Ваша учетная запись пока не активирована. Проверьте e-mail, указанный вами при регистрации.", -no_email_stored => "Данный e-mail адрес не найден в нашей базе данных", -topictitle_too_long => "Введенное вами название темы слишком длинное", -no_such_msg => "Такого сообщения не существует", -wrong_name => "Невозможно найти имя пользователя, соответствующее введенному вами имени (возможно это ошибка сессии или авторизации).", -too_many_emoticons => "Количество смайлов в вашем сообщении превышает норму. Уменьшите количество смайлов в сообщении", -no_topic_title => "Вы должны ввести название темы", -guest_abuse => "Невозможно определить статус вашего сообщения. Войдите заново, либо — если вы гость, попробуйте отправить сообщение снова", -password_no_match => "Пароль не соответствует введенным данным", -already_logged_in => "Этот пользователь уже авторизован!", -no_guests => "Эта функция запрещена для гостей", -no_permission => "У вас нет прав использования этой функции. Если вы не авторизованы, сделайте это, используя форму авторизации ниже, а затем повторите попытку, если это доступно.", -server_too_busy => "Сервер не может в данное время выполнить ваш запрос. Попробуйте позже.", -loc_too_long => "Введенное вами место жительства слишком длинное.", -poll_you_created => "Вы автор этого опроса", -go_back => "Вернитесь назад и исправьте ошибку", -log_in_no => "Вы НЕ авторизованы", -pass_too_short => "Введенный вами пароль слишком короткий", -no_register => "Регистрация отключена", -move_no_topic => "Этой темы нет в нашей базе данных, либо она была удалена", -flash_too_big => "Ширина или высота, либо оба размера Flash ролика, добавленного вами в сообщение, превышают норму", -end_subs_value => "Вы должны ввести числовые данные в поле «Окончание подписки»", -no_starting => "У вас нет прав открытия тем в этом форуме", -no_search_forum => "Вы не указали ни одного форума для поиска, либо вы указали защищенный паролем форум. Если это так, то вам необходимо авторизоваться в запароленном форуме, прежде чем вы сможете воспользоваться поиском там.", -not_registered => "Гостям запрещено использовать это действие. Если вы зарегистрированы, авторизуйтесь", -no_icq => "У этого пользователя некорректный номер ICQ", -not_aol_name => "Это неверное имя в AOL", -private_email => "Этот пользователь скрыл свой e-mail адрес", -user_agent_no_match => "Вы используете не тот компьютер, с которого авторизовывались.", -poll_add_vote => "Голосовать!", -you_are_banned => "Вы заблокированы на этом форуме", -incorrect_use => "Некорректный запрос. Вернитесь назад и попробуйте снова", -no_search_results => "По вашему запросу ничего не найдено. Расширьте критерии поиска и попробуйте снова.", -request_error => "Произошла ошибка. Ссылка, по которой вы вошли является неполной. Проверьте Вашу ссылку на целостность. Это могло произойти, так как некоторые серверы e-mail обрезают длинные ссылки. Повторите попытку.", -not_yahoo_name => "Это некорректное имя в YAHOO", -stf_invalid_email => "Введенный вами e-mail адрес имеет неправильный формат", -pass_link => "Нажмите сюда!", -no_email => "Вы должны ввести e-mail адрес для запроса деталей авторизации", -max_message_from => "Ваш ящик с личными сообщениями переполнен. Вы достигли максимального количества личных сообщений на форуме. Вам нужно что-то удалить.", -cant_use_feature => "Вам запрещено использование этой функции форума", -memid_too_long => "Поле id пользователя слишком длинное", -moderate_no_permission => "Вам запрещено использование этой функции", -too_many_img => "Количество изображений превышает норму допущенного", -no_sub_id => "Невозможно найти подписку на тему", -max_message_to => "Ящик с личными сообщениями переполнен, он не может принимать новые личные сообщения.", -error_not_registered => "Не зарегистрированы? ", -username_long => "Введенное имя пользователя слишком длинное", -memid_too_short => "Поле id пользователя слишком короткое", -sig_too_long => "Ваша подпись слишком длинная.", -no_username => "Вы должны ввести имя пользователя", -no_avatar_selected => "Не выбрано ни одного аватара. Вернитесь назад и исправьте ошибку.", -incorrect_avatar => "Это неправильный аватар", -avatar_invalid_url => "Введенный URL для вашего аватара имеет некорректный формат, либо ссылка является «мертвой».", -rp_noname => "Вы должны ввести Ваше имя перед отправкой этого сообщения", -illegal_img_ext => "Запрещено использовать такое расширение для тэгов картинок", -cannot_remove_dir => "Невозможно удалить эту папку", -email_exists => "Данный e-mail адрес не может быть использован, так как такой e-mail уже существует", -please_complete_form => "Заполните все поля, перед подачей запроса", -invite_no_email_f => "Вы должны ввести e-mail адрес друга", -move_no_source => "Не выбран исходящий форум", -log_in => "Не авторизованы?", -data_incorrect => "Одно из полей содержит неправильные данные. Проверьте дважды введенные вами URL или данные", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_forum.php b/upload/cache/lang_cache/ru/lang_forum.php deleted file mode 100644 index ff4f1527..00000000 --- a/upload/cache/lang_cache/ru/lang_forum.php +++ /dev/null @@ -1,159 +0,0 @@ - "Переход по страницам", - - -// 2.1: NEW - -'forum_options' => 'Опции форума', -'moderator_options' => 'Опции модератора', -'js_clickhold' => 'Нажмите и держите для изменения заголовка', - -// 2.1 CHANGED - -'mark_as_read' => "Отметить этот форум прочитанным", -'mark_as_read2' => "Отметить этот форум прочитанным, и на главную...", - - -'announce_row' => "Объявление", -'mod_showallinvisible' => 'Показать все скрытые темы', -'mod_showallposts' => 'Показать все темы со скрытыми сообщениями', -'mod_resync' => 'Пересчитать все в форуме', -'mod_prune' => 'Сокращение / массовое перемещение', - -'click_for_mod' => 'Для выбора этой темы для модерирования нажмите сюда', - -'back_to_forum' => 'Вернуться в форум', -'cpt_close' => "Закрыть", -'cpt_open' => "Открыть", -'cpt_pin' => "«Поднять»", -'cpt_unpin' => "«Опустить»", -'cpt_move' => "Переместить", -'cpt_delete' => "Удалить", -'cpt_merge' => "Соединить", -'cpt_approve' => "Опубликовать", -'cpt_unapprove' => "Скрыть", -'f_go' => "отмеченные темы", -'cp_js_delete' => "Вы действительно хотите удалить эти темы?", -'mm_title' => "Мульти-модерация", -'topic_attach' => 'прикрепленные файлы: Просмотр', -'attach_title' => 'Прикрепление', -'attach_size' => 'Размер', -'attach_post' => 'Сообщение №', -'attach_page_title' => "Прикрепления", -'attach_post_date' => 'Добавлено', - -//1.2 - -'post_modq' => "В этом форуме имеются ожидающие одобрения темы/сообщения.", -'post_click' => "Перейти в панель модерации?", -//--- - -'pinned_start' => "Важные темы", -'regular_topics' => "Темы форума", -'announce_start' => "Объявления", - -'ft_title' => "Подписаться на форум", - -'active_users_detail' => "гостей: %s, скрытых пользователей: %s", -'active_users_title' => "%s чел. просматривают этот форум", -'active_users_members' => "Пользователей: %s", - - -'enter_keywords' => "Введите слово", -'search_forum' => "Найти в форуме", - - -pm_open_new => "Открытая тема (есть новые ответы)", -pm_open_no => "Открытая тема (нет новых ответов)", - - -pm_hot_no => "Горячая тема (нет новых ответов)", -pm_hot_new => "Горячая тема (есть новые ответы)", - -pm_poll => "Опрос (есть новые голоса)", -pm_poll_no => "Опрос (нет новых голосов)", - -pm_locked => "Закрытая тема", -pm_moved => "Тема перемещена", - -last_post_by => "Посл. сообщение:", - -h_topic_title => "Название темы", -last_updated => "Последнее обновление:", -logged_in => "Вы успешно авторизовались в этом форуме", -forum_jump => "Переход по форумам", -re_order_forum => "Сортировка этого форума", -h_last_action => "Последнее сообщение", -no_topics => "Не найдено ни одной темы. Возможно в этом форуме нет тем, либо они более стары и не соответствуют текущей сортировке.", -topic_sp_pages => "Страницы", - - - -show_today => "За: сегодня", -show_5_days => "За: 5 дней", -show_15_days => "За: 15 дней", -show_25_days => "За: 25 дней", -show_20_days => "За: 20 дней", -show_10_days => "За: 10 дней", -show_60_days => "За: 60 дней", -show_30_days => "За: 30 дней", -show_90_days => "За: 90 дней", -show_year => "За: 365 дней", -show_all => "За: все время", -show_7_days => "За: 7 дней", - - -sort_by_date => "По: последн. сообщению", -sort_by_last_poster => "По: последн. автору", -sort_by_poster => "По: автору темы", -sort_by_replies => "По: ответам", -sort_by_topic => "По: названиям темы", -sort_by_start => "По: дате открытия", -sort_by_attach => "По: присоединениям", -sort_by_views => "По: просмотрам", - -descending_order => "Я-А", -ascending_order => "А-Я", - -'topicfilter_all' => 'Темы: Все', -'topicfilter_open' => 'Темы: Открытые', -'topicfilter_hot' => 'Темы: Горячие', -'topicfilter_poll' => 'Темы: Опросы', -'topicfilter_locked' => 'Темы: Закрытые', -'topicfilter_moved' => 'Темы: Перемещенные', -'topicfilter_istarted' => 'Темы: Созданные мною', -'topicfilter_ireplied' => 'Темы: С моими ответами', - - -single_page_forum => " ", -h_topic_starter => "Автор темы", -f_pass_submit => "Войти", - -enter_pass => "Пароль форума", - - -need_password => "Введите пароль форума", - -need_password_txt => "Этот форум защищен паролем!
Вы должны ввести верный пароль для доступа в этот форум. Проверьте и убедитесь, что Ваш браузер поддерживает временные cookies.", - - - -topic_started_on => "Тема создана:", - - - -h_replies => "Ответов", - -multi_page_forum => "Страниц:", -h_hits => "Просмотров", - - -sort_submit => "ок", - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_global.php b/upload/cache/lang_cache/ru/lang_global.php deleted file mode 100644 index 2f6ce265..00000000 --- a/upload/cache/lang_cache/ru/lang_global.php +++ /dev/null @@ -1,277 +0,0 @@ - "Файловый архив", - -// registered -'licensed_to' => "Лицензия зарегистрирована на: ", - -//2.1.3 -'ajax_topicstate' => "Измененное состояние темы (открыта/закрыта) при просмотре форума", -'ajax_topicdesc' => "Изменено описание темы при просмотре форума", -'ajax_topictitle' => "Изменен заголовок темы при просмотре форума", - -// For BBCODE -'bbcode_wrap_html' => "HTML", -'bbcode_wrap_sql' => "SQL", -'bbcode_wrap_quote' => "Цитата", -'bbcode_wrap_code' => "Код", -'bbcode_img_alt' => "Изображение", - - -//2.1.2 -'mailto_erroronforums' => "Ошибка на форумах", -'stats_sec' => "сек.", -'stats_queries' => "запросов", -'myass_chars' => "Вы ввели слишком мало символов для поиска", -'global_guestname' => "Гость", - -//2.1.2 - LOFI Additions -'lofi_noperm' => "Вы не имеете доступ к просмотру этой страницы", -'lofi_attach' => "Нажмите для просмотра прикрепленного файла", -'lofi_fullversion' => "Полная версия: ", -'lofi_maintext' => "Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, ", -'lofi_clickhere' => "нажмите сюда", -'lofi_posts' => "сообщений", -'lofi_replies' => "ответов", -'lofi_please' => "Страницы:", -'lofi_pinned' => 'Важно: ', -'lofi_moved' => 'Перемещено: ', - - -//2.1 - -'global_unregistered' => "Гость", -'global_open_menu' => "Открыть меню", -'global_pm_title' => 'Новое личное сообщение', -'global_pm_sent' => 'Отправлено', -'global_pm_read' => 'Прочитать', -'global_pm_from' => 'От', -'global_page_jump' => 'Перейти к странице', -'ajax_loading_msg' => 'Загрузка. Пожалуйста, подождите...', -'au_reading' => '(%s) — читает...', -'au_posting' => '(%s) — отвечает...', - - -'global_forum_title' => "Форумы", -'rss_calendar' => 'Календарь:', -'myass_title' => 'Помощник', -'myass_drag' => 'Нажмите и задержите для перемещения этого окна', - -'time_seconds_ago' => '%s секунд назад', -'time_less_minute' => 'минуту назад', -'time_minutes_ago' => '%s минут назад', -'time_less_hour' => 'час назад', -'time_hours_ago' => '%s часов назад', -'time_less_day' => 'день назад', -'time_days_ago' => '%s дней назад', -'time_less_week' => 'неделю назад', -'time_weeks_ago' => '%s недель назад', - - -// build #003 -'program_code' => "Код", -'list' => "Список", -'queries' => "запросов", -'sec' => "сек.", - -//2.0.2 -'blog'=> "Блоги", -'myblog'=> "Ваш блог", - -//2.0 - -'pmp_title' => "Вам новое личное сообщение от", -'pmp_read_in_window' => "Открыть в этом окне", -'pmp_read_new_window' => 'Открыть в новом окне', -'pmp_part1' => ', пользователь группы', -'pmp_part2' => ', имеет', -'pmp_part3' => 'сообщений на форуме.', - -'global_lofi' => "Текстовая версия", -'global_timeisnow' => "Сейчас", -'global_skinselector' => "Выбор стиля", -'global_language' => "Язык", -'gallery' => "Галерея", -'time_today' => "Сегодня", -'time_yesterday' => "Вчера", -'tpl_gotolast' => 'На последнюю страницу', -'tpl_gotofirst' => 'На первую страницу', -'tpl_next' => "Следующая страница", -'tpl_prev' => "Предыдущая страница", -'resend_val' => 'Проблемы с активацией?', -'email_address' => 'E-mail адрес', - -/// - -//rc1 - -'fj_redirect' => " (Переадресация форума)", -'tb_toplist' => "Топ", - -//Added in 1.2 - -'tpl_jump' => "Перейти на страницу...", -'tpl_q1' => "Введите номер страницы, на которую хотите перейти.", -'tpl_pages' => "страниц", - -'sf_bytes' => " байт", -'sf_mb' => " мегабайт", -'sf_k' => " килобайт", - -'bi_markread' => "Отметить форум прочитанным?", -'bi_markallread' => "Отметить все подфорумы прочитанными?", -'err_select' => "Выбрать все", - -'err_title' => "Данные сообщения успешно сохранены!", -'err_expl' => "Данные следующего сообщения успешно сохранены. Иногда случается, что при нажатии на кнопку «Назад» заполненные в поля данные теряются, поэтому вы можете скопировать текст и только потом вернуться на предыдущую страницу.", - - -'bbc_help' => 'BB-коды форума', - -'ml_revalidate' => "Отправка письма для активации повторно", -'tt_golast' => "К последнему сообщению", -'tt_gounread' => "К первому непрочитанному сообщению", -'tt_poll_vote' => "Проголосуйте в опросе", -'tt_poll_null' => "Просмотр результатов (вы будете лишены права голоса)", -'tt_poll_show' => "Просмотр результатов (перед добавлением вашего голоса)", -'tt_poll_svote' => "Вернуться назад и просмотреть ответы опроса", - - -'mb_disabled' => "Это меню отключено", - -'sj_title' => 'Перейти на сайт', -'sj_home' => 'Главная страница', -'sj_search' => 'Поиск', -'sj_help' => 'Помощь', -'er_links' => "Ссылки", - - -// Added in 1.1a - -'live_chat' => "Чат", - -// Added in B3 - -'fj_subforums' => 'подфорумы', -'ps_page' => "Страницы:", -'ps_first' => 'Первая', -'ps_last' => 'Последняя', -'ps_next' => 'Следующая', -'ps_previous' => 'Предыдущая', - -//--- End B3 additions --- - -'mod_cp' => "Панель модератора", - -'tb_help' => "Помощь", -'tb_search' => "Поиск", -'tb_mlist' => "Пользователи", -'tb_calendar' => "Календарь", - -'gzip_on' => "GZIP включен", -'gzip_off' => "GZIP выключен", - -'l_qb' => 'Помощник', -'view_new_posts' => "Новые сообщения", - -'your_cp' => "Личные данные", - - -'bb_tool_tip' => "Обзор новых сообщений со времени вашего последнего посещения, список администраторов и т.д.", -'cp_tool_tip' => "Изменение личных данных, работа с личными сообщения и т.д.", - - -'find_user_names' => "Поиск по именам", -'opens_new_window' => "(открыть в новом окне)", - - -'warn_offline' => "(Отключён)", - -'all_emoticons' => "Показать все", - -'jmp_go' => "ОК", -'forum_jump' => "Переход по форумам", - -'yes' => "Да", -'no' => "Нет", - -'ct_size' => "РАЗМЕР", -'ct_lrg' => "Большой", -'ct_sml' => "Маленький", -'ct_lest' => "Огромный", - -'ct_font' => "ШРИФТ", -'ct_arial' => "Arial", -'ct_times' => "Times", -'ct_courier' => "Courier", -'ct_impact' => "Impact", -'ct_geneva' => "Geneva", - -'ct_color' => "ЦВЕТ", -'ct_blue' => "Синий", -'ct_red' => "Красный", -'ct_purple' => "Фиолетовый", -'ct_orange' => "Оранжевый", -'ct_yellow' => "Желтый", -'ct_grey' => "Серый", -'ct_green' => "Зеленый", - -'msg_full' => "Ящик с личными сообщениями ПЕРЕПОЛНЕН!", - -ba_edit => "Изменить", -ba_delete => "Удалить", - -submit_li => "Войти", -quote_text => "Цитата", -pass => "Пароль", -thanks => "Спасибо", -forum_read => "Форум отмечен прочитанным", -guest_stuff => "Здравствуйте, гость", -offline_title => "Форум закрыт", -you_last_visit => "Ваше последнее посещение:", -code_sample => "Образец кода", -transfer_you => "Подождите, сейчас вы будете перемещены...", -new_posts => "Новые сообщения", -admin_login => "Вход администратора", -you_running_time => "Ваше последнее действие:", -admin_cp => "Админцентр", - -M_1 => "Январь", -M_2 => "Февраль", -M_3 => "Март", -M_4 => "Апрель", -M_5 => "Май", -M_6 => "Июнь", -M_7 => "Июль", -M_8 => "Август", -M_9 => "Сентябрь", -M_10 => "Октябрь", -M_11 => "Ноябрь", -M_12 => "Декабрь", - -D_0 => "Воскресенье", -D_1 => "Понедельник", -D_2 => "Вторник", -D_3 => "Среда", -D_4 => "Четверг", -D_5 => "Пятница", -D_6 => "Суббота", - - - -name => "Имя", -register => "Регистрация", -'logged_in_as' => "Вошли как: ", - -msg_new => "Личных сообщений: %s", -offline => "Форум временно закрыт", -log_out => "Выход", -dont_wait => "Или нажмите сюда, если не хотите ждать", -stand_by => "Подождите...", -your_messenger => "Личные сообщения", -log_in => "Вход", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_help.php b/upload/cache/lang_cache/ru/lang_help.php deleted file mode 100644 index dc9bdc1b..00000000 --- a/upload/cache/lang_cache/ru/lang_help.php +++ /dev/null @@ -1,17 +0,0 @@ - \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_legends.php b/upload/cache/lang_cache/ru/lang_legends.php deleted file mode 100644 index 5329b345..00000000 --- a/upload/cache/lang_cache/ru/lang_legends.php +++ /dev/null @@ -1,32 +0,0 @@ - "Пример", -'bbc_ex2' => "Нажмите сюда!", -'bbc_title' => "BB коды форума", -'bbc_intro' => "Что такое BB коды форума?

Они предназначены для быстрого добавления различного форматирования текстов сообщений.
Ниже представлено описание этих кодов.", -'bbc_before' => "До", -'bbc_after' => "После", - -'emo_title' => "Смайлы", -'emo_type' => "Код", -'emo_img' => "Картинка", - -'fu_title' => "Поиск пользователей", -'fu_close_win' => "Закрыть окно", -'fu_enter_name' => "Введите имя пользователя (полностью или частично)", -'fu_search_but' => "Найти!", - -'fu_error' => "Ошибка", - -'fu_no_data' => "Вы обязаны ввести имя пользователя", -'fu_no_match' => "По вашему запросу ничего не найдено", -'fu_kc_loads' => "Найдено слишком большое количество данных. Они не будут отображены. Вам необходимо вводить более точный запрос", -'fu_back' => "Назад", -'fu_add_mem' => "Добавить пользователя в поле", -'fu_add_desc' => "Выберите имя из выпадающего меню и нажмите на кнопку, для добавления в поле", - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_login.php b/upload/cache/lang_cache/ru/lang_login.php deleted file mode 100644 index c94a2807..00000000 --- a/upload/cache/lang_cache/ru/lang_login.php +++ /dev/null @@ -1,70 +0,0 @@ - "Внимание!", -'wrong_auth' => "Имя пользователя и пароль неверны", - - -// build #003 -'attention' => "Внимание!", - -'logged_in' => "Вы успешно авторизовались и сейчас будете перемещены на главную страницу форума", -'not_logged_in' => "Вы не авторизовались и сейчас будете перемещены на страницу авторизации", - -'reg_log_in' => "Вы зарегистрировались и авторизовались и сейчас будете перемещены на главную страницу форума", -'reg_not_log_in' => "Вы зарегистрировались и сейчас будете перемещены на страницу авторизации", - -'email_log_in' => "Ваш e-mail адрес успешно изменен. Сейчас вы будете перемещены на главную страницу форума.", -'email_not_log_in' => "Ваш e-mail адрес успешно изменен. Сейчас вы будете перемещены на страницу авторизации", - -'pass_log_in' => "Ваш пароль успешно изменен. Сейчас вы будете перемещены на главную страницу форума.", -'pass_not_log_in' => "Ваш пароль успешно изменен. Сейчас вы будете перемещены на страницу авторизации.", - -'need_validation' => "Вы еще не активировали свою учетную запись!
Перед авторизацией на форуме, проверьте свою электронную почту, на которую вам было отправлено письмо с инструкцией по активации учетной записи.
Отправить письмо для активации повторно?", - - -login_text => "Перед авторизацией, вы должны зарегистрироваться
Если вы не зарегистрированы, это можно сделать, нажав на ссылку «Регистрация» в верхней части форума.", - -force_login => "Администрация форума требует авторизации всех пользователей, чтобы просматривать форум", -wrong_name => "Невозможно найти пользователя с введенными вами данными.", -please_log_in => "Введите ниже ваши данные для авторизации", -cookie_no => "Нет", - -options => "Опции", -wrong_pass => "Неверный пароль. Все пароли чувствительны к регистру", -admin_force_log_in => "Администрация форума требует авторизации всех пользователей", -log_in_submit => "Войти!", - -add_name => "Да, добавить меня к списку активных пользователей", -errors_found => "Обнаружены следующие ошибки:", -thanks_for_logout => "Вы вышли", - -forgot_pass => "Забыли пароль?", - -thanks_for_login => "Вы вошли как:", - -log_out => "Выход", - -enter_name => "Имя пользователя (login)", -enter_pass => "Пароль", -'enter_email' => "E-mail", - -'rememberme' => "Запомнить вас на этом компьютере?", -'notrecommended' => "Если поставить галочку, вы будете входить в форум автоматически, без ввода пароля. Это может быть небезопасно, если этим компьютером пользуетесь не только вы.", -'form_invisible' => "Скрытность", -'anon_name' => "Не отображать вас в списке активных пользователей?", - - -pass_link => "Вы можете его восстановить!", - -privacy => "Скрытность, хотите быть видимым в списке активных пользователей?", - - -cookie_yes => "Да", -blank_fields => "Перед продолжением, введите ваше имя пользователя и пароль", -log_out_submit => "Выйти", -log_in => "Вход", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_mlist.php b/upload/cache/lang_cache/ru/lang_mlist.php deleted file mode 100644 index 369c9a43..00000000 --- a/upload/cache/lang_cache/ru/lang_mlist.php +++ /dev/null @@ -1,73 +0,0 @@ - "меньше, чем", -'bolshe_chem' => "больше, чем", - -'button_quickjump' => 'Имена начинаются с...', -'toggle_more' => 'Дополнительные параметры...', -'s_aim' => 'AIM содержит', -'s_yahoo' => 'Yahoo! содержит', -'s_icq' => 'ICQ содержит', -'s_msn' => 'MSN содержит', - -'s_posts' => 'Сообщений', -'s_joined' => 'Дата регистрации', -'s_lastpost' => 'Дата последнего сообщения', -'s_lastvisit' => 'Последний визит', - -'photo_only' => "Выводить только пользователей с фотографией?", - -'s_signature' => 'Подпись содержит', - - -'s_homepage' => 'Домашняя страница содержит', - -'s_name' => 'Имя пользователя', - - - -'s_dateformat' => '(ММ-ДД-ГГГГ)', -'title_search' => "Фильтры поиска", -'title_messengers' => 'Пейджеры', -'title_date' => 'Сортировка по сообщениям и датам', -'title_options' => "Дополнительные параметры", -'s_morethan' => 'позднее, чем', -'s_lessthan' => 'ранее, чем', -'s_begins' => "начинается с", -'s_contains' => "содержит", -'s_any' => 'Любое...', -//added 1.2 - -'member_photo' => "Фото", - - -'qs_go' => "ок!", -'pages' => "Страниц:", -'no_results' => 'Нет результатов', - - - -member_group => "Группа", - -sort_by_name => "имени пользователя", -member_joined => "Регистрация", - -sorting_text => "<#FILTER#>, сортировать по <#SORT_KEY#> в порядке <#SORT_ORDER#> с <#MAX_RESULTS#> результатами за страницу", -member_name => "Имя", -member_posts => "Сообщений", -multi_pages => "Несколько страниц", -sort_by_posts => "Количеству сообщений", -descending_order => "убывания", -ascending_order => "возрастания", -show_admin => "Администраторы", -member_level => "Уровень", -sort_submit => "ОК!", -show_all => "Все пользователи", -member_email => "E-mail", -sort_by_joined => "дате регистрации", -page_title => "Список пользователей", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_mod.php b/upload/cache/lang_cache/ru/lang_mod.php deleted file mode 100644 index bf921d30..00000000 --- a/upload/cache/lang_cache/ru/lang_mod.php +++ /dev/null @@ -1,276 +0,0 @@ - "Предупреждения", - -// IPB 2.1: New - -'mod_from' => "От:", -'mod_from_id' => "От темы с ID:", -'cp_batch_done' => "пока обработано %s тем. осталось %s ...", -'cp_optional' => 'Все эти настройки опциональны', -'cp_prune_days2' => "Нет ответов более, чем n дней", -'cp_prune_action2' => "Удалить или переместить в", -'cp_per_go' => "Выполнять действия по n тем за цикл", - -// IPB 2.1: Changed - -'mps_ignorepin' => "Не «поднятые» темы", - -'cpp_close' => "Закрыть это окно", - -'cp_prune_domove' => "Переместить темы!", -'cp_prune_dorem' => "Удалить темы!", - -'cp_prune' => "Управление темами форума: ", -'cp_prune_days' => "Удалить темы, которые", -'cp_prune_type' => "Соответствует типу тем", -'cp_pday_open' => "Только открытые темы", -'cp_pday_closed' => "Только закрытые темы", -'cp_pday_link' => "Только ссылки на перемещенные темы", -'cp_pday_all' => "Любые темы", -'cp_prune_replies' => "Имеющие менее [x] ответов
(не заполняйте, если хотите удалить темы независимо от количества ответов)", -'cp_prune_member' => "Созданные пользователем", -'cp_prune_sub1' => "Проверить форму", -'cp_prune_sub2' => "Сократить форум!", -'cp_action' => "Действие сокращения", -'cp_ac_prune' => "ТОЛЬКО СОКРАЩЕНИЕ, НЕ ПЕРЕМЕЩАТЬ", -'cp_prune_text' => "Вы можете удалить темы или переместить их в другой форум, выбранный в ваших критериях. Для перемещения тем, выберите форум расположения в выпадающем меню. Для удаления тем, выберите «ТОЛЬКО СОКРАЩЕНИЕ» в выпадающем меню. Перемещение тем не оставит ссылок на перемещенные темы в исходящем форуме", -'cp_pages' => "Страница: ", -'cp_error_no_mem' => "Невозможно определить пользователя с таким именем. Попробуйте снова", -'cp_error_no_topics' => "В этом форуме нет тем, ожидающих одобрения", -'cp_total_topics' => "Количество тем в этом форуме", -'cp_total_match' => "Количество удаляемых/перемещаемых тем", -'cp_check_result' => "Проверить результаты", -'cp_check_text' => "Продолжайте только в том случае, если вы довольны результатами. При нажатии на ссылку ниже, действие будет выполнено. Если вы все же хотите произвести какие-либо изменения, вернитесь назад и сделайте их.", - -// ---- - -'cp_remove_photo' => "Удалить фотографию пользователя?", -'cp_remove_av' => "Удалить аватар пользователя?", -'cp_edit_website' => "Сайт", -'cp_edit_location' => "Место жительства", -'cp_edit_signature' => "Подпись", -'cp_edit_interests' => "Интересы", -'cp_em_title' => "Редактирование пользователя", -'cp_vp_title' => 'Профиль', -'cp_em_sub_main' => "Основные данные пользователя", -'cp_em_sub_other' => "Дополнительные данные пользователя", -'cp_em_yahoo' => 'Yahoo! ID', -'cp_em_aim' => 'AIM ID', -'cp_em_icq' => 'ICQ номер', -'cp_em_msn' => 'MSN ID', -'cp_em_submit' => 'Сохранить изменения', - -'cm_title' => 'Объединение сообщений', -'cm_post' => 'Дата сообщений', -'cm_author' => 'Автор объединяемых сообщений', -'cm_text' => 'Текст объединяемых сообщений', -'cm_submit' => 'Объединить сообщения!', -'cm_attach' => 'Прикрепленные файлы объединяемых сообщений', -'cm_attach2' => 'Выберите прикрепленные файлы, которые желаете сохранить', -'cm_keep' => 'Сохранить!', -'cm_delete' => 'Удалить!', -'cmp_title' => "Перемещение сообщений", -'cmp_topic' => 'Введите номер (id) темы', -'cmp_topic2' => 'Необходимо ввести номер (id) темы, в которую вы хотите переместить выбранные сообщения.
(Подсказка: Вы можете просто скопировать ссылку на тему из адресной строки браузера и вставить сюда)', -'cmp_submit' => 'Переместить сообщения!', -'cmp_notopic' => 'Некорректная ссылка на тему, в которую вы хотите переместить сообщения. Вернитесь назад, перепроверьте введенные данные и попробуйте снова', - - -'redirect_modified' => 'Тема отредактирована!', -'cp_redirect_posts' => "Сообщения обновлены, переходим в тему", -'cp_results' => "Результат", -'cp_result_move' => "Количество перемещаемых тем: ", -'cp_result_del' => "Количество удаляемых тем: ", - -'cp_redirect_topics' => "Темы обновлены, переходим к списку тем", -'cp_tmove_start' => "Перемещение тем из форума:", -'cp_tmove_to' => "Выберите форум для перемещения", -'cp_tmove_end' => "Переместить выбранные темы", -'cp_ttitle' => "Перемещение тем", -'cp_resync' => "Форум обновлен", -'mpt_title' => "Установки сокращений", -'mpt_help' => "Помощь по сокращению", -'mpt_confirm' => "Подтверждение сокращения", - - -// Added 1.2 -'w_v_pages' => "Страница", -'w_v_warnby' => "Предупреждения изменены", -'w_v_none' => "Нет сохраненных записей для этого пользователя", -'w_v_add' => "Повышение уровня предупреждений", -'w_v_minus' => "Понижение уровня предупреждений", -'w_v_notes' => "Причина", -'w_v_warned_on' => "Дата поощрения/наказания", -'w_v_title' => "Журнал предупреждений пользователя", -'w_done_t' => "Результат обновления предупреждений", -'w_done_te' => "Предупреждения пользователя %s обновлены и записаны в журнале.", -'w_done_home' => "Вернуться на главную страницу форума", -'w_done_forum' => "Вернуться в форум", -'w_done_topic' => "Вернуться в тему", -'errors_found' => "Ошибка", -'we_no_reason' => "Вы обязательно должны ввести причину поощрения/наказания", -'we_no_subject' => "Вы не ввели заголовок письма-уведомления", -'pm_email_subject' => "Вам пришло новое личное сообщение", -'w_title' => "Центр предупреждений пользователя", -'w_restricted' => "Ограничение установлено. Оставшееся время пересчитано.", -'w_warnfor' => "Панель предупреждений пользователя", -'w_complete' => "Заполните обязательные поля формы", -'w_adjust_level' => "Действие с предупреждений", -'w_add' => "Повышение уровня предупреждений", -'w_remove' => 'Понижение уровня предупреждений', -'w_modq' => "Проверять модераторами все новые сообщения этого пользователя перед публикацией их?", -'w_modq_i' => "Проверять всегда", -'w_day' => "Дней", -'w_hour' => "Часов", -'w_resposts' => "Запретить пользователю отправлять сообщения", -'w_resposts_i' => "Запретить навсегда", -'w_suspend' => "Заблокировать пользователя", -'w_orfor' => "или на", -'w_susfor' => "Лишить прав на", -'w_reason' => "Введите причину", -'w_reason2' => "Эта секция обязательна к заполнению", -'w_contact' => "Отправить уведомление пользователю", -'w_c' => "Отправить на", -'w_c_subj' => "Заголовок письма", -'w_c_e' => "E-mail", -'w_c_p' => "Личное сообщение", -'w_submit' => "Изменить уровень предупреждений", -'w_contact2' => "Не заполняйте, если не хотите уведомлять пользователя", - -'mm_applied' => 'Мульти-модерация для темы %s установлена', -'pe_unused' => "Не использовано", - -// Added BETA 2: - -'pe_question' => "Вариант ответа", - - -'st_top' => "Разделение темы", -'st_explain' => "Разделение темы позволяет вам выбрать сообщения, для перемещения их в новую тему. Перед продолжением определите название, описание новой темы и форум расположения.
Внимание: Длинные сообщения будут возвращены для кодирования тэгов и сокращения их", -'st_forum' => "Форум для новой темы", -'st_submit' => "Разделить выбранные сообщения!", -'st_post' => "Просмотр сообщения", -'st_split' => "Перенести это сообщение!", -'st_top_bit' => "Автор %s — %s", -'st_redirect' => "Тема успешно разделена!. Сейчас вас переместит в форум", - -'th_title' => "История темы", -'th_topic' => "Название темы", -'th_desc' => "Описание темы", -'th_start_date' => "Тема создана", -'th_start_name' => "Автор темы", -'th_last_date' => "Последнее сообщение", -'th_last_name' => "Автор последнего сообщения", -'th_avg_post' => "Среднее количество сообщений в день", - -'ml_title' => "Журнал действий модератора", -'ml_name' => "Имя пользователя", -'ml_desc' => "Описание", -'ml_date' => "Дата", -'ml_none' => "Нет данных для этой темы", - - - -'mt_top' => "Объединение темы", -'mt_explain' => "Объединение тем позволяет перемещать все сообщения из одной темы в другую. Сообщения в новой теме будут отсортированы в хронологическом порядке. Опросы объединять невозможно.", -'mt_new_title' => "Название темы", -'mt_new_desc' => "Описание темы", -'mt_tid' => "Введите URL адрес темы, которую вы хотите объединить с этой.
(Подсказка: вы просто можете скопировать URL адрес из адресной строки браузера (при просмотре темы) и вставить сюда)", -'mt_submit' => "Объединить темы", -'mt_redirect' => "Темы успешно объединены. Сейчас вы будете перемещены в получившуюся тему", - - - -'ts_title' => 'Подписки на тему', -'ts_count' => 'Имеются %s пользователей, подписавшихся на эту тему. Вы хотите отписать их всех?', -'ts_submit' => "Отписать всех пользователей", -'ts_none' => "Нет пользователей, подписанных на эту тему.", -'ts_redirect' => "все пользователи отписаны от этой темы", - - - - - - - - - - - -'leave_link' => "Оставить ссылку на новую тему в исходящем форуме?", - -'yes' => "Да", -'no' => "Нет", - -'move_exp' => "Выберите входящий форум и метод перемещения", - -'pe_top' => "Редактирование опроса: ", -'pe_option' => "Опции опроса:", - -'pe_submit' => "Редактировать этот опрос", - -'pe_pollonly' => "Только опрос (запретить новые ответы?)", -'pe_yes' => "Да", -'pe_no' => "Нет", -'pe_done' => "Опрос отредактирован", - -'pd_top' => "Удаление опроса:", - -'pd_text' => "Подтвердите удаление опроса, нажатием на кнопку ниже", -'pd_submit' => "Удалить этот опрос", -'pd_redirect' => "Опрос удален", - - -/*UNPIN_TOPIC => "Опустить тему", -OPEN_TOPIC => "Открыть тему", -DELETE_TOPIC => "Удалить эту тему", -top_open => "Открытие темы в ", -top_close => "Закрытие темы в ", -MOVE_TOPIC => "Переместить тему", -CLOSE_TOPIC => "Закрыть тему", -final_rebuild => "<#DELETE_COUNT#> двойных сообщений удалено. Новый счетчик ответов установлен на <#REPLY_COUNT#>", -close_topic => "ПРИМЕЧАНИЕ: Не обязательно посылать сообщение — это дополнительный вариант", -post_optional => "ПРИМЕЧАНИЕ: Не обязательно посылать сообщение — это дополнительный вариант", -PIN_TOPIC => "«Поднять» тему", -DELETE_POST => "Удалить сообщения", -submit_open => "Открыть тему", -delete_old => "Опции исходящего форума:",*/ - - -post_deleted => "Сообщение удалено", - -top_edit => "Редактирование темы ", -submit_move => "Переместить тему", - -t_open => "Открыть тему", -t_edit => "Редактировать тему", -p_moved => "Тема перемещена", -p_pinned => "Важная тема", -t_delete => "Удалить тему", -top_move => "Перемещение темы ", -p_edited => "Тема отредактирована", - -edit_f_desc => "Описание темы", - -t_close => "Закрыть тему", -delete_topic => "Удаление темы. Продолжайте только в том случае, если Вы действительно хотите удалить эту тему. Больше никаких предупреждений не будет.", -move_from => "Переместить эту тему из", -p_deleted => "Тема удалена", -t_move => "Переместить тему", -edit_f_title => "Заголовок темы", -to => "в", -submit_close => "Закрыть тему", -p_closed => "Тема закрыта", -top_delete => "Удаление темы ", -p_opened => "Тема открыта", -edit_topic => "Редактирование данных темы", -p_pdeleted => "Сообщение удалено", -post_icon => "Иконки сообщения", -submit_edit => "Отредактировать тему", -submit_delete => "Удалить тему", -p_unpinned => "Тема опущена", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_msg.php b/upload/cache/lang_cache/ru/lang_msg.php deleted file mode 100644 index 0f530b45..00000000 --- a/upload/cache/lang_cache/ru/lang_msg.php +++ /dev/null @@ -1,244 +0,0 @@ - "Л.С.: ", -'on_textbit' => "", -'sentby_textbit' => "Отправлено от ", -'sentto_textbit' => "Отправлено к ", - - -// v2.1 - -'msg_ip_address' => 'IP адрес:', -'xml_go_inbox' => "Перейти во «Входящие»", - - -// build #003 -'check_all' => "Отметить все", - -'pma_title' => "Архив личных сообщений", -'cc_hide_users' => 'Скрыть имена копий от других?', - -// Added in 1.2 - -'arch_new' => "и более новые", -'arch_old' => "и более старые", - -'err_no_chosen_member' => "Необходимо либо вручную ввести полное имя пользователя, либо выбрать его из вашего списка контактов.", -'err_errors' => "Обнаружены следующие ошибки", -'err_no_title' => "Необходимо ввести заголовок личного сообщения.", -'err_no_msg' => "Необходимо ввести текст личного сообщения.", -'err_no_such_member' => "Нет такого пользователя. Проверьте введенное имя и повторите попытку.", - -'fd_text' => "Вы можете удалить ваши сохраненные личные сообщения. Выберите папку, которую хотите очистить, и нажмите на кнопку «Далее»
Внимание: Возврат назад будет невозможен. Дважды все проверьте перед продолжением.", -'fd_name' => "Папка", -'fd_count' => "Количество сообщений", -'fd_empty' => "Очистить?", -'fd_continue' => "Далее", -'fd_unsent' => "Неотправленные сообщения", -'fd_save_unread' => "Сохранить непрочитанные личные сообщения?", - -// Added in RC1 - -'msg_pages' => "Страниц", - -//--- - -'pm_email_subject' => "Новое личное сообщение", - -'tk_read_messages' => "Прочитанные сообщения", -'tk_read_desc' => "Эти сообщения уже прочитаны пользователями, которым они отправлены", -'tk_read_date' => "Дата прочтения", -'tk_unread_date' => "Дата отправки", -'tk_untrack_button' => "Удалить", - -'tk_unread_messages' => "Непрочитанные сообщения", -'tk_unread_desc' => "Эти сообщения пока еще не прочитаны пользователями, которым они отправлены. Вы можете удалить их прежде, чем они будут прочитаны.", - -'add_to_book' => "Добавить в контакты", -'vm_delete_pm' => "Удалить сообщение", -'vm_forward_pm' => "Переадресовать сообщение", -'vm_track_msg' => "Проследить за этим сообщением?", - -'vm_forward_text' => "Сообщение переадресовано от %s", - -'inbox_no_msg' => "Сообщение не обнаружено", - -'pm_reply_link' => "Ответить", - - -'pmpc_full_string' => "Ваши папки заполнены на <#PERCENT#>%", -'pmpc_info_string' => "Личных сообщений у вас: %s, из максимально возможных: %s", -'pmpc_unlimited' => "количество сообщений неограниченно", - -'pmpc_mark_read' => "Отметить прочитанные сообщения", -'pmpc_unmark_all' => "Снять все отметки", - -'pme_title' => "ОШИБКА", -'pme_none_sent' => "Это личное сообщение не отправлено", -'pms_send_later' => "Сохранить (для отправки позднее)", -'pms_redirect' => "это сообщение не отправлено, но сохранено (для отправки позднее)", - -'pms_saved_title' => "Сохраненные неотправленные сообщения", -'pms_message_to' => "Сообщение для", -'pms_cc_users' => "Копия пользователям", -'pms_saved_date' => "Дата сохранения", - -'pme_no_cc_user' => "Не найдено ни одного пользователя, чьи имена вы ввели в поле «Копия». Проверьте введенные данные и попробуйте снова.", -'pme_too_many' => "Вы не имеете прав отправки копии личных сообщений нескольким пользователям. Сократите список и попробуйте снова.", - -'pme_failed_nopm' => "Сообщение для %s не отправлено, так как его личный ящик отключен", -'pme_failed_maxed' => "Сообщение для %s не отправлено, так как у него переполнен личный ящик", -'pme_failed_nomem' => "Сообщение для %s не отправлено, так как пользователя с таким именем не существует!", -'pme_failed_block' => "Сообщение для %s не отправлено, так как %s не желает принимать личные сообщения", - - -'pm_preview' => "Предпросмотр", - -'pm_pre_button' => "Предварительный просмотр", - -'pmp_title' => "У Вас новое личное сообщение!", - -'pmp_get_last' => "Открыть сообщение в этом же окне", - -'pmp_string' => "Вам новое сообщение от: <#NAME#>, с заголовком: '<#TITLE#>'.
Отправлено — <#DATE#>.", - -'pmp_go_inbox' => "Перейти в папку «Входящие»", - -'pmp_ignore' => "Закрыть это окно", - -'pmp_thiswindow' => "Открыть сообщение в этом окне", - -'carbon_copy_title' => "Копия пользователям", -'carbon_copy_desc' => "Вы можете ввести %s имен в поле «Копия пользователям».

Одно имя на строку.", - - -'forum_jump' => "Переход по форумам", - -'author' => "Автор", -'m_pmessage' => "Сообщение", -'all_folders' => "Все папки", -'archive_title' => "Архивирование сообщений", -'archive_text' => "Выберите критерии архивирования.
Архивированные сообщения будут собраны в один архив и отправлены вам на e-mail вложенным письмом.", -'arc_folders' => "Какую папку архивировать?", -'arc_dateline' => "Архивировать сообщения, полученные за последние", -'arc_days' => "дней", -'arc_alldays' => "все", -'arc_delete' => "Удалить сообщения после архивации?", -'arc_yes' => "Да", -'arc_no' => "Нет", -'arc_submit' => "Выполнить", -'arc_complete' => "Процесс архивации успешно завершен.
Вы должны получить письмо на e-mail с вложенным архивом, содержащим <#NUM#> архивированных личных сообщений.", -'arc_comp_title' => "Архивирование завершено", - -'arc_email_subject' => "Архив с сообщениями", - -'arc_type' => "Создать архивный файл в виде", - -'arc_html' => "HTML страницы", -'arc_xls' => "Excel файла", - -'arc_max' => "Количество сообщений для архивации", - -t_book => "Список контактов", -prefs_title => "Настройки личного ящика", -m_posts => "Сообщений:", -from_title => "Сообщение", -message_from => "Отправитель", -mem_read_msg => "прочитал это сообщение", -no => "Нет", -read_rec_title => "Уведомлен о получении:", -delete_button => "Удалить", -from_date => "Дата (сначала старые)", -message_date => "Дата", -enter_a_name => "Имя пользователя", -to_whom => "Имена получателей", -prefs => "Установки", - -prefs_help => "Здесь вы можете изменить настройки вашего личного ящика.", -auto_sent_add => "Добавить копию этого сообщения в папку «Отправленные»", -sort_by => "Сортировать сообщения по", -member_added => "Пользователь добавлен в вашу список контактов", -move_button => "переместить в", -a_msg_no_new => "У вас нет новых сообщений", -can_contact => "Сообщения принимаются", -'send' => "Отправить сообщение", -sent_text => "Ваше сообщение с заголовком «<#MESSAGE_TITLE#>» успешно отправлено. Пользователь будет уведомлен о новом личном сообщении от вас.", -'welcome' => "Добро пожаловать в личный ящик", -cannot_contact => "Сообщения игнорируются", -member_name => "Имя", -viewing_message => "Просмотр сообщения:", -submit_send => "Отправить сообщение", -delete => "Удалить", - -send_header => " выберите имя из вашего списка контактов, либо введите имя вручную — кому вы хотите отправить личное сообщение", -yes => "Да", -goto_folder => "Перейти в папку", -enter_name => "ИЛИ введите имя здесь", -enter_message => "Введите текст сообщения", -prefs_submit => "Сохранить изменения", -allow_msg => "Разрешить пользователю отправлять вам личные сообщения?", -sent_on => "Отправлено", -sent_url => "Нажмите сюда для возврата в личный ящик", -address_list_empty => "Список контактов пуст", -msg_deleted => "Это сообщение удалено", -out_box => "Исходящие", -t_welcome => "Добро пожаловать в личный ящик", -max_msg => "Максимальный размер сообщения — <#MAX_MSG_SIZE#> килобайт", -sent_title => "Ваше сообщение отправлено", -submit_address_edit => "Изменить запись", -member_add => "Добавить пользователя", -move_or_delete => "или", -address_list => "Выберите из вашего списка контактов", -prefs_new => "Добавить новую папку", -selected_msg => "выбранные сообщения", -from_date_new => "Дата (новые вначале)", -address_title => "Ваш список контактов", -no_msg_chosen => "Вы не выбрали ни одного личного сообщения. Вы можете выбрать сообщения, отметив галочкой справа от каждого сообщения", -from_name => "Пользователь", -new_message => "Статус нового сообщения", - -address_current => "Пользователи, существующие в вашем списке контактов", -your_options => "Ваши опции", -send_title => "Отправка сообщения", -posted => "Отправлено", -msg_title => "Заголовок сообщения", -submit_address => "Добавить в контакты", -icon_read => "Прочитанные сообщения", -cannot_remove => "Невозможно удалить", -goto_submit => "ок!", -m_joined => "Регистрация:", -t_title => "Ваш Личный Ящик", -message_read_state => "Прочитано?", -other => "Другой", -enter_desc => "Введите краткое описание", -c_msg_full => "
ВНИМАНИЕ: ВАШИ ПАПКИ ПЕРЕПОЛНЕНЫ
Для возможности получения новых личных писемВы ДОЛЖНЫ удалить некоторые сохраненные сообщения из папок", -msg_body => "Сообщение", -dir_title => "Текущая папка ящика:", -saved_sent_msg => "Отправлено: ", -in_box => "Входящие", -address_none => "Список контактов пуст", -a_msg_new => "У вас <#NEW_MESSAGES#> новых личных сообщений!", -member_options => "Опции", -prefs_text_a => "Вы можете переименовать папки. Для удаления папки, необходимо удалить название папки. Помните, что вы не сможете удалить папку, если она содержит сообщения.", -edit => "Редактировать", -enter_block => "Опции", -prefs_text_b => "Вы можете создать дополнительные папки. Не используйте одинаковые названия папок.", -icon_unread => "Непрочитанные сообщения", -splash => "Итог", -current_sort => "Сообщения отсортированы по: ", -member_edit => "Вы можете отредактировать данные в списке контактов.", -contact => "Список контактов", -message_options => "Опции писем", -no_reply => "Вы не ответили на это сообщение", -c_msg_total => "У вас <#NUM#> писем во всех папках.", -read_rec_text => "Оригинальное сообщение отправлено:", -button_preview => "Предпросмотр", -m_group => "Группа:", -prefs_current => "Текущие папки", -message_to => "Это сообщение отправлено для", -message_title => "Заголовок сообщения", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_online.php b/upload/cache/lang_cache/ru/lang_online.php deleted file mode 100644 index e0d754e9..00000000 --- a/upload/cache/lang_cache/ru/lang_online.php +++ /dev/null @@ -1,47 +0,0 @@ - "Toп сайтов", -'s_by' => "Сортировать по: ", -'s_sort_key_click' => "Последним действиям", -'s_sort_key_name' => "Именам", -'s_sort_order_asc' => "В порядке возрастания", -'s_sort_order_desc' => "В порядке убывания", -'s_show_mem_guest' => "Показать только гостей", -'s_show_mem_reg' => "Показать только зарегистрированных", -'s_show_mem_all' => "Показать всех", -'s_go' => "Обновить", -WHERE_sf => "Просмотр форума:", -WHERE_sr => "Просмотр правил форума:", -WHERE_st => "Просмотр темы:", -WHERE_login => "Авторизуется...", -WHERE_post => "Отвечает в форум:", -WHERE_reg => "Регистрируется...", -WHERE_online => "Просмотр списка Кто в онлайне", -WHERE_members => "Просмотр списка пользователей", -WHERE_help => "Просмотр разделов помощи", -WHERE_search => "Использование поиска...", -WHERE_print => "Просмотр темы (версию для печати)", -WHERE_forward => "Отправка ссылки на тему на e-mail", -WHERE_msg => "Использование личного ящика", -WHERE_usercp => "Просмотр или изменение профиля", -WHERE_mail => "Связь с пользователем по e-mail", -WHERE_invite => "Сообщение другу о форуме", -WHERE_icq => "Связь с пользователем по ICQ", -WHERE_aol => "Связь с пользователем по AIM", -WHERE_profile => "Просмотр профиля пользователя", -WHERE_stats => "Просмотр статистики", -member_name => "Имя пользователя", -guest => "Гость", -board_index => "Просмотр главной страницы Форума", -n_a => "[ Н/О ]", -pages => "Страниц:", -'time' => "Время", -where => "Последнее действие", -user_ops => "Опции", -page_title => "Кто в онлайне", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_portal.php b/upload/cache/lang_cache/ru/lang_portal.php deleted file mode 100644 index bf9ef79c..00000000 --- a/upload/cache/lang_cache/ru/lang_portal.php +++ /dev/null @@ -1,54 +0,0 @@ - "Запросов к базе:", -'execution_time' => "Страница создана за:", - -'wbox_pm_string' => "%s новых сообщений", -'wbox_last_visit' => "Последний раз вы были на сайте %s", -'wbox_guest_reg' => "Для публикации новостей на сайте, вы должны %s", -'wbox_register' => "зарегистрироваться", -'wbox_g_username' => "Ваше имя", -'wbox_g_password' => "Пароль", -'wbox_g_login' => "Войти", -'wbox_guest_name' => "посетитель", -'wbox_welcome' => "Добро пожаловать", -'wbox_getnewposts' => "Новые сообщения", -'wbox_mycontrols' => "Личные данные", -'wbox_myassistant' => "Помощник", -'wbox_logout' => "Выход", -'pm_title' => "Личные сообщения", -'search_title' => "Поиск", -'search_go' => "Искать", -'search_advanced' => "Расширенный поиск", -'links_title' => "Навигация сайта", -'cskin_title' => "Стили", -'cskin_text' => "Выберите стиль", -'cskin_go' => "Изменить", -'online_title' => "Посетители", -'online_breakdown' => "Сейчас на сайте человек: %s", -'online_split' => "(пользователей: %s,гостей: %s)", -'poll_title' => "Опрос сайта", -'poll_total_votes' => "Всего голосов: %s", -'poll_voted' => "Вы уже проголосовали", -'poll_novote' => 'Вы не можете голосовать', -'poll_noguest' => 'Необходимо авторизоваться для голосования', -'poll_vote' => 'Голосовать', -'poll_finished' => 'Этот опрос уже завершен', -'poll_discuss' => 'Обсудить опрос', -'recent_title' => 'Последние новости', -'recent_read' => 'Просмотров', -'recent_comments' => 'Комментариев', -'discuss_title' => 'Последние обсуждения', -'article_postedby' => 'Автор %s — %s — %s комментариев', -'article_noreply' => 'Количество прочтений: %s, оставить %s', -'article_reply' => 'Количество прочтений: %s, последний %s от %s', -'article_comment' => 'комментарий', -'article_readmore' => 'читать далее', -'aff_title' => "Рекомендуемые ссылки", - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_post.php b/upload/cache/lang_cache/ru/lang_post.php deleted file mode 100644 index 53d2fa4f..00000000 --- a/upload/cache/lang_cache/ru/lang_post.php +++ /dev/null @@ -1,148 +0,0 @@ - "Для игнорирования вы выбрали все сообщения из:", - -//v2.1 NEW - -'qe_complete_edit' => "Применить исправления", -'qe_cancel_edit' => "Отменить исправления", - - -'attach_button' => 'Вставить в сообщение', -'attach_button_title' => 'Вставить в сообщение тэг для отображения прикрепленного файла в нужном месте в сообщении', -'picons_none' => '[ Без иконки ]', -'calendar_delete_t' => 'Проверьте это поле и нажмите на кнопку отправления для удаления этого событияы.', -'calendar_group_filter_t' => '
Выберите группы, которые могут видеть это событие (Администраторы уже выбраны) или оставьте пустым для того, чтобы все группы могли видеть событие.
Можно выбирать несколько групп', -'mod_open_time' => 'Выберите время открытия темы', -'mod_close_time' => 'Выберите время закрытия темы', -'mod_date_format' => 'ДД/ММ/ГГГГ', -'mod_time_format' => 'ЧЧ:ММ', -'post_optional' => '(Опционально)', -'poll_tt_add_question' => 'Добавить еще вопрос в опрос', -'poll_tt_add_choice' => 'Добавить вариант ответа', -'poll_tt_remove_question' => "Удалить вопрос из опроса", -'poll_tt_remove_choice' => "Удалить вариант ответа", -'poll_tt_confirm' => "Пожалуйста, подтвердите это действие", -'poll_tt_stat_lang' => "Вам разрешено еще <%1> вопросов с <%2> вариантами ответа на вопрос.", - -'poll_manage_link' => "Нажмите сюда для управления опросом в этой теме", -'poll_fs_title' => 'Заголовок опроса', -'poll_fs_content' => 'Содержание опроса', -'poll_fs_close' => 'Закрыть форму опроса', -'poll_fs_options' => 'Опции опроса', - -//v2.0 - -'upload_text' => "Прикрепление файлов
Максимально допустимый объем всех файлов:", -'upload_unlimited' => "размер неограничен", -'invalid_mime_type' => "Ошибка загрузки. У вас нет прав для загрузки файла с таким расширением.", -'upload_to_big' => "Общее дисковое пространство требует для всех загружаемых файлов больше, чем на каждое сообщение или глобальный лимит. Пожалуйста, уменьшите число или размер загружаемых файлов.", - -'pp_nohtml' => 'HTML выключен', -'pp_html1' => 'HTML включен — перевод строк вручную', -'pp_html2' => 'HTML включен — автоматический перевод строк', - -'button_add_attachment' => "Добавить файл!", -'attach_remove' => 'Удалить!', -'attach_space_left' => "Вы использовали %s места на жестком диске для прикрепляемых файлов к этому сообщению.
Вам осталось %s для этого сообщения.", -'custom_tags_incorrect' => "Ошибка использования BB кодов форума. Количество используемых вами открытых тэгов не соответствует количеству закрытых тэгов.", -'custom_tags_incorrect2' => "Ошибка использования BB кодов форума. Возможно вы неправильно использовали какой-то из тэгов, как, например, тэг [TAG], тогда как он должен использоваться в виде [TAG=] или наоборот.", - - -// - -// v1.2 -'enable_track' => "Включить уведомление на e-mail при ответах?", -'already_sub' => "Вы уже подписаны на ответы в этой теме", -'mod_pinclose' => "«Поднять» и закрыть тему", -'posting_poll' => "Сообщение к опросу", -'po_options' => "Опции сообщения", -'poll_tag_allowed' => "[URL] и [IMG] тэги разрешены", -'eu_keep' => "Сохранить текущие прикрепления", -'eu_delete' => "Удалить прикрепление", -'eu_new' => "Заменить на новое прикрепление", -'append_edit' => "Добавить надпись «Отредактировано...» в это сообщение?", -'edit_ops' => "Информация о редактировании", -'unreg_namestuff' => "Информация о госте", -'mod_options' => "После отправки сообщения...", -'mod_close' => "Закрыть эту тему", -'mod_move' => "Переместить эту тему", -'mod_pin' => "«Поднять» эту тему", -'mod_nowt' => "(ничего не делать)", -'msg_no_title' => "Необходимо ввести заголовок письма", -'tt_topic_settings' => "Тема", -'tt_options' => "Опции", -'tt_poll_settings' => "Опрос", -'tt_subject' => "Уведомление об ответах на подписанную тему", -'ft_subject' => "Уведомление о новых темах на подписанный форум", -'upload_failed' => "Произошла ошибка при загрузке файла, в связи с тем, что папка /uploads/, в которую загружаются файлы, имеют некорректные права. Если вы получили эту ошибку, пожалуйста, напишите об этом администратору форума.", -'post_to_quote_txt' => "Здесь Вы можете отредактировать цитируемое сообщение", -'submit_poll' => "Создать опрос", -'submit_new' => "Создать тему", -'enabled' => "Разрешен", -'errors_found' => "ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ", -'post_edited' => "Сообщение отредактировано", -'replying_in' => "Ответ в", -'email_address' => "Ваш e-mail адрес", -'no_post' => "Вы должны ввести сообщение", -'submit_reply' => "Отправить", -'stat_allow_img' => "[IMG] тэг: ", -'original_post' => "Оригинальное сообщение", -'html_on' => "Использование HTML разрешено", -'please_log_in' => "Вы не авторизованы для просмотра этого форума", -'reply_added' => "Ваш ответ добавлен", -'no_topic_title' => "Вы должны ввести название темы, более двух символов", -'too_many_emoticons' => "Количество смайлов в сообщении превышает допустимую норму. Уменьшите количество смайлов", -'no_poll_data' => "Нет ни одного пункта в опросе. Такой опрос невозможен!", -'top_txt_new' => "Создание новой темы в", -'posting_cond' => "Права сообщений", -'moderate_topic' => "После проверки темы модератором, она будет опубликована", -'invalid_ext' => "Запрещено использовать на форуме такое расширение для изображений. Правильное расширение: http://www.domain.com/picture.gif, неправильное расширение: http://www.domain.com/picture.one.gif", -'reg_username' => "Ваше имя пользователя", -'upload_title' => "Загрузка файла", -'post_icon' => "Иконки сообщения", -'moderate_post' => "После проверки сообщения модератором, оно будет добавлено в эту тему", -'flash_too_big' => "Уменьшите размер Flash, который вы хотите добавить", -'guest_name' => "Введите Ваше имя", -'topic_title' => "Название темы", -'flash_url' => "Введенный вами URL для Flash некорректный", -'post_preview' => "Предварительный просмотр", -'non_quotes' => "Количество открытых тэгов цитаты, не соответствует количеству закрытых тэгов", -'max_length' => "Максимальная длина сообщения в символах:", -'options' => "Опции", -'disabled' => "Запрещено", -'no_file_ext' => "Проверьте, что загружаемый вами файл имеет расширение", -'help_cards' => "Разделы помощи:", -'review_topic' => "Просмотр темы полностью (откроется в новом окне)", -'editing_post' => "Редактирование сообщения ", -'posting_new_topic' => "Создание новой темы", -'flash_number' => "Высота и ширина для Flash должны быть в численном значении", -'enable_sig' => "Включить подпись?", -'top_txt_edit' => "Редактирование сообщения в", -'poll_to_many' => "Количество вариантов ответа в вашем опросе превышает норму. Уменьшите их.", -'last_posts' => "Последние 10 сообщений [ в обратном порядке ]", -'top_txt_poll' => "Создание опроса", -'too_many_img' => "Количество изображений в сообщении превышает норму допустимого", -'topic_desc' => "Описание темы", -'no_dynamic' => "Динамические страницы в тэгах [IMG] запрещены", -'post_options' => "Опции сообщения", -'click_smilie' => "Смайлы", -'button_spell' => "Проверка орфографии", -'topic_title_long' => "Название темы должно содержать не более 50 символов", -'new_post_added' => "Ваше сообщение добавлено", -'top_txt_reply' => "Ответ в", -'posted_on' => "Дата", -'post' => "Введите сообщение", -'poll_not_enough' => "Необходимо ввести не менее двух пунктов в опросе", -'post_rules' => "Правила сообщения", -'post_icon_txt' => "Вы можете выбрать иконку сообщения", -'submit_edit' => "Отредактировать сообщение", -'enable_emo' => "Включить смайлы?", -'quoting_post' => "Цитируемое сообщение в ", -'email_title' => "Уведомление об ответе в тему", -'button_preview' => "Предварительный просмотр", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_printpage.php b/upload/cache/lang_cache/ru/lang_printpage.php deleted file mode 100644 index b38905cd..00000000 --- a/upload/cache/lang_cache/ru/lang_printpage.php +++ /dev/null @@ -1,27 +0,0 @@ - "Пожалуйста, выберите нужный формат", -'powered_by' => "Русская версия ", -'click_toview' => "Нажмите для просмотра темы", - -'end' => "конец", -'forum' => "Форум", -'on ' => "-", -'title' => "Версия для печати темы", -'by' => "Автор", -'start' => "Создал", -'topic' => "Тема", -'tvo_title' => "Опции отображения темы для:", -'o_print_title' => "Версия для печати", -'o_print_desc' => "Тема будет отображена и распечатана в простеньком виде на этой странице.", -'o_html_title' => "HTML версия", -'o_html_desc' => "Вы можете скачать HTML версию этой темы на Ваш жесткий диск. Будет открыт диалог браузера для скачивания.", -'o_word_title' => "Версия в формате Microsoft Word", -'o_word_desc' => "Вы можете скачать Word версию этой темы с возможностью дальнейшего редактирования. Будет открыт диалог браузера о скачивании.", -'back_topic' => "Вернуться в тему", -'topic_here' => "Нажмите сюда для просмотра этой темы в обычном формате", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_profile.php b/upload/cache/lang_cache/ru/lang_profile.php deleted file mode 100644 index eeb405d9..00000000 --- a/upload/cache/lang_cache/ru/lang_profile.php +++ /dev/null @@ -1,115 +0,0 @@ - 'Моя галерея', -'no_photo_avail' => "Фото недоступно", - - -//2.1.2 -'open_menu' => "Открыть меню", -'get_photo' => "Фото", - - -// 2.1 - -'dname_title' => "История отображаемого имени", -'dname_window_title' => "История отображаемого имени для:", -'dname_name_from' => "От", -'dname_name_to' => "К", -'dname_date' => "Дата изменения", -'warn_title' => "Предупреждения:", - - -// build #003 -'lichnoe_soobshenie' => "Личное сообщение", - -// 2.0 -'profile_options' => "Опции профиля", -'find_member_topics' => "Найти темы пользователя", -'website_addr' => 'Домашняя страница', -'supmod_edit_member' => 'Редактировать пользователя', -'ignore_user' => 'Игнорировать сообщения пользователя', -'last_active' => 'Последнее посещение', -'last_click' => 'Статус', -'online_offline' => "Offline", - -'wol_index' => 'Просмотр главной страницы форума', -'wol_topic' => 'Находится в теме', -'wol_forum' => 'Находится в форуме', -'wol_ucp' => 'Находится в своих личных данных', -'wol_profile' => 'Просмотр профиля', -'wol_search' => "Поиск", - -// 1.2 - -'rating_level' => "Рейтинг", -'warn_level' => "Предупреждения", -'photo_title' => "Фото", -'cartochka' => "Карточка пользовтеля", -'ac_close' => "Закрыть страницу", -'ac_download' => "Скачать страницу", - - - -//-- - - -'user_local_time' => "Часовой пояс пользователя", -'head_addit' => "Дополнительная информация", -'head_title' => "Просмотр профиля", - -'head_contact' => "Контактная информация", - -'head_posts' => "Информация о сообщениях", - -'head_info' => "Информация пользователя", - -'no_info' => "Нет данных", - -'click_here' => "Отправить", -'private' => "E-mail скрыт", - -'active_stats' => "Статистика активности", - -'total_posts' => "Всего полезных сообщений", -'joined' => "Регистрация", -'posts_per_day' => "сообщений в день", -'total_percent' => "всех сообщений форума", -'fav_forum' => "Наибольшая активность в", -'fav_posts' => "сообщений", -'fav_percent' => "от всех сообщений этого пользователя", - -'communicate' => "Связь", -"info" => "Информация", -'post_detail' => "Данные о сообщениях", - -'email' => "Отправить письмо на e-mail", -'aim' => "AIM", -'icq' => "ICQ", -'yahoo' => "Yahoo!", -'msn' => "MSN", -'pm' => "Отправить личное сообщение", - -'page_title' => "Просмотр профиля", - -'find_posts' => "Найти сообщения пользователя", -'add_to_contact' => "Добавить в список контактов", - -'edit_my_sig' => "Изменить подпись", -'edit_profile' => "Изменить личные данные", -'edit_avatar' => "Опции аватара", - - -'mgroup' => "Группа", -'mtitle' => "Статус", -'homepage'=> "Домашняя страница", -'birthday' => "Дата рождения", -'location' => "Место жительства", -'interests' => "Интересы", -'avatar' => "Аватар", -'siggie' => "Подпись", - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_register.php b/upload/cache/lang_cache/ru/lang_register.php deleted file mode 100644 index b42beaac..00000000 --- a/upload/cache/lang_cache/ru/lang_register.php +++ /dev/null @@ -1,248 +0,0 @@ - "E-mail адрес, который вы используете, не разрешен на этом форуме. Пожалуйста выберите другой.", -'new_registration_email' => "Регистрация на ", -'new_registration_email1' => "Новый пользователь на ", - -//2.1.2 -'alt_codebit' => "Включите эту картинку", -'alt_loadingimg' => "Включите эту картинку", - -// Added 2.1 -'coppa_bounce' => 'Вы не можете продолжить без отмены вашей регистрации COPPA или без завершения регистрационной формы COPPA', - -'clogin_submit' => "Продолжить...", -'clogin_done' => "Вы вошли в", -'clogin_title' => "Добро пожаловать в наш форум", -'clogin_text' => "Так как вы вошли впервые, мы требуем заполнения еще некоторых данных прежде, чем продолжить", -'dname_name' => "Введите желаемое отображаемое имя ", -'dname_text' => "Это имя, которое будет отображаться в ваших темах и сообщениях. Запрещенные символы: [ ] | ; ,", - -'reg_error_dname_len' => "Длина имени — от 3 до 32 латинских или русских символов, включая пробелы", -'reg_error_no_name' => "Необходимо ввести имя пользователя от 3 до 32 символов", -'reg_error_no_pass' => "Пароль не указан", -'reg_error_pass_nm' => "Введенные пароли не соответствуют друг другу. Перепроверьте введенные данные", -'reg_error_chars' => "Отображаемое имя содержит один или несколько запрещенных символов: [ ] | ; ,", -'reg_error_taken' => "Введенное отображаемое имя уже используется другим пользователем", -'reg_error_username_taken' => "Введенное имя пользователя уже используется другим пользователем", -'reg_error_username_none' => "Необходимо ввести имя пользователя от 3 до 32 символов", -'reg_error_email_missing' => "E-mail адрес не указан", -'reg_error_email_nm' => "Введенные e-mail адреса не идентичны", -'reg_error_email_taken' => "Введенный e-mail уже используется другим пользователем", - -'user_admin_validation' => "После успешной активации ваша учетная запись будет предоставлена администратору для проверки и подтверждения.", - - -// Changed 2.1 - -'user_name' => "Введите желаемое имя пользователя (для авторизации)", -'user_name_text' => "Длина имени — от 3 до 32 латинских или русских символов, включая пробелы (оно будет использовано для авторизации)", - - - -// Already in 2.0 - -// #build 003 -'enable_this_picture' => "Включите эту картинку", - -'subsm_title' => 'Пакеты подписок', -'subsm_none' => '--NONE--', -'subsm_na' => 'N/A', -'subsm_more' => 'Дополнительная информация...', -'subsm_no_desc' => "Не выбран пакет для покупки", -'subsm_close' => "Закрыть", -'tc_title' => "Правила и положения по регистрации", -'tc_text' => 'Для продолжения регистрации, вы должны принять нижеследующее:', -'tc_regbut' => "Регистрация", -'op_email_title' => "Получение писем", -'op_email_text' => "Время от времени, администраторы или обычные пользователи могут связаться с вами посредством письма на e-mail, отправленным через форум.", -'op_email_ad' => "Получать письма от администраторов", -'op_email_mem' => "Получать письма от пользователей", -'op_tz_title' => "Настройки часового пояса", -'op_tz_text' => "Выберите, в каком часовом поясе вы находитесь", -'op_tz_dst' => 'Автоматический переход на летнее время?', -'submit_text' => "Я соглашаюсь с условиями регистрации и желаю зарегистрироваться", - -'cf_optional' => "Дополнительная информация", - - -'las_title' => "Защитный код", -'las_img' => 'Ваш защитный код', -'las_img_text' => 'Если вы не видите никаких чисел или видите битое изображение, обратитесь к администратору форума для устранения проблемы.', -'las_input' => 'Введите защитный код', -'las_input_text' => "Введите в поле 6 цифр, отображенных в виде изображения.", - - -'las_numbers' => "Ваш защитный код
Если вы не видите никаких чисел или видите битое изображение, обратитесь к администратору форума для устранения проблемы.", -'las_text' => "Введите защитный код
Введите 6 цифр, отображенных выше в виде изображения.
Примечание: На изображении только цифры, к примеру '0' является нулем, а не буквой 'O'.", - - - -'user_name_title' => "Имя пользователя (login):", - -'password_title' => "Пароль:", -'password' => "Введите пароль", -'password_text' => "Длина пароля — от 3 до 32 символов, включая пробелы", -'password_confirm' => "Подтвердите пароль", -'password_confirm_text' => "Повторите пароль: пароли должны полностью совпадать", - -'email_address_title' => "Ваш e-mail адрес:", -'email_address_text' => "Необходимо ввести реальный e-mail адрес", -'email_address_confirm' => "Подтвердите e-mail адрес", -'email_address_confirm_text' => "Повторите e-mail адрес: адреса должны полностью совпадать", - -'email_address' => "Введите ваш e-mail адрес", - - -'err_complete_form' => "Необходимо заполнить все обязательные поля формы", -'err_cf_to_long' => "Длина введенных в одно из полей данных, превышает норму допущенного", -'err_invalid' => "Одно из заполненных полей, содержит неверные данные. Пожалуйста, проверьте и произведите исправления.", - -// added RC2 - -'incorrect_thing_name' => "Некорректное имя — %s. Возможно вы использовали запрещенные символы", -'thing_name_taken' => " %s, к сожалению выбранное вами имя пользователя уже используется. Выберите другое имя", - - -'rv_title' => "Запрос на повторную отправку письма для активации", -'rv_process' => "Процесс переактивации", -'rv_done' => "Запрос на переактивацию принят
Письмо для переактивации отправлено на ваш e-mail адрес. Через несколько минут проверьте Ваш почтовый ящик.", -'rv_ins' => "Ниже введите Ваше имя пользователя, для поиска незавершенных активаций. В случае обнаружения таковых, на ваш e-mail адрес, указанный при регистрации, будет повторно отправлено письмо для активации.", -'rv_name' => "Зарегистрированное имя пользователя", -'rv_go' => "Найти и выслать", - -'lpass_text' => "Письмо с содержанием инструкций по активации отправлено вам на e-mail. В течение 10 минут (возможно и раньше), вы получите это письмо.", -'lpf_title' => "Восстановление забытого пароля", -'lpf_pass1' => "Введите новый пароль", -'lpf_pass11' => "Длина пароля — от 3 до 32 символов", -'lpf_pass2' => "Подтвердите пароль", -'lpf_pass22' => "Пароли должны совпадать", - -'err_user_start_zero' => "Имя пользователя не должно начинаться с нуля (0)", -'errors_found' => "Обнаружены следующие ошибки", -'err_email_address_match' => "Введенные e-mail адреса не идентичны", -'err_no_username' => "Необходимо ввести имя пользователя от 3 до 32 символов", -'err_no_password' => "Необходимо ввести пароль от 3 до 32 символов", -'err_pass_match' => "Введенные пароли не соответствуют друг другу. Перепроверьте введенные данные", -'err_invalid_email' => "Введенный e-mail адрес является нереальным e-mail адресом", -'err_user_exists' => "Такое имя пользователя уже зарегистрировано на форуме. Выберите другое имя.", -'err_email_exists' => "Такой e-mail адрес уже используется на форуме. Введите другой e-mail.", -'err_reg_code' => "Код регистрации не соответствует отображенному. Сгенерирован новый код регистрации. Повторите попытку.", -'err_no_validations' => "Нет запросов на подтверждение для этого пользователя. Проверьте имя и попробуйте снова.", -'email_reg_subj' => "Регистрация для", -'ne_subject' => "Запрос на изменение е-mail адреса для", - -'ras_title' => "Защита от массовых регистраций", -'ras_numbers' => "Ваш защитный код
Если Вы не видите никаких чисел или видите битое изображение, обратитесь к администратору форума для устранения проблемы.", -'ras_text' => "Введите защитный код
Для блокирования различных программ, регистрирующих новые учетные записи, введите 6 цифр, отображенных выше в виде изображения.
Примечание: В изображении только цифры, к примеру '0' является нулем, а не буквой 'O'.", - - - - -'coppa_title' => "Регистрация COPPA", -'coppa_info' => "Информация COPPA", -'coppa_form' => "Форма COPPA", - -'coppa_link' => "Нажмите на ссылку, соответствующую дате Вашего рождения", -'coppa_date_before' => "После или до", -'coppa_date_after' => "После", -'coppa_form_text' => "Родитель или опекун должен заполнить и переслать по факсу подписанный <#FORM_LINK#>, администратору форума для продолжения регистрации ребенка младше 13 лет.

Для более подробной информации, обратитесь на:", -'coppa_link_form' => "форма разрешения", - -'cp2_text' => " Все пользователи возрастом до 13 лет, обязаны иметь разрешение родителей, для дальнейшего участия и пользования этими форумами.

Если вы хотите продолжить процесс регистрации для участия в форумах до получения разрешения родителей, нажмите на ссылку ниже. Но, тем не менее запомните, что процесс регистрации не будет завершен, пока мы не получим подписанную форму ваших родителей/опекунов.", -'cp2_continue' => "Далее", -'cp2_title' => "Наше регистрационное соглашение COPPA", -'cp2_cancel' => "Отмена", - -'cp_success' => "Ваша регистрация принята! Сейчас вы будете перемещены к форме разрешения", - -'cpf_title' => "Форма разрешения COPPA", -'cpf_perm_parent' => "Инструкции для родителей или опекунов

Пожалуйста, распечатайте эту форму, заполните ее и перешлите по факсу на наш номер. Если факса не имеется, вы можете переслать эту форму по нижеуказанному адресу.", -'cpf_fax' => "Номер факса:", -'cpf_address' => "Адрес для писем:", - -'cpf_sign' => "Просим вас подписать нижеследующую форму и переслать ее нам.

Я подтверждаю, что информация, предоставленная ребенком верна. Я соглашаюсь, что информация профиля может быть изменена только после ввода пароля. И я принимаю то что, я могу затребовать удаления этого профиля в любой момент.", - -'cpf_name' => "Полное имя родителя/опекуна", -'cpf_relation' => "Отношение к ребенку", -'cpf_signature' => "Подпись", -'cpf_email' => "E-mail адрес", -'cpf_phone' => "Номер телефона", -'cpf_date' => "Дата", - - -'lost_pass_form' => "Форма восстановления пароля", -'lp_header' => "Как восстановить пароль", - -'lp_text' => "Ниже введите ваше имя пользователя. Помните, что имя чувствительно к регистру.
Как только сделаете это, то получите письмо на e-mail для подтверждения вашего запроса. Это нужно для того, чтобы убедиться, что запрос сделали именно вы, а не злоумышленник. В письме также будет содержаться ссылка, по которой вы должны пройти.
Вы будете перемещены к форме ввода нового пароля для вашей учетной записи.", - -'lp_text_email' => "Ниже введите свой e-mail.
Как только вы сделаете это, то получите письмо на e-mail для подтверждения вашего запроса. В этом письме также будет содержаться ссылка, по которой вы должны пройти.
Таким образом вы попадете на страницу, содержащую форму для ввода нового пароля.", - - -'lp_send' => "Далее", - -'lp_user_name' => "Введите ваше имя", - -'lp_subject' => "Информация о восстановлении забытого пароля", -'lp_email_address' => "Введите свой e-mail адрес", - -'lp_redirect' => "Данные для восстановления пароля отправлены. Сейчас вы будете перемещены к форме активации...", - -'activation_form' => "Форма активации", - -registration_form => "Форма регистрации", -user_validate_text => "Администратор форума включил проверку всех регистрируемых пользователей. После регистрации и проверки вашей регистрации администратором, вы получите письмо на e-mail от администратора, с инструкциями о завершении регистрации. Только после этого вВы сможете авторизоваться на форуме под своим именем и паролем.", -js_blanks => "Вы должны заполнить всю форму", -reg_header => "Инструкция по регистрации", -intro_proceed => "Переход к авторизации", -js_no_check => "Перед продолжением регистрации, вы должны прочесть правила форума и если вы согласны и принимаете правила, отметьте окошко «Я ознакомился...». В противном случае регистрация будет отменена.", -title_reg => "Регистрация", -email_validate_text => "Вам будет отправлено письмо на e-mail адрес, указанный Вами при регистрации. После внимательного ознакомления с письмом, вы должны будете подтвердить Вашу регистрацию, зайдя по ссылке, указанной в письме.", -done_reg_1 => "Ваша учетная запись активирована! Переход к правилам форума", -done_reg_2 => "Ваша учетная запись активирована! Переход к авторизации", -board_rules => "Правила форума", -dumb_text => "Проверьте, что вы заполнили форму полностью. Необходимая информация отправлена вам на e-mail адрес.", -registration_agree => "Регистрационное соглашение", -agree_submit => "Я ознакомился с правилами и условиями и принимаю их", -std_text => "Повторно проверьте, что вы заполнили все поля формы. Особое внимание уделите полю пароль.", - - - - -reg_success => "Регистрация завершена", -thank_you => "Спасибо", -registration_process => "Регистрация", -preview_reg_text => "Ваша регистрация успешно завершена. Администрация форума должна проверить Вашу регистрацию перед тем, как вы получите право отправлять сообщения. Администрация будет уведомлена о Вашей регистрации.", -dumb_email => "Введите Ваш e-mail адрес, указанный при регистрации", -complete_form => "Заполните все поля формы", -auth_text => "Запрос на регистрацию пользователя принят.
На указанный вами при регистрации e-mail адрес отправлено письмо с инструкциями по активации вашей учетной записи.
Указанный вами e-mail:", -submit_form => "ЗАРЕГИСТРИРОВАТЬСЯ", -nav_reg => "Регистрация", -dumb_submit => "Продолжить", -dumb_header => "Активация учетной записи", - -'val_key' => "Ключ активации:", -'user_id' => "ID пользователя:", - - -email_address_two => "Повторите свой e-mail адрес", - -'click_wrap' => "Пожалуйста уделите немного внимания и прочтите краткие правила, указанные ниже. Если вы принимаете их и желаете продолжить процесс регистрации, отметьте свое согласие и нажмите кнопку «Регистрация». Для отмены регистрации нажмите кнопку «Назад» в вашем браузере. - -Пожалуйста помните, что мы не отвечаем на все публикуемые сообщения. - -На форуме отсутствует предварительная проверка открываемых тем и публикаций. Как только вы отправляете сообщение — оно сразу публикуется на форуме. Администрация форума снимает с себя ответственность за содержание сообщений, публикуемых пользователями. Ответственность за содержание сообщения несет только его автор. - -На форуме запрещено: -отправка сообщений не по содержанию форума/темы, оскорбления и угрозы в адрес пользователей форума, пропаганда расовой, национальной и религиозной вражды; реклама и самореклама; -ненормативная лексика, сексуальные домогательства и т.д. - -Нарушители правил будут строго наказаны модераторами или администраторами форума и им будет закрыт доступ на форум. - -Согласившись с правилами, вы соглашаетесь не публиковать любой материал, защищенный авторским правом, если авторское право не принадлежит вам.", - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_search.php b/upload/cache/lang_cache/ru/lang_search.php deleted file mode 100644 index 94e8d482..00000000 --- a/upload/cache/lang_cache/ru/lang_search.php +++ /dev/null @@ -1,158 +0,0 @@ - 'Новых сообщений не найдено', -'xml_char' => 'Некоторые или все заданные ключевые слова содержат менее, чем %s символов или содержат некорректные символы', -'xml_flood' => 'Включен флуд-контроль. Пожалуйста, подождите не менее %s, прежде чем снова воспользоваться поиском', -'xml_nomatches' => 'Ваш поиск для %s не имеет результатов', -'xml_matches' => 'Ваш поиск для %s нашел не менее %s сообщений.
Просмотр результатов »', - - -//2.0.2 -'too_many_children_for_santa' => '(Результаты поиска ограничены до первого %num)', - -'active_start' => 'Показать активные темы за:', -'active_today' => 'сегодня', -'active_week' => 'эту неделю', -'active_week2' => 'последние 2 недели', -'active_month' => 'этот месяц', -'active_month3' => 'последние 3 месяца', -'active_year' => 'этот год', -'active_go' => 'ок', -'no_search_topics' => "По выбранным Вами параметрам, нет ни одной темы", - -'you_search_for' => "Вы искали:", -'no_results_so_there_ha_ha' => "К сожалению, Ваш поиск не дал никаких результатов.
Попробуйте расширить параметры поиска, используя другое ключевое слово или изменением формата поиска.
Не забывайте про использование маски '*' для увеличения кол-ва совпадений. К примеру, введя слово Ябло*, будут найдены совпадения по словам 'яблоко', 'яблочный' и т.д.", -'search_again' => "Повторить поиск?", - -'mark_search_as_read' => "Отметить все форумы прочитанными и вернуться на главную страницу", -'your_results' => "Ваши результаты", - -//added in 1.2 -'be_use' => "Использование", -'be_means' => "Средства", - -'be_u1' => "яблоко банан", -'be_m1' => "Поиск сообщений, содержащих одно из этих слов", -'be_u2' => '+яблоко +сок', -'be_m2' => 'Поиск сообщений, содержащих оба этих слова', -'be_u3' => '+яблоко -сок', -'be_m3' => "Поиск сообщений, содержащих слово 'яблоко' и не содержащих слова 'сок'", -'be_u4' => "ябло*", -'be_m4' => "Поиск сообщений, содержащих слово 'яблоко' и/или 'яблочный'", -'be_u5' => '"Некоторые слова"', -'be_m5' => "Поиск сообщений, содержащих фразы 'некоторые слова являются мудрыми', 'некоторые слова' и не содержащих фразу 'некоторые нецензурные слова'", - - -'be_link' => "Расширенная помощь по использованию", -'be_ttip' => "Ознакомьтесь получше, как пользоваться логическим поиском", -'nav_au' => "Все сообщения пользователя", -'sp_single' => "Единственная страница", -'so_more_opts' => "Расширенный поиск", -'so_less_opts' => "Простой поиск", -'search_where' => "Где искать", -'result_type' => "Отображение результата", -'all_forums' => "» Все форумы", -'location_g' => "Позиция", -'g_b_home' => "Главная страница форума", -'g_relevance' => "Точность", -'g_simple_title' => "Страница поиска форума", -'g_new_window' => "Новое окно", -'g_searched_for' => "Поиск в форуме", -'g_results' => "Результаты", -'g_of_about' => "в виде", -'g_search_took' => "Поиск", -'g_seconds' => "секунды", -'sf_show_me' => "Показать", -'sf_most_r_f' => "самые точные", -'sf_most_date' => "самые последние вверху", -//--- ADDED IN B3 ----- - -'is_sub' => " (Подкатегория)", -'search_in_subs' => "Искать в подфорумах, если Вы выбрали подкатегорию?", - - -///--- END B3 --------- - -'rp_topic' => "Тема:", -'rp_post' => "Просмотр сообщения:", -'rp_forum' => "Форум:", -'rp_author' => "Автор", -'rp_replies' => "Ответов:", -'rp_hits' => "Просмотров:", -'rp_message' => "Сообщение", -'rp_postedon' => "Отправлено:", - -'joinname_true' => "Поиск по ключевым словам и имени", -'joinname_false' => "Поиск только по имени", - -'nav_since_lv' => "Сообщения с Вашего последнего посещения", -'nav_lt' => "Ваши последние 10 сообщений", -'nav_au' => "Активные темы", - -'results_post' => "Результаты в виде сообщений", -'results_topics' => "Результаты в виде тем", - -'search_redirect' => "Поиск завершен. Подождите, сейчас вы будете перемещены к результатам поиска.", - -'search_pages' => "Страниц:", -'search_title' => "Поиск", -'key_search' => "Поиск по ключевым словам", -'mem_search' => "Фильтр по имени пользователя (дополнительно)", -'keysearch_text' => "Введите ключевое слово или фразу для поиска.", -'match_name_ex' => "Искать полное имя", -'match_name_pa' => "Искать часть имени", -'keywords_title' => "Слова для поиска", - -'search_options' => "Настройки поиска", -'search_forums' => "Поиск в форуме", -'search_cats' => "Поиск в категории", -'search_refine' => "Дополнительные настройки", - -'search_results' => "Результаты поиска", -'search_form' => "Форма поиска", - -'h_forum_name' => "Форум", - -'se_simple' => "Простой поиск", -'se_advanced' => "Расширенный", - -'in_posts' => "В сообщениях", -'in_topics' => "В заголовках", - -'search_from' => "Искать сообщения за...", - -'do_search' => "Найти", - -'today' => "Сегодня", -'this_week' => "Последние 7 дней", -'this_month' => "Последние 30 дней", -'this_60' => "Последние 60 дней", -'this_90' => "Последние 90 дней", -'this_180' => "Последние 180 дней", -'this_year' => "Последние 365 дней", -'ever' => "Все время", -'older' => "и более старые", -'newer' => "и более новые", -'and' => "и", - -'sort_results' => "Сортировать результаты по...", - -'last_date' => "Дате обновления", -'number_topics' => "Количеству ответов", -'poster_name' => "Имени автора", -'forum_name' => "Названию Форума", - -'in' => "в", - -'ascending' => 'в порядке возрастания', -'descending' => 'в порядке убывания', - -'order' => 'сортировка', - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_stats.php b/upload/cache/lang_cache/ru/lang_stats.php deleted file mode 100644 index cb94107b..00000000 --- a/upload/cache/lang_cache/ru/lang_stats.php +++ /dev/null @@ -1,42 +0,0 @@ - "Кто писал сообщения в:", -'no_forums' => "Обзор форумов (%s всего...)", - -'who_poster' => "Автор", -'who_posts' => "Сообщений", -'who_go' => "Закрыть окно и открыть тему", - -'todays_posters' => "10 авторов сегодня", -'member' => "Пользователь", -'member_posts' => "Всего сообщений", -'member_today' => "Сообщений сегодня", -'member_joined' => "Регистрация", -'member_percent' => "% сегодняшних сообщений", -'total_today' => "Всего сообщений сегодня: ", -'no_info' => "Нет доступной информации", - -'top_poster_title' => "10 авторов сегодня", - - -'forum_leaders' => "Администрация", - -'leader_admins' => "Администраторы", -'leader_global' => "Супермодераторы", -'leader_mods' => "Модераторы", - - -'leader_name' => "Имя", -'leader_email' => "E-mail", -'leader_aol' => "AOL", -'leader_icq' => "ICQ", -'leader_location' => "Место жительства", -'leader_forums' => "Форумы", -'leader_all_forums' => "Все форумы", - - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_subscriptions.php b/upload/cache/lang_cache/ru/lang_subscriptions.php deleted file mode 100644 index 061cb282..00000000 --- a/upload/cache/lang_cache/ru/lang_subscriptions.php +++ /dev/null @@ -1,81 +0,0 @@ -Please review the details below and select from the payment methods below to confirm your choice."; -$lang['msg_gen_title'] = "Subscription Packages"; -$lang['msg_gen_text'] = "Thanks for visiting our subscription packages screen.
Please select from a package below to proceed to choose from the available payment options."; -$lang['msg_force_title'] = "Please Purchase a Subscriptions Package"; -$lang['msg_force_text'] = "We require that you purchase a subscriptions package before you are granted full access to this forum."; -$lang['cc_currency_in'] = "All prices in"; -$lang['cc_change'] = "Change"; -$lang['man_tick_title'] = "Please print this ticket off or copy the information and include it with your payment"; -$lang['man_mem'] = "Member Name"; -$lang['man_mem_id'] = "Member ID"; -$lang['man_email'] = "Member Email"; -$lang['man_trans_id'] = "Trans ID"; -$lang['man_sub'] = "Sub Title"; -$lang['man_pay'] = "Payment Enclosed"; -$lang['man_title'] = "Remittance Ticket"; -$lang['gw_upgrade'] = "Upgrade"; -$lang['gw_protx'] = "Click the button below to complete this order via Protx\'s website"; -$lang['gw_paypal'] = "Click the button below to complete this order via PayPal\'s website. All costs will be converted into USD for PayPal\'s website"; -$lang['gw_nochex'] = "Click the button below to complete this order via NOCHEX\'s website. All costs will be converted into GBP for NOCHEX\'s website"; -$lang['gw_safshop'] = "Click the button below to complete this order via Safshop\'s website. All costs will be converted into USD for Safshop\'s website"; -$lang['gw_authorize'] = "Click the button below to complete this order via our secure online payment page."; -$lang['post_manual'] = "You have selected to pay by post. When you click the button below, your order will be marked as \'Pending\' and a new window will open containing a ticket you can print off and include with the payment. This means that you will not be able to use the subscription until your payment has been received and manually verified."; -$lang['post_manual_more'] = "Please send the above amount in the correct currency to:
%s
%s
%s
%s
%s


If you require currency conversion, please visit this website."; -$lang['gw_manual'] = "Click here to continue..."; -$lang['sc_complete'] = "Completing the order..."; -$lang['sc_upgrade_title'] = "Upgrade Confirmation"; -$lang['sc_normal_title'] = "Purchase Confirmation"; -$lang['sc_upgrade_explain'] = "Please review the order details below before continuing."; -$lang['sc_upgrade_string'] = "You have chosen to upgrade from %s to %s which is due to expire on %s.
The cost for this upgrade is %s.

Please select a payment method below and continue to the next step."; -$lang['sc_normal_string'] = "You have chosen to purchase subscription %s.
The cost for this subscription is %s."; -$lang['sc_available_methods'] = "Available Payment Methods"; -$lang['sc_method'] = "Payment Method"; -$lang['s_page_title'] = "Subscriptions Control Panel"; -$lang['s_current_subs'] = "Your Current Subscription"; -$lang['s_current_explain'] = "Details of the package that you are currently subscribed to."; -$lang['s_dead_subs'] = "Your Expired Subscriptions"; -$lang['s_dead_explain'] = "This is a reference of all past or cancelled subscriptions."; -$lang['s_continue_button'] = "Continue to select a payment method..."; -$lang['s_continue_button2'] = "Continue..."; -$lang['s_upgrade_subs'] = "Upgrade to a new subscription"; -$lang['s_upgrade_explain'] = "You can upgrade to any of the following subscriptions below. You will only need to pay the balance and when payment has cleared your new subscription will replace the current until the original expiry date."; -$lang['s_started'] = "Start Date"; -$lang['s_end'] = "End Date"; -$lang['s_paid'] = "Paid"; -$lang['s_status'] = "Status"; -$lang['s_transid'] = "ID"; -$lang['s_balance_cost'] = "Balance to pay"; -$lang['s_current_bottom'] = "If you have any questions about your current or past subscriptions, you should contact a member of the administrative team who will be able to deal with any enquiries you might have."; -$lang['s_available_subs'] = "Your Available Subscriptions"; -$lang['s_detail'] = "Details"; -$lang['s_duration'] = "Duration"; -$lang['s_cost'] = "Cost"; -$lang['s_explain'] = "To subscribe, simply select the radio button next to your subscription choice and then choose which payment method you wish to use below. Clicking on the continue button will bring you to a confirmation screen and may ask for more details depending on which payment method you\'ve chosen."; -$lang['pay_paid'] = "Paid"; -$lang['pay_failed'] = "Failed"; -$lang['pay_pending'] = "Pending"; -$lang['pay_expired'] = "Expired"; -$lang['pay_dead'] = "Cancelled"; -$lang['time_y'] = "Year"; -$lang['time_m'] = "Month"; -$lang['time_d'] = "Day"; -$lang['time_w'] = "Week"; -$lang['timep_y'] = "Years"; -$lang['timep_m'] = "Months"; -$lang['timep_d'] = "Days"; -$lang['timep_w'] = "Weeks"; -$lang['gw_authorizenet'] = "Click the button below to complete this order via our secure online payment page."; - -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_tar.php b/upload/cache/lang_cache/ru/lang_tar.php deleted file mode 100644 index a4789a43..00000000 --- a/upload/cache/lang_cache/ru/lang_tar.php +++ /dev/null @@ -1,32 +0,0 @@ - "Ошибка распаковки файлов: Папка (%s) не существует", -'error_tar2' => "%s не папка", -'error_tar3' => "Невозможно найти %s", -'error_tar4' => "ВНИМАНИЕ: %s существует, но это не папка", -'error_tar5' => "ОШИБКА: ошибка при смене папки на %s!", -'error_tar6' => "Невозможна запись в %s", -'error_tar7' => "%s существует, но это не папка", -'error_tar8' => "Невозможно обратиться к именам", -'error_tar9' => "Невозможно обратиться к системным ссылкам", -'error_tar11' => "Невозможно обратиться к файлам устройства", -'error_tar12' => "Обнаружен неизвестный тип", -'error_tar13' => "ОШИБКА: CHMOD %s на %s не применены!", -'error_tar14' => "Ошибка: Статистика не получена на %s", -'error_tar15' => "ОШИБКА: Невозможно открыть %s", -'error_tar16' => "Не было указано имя файла или путь для создания нового tar файла", -'error_tar17' => "Нет данных для записи в новый tar файл", -'error_tar18' => "Для имени файла %s превысила допустимый предел GNU Tape ARchives", -'error_tar19' => "Длина пути к файлу превысила допустимый предел GNU Tape ARchives", -'error_tar21' => "При попытки прочитать файл обнаружено, что имя файла не указано", -'error_tar22' => "Невозможно найти файл ", -'error_tar23' => "Невозможно открыть %s для чтения", -'error_tar24' => "Ошибка чтения tar файла", - - -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_topic.php b/upload/cache/lang_cache/ru/lang_topic.php deleted file mode 100644 index a62f5e7a..00000000 --- a/upload/cache/lang_cache/ru/lang_topic.php +++ /dev/null @@ -1,203 +0,0 @@ - "сообщение", - - -//2.1.2 -'add_selected_text' => "Добавить выделенный текст как цитату", - - -// 2.1.1 - -'js_error_no_permission' => "Извините, но вам не разрешено редактировать это сообщение", - -// 2.1 - -'dd_display_modes' => "Режимы отображения", -'dd_rate_button' => "Оценить", - -'announce_title' => "Объявление", -'click_for_mod' => "Для выбора этой темы для модерирования нажмите сюда", - -'outline_posts_topic' => "Сообщений в этой теме", -'ignore_first_line' => "Вы выбрали игнорирование всех сообщений от:", -'ignore_view_post' => "Просмотр этого сообщения", -'ignore_unignore' => "Не игнорировать", - -'edit_full_title' => 'Полное редактирование', -'edit_full_desc' => 'Полное редактирование со всеми опциями', -'edit_quick_title' => 'Быстрое редактирование', -'edit_quick_desc' => 'Быстро изменить это сообщение с базовыми опциями', -'topic_rating_done' => 'Ваша оценка успешно добавлена!', -'topic_rating_changed' => 'Ваша оценка успешно изменена!', -'topic_rated_already' => 'Вы уже оценивали эту тему и вам не разрешено изменять вашу оценку.', -'topic_rating' => 'Рейтинг', -'topic_options' => 'Опции', -'topic_display' => 'Режим отображения', -'topic_display_switch' => 'Переключить на:', -'poll_vote_added' => "Ваш голос успешно добавлен", -'poll_viewing_results' => "Просмотр результатов опроса", -'poll_add_vote' => "Голосовать!", -'poll_s_stats' => "Статистика", -'poll_you_voted' => "Вы уже голосовали в этом опросе", -'poll_no_guests' => "Гости не могут голосовать", -'poll_vote_created' => "Ваш опрос был успешно создан", -'poll_s_total' => "Всего голосов", -'poll_null_vote' => "Просмотр результатов (Лишившись голоса)", -'poll_s_votes' => "Голосов", -'poll_you_created' => "Вы создали этот опрос", - - -// build #003 -'click_on_icon' => "Нажмите на это значок для выбора этого сообщения для использования в модерации внизу страницы", -'obyavlenie' => "Объявление:", -'soobsheniya_etoy_temyi' => "Сообщения этой темы", - -// 2.0.3 - -'qr_add_email' => "Отправлять уведомления об ответах на e-mail", - - - -// 2.0 -'ip_private' => 'Скрыт', -'tom_outline' => 'Древовидный', -'tom_standard' => 'Стандартный', -'tom_linear' => 'Линейный', - -'tom_replies' => "Ответов", -'announce_both' => "Объявление создано: %s, будет завершено: %s", -'announce_start' => "Объявление опубликовано %s", -'announce_end' => "Объявление завершено %s", - -'cpt_approve' => "Опубликовать сообщение", -'cpt_unapprove' => "Скрыть сообщение", -'cpt_approvet' => "Опубликовать тему", -'cpt_unapprovet' => "Скрыть тему", -'cpt_merge' => 'Объединить сообщения', -'cpt_delete' => "Удалить сообщения", -'cpt_split' => "Разделить тему", -'cpt_move' => "Переместить сообщения", -'cp_js_delete' => "Вы действительно хотите удалить эти сообщения?", -'enter_keywords' => "Введите ключевое слово", -'search_topic' => "Искать в теме", -'f_go' => "С отмеченными", - -'m_location' => "Из:", - -'tt_reply_to_post' => "Ответить прямо в этом сообщении", - - -'attach_thumbs' => 'Эскизы прикрепленных изображений', -'attach_images' => 'Прикрепленные изображения', -'attach_normal' => 'Прикрепленные файлы', -'attach_ahits' => 'Скачано:', -'attach_size' => 'Размер:', -'mq_title' => 'Добавить к многочисленным цитатам', - -'tt_link' => "Ссылка на это сообщение", -'tt_prompt' => "Копирование прямой ссылки этого сообщения, для сохранения в буфере обмена", - - -// new 1.2 B3 (RC1) - -'tt_rating' => "Рейтинг:", - -// new in 1.2 -'tt_warn' => "Предупреждения:
", -'tt_warn_add' => "Добавить предупреждение", -'tt_warn_minus' => "Снять предупреждение", -'mm_title' => "Мульти-модерация", -'mm_submit' => "ок", -'pv_total_votes' => "Всего голосов", -'new_poll_link' => "Добавить новый опрос", -'ac_title' => "Показать контакт лист", -'to_open' => "Раскрыть опции темы", -'to_close' => "Скрыть опции темы", -'show_emo' => "Показать смайлики в новом окне", -'pl_show_results' => "Показать результаты", -'pl_show_vote' => "Показать пункты опроса", - -'pic_attach_thumb' => "Прикрепленное изображение (нажмите на эскиз, для увеличения)", - -'attached_file' => "Прикрепленный файл", -'qr_title' => "Быстрый ответ", -'qr_open' => "Раскрыть окно быстрого ответа", -'qr_hide' => "Скрыть окно быстрого ответа", - -'qr_submit' => "Отправить", -'qr_more_opts' => "Расширенная форма", -'qr_closeit' => "Скрыть форму", -'qr_add_smilie' => "Включить смайлики", -'qr_add_sig' => "Добавить подпись", - -// new in RC1 - -'b_back_to' => "Назад в", - -// end - -'SPLIT_TOPIC' => "Разделить тему", -'MERGE_TOPIC' => "Соединить тему", -'TOPIC_HISTORY' => "История темы (опция администратора)", - -'tt_title' => "Подписаться на тему", - -'ft_title' => "Подписка на этот форум", - -'av_title' => "Скачать / Распечатать тему", - -'active_users_detail' => "гостей: %s, скрытых пользователей: %s", -'active_users_title' => "%s чел. читают эту тему", -'active_users_members' => "Пользователей: %s", - -'go_new_post' => "К первому непрочитанному сообщению", -'edited_by' => "Сообщение отредактировал %s - %s", - -'UNSUBBIT' => "Отписать всех от этой темы", - -EDIT_TOPIC => "Редактировать заголовок", -forum_jump => "Перейти в форум", -UNPIN_TOPIC => "Опустить тему", -OPEN_TOPIC => "Открыть тему", -attach_hits => "Кол-во скачиваний", -DELETE_TOPIC => "Удалить тему", -topic_moved => "Эта тема перемещена, переходим в форум расположения темы", -pic_attach => "Прикрепленное изображение", -m_posts => "Сообщений:", - -multi_page_topic => "Страницы:", -snitch_geezer_to_a_copper => "Отправить жалобу модератору", -MOVE_TOPIC => "Переместить тему", -CLOSE_TOPIC => "Закрыть тему", -topic_page_h => "Тема", -member_warn_level => "Уровень предупреждений пользователя", -start_new_poll => "Создание опроса", -m_joined => "Регистрация:", -track_topic => "Подписка на тему", -js_del_1 => "Вы действительно хотите удалить это сообщение?", -please_log_in => "Вы не авторизованы в этом форуме.", -js_del_2 => "Не хотите, как хотите", -start_new_topic => "Открытие новой темы", -moderation_ops => "Опции модератора", -RECOUNT => "Обновить тему", -ip => "IP", -reply_to_topic => "Ответ в эту тему", -topic_stats => "<#POSTS#> ответов с <#START#>", -single_page_topic => " ", -PIN_TOPIC => "«Поднять» тему", -'print' => "Версия для печати", -topic => "Тема", -posted_on => "Сообщение", -attach_dl => "Скачать файл", -DELETE_POST => "Удалить сообщения", -t_old => "Предыдущая тема", -t_new => "Следующая тема", -forward => "Сообщить другу", -m_group => "Группа:", -'back_top' => "Вверх", -'member_no' => "Пользователь №:", -); -?> \ No newline at end of file diff --git a/upload/cache/lang_cache/ru/lang_ucp.php b/upload/cache/lang_cache/ru/lang_ucp.php deleted file mode 100644 index 46099420..00000000 --- a/upload/cache/lang_cache/ru/lang_ucp.php +++ /dev/null @@ -1,620 +0,0 @@ - "Опции личных сообщений", -'ucp_op_pm' => "Отключить использование вами личных сообщений?", -'ucp_op_pm_dowhat' => "Если вы отключите использование вами личных сообщений, вы не сможете отправлять и получать личные сообщения.", - -'sub_added' => "Ваша подписка успешно добавлена", -'dname_change_ok' => "Отображаемое имя успешно изменено", -'dname_error_title' => "Обнаружены ошибки:", -'dname_error_no_name' => "Вы обязаны ввести имя длиннее, чем 3 символа и короче, чем 32", -'dname_error_no_pass' => "Поля пароля пусто", -'dname_error_chars' => "Отображаемое имя содержит запрещенные символы", -'dname_error_taken' => "Такое отображаемое имя уже используется другим пользователем", -'dname_error_pass_wrong' => "Введенный пароль некорректный", -'dname_submit' => "Продолжить...", -'dname_choose' => "Введите новое отображаемое имя", -'dname_choose2' => "Это желаемое отображаемое имя вы используете сейчас.
Запрещенные символы: [ ] | , ;", -'dname_password' => "Введите ваш текущий пароль", -'dname_password2' => "Это гарантирует безопасность на вашей учетной записи", -'dname_title' => "Изменить отображаемое имя", -'dname_string' => "Вы сделали %s из %s изменений отображаемого имени с %s.
Вам разрешено делать %s изменений каждые %s дней.

Изменение отображаемого имени никак не отражается на вашем имени пользователя для авторизации.", -'m_dname_change' => "Изменить отображаемое имя", -'dst_error' => "Произошла ошибка при попытке автоматически изменить ваши настройки перехода на летнее время. Если ошибка продолжается, пожалуйста, отключите автокоррекцию перехода на летнее время", -'dst_box2' => "(Если вы выбрали правильную временную зону, и часы появляются отстают или спешат на час, перепроверьте)", -'dst_auto' => "Автокоррекция перехода на летнее время?", -'dst_auto2' => "(если выбрано, то ваши настройки перехода на летнее время будут автоматически применены, когда в следующий раз вы войдете на главную страницу форума)", -'dst_correction_title' => "Коррекция перехода на летнее время", -'settings_time_txt2' => "Текущее время (включая ваши настройки часового пояса):", -'ucp_title_posting' => "Настройки публикации", -'ucp_use_rte' => "«Rich Text» редактор", -'ucp_use_std' => "Стандартный редактор", -'type_of_editor' => "Тип текстового редактора для использования при публикации", -'rte_text' => "«Rich Text» редактор требует Internet Explorer 6, Mozilla или Firefox", - -// CHANGED: 2.1 - -'dst_box' => "Переход на летнее время?
(Если ваш часовой пояс не совпадает с временем на форуме, выберите правильное
время и поставьте отметку в окошко. В противном случае, снимите отметку.)", -'need_cookie_yum_yum' => "Эта функция используют cookies", -'open_qr' => "Раскрывать автоматически форму быстрого ответа (когда доступно)? *", -'m_contact_info' => "Изменить личные данные", -'settings_time_txt' => "Ваш часовой пояс", - - - -// build #003 -'tsitata' => "Цитата", -'kod' => "Код", -'spisok' => "Список", -'vklyuchite_etu_kartinku' => "Включите эту картинку", -'otmetit_vse' => "Отметить все", - - -//2.0.2 -'m_blog'=> "Блог", -'m_blog_ucp_main'=> "Ваши настройки блога", -'m_blog_cblocks'=> "Настройки блоков контента", -'m_blog_aboutme'=> "Ваш личные данные", -'m_blog_your_blog'=> "Ваш блог", - -//2.0 - -'announce_delete' => "Удалить", -'announce_edit' => "Изменить", -'announce_by' => "Автор:", -'conv_email_warning_title' => "E-MAIL ПРЕДУПРЕЖДЕНИЕ", -'conv_email_warning' => "Ваш e-mail адрес изменен в связи с тем, что данный e-mail используется на другой учетной записи. Это означает, что вы не будете получать никаких писем с форума, такие как уведомление о восстановлении забытого пароля и т.д.
Немедленно измените свой e-mail адрес.", - -'attach_topicmoved' => 'Тема перемещена', -'attach_inpm' =>'Личное сообщение', -'m_gallery' => 'Галерея', -'m_gallery_albums' => 'Ваши альбомы', -'m_gallery_favs' => 'Ваши закладки', -'m_gallery_controls' => 'Ваши настройки', -'auto_track' => "Включить уведомления на e-mail по умолчанию?
Если включено, выберите тип уведомления:
", -'auto_track_desc' => "При включении этой опции вы будете автоматически подписаны на все новые и обновленные темы.", - -'subs_c_title' => 'Информация о подписках', -'subs_c_forum' => 'Подписка на форумы:', -'subs_c_topic' => 'Подписка на темы:', -'subs_c_type' => 'Тип', -'subs_exp_text' => 'Выберите способ уведомления.
При подписке на форум вы будете уведомлены обо всех новых темах в этом форуме, а при подписке на тему получите уведомления уже о всех новых сообщениях в этой теме.', -'subs_delayed' => 'Уведомление с задержкой', -'subs_delayed_desc' => "При выборе этой опции вы будете уведомлены о новых темах или ответах во время своего отсутствия на форуме.", -'subs_immediate' => 'Немедленное уведомление', -'subs_immediate_desc' => 'При выборе этой опции вы будете уведомлены о новых темах или ответах, независимо от того, присутствуете ли вы или отсутствуете на форуме.', -'subs_daily' => 'Ежедневное уведомление', -'subs_daily_desc' => 'При выборе этой опции вы будете ежедневно получать краткое уведомление обо всех новых темах и сообщениях за текущий день', -'subs_weekly' => 'Еженедельное уведомление', -'subs_weekly_desc' => 'При выборе этой опции вы будете еженедельно получать краткое уведомление обо всех новых темах и сообщениях за текущую неделю.', -'subs_none_title' => 'Не уведомлять', -'subs_none_desc' => 'При выборе этой опции вы не будете получать никаких уведомлений на e-mail, но все новые и обновленные темы и форумы будут сохранены на вашей личной странице подписок.', -'subs_submit' => 'Выполнить действие', - -'subs_c_change' => "Изменить на:", - -'announce_page_disabled' => "(Отключено)", -'announce_del1' => "Вы действительно хотите удалить это объявление?", -'announce_del2' => "Действие отменено!", -'announce_error_date' => "Дата начала или завершения указана в неправильном формате. Проверьте введенные данные.", -'announce_error_title' => "Вы должны ввести заголовок и текст объявления.", -'announce_error_forums' => "Вы должны выбрать хотя бы один форум для этого объявления.", -'announce_title' => "Заголовок", -'announce_author' => "Автор", -'announce_end' => "Завершить", -'announce_starts' => "Начать", -'announce_forums' => "Форумы", -'announce_current' => "Текущие объявления", -'announce_add' => "Создание объявления", -'announce_none' => "Нет ни одного объявления", -'announce_button_add' => "Добавить объявление", -'announce_button_edit' => "Отредактировать объявление", -'announce_form_title' => "Заголовок объявления", -'announce_form_start' => "Дата начала (ДД.ММ.ГГГГ)", -'announce_form_end' => "Дата завершения (ДД.ММ.ГГГГ)", -'announce_form_startdesc' => "Не заполняйте, если не хотите использовать дату начала", -'announce_form_enddesc' => "Не заполняйте, если не хотите использовать дату завершения", -'announce_form_content' => "Текст объявления", -'announce_form_forums' => "Показывать в форумах", -'announce_form_forums2' => "Можете выбрать несколько форумов", -'announce_form_allforums' => "-- Во всех форумах --", -'announce_use_html' => "Включить HTML?", -'announce_form_options' => "Опции", -'announce_page_allforums' => "Все форумы", -'announce_page_numbforums' => "Форумы...", -'announce_form_enable' => "Опубликовать объявление", - -'menu_announcements' => "Объявления", -'mfm_title_result' => 'Результаты поиска пользователя', -'cp_edit_user' => "Поиск пользователя", -'cp_find_user' => "Введите часть имени или полное имя пользователя", -'cp_find_submit' => "Найти пользователя", -'cp_find_2_user' => "Выберите пользователя из списка", -'cp_find_2_submit' => "Отредактировать профиль", -'cp_admin_user' => "Вы не можете редактировать профиль администратора через эту панель", -'cp_no_perms' => "У вас нет прав для выполнения этого действия.", - - -'ipp_found' => "Кол-во найденных по вашему запросу сообщений:", -'ipp_click' => "Нажмите сюда, для просмотра результатов поиска в новом окне", -'ip_desc_text' => "Определение IP адреса: С помощью этой опции вы сможете узнать об IP адресе более подробные сведения (примечание, вы должны ввести все 4 части IP адреса для использования этого средства)
Поиск сообщений с этим IP: Эта функция запустит поиск всех сообщений, отправленных с этого IP адреса
Поиск пользователей, зарегистрированных с этого IP: Эта функция запустит поиск всех пользователей, зарегистрированных с этого IP адреса", -'ip_warn_text' => "Примечание: вы можете иcпользовать маску '*' (без кавычек) вместо последних частей IP адреса.
Пример: При использовании 127.*.*.* будут найдены все IP адреса, начинающиеся с 127.
При использовании 127.1.0.* будут найдены все IP адреса, начинающиеся с 127.1.0.
При использовании маски в середине IP адреса, произойдет ошибка и вы получите сообщение об ошибке. Пример. Использование 127.*.0.1 выдаст ошибку.", -'ip_enter' => "Введите IP адрес", -'ip_submit' => "Начать поиск", -'ip_resolve_result' => "Название хоста IP адреса %s — %s

Можете посетить nic.ru для получения дополнительной информации через WHOIS.", -'cp_no_matches' => "Ничего не найдено по вашему запросу. Вернитесь назад и расширьте критерии поиска.", - -'ip_resolve' => "Определение", -'ip_posts' => "Поиск сообщений", -'ip_members' => "Поиск пользователей", -'ipm_title' => "Результаты поиска пользователей", -'ipm_name' => "Имя", -'ipm_ip' => "IP адрес", -'ipm_posts' => "Сообщений", -'ipm_reg' => "Регистрация", -'ipm_options' => "Опции", -'ipm_group' => "Группа", -'ipm_edit' => "Редактировать", -'ipm_view' => "Профиль", - -'menu_title_mod' => 'Модерация', -'menu_ipsearch' => 'Средства IP адресов', -'menu_memsearch' => 'Поиск пользователей', - -'m_attach' => 'Прикрепленные файлы (attach\'и)', -'attach_title' => 'Файл', -'attach_topic' => 'Тема', -'attach_date' => 'Дата', -'attach_hsize' => 'Размер', -'attach_delete' => 'Удалить выбранные', - -'attach_space_count' => "Вами загружено %s файлов (%s% использовано)", -'attach_space_used' => 'Вами использовано %s из допустимых %s', -'attach_space_unl' => 'Вы используете %s от общего дискового пространства.', - -'splash_last5' => "Недавно прочитанные темы", -'splash_nopost' => 'Нет тем', -'splash_attach' => 'Последние файлы', -'splash_noattach' => 'Нет новых файлов для показа', - -'m_ignore_users' => "Игнорирование пользователей", -'mi5_title' => "Управление списком проигнорированных пользователей", -'mi5_text' => "В этой секции вы можете редактировать свой список проигнорированных пользователей.
При добавлении какого-либо пользователя в игнор, любые сообщения этого пользователя будут скрыты от вас до тех пор, пока вы сами не захотите прочесть их сообщения. Вы не можете добавлять в игнор пользователей, находящихся в пользовательской группе, защищенной от игнорирования.", -'mi5_norows' => "В данное время ваш список игнора пуст. Ниже вы можете добавить пользователей в список", -'mi5_name' => "Имя", -'mi5_group' => "Группа", -'mi5_posts' => "Сообщений", -'mi5_remove' => "Удалить", -'mi5_edit' => "Обновить список", -'mi5_finduser' => "Найти пользователя", -'mi5_addem' => 'Добавить новых пользователей в список', -'mi5_error' => "Ошибка", -'mi5_cantfind' => "Невозможно добавить пользователей: %s. Это могло произойти по следующим причинам: пользователь уже имеется в списке, либо пользователь находится в защищенной группе, либо такого пользователя не существует.", - -/// - - -'pph_max2' => "Фотографии должны быть не больше %s на %s пикселей.", -'pph_max' => "Объем всех фотографий не должен превышать %s кб.
", - -// added 1.2.1 - -'new_sub_link' => "Покупка оплачиваемых рассылок", -'m_top_list' => "Toп", -'tsl_home' => "Главная страница Топа", -'tsl_your_sites' => "Редактировать ваши сайты", - -// added 1.2 - -'ec_passy' => "Ваш текущий пароль", -'mi_prune_msg' => "Очистка папок", - - - -'av_gallery_title' => "Галерея аватаров:", -'av_gall_submit' => "Использовать выбранный аватар", -'av_gall_cancel' => "Выйти из галереи аватаров", -'av_gall_jump' => "Выбрать другую галерею аватаров:", -'av_root' => "Базовая галерея", -'av_go_gal' => "Выберите аватар в одной из наших галерей", -'av_go_go' => "ОК!", -'av_upload' => "Загрузите аватар со своего компьютера", -'av_url' => "Введите ссылку на файл вашего аватара", -'av_update' => "Обновить аватар", -'av_remove' => "Удалить аватар", -'av_current' => "Ваш текущий аватар", -'av_settings' => "Настройки вашего аватара", -'av_text_upload' => "Загружаемый с компьютера аватар должен быть не более %s килобайт.", -'av_allowed_files' => "Допускаются следующие типы файлов: %s", -'av_t_upload' => "Загруженный файл", -'av_t_url' => "Ссылка URL", -'av_t_gallery' => "Аватар галереи", -'av_t_na' => "Нет выбранных аватаров", -'av_text_url' => "Размер вашего аватара не должен превышать %s на %s пикселей.", -'av_confirm' => "Удалить ваш аватар?", -'av_autosize' => "Масштабирование изображения", -'av_as_desc' => "Если ваше изображение слишком большое, оно будет отмасштабировано до нужных размеров.", - -'pp_restore' => "Восстановление", -'pp_confirm' => "Удалить вашу фотографию?", -'av_c_up' => "Аватар обновлен", -'photo_c_up' => "Фотография обновлена", -'pph_title' => "Ваша персональная фотография", -'pph_desc' => "Здесь вы можете хранить фотографию, которая будет видна другим пользователям в вашем профиле.", -'pph_current' => "Используемая в настоящее время фотография", -'pph_change' => "Изменить фотографию...", -'pph_none' => "(Не определено)", -'pph_upload' => "ИЛИ загрузить новую фотографию с компьютера.", -'pph_url' => "Введите URL вашей фотографии", -'pph_submit' => "Обновить фотографию", -'pph_remove' => "Удалить фотографию", - -'pph_autosize' => "Масштабирование изображения", -'pph_as_desc' => "Если ваше изображение слишком большое, оно будет отмасштабировано до нужных размеров.", -'pph_t_upload' => "Загруженный файл", -'pph_t_url' => "Ссылка URL", - -'email_c_up' => "Настройки e-mail обновлены", - -'integ_msg' => "Номер в Integrity Messenger", - -'dead_section_title' => "Нет прав использования", -'dead_section_text' => "Администратор форума отключил функции этой части панели управления.", - - -'tt_menu' => "Меню", -'m_change_photo' => "Установка фотографии", - -'hs_exp' => "При выборе 'нет' могут возникнуть проблемы с пользователями, использующими тот же прокси сервер, что и вы.", - -// Added in B4 - -'ras_title' => "Защитный код", -'ras_numbers' => "Защитный код
Если вы не видите никаких чисел или видите битое изображение, обратитесь к администратору форума для устранения проблемы.", -'ras_text' => "Введите защитный код
Введите 6 цифр, отображенных выше в виде изображения.
Примечание: На изображении только цифры, к примеру '0' является нулем, а не буквой 'O'.", -'err_security_code' => "Введенный защитный код не соответствует изображенному. Создан новый код. Попробуйте еще раз.", -'email_changed_now' => "Ваш e-mail адрес успешно изменен", - -//--- - -'forum_subs_header' => "Ваши подписки на форумы", - -'forum_subs_none' => "В настоящее время вы не подписаны ни на один форум", -'f_none' => "--", -'in' => "В:", -'by' => "От:", - -'ft_forum' => "Форум", -'ft_posts' => "Ответов", -'ft_topics' => "Тем", -'ft_newpost' => "Создать новую тему", -'ft_last_post' => "Обновления", - - -'subs_today' => "Последний день", -'subs_day' => "Последние %s дней", -'subs_all' => "Все время", - -'show_topics_from' => "Показать темы за:", - -'subs_none' => "Вы не подписаны ни на одну тему. Выберите другой диапазон даты.", - -'auto_prune' => "Примечание: подписка будет отменена, если в теме не будет ответов в течение %s дней", -'no_auto_prune' => "Автоотмена подписки выключена в данное время", - - -'cf_required' => "Необходимая информация. Эта секция должна быть заполнена", - -'pp_number_posts' => "Количество сообщений за страницу темы", -'pp_number_topics' => "Количество тем за страницу форума", -'pp_use_default' => "По умолчанию", - -'mess_saved' => "Неотправленные", - - - -'lp_subject' => "Изменение e-mail адреса для", - -'avup_yes' => "У вас уже есть загруженный аватар (показан вверху страницы)
Если вы введете URL для аватара или загрузите новый аватар, текущий аватар будет удален.", -'avup_no' => "Вы не сохранили загруженный аватар. Вы можете выбрать аватар из списка выше.", - -'set_updated' => "Настройки обновлены", - -'hide_session_txt' => "Хотите скрыть id вашей «сессии» в ссылках? *", - -'m_messenger' => "Личный ящик", - -'av_tt_one' => "Не желаю использовать аватар (все текущие будут удалены)", -'av_tt_two' => "При выборе этой функции, все текущие выбранные, загруженные, сохраненные аватары будут удалены", - -'mess_new' => "Новое личное сообщение", - -'mess_contact' => "Список контактов", -'mess_folders' => "Редактировать папки", - -'mess_inbox' => "Входящие", - -'mess_archive' => "Архивирование сообщений", -'mess_tracker' => "Слежение за сообщениями", - - - - -'forum_jump' => "Переход по форумам", - -'m_personal' => "Ваш профиль", -'m_bio_info' => "Биография", -'m_sig_info' => "Изменить подпись", -'m_avatar_info' => "Установка аватара", - -'m_options' => "Настройки", - -'m_email_opt' => "Настройки e-mail", -'m_board_opt' => "Настройки форума", -'m_email_change' => "Изменить E-mail", -'m_passy_opt' => "Изменить пароль", - -'m_tracker' => "Подписки", -'m_view_subs' => "Темы", -'m_view_forum' => "Форумы", - - - -'ta_size' => 'Размер блокнота:', - -'new_window' => "В новом окне", - -'subs_delete' => "Отписаться", - -'with_selected' => "от выбранных тем", - -'ta_s' => 'малый', -'ta_m' => 'средний', -'ta_l' => 'большой', - -'cp_edit_sig' => "Изменение подписи", -'cp_current_sig' => "Текущая подпись", -'cp_submit_sig' => "Обновить подпись", - -'messenger_summary' => "Обзор личного ящика", -'total_messages' => "Всего сообщений (во всех папках)", -'messages_left' => "Сообщений до переполнения ящика: ", -'folders_full' => "ВАШ ЛИЧНЫЙ ЯЩИК ПЕРЕПОЛНЕН!", -'total_capacity' => "от общего количества", - -'change_email_title' => "Изменение e-mail адреса", - -'ce_new_email' => "Введите новый e-mail адрес", -'ce_new_email2' => "Повторите новый e-mail адрес", - -'ce_current' => "Ваш текущий e-mail адрес: ", -'ce_auth' => "

ПРИМЕЧАНИЕ: После изменения e-mail адреса вы должны будете переактивировать вашу учетную запись.
На ваш e-mail адрес будет отправлено письмо с подробными инструкциями о дальнейших действиях.

Вы должны будете переавторизоваться. Настоятельно рекомендуем вам, перед изменением e-mail адреса, воспользоваться функцией восстановления пароля, если вы его не помните.", - -'ce_redirect' => "Письмо на e-mail отправлено. Сейчас вы перейдете на страницу активации", - -'ce_subject' => "Запрос на изменение e-mail адреса для ", - -'pass_change_text' => "Здесь вы можете изменить ваш пароль.

После успешного изменения пароля, форум попытается обновить ваш сеанс. При возникновении каких-либо проблем, попробуйте переавторизоваться. Если ничего не получится, обратитесь к Администратору форума для разрешения проблемы.", - -'pass_redirect' => "Ваш пароль успешно изменен. В зависимости от ваших настроек cookie, вам возможно нужно будет переавторизоваться на форуме с использованием вашего нового пароля.", - - - -//---------------------- - - - - -total_posts => "Всего сообщений", -aol_name => "Имя в AOL", -home_page => "Вебсайт", -viewing_profile => "Просмотр профиля", -registration_date => "Дата регистрации", -change_email => "Запрос на изменение e-mail адреса", -no_information => "Информация не введена", -msn_name => "Имя в MSN", -profile_edited => "Ваш профиль обновлен", -member_level => "Уровень пользователя", -post_average => "Среднее кол-во сообщений", -b_date => "Ваша дата рождения", -send_pm => "Отправить пользователю <# NAME #> Личное письмо", -M_1 => "Янв.", -M_2 => "Фев.", -thank_you => "Спасибо", -M_3 => "Март.", -send_email => "Отправить пользователю <# NAME #> письмо на e-mail", -M_4 => "Апр.", -D_0 => "Вс.", -registration_process => "Запрос на изменение e-mail адреса", -M_5 => "Май", -D_1 => "Пн.", -per_day => "сообщений в день", -M_6 => "Июнь", -D_2 => "Вт.", -no_photo => "[ Нет фотографии ]", -M_7 => "Июль", -D_3 => "Ср.", -M_8 => "Авг.", -D_4 => "Чт.", -M_9 => "Сен.", -D_5 => "Пт.", -D_6 => "Сб.", -hidden_email => "<# NAME #> скрыл свой e-mail адрес", -auth_text => "Выполняется ваш запрос на изменение E-mail адреса.

Администрация форума требует реальности всех вводимых E-mail адресов. Через 10 минут (возможно и раньше) вы получите письмо с инструкциями следующего шага.
Отправлено письмо на e-mail:", -icq_number => "Номер ICQ", -M_10 => "Окт.", -M_11 => "Ноя.", -M_12 => "Дек.", -add_book => "Добавить пользователя <# NAME #> в ваш список контактов", -contact_header => "Контактная информация", -signature => "Подпись", -last_modification => "Последнее обновление профиля", -yahoo_name => "Имя в Yahoo", -personal_header => "Статистика и личные данные пользователя <# NAME #>", - -//---- - -'note_pad' => "Ваш личный блокнот", -'submit_notepad' => "Обновить", - -'note_pad_empty' => "Здесь вы можете хранить отрывки сообщений или любую другую важную информацию", - -month1 => "Январь", -birthday => "Дата рождения", -month2 => "Февраль", -month3 => "Март", -month4 => "Апрель", -av_personal => "Вы используете личный аватар", -width => "Ширина", -month5 => "Май", -js_used => "Вы использовали", -month6 => "Июнь", -month7 => "Июль", -avatar_pre_title => "предустановленные аватары", -month8 => "Август", -lp_redirect => "Отправленные e-mail", -month9 => "Сентябрь", -settings_hour => "Часов", -edit_profile => "Изменить профиль", -messenger_url => "Перейти в Личный Ящик", -no => "Нет", -personal_help => "Здесь вы можете изменить информацию о себе, которая будет видна другим пользователям", -subs_forum => "Форум", -settings_submit => "Сохранить изменения", -js_location => "Место жительства", - -avatar_url_allowed => "
Вы можете использовать аватары, предустановленные на форуме или ввести ссылку на аватар. Выберите, что вы предпочитаете.", -privacy_settings => "Скрытые настройки", -avatar_show_all => "
[Помощь: показать все аватары]", -account_title => "Изменение вашей учетной записи", -welcome => "Добро пожаловать в ваши личные данные ", -maximum => "Максимальная", -avatar_pre_txt => "Выберите аватар из списка ниже. Кликните на название аватара для его просмотра.", -height => "Высота", -icq => "Номер ICQ", -subs_replies => "Ответов", -avatar_url_title => "Загрузка личного аватара", -avatar_title => "Настройки аватара", -month10 => "Октябрь", -month11 => "Ноябрь", -account => "Сохранить изменения", -month12 => "Декабрь", -hide_email => "Скрыть мой адрес e-mail от других пользователей
При включении этой функции, пользователи форума не смогут отправлять вам письма из форума.", -account_email_txt => "Ваш E-mail адрес", -account_pass_new2 => "Повторите ваш НОВЫЙ пароль", -website => "Адрес вашей домашней страницы", -account_pass_title => "Ваш пароль", -personal_ops => "Ваши личные настройки", -settings_title => "Настройки вашей учетной записи", -yahoo => "Имя в Yahoo", -subs_cancel => "Отмена", - -account_email_title => "Ваш зарегистрированный e-mail адрес", -js_signature => "Подпись", -settings_viewimg => "Отображать картинки в сообщениях (например смайлы, изображения)?", -t_title => "Ваши личные данные", - -av_none_selected => "[Аватар не выбран]", -subs_header => "Текущие подписки", -profile_title => "Дополнительная секция вашего профиля", -board_prefs => "Настройки Форума", -subs_left => "Осталось дней", -subs_topic => "Тема", -settings_viewava => "Отображать аватары пользователей в темах?", -personal_ops_txt => "Здесь вы можете изменить информацию о себе, с которой могут ознакомиться другие пользователи. Также вы можете выбрать себе аватар (маленькая картинка, которая будет отображаться под вашим именем в ваших сообщениях.", -subs_start => "Подписан на", -submit_email => "Изменить настройки e-mail", - - -'msg_options' => "Настройки", - -subs_view => "Просмотров", -email_text_lp => "Запрос забытого пароля", -js_max => "Максимально допустимая длина", -interests => "Ваши интересы", -submit_profile => "Сохранить изменения", -avatar_click => "Выберите один из аватаров в списке.", -location => "Место жительства", -avatar_url_ext => "Разрешенные типы файлов: ", -email_address => "Ваш e-mail адрес", -pm_reminder => "Уведомлять меня по e-mail при получении новых личных сообщений
При включении этой функции, вы будете уведомлены на e-mail каждый раз при получении нового Личного сообщения.", -subs_last_post => "Обновление", -email => "Настройки E-mail", -account_email_submit => "Сохранить изменения", -settings => "Настройки учетной записи", -photo => "Вы можете ввести URL своей фотографии
[Она будет отображаться только при просмотре вашего профиля, но не в сообщениях]", -js_so_far => "символ(а)ов", -email_help => "Здесь вы можете изменить настройки e-mail", -settings_dopopup => "Желаете получать уведомление с форума при получении нового личного сообщения?", -settings_display => "Настройки отображения форума", -send_full_msg => "Добавлять копию сообщения из подписанных тем в отправляемое письмо-уведомление
При включении этой функции, копия нового сообщения, в простом текстовом формате, будет выслана вам на e-mail.", -member_title => "Ваше название статуса", -yes => "Да", -account_pass_new => "Введите ваш НОВЫЙ пароль", -settings_viewsig => "Отображать подписи пользователей в темах?", -js_interests => "Интересы", -av_preset => "Вы используете предустановленные аватары форума", -aol => "Имя в AOL", -settings_lang => "Язык интерфейса форума", -pixels => "пикселов", -t_welcome => "Добро пожаловать в ваши личные данные", -personal => "Личная информация", -daily_average => "Среднее количество сообщений в день", -account_pass_submit => "Изменить пароль", -stats_header => "Обзор вашей учетной записи", -settings_time => "Часовой пояс", -subs_title => "Ваши подписки", -no_posts => "Пока не имеется", -subs => "Слежение за темой", -subs_deleted => "Подписка успешно удалена", -msn => "Имя в MSN", -registered => "Вы зарегистрированы ", -subs_by => "автор:", -number_posts => "Всего сообщений", -account_pass_old => "Введите ваш ТЕКУЩИЙ пароль", -js_characters => "символов", -account_email_req => "Вы получите e-mail для подтверждения изменений", -email_title => "Настройки e-mail", - -check_length => "Проверить длину", -admin_send => "Сообщать мне обо всех изменениях, проводимых администратором форума
При включении этой функции, ваш e-mail адрес будет добавлен к списку e-mail адресов администратора и вы, всякий раз будете уведомлены по e-mail, о любых изменениях на форуме.", -); - - -// Time zones... -$lang['time_-12'] = "(GMT - 12:00) Эневеток, Кваджалейн"; -$lang['time_-11'] = "(GMT - 11:00) о.Мидуэй, Самоа"; -$lang['time_-10'] = "(GMT - 10:00) Гавайи"; -$lang['time_-9'] = "(GMT - 9:00) Аляска"; -$lang['time_-8'] = "(GMT - 8:00) Тихоокеанское время (США и Канада), Тихуана"; -$lang['time_-7'] = "(GMT - 7:00) Горное время (США и Канада), Аризона"; -$lang['time_-6'] = "(GMT - 6:00) Центральное время (США и Канада), Мехико"; -$lang['time_-5'] = "(GMT - 5:00) Восточное время (США и Канада), Богота, Лима, Кито"; -$lang['time_-4'] = "(GMT - 4:00) Атлантическое время (Канада), Каракас, Ла Пас, Сантьяго"; -$lang['time_-3.5'] = "(GMT - 3:30) Ньюфаундленд"; -$lang['time_-3'] = "(GMT - 3:00) Бразилия, Буэнос-Айрес, Джорджтаун, Гренландия"; -$lang['time_-2'] = "(GMT - 2:00) Среднеатлантическое время"; -$lang['time_-1'] = "(GMT - 1:00) Азорские о-ва, о-ва Зеленого мыса"; -$lang['time_0'] = "(GMT) Касабланка, Дублин, Эдинбург, Лиссабон, Лондон, Монровия"; -$lang['time_1'] = "(GMT + 1:00) Амстердам, Берлин, Брюссель, Мадрид, Париж, Рим"; -$lang['time_2'] = "(GMT + 2:00) Каир, Хельсинки, Калининград, Южная Африка, Варшава"; -$lang['time_3'] = "(GMT + 3:00) Багдад, Эр-Рияд, Москва, Найроби"; -$lang['time_3.5'] = "(GMT + 3:30) Тегеран"; -$lang['time_4'] = "(GMT + 4:00) Абу-Даби, Баку, Мускат, Тбилиси"; -$lang['time_4.5'] = "(GMT + 4:30) Кабул"; -$lang['time_5'] = "(GMT + 5:00) Екатеринбург, Исламабад, Карачи, Ташкент"; -$lang['time_5.5'] = "(GMT + 5:30) Бомбей, Калькутта, Мадрас, Нью-Дели"; -$lang['time_6'] = "(GMT + 6:00) Алма-Ата, Коломбо, Дхака, Новосибирск, Омск"; -$lang['time_7'] = "(GMT + 7:00) Бангкок, Ханой, Джакарта, Красноярск"; -$lang['time_8'] = "(GMT + 8:00) Пекин, Гонконг, Перт, Сингапур, Тайпей"; -$lang['time_9'] = "(GMT + 9:00) Осака, Саппоро, Сеул, Токио, Якутск"; -$lang['time_9.5'] = "(GMT + 9:30) Аделаида, Дарвин"; -$lang['time_10'] = "(GMT + 10:00) Канберра, Мельбурн, Гуам, Сидней, Владивосток"; -$lang['time_11'] = "(GMT + 11:00) Магадан, Новая Каледония, Соломоновы о-ва"; -$lang['time_12'] = "(GMT + 12:00) Окленд, Фиджи, Камчатка, Веллингтон, Маршалловы о-ва"; - -?> \ No newline at end of file diff --git a/upload/cache/skin_cache/._index.html b/upload/cache/skin_cache/._index.html new file mode 100644 index 00000000..58729366 Binary files /dev/null and b/upload/cache/skin_cache/._index.html differ diff --git a/upload/cache/skin_cache/index.html b/upload/cache/skin_cache/index.html index 787531db..52a588b2 100644 --- a/upload/cache/skin_cache/index.html +++ b/upload/cache/skin_cache/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

Ошибка < Русская версия Invision Power Board

-
-Вы попали на несуществующую страницу!
Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
-Invision Power Board: - - - + Invision Power Board - Bulletin Board System

403: Invision Power Board -> Forbidden


You have reached this Page in error, please use your back button to return to Invision Board.
Invision Power Board \ No newline at end of file diff --git a/upload/conf_global.php b/upload/conf_global.php.dist similarity index 100% rename from upload/conf_global.php rename to upload/conf_global.php.dist diff --git a/upload/converge_local/apis/allowed_methods.php b/upload/converge_local/apis/allowed_methods.php new file mode 100644 index 00000000..b1215f42 --- /dev/null +++ b/upload/converge_local/apis/allowed_methods.php @@ -0,0 +1,154 @@ + $Id$ +| > $Revision: 102 $ +| > $Date: 2005-12-22 10:14:15 +0000 (Thu, 22 Dec 2005) $ ++--------------------------------------------------------------------------- +| +| > CONVERGE SOAP: ALLOWED METHODS (YES) +| > Script written by Matt Mecham +| > Date started: Friday 6th January 2006 (11:28) +| ++--------------------------------------------------------------------------- +*/ + +$_CONVERGE_ALLOWED_METHODS = array(); + +/** +* CONVERGE LOG OUT +* Passes info to complete local log out +*/ +$_CONVERGE_ALLOWED_METHODS['converge_log_out'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + 'email_address' => 'string', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* Disable converge from the system +*/ +$_CONVERGE_ALLOWED_METHODS['converge_disable'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* ON Member Delete +* Delete the member +*/ +$_CONVERGE_ALLOWED_METHODS['on_member_delete'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + 'multiple_email_addresses' => 'string', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* ON Password change +* Give the local app a chance to perform a new member log in key request +*/ +$_CONVERGE_ALLOWED_METHODS['on_password_change'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + 'email_address' => 'string', + 'md5_once_password' => 'string', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* ON EMAIL CHANGE +* Update the local app with the new email address +*/ +$_CONVERGE_ALLOWED_METHODS['on_email_change'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + 'old_email_address' => 'string', + 'new_email_address' => 'string', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* CONVERGE LOG IN +* Passes info to complete local log in +*/ +$_CONVERGE_ALLOWED_METHODS['converge_log_in'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + 'email_address' => 'string', + 'md5_once_password' => 'string', + 'ip_address' => 'string', + 'unix_join_date' => 'integer', + 'timezone' => 'integer', + 'dst_autocorrect' => 'integer', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* Get a batch of members to import +* +*/ +$_CONVERGE_ALLOWED_METHODS['import_members'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + 'limit_a' => 'integer', + 'limit_b' => 'integer', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +/** +* Get number of members and last ID +* +*/ +$_CONVERGE_ALLOWED_METHODS['get_members_info'] = array( + 'in' => array( + 'auth_key' => 'string', + 'product_id' => 'integer', + ), + 'out' => array( + 'response' => 'xmlrpc' + ) + ); + +?> \ No newline at end of file diff --git a/upload/converge_local/apis/server_functions.php b/upload/converge_local/apis/server_functions.php new file mode 100644 index 00000000..8db90ca4 --- /dev/null +++ b/upload/converge_local/apis/server_functions.php @@ -0,0 +1,732 @@ + $Id$ +| > $Revision: 102 $ +| > $Date: 2005-12-22 10:14:15 +0000 (Thu, 22 Dec 2005) $ ++--------------------------------------------------------------------------- +| +| > CONVERGE SOAP: SERVER FUNCTIONS +| > Script written by Josh Williams, Matt Mecham +| > Date started: Friday 6th January 2006 (11:28) +| ++--------------------------------------------------------------------------- +*/ + +class Converge_Server +{ + /** + * Defines the service for WSDL + * @access Private + * @var array + */ + var $__dispatch_map = array(); + + /** + * IPS Global Class + * @access Private + * @var object + */ + var $ipsclass; + + /** + * IPS API SERVER Class + * @access Private + * @var object + */ + var $class_api_server; + + /** + * Converge_Server::Converge_Server() + * + * CONSTRUCTOR + * + * @return void + **/ + function Converge_Server( & $ipsclass ) + { + //----------------------------------------- + // Set IPS CLASS + //----------------------------------------- + + $this->ipsclass = $ipsclass; + + //----------------------------------------- + // Load allowed methods and build dispatch + // list + //----------------------------------------- + + require_once( ROOT_PATH . 'converge_local/apis/allowed_methods.php' ); + + if ( is_array( $_CONVERGE_ALLOWED_METHODS ) and count( $_CONVERGE_ALLOWED_METHODS ) ) + { + foreach( $_CONVERGE_ALLOWED_METHODS as $_method => $_data ) + { + $this->__dispatch_map[ $_method ] = $_data; + } + } + } + + /** + * Converge_Server::on_member_delete() + * + * Deletes the member. + * Keep in mind that the member may not be in the local DB + * if they've not yet visited this site. + * + * This will return a param "response" with either + * - FAILED (Unknown failure) + * - SUCCESS (Added OK) + * + * + * @param int $product_id Product ID + * @param string $auth_key Authentication Key + * @param string $multiple_email_addresses Comma delimited list of email addresses + * @return xml + **/ + function on_member_delete( $auth_key, $product_id, $multiple_email_addresses='' ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $return = 'FAILED'; + $emails = explode( ",", $multiple_email_addresses ); + $member_ids = array(); + + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + //----------------------------------------- + // Get member IDs + //----------------------------------------- + + $this->ipsclass->DB->build_query( array( 'select' => 'id', + 'from' => 'members', + 'where' => "email IN ('" . implode( "','", $emails ) . "')" ) ); + + $this->ipsclass->DB->exec_query(); + + while( $row = $this->ipsclass->DB->fetch_row() ) + { + $member_ids[ $row['id'] ] = $row['id']; + } + + //----------------------------------------- + // Remove the members + //----------------------------------------- + + if ( count( $member_ids ) ) + { + //----------------------------------------- + // Get the member class + //----------------------------------------- + + require_once( ROOT_PATH . "sources/action_admin/member.php" ); + $lib = new ad_member(); + $lib->ipsclass =& $this->ipsclass; + + # Set up + $this->ipsclass->member['mgroup'] = $this->ipsclass->vars['admin_group']; + + $lib->member_delete_do( $member_ids ); + } + + //----------------------------------------- + // return + //----------------------------------------- + + $return = 'SUCCESS'; + + $this->class_api_server->api_send_reply( array( 'complete' => 1, + 'response' => $return ) ); + exit(); + } + } + + /** + * Converge_Server::on_password_change() + * + * handles new password change + * + * This will return a param "response" with either + * - FAILED (Unknown failure) + * - SUCCESS (Added OK) + * + * + * @param int $product_id Product ID + * @param string $auth_key Authentication Key + * @param string $email_address Email address + * @param string $md5_once_password Plain text password hashed by MD5 + * @return xml + **/ + function on_password_change( $auth_key, $product_id, $email_address, $md5_once_password ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $return = 'FAILED'; + + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + //----------------------------------------- + // Update: CONVERGE + //----------------------------------------- + + $salt = $this->ipsclass->converge->generate_password_salt(5); + $passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, $md5_once_password ); + + $converge = array( + 'converge_pass_hash' => $passhash, + 'converge_pass_salt' => str_replace( '\\', "\\\\", $salt ) + ); + + $this->ipsclass->DB->do_update( 'members_converge', $converge, "converge_email='" . $email_address . "'" ); + + $return = 'SUCCESS'; + + $this->class_api_server->api_send_reply( array( 'complete' => 1, + 'response' => $return ) ); + exit(); + } + } + + /** + * Converge_Server::on_email_change() + * + * Updates the local app's DB + * + * This will return a param "response" with either + * - FAILED (Unknown failure) + * - SUCCESS (Added OK) + * + * + * @param int $product_id Product ID + * @param string $auth_key Authentication Key + * @param string $old_email_address Existing email address + * @param string $new_email_address NEW email address to change + * @return xml + **/ + function on_email_change( $auth_key, $product_id, $old_email_address, $new_email_address ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $return = 'FAILED'; + + //----------------------------------------- + // Get member + //----------------------------------------- + + $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'members', + 'where' => "email='".$old_email_address."'" ) ); + + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + if ( $old_email_address AND $new_email_address ) + { + $this->ipsclass->DB->do_update( 'members_converge', array( 'converge_email' => $new_email_address ), "converge_email='" . $old_email_address . "'" ); + + $this->ipsclass->DB->do_update( 'members' , array( 'email' => $new_email_address ), "email='" . $old_email_address . "'" ); + + //----------------------------------------- + // Update member's username? + // This happens when a converge member is + // created + //----------------------------------------- + + if ( $member['email'] == $old_email_address ) + { + $this->ipsclass->DB->do_update( 'members', array( 'username' => $new_email_address ), "id='" . $member['id'] . "'" ); + } + + $return = 'SUCCESS'; + } + + $this->class_api_server->api_send_reply( array( 'complete' => 1, + 'response' => $return ) ); + exit(); + } + } + + + /** + * Converge_Server::import_members() + * + * Returns a batch of members to import + * Important! + * Each member row must return the following: + * - email_address + * - pass_salt (5 chr salt) + * - password (md5 hash of: md5( md5( $salt ) . md5( $raw_pass ) ); + * - ip_address (optional) + * - join_date (optional) + * + * EACH BATCH MUST BE ORDERED BY ID ASC (low to high) + * + * @param string $auth_key Authentication Key + * @param int $product_id Product ID + * @param int $limit_a SQL limit a + * @param int $limit_b SQL limit b + * @return xml + **/ + function import_members( $auth_key, $product_id, $limit_a, $limit_b ) + { + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $members = array(); + $done = 0; + + //----------------------------------------- + // Get Data + //----------------------------------------- + + $this->ipsclass->DB->build_query( array( 'select' => '*', + 'from' => 'members_converge', + 'order' => 'converge_id ASC', + 'limit' => array( $limit_a, $limit_b ) ) ); + + $this->ipsclass->DB->exec_query(); + + + while( $row = $this->ipsclass->DB->fetch_row() ) + { + $members[ $row['converge_id'] ] = array( 'email_address' => $row['converge_email'], + 'pass_salt' => $row['converge_pass_salt'], + 'password' => $row['converge_pass_hash'], + 'join_date' => $row['converge_joined'] ); + } + + if ( ! count( $members ) ) + { + $done = 1; + } + + $return = array( 'complete' => $done, + 'members' => $members ); + + # return complex data + $this->class_api_server->api_send_reply( $return, 1 ); + exit(); + } + } + + /** + * Converge_Server::get_members_info() + * + * IP.Converge uses this to gather how many users the local application has, + * and the last ID entered into the local application’s member table. + * + * Expected repsonse: + * count => The number of users + * last_id => The last ID + * + * @param string $auth_key Authentication Key + * @param int $product_id Product ID + * @return xml + **/ + function get_members_info( $auth_key, $product_id ) + { + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + //----------------------------------------- + // Get Data + //----------------------------------------- + + $member_count = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as count', + 'from' => 'members' ) ); + + $member_last = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'MAX(id) as max', + 'from' => 'members' ) ); + + + $this->class_api_server->api_send_reply( array( 'count' => intval( $member_count['count'] ), + 'last_id' => intval( $member_last['max'] ) ) ); + exit(); + } + } + + /** + * Converge_Server::converge_log_out() + * + * Logs in the member out of local application + * + * This will return a param "response" with either + * - FAILED (Unknown failure) + * - SUCCESS (Added OK) + * + * + * @param string $auth_key Authentication Key + * @param int $product_id Product ID + * @param string $email_address Email address of user logged in + * @return xml + **/ + function converge_log_out( $auth_key, $product_id, $email_address='' ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $update = array(); + + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + //----------------------------------------- + // Get member + //----------------------------------------- + + $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'members', + 'where' => "email='".$email_address."'" ) ); + + //----------------------------------------- + // If we've got a member, delete their session + // and change the log in key so that the members + // auto-log in cookies won't work. + //----------------------------------------- + + if ( $member['id'] ) + { + $update['member_login_key'] = $this->ipsclass->converge->generate_auto_log_in_key(); + $update['login_anonymous'] = '0&0'; + $update['last_visit'] = time(); + $update['last_activity'] = time(); + + $this->ipsclass->DB->do_update( 'members', $update, 'id=' . $member['id'] ); + + //----------------------------------------- + // Delete session + //----------------------------------------- + + $this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'sessions', + 'where' => 'member_id='.$member['id'] ) ); + } + + //----------------------------------------- + // Add cookies + //----------------------------------------- + + $this->class_api_server->api_add_cookie_data( array( 'name' => $this->ipsclass->vars['cookie_id'] . 'member_id', + 'value' => 0, + 'path' => $this->ipsclass->vars['cookie_path'], + 'domain' => $this->ipsclass->vars['cookie_domain'], + 'sticky' => 1 ) ); + + $this->class_api_server->api_add_cookie_data( array( 'name' => $this->ipsclass->vars['cookie_id'] . 'pass_hash', + 'value' => 0, + 'path' => $this->ipsclass->vars['cookie_path'], + 'domain' => $this->ipsclass->vars['cookie_domain'], + 'sticky' => 1 ) ); + + $this->class_api_server->api_add_cookie_data( array( 'name' => $this->ipsclass->vars['cookie_id'] . 'session_id', + 'value' => 0, + 'path' => $this->ipsclass->vars['cookie_path'], + 'domain' => $this->ipsclass->vars['cookie_domain'], + 'sticky' => 0 ) ); + + $this->class_api_server->api_send_reply( array( 'complete' => 1, + 'response' => 'SUCCESS' ) ); + exit(); + } + } + + /** + * Converge_Server::converge_log_in() + * + * Logs in the member to the local application + * + * This must return + * - complete [ All done.. ] + * - session_id [ Session ID created ]* + * - member_id [ Member's log in ID / email ] + * - log_in_key [ Member's log in key or password ] + * -- RESPONSE + * - FAILED (Unknown failure) + * - SUCCESS (Added OK) + * + * The session key and password/log in key will be posted to + * this apps handshake API so that the app can return cookies. + * + * @param int $product_id Product ID + * @param string $auth_key Authentication Key + * @param string $email_address Email address of user logged in + * @param string $md5_once_password The plain text password, hashed once + * @param string $ip_address IP Address of registree + * @param string $unix_join_date The member's join date in unix format + * @param string $timezone The member's timezone + * @param string $dst_autocorrect The member's DST autocorrect settings + * @return xml + **/ + function converge_log_in( $auth_key, $product_id, $email_address='', $md5_once_password='', $ip_address='', $unix_join_date='', $timezone=0, $dst_autocorrect=0 ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $return = 'FAILED'; + + //----------------------------------------- + // Authenticate + //----------------------------------------- + + if ( $this->__authenticate( $auth_key, $product_id ) !== FALSE ) + { + //----------------------------------------- + // Get member + //----------------------------------------- + + $this->ipsclass->member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'members', + 'where' => "email='".$email_address."'" ) ); + + //----------------------------------------- + // No such user? Create one! + // FAIL SAFE + //----------------------------------------- + + if ( ! $this->ipsclass->member['id'] ) + { + $unix_join_date = $unix_join_date ? $unix_join_date : time(); + $md5_once_password = $md5_once_password ? $md5_once_password : md5( $email_address . $unix_join_date . uniqid( microtime() ) ); + $ip_address = $ip_address ? $ip_address : '127.0.0.1'; + + $this->ipsclass->member = $this->__create_user_account( $email_address, $md5_once_password, $ip_address, $unix_join_date, $timezone, $dst_autocorrect ); + $return = 'SUCCESS'; + } + else + { + $return = 'SUCCESS'; + } + + //----------------------------------------- + // Start session + //----------------------------------------- + + $session = $this->__create_user_session( $this->ipsclass->member ); + + //----------------------------------------- + // Add cookies + //----------------------------------------- + + $this->class_api_server->api_add_cookie_data( array( 'name' => $this->ipsclass->vars['cookie_id'] . 'member_id', + 'value' => $session['id'], + 'path' => $this->ipsclass->vars['cookie_path'], + 'domain' => $this->ipsclass->vars['cookie_domain'], + 'sticky' => 1 ) ); + + $this->class_api_server->api_add_cookie_data( array( 'name' => $this->ipsclass->vars['cookie_id'] . 'pass_hash', + 'value' => $session['member_login_key'], + 'path' => $this->ipsclass->vars['cookie_path'], + 'domain' => $this->ipsclass->vars['cookie_domain'], + 'sticky' => 1 ) ); + + $this->class_api_server->api_add_cookie_data( array( 'name' => $this->ipsclass->vars['cookie_id'] . 'session_id', + 'value' => $session['_session_id'], + 'path' => $this->ipsclass->vars['cookie_path'], + 'domain' => $this->ipsclass->vars['cookie_domain'], + 'sticky' => 0 ) ); + + $this->class_api_server->api_send_reply( array( 'complete' => 1, + 'response' => $return, + 'session_id' => $session->session_id, + 'member_id' => $session->member['id'], + 'log_in_key' => $session->member['member_login_key'] ) ); + exit(); + } + } + + /** + * Converge_Server::__create_user_session() + * + * Has to return at least the member ID, member log in key and session ID + * + * + * @param array $member Array of member information + * @return array $session Session information + **/ + function __create_user_session( $member ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $update = array(); + + //----------------------------------------- + // Generate a new log in key + //----------------------------------------- + + if ( $this->ipsclass->vars['login_change_key'] OR ! $member['member_login_key'] ) + { + $update['member_login_key'] = $this->ipsclass->converge->generate_auto_log_in_key(); + } + + //----------------------------------------- + // Set our privacy status + //----------------------------------------- + + $update['login_anonymous'] = '0&1'; + + //----------------------------------------- + // Update member? + //----------------------------------------- + + if ( is_array( $update ) and count( $update ) ) + { + $this->ipsclass->DB->do_update( 'members', $update, 'id=' . $member['id'] ); + } + + //----------------------------------------- + // Still here? Create a new session + //----------------------------------------- + + require_once( ROOT_PATH . 'sources/classes/class_session.php' ); + $session = new session(); + $session->ipsclass =& $this->ipsclass; + $session->time_now = time(); + $session->member = $member; + + $session->create_member_session(); + + $session->member['_session_id'] = $session->session_id; + + return $session->member; + } + + /** + * Converge_Server::__create_user_account() + * + * Routine to create a local user account + * + * + * @param string $email_address Email address of user logged in + * @param string $md5_once_password The plain text password, hashed once + * @param string $ip_address IP Address of registree + * @param string $unix_join_date The member's join date in unix format + * @param string $timezone The member's timezone + * @param string $dst_autocorrect The member's DST autocorrect settings + * @return array $member Newly created member array + **/ + function __create_user_account( $email_address='', $md5_once_password, $ip_address, $unix_join_date, $timezone=0, $dst_autocorrect=0 ) + { + //----------------------------------------- + // Check to make sure there's not already + // a member registered. + //----------------------------------------- + + $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'members', + 'where' => "email='".$email_address."'" ) ); + + if ( $member['id'] ) + { + return $member; + } + + //----------------------------------------- + // INIT + //----------------------------------------- + + $unix_join_date = $unix_join_date ? $unix_join_date : time(); + $ip_address = $ip_address ? $ip_address : $this->ipsclass->ip_address; + + //----------------------------------------- + // Grab module.. + //----------------------------------------- + + require( ROOT_PATH . "sources/loginauth/login_core.php" ); + $login_core = new login_core(); + $login_core->ipsclass = $this->ipsclass; + + //----------------------------------------- + // Create member + //----------------------------------------- + + $member = $login_core->_create_local_member( $email_address, $md5_once_password, $email_address, $unix_join_date, $ip_address ); + + return $member; + } + + /** + * Converge_Server::__authenticate() + * + * Checks to see if the request is allowed + * + * @param string $key Authenticate Key + * @param string $product_id Product ID + * @access Private + * @return string Error message, if any + **/ + function __authenticate( $key, $product_id ) + { + //----------------------------------------- + // Check converge users API DB + //----------------------------------------- + + $info = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'converge_local', + 'where' => "converge_product_id=" . intval($product_id) . " AND converge_active=1 AND converge_api_code='{$key}'" ) ); + + //----------------------------------------- + // Got a user? + //----------------------------------------- + + if ( ! $info['converge_api_code'] ) + { + $this->class_api_server->api_send_error( 100, 'Unauthorized User' ); + return FALSE; + } + else if ( CVG_IP_MATCH AND ( $this->ipsclass->my_getenv('REMOTE_ADDR') != $info['converge_ip_address'] ) ) + { + $this->class_api_server->api_send_error( 101, 'IP ADDRESS not registered' ); + return FALSE; + } + else + { + return TRUE; + } + } + + +} +?> \ No newline at end of file diff --git a/upload/converge_local/converge.php b/upload/converge_local/converge.php new file mode 100644 index 00000000..c282c608 --- /dev/null +++ b/upload/converge_local/converge.php @@ -0,0 +1,591 @@ + $Date: 2006-02-01 18:16:26 +0000 (Wed, 01 Feb 2006) $ +| > $Revision: 132 $ +| > $Author: bfarber $ ++--------------------------------------------------------------------------- +| +| > CONVERGE Wrapper script +| > Script written by Matt Mecham +| > Date started: 6th March 2006 +| ++-------------------------------------------------------------------------- +*/ + +/** +* Main executable wrapper. +* +* Set-up and load module to run +* +* @package InvisionPowerBoard +* @author Matt Mecham +* @version 2.1 +*/ + +/** +* Script type +* +*/ +define( 'IPB_THIS_SCRIPT', 'public' ); +define( 'IPB_LOAD_SQL' , 'queries' ); + +require_once( '../init.php' ); + +//=========================================================================== +// MAIN PROGRAM +//=========================================================================== + +$INFO = array(); + +//-------------------------------- +// Load our classes +//-------------------------------- + +require_once ROOT_PATH . "sources/ipsclass.php"; +require_once KERNEL_PATH . "class_converge.php"; +require_once ROOT_PATH . "conf_global.php"; + +# Initiate super-class +$ipsclass = new ipsclass(); +$ipsclass->vars = $INFO; + +//-------------------------------- +// The clocks a' tickin' +//-------------------------------- + +$Debug = new Debug; +$Debug->startTimer(); + +//-------------------------------- +// Load the DB driver and such +//-------------------------------- + +$ipsclass->init_db_connection(); + +# Turn off shutdown +$ipsclass->DB->obj['use_shutdown'] = 0; + +//-------------------------------- +// Set up our vars +//-------------------------------- + +$ipsclass->parse_incoming(); + +//-------------------------------- +// Set converge +//-------------------------------- + +$ipsclass->converge = new class_converge( $ipsclass->DB ); + +//-------------------------------- +// Start off the cache array +//-------------------------------- + +$ipsclass->cache_array = array('components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages' ); + +//=========================================================================== +// Get cache... +//=========================================================================== + +$ipsclass->init_load_cache( $ipsclass->cache_array ); + +//-------------------------------- +// Set debug mode +//-------------------------------- + +$ipsclass->DB->set_debug_mode( $ipsclass->vars['sql_debug'] == 1 ? intval($_GET['debug']) : 0 ); + +//-------------------------------- +// Initialize the FUNC +//-------------------------------- + +$ipsclass->initiate_ipsclass(); + +//=========================================================================== +// Define Service +//=========================================================================== + +require_once( KERNEL_PATH . 'class_api_server.php' ); + +//=========================================================================== +// Create the XML-RPC Server +//=========================================================================== + +$server = new class_api_server(); +$webservice = new handshake_server( $ipsclass ); +$webservice->class_api_server =& $server; +$api = $server->decode_request(); + +$server->add_object_map( $webservice, 'UTF-8' ); + +//----------------------------------------- +// Saying "info" or actually doing some +// work? INfo is used by converge app to +// ensure this file exists and to grab the +// apps name. +// Codes: +// IPB : Invision Power Board +// IPD : Invision Power Dynamic +// IPN : Invision Power Nexus +//----------------------------------------- + +if ( $_REQUEST['info'] ) +{ + @header( "Content-type: text/plain" ); + print "\n"; + print "\t" . htmlspecialchars( $ipsclass->vars['board_name'] ) . "\n"; + print "\tIPB\n"; + print ""; + exit(); +} +//----------------------------------------- +// Post log in: +// This is hit after a successful converge +// log in has been made. It's up the the local +// app to check the incoming data, and set +// cookies (optional) +//----------------------------------------- +else if ( $_REQUEST['postlogin'] ) +{ + //----------------------------------------- + // INIT + //----------------------------------------- + + $session_id = addslashes( substr( trim( $_GET['session_id'] ), 0, 32 ) ); + $key = substr( trim( $_GET['key'] ), 0, 32 ); + $member_id = intval( $_GET['member_id'] ); + $product_id = intval( $_GET['product_id'] ); + $set_cookies = intval( $_GET['cookies'] ); + + //----------------------------------------- + // Get converge + //----------------------------------------- + + $converge = $ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'converge_local', + 'where' => "converge_active=1 AND converge_product_id=".$product_id ) ); + //----------------------------------------- + // Get member.... + //----------------------------------------- + + $session = $ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'sessions', + 'where' => "id='" . $session_id . "' AND member_id=".$member_id ) ); + + if ( $session['member_id'] ) + { + $member = $ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'members', + 'where' => "id=".$member_id ) ); + + if ( md5( $member['member_login_key'] . $converge['converge_api_code'] ) == $key ) + { + if ( $set_cookies ) + { + $ipsclass->my_setcookie( "member_id" , $member['id'] , 1 ); + $ipsclass->my_setcookie( "pass_hash" , $member['member_login_key'], 1 ); + } + + $ipsclass->my_setcookie( "session_id", $session_id , -1); + $ipsclass->stronghold_set_cookie( $member['id'], $member['member_login_key'] ); + } + + //----------------------------------------- + // Update session + //----------------------------------------- + + $ipsclass->DB->do_update( 'sessions', array( 'browser' => $ipsclass->user_agent, + 'ip_address' => $ipsclass->ip_address ), "id='" . $session_id . "'" ); + } + + //----------------------------------------- + // Is this a partial member? + // Not completed their sign in? + //----------------------------------------- + + if ( $member['members_created_remote'] ) + { + $pmember = $ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members_partial', 'where' => "partial_member_id={$member['id']}" ) ); + + if ( $pmember['partial_member_id'] ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'] . '?act=reg&CODE=complete_login&mid='.$member['id'].'&key='.$pmember['partial_date'] ); + exit(); + } + else + { + //----------------------------------------- + // Redirect... + //----------------------------------------- + + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'] ); + } + } + else + { + //----------------------------------------- + // Redirect... + //----------------------------------------- + + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'] ); + } +} +else +{ + $server->get_xml_rpc(); +} + + +exit; + + +class handshake_server +{ + /** + * Defines the service for WSDL + * @access Private + * @var array + */ + var $__dispatch_map = array(); + + /** + * IPS Global Class + * @access Private + * @var object + */ + var $ipsclass; + + /** + * IPS API SERVER Class + * @access Private + * @var object + */ + var $class_api_server; + + /** + * Converge_Server::Converge_Server() + * + * CONSTRUCTOR + * + * @return void + **/ + function handshake_server( & $ipsclass ) + { + //----------------------------------------- + // Set IPS CLASS + //----------------------------------------- + + $this->ipsclass = $ipsclass; + + //----------------------------------------- + // Build dispatch list + //----------------------------------------- + + $this->__dispatch_map[ 'handshake_start' ] = array( + 'in' => array( + 'reg_id' => 'int', + 'reg_code' => 'string', + 'reg_date' => 'string', + 'reg_product_id' => 'int', + 'converge_url' => 'string', + 'acp_email' => 'string', + 'acp_md5_password' => 'string', + 'http_user' => 'string', + 'http_pass' => 'string' ), + 'out' => array( 'response' => 'xmlrpc' ) + ); + + $this->__dispatch_map[ 'handshake_end' ] = array( + 'in' => array( + 'reg_id' => 'int', + 'reg_code' => 'string', + 'reg_date' => 'string', + 'reg_product_id' => 'int', + 'converge_url' => 'string', + 'handshake_completed' => 'int' ), + 'out' => array( 'response' => 'xmlrpc' ) + ); + + $this->__dispatch_map[ 'handshake_remove' ] = array( + 'in' => array( + 'reg_product_id' => 'int', + 'reg_code' => 'string' ), + 'out' => array( 'response' => 'xmlrpc' ) + ); + + + } + + /** + * handshake_server::handshake_start() + * + * Returns all data... + * + * @param integer $reg_id Converge reg ID + * @param string $reg_code Converge API Code (MUST BE PRESENT IN ALL RETURNED API REQUESTS). + * @param integer $reg_date Unix stamp of converge request start time + * @param integer $reg_product_id Converge product ID (MUST BE PRESENT IN ALL RETURNED API REQUESTS) + * @param string $converge_url Converge application base url (no slashes or paths) + * @return xml + **/ + function handshake_start( $reg_id='', $reg_code='', $reg_date='', $reg_product_id='', $converge_url='', $acp_email='', $acp_md5_password='', $http_user='', $http_pass='' ) + { + //----------------------------------------- + // Check ACP user + //----------------------------------------- + + if ( ! $acp_email AND ! $acp_md5_password ) + { + $this->class_api_server->api_send_error( 500, 'Missing ACP Email address and/or ACP Password' ); + return FALSE; + } + else + { + $this->ipsclass->converge->converge_load_member( $acp_email ); + + if ( ! $this->ipsclass->converge->member['converge_id'] ) + { + $this->class_api_server->api_send_error( 501, 'ACP Email or Password Incorrect' ); + return FALSE; + } + else + { + //----------------------------------------- + // Get member + //----------------------------------------- + + $this->ipsclass->DB->build_query( array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => "id=".intval($this->ipsclass->converge->member['converge_id']), + 'add_join' => array( 0 => array( 'select' => 'g.*', + 'from' => array( 'groups' => 'g' ), + 'where' => 'm.mgroup=g.g_id', + 'type' => 'inner' + ) + ) + ) ); + + $this->ipsclass->DB->exec_query(); + + $member = $this->ipsclass->DB->fetch_row(); + + //----------------------------------------- + // Are we an admin? + //----------------------------------------- + + if ( $member['g_access_cp'] != 1 ) + { + $this->class_api_server->api_send_error( 501, 'ACP Email or Password Incorrect' ); + return FALSE; + } + + //----------------------------------------- + // Check password... + //----------------------------------------- + + if ( $this->ipsclass->converge->converge_authenticate_member( $acp_md5_password ) != TRUE ) + { + $this->class_api_server->api_send_error( 501, 'ACP Email or Password Incorrect' ); + return FALSE; + } + } + } + + //----------------------------------------- + // Just send it all back and start + // A row in the converge_local table with + // the info, but don't flag as active... + //----------------------------------------- + + $reply = array( 'master_response' => 1, + 'reg_id' => $reg_id, + 'reg_code' => $reg_code, + 'reg_date' => $reg_date, + 'reg_product_id' => $reg_product_id, + 'converge_url' => $converge_url ); + + //----------------------------------------- + // Add into DB + //----------------------------------------- + + $this->ipsclass->DB->do_insert( 'converge_local', array( 'converge_api_code' => $reg_code, + 'converge_product_id' => $reg_product_id, + 'converge_added' => $reg_date, + 'converge_ip_address' => $this->ipsclass->my_getenv('REMOTE_ADDR'), + 'converge_url' => $converge_url, + 'converge_active' => 0, + 'converge_http_user' => $http_user, + 'converge_http_pass' => $http_pass ) ); + + //----------------------------------------- + // Send reply... + //----------------------------------------- + + + $this->class_api_server->api_send_reply( $reply ); + } + + /** + * handshake_server::handshake_end() + * + * Returns all data... + * + * @param integer $reg_id Converge reg ID + * @param string $reg_code Converge API Code (MUST BE PRESENT IN ALL RETURNED API REQUESTS). + * @param integer $reg_date Unix stamp of converge request start time + * @param integer $reg_product_id Converge product ID (MUST BE PRESENT IN ALL RETURNED API REQUESTS) + * @param string $converge_url Converge application base url (no slashes or paths) + * @param integer $handshake_completed All done flag + * @return xml + **/ + function handshake_end( $reg_id='', $reg_code='', $reg_date='', $reg_product_id='', $converge_url='', $handshake_completed='' ) + { + //----------------------------------------- + // Grab data from the DB + //----------------------------------------- + + $converge = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'converge_local', + 'where' => "converge_api_code='".$reg_code."' AND converge_product_id=".$reg_product_id ) ); + + //----------------------------------------- + // Update as done... + //----------------------------------------- + + if ( $converge['converge_api_code'] ) + { + $this->ipsclass->DB->do_update( 'converge_local', array( 'converge_active' => 0 ), "converge_url = '".$converge_url."'" ); + $this->ipsclass->DB->do_update( 'converge_local', array( 'converge_active' => 1 ), "converge_api_code = '".$reg_code."'" ); + } + + //----------------------------------------- + // Update the settings... + //----------------------------------------- + + require( ROOT_PATH . "sources/action_admin/settings.php" ); + $settings = new ad_settings(); + $settings->ipsclass =& $this->ipsclass; + + //----------------------------------------- + // Sort out some vars + //----------------------------------------- + + $_full_url = preg_replace( "#/$#", "", $converge_url ) . '/?p='.$reg_product_id; + + //----------------------------------------- + // Update... + //----------------------------------------- + + $this->ipsclass->DB->do_update( "conf_settings", array( "conf_value" => 1 ) , "conf_key='ipconverge_enabled'" ); + $this->ipsclass->DB->do_update( "conf_settings", array( "conf_value" => $converge_url ) , "conf_key='ipconverge_url'" ); + $this->ipsclass->DB->do_update( "conf_settings", array( "conf_value" => $reg_product_id ) , "conf_key='ipconverge_pid'" ); + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => 'converge' ), "conf_key='ipbli_key'" ); + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => 'email' ) , "conf_key='ipbli_usertype'" ); + + $settings->setting_rebuildcache(); + + //----------------------------------------- + // Switch over log in methods + //----------------------------------------- + + $this->ipsclass->DB->do_update( "login_methods", array( "login_enabled" => 0 ) ); + $this->ipsclass->DB->do_update( "login_methods", array( "login_enabled" => 1, + "login_login_url" => $_full_url, + "login_maintain_url" => $_full_url . '&redirect=options', + "login_logout_url" => $_full_url . '&redirect=logout', + "login_register_url" => $_full_url ), "login_folder_name='ipconverge'" ); + + $this->class_api_server->api_send_reply( array( 'handshake_updated' => 1 ) ); + } + + /** + * handshake_server::handshake_remove() + * + * Unconverges an application + * + * @param integer $reg_id Converge reg ID + * @param string $reg_code Converge API Code (MUST BE PRESENT IN ALL RETURNED API REQUESTS). + * @return xml + **/ + function handshake_remove( $reg_product_id='', $reg_code='' ) + { + //----------------------------------------- + // Grab data from the DB + //----------------------------------------- + + $converge = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'converge_local', + 'where' => "converge_api_code='".$reg_code."' AND converge_product_id=".$reg_product_id ) ); + + //----------------------------------------- + // Check + //----------------------------------------- + + if ( $converge['converge_active'] ) + { + //----------------------------------------- + // Remove app stuff + //----------------------------------------- + + $this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'converge_local', + 'where' => 'converge_product_id=' . intval( $reg_id ) ) ); + + //----------------------------------------- + // Update the settings... + //----------------------------------------- + + require( ROOT_PATH . "sources/action_admin/settings.php" ); + $settings = new ad_settings(); + $settings->ipsclass =& $this->ipsclass; + + //----------------------------------------- + // Sort out some vars + //----------------------------------------- + + $_full_url = preg_replace( "#/$#", "", $converge_url ) . '/?p='.$reg_product_id; + + //----------------------------------------- + // Update... + //----------------------------------------- + + $this->ipsclass->DB->do_update( "conf_settings", array( "conf_value" => 0 ) , "conf_key='ipconverge_enabled'" ); + $this->ipsclass->DB->do_update( "conf_settings", array( "conf_value" => '' ) , "conf_key='ipconverge_url'" ); + $this->ipsclass->DB->do_update( "conf_settings", array( "conf_value" => 0 ) , "conf_key='ipconverge_pid'" ); + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => 'internal' ), "conf_key='ipbli_key'" ); + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => 'username' ), "conf_key='ipbli_usertype'" ); + + $settings->setting_rebuildcache(); + + //----------------------------------------- + // Switch over log in methods + //----------------------------------------- + + $this->ipsclass->DB->do_update( "login_methods", array( "login_enabled" => 0 ) ); + $this->ipsclass->DB->do_update( "login_methods", array( "login_enabled" => 1 ), "login_folder_name='internal'" ); + + $this->class_api_server->api_send_reply( array( 'handshake_removed' => 1 ) ); + } + else + { + $this->class_api_server->api_send_reply( array( 'handshake_removed' => 0 ) ); + } + + } + +} +?> \ No newline at end of file diff --git a/upload/converge_local/converge_server.php b/upload/converge_local/converge_server.php new file mode 100644 index 00000000..a6a69e4d --- /dev/null +++ b/upload/converge_local/converge_server.php @@ -0,0 +1,147 @@ + $Date: 2006-02-01 18:16:26 +0000 (Wed, 01 Feb 2006) $ +| > $Revision: 132 $ +| > $Author: bfarber $ ++--------------------------------------------------------------------------- +| +| > CONVERGE Wrapper script +| > Script written by Matt Mecham +| > Date started: 6th March 2006 +| ++-------------------------------------------------------------------------- +*/ + +/** +* Main executable wrapper. +* +* Set-up and load module to run +* +* @package InvisionPowerBoard +* @author Matt Mecham +* @version 2.1 +*/ + +/** +* Script type +* +*/ +define( 'IPB_THIS_SCRIPT', 'public' ); +define( 'IPB_LOAD_SQL' , 'queries' ); + +/** +* Matches IP address of requesting API +* Set to 0 to not match with IP address +*/ +define( 'CVG_IP_MATCH', 1 ); + +require_once( '../init.php' ); + +//=========================================================================== +// MAIN PROGRAM +//=========================================================================== + +$INFO = array(); + +//-------------------------------- +// Load our classes +//-------------------------------- + +require_once ROOT_PATH . "sources/ipsclass.php"; +require_once KERNEL_PATH . "class_converge.php"; +require_once ROOT_PATH . "conf_global.php"; + +# Initiate super-class +$ipsclass = new ipsclass(); +$ipsclass->vars = $INFO; + +//-------------------------------- +// The clocks a' tickin' +//-------------------------------- + +$Debug = new Debug; +$Debug->startTimer(); + +//-------------------------------- +// Load the DB driver and such +//-------------------------------- + +$ipsclass->init_db_connection(); + +# Turn off shutdown +$ipsclass->DB->obj['use_shutdown'] = 0; + +//-------------------------------- +// Set up our vars +//-------------------------------- + +$ipsclass->parse_incoming(); + +//-------------------------------- +// Set converge +//-------------------------------- + +$ipsclass->converge = new class_converge( $ipsclass->DB ); + +//-------------------------------- +// Start off the cache array +//-------------------------------- + +$ipsclass->cache_array = array('components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages' ); + +//=========================================================================== +// Get cache... +//=========================================================================== + +$ipsclass->init_load_cache( $ipsclass->cache_array ); + +//-------------------------------- +// Initialize the FUNC +//-------------------------------- + +$ipsclass->initiate_ipsclass(); + +//=========================================================================== +// Define Service +//=========================================================================== + +require_once( ROOT_PATH . 'converge_local/apis/server_functions.php' ); +require_once( KERNEL_PATH . 'class_api_server.php' ); + +//=========================================================================== +// Create the XML-RPC Server +//=========================================================================== + +$server = new class_api_server(); +$webservice = new Converge_Server( $ipsclass ); +$webservice->class_api_server =& $server; +$api = $server->decode_request(); + +$server->add_object_map( $webservice, 'UTF-8' ); + +//----------------------------------------- +// Process.... +//----------------------------------------- + +$server->get_xml_rpc(); + + + +exit; + + +?> \ No newline at end of file diff --git a/upload/index.php b/upload/index.php index 6e75b2e5..db2e4e8e 100644 --- a/upload/index.php +++ b/upload/index.php @@ -2,28 +2,21 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2005 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| Licence Info: http://www.invisionboard.com/?license -| http://www.ibresource.ru/license +| Email: matt@invisionpower.com +--------------------------------------------------------------------------- -| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE! +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com/?license +--------------------------------------------------------------------------- -| INVISION POWER BOARD НЕ ЯВЛЯЕТСЯ БЕСПЛАТНЫМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ! -| Права на ПО принадлежат Invision Power Services -| Права на перевод IBResource (http://www.ibresource.ru) -+--------------------------------------------------------------------------- -| > $Date: 2006-02-01 18:16:26 +0000 (Wed, 01 Feb 2006) $ -| > $Revision: 132 $ -| > $Author: bfarber $ +| > $Date: 2006-09-27 15:23:03 +0100 (Wed, 27 Sep 2006) $ +| > $Revision: 579 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Wrapper script @@ -53,6 +46,7 @@ define( 'IPB_LOAD_SQL' , 'queries' ); require_once( './init.php' ); + //=========================================================================== // MAIN PROGRAM //=========================================================================== @@ -68,7 +62,19 @@ require_once ROOT_PATH . "sources/classes/class_display.php"; require_once ROOT_PATH . "sources/classes/class_session.php"; require_once ROOT_PATH . "sources/classes/class_forums.php"; require_once KERNEL_PATH . "class_converge.php"; -require_once ROOT_PATH . "conf_global.php"; + +if ( file_exists( ROOT_PATH . "conf_global.php" ) ) +{ + require_once ROOT_PATH . "conf_global.php"; +} + +# Are we installed? +if( ! $INFO['sql_user'] ) +{ + $host = $_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : @getenv('HTTP_HOST'); + $self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : @getenv('PHP_SELF'); + @header("Location: http://".$host.rtrim(dirname($self), '/\\')."/install/index.php" ); +} # Initiate super-class $ipsclass = new ipsclass(); @@ -87,6 +93,12 @@ $Debug->startTimer(); $ipsclass->init_db_connection(); +//-------------------------------- +// Set debug mode +//-------------------------------- + +$ipsclass->DB->set_debug_mode( $ipsclass->vars['sql_debug'] == 1 ? ( isset($_GET['debug']) ? intval($_GET['debug']) : 0 ) : 0 ); + //-------------------------------- // INIT other classes //-------------------------------- @@ -125,7 +137,7 @@ $choice = array( "announce" => array( "announcements" , 'announcements', array('bbcode','badwords','emoticons','ranks','profilefields' ) ), "login" => array( "login" , 'login' , array() ), "post" => array( "post" , 'post' , array('attachtypes','badwords','bbcode','emoticons','ranks' ) ), - "reg" => array( "register" , 'register' , array() ), + "reg" => array( "register" , 'register' , array('profilefields') ), "online" => array( "online" , 'online' , array() ), "members" => array( "memberlist" , 'memberlist' , array('ranks','profilefields' ) ), "help" => array( "help" , 'help' , array() ), @@ -137,14 +149,14 @@ $choice = array( "report" => array( "misc/contact_member", 'contactmember', array() ), "chat" => array( "misc/contact_member", 'contactmember', array() ), 'boardrules' => array( "misc/contact_member", 'contactmember', array() ), - "msg" => array( "messenger" , 'messenger' , array('profilefields','attachtypes','badwords','bbcode','emoticons' ) ), - "usercp" => array( "usercp" , 'usercp' , array('attachtypes','badwords','bbcode','emoticons' ) ), + "msg" => array( "messenger" , 'messenger' , array('ranks','profilefields','attachtypes','badwords','bbcode','emoticons' ) ), + "usercp" => array( "usercp" , 'usercp' , array( 'attachtypes', 'badwords', 'bbcode', 'emoticons', 'profilefields' ) ), "profile" => array( "profile" , 'profile' , array('ranks','profilefields','badwords','bbcode','emoticons' ) ), "track" => array( "misc/tracker" , 'tracker' , array() ), "stats" => array( "misc/stats" , 'stats' , array() ), - "attach" => array( "misc/attach" , 'attach' , array('attachtypes' ) ), + "attach" => array( "attach" , 'attach' , array('attachtypes' ) ), 'legends' => array( 'misc/legends' , 'legends' , array('badwords','bbcode' ,'emoticons' ) ), - 'calendar' => array( "calendar" , 'calendar' , array('attachtypes','bbcode', 'ranks','multimod','emoticons','badwords' ) ), + 'calendar' => array( "calendar" , 'calendar' , array('attachtypes','bbcode', 'ranks', 'multimod', 'emoticons', 'badwords', 'calendars', 'profilefields' ) ), 'buddy' => array( "browsebuddy" , 'assistant' , array() ), 'mmod' => array( "misc/multi_moderate", 'mmod' , array('multimod' ) ), 'warn' => array( "misc/warn" , 'warn' , array('badwords','bbcode' ,'emoticons' ) ), @@ -152,34 +164,33 @@ $choice = array( 'module' => array( 'modules' , 'modules' , array() ), 'task' => array( 'taskloader' , 'taskloader' , array() ), 'findpost' => array( 'findpost' , 'findpost' , array() ), - "xmlout" => array( "xmlout" , 'xmlout' , array('attachtypes','multimod','bbcode','ranks','profilefields' ) ), + "xmlout" => array( "xmlout" , 'xmlout' , array('attachtypes','multimod','bbcode','ranks','profilefields','emoticons','badwords' ) ), 'paysubs' => array( 'paysubscriptions' , 'paysubscriptions' , array() ), 'rssout' => array( 'rssout' , 'rssout' , array() ), 'component' => array( 'component' , 'component' , array() ), ); +//=========================================================================== +// Short tags... +//=========================================================================== + //--------------------------------------------------- // Check to make sure the array key exits.. //--------------------------------------------------- $ipsclass->input['_low_act'] = strtolower( $ipsclass->input['act'] ); -if (! isset($choice[ $ipsclass->input['_low_act'] ][0]) ) +if ( ! isset($choice[ $ipsclass->input['_low_act'] ][0]) ) { - $ipsclass->input['act'] = 'idx'; - $ipsclass->input['_low_act'] = 'idx'; + $ipsclass->input['act'] = $ipsclass->input['_low_act'] = ( IPB_MAKE_PORTAL_HOMEPAGE ) ? 'home' : 'idx'; } -//=========================================================================== -// Short tags... -//=========================================================================== - -if ( $ipsclass->input['showforum'] != "" ) +if ( isset($ipsclass->input['showforum']) && $ipsclass->input['showforum'] != "" ) { $ipsclass->input['act'] = "sf"; $ipsclass->input['f'] = intval($ipsclass->input['showforum']); } -else if ( $ipsclass->input['showtopic'] != "") +else if ( isset($ipsclass->input['showtopic']) && $ipsclass->input['showtopic'] != "") { $ipsclass->input['act'] = "st"; $ipsclass->input['t'] = intval($ipsclass->input['showtopic']); @@ -199,27 +210,27 @@ else if ( $ipsclass->input['showtopic'] != "") $ipsclass->topic_cache = $ipsclass->DB->fetch_row(); $ipsclass->input['f'] = $ipsclass->topic_cache['forum_id']; } -else if ( $ipsclass->input['showuser'] != "") +else if ( isset($ipsclass->input['showuser']) && $ipsclass->input['showuser'] != "") { $ipsclass->input['act'] = "profile"; $ipsclass->input['MID'] = intval($ipsclass->input['showuser']); } -else if ( $ipsclass->input['automodule'] != "" ) +else if ( isset($ipsclass->input['automodule']) && $ipsclass->input['automodule'] != "" ) { $ipsclass->input['act'] = 'module'; $ipsclass->input['module'] = $ipsclass->input['automodule']; } -else if ( $ipsclass->input['autocom'] != "" ) +else if ( isset($ipsclass->input['autocom']) && $ipsclass->input['autocom'] != "" ) { $ipsclass->input['act'] = 'component'; $ipsclass->input['module'] = $ipsclass->input['autocom']; } else { - $ipsclass->input['act'] = $ipsclass->input['act'] == '' ? "idx" : $ipsclass->input['act']; + $ipsclass->input['act'] = ! isset($ipsclass->input['act']) || $ipsclass->input['act'] == '' ? "idx" : $ipsclass->input['act']; } -if ( ! $ipsclass->input['_low_act'] OR $ipsclass->input['_low_act'] == 'idx' ) +if ( !isset($ipsclass->input['_low_act']) OR !$ipsclass->input['_low_act'] OR $ipsclass->input['_low_act'] == 'idx' ) { $ipsclass->input['_low_act'] = strtolower($ipsclass->input['act']); } @@ -228,7 +239,7 @@ if ( ! $ipsclass->input['_low_act'] OR $ipsclass->input['_low_act'] == 'idx' ) // Start off the cache array //-------------------------------- -$ipsclass->cache_array = array_merge( $choice[ $ipsclass->input['_low_act'] ][2], array('rss_calendar', 'rss_export','components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages') ); +$ipsclass->cache_array = array_merge( $choice[ $ipsclass->input['_low_act'] ][2], array('rss_calendar', 'rss_export', 'components', 'banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages') ); //-------------------------------- // Module? Load INIT class @@ -251,14 +262,9 @@ if ( ( $ipsclass->input['act'] == 'module' OR $ipsclass->input['act'] == 'compon // Get cache... //=========================================================================== +$ipsclass->init_cache_setup(); $ipsclass->init_load_cache( $ipsclass->cache_array ); -//-------------------------------- -// Set debug mode -//-------------------------------- - -$ipsclass->DB->set_debug_mode( $ipsclass->vars['sql_debug'] == 1 ? intval($_GET['debug']) : 0 ); - //-------------------------------- // Initialize the FUNC //-------------------------------- @@ -294,7 +300,13 @@ $ipsclass->forums->forums_init(); $ipsclass->load_skin(); -list($ppu,$tpu) = explode( "&", $ipsclass->member['view_prefs'] ); +$ppu = 0; +$tpu = 0; + +if( isset($ipsclass->member['view_prefs']) ) +{ + list($ppu,$tpu) = explode( "&", $ipsclass->member['view_prefs'] ); +} $ipsclass->vars['display_max_topics'] = ($tpu > 0) ? $tpu : $ipsclass->vars['display_max_topics']; $ipsclass->vars['display_max_posts'] = ($ppu > 0) ? $ppu : $ipsclass->vars['display_max_posts']; @@ -336,20 +348,20 @@ $ipsclass->vars['mime_img'] = 'style_images/<#IMG_DIR#>'; // Set up our language choice //-------------------------------- -if ($ipsclass->vars['default_language'] == "") +if ( !isset($ipsclass->vars['default_language']) OR $ipsclass->vars['default_language'] == "") { - $ipsclass->vars['default_language'] = 'ru'; + $ipsclass->vars['default_language'] = 'en'; } //-------------------------------- // Did we choose a language? //-------------------------------- -If ( $ipsclass->input['setlanguage'] and $ipsclass->input['langid'] and $ipsclass->member['id'] ) +if ( (isset($ipsclass->input['setlanguage']) AND $ipsclass->input['setlanguage']) AND (isset($ipsclass->input['langid']) AND $ipsclass->input['langid']) AND $ipsclass->member['id'] ) { if ( is_array( $ipsclass->cache['languages'] ) and count( $ipsclass->cache['languages'] ) ) { - foreach( $ipsclass->cache['languages'] as $idx => $data ) + foreach( $ipsclass->cache['languages'] as $data ) { if ( $data['ldir'] == $ipsclass->input['langid'] ) { @@ -398,11 +410,25 @@ if ( USE_SHUTDOWN and $ipsclass->input['act'] != 'task' ) if ($ipsclass->input['_low_act'] != 'login' and $ipsclass->input['_low_act'] != 'reg' and $ipsclass->input['_low_act'] != 'xmlout' and + $ipsclass->input['_low_act'] != 'rssout' and $ipsclass->input['_low_act'] != 'attach' and $ipsclass->input['_low_act'] != 'task' and $ipsclass->input['_low_act'] != 'paysubs' ) { - + //----------------------------------------- + // Do we have a display name? + //----------------------------------------- + + if ( ! $ipsclass->member['members_display_name'] AND $ipsclass->member['members_created_remote'] ) + { + $pmember = $ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members_partial', 'where' => "partial_member_id=" . $ipsclass->member['id'] ) ); + + if ( $pmember['partial_member_id'] ) + { + $ipsclass->boink_it( $ipsclass->base_url . 'act=reg&CODE=complete_login&mid='.$ipsclass->member['id'].'&key='.$pmember['partial_date'] ); + } + } + //-------------------------------- // Do we have permission to view // the board? @@ -444,13 +470,13 @@ if ($ipsclass->input['_low_act'] != 'login' and // Not enforced //-------------------------------- - if ( ! $ipsclass->member['sub_end'] ) + if ( !isset($ipsclass->member['sub_end']) OR !$ipsclass->member['sub_end'] ) { //-------------------------------- // 1: No enforce, chosen from reg //-------------------------------- - if ( ! $ipsclass->vars['subsm_enforce'] and $ipsclass->member['subs_pkg_chosen'] ) + if ( ! $ipsclass->vars['subsm_enforce'] and (isset($ipsclass->member['subs_pkg_chosen']) AND $ipsclass->member['subs_pkg_chosen']) ) { $ipsclass->input['act'] = 'paysubs'; $ipsclass->input['CODE'] = 'paymentmethod'; diff --git a/upload/init.php b/upload/init.php index 8b7253b1..60b7d98c 100644 --- a/upload/init.php +++ b/upload/init.php @@ -1,28 +1,17 @@ $Date: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-16 14:09:47 +0100 (Mon, 16 Oct 2006) $ +| > $Revision: 650 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -57,6 +46,55 @@ */ define( 'ROOT_PATH', dirname( __FILE__ ) ."/" ); +//----------------------------------------------- +// Security features +//----------------------------------------------- + +/** +* Directory name for the admin folder +* @since 2.2.0.2006-06-30 +*/ +define( 'IPB_ACP_DIRECTORY', 'admin' ); + +/** +* Allow IP address matching when dealing with ACP sessions +* @since 2.2.0.2006-06-30 +*/ +define( 'IPB_ACP_IP_MATCH', '1' ); + +/** +* Allow exec.url="" tags +* Turning this on is a potential security risk as a malicious user +* could, with access to your ACP, add in an executable +* shell script which would allow root access to your +* server! +*/ +define( 'IPB_ACP_ALLOW_EXEC_URL', 0 ); + +/** +* Allow PHP tags in template HTML? +* Turning this on is a potential security risk as a malicious user +* could, with access to your ACP, add in an executable +* shell script which would allow root access to your +* server! +*/ +define( 'IPB_ACP_ALLOW_TEMPLATE_PHP', 0 ); + +/** +* Make the IPB portal your default forum page? +*/ +define( 'IPB_MAKE_PORTAL_HOMEPAGE', 0 ); + +/** +* Use GZIP page compression in the ACP +* @since 2.2.0.2006-06-30 +*/ +define( 'IPB_ACP_USE_GZIP', '1' ); + +//----------------------------------------------- +// Other +//----------------------------------------------- + /** * USE SHUT DOWN * @@ -109,6 +147,14 @@ define( 'CUSTOM_ERROR', 1 ); */ define( 'TRIAL_VERSION', 0 ); +/** +* Version numbers +* +* @since 2.0.0.2005-01-01 +*/ +define ( 'IPBVERSION', '2.2.0 RC 1' ); +define ( 'IPB_LONG_VERSION', '22006' ); + //----------------------------------------------- // NO USER EDITABLE SECTIONS BELOW //----------------------------------------------- @@ -116,6 +162,9 @@ define( 'TRIAL_VERSION', 0 ); @set_magic_quotes_runtime(0); error_reporting (E_ERROR | E_WARNING | E_PARSE); +// This is for developing to catch notices - leave OFF! +//error_reporting( E_ALL | E_NOTICE); + /** * IN IPB * @@ -168,15 +217,20 @@ else */ define ( 'IPB_INIT_DONE', 1 ); -//----------------------------------------------- -// Use custom handler? -//----------------------------------------------- -if ( CUSTOM_ERROR ) +/** +* Fix for PHP 5.1.x warning +* +* Sets default time zone to server time zone +* @since 2.2.0.2006-05-19 +*/ + +if ( function_exists( 'date_default_timezone_set' ) ) { - set_error_handler("my_error_handler"); + date_default_timezone_set( date_default_timezone_get() ); } + //=========================================================================== // DEBUG CLASS //=========================================================================== @@ -227,6 +281,7 @@ function fatal_error($message="", $help="") exit; } + /*-------------------------------------------------------------------------*/ // Custom error handler /*-------------------------------------------------------------------------*/ @@ -254,7 +309,7 @@ function my_error_handler( $errno, $errstr, $errfile, $errline ) switch ($errno) { case E_ERROR: - echo "IPB Ошибка [$errno] $errstr (Строка: $errline файла $errfile)
\n"; + echo "IPB ERROR [$errno] $errstr (Line: $errline of $errfile)
\n"; exit(1); break; case E_WARNING: @@ -262,10 +317,10 @@ function my_error_handler( $errno, $errstr, $errfile, $errline ) { if ( IPB_THIS_SCRIPT != 'admin' ) { - echo "
IPB Ошибка шаблона: Невозможно загрузить требуемый шаблон. -

Во-первых, проверьте и удалите любые другие стилевые настройки, нажав сюда -

Потом, пожалуйста, зайдите в админцентр форума и исправьте этот шаблон. -

Ошибка: $errstr
"; + echo "
IPB TEMPLATE ERROR: Could not load the required template. +

First, try and remove any custom skin settings by clicking here +

Then, please visit your Admin Control Panel to repair this template. +

Error: $errstr
"; } else { @@ -274,7 +329,7 @@ function my_error_handler( $errno, $errstr, $errfile, $errline ) } else { - echo "IPB Предупреждение [$errno] $errstr (Строка: $errline файла $errfile)
\n"; + echo "IPB WARNING [$errno] $errstr (Line: $errline of $errfile)
\n"; } break; default: @@ -283,5 +338,15 @@ function my_error_handler( $errno, $errstr, $errfile, $errline ) } } +//----------------------------------------------- +// Use custom handler? +// Moved due to possible php bug? Bug id# 1245 +//----------------------------------------------- + +if ( CUSTOM_ERROR ) +{ + set_error_handler("my_error_handler"); +} + ?> \ No newline at end of file diff --git a/upload/install/core/actions/address.php b/upload/install/core/actions/address.php new file mode 100644 index 00000000..137a16f7 --- /dev/null +++ b/upload/install/core/actions/address.php @@ -0,0 +1,75 @@ +install =& $install; + } + + function run() + { + /* Check input? */ + if( $this->install->ipsclass->input['sub'] == 'check' ) + { + /* Check Directory */ + if( ! ( is_dir( $this->install->ipsclass->input['install_dir'] ) ) ) + { + $errors[] = 'The specified directory does not exist'; + } + + /* Check URL */ + if( ! $this->install->ipsclass->input['install_dir'] ) + { + $errors[] = 'You did not specify a URL'; + } + + if( is_array( $errors ) ) + { + $this->install->template->warning( $errors ); + } + else + { + /* Save Form Data */ + $this->install->saved_data['install_dir'] = preg_replace( "#(//)$#", "", str_replace( '\\', '/', $this->install->ipsclass->input['install_dir'] ) . '/' ); + $this->install->saved_data['install_url'] = preg_replace( "#(//)$#", "", str_replace( '\\', '/', $this->install->ipsclass->input['install_url'] ) . '/' ); + + /* Next Action */ + $this->install->template->page_current = 'db'; + $this->install->ipsclass->input['sub'] = ''; + require_once( INS_ROOT_PATH . 'core/actions/db.php' ); + $action = new action_db( &$this->install ); + $action->run(); + return; + } + } + + /* Guess at directory */ + $dir = str_replace( 'installer', '' , getcwd() ); + $dir = str_replace( 'install' , '' , getcwd() ); + $dir = str_replace( '\\' , '/', $dir ); + + /* Guess at URL */ + $url = str_replace( "/installer/index.php" , "", $this->install->ipsclass->my_getenv('HTTP_REFERER') ); + $url = str_replace( "/installer/" , "", $url); + $url = str_replace( "/installer" , "", $url); + $url = str_replace( "/install/index.php" , "", $this->install->ipsclass->my_getenv('HTTP_REFERER') ); + $url = str_replace( "/install/" , "", $url); + $url = str_replace( "/installr" , "", $url); + $url = str_replace( "index.php" , "", $url); + $url = preg_replace( "!\?(.+?)*!" , "", $url ); + $url = "{$url}/"; + + /* Page Output */ + $this->install->template->append( $this->install->template->address_page( $dir, $url ) ); + $this->install->template->next_action = '?p=address&sub=check'; + } +} + +?> \ No newline at end of file diff --git a/upload/install/core/actions/admin.php b/upload/install/core/actions/admin.php new file mode 100644 index 00000000..fc4e1d40 --- /dev/null +++ b/upload/install/core/actions/admin.php @@ -0,0 +1,69 @@ +install =& $install; + } + + function run() + { + /* Check input? */ + if( $this->install->ipsclass->input['sub'] == 'check' ) + { + if( ! $this->install->ipsclass->input['username'] ) + { + $errors[] = 'You must specify a username for the admin account'; + } + + if( ! $this->install->ipsclass->input['password'] ) + { + $errors[] = 'You must specify a password for the admin account'; + } + else + { + if( $this->install->ipsclass->input['password'] != $this->install->ipsclass->input['confirm_password'] ) + { + $errors[] = 'The admin passwords did not match'; + } + } + + if( ! $this->install->ipsclass->input['email'] ) + { + $errors[] = 'You must sepcify an email account for the admin account'; + } + + if( is_array( $errors ) ) + { + $this->install->template->warning( $errors ); + } + else + { + /* Save Form Data */ + $this->install->saved_data['admin_user'] = $this->install->ipsclass->input['username']; + $this->install->saved_data['admin_pass'] = $this->install->ipsclass->input['password']; + $this->install->saved_data['admin_email'] = $this->install->ipsclass->input['email']; + + /* Next Action */ + $this->install->template->page_current = 'install'; + require_once( INS_ROOT_PATH . 'core/actions/install.php' ); + $action = new action_install( &$this->install ); + $action->run(); + return; + } + } + + /* Output */ + $this->install->template->append( $this->install->template->admin_page() ); + $this->install->template->next_action = '?p=admin&sub=check'; + } +} + +?> \ No newline at end of file diff --git a/upload/install/core/actions/db.php b/upload/install/core/actions/db.php new file mode 100644 index 00000000..0ef0f89d --- /dev/null +++ b/upload/install/core/actions/db.php @@ -0,0 +1,254 @@ +install =& $install; + } + + function run() + { + /* Check input? */ + if ( $this->install->ipsclass->input['sub'] == 'check' ) + { + /* Make sure the fields were filled out */ + if ( ! $this->install->ipsclass->input['db_host'] || ! $this->install->ipsclass->input['db_name'] || ! $this->install->ipsclass->input['db_user'] ) + { + $errors[] = 'You must fill out the form completely'; + } + + //----------------------------------------- + // Error check + //----------------------------------------- + + if ( is_array( $errors ) ) + { + $this->install->template->warning( $errors ); + return; + } + + //----------------------------------------- + // Load DB driver.. + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $classname = "db_driver_".$this->install->saved_data['sql_driver']; + + $DB = new $classname; + + $DB->obj['sql_database'] = $this->install->ipsclass->input['db_name']; + $DB->obj['sql_user'] = $this->install->ipsclass->input['db_user']; + $DB->obj['sql_pass'] = $_REQUEST['db_pass']; + $DB->obj['sql_host'] = $this->install->ipsclass->input['db_host']; + $DB->obj['sql_tbl_prefix'] = $this->install->ipsclass->input['db_pre']; + + //-------------------------------------------------- + // Any "extra" configs required for this driver? + //-------------------------------------------------- + + if ( file_exists( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ) ) + { + require_once( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ); + + $extra_install = new install_extra(); + $extra_install->ipsclass =& $this->install->ipsclass; + + $extra_install->install_form_process(); + + if ( count( $extra_install->errors ) ) + { + $this->install->template->warning( implode( "
", $extra_install->errors ) ); + } + + if ( is_array( $extra_install->info_extra ) and count( $extra_install->info_extra ) ) + { + foreach( $extra_install->info_extra as $k => $v ) + { + $this->install->saved_data[ '__sql__' . $k ] = $v; + } + } + + if ( is_array( $DB->connect_vars ) and count( $DB->connect_vars ) ) + { + foreach( $DB->connect_vars as $k => $v ) + { + $DB->connect_vars[ $k ] = $extra_install->info_extra[ $k ]; + } + } + } + + //----------------------------------------- + // Error check + //----------------------------------------- + + if ( is_array( $errors ) ) + { + $this->install->template->warning( $errors ); + return; + } + + //-------------------------------- + // Make CONSTANT + //-------------------------------- + + define( 'SQL_DRIVER' , $this->install->saved_data['sql_driver'] ); + define( 'IPS_MAIN_DB_CLASS_LOADED', TRUE ); + + //-------------------------------- + // Try a DB connection + //-------------------------------- + + $DB->return_die = 1; + + if ( ! $DB->connect() ) + { + $errors[] = $DB->error; + } + + //----------------------------------------- + // Error check + //----------------------------------------- + + if ( is_array( $errors ) ) + { + $this->install->template->warning( $errors ); + return; + } + + /* Save Form Data */ + $this->install->saved_data['db_host'] = $this->install->ipsclass->input['db_host']; + $this->install->saved_data['db_name'] = $this->install->ipsclass->input['db_name']; + $this->install->saved_data['db_user'] = $this->install->ipsclass->input['db_user']; + $this->install->saved_data['db_pass'] = $_REQUEST['db_pass']; + $this->install->saved_data['db_pre'] = $this->install->ipsclass->input['db_pre']; + $this->install->saved_data['_drop_tables'] = $this->install->ipsclass->input['_drop_tables']; + + //----------------------------------------- + // Tables exist? + //----------------------------------------- + + if ( ! $this->install->saved_data['_drop_tables'] AND $DB->field_exists( 'id', 'members' ) ) + { + /* Output */ + $this->install->saved_data['_show_overwrite'] = 1; + $this->install->template->append( $this->install->template->db_page( $drivers ) ); + $this->install->template->next_action = '?p=db&sub=check'; + + //----------------------------------------- + // Show overwrite? + //----------------------------------------- + + $html = " + +
+

You are attempting to install in a database that already has tables from another installation +
If you wish to install in this database, all current tables will be dropped which means any existing data will be deleted. + You can either continue, choosing to delete all current data or you can choose another SQL table prefix.

+ DELETE ANY CURRENT TABLES BEFORE INSTALLING +
+ + "; + + $this->install->template->page_content = str_replace( '', $html, $this->install->template->page_content ); + + //-------------------------------------------------- + // Any "extra" configs required for this driver? + //-------------------------------------------------- + + if ( file_exists( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ) ) + { + require_once( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ); + $extra_install = new install_extra(); + + $this->install->template->page_content = str_replace( '', $extra_install->install_form_extra(), $this->install->template->page_content ); + } + + return; + } + + /* Next Action */ + $this->install->template->page_current = 'admin'; + $this->install->ipsclass->input['sub'] = ''; + require_once( INS_ROOT_PATH . 'core/actions/admin.php' ); + $action = new action_admin( $this->install ); + $action->run(); + return; + } + + //-------------------------------------------------- + // DO WE HAVE A DB DRIVER SET? + //-------------------------------------------------- + + $this->install->saved_data['sql_driver'] = ( $this->install->saved_data['sql_driver'] == "" ) ? $_REQUEST['sql_driver'] : $this->install->saved_data['sql_driver']; + + if ( ! $this->install->saved_data['sql_driver'] ) + { + //---------------------------------------------- + // Test to see how many DB driver's we've got.. + //---------------------------------------------- + + $dh = opendir( INS_KERNEL_PATH ); + + while ( $file = @readdir( $dh ) ) + { + if ( preg_match( "/^class_db_([a-zA-Z0-9]*)\.php/i", $file, $driver ) ) + { + $drivers[] = $driver[1]; + } + } + + @closedir( $dh ); + + //---------------------------------------------- + // Got more than one? + //---------------------------------------------- + + if ( count($drivers) > 1 ) + { + //------------------------------------------ + // Show choice screen first... + //------------------------------------------ + + /* Output */ + $this->install->template->append( $this->install->template->db_check_page( $drivers ) ); + $this->install->template->next_action = '?p=db'; + return; + } + else + { + //------------------------------------------ + // Use only driver installed + //------------------------------------------ + + $this->install->saved_data['sql_driver'] = $drivers[0]; + } + } + + /* Output */ + $this->install->template->append( $this->install->template->db_page() ); + $this->install->template->next_action = '?p=db&sub=check'; + + //-------------------------------------------------- + // Any "extra" configs required for this driver? + //-------------------------------------------------- + + if ( file_exists( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ) ) + { + require_once( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ); + $extra_install = new install_extra(); + + $this->install->template->page_content = str_replace( '', $extra_install->install_form_extra(), $this->install->template->page_content ); + } + } + +} + +?> \ No newline at end of file diff --git a/upload/install/core/actions/done.php b/upload/install/core/actions/done.php new file mode 100644 index 00000000..427f5348 --- /dev/null +++ b/upload/install/core/actions/done.php @@ -0,0 +1,34 @@ +install =& $install; + } + + function run() + { + //----------------------------------------- + // Lock installer + //----------------------------------------- + + $this->install->lock_installer(); + + //----------------------------------------- + // Show page + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_done( $this->install->saved_data['admin_url'], $this->install->check_lock() ) ); + $this->install->template->next_action = ''; + $this->install->template->hide_next = 1; + } +} + +?> \ No newline at end of file diff --git a/upload/install/core/actions/eula.php b/upload/install/core/actions/eula.php new file mode 100644 index 00000000..7356a304 --- /dev/null +++ b/upload/install/core/actions/eula.php @@ -0,0 +1,24 @@ +install =& $install; + } + + function run() + { + /* Page Output */ + $this->install->template->append( $this->install->template->eula_page( nl2br($this->install->product_license) ) ); + $this->install->template->next_action = '?p=address'; + } +} + +?> \ No newline at end of file diff --git a/upload/install/core/actions/install.php b/upload/install/core/actions/install.php new file mode 100644 index 00000000..8aeb0550 --- /dev/null +++ b/upload/install/core/actions/install.php @@ -0,0 +1,939 @@ +install =& $install; + } + + // SQL - ADMIN - CONF > SETTINGS > ACPPERMS > TEMPLATES > OTHER [ Email Templates ] > Build Caches + + function run() + { + //----------------------------------------- + // Any "extra" configs required for this driver? + //----------------------------------------- + + if ( is_array( $this->install->saved_data ) and count( $this->install->saved_data ) ) + { + foreach( $this->install->saved_data as $k => $v ) + { + if ( preg_match( "#^__sql__#", $k ) ) + { + $k = str_replace( "__sql__", "", $k ); + + $this->install->ipsclass->vars[ $k ] = $v; + } + } + } + + /* Switch */ + switch( $this->install->ipsclass->input['sub'] ) + { + case 'sql': + $this->install_sql(); + break; + + case 'settings': + $this->install_settings(); + break; + + case 'acpperms': + $this->install_acpperms(); + break; + + case 'templates': + $this->install_templates(); + break; + + case 'other': + $this->install_other(); + break; + + case 'caches': + $this->install_caches(); + break; + + default: + /* Output */ + $this->install->template->append( $this->install->template->install_page() ); + $this->install->template->next_action = '?p=install&sub=sql'; + $this->install->template->hide_next = 1; + break; + } + } + + /*-------------------------------------------------------------------------*/ + // Installs the SQL + /*-------------------------------------------------------------------------*/ + /** + * Installs SQL schematic + * + * @return void + */ + function install_sql() + { + //----------------------------------------- + // Write config + //----------------------------------------- + + $this->install->write_configuration(); + + //-------------------------------------------------- + // Any "extra" configs required for this driver? + //-------------------------------------------------- + + if ( file_exists( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ) ) + { + require_once( INS_ROOT_PATH.'sql/'.$this->install->saved_data['sql_driver'].'_install.php' ); + + $extra_install = new install_extra(); + $extra_install->ipsclass =& $this->install->ipsclass; + } + + //----------------------------------------- + // Run SQL commands + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $this->install->ipsclass->init_db_connection( $this->install->saved_data['db_name'], + $this->install->saved_data['db_user'], + $this->install->saved_data['db_pass'], + $this->install->saved_data['db_host'], + $this->install->saved_data['db_pre'], + $this->install->saved_data['sql_driver'] ); + + $this->install->ipsclass->converge = new class_converge( $this->install->ipsclass->DB ); + + include( INS_ROOT_PATH . 'sql/' . $this->install->saved_data['sql_driver'] . '_tables.php' ); + $output[] = "Creating SQL Tables..."; + + foreach( $TABLE as $q ) + { + preg_match("/CREATE TABLE (\S+) \(/", $q, $match); + + if ( $match[1] AND $this->install->saved_data['_drop_tables'] ) + { + $this->install->ipsclass->DB->sql_drop_table( str_replace( 'ibf_', '', $match[1] ) ); + } + + $q = preg_replace("/ibf_(\S+?)([\s\.,]|$)/", $this->install->saved_data['db_pre']."\\1\\2", $q); + + //----------------------------------- + // Pass to handler + //----------------------------------- + + if ( $extra_install AND method_exists( $extra_install, 'process_query_create' ) ) + { + $q = $extra_install->process_query_create( $q ); + } + + $this->install->ipsclass->DB->query( $q ); + } + + //----------------------------------- + // Create the fulltext index... + //----------------------------------- + + if ( $this->install->ipsclass->DB->sql_can_fulltext() ) + { + include( INS_ROOT_PATH . 'sql/' . $this->install->saved_data['sql_driver'] . '_fulltext.php' ); + $output[] = "Building indexes..."; + + foreach( $INDEX as $q ) + { + $q = preg_replace("/ibf_(\S+?)([\s\.,]|$)/", $this->install->saved_data['db_pre']."\\1\\2", $q); + + //----------------------------------- + // Pass to handler + //----------------------------------- + + if ( $extra_install AND method_exists( $extra_install, 'process_query_index' ) ) + { + $q = $extra_install->process_query_index( $q ); + } + + //----------------------------------- + // Pass query + //----------------------------------- + + if ( ! $this->install->ipsclass->DB->query($q) ) + { + $this->install->template->warning($q."

".$this->install->ipsclass->DB->error); + } + } + } + + include( INS_ROOT_PATH . 'sql/' . $this->install->saved_data['sql_driver'] . '_inserts.php' ); + $output[] = "Populating SQL Tables..."; + + foreach( $INSERT as $q ) + { + $q = preg_replace("/ibf_(\S+?)([\s\.,]|$)/", $this->install->saved_data['db_pre']."\\1\\2", $q); + $q = str_replace( "<%time%>" , time(), $q ); + + # Admin's name + $q = str_replace( "<%admin_name%>", $this->install->saved_data['admin_user'], $q ); + + //----------------------------------- + // Pass to handler + //----------------------------------- + + if ( $extra_install AND method_exists( $extra_install, 'process_query_insert' ) ) + { + $q = $extra_install->process_query_insert( $q ); + } + + $this->install->ipsclass->DB->query( $q ); + } + + + //----------------------------------------- + // Create Admin account + //----------------------------------------- + + $output[] = "Creating admin account..."; + + $this->install->create_admin_account(); + + //----------------------------------------- + // Next... + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_page_refresh( $output ) ); + $this->install->template->next_action = '?p=install&sub=settings'; + $this->install->template->hide_next = 1; + } + + /*-------------------------------------------------------------------------*/ + // Installs the settings + /*-------------------------------------------------------------------------*/ + /** + * Installs SQL schematic + * + * @return void + */ + function install_settings() + { + //----------------------------------------- + // Get DB + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $this->install->ipsclass->init_db_connection( $this->install->saved_data['db_name'], + $this->install->saved_data['db_user'], + $this->install->saved_data['db_pass'], + $this->install->saved_data['db_host'], + $this->install->saved_data['db_pre'], + $this->install->saved_data['sql_driver'] ); + //----------------------------------------- + // Install settings + //----------------------------------------- + + $output[] = "Inserting settings..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/settings.xml' ) ); + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Known settings + //----------------------------------------- + + if ( substr( $this->install->saved_data['install_url'], -1 ) == '/' ) + { + $this->install->saved_data['install_url'] = substr( $this->install->saved_data['install_url'], 0, -1 ); + } + + $_urls = parse_url( $this->install->saved_data['install_url'] ); + + $known = array( 'email_in' => $this->install->saved_data['admin_email'], + 'email_out' => $this->install->saved_data['admin_email'], + 'base_dir' => $this->install->saved_data['install_dir'], + 'upload_dir' => $this->install->saved_data['install_dir'] . '/uploads', + 'upload_url' => $this->install->saved_data['install_url'] . '/uploads', + 'search_sql_method' => $this->install->ipsclass->DB->sql_can_fulltext() ? 'ftext' : 'man', + //'cookie_domain' => $_urls['host'] != 'localhost' ? '.' . preg_replace( "#^(?:.+?\.)?([a-z0-9\-]{3,})\.(([a-z]{2,4})(\.([a-z]{2}))?|museum)$#is", "\\1.\\2", $_urls['host'] ) : '', + ); + + //----------------------------------------- + // Parse + //----------------------------------------- + + $fields = array( 'conf_title' , 'conf_description', 'conf_group' , 'conf_type' , 'conf_key' , 'conf_default', + 'conf_extra' , 'conf_evalphp' , 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', + 'conf_help_key', 'conf_add_cache' , 'conf_title_keyword' ); + + $setting_fields = array( 'conf_title_keyword', 'conf_title_title', 'conf_title_desc', 'conf_title_noshow', 'conf_title_module' ); + + //----------------------------------------- + // Fix up... + //----------------------------------------- + + if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'][0] ) ) + { + //----------------------------------------- + // Ensure [0] is populated + //----------------------------------------- + + $tmp = $xml->xml_array['settingexport']['settinggroup']['setting']; + + unset($xml->xml_array['settingexport']['settinggroup']['setting']); + + $xml->xml_array['settingexport']['settinggroup']['setting'][0] = $tmp; + } + + //----------------------------------------- + // Loop through and sort out settings... + //----------------------------------------- + + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $id => $entry ) + { + $newrow = array(); + + //----------------------------------------- + // Is setting? + //----------------------------------------- + + if ( ! $entry['conf_is_title']['VALUE'] ) + { + foreach( $fields as $f ) + { + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $new_settings[] = $newrow; + } + + //----------------------------------------- + // Is title? + //----------------------------------------- + + else + { + foreach( $setting_fields as $f ) + { + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $new_titles[] = $newrow; + } + } + + //----------------------------------------- + // Sort out titles... + //----------------------------------------- + + if ( is_array( $new_titles ) and count( $new_titles ) ) + { + foreach( $new_titles as $idx => $data ) + { + if ( $data['conf_title_title'] AND $data['conf_title_keyword'] ) + { + //----------------------------------------- + // Get ID based on key + //----------------------------------------- + + $save = array( 'conf_title_title' => $data['conf_title_title'], + 'conf_title_desc' => $data['conf_title_desc'], + 'conf_title_keyword' => $data['conf_title_keyword'], + 'conf_title_noshow' => $data['conf_title_noshow'], + 'conf_title_module' => $data['conf_title_module'] ); + + //----------------------------------------- + // Insert first + //----------------------------------------- + + $this->install->ipsclass->DB->do_insert( 'conf_settings_titles', $save ); + + $conf_id = $this->install->ipsclass->DB->get_insert_id(); + $save['conf_title_id'] = $conf_id; + + //----------------------------------------- + // Update settings cache + //----------------------------------------- + + $setting_groups_by_key[ $save['conf_title_keyword'] ] = $save; + $setting_groups[ $save['conf_title_id'] ] = $save; + + $need_update[] = $conf_id; + } + } + } + + //----------------------------------------- + // Sort out settings + //----------------------------------------- + + if ( is_array( $new_settings ) and count( $new_settings ) ) + { + foreach( $new_settings as $idx => $data ) + { + //----------------------------------------- + // Insert known + //----------------------------------------- + + if ( in_array( $data['conf_key'], array_keys( $known ) ) ) + { + $data['conf_value'] = $known[ $data['conf_key'] ]; + #$data['conf_default'] = $known[ $data['conf_key'] ]; + } + else + { + $data['conf_value'] = ''; + } + + //----------------------------------------- + // Now assign to the correct ID based on + // our title keyword... + //----------------------------------------- + + $data['conf_group'] = $setting_groups_by_key[ $data['conf_title_keyword'] ]['conf_title_id']; + + //----------------------------------------- + // Remove from array + //----------------------------------------- + + unset( $data['conf_title_keyword'] ); + + $this->install->ipsclass->DB->do_insert( 'conf_settings', $data ); + } + } + + //----------------------------------------- + // Update group counts... + //----------------------------------------- + + if ( count( $need_update ) ) + { + foreach( $need_update as $i => $idx ) + { + $conf = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.$idx ) ); + + $count = intval($conf['count']); + + $this->install->ipsclass->DB->do_update( 'conf_settings_titles', array( 'conf_title_count' => $count ), 'conf_title_id='.$idx ); + } + } + + //----------------------------------------- + // Next... + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_page_refresh( $output ) ); + $this->install->template->next_action = '?p=install&sub=acpperms'; + $this->install->template->hide_next = 1; + } + + /*-------------------------------------------------------------------------*/ + // Installs the ACP Perms + /*-------------------------------------------------------------------------*/ + /** + * Installs SQL schematic + * + * @return void + */ + function install_acpperms() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $cur_perms = array(); + + //----------------------------------------- + // Get DB + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $this->install->ipsclass->init_db_connection( $this->install->saved_data['db_name'], + $this->install->saved_data['db_user'], + $this->install->saved_data['db_pass'], + $this->install->saved_data['db_host'], + $this->install->saved_data['db_pre'], + $this->install->saved_data['sql_driver'] ); + //----------------------------------------- + // Install settings + //----------------------------------------- + + $output[] = "Inserting ACP Permissions..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/acpperms.xml' ) ); + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Loop through and sort out settings... + //----------------------------------------- + + foreach( $xml->xml_array['permsexport']['permsgroup']['perm'] as $id => $entry ) + { + //----------------------------------------- + // Do we have a row matching this already? + //----------------------------------------- + + $_perm_main = $entry['acpperm_main']['VALUE']; + $_perm_child = $entry['acpperm_child']['VALUE']; + $_perm_bit = $entry['acpperm_bit']['VALUE']; + + $_perm_key = $_perm_main.':'.$_perm_child.':'.$_perm_bit; + + if ( ! $cur_perms[ $_perm_key ] ) + { + $this->install->ipsclass->DB->do_insert( 'admin_permission_keys', array( 'perm_key' => $_perm_key, + 'perm_main' => $_perm_main, + 'perm_child' => $_perm_child, + 'perm_bit' => $_perm_bit ) ); + + $inserted++; + } + } + + //----------------------------------------- + // Next... + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_page_refresh( $output ) ); + $this->install->template->next_action = '?p=install&sub=templates'; + $this->install->template->hide_next = 1; + } + + + /*-------------------------------------------------------------------------*/ + // Install: Templates + /*-------------------------------------------------------------------------*/ + /** + * Install templates + * + * @return void + */ + function install_templates() + { + //----------------------------------------- + // Get DB + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $this->install->ipsclass->init_db_connection( $this->install->saved_data['db_name'], + $this->install->saved_data['db_user'], + $this->install->saved_data['db_pass'], + $this->install->saved_data['db_host'], + $this->install->saved_data['db_pre'], + $this->install->saved_data['sql_driver'] ); + //----------------------------------------- + // Install settings + //----------------------------------------- + + $output[] = "Inserting templates..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/ipb_templates.xml' ) ); + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Install + //----------------------------------------- + + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $id => $entry ) + { + $newrow = array(); + + $newrow['group_name'] = $entry[ 'group_name' ]['VALUE']; + $newrow['section_content'] = $entry[ 'section_content' ]['VALUE']; + $newrow['func_name'] = $entry[ 'func_name' ]['VALUE']; + $newrow['func_data'] = $entry[ 'func_data' ]['VALUE']; + $newrow['set_id'] = 1; + $newrow['updated'] = time(); + + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->do_insert( 'skin_templates', $newrow ); + } + + //------------------------------- + // GET MACROS + //------------------------------- + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/macro.xml' ) ); + $xml->xml_parse_document( $content ); + + //------------------------------- + // (MACRO) + //------------------------------- + + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $id => $entry ) + { + $newrow = array(); + + $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; + $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; + $newrow['macro_set'] = 1; + + $this->install->ipsclass->DB->do_insert( 'skin_macro', $newrow ); + } + + //----------------------------------------- + // Next... + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_page_refresh( $output ) ); + $this->install->template->next_action = '?p=install&sub=other'; + $this->install->template->hide_next = 1; + } + + /*-------------------------------------------------------------------------*/ + // Install: Other + /*-------------------------------------------------------------------------*/ + /** + * Install Other stuff + * + * @return void + */ + function install_other() + { + //----------------------------------------- + // Get DB + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $this->install->ipsclass->init_db_connection( $this->install->saved_data['db_name'], + $this->install->saved_data['db_user'], + $this->install->saved_data['db_pass'], + $this->install->saved_data['db_host'], + $this->install->saved_data['db_pre'], + $this->install->saved_data['sql_driver'] ); + //----------------------------------------- + // XML: COMPONENTS + //----------------------------------------- + + $output[] = "Inserting components information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/components.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'com_id' ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'components', $newrow ); + } + + //----------------------------------------- + // XML: LOG IN MODULES + //----------------------------------------- + + $output[] = "Inserting log in modules information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_ROOT_PATH . 'installfiles/loginauth.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'login_id' ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'login_methods', $newrow ); + } + + //----------------------------------------- + // XML: GROUPS + //----------------------------------------- + + $output[] = "Inserting groups information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_ROOT_PATH . 'installfiles/groups.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'g_id' or preg_match( "#^g_blog_#is", $f ) ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'groups', $newrow ); + } + + //----------------------------------------- + // XML: ATTACHMENTS + //----------------------------------------- + + $output[] = "Inserting attachment type information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_ROOT_PATH . 'installfiles/attachments.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'atype_id' ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'attachments_type', $newrow ); + } + + //----------------------------------------- + // XML: SKIN SETS + //----------------------------------------- + + $output[] = "Inserting template set data..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/skinsets.xml' ) ); + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Fix up... + //----------------------------------------- + + if ( ! is_array( $xml->xml_array['export']['group']['row'][0] ) ) + { + //----------------------------------------- + // Ensure [0] is populated + //----------------------------------------- + + $tmp = $xml->xml_array['export']['group']['row']; + + unset($xml->xml_array['export']['group']['row']); + + $xml->xml_array['export']['group']['row'][0] = $tmp; + } + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'set_skin_set_id' ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->do_insert( 'skin_sets', $newrow ); + } + + //----------------------------------------- + // XML: TASKS :D + //----------------------------------------- + + $output[] = "Inserting task manager information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/tasks.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'task_id' ) + { + continue; + } + + if ( $f == 'task_cronkey' ) + { + $entry[ $f ]['VALUE'] = md5( uniqid( microtime() ) ); + } + + if ( $f == 'task_next_run' ) + { + $entry[ $f ]['VALUE'] = time(); + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'task_manager', $newrow ); + } + + //----------------------------------------- + // XML: FAQ + //----------------------------------------- + + $output[] = "Inserting FAQ information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/faq.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['export']['group']['row'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'id' ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'faq', $newrow ); + } + + //----------------------------------------- + // XML: BBCode + //----------------------------------------- + + $output[] = "Inserting custom BBCode information..."; + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( INS_DOC_ROOT_PATH . 'resources/bbcode.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'] as $id => $entry ) + { + $newrow = array(); + + foreach( $entry as $f => $data ) + { + if ( $f == 'VALUE' or $f == 'bbcode_id' ) + { + continue; + } + + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( 'custom_bbcode', $newrow ); + } + + //----------------------------------------- + // XML: MACROS + //----------------------------------------- + + /* - Macros inserted on line 560 above - only need to be inserted once.. + $output[] = "Inserting macro information..."; + $xml = new class_xml(); + + $content = implode( "", file( INS_ROOT_PATH . 'installfiles/macro.xml' ) ); + $xml->xml_parse_document( $content ); + + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $id => $entry ) + { + $newrow = array(); + + $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; + $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; + $newrow['macro_set'] = 1; + + $this->install->ipsclass->DB->do_insert( 'skin_macro', $newrow ); + }*/ + + //----------------------------------------- + // Next... + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_page_refresh( $output ) ); + $this->install->template->next_action = '?p=install&sub=caches'; + $this->install->template->hide_next = 1; + } + + /*-------------------------------------------------------------------------*/ + // Install: Caches + /*-------------------------------------------------------------------------*/ + /** + * Install Caches + * + * @return void + */ + function install_caches() + { + //----------------------------------------- + // Get DB + //----------------------------------------- + + require_once( INS_KERNEL_PATH . 'class_db_' . $this->install->saved_data['sql_driver'] . '.php' ); + + $this->install->ipsclass->init_db_connection( $this->install->saved_data['db_name'], + $this->install->saved_data['db_user'], + $this->install->saved_data['db_pass'], + $this->install->saved_data['db_host'], + $this->install->saved_data['db_pre'], + $this->install->saved_data['sql_driver'] ); + //----------------------------------------- + // Do Caches + //----------------------------------------- + + $output = $this->install->cache_and_cleanup(); + + //----------------------------------------- + // Next... + //----------------------------------------- + + $this->install->template->append( $this->install->template->install_progress( $output ) ); + $this->install->template->next_action = '?p=done'; + } +} + +?> \ No newline at end of file diff --git a/upload/install/core/actions/requirements.php b/upload/install/core/actions/requirements.php new file mode 100644 index 00000000..67302fd0 --- /dev/null +++ b/upload/install/core/actions/requirements.php @@ -0,0 +1,40 @@ +install =& $install; + } + + function run() + { + /* Set App Specific Requirements */ + $this->install->set_requirements(); + + /* Page Output */ + $this->install->template->append( $this->install->template->requirements_page( $this->install->version_php_min, $this->install->version_mysql_min ) ); + + /* Check Requirements */ + $errors = $this->install->check_requirements(); + + /* Check for errors */ + if( count( $errors ) ) + { + $this->install->template->warning( $errors ); + $this->install->template->next_action = 'disabled'; + } + else + { + $this->install->template->next_action = '?p=eula'; + } + } +} + +?> \ No newline at end of file diff --git a/upload/install/core/class_installer.php b/upload/install/core/class_installer.php new file mode 100644 index 00000000..8750adbb --- /dev/null +++ b/upload/install/core/class_installer.php @@ -0,0 +1,329 @@ +product_name = $name; + $this->product_license = $license; + $this->product_versions = $versions; + $this->product_key = $key; + } + + /** + * class_installer:set_software_versions + * + * Set required software versions of php and mysql + * + * @param string $php_min Example: 3.0.0 + * @param string $mysql_min Example: 4.4.0 + */ + function set_software_versions( $php_min, $mysql_min ) + { + $this->version_php_min = explode( '.', $php_min ); + $this->version_mysql_min = $mysql_min; + } + + /** + * class_installer::set_required + * + * Set what files and directories must be present for an installation + * + * @param array $dirs + * @param array $files + */ + function set_required( $dirs, $files ) + { + $this->required_dirs = $dirs; + $this->required_files = $files; + } + + /** + * class_installer::set_writeable + * + * Set what files and directories must be writeable + * + * @param array $dirs + * @param array $files + */ + function set_writeable( $dirs=array(), $files=array() ) + { + $this->writeable_dirs = $dirs; + $this->writeable_files = $files; + } + + /** + * class_installer::check_requirements + * + * Checks to make sure that all requirements are met, including software versions, + * directories, and files. + * + * @return array $errors + */ + function check_requirements() + { + /* Errors Array */ + $errors = array(); + + /** + * PHP Version Checking + */ + + /* Check Min PHP Version */ + $check_php = explode( '.', $this->version_php_min ); + + if ( PHP_VERSION < $this->version_php_min ) + { + $errors[] = 'Your PHP installation is too old to run this product, please upgrade before continuing.'; + } + + /** + * SQL Version Checking + */ + + /** + * Required Directories/Files Checking + */ + if( count( $this->required_dirs ) ) + { + foreach( $this->required_dirs as $_d ) + { + if( ! ( is_dir( $_d) && is_readable( $_d ) ) ) + { + $errors[] = 'A required directory could not be located: "' . $_d . '"'; + } + } + } + + if( count( $this->required_files ) ) + { + foreach( $this->required_files as $_f ) + { + if( ! ( file_exists( $_f) && is_readable( $_f ) ) ) + { + $errors[] = 'A required file could not be located: "' . $_f . '"'; + } + } + } + + /** + * Writeable Directories/File Checking + */ + if( count( $this->writeable_dirs ) ) + { + foreach( $this->writeable_dirs as $_d ) + { + if( ! is_writeable( $_d ) ) + { + $errors[] = 'Can not write to directory: "' . $_d . '", please CHMOD to 777'; + } + } + + foreach( $this->writeable_files as $_f ) + { + if( ! is_writeable( $_f ) ) + { + $errors[] = 'Can not write to file: "' . $_f . '", please CHMOD to 777'; + } + } + } + + return $errors; + } + + /** + * class_installer::unpack_config + * + * Reads and stores the information from the config.xml file + * + */ + function read_config() + { + // Get Configuration File + $config = implode( '', file( INS_ROOT_PATH . 'installfiles/config.xml' ) ); + $xml = new class_xml(); + + $config = $xml->xml_parse_document( $config ); + + // Set Info + $this->product_name = $xml->xml_array['installdata']['package']['name']['VALUE']; + $this->product_license = $xml->xml_array['installdata']['package']['license']['VALUE']; + $this->product_version = $xml->xml_array['installdata']['package']['version']['VALUE']; + $this->product_long_version = $xml->xml_array['installdata']['package']['versionlong']['VALUE']; + $this->build_id = $xml->xml_array['installdata']['package']['build']['VALUE']; + + // Override. + $this->product_version = IPBVERSION; + } + + /** + * class_installer::write_file + * + * Simple method for writing a file + * + * @param string $name Full name, including path, of file to write + * @param string $data Contents of file + */ + function write_file( $name, $data ) + { + $fh = @fopen( $name, "w" ); + @fwrite( $fh, $data, strlen( $data ) ); + @fclose( $fh ); + } + + /** + * class_installer::create_admin_converge + * + * Builds converge entry for admin + * + * @return integer $id Converge ID + */ + function create_admin_converge() + { + /* Build Entry */ + $salt = $this->ipsclass->converge->generate_password_salt( 5 ); + $passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, md5( $this->saved_data['admin_pass'] ) ); + + $converge = array( 'converge_email' => $this->saved_data['admin_email'], + 'converge_joined' => time(), + 'converge_pass_hash' => $passhash, + 'converge_pass_salt' => str_replace( '\\', "\\\\", $salt ), + ); + + /* Insert */ + $this->ipsclass->DB->do_insert( 'members_converge', $converge ); + + /* Return ID */ + return $this->ipsclass->DB->get_insert_id(); + } + + /** + * class_installer::chmod_dir + * + * chmods all files and directories in the given path + * + * @param string $path + * @param integer $mode + */ + function chmod_dir( $path, $mode ) + { + /* Open directory */ + $dh = @opendir( $path ); + + while( $f = @readdir( $dh ) ) + { + if( $f != '.' && $f != '..' ) + { + /* Full file path */ + $_path = $path . '/'. $f; + + /* CHMOD directory and contents */ + if( @is_dir( $_path ) ) + { + @chmod( $_path, $mode ); + $this->chmod_dir( $_path, $mode ); + } + /* CHMOD file */ + else + { + @chmod( $_path, $mode ); + } + } + } + + /* Close directory */ + @closedir( $dh ); + } + + /** + * class_installer::process + * + * Figures out what action to run + * + */ + function process() + { + /* Require Action */ + require_once( INS_ROOT_PATH . 'core/actions/' . $this->template->page_current . '.php' ); + + /* Initialize */ + $class = 'action_' . $this->template->page_current; + $this->action = new $class( $this ); + $this->action->run(); + } + + /*-------------------------------------------------------------------------*/ + // Lock installer + /*-------------------------------------------------------------------------*/ + /** + * Lock Installer + * Writes a lock file + * + * @return void + */ + function lock_installer() + { + //----------------------------------------- + // Write! + //----------------------------------------- + + $this->write_file( INS_ROOT_PATH . 'installfiles/lock.php', 'LOCKED' ); + } + + /*-------------------------------------------------------------------------*/ + // Check lock + /*-------------------------------------------------------------------------*/ + /** + * Lock Installer + * Writes a lock file + * + * @return void + */ + function check_lock() + { + //----------------------------------------- + // Write! + //----------------------------------------- + + return file_exists( INS_ROOT_PATH . 'installfiles/lock.php' ) ? 1 : 0; + } + + /* Overridden by application specific class */ + function pre_process() {} + function post_process() {} + function set_requirements() {} + +} + +?> \ No newline at end of file diff --git a/upload/install/core/class_tar.php b/upload/install/core/class_tar.php new file mode 100644 index 00000000..92dd6f28 --- /dev/null +++ b/upload/install/core/class_tar.php @@ -0,0 +1,869 @@ + Tar creation and extraction module +| > Module written by Matt Mecham +| > Usage style based on the C and Perl modules +| > Will only work with PHP 4+ +| +| > Date started: 15th Feb 2002 +| +| > Module Version Number: 1.0.0 +| > Module Author: Matthew Mecham ++-------------------------------------------------------------------------- +| +| QUOTE OF THE MODULE: +| If you can't find a program the does what you want it to do, write your +| own. +| ++-------------------------------------------------------------------------- +*/ + +/************************************************************* +| +| EXTRACTION USAGE: +| +| $tar = new tar(); +| $tar->new_tar("/foo/bar", "myTar.tar"); +| $files = $tar->list_files(); +| $tar->extract_files( "/extract/to/here/dir" ); +| +| CREATION USAGE: +| +| $tar = new tar(); +| $tar->new_tar("/foo/bar" , "myNewTar.tar"); +| $tar->current_dir("/foo" ); //Optional - tells the script which dir we are in +| to syncronise file creation from the tarball +| $tar->add_files( $file_names_with_path_array ); +| (or $tar->add_directory( "/foo/bar/myDir" ); to archive a complete dir) +| $tar->write_tar(); +| +*************************************************************/ + + + +class tar { + + var $tar_header_length = '512'; + var $tar_unpack_header = 'a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8chksum/a1typeflag/a100linkname/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor/a155/prefix'; + var $tar_pack_header = 'A100 A8 A8 A8 A12 A12 A8 A1 A100 A6 A2 A32 A32 A8 A8 A155'; + var $current_dir = ""; + var $unpack_dir = ""; + var $pack_dir = ""; + var $error = ""; + var $work_dir = array(); + var $tar_in_mem = array(); + var $tar_filename = ""; + var $filehandle = ""; + var $warnings = array(); + var $attributes = array(); + var $tarfile_name = ""; + var $tarfile_path = ""; + var $tarfile_path_name = ""; + var $workfiles = array(); + + //----------------------------------------- + // CONSTRUCTOR: Attempt to guess the current working dir. + //----------------------------------------- + + function tar() { + global $HTTP_SERVER_VARS; + + if ($this_dir = getcwd()) + { + $this->current_dir = $this_dir; + } + else if (isset($HTTP_SERVER_VARS['DOCUMENT_ROOT'])) + { + $this->current_dir = $HTTP_SERVER_VARS['DOCUMENT_ROOT']; + } + else + { + $this->current_dir = './'; + } + + // Set some attributes, these can be overriden later + + $this->attributes = array( 'over_write_existing' => 0, + 'over_write_newer' => 0, + 'remove_tar_file' => 0, + 'remove_original_files' => 0, + ); + } + + //----------------------------------------- + // Set the tarname. If we are extracting a tarball, then it must be the + // path to the tarball, and it's name (eg: $tar->new_tar("/foo/bar" ,'myTar.tar') + // or if we are creating a tar, then it must be the path and name of the tar file + // to create. + //----------------------------------------- + + function new_tar($tarpath, $tarname) { + + $this->tarfile_name = $tarname; + $this->tarfile_path = $tarpath; + + // Make sure there isn't a trailing slash on the path + + $this->tarfile_path = preg_replace( "#[/\\\]$#" , "" , $this->tarfile_path ); + + $this->tarfile_path_name = $this->tarfile_path .'/'. $this->tarfile_name; + + } + + + //----------------------------------------- + // Easy way to overwrite defaults + //----------------------------------------- + + function over_write_existing() { + $this->attributes['over_write_existing'] = 1; + } + function over_write_newer() { + $this->attributes['over_write_newer'] = 1; + } + function remove_tar_file() { + $this->attributes['remove_tar_file'] = 1; + } + function remove_original_files() { + $this->attributes['remove_original_files'] = 1; + } + + + + //----------------------------------------- + // User assigns the root directory for the tar ball creation/extraction + //----------------------------------------- + + function current_dir($dir = "") { + + $this->current_dir = $dir; + + } + + //----------------------------------------- + // list files: returns an array with all the filenames in the tar file + //----------------------------------------- + + function list_files($advanced="") { + + // $advanced == "" - return name only + // $advanced == 1 - return name, size, mtime, mode + + $data = $this->read_tar(); + + $final = array(); + + foreach($data as $d) + { + if ($advanced == 1) + { + $final[] = array ( 'name' => $d['name'], + 'size' => $d['size'], + 'mtime' => $d['mtime'], + 'mode' => substr(decoct( $d['mode'] ), -4), + ); + } + else + { + $final[] = $d['name']; + } + } + + return $final; + } + + //----------------------------------------- + // Add a directory to the tar files. + // $tar->add_directory( str(TO DIRECTORY) ) + // Can be used in the following methods. + // $tar->add_directory( "/foo/bar" ); + // $tar->write_tar( "/foo/bar" ); + //----------------------------------------- + + function add_directory( $dir ) { + + $this->error = ""; + + // Make sure the $to_dir is pointing to a valid dir, or we error + // and return + + if (! is_dir($dir) ) + { + $this->error = "Extract files error: Destination directory ($to_dir) does not exist"; + return FALSE; + } + + $cur_dir = getcwd(); + chdir($dir); + + $this->get_dir_contents("./"); + + $this->add_files($this->workfiles, $dir); + + chdir($cur_dir); + + } + + //----------------------------------------- + + function get_dir_contents( $dir ) + { + + $dir = preg_replace( "#/$#", "", $dir ); + + if ( file_exists($dir) ) + { + if ( is_dir($dir) ) + { + $handle = opendir($dir); + + while (($filename = readdir($handle)) !== false) + { + if (($filename != ".") && ($filename != "..")) + { + if (is_dir($dir."/".$filename)) + { + $this->get_dir_contents($dir."/".$filename); + } + else + { + $this->workfiles[] = $dir."/".$filename; + } + } + } + + closedir($handle); + } + else + { + $this->error = "$dir is not a directory"; + return FALSE; + } + } + else + { + $this->error = "Could not locate $dir"; + return; + } + } + + //----------------------------------------- + // Extract the tarball + // $tar->extract_files( str(TO DIRECTORY), [ array( FILENAMES ) ] ) + // Can be used in the following methods. + // $tar->extract( "/foo/bar" , $files ); + // This will seek out the files in the user array and extract them + // $tar->extract( "/foo/bar" ); + // Will extract the complete tar file into the user specified directory + //----------------------------------------- + + function extract_files( $to_dir, $files="" ) { + + $this->error = ""; + + // Make sure the $to_dir is pointing to a valid dir, or we error + // and return + + if (! is_dir($to_dir) ) + { + $this->error = "Extract files error: Destination directory ($to_dir) does not exist"; + return; + } + + //----------------------------------------- + // change into the directory chosen by the user. + //----------------------------------------- + + chdir($to_dir); + $cur_dir = getcwd(); + + $to_dir_slash = $to_dir . "/"; + + //----------------------------------------- + // Get the file info from the tar + //----------------------------------------- + + $in_files = $this->read_tar(); + + if ($this->error != "") { + return; + } + + foreach ($in_files as $file) + { + + //----------------------------------------- + // Stop any potential file traversal issues + //----------------------------------------- + + $file['name'] = str_replace( '..', '', $file['name'] ); + + //----------------------------------------- + // Are we choosing which files to extract? + //----------------------------------------- + + if (is_array($files)) + { + if (! in_array($file['name'], $files) ) + { + continue; + } + } + + chdir($cur_dir); + + //----------------------------------------- + // GNU TAR format dictates that all paths *must* be in the *nix + // format - if this is not the case, blame the tar vendor, not me! + //----------------------------------------- + + if ( preg_match("#/#", $file['name']) ) + { + $path_info = explode( "/" , $file['name'] ); + $file_name = array_pop($path_info); + } else + { + $path_info = array(); + $file_name = $file['name']; + } + + //----------------------------------------- + // If we have a path, then we must build the directory tree + //----------------------------------------- + + + if (count($path_info) > 0) + { + foreach($path_info as $dir_component) + { + if ($dir_component == "") + { + continue; + } + if ( (file_exists($dir_component)) && (! is_dir($dir_component)) ) + { + $this->warnings[] = "WARNING: $dir_component exists, but is not a directory"; + continue; + } + if (! is_dir($dir_component)) + { + mkdir( $dir_component, 0777); + chmod( $dir_component, 0777); + } + + if (! @chdir($dir_component)) + { + $this->warnings[] = "ERROR: CHDIR to $dir_component FAILED!"; + } + } + } + + //----------------------------------------- + // check the typeflags, and work accordingly + //----------------------------------------- + + if (($file['typeflag'] == 0) or (!$file['typeflag']) or ($file['typeflag'] == "")) + { + if ( $FH = fopen($file_name, "wb") ) + { + fputs( $FH, $file['data'], strlen($file['data']) ); + fclose($FH); + } + else + { + $this->warnings[] = "Could not write data to $file_name"; + } + } + else if ($file['typeflag'] == 5) + { + if ( (file_exists($file_name)) && (! is_dir($file_name)) ) + { + $this->warnings[] = "$file_name exists, but is not a directory"; + continue; + } + if (! is_dir($file_name)) + { + @mkdir( $file_name, 0777); + } + } + else if ($file['typeflag'] == 6) + { + $this->warnings[] = "Cannot handle named pipes"; + continue; + } + else if ($file['typeflag'] == 1) + { + $this->warnings[] = "Cannot handle system links"; + } + else if ($file['typeflag'] == 4) + { + $this->warnings[] = "Cannot handle device files"; + } + else if ($file['typeflag'] == 3) + { + $this->warnings[] = "Cannot handle device files"; + } + else + { + $this->warnings[] = "Unknown typeflag found"; + } + + if (! @chmod( $file_name, $file['mode'] ) ) + { + $this->warnings[] = "ERROR: CHMOD $mode on $file_name FAILED!"; + } + + @touch( $file_name, $file['mtime'] ); + + } + + // Return to the "real" directory the scripts are in + + @chdir($this->current_dir); + + } + + //----------------------------------------- + // add files: + // Takes an array of files, and adds them to the tar file + // Optionally takes a path to use as root for the tar file - if omitted, it + // assumes the current working directory is the tarball root. Be careful with + // this, or you may get unexpected results -especially when attempting to read + // and add files to the tarball. + // EXAMPLE DIR STRUCTURE + // /usr/home/somedir/forums/sources + // BRIEF: To tar up the sources directory + // $files = array( 'sources/somescript.php', 'sources/anothersscript.php' ); + // If CWD is 'somedir', you'll need to use $tar->add_files( $files, "/usr/home/somedir/forums" ); + // or it'll attempt to open /usr/home/somedir/sources/somescript.php - which would result + // in an error. Either that, or use: + // chdir("/usr/home/somedir/forums"); + // $tar->add_files( $files ); + //----------------------------------------- + + function add_files( $files, $root_path="" ) + { + // Do we a root path to change into? + + if ($root_path != "") + { + chdir($root_path); + } + + $count = 0; + + foreach ($files as $file) + { + // is it a Mac OS X work file? + + if ( preg_match("/\.ds_store/i", $file ) ) + { + continue; + } + + $typeflag = 0; + $data = ""; + $linkname = ""; + + $stat = stat($file); + + // Did stat fail? + + if (! is_array($stat) ) + { + $this->warnings[] = "Error: Stat failed on $file"; + continue; + } + + $mode = fileperms($file); + $uid = $stat[4]; + $gid = $stat[5]; + $rdev = $stat[6]; + $size = filesize($file); + $mtime = filemtime($file); + + if (is_file($file)) + { + // It's a plain file, so lets suck it up + + $typeflag = 0; + + if ( $FH = fopen($file, 'rb') ) + { + $data = @fread( $FH, filesize($file) ); + fclose($FH); + } + else + { + $this->warnings[] = "ERROR: Failed to open $file"; + continue; + } + } + else if (is_link($file)) + { + $typeflag = 1; + $linkname = @readlink($file); + } + else if (is_dir($file)) + { + $typeflag = 5; + } + else + { + // Sockets, Pipes and char/block specials are not + // supported, so - lets use a silly value to keep the + // tar ball legitimate. + $typeflag = 9; + } + + // Add this data to our in memory tar file + + $this->tar_in_mem[] = array ( + 'name' => $file, + 'mode' => $mode, + 'uid' => $uid, + 'gid' => $gid, + 'size' => strlen($data), + 'mtime' => $mtime, + 'chksum' => " ", + 'typeflag' => $typeflag, + 'linkname' => $linkname, + 'magic' => "ustar\0", + 'version' => '00', + 'uname' => 'unknown', + 'gname' => 'unknown', + 'devmajor' => "", + 'devminor' => "", + 'prefix' => "", + 'data' => $data + ); + // Clear the stat cache + + @clearstatcache(); + + $count++; + } + + @chdir($this->current_dir); + + //Return the number of files to anyone who's interested + + return $count; + + } + + //----------------------------------------- + // write_tar: + // Writes the tarball into the directory specified in new_tar with a filename + // specified in new_tar + //----------------------------------------- + + function write_tar() { + + if ($this->tarfile_path_name == "") { + $this->error = 'No filename or path was specified to create a new tar file'; + return; + } + + if ( count($this->tar_in_mem) < 1 ) { + $this->error = 'No data to write to the new tar file'; + return; + } + + $tardata = ""; + + foreach ($this->tar_in_mem as $file) { + + $prefix = ""; + $tmp = ""; + $last = ""; + + // make sure the filename isn't longer than 99 characters. + + if (strlen($file['name']) > 99) + { + $pos = strrpos( $file['name'], "/" ); + + if (is_string($pos) && !$pos) + { + // filename alone is longer than 99 characters! + $this->error[] = "Filename {$file['name']} exceeds the length allowed by GNU Tape ARchives"; + continue; + } + + $prefix = substr( $file['name'], 0 , $pos ); // Move the path to the prefix + $file['name'] = substr( $file['name'], ($pos+1)); + + if (strlen($prefix) > 154) + { + $this->error[] = "File path exceeds the length allowed by GNU Tape ARchives"; + continue; + } + } + + // BEGIN FORMATTING (a8a1a100) + + $mode = sprintf("%6s ", decoct($file['mode'])); + $uid = sprintf("%6s ", decoct($file['uid'])); + $gid = sprintf("%6s ", decoct($file['gid'])); + $size = sprintf("%11s ", decoct($file['size'])); + $mtime = sprintf("%11s ", decoct($file['mtime'])); + + $tmp = pack("a100a8a8a8a12a12",$file['name'],$mode,$uid,$gid,$size,$mtime); + + $last = pack("a1" , $file['typeflag']); + $last .= pack("a100" , $file['linkname']); + + $last .= pack("a6", "ustar"); // magic + $last .= pack("a2", "" ); // version + $last .= pack("a32", $file['uname']); + $last .= pack("a32", $file['gname']); + $last .= pack("a8", ""); // devmajor + $last .= pack("a8", ""); // devminor + $last .= pack("a155", $prefix); + //$last .= pack("a12", ""); + $test_len = $tmp . $last . "12345678"; + $last .= $this->internal_build_string( "\0" , ($this->tar_header_length - strlen($test_len)) ); + + // Here comes the science bit, handling + // the checksum. + + $checksum = 0; + + for ($i = 0 ; $i < 148 ; $i++ ) + { + $checksum += ord( substr($tmp, $i, 1) ); + } + + for ($i = 148 ; $i < 156 ; $i++) + { + $checksum += ord(' '); + } + + for ($i = 156, $j = 0 ; $i < 512 ; $i++, $j++) + { + $checksum += ord( substr($last, $j, 1) ); + } + + $checksum = sprintf( "%6s ", decoct($checksum) ); + + $tmp .= pack("a8", $checksum); + + $tmp .= $last; + + $tmp .= $file['data']; + + // Tidy up this chunk to the power of 512 + + if ($file['size'] > 0) + { + if ($file['size'] % 512 != 0) + { + $homer = $this->internal_build_string( "\0" , (512 - ($file['size'] % 512)) ); + $tmp .= $homer; + } + } + + $tardata .= $tmp; + } + + // Add the footer + + $tardata .= pack( "a512", "" ); + + // print it to the tar file + + $FH = fopen( $this->tarfile_path_name, 'wb' ); + fputs( $FH, $tardata, strlen($tardata) ); + fclose($FH); + + @chmod( $this->tarfile_path_name, 0777); + + // Done.. + } + + //----------------------------------------- + // Read the tarball - builds an associative array + //----------------------------------------- + + function read_tar() { + + $filename = $this->tarfile_path_name; + + if ($filename == "") { + $this->error = 'No filename specified when attempting to read a tar file'; + return array(); + } + + if (! file_exists($filename) ) { + $this->error = 'Cannot locate the file '.$filename; + return array(); + } + + $tar_info = array(); + + $this->tar_filename = $filename; + + // Open up the tar file and start the loop + + if (! $FH = fopen( $filename , 'rb' ) ) { + $this->error = "Cannot open $filename for reading"; + return array(); + } + + // Grrr, perl allows spaces, PHP doesn't. Pack strings are hard to read without + // them, so to save my sanity, I'll create them with spaces and remove them here + + $this->tar_unpack_header = preg_replace( "/\s/", "" , $this->tar_unpack_header); + + while (!feof($FH)) { + + $buffer = @fread( $FH , $this->tar_header_length ); + + // check the block + + $checksum = 0; + + for ($i = 0 ; $i < 148 ; $i++) { + $checksum += ord( substr($buffer, $i, 1) ); + } + for ($i = 148 ; $i < 156 ; $i++) { + $checksum += ord(' '); + } + for ($i = 156 ; $i < 512 ; $i++) { + $checksum += ord( substr($buffer, $i, 1) ); + } + + $fa = unpack( $this->tar_unpack_header, $buffer); + + $name = trim($fa[filename]); + $mode = OctDec(trim($fa[mode])); + $uid = OctDec(trim($fa[uid])); + $gid = OctDec(trim($fa[gid])); + $size = OctDec(trim($fa[size])); + $mtime = OctDec(trim($fa[mtime])); + $chksum = OctDec(trim($fa[chksum])); + $typeflag = trim($fa[typeflag]); + $linkname = trim($fa[linkname]); + $magic = trim($fa[magic]); + $version = trim($fa[version]); + $uname = trim($fa[uname]); + $gname = trim($fa[gname]); + $devmajor = OctDec(trim($fa[devmajor])); + $devminor = OctDec(trim($fa[devminor])); + $prefix = trim($fa[prefix]); + + if ( ($checksum == 256) && ($chksum == 0) ) { + //EOF! + break; + } + + if ($prefix) { + $name = $prefix.'/'.$name; + } + + // Some broken tars don't set the type flag + // correctly for directories, so we assume that + // if it ends in / it's a directory... + + if ( (preg_match( "#/$#" , $name)) and (! $name) ) { + $typeflag = 5; + } + + // If it's the end of the tarball... + $test = $this->internal_build_string( '\0' , 512 ); + if ($buffer == $test) { + break; + } + + // Read the next chunk + + $data = @fread( $FH, $size ); + + if (strlen($data) != $size) { + $this->error = "Read error on tar file"; + fclose( $FH ); + return array(); + } + + $diff = $size % 512; + + if ($diff != 0) { + // Padding, throw away + $crap = @fread( $FH, (512-$diff) ); + } + + // Protect against tarfiles with garbage at the end + + if ($name == "") { + break; + } + + $tar_info[] = array ( + 'name' => $name, + 'mode' => $mode, + 'uid' => $uid, + 'gid' => $gid, + 'size' => $size, + 'mtime' => $mtime, + 'chksum' => $chksum, + 'typeflag' => $typeflag, + 'linkname' => $linkname, + 'magic' => $magic, + 'version' => $version, + 'uname' => $uname, + 'gname' => $gname, + 'devmajor' => $devmajor, + 'devminor' => $devminor, + 'prefix' => $prefix, + 'data' => $data + ); + } + + fclose($FH); + + return $tar_info; + } + + + + + + +//----------------------------------------- +// INTERNAL FUNCTIONS - These should NOT be called outside this module +//+------------------------------------------------------------------------------ + + //----------------------------------------- + // build_string: Builds a repititive string + //----------------------------------------- + + function internal_build_string($string="", $times=0) { + + $return = ""; + for ($i=0 ; $i < $times ; ++$i ) { + $return .= $string; + } + + return $return; + } + + + + + +} + + +?> \ No newline at end of file diff --git a/upload/install/core/conf.php b/upload/install/core/conf.php new file mode 100644 index 00000000..9d37f124 --- /dev/null +++ b/upload/install/core/conf.php @@ -0,0 +1,60 @@ +_admin_queries.php' ); + +/** +* SQL DEFAULT PREFIX +*/ +define( 'INS_DEFAULT_SQL_PREFIX', 'ibf_' ); + +/** +* IPS_KERNEL Location +*/ +//define( 'INS_KERNEL_PATH', "../ips_kernel" ); +define( 'INS_KERNEL_PATH', INS_DOC_ROOT_PATH . "ips_kernel/" ); + +error_reporting ( E_ERROR | E_WARNING | E_PARSE ); +set_magic_quotes_runtime( 0 ); + +define ( 'IN_ACP', 1 ); +define ( 'IN_IPB', 1 ); +define ( 'IN_DEV', 0 ); +define ( 'USE_SHUTDOWN', 0 ); +define ( 'SAFE_MODE_ON', 0 ); +define ( 'ROOT_PATH', INS_DOC_ROOT_PATH ); + +?> \ No newline at end of file diff --git a/upload/install/core/ipsclass.php b/upload/install/core/ipsclass.php new file mode 100644 index 00000000..d681bf73 --- /dev/null +++ b/upload/install/core/ipsclass.php @@ -0,0 +1,1933 @@ + $Date: 2005-10-10 16:01:09 +0100 (Mon, 10 Oct 2005) $ +| > $Revision: 5 $ +| > $Author: josh $ ++--------------------------------------------------------------------------- +| +| > Multi function library +| > Module written by Matt Mecham +| > Date started: 14th February 2002 +| +| > Module Version Number: 1.0.0 +| > Quality Checked: Wed 15 Sept. 2004 ++-------------------------------------------------------------------------- +*/ + +/** +* Main IPSclass class. +* +* This is the main class which is referenced via $ipsclass throughout +* all the IPB sub-classes and modules. It holds amongst others: +* +* // Object from class_forums.php class +* $ipsclass->forums +* // Object from class_display.php class +* $ipsclass->print +* // Object from SQL classes +* $ipsclass->db +* // Array of parsed caches (from table cache_store) +* $ipsclass->cache +* // Array of settings variables (taken from parsed setting cache) +* $ipsclass->vars +* // Array of member variables (taken from class_session::$member) +* $ipsclass->member +* // Array of sanitized _GET _POST data (run via parse_clean_value) +* $ipsclass->input +* // Array of language strings loaded via separate lang files +* $ipsclass->lang +* // Variable: Full base URL with session ID if required +* $ipsclass->base_url +* // Array of compiled template objects +* $ipsclass->compiled_templates +* +* Recommended method of passing $ipsclass through modules +* +* $module = new module(); +* $module->ipsclass =& $ipsclass; // Create reference +* +* +* @package InvisionPowerBoard +* @author Matt Mecham +* @copyright Invision Power Services, Inc. +* @version 2.1 +*/ + +if ( ! defined( 'IPSCLASS_LOADED' ) ) +{ + /** + * IPSCLASS loaded Flag + */ + define( 'IPSCLASS_LOADED', 1 ); +} + +/** +* Main ipsclass class. +* +* This class holds all the non-class specific functions +* +* @package InvisionPowerBoard +* @author Matt Mecham +* @version 2.1 +*/ +class ipsclass { + + /** + * HUMAN version string (Eg: v2.1 BETA 1) + * + * @var string + */ + var $version = "v2.1.2"; + + /** + * LONG version number (Eg: 21000) + * + * @var string + */ + var $acpversion = '21008'; + + /** + * Member Array + * + * @var array + */ + var $member = array(); + + /** + * _GET _POST Input Array + * + * @var array + */ + var $input = array(); + + /** + * Setting variables array + * + * @var array + */ + var $vars = array(); + + /** + * Language strings array + * + * @var array + */ + var $lang = array(); + + /** + * Skin variables array + * + * @var array + */ + var $skin = array(); + + /** + * Compiled loaded templates + * + * @var array + */ + var $compiled_templates = array(); + + /** + * Loaded templates inc. ID + * + * @var array + */ + var $loaded_templates = array(); + + /** + * Cache array + * + * @var array + */ + var $cache = array(); + + /** + * Session ID + * + * @var string + */ + var $session_id = ""; + + /** + * Base URL + * + * @var string + */ + var $base_url = ""; + + /** + * Language ID; corresponds to cache/lang_cache/{folder}/ + * + * @var string + */ + var $lang_id = ""; + + /** + * Session type (cookie or url) + * + * @var string + */ + var $session_type = ""; + + /**#@+ + * @access public + * @var string + */ + var $lastclick = ""; + var $location = ""; + var $debug_html = ""; + var $perm_id = ""; + var $offset = ""; + var $num_format = ""; + var $query_string_safe = ''; + + /** + * MD5 Check variable + */ + var $md5_check = ''; + /**#@-*/ + + var $server_load = 0; + var $can_use_fancy_js = 0; + var $offset_set = 0; + var $allow_unicode = 1; + var $get_magic_quotes = 0; + + /**#@+ + * @access public + * @var object + */ + var $converge; + var $print; + var $sess; + var $forums; + /**#@-*/ + + /**#@+ + * @access public + * @var array + */ + var $topic_cache = array(); + var $time_formats = array(); + var $time_options = array(); + var $today_array = array(); + + /** + * User's browser array (version, browser) + */ + var $browser; + /**#@-*/ + + + + /*-------------------------------------------------------------------------*/ + // Set up some standards to save CPU later + /*-------------------------------------------------------------------------*/ + + /** + * Initial ipsclass, set up some variables for later + * Populates: + * $this->time_options, $this->num_format, $this->get_magic_quotes, $this->ip_address + * $this->user_agent, $this->browser, $this->operating_system + * + * @return void; + */ + function initiate_ipsclass() + { + $this->time_options = array( 'JOINED' => $this->vars['clock_joined'], + 'SHORT' => $this->vars['clock_short'], + 'LONG' => $this->vars['clock_long'], + 'TINY' => $this->vars['clock_tiny'] ? $this->vars['clock_tiny'] : 'j M Y - G:i', + 'DATE' => $this->vars['clock_date'] ? $this->vars['clock_date'] : 'j M Y', + ); + + $this->num_format = ($this->vars['number_format'] == 'space') ? ' ' : $this->vars['number_format']; + + $this->get_magic_quotes = get_magic_quotes_gpc(); + + //----------------------------------------- + // Sort out the accessing IP + // (Thanks to Cosmos and schickb) + //----------------------------------------- + + $addrs = array(); + + if ( $this->vars['xforward_matching'] ) + { + foreach( array_reverse( explode( ',', $this->my_getenv('HTTP_X_FORWARDED_FOR') ) ) as $x_f ) + { + $x_f = trim($x_f); + + if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) ) + { + $addrs[] = $x_f; + } + } + + $addrs[] = $this->my_getenv('HTTP_CLIENT_IP'); + $addrs[] = $this->my_getenv('HTTP_PROXY_USER'); + } + + $addrs[] = $this->my_getenv('REMOTE_ADDR'); + + //----------------------------------------- + // Do we have one yet? + //----------------------------------------- + + foreach ( $addrs as $ip ) + { + if ( $ip ) + { + preg_match( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $ip, $match ); + + $this->ip_address = $match[1].'.'.$match[2].'.'.$match[3].'.'.$match[4]; + + if ( $this->ip_address AND $this->ip_address != '...' ) + { + break; + } + } + } + + //----------------------------------------- + // Make sure we take a valid IP address + //----------------------------------------- + + if ( ! $this->ip_address OR $this->ip_address == '...' ) + { + print "Could not determine your IP address"; + exit(); + } + + #Backwards compat: + $this->input["IP_ADDRESS"] = $this->ip_address; + + //----------------------------------------- + // Make a safe query string + //----------------------------------------- + + $this->query_string_safe = str_replace( '&amp;', '&', $this->parse_clean_value( urldecode($this->my_getenv('QUERY_STRING')) ) ); + $this->query_string_real = str_replace( '&' , '&', $this->query_string_safe ); + + //----------------------------------------- + // Upload dir? + //----------------------------------------- + + $this->vars['upload_dir'] = $this->vars['upload_dir'] ? $this->vars['upload_dir'] : INS_ROOT_PATH.'uploads'; + + //----------------------------------------- + // Char set + //----------------------------------------- + + $this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'iso-8859-1'; + + //----------------------------------------- + // PHP API + //----------------------------------------- + + define('IPB_PHP_SAPI', php_sapi_name() ); + + //----------------------------------------- + // IPS CLASS INITIATED + //----------------------------------------- + + if ( ! defined( 'IPSCLASS_INITIATED' ) ) + { + define( 'IPSCLASS_INITIATED', 1 ); + } + + //----------------------------------------- + // Get user-agent, browser and OS + //----------------------------------------- + + $this->user_agent = $this->parse_clean_value($this->my_getenv('HTTP_USER_AGENT')); + $this->browser = $this->fetch_browser(); + $this->operating_system = $this->fetch_os(); + + //----------------------------------------- + // Can we use fancy JS? IE6, Safari, Moz + // and opera 7.6 + //----------------------------------------- + + if ( $this->browser['browser'] == 'ie' AND $this->browser['version'] >= 6.0 ) + { + $this->can_use_fancy_js = 1; + } + else if ( $this->browser['browser'] == 'gecko' AND $this->browser['version'] >= 20030312 ) + { + $this->can_use_fancy_js = 1; + } + else if ( $this->browser['browser'] == 'mozilla' AND $this->browser['version'] >= 1.3 ) + { + $this->can_use_fancy_js = 1; + } + else if ( $this->browser['browser'] == 'opera' AND $this->browser['version'] >= 7.6 ) + { + $this->can_use_fancy_js = 1; + } + else if ( $this->browser['browser'] == 'safari' AND $this->browser['version'] >= 120) + { + $this->can_use_fancy_js = 1; + } + + //$this->can_use_fancy_js = 0; + } + + /*-------------------------------------------------------------------------*/ + // INIT: Load cache + /*-------------------------------------------------------------------------*/ + + /** + * Loads and parses the required cache elements from the DB + * + * @todo Add in methods to save and write to disk file + * @param array Array of caches to load + * @return void + */ + + function init_load_cache( $cachearray=array('settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'rss_export') ) + { + //-------------------------------- + // Generate cache list + //-------------------------------- + + $cachelist = "'".implode( "','", $cachearray )."'"; + + //-------------------------------- + // Get... + //-------------------------------- + + $this->DB->simple_construct( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key IN ( $cachelist )" ) ); + $this->DB->simple_exec(); + + while ( $r = $this->DB->fetch_row() ) + { + if ( $r['cs_key'] == 'settings' ) + { + $tmp = unserialize( $r['cs_value'] ); + + if ( is_array( $tmp ) and count( $tmp ) ) + { + foreach( $tmp as $k => $v ) + { + $this->vars[ $k ] = $v; + } + } + + unset( $tmp ); + } + else + { + if ( $r['cs_array'] ) + { + $this->cache[ $r['cs_key'] ] = unserialize( stripslashes($r['cs_value']) ); + } + else + { + $this->cache[ $r['cs_key'] ] = $r['cs_value']; + } + } + } + + if ( ! isset( $this->cache['systemvars'] ) ) + { + $this->DB->simple_exec_query( array( 'delete' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); + $this->DB->do_insert( 'cache_store', array( 'cs_key' => 'systemvars', 'cs_value' => addslashes(serialize(array())), 'cs_array' => 1 ) ); + } + + //-------------------------------- + // Set up cache path + //-------------------------------- + + if ( $this->vars['ipb_cache_path'] ) + { + define( 'CACHE_PATH', $this->vars['ipb_cache_path'] ); + } + else + { + define( 'CACHE_PATH', INS_ROOT_PATH . "../" ); + } + + //----------------------------------------- + // IPS CACHE LOADED + //----------------------------------------- + + if ( ! defined( 'IPSCLASS_CACHE_LOADED' ) ) + { + define( 'IPSCLASS_CACHE_LOADED', 1 ); + } + + //-------------------------------- + // Set up defaults + //-------------------------------- + + $this->vars['topic_title_max_len'] = $this->vars['topic_title_max_len'] ? $this->vars['topic_title_max_len'] : 50; + } + + /*-------------------------------------------------------------------------*/ + // INIT: DB Connection + /*-------------------------------------------------------------------------*/ + + /** + * Initializes the database connection and populates $ipsclass->DB + * + * @return void + */ + + function init_db_connection( $db, $user, $pass, $host, $pre, $driver='mysql' ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $file = ''; + + //----------------------------------------- + // Cache file? + //----------------------------------------- + + if ( defined( 'INS_SQL_FILE' ) ) + { + $file = str_replace( '<%driver%>', $driver, INS_SQL_FILE ); + } + + $classname = "db_driver_".$driver; + + $this->DB = new $classname; + + $this->DB->obj['sql_database'] = $db; + $this->DB->obj['sql_user'] = $user; + $this->DB->obj['sql_pass'] = $pass; + $this->DB->obj['sql_host'] = $host; + $this->DB->obj['sql_tbl_prefix'] = $pre; + $this->DB->obj['use_shutdown'] = 0; + + if ( $file ) + { + $this->DB->obj['query_cache_file'] = $file; + } + + if ( ! defined( 'SQL_PREFIX' ) ) + { + define( 'SQL_PREFIX', $pre ); + } + + //----------------------------------- + // Required vars? + //----------------------------------- + + if ( is_array( $this->DB->connect_vars ) and count( $this->DB->connect_vars ) ) + { + foreach( $this->DB->connect_vars as $k => $v ) + { + $this->DB->connect_vars[ $k ] = $this->vars[ $k ]; + } + } + + //-------------------------------- + // Get a DB connection + //-------------------------------- + + $this->DB->connect(); + + //----------------------------------------- + // IPS DB LOADED + //----------------------------------------- + + if ( ! defined( 'IPSCLASS_DB_LOADED' ) ) + { + define( 'IPSCLASS_DB_LOADED', 1 ); + } + } + + /*-------------------------------------------------------------------------*/ + // Get browser + // Return: unknown, windows, mac + /*-------------------------------------------------------------------------*/ + + /** + * Fetches the user's operating system + * + * @return string + */ + + function fetch_os() + { + $useragent = strtolower($this->my_getenv('HTTP_USER_AGENT')); + + if ( strstr( $useragent, 'mac' ) ) + { + return 'mac'; + } + + if ( preg_match( '#wi(n|n32|ndows)#', $useragent ) ) + { + return 'windows'; + } + + return 'unknown'; + } + + /*-------------------------------------------------------------------------*/ + // Get browser + // Return: unknown, opera, IE, mozilla, konqueror, safari + /*-------------------------------------------------------------------------*/ + + /** + * Fetches the user's browser from their user-agent + * + * @return array [ browser, version ] + */ + + function fetch_browser() + { + $version = 0; + $browser = "unknown"; + $useragent = strtolower($this->my_getenv('HTTP_USER_AGENT')); + + //----------------------------------------- + // Opera... + //----------------------------------------- + + if ( strstr( $useragent, 'opera' ) ) + { + preg_match( "#opera[ /]([0-9\.]{1,10})#", $useragent, $ver ); + + return array( 'browser' => 'opera', 'version' => $ver[1] ); + } + + //----------------------------------------- + // IE... + //----------------------------------------- + + if ( strstr( $useragent, 'msie' ) ) + { + preg_match( "#msie[ /]([0-9\.]{1,10})#", $useragent, $ver ); + + return array( 'browser' => 'ie', 'version' => $ver[1] ); + } + + //----------------------------------------- + // Safari... + //----------------------------------------- + + if ( strstr( $useragent, 'safari' ) ) + { + preg_match( "#safari/([0-9.]{1,10})#", $useragent, $ver ); + + return array( 'browser' => 'safari', 'version' => $ver[1] ); + } + + //----------------------------------------- + // Mozilla browsers... + //----------------------------------------- + + if ( strstr( $useragent, 'gecko' ) ) + { + preg_match( "#gecko/(\d+)#", $useragent, $ver ); + + return array( 'browser' => 'gecko', 'version' => $ver[1] ); + } + + //----------------------------------------- + // Older Mozilla browsers... + //----------------------------------------- + + if ( strstr( $useragent, 'mozilla' ) ) + { + preg_match( "#^mozilla/[5-9]\.[0-9.]{1,10}.+rv:([0-9a-z.+]{1,10})#", $useragent, $ver ); + + return array( 'browser' => 'mozilla', 'version' => $ver[1] ); + } + + //----------------------------------------- + // Konqueror... + //----------------------------------------- + + if ( strstr( $useragent, 'konqueror' ) ) + { + preg_match( "#konqueror/([0-9.]{1,10})#", $useragent, $ver ); + + return array( 'browser' => 'konqueror', 'version' => $ver[1] ); + } + + //----------------------------------------- + // Still here? + //----------------------------------------- + + return array( 'browser' => $browser, 'version' => $version ); + } + + /*-------------------------------------------------------------------------*/ + // + // LOAD CLASS: Wrapper to load ..er.. classes + // + /*-------------------------------------------------------------------------*/ + + /** + * Wrapper function to load a class and pass $this automagically + * + * @param string File name + * @param string Class Name + * @param string Constructor variables + * @return object + */ + + function load_class( $file_name, $class_name, $pass_var="" ) + { + if ( ! $class_name ) + { + $class_name = $file_name; + } + + require_once( $file_name ); + + if ( $pass_var ) + { + $class = new $class_name ( $pass_var ); + } + else + { + $class = new $class_name; + } + + $class->ipsclass =& $this; + return $class; + } + + /*-------------------------------------------------------------------------*/ + // UNPACK MEMBER CACHE + /*-------------------------------------------------------------------------*/ + /** + * Unpacks a member's cache + * + * Left as a function for any other processing + * + * @param string Serialized cache array + * @return array Unpacked array + */ + function unpack_member_cache( $cache_serialized_array="" ) + { + return unserialize( $cache_serialized_array ); + } + + /*-------------------------------------------------------------------------*/ + // PACK MEMBER CACHE + /*-------------------------------------------------------------------------*/ + /** + * Packs up member's cache + * + * Takes an existing array and updates member's DB row + * This will overwrite any existing entries by the same + * key and create new entries for non-existing rows + * + * @param integer Member ID + * @param array New array + * @param array Current Array (optional) + * @return boolean + */ + function pack_and_update_member_cache( $member_id, $new_cache_array, $current_cache_array='' ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $member_id = intval( $member_id ); + + //----------------------------------------- + // Got a member ID? + //----------------------------------------- + + if ( ! $member_id ) + { + return FALSE; + } + + //----------------------------------------- + // Got anything to update? + //----------------------------------------- + + if ( ! is_array( $new_cache_array ) OR ! count( $new_cache_array ) ) + { + return FALSE; + } + + //----------------------------------------- + // Got a current cache? + //----------------------------------------- + + if ( ! is_array( $current_cache_array ) ) + { + $member = $this->DB->build_and_exec_query( array( 'select' => "members_cache", 'from' => 'members', 'where' => 'id='.$member_id ) ); + + $member['members_cache'] = $member['members_cache'] ? $member['members_cache'] : array(); + + $current_cache_array = unserialize( $member['members_cache'] ); + } + + //----------------------------------------- + // Overwrite... + //----------------------------------------- + + foreach( $new_cache_array as $k => $v ) + { + $current_cache_array[ $k ] = $v; + } + + //----------------------------------------- + // Update... + //----------------------------------------- + + $this->DB->do_update( 'members', array( 'members_cache' => serialize( $current_cache_array ) ), 'id='.$member_id ); + + //----------------------------------------- + // Set member array right... + //----------------------------------------- + + $this->member['_cache'] = $current_cache_array; + } + + /*-------------------------------------------------------------------------*/ + // UPDATE FORUM CACHE + /*-------------------------------------------------------------------------*/ + /** + * Updates forum cache (loads all, recaches all) + * + * @return void + */ + function update_forum_cache() + { + $ignore_me = array( 'redirect_url', 'redirect_loc', 'rules_text', 'permission_custom_error', 'notify_modq_emails' ); + + if ( $this->vars['forum_cache_minimum'] ) + { + $ignore_me[] = 'description'; + $ignore_me[] = 'rules_title'; + } + + $this->cache['forum_cache'] = array(); + + $this->DB->simple_construct( array( 'select' => '*', + 'from' => 'forums', + 'order' => 'parent_id, position' + ) ); + $this->DB->simple_exec(); + + while( $f = $this->DB->fetch_row() ) + { + $fr = array(); + + $perms = unserialize(stripslashes($f['permission_array'])); + + //----------------------------------------- + // Stuff we don't need... + //----------------------------------------- + + foreach( $f as $k => $v ) + { + if ( in_array( $k, $ignore_me ) ) + { + continue; + } + else + { + if ( $v != "" ) + { + $fr[ $k ] = $v; + } + } + } + + $fr['read_perms'] = $perms['read_perms']; + $fr['reply_perms'] = $perms['reply_perms']; + $fr['start_perms'] = $perms['start_perms']; + $fr['upload_perms'] = $perms['upload_perms']; + $fr['show_perms'] = $perms['show_perms']; + + unset($fr['permission_array']); + + $this->cache['forum_cache'][ $fr['id'] ] = $fr; + } + + $this->update_cache( array( 'name' => 'forum_cache', 'array' => 1, 'deletefirst' => 1, 'donow' => 1 ) ); + } + + /*-------------------------------------------------------------------------*/ + // + // UPDATE CACHE + // + /*-------------------------------------------------------------------------*/ + + /** + * Updates cache + * + * @param array Cache values (name, value, deletefirst, donow) + * @todo remove some of the MySQL specific code + * @return void + */ + + function update_cache( $v=array() ) + { + //----------------------------------------- + // Don't cache forums? + //----------------------------------------- + + if ( $v['name'] == 'forum_cache' AND $this->vars['no_cache_forums'] ) + { + return; + } + + //----------------------------------------- + // Next... + //----------------------------------------- + + if ( $v['name'] ) + { + if ( ! $v['value'] ) + { + $value = $this->DB->add_slashes(serialize($this->cache[ $v['name'] ])); + } + + $this->DB->manual_addslashes = 1; + $this->DB->no_escape_fields['cs_key'] = 1; + + if ( $v['deletefirst'] == 1 ) + { + if ( $v['donow'] ) + { + if ( $this->vars['sql_driver'] == 'mysql' ) + { + $this->DB->query( "REPLACE INTO ".SQL_PREFIX."cache_store SET cs_key='{$v['name']}', cs_value='$value', cs_array=".intval($v['array']) ); + } + else + { + $this->DB->simple_construct( array( 'delete' => 'cache_store', 'where' => "cs_key='{$v['name']}'" ) ); + $this->DB->simple_exec(); + + $this->DB->do_insert( 'cache_store', array( 'cs_array' => intval($v['array']), 'cs_key' => $v['name'], 'cs_value' => $value ) ); + } + } + else + { + if ( $this->vars['sql_driver'] == 'mysql' ) + { + $this->DB->query( "REPLACE INTO ".SQL_PREFIX."cache_store SET cs_key='{$v['name']}', cs_value='$value', cs_array=".intval($v['array']) ); + } + else + { + $this->DB->simple_construct( array( 'delete' => 'cache_store', 'where' => "cs_key='{$v['name']}'" ) ); + $this->DB->simple_shutdown_exec(); + + $this->DB->do_shutdown_insert( 'cache_store', array( 'cs_array' => intval($v['array']), 'cs_key' => $v['name'], 'cs_value' => $value ) ); + } + } + } + else + { + if ( $v['donow'] ) + { + $this->DB->do_update( 'cache_store', array( 'cs_array' => intval($v['array']), 'cs_value' => $value ), "cs_key='{$v['name']}'" ); + } + else + { + $this->DB->do_shutdown_update( 'cache_store', array( 'cs_array' => intval($v['array']), 'cs_value' => $value ), "cs_key='{$v['name']}'" ); + } + } + + $this->DB->manual_addslashes = 0; + } + } + + /*-------------------------------------------------------------------------*/ + // + // MY DECONSTRUCTOR + // + /*-------------------------------------------------------------------------*/ + + /** + * Manual deconstructor + * + * Runs any SQL shutdown queries and mail tasks + * + * @return void + */ + + function my_deconstructor() + { + //----------------------------------------- + // Any shutdown queries + //----------------------------------------- + + $this->DB->return_die = 0; + + if ( count( $this->DB->obj['shutdown_queries'] ) ) + { + foreach( $this->DB->obj['shutdown_queries'] as $q ) + { + $this->DB->query( $q ); + } + } + + $this->DB->return_die = 1; + + $this->DB->obj['shutdown_queries'] = array(); + + //----------------------------------------- + // Process mail queue + //----------------------------------------- + + $this->process_mail_queue(); + + $this->DB->close_db(); + } + + /*-------------------------------------------------------------------------*/ + // txt_alphanumerical_clean + // ------------------ + // Remove non alphas + /*-------------------------------------------------------------------------*/ + + /** + * Clean a string to remove all non alphanumeric characters + * + * @param string Input String + * @return string Parsed string + * @since 2.1 + */ + function txt_alphanumerical_clean( $t ) + { + return preg_replace( "/[^a-zA-Z0-9\-\_]/", "" , $t ); + } + + /*-------------------------------------------------------------------------*/ + // txt_mb_strlen + // ------------------ + // Multi byte char string length + /*-------------------------------------------------------------------------*/ + + /** + * Get the true length of a multi-byte character string + * + * @param string Input String + * @return intger String length + * @since 2.1 + */ + function txt_mb_strlen( $t ) + { + return strlen( preg_replace("/&#([0-9]+);/", "-", $this->txt_stripslashes( $t ) ) ); + } + + /*-------------------------------------------------------------------------*/ + // txt_stripslashes + // ------------------ + // Make Big5 safe - only strip if not already... + /*-------------------------------------------------------------------------*/ + + /** + * Remove slashes if magic_quotes enabled + * + * @param string Input String + * @return string Parsed string + * @since 2.0 + */ + function txt_stripslashes($t) + { + if ( $this->get_magic_quotes ) + { + $t = stripslashes($t); + $t = preg_replace( "/\\\(?!&#|\?#)/", "\", $t ); + } + + return $t; + } + + /*-------------------------------------------------------------------------*/ + // Safe Slashes - ensures slashes are saved correctly + /*-------------------------------------------------------------------------*/ + + /** + * Attempt to make slashes safe for us in DB (not really needed now?) + * + * @param string Input String + * @return string Parsed string + * @since 2.0 + */ + function txt_safeslashes($t="") + { + return str_replace( '\\', "\\\\", $this->txt_stripslashes($t)); + } + + /*-------------------------------------------------------------------------*/ + // txt_htmlspecialchars + // ------------------ + // Custom version of htmlspecialchars to take into account mb chars + /*-------------------------------------------------------------------------*/ + + /** + * htmlspecialchars including multi-byte characters + * + * @param string Input String + * @return string Parsed string + * @since 2.0 + */ + function txt_htmlspecialchars($t="") + { + // Use forward look up to only convert & not { + $t = preg_replace("/&(?!#[0-9]+;)/s", '&', $t ); + $t = str_replace( "<", "<" , $t ); + $t = str_replace( ">", ">" , $t ); + $t = str_replace( '"', """, $t ); + $t = str_replace( "'", ''', $t ); + + return $t; // A nice cup of? + } + + /*-------------------------------------------------------------------------*/ + // txt_UNhtmlspecialchars + // ------------------ + // Undoes what the above function does. Yes. + /*-------------------------------------------------------------------------*/ + + /** + * unhtmlspecialchars including multi-byte characters + * + * @param string Input String + * @return string Parsed string + * @since 2.0 + */ + function txt_UNhtmlspecialchars($t="") + { + $t = str_replace( "&" , "&", $t ); + $t = str_replace( "<" , "<", $t ); + $t = str_replace( ">" , ">", $t ); + $t = str_replace( """, '"', $t ); + $t = str_replace( "'", "'", $t ); + + return $t; + } + + /*-------------------------------------------------------------------------*/ + // txt_wintounix + // ------------------ + // Converts \r\n to \n + /*-------------------------------------------------------------------------*/ + + /** + * Convert windows newlines to unix newlines + * + * @param string Input String + * @return string Parsed string + * @since 2.0 + */ + function txt_windowstounix($t="") + { + // windows + $t = str_replace( "\r\n" , "\n", $t ); + // Mac OS 9 + $t = str_replace( "\r" , "\n", $t ); + return $t; + } + + /*-------------------------------------------------------------------------*/ + // + // Convert newlines to
nl2br is buggy with
on early PHP builds + // + /*-------------------------------------------------------------------------*/ + + /** + *
Safe nl2br (Buggy on old PHP builds) + * + * @param string Input text + * @return string Parsed text + * @since 2.0 + */ + function my_nl2br($t="") + { + return str_replace( "\n", "
", $t ); + } + + /*-------------------------------------------------------------------------*/ + // + // Convert
to newlines + // + /*-------------------------------------------------------------------------*/ + + /** + *
Safe br2nl + * + * @param string Input text + * @return string Parsed text + * @since 2.0 + */ + function my_br2nl($t="") + { + $t = preg_replace( "#(?:\n|\r)?
(?:\n|\r)?#", "\n", $t ); + $t = preg_replace( "#(?:\n|\r)?
(?:\n|\r)?#" , "\n", $t ); + + return $t; + } + + /*-------------------------------------------------------------------------*/ + // + // Redirect using HTTP commands, not a page meta tag. + // + /*-------------------------------------------------------------------------*/ + + /** + * HTTP redirect with out message screen + * + * @param string URL to load + * @return void + * @since 2.0 + */ + function boink_it($url) + { + // Ensure &s are taken care of + + $url = str_replace( "&", "&", $url ); + + if ($this->vars['header_redirect'] == 'refresh') + { + @header("Refresh: 0;url=".$url); + } + else if ($this->vars['header_redirect'] == 'html') + { + echo(""); + exit(); + } + else + { + @header("Location: ".$url); + } + exit(); + } + + /*-------------------------------------------------------------------------*/ + // + // Create a random 8 character password + // + /*-------------------------------------------------------------------------*/ + + /** + * Create a random 8 character password + * + * @todo check if we still need this? + * @return string Password + * @since 2.0 + */ + function make_password() + { + $pass = ""; + $chars = array( + "1","2","3","4","5","6","7","8","9","0", + "a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J", + "k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T", + "u","U","v","V","w","W","x","X","y","Y","z","Z"); + + $count = count($chars) - 1; + + srand((double)microtime()*1000000); + + for($i = 0; $i < 8; $i++) + { + $pass .= $chars[rand(0, $count)]; + } + + return($pass); + } + + /*-------------------------------------------------------------------------*/ + // text_tidy: + // Takes raw text from the DB and makes it all nice and pretty - which also + // parses un-HTML'd characters. Use this with caution! + /*-------------------------------------------------------------------------*/ + + /** + * Takes raw text from the DB and makes it all nice and pretty - which also + * parses un-HTML'd characters. Use this with caution! + * + * @param string Raw text + * @return string Parsed text + * @since 2.0 + * @todo Check if we still need this + * @deprecated Since IPB 2.1 + */ + function text_tidy($txt = "") { + + $trans = get_html_translation_table(HTML_ENTITIES); + $trans = array_flip($trans); + + $txt = strtr( $txt, $trans ); + + $txt = preg_replace( "/\s{2}/" , "  " , $txt ); + $txt = preg_replace( "/\r/" , "\n" , $txt ); + $txt = preg_replace( "/\t/" , "  " , $txt ); + //$txt = preg_replace( "/\\n/" , "\n" , $txt ); + + return $txt; + } + + /*-------------------------------------------------------------------------*/ + // Return a date or '--' if the date is undef. + /*-------------------------------------------------------------------------*/ + + /** + * Generate Human formatted date string + * Return a date or '--' if the date is undef. + * We use the rather nice gmdate function in PHP to synchronise our times + * with GMT. This gives us the following choices: + * If the user has specified a time offset, we use that. If they haven't set + * a time zone, we use the default board time offset (which should automagically + * be adjusted to match gmdate. + * + * @param integer Unix date + * @param method LONG, SHORT, JOINED, TINY + * @param integer + * @param integer + * @return string Parsed time + * @since 2.0 + */ + function get_date($date, $method, $norelative=0, $full_relative=0) + { + if ( ! $date ) + { + return '--'; + } + + if ( empty($method) ) + { + $method = 'LONG'; + } + + if ($this->offset_set == 0) + { + // Save redoing this code for each call, only do once per page load + + $this->offset = $this->get_time_offset(); + + if ( $this->vars['time_use_relative'] ) + { + $this->today_time = gmdate('d,m,Y', ( time() + $this->offset) ); + $this->yesterday_time = gmdate('d,m,Y', ( (time() - 86400) + $this->offset) ); + } + + $this->offset_set = 1; + } + + //----------------------------------------- + // Full relative? + //----------------------------------------- + + if ( $this->vars['time_use_relative'] == 3 ) + { + $full_relative = 1; + } + + //----------------------------------------- + // FULL Relative + //----------------------------------------- + + if ( $full_relative and ( $norelative != 1 ) ) + { + $diff = time() - $date; + + if ( $diff < 3600 ) + { + if ( $diff < 120 ) + { + return $this->lang['time_less_minute']; + } + else + { + return sprintf( $this->lang['time_minutes_ago'], intval($diff / 60) ); + } + } + else if ( $diff < 7200 ) + { + return $this->lang['time_less_hour']; + } + else if ( $diff < 86400 ) + { + return sprintf( $this->lang['time_hours_ago'], intval($diff / 3600) ); + } + else if ( $diff < 172800 ) + { + return $this->lang['time_less_day']; + } + else if ( $diff < 604800 ) + { + return sprintf( $this->lang['time_days_ago'], intval($diff / 86400) ); + } + else if ( $diff < 1209600 ) + { + return $this->lang['time_less_week']; + } + else if ( $diff < 3024000 ) + { + return sprintf( $this->lang['time_weeks_ago'], intval($diff / 604900) ); + } + else + { + return gmdate($this->time_options[$method], ($date + $this->offset) ); + } + } + + //----------------------------------------- + // Yesterday / Today + //----------------------------------------- + + else if ( $this->vars['time_use_relative'] and ( $norelative != 1 ) ) + { + $this_time = gmdate('d,m,Y', ($date + $this->offset) ); + + //----------------------------------------- + // Use level 2 relative? + //----------------------------------------- + + if ( $this->vars['time_use_relative'] == 2 ) + { + $diff = time() - $date; + + if ( $diff < 3600 ) + { + if ( $diff < 120 ) + { + return $this->lang['time_less_minute']; + } + else + { + return sprintf( $this->lang['time_minutes_ago'], intval($diff / 60) ); + } + } + } + + //----------------------------------------- + // Still here? + //----------------------------------------- + + if ( $this_time == $this->today_time ) + { + return str_replace( '{--}', $this->lang['time_today'], gmdate($this->vars['time_use_relative_format'], ($date + $this->offset) ) ); + } + else if ( $this_time == $this->yesterday_time ) + { + return str_replace( '{--}', $this->lang['time_yesterday'], gmdate($this->vars['time_use_relative_format'], ($date + $this->offset) ) ); + } + else + { + return gmdate($this->time_options[$method], ($date + $this->offset) ); + } + } + + //----------------------------------------- + // Normal + //----------------------------------------- + + else + { + return gmdate($this->time_options[$method], ($date + $this->offset) ); + } + } + + /*-------------------------------------------------------------------------*/ + // Returns the time - tick tock, etc + /*-------------------------------------------------------------------------*/ + + /** + * Return current TIME (not date) + * + * @param integer Unix date + * @param string PHP date() method + * @return string + * @since 2.0 + */ + function get_time($date, $method='h:i A') + { + if ($this->offset_set == 0) + { + // Save redoing this code for each call, only do once per page load + + $this->offset = $this->get_time_offset(); + + $this->offset_set = 1; + } + + return gmdate($method, ($date + $this->offset) ); + } + + /*-------------------------------------------------------------------------*/ + // Returns the offset needed and stuff - quite groovy. + /*-------------------------------------------------------------------------*/ + + /** + * Calculates the user's time offset + * + * @return integer + * @since 2.0 + */ + function get_time_offset() + { + $r = 0; + + $r = ( ($this->member['time_offset'] != "") ? $this->member['time_offset'] : $this->vars['time_offset'] ) * 3600; + + if ( $this->vars['time_adjust'] ) + { + $r += ($this->vars['time_adjust'] * 60); + } + + if ( $this->member['dst_in_use'] ) + { + $r += 3600; + } + + return $r; + } + + /*-------------------------------------------------------------------------*/ + // Converts user's date to GMT unix date + /*-------------------------------------------------------------------------*/ + + /** + * Converts user's date to GMT unix date + * + * @param array array( 'year', 'month', 'day', 'hour', 'minute' ) + * @return integer + * @since 2.0 + */ + function convert_local_date_to_unix( $time=array() ) + { + //----------------------------------------- + // Get the local offset + //----------------------------------------- + + $offset = $this->get_time_offset(); + $time = gmmktime( intval($time['hour']), intval($time['minute']), 0, intval($time['month']), intval($time['day']), intval($time['year']) ); + + return $time - $offset; + } + + /*-------------------------------------------------------------------------*/ + // Convert unix timestamp into: (no leading zeros) + /*-------------------------------------------------------------------------*/ + + /** + * Convert unix timestamp into: (no leading zeros) + * + * Written into separate function to allow for timezone to be used easily + * + * @param integer Unix date + * @return array array( 'day' => x, 'month' => x, 'year' => x, 'hour' => x, 'minute' => x ); + * @since 2.0 + */ + function unixstamp_to_human( $unix=0 ) + { + $offset = $this->get_time_offset(); + $tmp = gmdate( 'j,n,Y,G,i', $unix + $offset ); + + list( $day, $month, $year, $hour, $min ) = explode( ',', $tmp ); + + return array( 'day' => $day, + 'month' => $month, + 'year' => $year, + 'hour' => $hour, + 'minute' => $min ); + } + + /*-------------------------------------------------------------------------*/ + // My gmmktime() - PHP func seems buggy + /*-------------------------------------------------------------------------*/ + + /** + * My gmmktime() - PHP func seems buggy + * + * + * @param integer + * @param integer + * @param integer + * @param integer + * @param integer + * @param integer + * @return integer + * @since 2.0 + */ + function date_gmmktime( $hour=0, $min=0, $sec=0, $month=0, $day=0, $year=0 ) + { + // Calculate UTC time offset + $offset = date( 'Z' ); + + // Generate server based timestamp + $time = mktime( $hour, $min, $sec, $month, $day, $year ); + + // Calculate DST on / off + $dst = intval( date( 'I', $time ) - date( 'I' ) ); + + return $offset + ($dst * 3600) + $time; + } + + /*-------------------------------------------------------------------------*/ + // getdate doesn't work apparently as it doesn't take into account + // the offset, even when fed a GMT timestamp. + /*-------------------------------------------------------------------------*/ + + /** + * Hand rolled GETDATE method + * + * getdate doesn't work apparently as it doesn't take into account + * the offset, even when fed a GMT timestamp. + * + * @param integer Unix date + * @return array 0, seconds, minutes, hours, mday, wday, mon, year, yday, weekday, month + * @since 2.0 + */ + function date_getgmdate( $gmt_stamp ) + { + $tmp = gmdate( 'j,n,Y,G,i,s,w,z,l,F', $gmt_stamp ); + + list( $day, $month, $year, $hour, $min, $seconds, $wday, $yday, $weekday, $fmon ) = explode( ',', $tmp ); + + return array( 0 => $gmt_stamp, + "seconds" => $seconds, // Numeric representation of seconds 0 to 59 + "minutes" => $min, // Numeric representation of minutes 0 to 59 + "hours" => $hour, // Numeric representation of hours 0 to 23 + "mday" => $day, // Numeric representation of the day of the month 1 to 31 + "wday" => $wday, // Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday) + "mon" => $month, // Numeric representation of a month 1 through 12 + "year" => $year, // A full numeric representation of a year, 4 digits Examples: 1999 or 2003 + "yday" => $yday, // Numeric representation of the day of the year 0 through 365 + "weekday" => $weekday, // A full textual representation of the day of the week Sunday through Saturday + "month" => $fmon, // A full textual representation of a month, such as January or Mar + ); + } + + /*-------------------------------------------------------------------------*/ + // Get Environment Variable + /*-------------------------------------------------------------------------*/ + + /** + * Get an environment variable value + * + * Abstract layer allows us to user $_SERVER or getenv() + * + * @param string Env. Variable key + * @return string + * @since 2.2 + */ + + function my_getenv($key) + { + $return = array(); + + if( is_array( $_SERVER ) AND count( $_SERVER ) ) + { + if( isset( $_SERVER[$key] ) ) + { + $return = $_SERVER[$key]; + } + } + + if( !$return ) + { + $return = getenv($key); + } + + return $return; + } + + /*-------------------------------------------------------------------------*/ + // Sets a cookie, abstract layer allows us to do some checking, etc + /*-------------------------------------------------------------------------*/ + + /** + * Set a cookie + * + * Abstract layer allows us to do some checking, etc + * + * @param string Cookie name + * @param string Cookie value + * @param integer Is sticky flag + * @return void + * @since 2.0 + */ + function my_setcookie($name, $value = "", $sticky = 1) + { + if ( $this->no_print_header ) + { + return; + } + + if ($sticky == 1) + { + $expires = time() + 60*60*24*365; + } + + $this->vars['cookie_domain'] = $this->vars['cookie_domain'] == "" ? "" : $this->vars['cookie_domain']; + $this->vars['cookie_path'] = $this->vars['cookie_path'] == "" ? "/" : $this->vars['cookie_path']; + + $name = $this->vars['cookie_id'].$name; + + @setcookie($name, $value, $expires, $this->vars['cookie_path'], $this->vars['cookie_domain']); + } + + /*-------------------------------------------------------------------------*/ + // Cookies, cookies everywhere and not a byte to eat. forum_read + /*-------------------------------------------------------------------------*/ + + /** + * Get a cookie + * + * Abstract layer allows us to do some checking, etc + * + * @param string Cookie name + * @return mixed + * @since 2.0 + */ + + function my_getcookie($name) + { + if ( isset($_COOKIE[$this->vars['cookie_id'].$name]) ) + { + if ( ! in_array( $name, array('topicsread', 'forum_read') ) ) + { + return $this->parse_clean_value(urldecode($_COOKIE[$this->vars['cookie_id'].$name])); + } + else + { + return urldecode($_COOKIE[$this->vars['cookie_id'].$name]); + } + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Makes incoming info "safe" + /*-------------------------------------------------------------------------*/ + + /** + * Parse _GET _POST data + * + * Clean up and unHTML + * + * @return void + * @since Time began + */ + function parse_incoming() + { + # THIS NEEDS TO BE HERE! + $this->get_magic_quotes = @get_magic_quotes_gpc(); + + if ( is_array($_GET) ) + { + while( list($k, $v) = each($_GET) ) + { + if ( is_array($_GET[$k]) ) + { + while( list($k2, $v2) = each($_GET[$k]) ) + { + $this->input[ $this->parse_clean_key($k) ][ $this->parse_clean_key($k2) ] = $this->parse_clean_value($v2); + } + } + else + { + $this->input[ $this->parse_clean_key($k) ] = $this->parse_clean_value($v); + } + } + } + + //---------------------------------------- + // Overwrite GET data with post data + //---------------------------------------- + + if ( is_array($_POST) ) + { + while( list($k, $v) = each($_POST) ) + { + if ( is_array($_POST[$k]) ) + { + while( list($k2, $v2) = each($_POST[$k]) ) + { + $this->input[ $this->parse_clean_key($k) ][ $this->parse_clean_key($k2) ] = $this->parse_clean_value($v2); + } + } + else + { + $this->input[ $this->parse_clean_key($k) ] = $this->parse_clean_value($v); + } + } + } + + $this->input['request_method'] = strtolower($this->my_getenv('REQUEST_METHOD')); + } + + /*-------------------------------------------------------------------------*/ + // Key Cleaner - ensures no funny business with form elements + /*-------------------------------------------------------------------------*/ + + /** + * Clean _GET _POST key + * + * @param string Key name + * @return string Cleaned key name + * @since 2.1 + */ + function parse_clean_key($key) + { + if ($key == "") + { + return ""; + } + + $key = htmlspecialchars(urldecode($key)); + $key = preg_replace( "/\.\./" , "" , $key ); + $key = preg_replace( "/\_\_(.+?)\_\_/" , "" , $key ); + $key = preg_replace( "/^([\w\.\-\_]+)$/", "$1", $key ); + + return $key; + } + + /*-------------------------------------------------------------------------*/ + // Clean evil tags + /*-------------------------------------------------------------------------*/ + + /** + * Clean possible javascipt codes + * + * @param string Input + * @return string Cleaned Input + * @since 2.0 + */ + function clean_evil_tags( $t ) + { + $t = preg_replace( "/javascript/i" , "javascript", $t ); + $t = preg_replace( "/alert/i" , "alert" , $t ); + $t = preg_replace( "/about:/i" , "about:" , $t ); + $t = preg_replace( "/onmouseover/i", "onmouseover" , $t ); + $t = preg_replace( "/onclick/i" , "onclick" , $t ); + $t = preg_replace( "/onload/i" , "onload" , $t ); + $t = preg_replace( "/onsubmit/i" , "onsubmit" , $t ); + $t = preg_replace( "/vars['strip_space_chr'] ) + { + $val = str_replace( chr(0xCA), "", $val ); //Remove sneaky spaces + } + + $val = str_replace( "&" , "&" , $val ); + $val = str_replace( "" , "-->" , $val ); + $val = preg_replace( "/ + + + +

 

+

 

+

 

+
+ + +
+
+ +

Welcome to the IPS Product Installer

+
+
+
+
+

{$this->install_pages[$this->page_current]}

+ +
    + +EOF; + +foreach( $this->progress as $p ) +{ +echo "
  • {$p[1]}
  • "; +} + +echo << +
+ +
+
+
+ +
+ +
+

{$this->product_name} Installation

+ {$this->product_version} +
+
+
+ + {$this->page_content} +
+
+
+
+ +
+
+
+ +
+ +
+EOF; + +if( ! $this->hide_next ) +{ +if( $this->next_action == 'disabled' ) +{ +echo << +EOF; +} +else +{ +echo << +EOF; +} +} + +$date = date("Y"); + +echo << +
+
+ + +
+
+
+ + + + + +EOF; + } + + // ------------------------------------------------------------ + // Requirements Page Template + // ------------------------------------------------------------ + function requirements_page( $php_version, $sql_version ) + { +return << + +
+ +
+
+ Welcome to the installer for {$this->product_name}. This wizard will guide you through the installation process. +
+
+

+ +

System Requirements

+ +
+ PHP: v{$php_version} or better
+ SQL: mySQL v$sql_version or better +

+EOF; + } + + // ------------------------------------------------------------ + // EULA Page Template + // ------------------------------------------------------------ + function eula_page( $eula ) + { +return << + +check_eula = function() +{ + if( document.getElementById( 'eula' ).checked == true ) + { + return true; + } + else + { + alert( 'You must agree to the license before continuing' ); + return false; + } +} + +document.getElementById( 'install-form' ).onsubmit = check_eula; + + + +Please read and agree to the End User License Agreement before continuing.

+ + +
+ $eula +
+ I agree to the license agreement + + +EOF; + } + + // ------------------------------------------------------------ + // Address Page Template + // ------------------------------------------------------------ + function address_page( $dir, $url ) + { +return <<
+ +
+   Address details + + + + + + + + + + + +
Install Directory:
Install Address:
+
+EOF; + } + + // ------------------------------------------------------------ + // DB Check Page Template + // ------------------------------------------------------------ + function db_check_page( $drivers=array() ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $_drivers = ''; + + foreach ($drivers as $k => $v) + { + $selected = ($v == "mysql") ? " selected='selected'" : ""; + $_drivers .= "\n"; + } + +return << +
+ +
Please select which database engine you wish to use.
+ + +
+   Database Engine + + + + + +
SQL Driver: + +
+
+ +EOF; + } + // ------------------------------------------------------------ + // DB Page Template + // ------------------------------------------------------------ + function db_page() + { + $prefix = $_REQUEST['db_pre'] ? $_REQUEST['db_pre'] : INS_DEFAULT_SQL_PREFIX; + +return << +
+ +
Ask your webhost if you are unsure about any of these settings. You must create the database before installing..
+ + +
+   Database details + + + + + + + + + + + + + + + + + + + + + + + +
SQL Host: + +
Database Name: + +
SQL Username: + +
SQL Password: + +
SQL Table Prefix: + +
+
+ +EOF; + } + + // ------------------------------------------------------------ + // Admin Page Template + // ------------------------------------------------------------ + function admin_page() + { +return << +   Your administrative account + + + + + + + + + + + + + + + + + + + +
Username:
Password:
Confirm Password:
E-mail Address:
+ + +EOF; + } + + // ------------------------------------------------------------ + // Install Page SPlash Template + // ------------------------------------------------------------ + function install_page() + { +return <<product_name}. Click Start to +begin the automatic process!

+ + +
+ +
+EOF; + } + + // ------------------------------------------------------------ + // Install Page Refresh Template + // ------------------------------------------------------------ + function install_page_refresh( $output=array() ) + { +$HTML = << +// + +
    +EOF; + +foreach( $output as $l ) +{ +$HTML .= << $l +EOF; +} + +$HTML .= << +
    +
    + +
    +EOF; + + return $HTML; + } + + // ------------------------------------------------------------ + // Install Progress Screen + // ------------------------------------------------------------ + function install_progress( $line ) + { +$HTML = << +EOF; + +foreach( $line as $l ) +{ +$HTML .= << $l +EOF; +} + +$HTML .= << +EOF; + + return $HTML; + } + + // ------------------------------------------------------------ + // Install Done Screen + // ------------------------------------------------------------ + function install_done( $url, $install_locked ) + { + $extra = ''; + + if ( ! $install_locked ) + { + $extra = "
    +
    +

    INSTALLER NOT LOCKED
    Please disable or remove 'install/index.php' immediately!

    +
    "; + } + +$HTML .= << + +   Installation complete!

    + Congratulations, your {$this->product_name} is now installed and ready to use! Below are some + links you may find useful.


    + $extra +

    Useful Links

    + + + +EOF; + return $HTML; + } + + // ------------------------------------------------------------ + // Warning Message Template + // ------------------------------------------------------------ + function warning( $messages ) + { +$HTML = << +
    +
    +EOF; + +foreach( $messages as $msg ) +{ + $HTML .= "

    $msg

    "; +} + +$HTML .= <<
    +EOF; + + $this->append( $HTML ); + } +} +?> \ No newline at end of file diff --git a/upload/install/custom/app.php b/upload/install/custom/app.php new file mode 100644 index 00000000..f8234259 --- /dev/null +++ b/upload/install/custom/app.php @@ -0,0 +1,390 @@ + INS_ROOT_PATH . 'installfiles' ); + + //----------------------------------------- + // Basics + //----------------------------------------- + + $this->version_php_min = '4.3.0'; + $this->version_mysql_min = '3.23.33'; + + //----------------------------------------- + // Grab XML file and check + //----------------------------------------- + + if ( file_exists( INS_ROOT_PATH . 'installfiles/writeablefiles.xml' ) ) + { + $config = implode( '', file( INS_ROOT_PATH . 'installfiles/writeablefiles.xml' ) ); + $xml = new class_xml(); + + $config = $xml->xml_parse_document( $config ); + + //----------------------------------------- + // Loop through and sort out settings... + //----------------------------------------- + + foreach( $xml->xml_array['installdata']['file'] as $id => $entry ) + { + if ( preg_match( "#\.\w{3,}$#si", $entry['path']['VALUE'] ) ) + { + $wfiles[] = INS_DOC_ROOT_PATH . $entry['path']['VALUE']; + } + else + { + $wdirs[] = INS_DOC_ROOT_PATH . $entry['path']['VALUE']; + } + } + } + + $this->set_writeable( $wdirs, $wfiles ); + } + + /** + * application_installer::write_configuration + * + * Writes the configuration files for this app + * + */ + function write_configuration() + { + //----------------------------------------- + // Safe mode? + //----------------------------------------- + + $safe_mode = 0; + + if ( @get_cfg_var('safe_mode') ) + { + $safe_mode = @get_cfg_var('safe_mode'); + } + + //----------------------------------------- + // Set info array + //----------------------------------------- + + $INFO = array( + 'sql_driver' => $this->saved_data['sql_driver'], + 'sql_host' => $this->saved_data['db_host'], + 'sql_database' => $this->saved_data['db_name'], + 'sql_user' => $this->saved_data['db_user'], + 'sql_pass' => $this->saved_data['db_pass'], + 'sql_tbl_prefix' => $this->saved_data['db_pre'], + 'sql_debug' => 1, + + 'board_start' => time(), + 'installed' => 1, + + 'php_ext' => 'php', + 'safe_mode' => $safe_mode, + + 'board_url' => $this->saved_data['install_url'], + + 'admin_group' => '4', + 'guest_group' => '2', + 'member_group' => '3', + 'auth_group' => '1', + ); + + //----------------------------------- + // Any "extra" configs required for this driver? + //----------------------------------- + + foreach( $this->saved_data as $k => $v ) + { + if ( preg_match( "#^__sql__#", $k ) ) + { + $k = str_replace( "__sql__", "", $k ); + + $INFO[ $k ] = $v; + } + } + + //----------------------------------- + // Write to disk + //----------------------------------- + + $core_conf = "<"."?php\n"; + + foreach( $INFO as $k => $v ) + { + $core_conf .= '$INFO['."'".$k."'".']'."\t\t\t=\t'".$v."';\n"; + } + + $core_conf .= "\n".'?'.'>'; + + /* Write Configuration Files */ + $output[] = 'Writing configuration files...
    '; + + $this->write_file( $this->saved_data['install_dir'] . '/conf_global.php' , $core_conf ); + } + + + /** + * application_installer::create_admin_account + * + * Creates the local app admin entry + * + */ + function create_admin_account() + { + /* Create Converge Entry */ + $converge_id = $this->create_admin_converge(); + + //----------------------------------- + // Members... + //----------------------------------- + + $member_record = array( 'id' => $converge_id, + 'name' => $this->saved_data['admin_user'], + 'members_l_display_name' => strtolower( $this->saved_data['admin_user'] ), + 'members_l_username' => strtolower( $this->saved_data['admin_user'] ), + 'members_display_name' => $this->saved_data['admin_user'], + 'mgroup' => 4, + 'email' => $this->saved_data['admin_email'], + 'joined' => time(), + 'ip_address' => $this->ipsclass->my_getenv('REMOTE_ADDR'), + 'posts' => 1, + 'title' => 'Administrator', + 'last_visit' => time(), + 'last_activity' => time(), + 'member_login_key' => md5( uniqid( microtime) ), + ); + + $this->ipsclass->DB->do_insert( 'members', $member_record ); + + //----------------------------------- + // Member Extra... + //----------------------------------- + + $member_extra_record = array ( 'id' => 1, + 'signature' => '', + 'vdirs' => '', + ); + + $this->ipsclass->DB->do_insert( 'member_extra', $member_extra_record ); + } + + /** + * application_installer::cache_and_cleanup + * + * Final install step, allows for any remaining app specific functions + * + */ + function cache_and_cleanup() + { + //----------------------------------- + // Get ACP library + //----------------------------------- + + if( !defined("CACHE_PATH") ) + { + define( 'CACHE_PATH', INS_ROOT_PATH."../" ); + } + + $output[] = "Rebuild skin templates..."; + + require_once( INS_DOC_ROOT_PATH.'sources/lib/admin_cache_functions.php' ); + $acp = new admin_cache_functions(); + $acp->ipsclass =& $this->ipsclass; + $acp->_rebuild_all_caches( array(2) ); + unset( $acp ); + + //------------------------------------------------------------- + // Forum cache + //------------------------------------------------------------- + + $output[] = "Rebuilding forum cache..."; + + $ignore_me = array( 'redirect_url', 'redirect_loc', 'rules_text', 'permission_custom_error', 'notify_modq_emails' ); + + if ( $this->ipsclass->vars['forum_cache_minimum'] ) + { + $ignore_me[] = 'description'; + $ignore_me[] = 'rules_title'; + } + + $this->ipsclass->cache['forum_cache'] = array(); + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'forums', + 'order' => 'parent_id, position' + ) ); + $this->ipsclass->DB->simple_exec(); + + while( $f = $this->ipsclass->DB->fetch_row() ) + { + $fr = array(); + + $perms = unserialize(stripslashes($f['permission_array'])); + + //----------------------------------------- + // Stuff we don't need... + //----------------------------------------- + + foreach( $f as $k => $v ) + { + if ( in_array( $k, $ignore_me ) ) + { + continue; + } + else + { + if ( $v != "" ) + { + $fr[ $k ] = $v; + } + } + } + + $fr['read_perms'] = $perms['read_perms']; + $fr['reply_perms'] = $perms['reply_perms']; + $fr['start_perms'] = $perms['start_perms']; + $fr['upload_perms'] = $perms['upload_perms']; + $fr['show_perms'] = $perms['show_perms']; + + unset($fr['permission_array']); + + $this->ipsclass->cache['forum_cache'][ $fr['id'] ] = $fr; + } + + $this->ipsclass->update_cache( array( 'name' => 'forum_cache', 'array' => 1, 'deletefirst' => 1, 'donow' => 1 ) ); + + //------------------------------------------------------------- + // Group Cache + //------------------------------------------------------------- + + $output[] = "Rebuilding group cache..."; + + require_once( INS_DOC_ROOT_PATH.'sources/action_admin/groups.php' ); + $lib = new ad_groups(); + $lib->ipsclass =& $this->ipsclass; + $lib->rebuild_group_cache(); + unset( $lib ); + + //------------------------------------------------------------- + // Systemvars + //------------------------------------------------------------- + + $output[] = "Rebuilding system variables cache..."; + + $this->ipsclass->cache['systemvars'] = array(); + + $result = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) ); + + $this->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); + $this->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600; + + $this->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Stats + //------------------------------------------------------------- + + $output[] = "Rebuilding statistics cache..."; + + $this->ipsclass->cache['stats'] = array(); + + $this->ipsclass->cache['stats']['total_replies'] = 0; + $this->ipsclass->cache['stats']['total_topics'] = 1; + $this->ipsclass->cache['stats']['mem_count'] = 1; + + $r = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name', + 'from' => 'members', + 'order' => 'id DESC', + 'limit' => '0,1' + ) ); + + $this->ipsclass->cache['stats']['last_mem_name'] = $r['name']; + $this->ipsclass->cache['stats']['last_mem_id'] = $r['id']; + + $this->ipsclass->update_cache( array( 'name' => 'stats', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Ranks + //------------------------------------------------------------- + + $output[] = "Rebuilding member ranks cache..."; + + require_once( INS_DOC_ROOT_PATH.'sources/action_admin/member.php' ); + $lib = new ad_member(); + $lib->ipsclass =& $this->ipsclass; + $lib->titles_recache(); + unset( $lib ); + + //------------------------------------------------------------- + // SETTINGS + //------------------------------------------------------------- + + $output[] = "Rebuilding settings cache..."; + + require_once( INS_DOC_ROOT_PATH.'sources/action_admin/settings.php' ); + $lib = new ad_settings(); + $lib->ipsclass =& $this->ipsclass; + $lib->setting_rebuildcache(); + unset( $lib ); + + //------------------------------------------------------------- + // EMOTICONS + //------------------------------------------------------------- + + $output[] = "Rebuilding emoticons cache..."; + + require_once( INS_DOC_ROOT_PATH.'sources/action_admin/emoticons.php' ); + $lib = new ad_emoticons(); + $lib->ipsclass =& $this->ipsclass; + $lib->emoticon_rebuildcache(); + unset( $lib ); + + //------------------------------------------------------------- + // LANGUAGES + //------------------------------------------------------------- + + $output[] = "Rebuilding languages cache..."; + + require_once( INS_DOC_ROOT_PATH.'sources/action_admin/languages.php' ); + $lib = new ad_languages(); + $lib->ipsclass =& $this->ipsclass; + $lib->rebuild_cache(); + unset( $lib ); + + //------------------------------------------------------------- + // ATTACHMENT TYPES + //------------------------------------------------------------- + + $output[] = "Rebuilding attachment types cache..."; + + require_once( INS_DOC_ROOT_PATH.'sources/action_admin/attachments.php' ); + $lib = new ad_attachments(); + $lib->ipsclass =& $this->ipsclass; + $lib->attach_type_rebuildcache(); + unset( $lib ); + + $output[] = "All caches rebuilt, click 'Next' below..."; + + $this->saved_data['admin_url'] = $this->saved_data['install_url'] . '/index.php'; + + return $output; + } +} + +?> \ No newline at end of file diff --git a/upload/install/images/addresses.gif b/upload/install/images/addresses.gif new file mode 100644 index 00000000..ec274aee Binary files /dev/null and b/upload/install/images/addresses.gif differ diff --git a/upload/install/images/admin.gif b/upload/install/images/admin.gif new file mode 100644 index 00000000..224f1d2d Binary files /dev/null and b/upload/install/images/admin.gif differ diff --git a/upload/install/images/box.gif b/upload/install/images/box.gif new file mode 100644 index 00000000..e20d917b Binary files /dev/null and b/upload/install/images/box.gif differ diff --git a/upload/install/images/bullet_doing.gif b/upload/install/images/bullet_doing.gif new file mode 100644 index 00000000..8a085c3c Binary files /dev/null and b/upload/install/images/bullet_doing.gif differ diff --git a/upload/install/images/bullet_done.gif b/upload/install/images/bullet_done.gif new file mode 100644 index 00000000..05cec2e0 Binary files /dev/null and b/upload/install/images/bullet_done.gif differ diff --git a/upload/install/images/bullet_notdone.gif b/upload/install/images/bullet_notdone.gif new file mode 100644 index 00000000..fc5200af Binary files /dev/null and b/upload/install/images/bullet_notdone.gif differ diff --git a/upload/install/images/check.gif b/upload/install/images/check.gif new file mode 100644 index 00000000..9e3b9024 Binary files /dev/null and b/upload/install/images/check.gif differ diff --git a/upload/install/images/db.gif b/upload/install/images/db.gif new file mode 100644 index 00000000..9ce9cac0 Binary files /dev/null and b/upload/install/images/db.gif differ diff --git a/upload/install/images/help.gif b/upload/install/images/help.gif new file mode 100644 index 00000000..a9bc7cf2 Binary files /dev/null and b/upload/install/images/help.gif differ diff --git a/upload/install/images/index.html b/upload/install/images/index.html new file mode 100644 index 00000000..52a588b2 --- /dev/null +++ b/upload/install/images/index.html @@ -0,0 +1 @@ + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/install/images/install_done.gif b/upload/install/images/install_done.gif new file mode 100644 index 00000000..443281fc Binary files /dev/null and b/upload/install/images/install_done.gif differ diff --git a/upload/install/images/link.gif b/upload/install/images/link.gif new file mode 100644 index 00000000..d494909b Binary files /dev/null and b/upload/install/images/link.gif differ diff --git a/upload/install/images/main_bg.gif b/upload/install/images/main_bg.gif new file mode 100644 index 00000000..5d252df7 Binary files /dev/null and b/upload/install/images/main_bg.gif differ diff --git a/upload/install/images/package_bg.gif b/upload/install/images/package_bg.gif new file mode 100644 index 00000000..f49ccf14 Binary files /dev/null and b/upload/install/images/package_bg.gif differ diff --git a/upload/install/images/package_icon.gif b/upload/install/images/package_icon.gif new file mode 100644 index 00000000..fbe61da7 Binary files /dev/null and b/upload/install/images/package_icon.gif differ diff --git a/upload/install/images/pixel.gif b/upload/install/images/pixel.gif new file mode 100644 index 00000000..0aa3c16e Binary files /dev/null and b/upload/install/images/pixel.gif differ diff --git a/upload/install/images/title_bar.gif b/upload/install/images/title_bar.gif new file mode 100644 index 00000000..587654e1 Binary files /dev/null and b/upload/install/images/title_bar.gif differ diff --git a/upload/install/images/warning.gif b/upload/install/images/warning.gif new file mode 100644 index 00000000..e24c5ebd Binary files /dev/null and b/upload/install/images/warning.gif differ diff --git a/upload/install/images/wizard.gif b/upload/install/images/wizard.gif new file mode 100644 index 00000000..0bb79182 Binary files /dev/null and b/upload/install/images/wizard.gif differ diff --git a/upload/install/img/Thumbs.db b/upload/install/img/Thumbs.db deleted file mode 100644 index 7abcbf38..00000000 Binary files a/upload/install/img/Thumbs.db and /dev/null differ diff --git a/upload/install/img/index.html b/upload/install/img/index.html index 787531db..52a588b2 100644 --- a/upload/install/img/index.html +++ b/upload/install/img/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/install/img/install_proceed.gif b/upload/install/img/install_proceed.gif index b7b786a9..4d29d3b0 100644 Binary files a/upload/install/img/install_proceed.gif and b/upload/install/img/install_proceed.gif differ diff --git a/upload/install/index.php b/upload/install/index.php index c450f4ca..f639d03c 100644 --- a/upload/install/index.php +++ b/upload/install/index.php @@ -1,1841 +1,111 @@ - Script written by Matthew Mecham -| > Date started: 19th March 2004 -| > Updated for 2.1: 23 June 2005 -| -+-------------------------------------------------------------------------- -*/ - -error_reporting (E_ERROR | E_WARNING | E_PARSE); -set_magic_quotes_runtime(0); - -//+------------------------------------------------------------------------ -// ENTER YOUR PATH TO THE DIRECTORY THIS SCRIPT IS IN. -//+------------------------------------------------------------------------ -// Tips: -// -// If you are using Windows and Apache, do not -// use backslashes, use normal forward slashes. -// You may need to remove the drive letter also -// Example: C:\apache\htdocs\ibforums\ will need -// to be: /apache/htdocs/ibforums/ -// -// If you are using Windows and IIS, then you will -// need to enter double backslashes. -// -// In all cases, please enter a trailing slash (or -// trailing backslashes...) -//+------------------------------------------------------------------------ - -define( 'THIS_ROOT_PATH', './' ); - -//+------------------------------------------------------------------------ -// ROOT TO REST OF IPB (SHOULD BE ABLE TO LEAVE AS-IS -//+------------------------------------------------------------------------ - -define( 'ROOT_PATH', '../' ); - -//----------------------------------------------- -// NO USER EDITABLE SECTIONS BELOW -//----------------------------------------------- - -define( 'KERNEL_PATH', ROOT_PATH.'ips_kernel/' ); -define( 'CACHE_PATH' , ROOT_PATH ); - -define ( 'IN_ACP', 1 ); -define ( 'IN_IPB', 1 ); -define ( 'IN_DEV', 0 ); - -define ( 'IPBVERSION', '2.1.7' ); -define ( 'IPB_LONG_VERSION', '21013.60712.u' ); - -define ( 'USE_SHUTDOWN', 0 ); -define ( 'SAFE_MODE_ON', 0 ); - -$INFO = array(); - -//-------------------------------- -// Load our classes -//-------------------------------- - -require ROOT_PATH . "sources/ipsclass.php"; -require KERNEL_PATH . "class_converge.php"; - -# Initiate super-class -$ipsclass = new ipsclass(); -$ipsclass->vars = $INFO; -$ipsclass->template = new template(); - -//-------------------------------- -// Set up our vars -//-------------------------------- - -$ipsclass->parse_incoming(); - -$ipsclass->initiate_ipsclass(); - -//-------------------------------- -// Set converge -//-------------------------------- - -$ipsclass->converge = new class_converge( $ipsclass->DB ); - -//--------------------------------------- -// Installer locked? -//--------------------------------------- - -if ( file_exists( THIS_ROOT_PATH.'install.lock') ) -{ - install_error("Скрипт установки заблокирован!
    Пожалуйста, (через FTP) удалите файл 'install/install.lock'"); - exit(); -} - -//--------------------------------------- -// Make sure we've renamed conf_global.php -//--------------------------------------- - -if ( file_exists( ROOT_PATH.'conf_global.php.dist') AND ! file_exists( ROOT_PATH.'conf_global.php') ) -{ - if ( ! @rename( ROOT_PATH.'conf_global.php.dist', ROOT_PATH.'conf_global.php' ) ) - { - install_error("

    Вы обязаны переименовать файл 'conf_global.php.dist' в 'conf_global.php' перед установкой форума.

    - Этот файл можно найти в корневой папке форума, там же где и 'admin.php' и 'index.php'."); - exit(); - } -} - - -//----------------------------------------------- -// What to do? -//----------------------------------------------- - -switch($ipsclass->input['a']) -{ - case '1': - do_setup_form(); - break; - - case '2': - do_install(); - break; - - case 'templates': - do_templates(); - break; - - case 'acpperms': - do_acpperms(); - break; - - case '3': - do_finish(); - break; - - default: - do_intro(); - break; -} - - -/*-------------------------------------------------------------------------*/ -// DO FINISH -/*-------------------------------------------------------------------------*/ - -function do_finish() -{ - global $ipsclass; - - //----------------------------------- - // IMPORT $INFO! - //----------------------------------- - - $require = ROOT_PATH."conf_global.php"; - - if ( ! file_exists($require) ) - { - install_error("Невозможно найти файл '$require'. Возможно, вам необходимо ввести полный путь к этому файлу скрипта установки (index.php). Для этого просто откройте этот файл в любом текстовом редакторе и введите значение переменной \$root (не забудьте добавить конечный слэш '/'). Пользователям NT систем необходимо использовать двойной слэш."); - } - - require_once($require); - - //----------------------------------- - // Attempt a DB connection.. - //----------------------------------- - - require_once( KERNEL_PATH.'class_db_'.$INFO['sql_driver'].".php" ); - - $ipsclass->DB = new db_driver(); - - $ipsclass->DB->obj['sql_database'] = $INFO['sql_database']; - $ipsclass->DB->obj['sql_user'] = $INFO['sql_user']; - $ipsclass->DB->obj['sql_pass'] = $INFO['sql_pass']; - $ipsclass->DB->obj['sql_host'] = $INFO['sql_host']; - $ipsclass->DB->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix']; - $ipsclass->DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_admin_queries.php'; - $ipsclass->DB->obj['use_shutdown'] = 0; - - //----------------------------------- - // Required vars? - //----------------------------------- - - if ( is_array( $ipsclass->DB->connect_vars ) and count( $ipsclass->DB->connect_vars ) ) - { - foreach( $ipsclass->DB->connect_vars as $k => $v ) - { - $ipsclass->DB->connect_vars[ $k ] = $INFO[ $k ]; - } - } - - //----------------------------------- - // Attempt a connect - //----------------------------------- - - if ( ! $ipsclass->DB->connect() ) - { - install_error( "Ошибка соединения:

    ".$ipsclass->DB->error ); - } - - //-------------------------------- - // Make CONSTANT - //-------------------------------- - - define( 'SQL_PREFIX', $ipsclass->DB->obj['sql_tbl_prefix'] ); - define( 'SQL_DRIVER', strtolower($INFO['sql_driver']) ); - - //----------------------------------- - // Get ACP library - //----------------------------------- - - require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); - $acp = new admin_cache_functions(); - $acp->ipsclass =& $ipsclass; - $acp->_rebuild_all_caches( array(2) ); - unset( $acp ); - - //------------------------------------------------------------- - // Forum cache - //------------------------------------------------------------- - - $ipsclass->update_forum_cache(); - - //------------------------------------------------------------- - // Group Cache - //------------------------------------------------------------- - - require_once( ROOT_PATH.'sources/action_admin/groups.php' ); - $lib = new ad_groups(); - $lib->ipsclass =& $ipsclass; - $lib->rebuild_group_cache(); - unset( $lib ); - - //------------------------------------------------------------- - // Systemvars - //------------------------------------------------------------- - - $ipsclass->cache['systemvars'] = array(); - - $result = $ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) ); - - $ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); - $ipsclass->cache['systemvars']['task_next_run'] = time() + 3600; - - $ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); - - //------------------------------------------------------------- - // Stats - //------------------------------------------------------------- - - $ipsclass->cache['stats'] = array(); - - $ipsclass->cache['stats']['total_replies'] = 0; - $ipsclass->cache['stats']['total_topics'] = 1; - $ipsclass->cache['stats']['mem_count'] = 1; - - $r = $ipsclass->DB->simple_exec_query( array( 'select' => 'id, name', - 'from' => 'members', - 'order' => 'id DESC', - 'limit' => '0,1' - ) ); - - $ipsclass->cache['stats']['last_mem_name'] = $r['name']; - $ipsclass->cache['stats']['last_mem_id'] = $r['id']; - - $ipsclass->update_cache( array( 'name' => 'stats', 'array' => 1, 'deletefirst' => 1 ) ); - - //------------------------------------------------------------- - // Ranks - //------------------------------------------------------------- - - require_once( ROOT_PATH.'sources/action_admin/member.php' ); - $lib = new ad_member(); - $lib->ipsclass =& $ipsclass; - $lib->titles_recache(); - unset( $lib ); - - //------------------------------------------------------------- - // SETTINGS - //------------------------------------------------------------- - - require_once( ROOT_PATH.'sources/action_admin/settings.php' ); - $lib = new ad_settings(); - $lib->ipsclass =& $ipsclass; - $lib->setting_rebuildcache(); - unset( $lib ); - - //------------------------------------------------------------- - // EMOTICONS - //------------------------------------------------------------- - - require_once( ROOT_PATH.'sources/action_admin/emoticons.php' ); - $lib = new ad_emoticons(); - $lib->ipsclass =& $ipsclass; - $lib->emoticon_rebuildcache(); - unset( $lib ); - - //------------------------------------------------------------- - // LANGUAGES - //------------------------------------------------------------- - - require_once( ROOT_PATH.'sources/action_admin/languages.php' ); - $lib = new ad_languages(); - $lib->ipsclass =& $ipsclass; - $lib->rebuild_cache(); - unset( $lib ); - - //------------------------------------------------------------- - // ATTACHMENT TYPES - //------------------------------------------------------------- - - require_once( ROOT_PATH.'sources/action_admin/attachments.php' ); - $lib = new ad_attachments(); - $lib->ipsclass =& $ipsclass; - $lib->attach_type_rebuildcache(); - unset( $lib ); - - - //----------------------------------- - // Attempt to lock the install.. - //----------------------------------- - - if ($FH = @fopen( THIS_ROOT_PATH.'install.lock', 'w' ) ) - { - @fwrite( $FH, 'bleh', 4 ); - @fclose($FH); - - @chmod( THIS_ROOT_PATH.'install.lock', 0666 ); - - $ipsclass->template->print_top('Успешно!'); - - $msg="Скрипт установки сейчас заблокирован (для переустановки удалите файл 'install.lock'). Для большей безопасности, пожалуйста, удалите файл install/index.php прежде, чем продолжить. -

    -
    НАЖМИТЕ СЮДА, ЧТОБЫ ВОЙТИ В ФОРУМ!
    "; - } - else - { - $ipsclass->template->print_top('Успешно!'); - - $msg = "ПОЖАЛУЙСТА, УДАЛИТЕ ФАЙЛ СКРИПТА УСТАНОВКИ ('/install/index.php') ПРЕЖДЕ, ЧЕМ ПРОДОЛЖИТЬ!
    Если вы не сделаете этого, любой пользователь интернета сможет удалить данные вашего форума! -

    -
    НАЖМИТЕ СЮДА, ЧТОБЫ ВОЙТИ В ФОРУМ!
    "; - } - - $ipsclass->template->contents .= " -
    -
    -
    Успешно
    -
    - Успешно -

    - $msg -
    -
    -
    "; - - $ipsclass->template->output(); -} - -//*-------------------------------------------------------------------------*/ -// Install the ACP perm keys -/*-------------------------------------------------------------------------*/ - -function do_acpperms() -{ - global $ipsclass; - - //----------------------------------- - // INIT - //----------------------------------- - - $inserted = 0; - - //----------------------------------- - // IMPORT $INFO! - //----------------------------------- - - $require = ROOT_PATH."conf_global.php"; - - if ( ! file_exists($require) ) - { - install_error("Невозможно найти '$require'. Возможно, вам необходимо ввести полный путь к этому файлу скрипта установки (index.php). Для этого просто откройте этот файл в любом текстовом редакторе и введите значение переменной \$root (не забудьте добавить конечный слэш '/'). Пользователям NT систем необходимо использовать двойной слэш."); - } - - require_once($require); - - //----------------------------------- - // Attempt a DB connection.. - //----------------------------------- - - require_once( KERNEL_PATH.'class_db_'.$INFO['sql_driver'].".php" ); - - $ipsclass->DB = new db_driver(); - - $ipsclass->DB->obj['sql_database'] = $INFO['sql_database']; - $ipsclass->DB->obj['sql_user'] = $INFO['sql_user']; - $ipsclass->DB->obj['sql_pass'] = $INFO['sql_pass']; - $ipsclass->DB->obj['sql_host'] = $INFO['sql_host']; - $ipsclass->DB->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix']; - $ipsclass->DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_admin_queries.php'; - $ipsclass->DB->obj['use_shutdown'] = 0; - - //----------------------------------- - // Required vars? - //----------------------------------- - - if ( is_array( $ipsclass->DB->connect_vars ) and count( $ipsclass->DB->connect_vars ) ) - { - foreach( $ipsclass->DB->connect_vars as $k => $v ) - { - $ipsclass->DB->connect_vars[ $k ] = $INFO[ $k ]; - } - } - - //----------------------------------- - // Attempt a connect - //----------------------------------- - - if ( ! $ipsclass->DB->connect() ) - { - install_error( "Ошибка соединения:

    ".$ipsclass->DB->error ); - } - - //-------------------------------- - // Make CONSTANT - //-------------------------------- - - define( 'SQL_PREFIX', $ipsclass->DB->obj['sql_tbl_prefix'] ); - define( 'SQL_DRIVER', strtolower($INFO['sql_driver']) ); - - //----------------------------------- - // Get XML - //----------------------------------- - - require_once( KERNEL_PATH.'class_xml.php' ); - - $xml = new class_xml(); - $xml->lite_parser = 1; - - //------------------------------- - // GET MACROS - //------------------------------- - - $xmlfile = THIS_ROOT_PATH.'installfiles/ipb_acpperms.xml'; - - $content = implode( "", file($xmlfile) ); - - //------------------------------- - // Unpack the datafile (MACRO) - //------------------------------- - - $xml->xml_parse_document( $content ); - - //----------------------------------------- - // Fix up... - //----------------------------------------- - - if ( ! is_array( $xml->xml_array['permsexport']['permsgroup']['perm'][0] ) ) - { - //----------------------------------------- - // Ensure [0] is populated - //----------------------------------------- - - $tmp = $xml->xml_array['permsexport']['permsgroup']['perm']; - - unset($xml->xml_array['permsexport']['permsgroup']['perm']); - - $xml->xml_array['permsexport']['permsgroup']['perm'][0] = $tmp; - } - - //----------------------------------------- - // Loop through and sort out settings... - //----------------------------------------- - - foreach( $xml->xml_array['permsexport']['permsgroup']['perm'] as $id => $entry ) - { - //----------------------------------------- - // Do we have a row matching this already? - //----------------------------------------- - - $_perm_main = $entry['acpperm_main']['VALUE']; - $_perm_child = $entry['acpperm_child']['VALUE']; - $_perm_bit = $entry['acpperm_bit']['VALUE']; - - $_perm_key = $_perm_main.':'.$_perm_child.':'.$_perm_bit; - - if ( ! $cur_perms[ $_perm_key ] ) - { - $ipsclass->DB->do_insert( 'admin_permission_keys', array( 'perm_key' => $_perm_key, - 'perm_main' => $_perm_main, - 'perm_child' => $_perm_child, - 'perm_bit' => $_perm_bit ) ); - - $inserted++; - } - } - - //------------------------------- - // ARE WE DONE? REALLY? COOL!! - //------------------------------- - - $ipsclass->template->print_top('Успешно!'); - - $ipsclass->template->contents .= " - -
    -
    -
    Успешно
    -
    - Файлы шаблонов установлены! -

    - $inserted настроек ограничения доступа в админцентр вставлено. -
    - Нажмите на ссылку ниже для создания требуемых данных для кеширования -

    -
    Нажмите сюда для продолжения
    -
    -
    -
    "; - - $ipsclass->template->output(); -} - -//*-------------------------------------------------------------------------*/ -// Install the template files, woohoo and stuff -/*-------------------------------------------------------------------------*/ - -function do_templates() -{ - global $ipsclass; - - //----------------------------------- - // IMPORT $INFO! - //----------------------------------- - - $require = ROOT_PATH."conf_global.php"; - - if ( ! file_exists($require) ) - { - install_error("Невозможно найти '$require'. Возможно, вам необходимо ввести полный путь к этому файлу скрипта установки (index.php). Для этого просто откройте этот файл в любом текстовом редакторе и введите значение переменной \$root (не забудьте добавить конечный слэш '/'). Пользователям NT систем необходимо использовать двойной слэш."); - } - - require_once($require); - - //----------------------------------- - // Attempt a DB connection.. - //----------------------------------- - - require_once( KERNEL_PATH.'class_db_'.$INFO['sql_driver'].".php" ); - - $ipsclass->DB = new db_driver(); - - $ipsclass->DB->obj['sql_database'] = $INFO['sql_database']; - $ipsclass->DB->obj['sql_user'] = $INFO['sql_user']; - $ipsclass->DB->obj['sql_pass'] = $INFO['sql_pass']; - $ipsclass->DB->obj['sql_host'] = $INFO['sql_host']; - $ipsclass->DB->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix']; - $ipsclass->DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_admin_queries.php'; - $ipsclass->DB->obj['use_shutdown'] = 0; - - //----------------------------------- - // Required vars? - //----------------------------------- - - if ( is_array( $ipsclass->DB->connect_vars ) and count( $ipsclass->DB->connect_vars ) ) - { - foreach( $ipsclass->DB->connect_vars as $k => $v ) - { - $ipsclass->DB->connect_vars[ $k ] = $INFO[ $k ]; - } - } - - //----------------------------------- - // Attempt a connect - //----------------------------------- - - if ( ! $ipsclass->DB->connect() ) - { - install_error( "Ошибка соединения:

    ".$ipsclass->DB->error ); - } - - //-------------------------------- - // Make CONSTANT - //-------------------------------- - - define( 'SQL_PREFIX', $ipsclass->DB->obj['sql_tbl_prefix'] ); - define( 'SQL_DRIVER', strtolower($INFO['sql_driver']) ); - - //----------------------------------- - // Get XML - //----------------------------------- - - require_once( KERNEL_PATH.'class_xml.php' ); - - $xml = new class_xml(); - $xml->lite_parser = 1; - - //----------------------------------- - // Get XML file (TEMPLATES) - //----------------------------------- - - $xmlfile = ROOT_PATH.'ipb_templates.xml'; - - $setting_content = implode( "", file($xmlfile) ); - - //------------------------------- - // Unpack the datafile (TEMPLATES) - //------------------------------- - - $xml->xml_parse_document( $setting_content ); - - //------------------------------- - // (TEMPLATES) - //------------------------------- - - if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) - { - install_error("Ошибка с ipb_templates.xml - невозможно выполнить XML"); - } - - foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $id => $entry ) - { - $newrow = array(); - - $newrow['group_name'] = $entry[ 'group_name' ]['VALUE']; - $newrow['section_content'] = $entry[ 'section_content' ]['VALUE']; - $newrow['func_name'] = $entry[ 'func_name' ]['VALUE']; - $newrow['func_data'] = $entry[ 'func_data' ]['VALUE']; - $newrow['set_id'] = 1; - $newrow['updated'] = time(); - - $ipsclass->DB->do_insert( 'skin_templates', $newrow ); - } - - //------------------------------- - // GET MACROS - //------------------------------- - - $xmlfile = THIS_ROOT_PATH.'installfiles/ipb_macro.xml'; - - $setting_content = implode( "", file($xmlfile) ); - - //------------------------------- - // Unpack the datafile (MACRO) - //------------------------------- - - $xml->xml_parse_document( $setting_content ); - - //------------------------------- - // (MACRO) - //------------------------------- - - if ( ! is_array( $xml->xml_array['macroexport']['macrogroup']['macro'] ) ) - { - install_error("Ошибка с ipb_macro.xml - невозможно выполнить XML"); - } - - foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $id => $entry ) - { - $newrow = array(); - - $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; - $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; - $newrow['macro_set'] = 1; - - $ipsclass->DB->do_insert( 'skin_macro', $newrow ); - } - - //------------------------------- - // WRAPPER / CSS - //------------------------------- - - require_once( THIS_ROOT_PATH.'installfiles/components.php' ); - - $wrapper_record = array( 'set_wrapper' => $WRAPPER, - 'set_css' => $CSS, - ); - - $ipsclass->DB->do_update( 'skin_sets', $wrapper_record, "set_skin_set_id=1" ); - - //------------------------------- - // ARE WE DONE? REALLY? COOL!! - //------------------------------- - - $ipsclass->template->print_top('Успешно!'); - - $ipsclass->template->contents .= " - -
    -
    -
    Успешно
    -
    - Шаблоны установлены! -

    - Процесс установки завершен. -
    - Нажмите на ссылку ниже для установки ограничений доступа в админцентр -

    -
    Нажмите сюда для продолжения
    -
    -
    -
    "; - - $ipsclass->template->output(); -} - -/*-------------------------------------------------------------------------*/ -// DO install -/*-------------------------------------------------------------------------*/ - -function do_install() -{ - global $ipsclass; - - //----------------------------------- - // INIT - //----------------------------------- - - $NEW_INFO = array(); - $need = array('board_url','sql_host','sql_database','sql_user','adminname','adminpassword','adminpassword2','email'); - $setting_groups_by_key = array(); - $setting_groups = array(); - $extra_install = ""; - - //----------------------------------- - // Check for blanks - //----------------------------------- - - foreach($need as $greed) - { - if ( ! $ipsclass->input[ $greed ] ) - { - install_error("Вы обязаны заполнить все поля формы, за исключением префикса таблиц"); - } - } - - //----------------------------------- - // Get XML - //----------------------------------- - - require_once( KERNEL_PATH.'class_xml.php' ); - - $xml = new class_xml(); - - //----------------------------------- - // Get XML file - //----------------------------------- - - $xmlfile = THIS_ROOT_PATH.'installfiles/ipb_settings.xml'; - - $setting_content = implode( "", file($xmlfile) ); - - //----------------------------------- - // Fix up URL - //----------------------------------- - - $ipsclass->input['board_url'] = preg_replace( "#/$#", "", $ipsclass->input['board_url'] ); - - //----------------------------------- - // TBL prefix - //----------------------------------- - - if ($ipsclass->input['sql_tbl_prefix'] == "") - { - $ipsclass->input['sql_tbl_prefix'] = 'ibf_'; - } - - //----------------------------------- - // Safe mode - //----------------------------------- - - $safe_mode = intval( $ipsclass->input['safe_mode'] ); - - //----------------------------------- - // Did the admin passy and passy2 match? - //----------------------------------- - - if ( $ipsclass->input['adminpassword2'] != $ipsclass->input['adminpassword'] ) - { - install_error("Введенные пароли не совпадают"); - } - - //----------------------------------- - // Get a correct path - //----------------------------------- - - $root = THIS_ROOT_PATH; - - if ( $root == './') - { - $root = str_replace( '\\', '/', getcwd() ) . '/'; - $root = str_replace( 'install/', '', $root ); - } - - //----------------------------------- - // Attempt to write the config file. - //----------------------------------- - - $INFO = array( - 'sql_driver' => $ipsclass->input['sql_driver'], - 'sql_host' => $ipsclass->input['sql_host'], - 'sql_database' => $ipsclass->input['sql_database'], - 'sql_user' => $_POST['sql_user'], - 'sql_pass' => $_POST['sql_pass'], - 'sql_tbl_prefix' => $ipsclass->input['sql_tbl_prefix'], - 'sql_debug' => 1, - - 'board_start' => time(), - 'installed' => 1, - - 'php_ext' => 'php', - 'safe_mode' => $safe_mode, - - 'board_url' => $ipsclass->input['board_url'], - - 'admin_group' => '4', - 'guest_group' => '2', - 'member_group' => '3', - 'auth_group' => '1', - ); - - //-------------------------------------------------- - // Update VARS settings - //-------------------------------------------------- - - $ipsclass->vars =& $INFO; - - //-------------------------------------------------- - // Any "extra" configs required for this driver? - //-------------------------------------------------- - - if ( file_exists( THIS_ROOT_PATH.'sql/'.$ipsclass->input['sql_driver'].'_install.php' ) ) - { - require_once( THIS_ROOT_PATH.'sql/'.$ipsclass->input['sql_driver'].'_install.php' ); - - $extra_install = new install_extra(); - $extra_install->ipsclass =& $ipsclass; - - $extra_install->install_form_process(); - - if ( count( $extra_install->errors ) ) - { - install_error( "При проверке SQL информации обнаружены следующие ошибки:

    ".implode( "
    ", $extra_install->errors ) ); - } - - if ( is_array( $extra_install->info_extra ) and count( $extra_install->info_extra ) ) - { - foreach( $extra_install->info_extra as $k => $v ) - { - $INFO[ $k ] = $v; - } - } - } - - //----------------------------------- - // Attempt a DB connection.. - //----------------------------------- - - require ( KERNEL_PATH.'class_db_'.$INFO['sql_driver'].".php" ); - - $ipsclass->DB = new db_driver(); - - $ipsclass->DB->obj['sql_database'] = $INFO['sql_database']; - $ipsclass->DB->obj['sql_user'] = $INFO['sql_user']; - $ipsclass->DB->obj['sql_pass'] = $INFO['sql_pass']; - $ipsclass->DB->obj['sql_host'] = $INFO['sql_host']; - $ipsclass->DB->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix']; - $ipsclass->DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_admin_queries.php'; - $ipsclass->DB->obj['use_shutdown'] = 0; - $ipsclass->DB->return_die = 1; - - //----------------------------------- - // Required vars? - //----------------------------------- - - if ( is_array( $ipsclass->DB->connect_vars ) and count( $ipsclass->DB->connect_vars ) ) - { - foreach( $ipsclass->DB->connect_vars as $k => $v ) - { - $ipsclass->DB->connect_vars[ $k ] = $INFO[ $k ]; - } - } - - //----------------------------------- - // Attempt a connect - //----------------------------------- - - if ( ! $ipsclass->DB->connect() ) - { - install_error( "Connection error:

    ".$ipsclass->DB->error ); - } - - //-------------------------------- - // Make CONSTANT - //-------------------------------- - - define( 'SQL_PREFIX', $ipsclass->DB->obj['sql_tbl_prefix'] ); - define( 'SQL_DRIVER', strtolower($INFO['sql_driver']) ); - - $ipsclass->vars['sql_driver'] = SQL_DRIVER; - - //----------------------------------- - // Write to disk - //----------------------------------- - - $file_string = "<"."?php\n"; - - foreach( $INFO as $k => $v ) - { - $file_string .= '$INFO['."'".$k."'".']'."\t\t\t=\t'".$v."';\n"; - } - - $file_string .= "\n".'?'.'>'; - - if ( $fh = fopen( ROOT_PATH.'conf_global.php', 'w' ) ) - { - fputs($fh, $file_string, strlen($file_string) ); - fclose($fh); - } - else - { - install_error("Невозможна запись в 'conf_global.php'"); - } - - //----------------------------------- - // Require insert files - //----------------------------------- - - require_once( THIS_ROOT_PATH.'sql/'.$INFO['sql_driver'].'_tables.php' ); - require_once( THIS_ROOT_PATH.'sql/'.$INFO['sql_driver'].'_inserts.php' ); - require_once( THIS_ROOT_PATH.'sql/'.$INFO['sql_driver'].'_fulltext.php' ); - - //----------------------------------- - // Populate the database... - //----------------------------------- - - foreach( $TABLE as $q ) - { - preg_match("/CREATE TABLE (\S+) \(/", $q, $match); - - if ($match[1]) - { - $ipsclass->DB->sql_drop_table( str_replace( 'ibf_', '', $match[1] ) ); - } - - if ($ipsclass->input['sql_tbl_prefix'] != "ibf_") - { - $q = preg_replace("/ibf_(\S+?)([\s\.,]|$)/", $ipsclass->input['sql_tbl_prefix']."\\1\\2", $q); - } - - //----------------------------------- - // Pass to handler - //----------------------------------- - - if ( $extra_install AND method_exists( $extra_install, 'process_query_create' ) ) - { - $q = $extra_install->process_query_create( $q ); - } - - //----------------------------------- - // Pass query - //----------------------------------- - - if ( ! $ipsclass->DB->query($q) ) - { - install_error($q."

    ".$ipsclass->DB->error); - } - } - - //----------------------------------- - // Create the fulltext index... - //----------------------------------- - - if ( $ipsclass->DB->sql_can_fulltext() ) - { - foreach( $INDEX as $q ) - { - if ($ipsclass->input['sql_tbl_prefix'] != "ibf_") - { - $q = preg_replace("/ibf_(\S+?)([\s\.,]|$)/", $ipsclass->input['sql_tbl_prefix']."\\1\\2", $q); - } - - //----------------------------------- - // Pass to handler - //----------------------------------- - - if ( $extra_install AND method_exists( $extra_install, 'process_query_index' ) ) - { - $q = $extra_install->process_query_index( $q ); - } - - //----------------------------------- - // Pass query - //----------------------------------- - - if ( ! $ipsclass->DB->query($q) ) - { - install_error($q."

    ".$ipsclass->DB->error); - } - } - } - - //----------------------------------- - // Populate tables... - //----------------------------------- - - foreach( $INSERT as $q ) - { - if ($ipsclass->input['sql_tbl_prefix'] != "ibf_") - { - $q = preg_replace("/ibf_(\S+?)([\s\.,]|$)/", $ipsclass->input['sql_tbl_prefix']."\\1\\2", $q); - } - - $q = str_replace( "<%time%>", time(), $q ); - - //----------------------------------- - // Pass to handler - //----------------------------------- - - if ( $extra_install AND method_exists( $extra_install, 'process_query_insert' ) ) - { - $q = $extra_install->process_query_insert( $q ); - } - - //----------------------------------- - // Pass query - //----------------------------------- - - if ( ! $ipsclass->DB->query($q) ) - { - install_error($q."

    ".$ipsclass->DB->error); - } - } - - //----------------------------------- - // Insert the admin... - //----------------------------------- - - $md5_once = trim(md5($ipsclass->input['adminpassword'])); - - $salt = $ipsclass->converge->generate_password_salt(5); - $key = $ipsclass->converge->generate_auto_log_in_key(); - $rpass = $ipsclass->converge->generate_compiled_passhash($salt, $md5_once); - $time = time(); - - //----------------------------------- - // Members... - //----------------------------------- - - $member_record = array( 'id' => 1, - 'name' => $ipsclass->input['adminname'], - 'members_display_name' => $ipsclass->input['adminname'], - 'mgroup' => 4, - 'email' => $ipsclass->input['email'], - 'joined' => $time, - 'ip_address' => '127.0.0.1', - 'posts' => 0, - 'title' => 'Администратор', - 'last_visit' => $time, - 'last_activity' => $time, - 'member_login_key' => $key, - ); - - $ipsclass->DB->do_insert( 'members', $member_record ); - - //----------------------------------- - // Converge... - //----------------------------------- - - $converge_record = array( 'converge_email' => $ipsclass->input['email'], - 'converge_joined' => $time, - 'converge_pass_hash' => $rpass, - 'converge_pass_salt' => $salt, - ); - - $ipsclass->DB->do_insert( 'members_converge', $converge_record ); - - //----------------------------------- - // Member Extra... - //----------------------------------- - - $member_extra_record = array ( 'id' => 1, - 'signature' => '', - 'vdirs' => '', - ); - - $ipsclass->DB->do_insert( 'member_extra', $member_extra_record ); - - //------------------------------- - // Do we have a reg / copy key? - //------------------------------- - - if ( file_exists( ROOT_PATH . '/retail/regkey.php' ) ) - { - require_once( ROOT_PATH . '/retail/regkey.php' ); - - $customer_reg_key = ''; - - } - - //------------------------------- - // Unpack the datafile - //------------------------------- - - $xml->xml_parse_document( $setting_content ); - - //------------------------------- - // Known settings - //------------------------------- - - if( substr( $ipsclass->input['board_url'], -1 ) == '/' ) - { - $ipsclass->input['board_url'] = substr( $ipsclass->input['board_url'], 0, -1 ); - } - - $known = array( 'email_in' => $ipsclass->input['email'], - 'email_out' => $ipsclass->input['email'], - 'base_dir' => $root, - 'upload_dir' => str_replace( "//", "/", $root."/uploads" ), - 'upload_url' => $ipsclass->input['board_url']."/uploads", - 'ipb_copy_number'=> $customer_copy_key, - 'ipb_reg_number' => $customer_reg_key, - ); - - - if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'] ) ) - { - install_error("Ошибка с ipb_settings.xml - невозможно выполнить XML файл"); - } - - //----------------------------------------- - // pArse - //----------------------------------------- - - $fields = array( 'conf_title' , 'conf_description', 'conf_group' , 'conf_type' , 'conf_key' , 'conf_default', - 'conf_extra' , 'conf_evalphp' , 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', - 'conf_help_key', 'conf_add_cache' , 'conf_title_keyword' ); - - $setting_fields = array( 'conf_title_keyword', 'conf_title_title', 'conf_title_desc', 'conf_title_noshow' ); - - //----------------------------------------- - // Fix up... - //----------------------------------------- - - if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'][0] ) ) - { - //----------------------------------------- - // Ensure [0] is populated - //----------------------------------------- - - $tmp = $xml->xml_array['settingexport']['settinggroup']['setting']; - - unset($xml->xml_array['settingexport']['settinggroup']['setting']); - - $xml->xml_array['settingexport']['settinggroup']['setting'][0] = $tmp; - } - - //----------------------------------------- - // Loop through and sort out settings... - //----------------------------------------- - - foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $id => $entry ) - { - $newrow = array(); - - //----------------------------------------- - // Is setting? - //----------------------------------------- - - if ( ! $entry['conf_is_title']['VALUE'] ) - { - foreach( $fields as $f ) - { - $newrow[$f] = $entry[ $f ]['VALUE']; - } - - $new_settings[] = $newrow; - } - - //----------------------------------------- - // Is title? - //----------------------------------------- - - else - { - foreach( $setting_fields as $f ) - { - $newrow[$f] = $entry[ $f ]['VALUE']; - } - - $new_titles[] = $newrow; - } - } - - //----------------------------------------- - // Sort out titles... - //----------------------------------------- - - if ( is_array( $new_titles ) and count( $new_titles ) ) - { - foreach( $new_titles as $idx => $data ) - { - if ( $data['conf_title_title'] AND $data['conf_title_keyword'] ) - { - //----------------------------------------- - // Get ID based on key - //----------------------------------------- - - $save = array( 'conf_title_title' => $data['conf_title_title'], - 'conf_title_desc' => $data['conf_title_desc'], - 'conf_title_keyword' => $data['conf_title_keyword'], - 'conf_title_noshow' => $data['conf_title_noshow'] ); - - //----------------------------------------- - // Insert first - //----------------------------------------- - - $ipsclass->DB->do_insert( 'conf_settings_titles', $save ); - - $conf_id = $ipsclass->DB->get_insert_id(); - $save['conf_title_id'] = $conf_id; - - //----------------------------------------- - // Update settings cache - //----------------------------------------- - - $setting_groups_by_key[ $save['conf_title_keyword'] ] = $save; - $setting_groups[ $save['conf_title_id'] ] = $save; - - $need_update[] = $conf_id; - } - } - } - - //----------------------------------------- - // Sort out settings - //----------------------------------------- - - if ( is_array( $new_settings ) and count( $new_settings ) ) - { - foreach( $new_settings as $idx => $data ) - { - //----------------------------------------- - // Make PHP slashes safe - //----------------------------------------- - - //$data['conf_evalphp'] = str_replace( '\\', '\\\\', $data['conf_evalphp'] ); - - //----------------------------------------- - // Insert known - //----------------------------------------- - - if ( in_array( $data['conf_key'], array_keys( $known ) ) ) - { - $data['conf_value'] = $known[ $data['conf_key'] ]; - } - - //----------------------------------------- - // Now assign to the correct ID based on - // our title keyword... - //----------------------------------------- - - $data['conf_group'] = $setting_groups_by_key[ $data['conf_title_keyword'] ]['conf_title_id']; - - //----------------------------------------- - // Remove from array - //----------------------------------------- - - unset( $data['conf_title_keyword'] ); - - $ipsclass->DB->do_insert( 'conf_settings', $data ); - } - } - - //----------------------------------------- - // Update group counts... - //----------------------------------------- - - if ( count( $need_update ) ) - { - foreach( $need_update as $i => $idx ) - { - $conf = $ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.$idx ) ); - - $count = intval($conf['count']); - - $ipsclass->DB->do_update( 'conf_settings_titles', array( 'conf_title_count' => $count ), 'conf_title_id='.$idx ); - } - } - - //----------------------------------- - // ARE WE DONE? REALLY? COOL!! - //----------------------------------- - - $ipsclass->template->print_top('Успешно!'); - - $ipsclass->template->contents .= " -
    -
    -
    Успешно
    -
    - Ваш форум успешно установлен! -

    - Процесс установки почти завершен. -
    - Следующий этап запишет шаблоны в базу данных... -

    -
    Нажмите сюда, если вас не переместило автоматически...
    -
    -
    -
    "; - - $ipsclass->template->output(); -} - -/*-------------------------------------------------------------------------*/ -// SET UP FORM -/*-------------------------------------------------------------------------*/ - -function do_setup_form() -{ - global $ipsclass; - - //-------------------------------------------------- - // INIT - //-------------------------------------------------- - - $drivers = array(); - $ipsclass->template->print_top('Установка'); - - //-------------------------------------------------- - // Make sure kernel folder is present - //-------------------------------------------------- - - if ( ! is_dir(ROOT_PATH.'ips_kernel') ) - { - install_error("Невозможно найти папку 'ips_kernel'. Пожалуйста, загрузите все необходимые папки и файлы."); - } - - //-------------------------------------------------- - // DO WE HAVE A DB DRIVER SET? - //-------------------------------------------------- - - $ipsclass->input['sql_driver'] = ( $ipsclass->input['sql_driver'] == "" ) ? $_REQUEST['sql_driver'] : $ipsclass->input['sql_driver']; - - if ( ! $ipsclass->input['sql_driver'] ) - { - //---------------------------------------------- - // Test to see how many DB driver's we've got.. - //---------------------------------------------- - - $dh = opendir( ROOT_PATH.'ips_kernel' ) or install_error("Невозможно найти папку 'ips_kernel' для чтения, пожалуйста, проверьте все пути и права"); - - while ( $file = @readdir( $dh ) ) - { - if ( preg_match( "/^class_db_([a-zA-Z0-9]*)\.php/i", $file, $driver ) ) - { - $drivers[] = $driver[1]; - } - } - - @closedir( $dh ); - - //---------------------------------------------- - // Got more than one? - //---------------------------------------------- - - if ( count($drivers) > 1 ) - { - //------------------------------------------ - // Show choice screen first... - //------------------------------------------ - - $ipsclass->template->contents .= "
    - -
    -
    -
    Обнаружено несколько SQL драйверов
    -
    Пожалуйста, выберите желаемый SQL драйвер для использования в вашем Invision Power Board
    - - - - - -
    SQL Драйвер
    (Выберите драйвер)
    -
    -
    -
    -
    -
    "; - - $ipsclass->template->output(); - - exit(); - - } - else - { - //------------------------------------------ - // Use only driver installed - //------------------------------------------ - - $ipsclass->input['sql_driver'] = $drivers[0]; - } - } - - //-------------------------------------------------- - // If we're here, we have chosen a driver, so....... - //-------------------------------------------------- - - $this_url = str_replace( "/install/index.php", "", $_SERVER['HTTP_REFERER']); - $this_url = str_replace( "/install/" , "", $this_url); - $this_url = str_replace( "/install" , "", $this_url); - $this_url = str_replace( "index.php" , "", $this_url); - - //-------------------------------------------------- - // Test - //-------------------------------------------------- - - if ( ! $this_url ) - { - $this_url = substr($_SERVER['SCRIPT_NAME'],0, -17); - - if ($this_url == '') - { - $this_url == '/'; - } - - $this_url = 'http://'.$_SERVER['SERVER_NAME'].$this_url; - } - - $this_url = preg_replace( "#/$#", "", str_replace( '?a=1', "", $this_url ) ); - - //-------------------------------------------------- - // Safe mode? - //-------------------------------------------------- - - $safe_mode = 0; - - if ( get_cfg_var('safe_mode') ) - { - $safe_mode = get_cfg_var('safe_mode'); - } - - $ipsclass->template->contents .= " -
    - - -
    - -
    -
    Данные вашего сервера
    -
    Эта секция требует ввода вами ваших путей и URL'ов вашего форума.
    - - - - - "; - - if ( $safe_mode ) - { - $ipsclass->template->contents .= " - - - - "; - } - - $ipsclass->template->contents .= " -
    IPB 'index.php' URL
    Это URL (обязан начинаться с http://) вашей основной папки форума
    Это может быть, например: http://www.domain.ru/forums
    Обнаружен PHP Safe Mode/b>
    Система установка обнаружила, что PHP на вашем сервере запущен в safe mode. Если это неверно, поправьте...
    -
    -
     
    - -
    - -
    -
    Ваши SQL данные
    -
    Этот блок требует от вас ввода SQL информации. Если вы ее не знаете, обратитесь к своему хостинг-провайдеру. Помните, вы должны указать в форме ниже существующую базу данных, если нет - вы должны создать новую базу данных на сервере прежде, чем продолжить установку.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SQL драйверВы выбрали и будете использовать ".strtoupper($ipsclass->input['sql_driver'])."
    SQL хост
    (обычно это localhost)
    SQL имя базы данных
    SQL имя пользователя
    SQL пароль
    SQL префикс таблиц
    (Вы можете оставить поле пустым, тогда IPB будет использовать префикс по умолчанию - 'ibf_')
    -
    -
     
    - -
    - -
    -
    Ваша учетная запись администратора
    -
    Этот блок требует информацию для создания вашей учетной записи администратора будущего форума! Пожалуйста, введите достоверную информацию и перепроверьте ее! Для большей безопасности в качестве пароля администратора используйте комбинацию случайных чисел и букв (строчных и прописных)!
    - - - - - - - - - - - - - - - - - - - - -
    Имя пользователя
    Пароль
    Подтвердите пароль
    E-mail
    -
    -
    -
     
    -
    -
    "; - - //-------------------------------------------------- - // Any "extra" configs required for this driver? - //-------------------------------------------------- - - if ( file_exists( THIS_ROOT_PATH.'sql/'.$ipsclass->input['sql_driver'].'_install.php' ) ) - { - require_once( THIS_ROOT_PATH.'sql/'.$ipsclass->input['sql_driver'].'_install.php' ); - $extra_install = new install_extra(); - - $ipsclass->template->contents = str_replace( '', $extra_install->install_form_extra(), $ipsclass->template->contents ); - } - - $ipsclass->template->output(); -} - -/*-------------------------------------------------------------------------*/ -// DO INTRO -/*-------------------------------------------------------------------------*/ - -function do_intro() -{ - global $ipsclass; - - $ipsclass->template->print_top('E-mail'); - - $ipsclass->template->contents .= " - - - - -
    Лицо :)Добро пожаловать в IPB -

    - Прежде чем мы начнем установку форума, пожалуйста, проверьте, все ли файлы загружены на сервер, возможна - ли запись в файл 'conf_global.php' (права CHMOD на файл должны быть 0666). -

    - IPB ".IPBVERSION." требует PHP 4.3.0 или выше и SQL базу данных. -

    - Вы также нуждаетесь в следующей информации, которую вам должен продоставить ваш хостинг-провайдер: -
      -
    • Имя вашей SQL базы данных
    • -
    • Ваше SQL имя пользователя
    • -
    • Ваш SQL пароль
    • -
    • Ваш SQL хост (обычно — localhost)
    • -
    -
    - Когда вы нажмете на кнопку «Далее», вам будет дана форма для ввода всей необходимой для установки форума информации. -

    - ПОЖАЛУЙСТА, ПОМНИТЕ: ИСПОЛЬЗУЯ ЭТОТ СКРИПТ УСТАНОВКИ, ВЫ УДАЛИТЕ ЛЮБУЮ ТЕКУЩУЮ, ИМЕЮЩУЮСЯ БАЗУ ДАННЫХ ФОРУМА INVISION POWER BOARD, ЕСЛИ ИСПОЛЬЗУЕТЕ ТАКОЙ ЖЕ ПРЕФИКС ТАБЛИЦ. - "; - - - //--------------------------------------- - // Check to make sure that the config file - // is there and it's got suitable permissions to write to: - //--------------------------------------- - - $file = ROOT_PATH."conf_global.php"; - $templates = THIS_ROOT_PATH."installfiles/ipb_templates.xml"; - $warnings = array(); - $checkfiles = array( ROOT_PATH ."ipb_templates.xml", - THIS_ROOT_PATH."installfiles/components.php", - THIS_ROOT_PATH."installfiles/ipb_macro.xml", - THIS_ROOT_PATH."installfiles/ipb_settings.xml", - THIS_ROOT_PATH."sql", - KERNEL_PATH ."class_converge.php", - KERNEL_PATH ."class_xml.php", - ROOT_PATH ."conf_global.php" ); - - $writeable = array( ROOT_PATH."conf_global.php", - ROOT_PATH."cache", - ROOT_PATH."cache/lang_cache/", - ROOT_PATH."cache/skin_cache/" ); - - foreach ( $checkfiles as $cf ) - { - if ( ! file_exists($cf) ) - { - $warnings[] = "Невозможно найти файл '$cf'."; - } - } - - foreach ( $writeable as $cf ) - { - if ( ! is_writeable($cf) ) - { - $warnings[] = "Невозможно произвести запись в файл '$cf'. Пожалуйста, установите права доступа к файлу (CHMOD) - 0777."; - } - } - - $phpversion = phpversion(); - - //---------------------------------- - // CHECK BASICS - //---------------------------------- - - if ($phpversion < '4.1.0') - { - $warnings[] = "Вы не сможете установить Invision Power Board. IPB требует PHP версии 4.1.0 или выше."; - } - - if ( ! function_exists('get_cfg_var') ) - { - $warnings[] = "Вы не сможете установить Invision Power Board. Ваша поставка PHP не достаточна, чтобы запустить IPB."; - } - - if ( ! function_exists('xml_parse_into_struct') ) - { - $warnings[] = "Вы не сможете установить Invision Power Board. IPB требует, чтобы XML-функции в PHP были включены. Пожалуйста, попросите вашего хостинг-провайдера включить поддержку XML."; - } - //---------------------------------- - // Got error? - //---------------------------------- - - if ( count($warnings) > 0 ) - { - - $err_string = '·'.implode( "

    ·", $warnings ); - - $ipsclass->template->contents .= "

    -
    - Внимание! - Указанные ниже ошибки должны быть обязательно исправлены перед тем, как продолжить! -

    - $err_string -
    "; - } - else - { - $ipsclass->template->contents .= "

    Далее
    "; - } - - $ipsclass->template->contents .= "
    "; - - $ipsclass->template->output(); -} - -/*-------------------------------------------------------------------------*/ -// Install Error -/*-------------------------------------------------------------------------*/ - -function install_error($msg="") -{ - global $ipsclass; - - $ipsclass->template->print_top('Внимание!'); - - - - $ipsclass->template->contents .= "
    - Внимание! -

    - Указанные ниже ошибки должны быть обязательно исправлены перед тем, как продолжить!
    Пожалуйста, вернитесь назад и попробуйте снова! -

    - $msg -
    "; - - - - $ipsclass->template->output(); -} - -/*-------------------------------------------------------------------------*/ -// CLASS TEMPLATE -/*-------------------------------------------------------------------------*/ - -class template -{ - var $contents = ""; - - function output() - { - $year = date('Y'); - - echo $this->contents; - echo " - -



    Русская версия Invision Power Board © $year Invision Power Services, Inc.

    - - - "; - exit(); - } - - //-------------------------------------- - - function print_top($title="") - { - - $this->contents = " - - - Установка Invision Power Board :: $title - - - - -
    Инсталлятор Invision Power Board
    -
     
    -
    - "; - - } -} - - - +parse_incoming(); + +$ipsclass->initiate_ipsclass(); + +//-------------------------------- +// Setup Main Installer Class +//-------------------------------- + +require( INS_ROOT_PATH . 'core/class_installer.php' ); +require( INS_ROOT_PATH . 'custom/app.php' ); + +$install = new application_installer(); +$install->ipsclass =& $ipsclass; +$install->read_config(); + +$install->template = new install_template( $ipsclass ); +$install->template->product_name = $install->product_name; +$install->template->product_version = $install->product_version; +$install->template->product_long_version = $install->product_long_version; + +//-------------------------------- +// Saved Data +//-------------------------------- +$install->saved_data = unserialize( stripslashes( $_POST['saved_data'] ) ); + +//-------------------------------- +// Test lock +//-------------------------------- + +if ( $_REQUEST['p'] != 'done' ) +{ + $got_lock = $install->check_lock(); + + if ( $got_lock ) + { + $install->template->hide_next = 1; + $install->template->warning( array( "This installer is locked. Via FTP please delete the file 'installfiles/lock.php' and then refresh this page." ) ); + $install->template->output( $install->product_name, $install->product_version ); + + exit(); + } +} + +//-------------------------------- +// Make sure we've renamed conf_global.php +//-------------------------------- + +if ( file_exists( INS_DOC_ROOT_PATH.'conf_global.php.dist') AND ! file_exists( INS_DOC_ROOT_PATH.'conf_global.php') ) +{ + if ( ! @rename( INS_DOC_ROOT_PATH.'conf_global.php.dist', INS_DOC_ROOT_PATH.'conf_global.php' ) ) + { + $install->template->hide_next = 1; + $install->template->warning( array( "You MUST rename the file 'conf_global.php.dist' TO 'conf_global.php' before continuing. + This file can be found in the root forum directory on your FTP server, the same directory where 'admin.php' and 'index.php' are stored." ) ); + $install->template->output( $install->product_name, $install->product_version ); + exit(); + } +} + +// ------------------------------- +// Run Install Step +// ------------------------------- + +$install->pre_process(); +$install->process(); +$install->post_process(); + +// ------------------------------- +// Output +// ------------------------------- +$install->template->saved_data = serialize( $install->saved_data ); +$install->template->output( $install->product_name, $install->product_version ); + ?> \ No newline at end of file diff --git a/upload/install/install.css b/upload/install/install.css new file mode 100644 index 00000000..410ffabf --- /dev/null +++ b/upload/install/install.css @@ -0,0 +1,213 @@ +BODY +{ + background-color: #ffffff; + font-family: Verdana, Tahoma, "Lucida Sans", "Lucida Sans Unicode", Arial, Sans-serif; + font-size: 11px; +} + +#ipswrapper { + width: 100%; + margin: auto; +} + +.main_shell { + background-color: #6999DA; + border: 1px solid #24426A; + width: 606px; + margin-left:auto; + margin-right:auto; +} + +H1 { + margin: 0px; + background-image: url('images/title_bar.gif'); + padding: 7px 5px 6px 5px; + font-size: 13px; + color: #ffffff; + font-weight: bold; +} + +H2 { + margin: 0px; + font-size: 18px; +} + +H3 { + font-size: 11px; + margin: 0px; +} + +TABLE { + font-size: 10px; +} + +.content_shell { + + margin: 0px 3px 3px 3px; + border: 1px solid #24426A; + border-top: 3px solid #24426A; + background-image: url('images/main_bg.gif'); + background-repeat: repeat-x; + background-color: #EFF2F7; +} + +.package { + height: 417px; + background-image: url('images/package_bg.gif'); + background-repeat: no-repeat; + background-position: top-left; +} + +.content_wrap { + width: 70%; + height: 320px; + float: right; + margin: 6px 6px 4px 0px; + padding: 10px; + background-color: #ffffff; + border: 1px solid #000000; + line-height: 150%; + overflow-y:auto; + overflow-x:hidden; + -moz-border-radius: 10px; +} + +.install_info { + float: left; + margin: 10px 0px 0px 10px; + font-size: 12px; +} + +.install_info H3 { + font-size: 15px; + color: #6D87A9; +} + +.install_info UL { + margin: 0px; + margin-top: 15px; + padding-left: 25px; + list-style-type: none; +} + +#progress .step_done { + list-style-image: url('images/bullet_done.gif'); + color: #44638E; + font-style: italic; +} + +#progress .step_doing { + list-style-image: url('images/bullet_doing.gif'); + font-weight: bold; +} + +#progress .step_notdone { + list-style-image: url('images/bullet_notdone.gif'); +} + +.warning { + background-color: #EDF1AB; + border: 1px solid #6E704B; + padding: 5px; + font-weight: bold; + -moz-border-radius: 5px; + +} + +.hr { + margin: 4px 6px 0px 6px; + border-bottom: 1px solid #627686; +} + +.nav_button { + background-color: #B3C9E6; + border: 1px solid #24426A; + font-size: 12px; + padding: 3px 6px 3px 6px; + -moz-border-radius: 5px; +} + +.copyright { + width: 98%; + text-align: right; + font-size: 9px; + color: #9EA7B3; + padding-top: 3px; + padding-right: 5px; +} + +.eula { + height: 210px; + border: 1px solid #76774C; + background-color: #FDFDD3; + padding: 5px; + overflow: auto; +} + +#auto_progress LI { + list-style: none; + color: #029901; + font-size: 11px; + font-weight: bold; + padding: 3px; +} + +.done_text { + font-size: 14px; + font-weight: bold; +} + +#links { + margin: 0px; + padding: 5px; +} + +#links LI { + list-style: none; +} + +.float_img { + float: left; + margin-right: 5px; +} + +.info { + background-color: #DCE6F3; + border: 1px solid #5876A0; + padding: 4px; + line-height: 120%; + -moz-border-radius: 7px; + color: #1D3A60; +} + +.sql_form { + width: 100%; + font-size: 11px; + border-top: 1px solid #6A6A6A; + border-left: 1px solid #6A6A6A; + border-right: 1px solid #A8A8A8; + border-bottom: 1px solid #A8A8A8; +} + +FIELDSET { + border: 1px solid #2D4461; + background-color: #E6EBF1; + margin-top: 5px; + padding: 7px; + -moz-border-radius: 7px; + color: #2D4461; +} + +FIELDSET LEGEND { + font-weight: bold; +} + +TABLE .title { + color: #2D4461; + font-weight: bold; + padding-bottom: 3px; +} + +TABLE .content { + padding-bottom: 3px; +} \ No newline at end of file diff --git a/upload/install/installfiles/._ipb_settings.xml b/upload/install/installfiles/._ipb_settings.xml new file mode 100644 index 00000000..061b3009 Binary files /dev/null and b/upload/install/installfiles/._ipb_settings.xml differ diff --git a/upload/install/installfiles/acpperms.xml b/upload/install/installfiles/acpperms.xml new file mode 100644 index 00000000..f7315554 --- /dev/null +++ b/upload/install/installfiles/acpperms.xml @@ -0,0 +1,851 @@ + + + + + recache + tools + admin + + + + splash + admin + splash + + + + remove + admin + adminlog + + + + add + content + attach + + + + edit + content + attach + + + + remove + content + attach + + + + export + content + attach + + + + import + content + attach + + + + stats + content + attach + + + + search + content + attach + + + + bw-add + content + babw + + + + bw-remove + content + babw + + + + bw-edit + content + babw + + + + bw-export + content + babw + + + + bw-import + content + babw + + + + ban-view + content + babw + + + + ban-add + content + babw + + + + ban-remove + content + babw + + + + add + content + bbcode + + + + edit + content + bbcode + + + + remove + content + bbcode + + + + export + content + bbcode + + + + import + content + bbcode + + + + remove + content + calendars + + + + add + content + calendars + + + + edit + content + calendars + + + + recache + content + calendars + + + + add + admin + components + + + + edit + admin + components + + + + export + admin + components + + + + import + admin + components + + + + remove + admin + emailerror + + + + remove + admin + emaillog + + + + export + lookandfeel + emoticons + + + + import + lookandfeel + emoticons + + + + edit + lookandfeel + emoticons + + + + add + lookandfeel + emoticons + + + + remove + lookandfeel + emoticons + + + + upload + lookandfeel + emoticons + + + + add + content + forum + + + + edit + content + forum + + + + permedit + content + forum + + + + reorder + content + forum + + + + remove + content + forum + + + + recount + content + forum + + + + empty + content + forum + + + + rules + content + forum + + + + skin + content + forum + + + + add + content + group + + + + edit + content + group + + + + remove + content + group + + + + perms + content + group + + + + edit + tools + help + + + + add + tools + help + + + + remove + tools + help + + + + add + lookandfeel + lang + + + + edit + lookandfeel + lang + + + + remove + lookandfeel + lang + + + + export + lookandfeel + lang + + + + import + lookandfeel + lang + + + + add + tools + loginauth + + + + edit + tools + loginauth + + + + diagnostics + tools + loginauth + + + + export + tools + loginauth + + + + import + tools + loginauth + + + + edit + content + mem + + + + suspend + content + mem + + + + add + content + mem + + + + remove + content + mem + + + + title-view + content + mem + + + + title-edit + content + mem + + + + title-add + content + mem + + + + title-remove + content + mem + + + + mod + content + mtools + + + + ban + content + mem + + + + view + content + mtools + + + + add + content + mod + + + + edit + content + mod + + + + remove + content + mod + + + + remove + admin + modlog + + + + add + content + multimod + + + + edit + content + multimod + + + + remove + content + multimod + + + + install + content + msubs + + + + edit + content + msubs + + + + remove + content + msubs + + + + add + content + msubs + + + + search + content + msubs + + + + edit + tools + portal + + + + add + tools + postoffice + + + + edit + tools + postoffice + + + + send + tools + postoffice + + + + remove + tools + postoffice + + + + add + content + field + + + + edit + content + field + + + + remove + content + field + + + + recount + tools + rebuild + + + + rebuild + tools + rebuild + + + + add + content + rssexport + + + + edit + content + rssexport + + + + recache + content + rssexport + + + + remove + content + rssexport + + + + add + content + rssimport + + + + edit + content + rssimport + + + + recache + content + rssimport + + + + remove + content + rssimport + + + + edit + tools + op + + + + remove + tools + op + + + + add + tools + op + + + + export + tools + op + + + + search + tools + op + + + + import + tools + op + + + + edit + lookandfeel + style + + + + rundiff + lookandfeel + skindiff + + + + export + lookandfeel + skindiff + + + + remove + lookandfeel + skindiff + + + + export + lookandfeel + import + + + + import + lookandfeel + import + + + + edit + lookandfeel + image + + + + remove + lookandfeel + image + + + + add + lookandfeel + image + + + + add + lookandfeel + sets + + + + edit + lookandfeel + sets + + + + remove + lookandfeel + sets + + + + rebuild + lookandfeel + sets + + + + edit + lookandfeel + templ + + + + remove + lookandfeel + templ + + + + add + lookandfeel + templ + + + + edit + lookandfeel + wrap + + + + recache + lookandfeel + skintools + + + + changemember + lookandfeel + skintools + + + + search + lookandfeel + skintools + + + + remove + admin + spiderlog + + + + show + admin + stats + + + + edit + tools + task + + + + add + tools + task + + + + remove + tools + task + + + + runnow + tools + task + + + + log + tools + task + + + + view + admin + warnlog + + + + remove + admin + warnlog + + + + \ No newline at end of file diff --git a/upload/install/installfiles/attachments.xml b/upload/install/installfiles/attachments.xml new file mode 100644 index 00000000..d94548b2 --- /dev/null +++ b/upload/install/installfiles/attachments.xml @@ -0,0 +1,284 @@ + + + + + 1 + pdf + application/pdf + 1 + 0 + folder_mime_types/pdf.gif + + + + 2 + png + image/png + 1 + 1 + folder_mime_types/quicktime.gif + + + + 3 + viv + video/vivo + 1 + 0 + folder_mime_types/win_player.gif + + + + 4 + wmv + video/x-msvideo + 1 + 0 + folder_mime_types/win_player.gif + + + + 5 + html + unknown/unknown + 1 + 0 + folder_mime_types/html.gif + + + + 6 + ram + audio/x-pn-realaudio + 1 + 0 + folder_mime_types/real_audio.gif + + + + 7 + gif + image/gif + 1 + 1 + folder_mime_types/gif.gif + + + + 8 + mpg + video/mpeg + 1 + 0 + folder_mime_types/quicktime.gif + + + + 9 + ico + image/ico + 1 + 0 + folder_mime_types/gif.gif + + + + 10 + tar + application/x-tar + 1 + 0 + folder_mime_types/zip.gif + + + + 11 + bmp + image/x-MS-bmp + 1 + 0 + folder_mime_types/gif.gif + + + + 12 + tiff + image/tiff + 1 + 0 + folder_mime_types/quicktime.gif + + + + 13 + rtf + unknown/unknown + 1 + 0 + folder_mime_types/rtf.gif + + + + 14 + hqx + application/mac-binhex40 + 1 + 0 + folder_mime_types/stuffit.gif + + + + 15 + aiff + audio/x-aiff + 1 + 0 + folder_mime_types/quicktime.gif + + + + 31 + zip + application/zip + 1 + 0 + folder_mime_types/zip.gif + + + + 17 + ps + application/postscript + 1 + 0 + folder_mime_types/eps.gif + + + + 18 + doc + application/msword + 1 + 0 + folder_mime_types/doc.gif + + + + 19 + mov + video/quicktime + 1 + 0 + folder_mime_types/quicktime.gif + + + + 20 + ppt + application/powerpoint + 1 + 0 + folder_mime_types/ppt.gif + + + + 21 + wav + audio/x-wav + 1 + 0 + folder_mime_types/music.gif + + + + 22 + mp3 + audio/x-mpeg + 1 + 0 + folder_mime_types/music.gif + + + + 23 + jpg + image/jpeg + 1 + 1 + folder_mime_types/gif.gif + + + + 24 + txt + unknown/unknown + 1 + 0 + folder_mime_types/txt.gif + + + + 25 + xml + unknown/unknown + 1 + 0 + folder_mime_types/script.gif + + + + 26 + css + unknown/unknown + 1 + 0 + folder_mime_types/script.gif + + + + 27 + swf + application/x-shockwave-flash + 0 + 0 + folder_mime_types/quicktime.gif + + + + 32 + php + unknown/unknown + 1 + 0 + folder_mime_types/php.gif + + + + 28 + htm + unknown/unknown + 1 + 0 + folder_mime_types/html.gif + + + + 29 + jpeg + image/jpeg + 1 + 1 + folder_mime_types/gif.gif + + + + 33 + gz + application/x-gzip + 1 + 0 + folder_mime_types/zip.gif + + + + \ No newline at end of file diff --git a/upload/install/installfiles/bbcode.xml b/upload/install/installfiles/bbcode.xml new file mode 100644 index 00000000..5e9ddf53 --- /dev/null +++ b/upload/install/installfiles/bbcode.xml @@ -0,0 +1,75 @@ + + + + + 1 + Post Snap Back + This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default. + snapback + <{POST_SNAPBACK}>]]> + 0 + + + + + 2 + Right + Aligns content to the right of the posting area + right + {content}
    ]]> + 0 + + + + + 3 + Left + Aligns content to the left of the post + left + {content}]]> + 0 + + + + + 4 + Center + Aligns content to the center of the posting area. + center + {content}]]> + 0 + + + + + 5 + Topic Link + This tag provides an easy way to link to a topic + topic + {content}]]> + 1 + + + + + 6 + Post Link + This tag provides an easy way to link to a post. + post + {content}]]> + 1 + + + + + 7 + CODEBOX + Use this BBCode tag to show a scrolling codebox. Useful for long sections of code. + codebox + CODE
    {content}
    ]]>
    + 0 + +
    + + + \ No newline at end of file diff --git a/upload/install/installfiles/components.php b/upload/install/installfiles/components.php index 48517b66..92151cd2 100644 --- a/upload/install/installfiles/components.php +++ b/upload/install/installfiles/components.php @@ -474,7 +474,7 @@ ul#help{ .wrapmini{ float: left; line-height: 1.5em; - width: 30%; + width: 25%; } .pagelinks{ diff --git a/upload/install/installfiles/components.xml b/upload/install/installfiles/components.xml new file mode 100644 index 00000000..f4138624 --- /dev/null +++ b/upload/install/installfiles/components.xml @@ -0,0 +1,95 @@ + + + + + 1 + Invision Gallery + Invision Power Services + http://www.invisiongallery.com + 1.3.0 + 1113309894 + + 0 + 1 + gallery + gallery + Complete gallery system for your members + + + 1 + + + + 2 + Invision Community Blog + Invision Power Services + http://www.invisionblog.com + 1.1.2 + 1113310263 + + 1 + 1 + blog + blog + Blogging addition for your members + + {ipb.base_url}automodule=blog + 0 + + + + 3 + Invision Chat (ParaChat) + Invision Power Services + http://chat.invisionsitetools.com + 2.1 + 1113313895 + + 0 + 1 + chatpara + chatpara + Full real-time chat system for your members + + {ipb.base_url}autocom=chatpara + 2 + + + + 4 + Invision Copyright Removal + Invision Power Services + http://www.invisionboard.com + 2.1 + 1113314009 + + 0 + 1 + copyright + copyright + + + + 3 + + + + 5 + SigmaChat + Invision Power Services + http://www.invisionpower.com + 2.1 + 1113313895 + + 0 + 1 + chatsigma + chatsigma + Full real-time chat system for your members + + {ipb.base_url}autocom=chatsigma + 3 + + + + \ No newline at end of file diff --git a/upload/install/installfiles/config.xml b/upload/install/installfiles/config.xml new file mode 100644 index 00000000..e37cb282 --- /dev/null +++ b/upload/install/installfiles/config.xml @@ -0,0 +1,63 @@ + + + Invision Power Board + 2.2 BETA 1 + 22001 + 1134742970 + Invision Power Services, Inc. +Invision Power Board Software +End User License Agreement (Version 2.2.x) + +LICENSE +Invision Power Services (IPS) grants you a non-exclusive license to use the Software on one installation to be accessable by one URL (web address) subject to the provisions in all sections of this Agreement. + +TERM +Invision Power Board is offered under yearly and lifetime licensing. Both license terms feature technical support and service plus access to upgrades to the software as they are available. In the event a one year license expires without being renewed, the software will remain completely functional but will be unsupported and no access to upgrades will be made available. + +SCOPE OF GRANT + +You may: + + * customize the Software's design and operation to suit the internal needs of your web site except to the extent not permitted in this Agreement + * produce and distribute modification instructions, Skin packs, or Language packs provided that they contain notification that the Skin and Language packs were exported from and originally created by Invision Power Board and/or IPS. The modifications instructions you personally create are not owned by IPS so long as they contain no proprietary coding from Invision Power Board. + * create applications which interface with the operation of the Software provided said application is an original work + + +You may not: + + * permit other individuals to use the Software except under the terms listed above + * reverse engineer, disassemble, or create derivative works based on the Software for distribution or usage outside your web site + * use the Software in such as way as to condone or encourage terrorism, promote or provide pirated Software, or any other form of illegal or damaging activity + * modify and/or remove any copyright notices or labels on the Software on each page (unless copyright output removal license is purchased) and in the header of each script source file + * distribute the Software + * distribute individual copies of files, libraries, or other programming material in the Software package + * distribute or modify proprietary graphics, HTML, or CSS packaged with the Software for use in Software applications other than Invision Power Board or web sites without written permission from IPS + * modify the software to function in more than one instance or location (URL, domain, subdomain, etc.) from a single set of source program files unless each location is separately licensed + + +DISCLAIMER OF WARRANTY +The Software is provided on an "AS IS" basis, without warranty of any kind, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement. The entire risk as to the quality and performance of the Software is borne by you. Should the Software prove defective, you and not IPS assume the entire cost of any service and repair. In addition, the security mechanisms implemented by IPS Software have inherent limitations, and you must determine that the Software sufficiently meets your requirements. This disclaimer of warranty constitutes an essential part of the Agreement. + +TITLE +Title, ownership rights, and intellectual property rights in the Software shall remain with IPS. The Software is protected by copyright laws and treaties. Title and related rights in the content generated through the Software is the property of the applicable content owner and may be protected by applicable law. This License gives IPS no rights to such content. + +TERMINATION +This Agreement will terminate automatically upon failure to comply with the limitations described herein or on written notice from an authorized representative of IPS. On termination, you must destroy all copies of the Software within 48 hours. Termination of the license due to noncompliance will not result in any refunds of license fees. + +MISCELLANEOUS +IPS reserves the right to publish a selected list of users of the Software. IPS reserves the right to change the terms of this Agreement at any time. Changes to the Agreement will be announced via email using the IPS email notification list. Failure to receive notification of a change does not make those changes invalid. A current copy of this Agreement will be available on the Invision Power Board web site. + +Skin packs and Language packs are defined as the group of code, text, and graphics that are exported from the Software using the provided functions of the Software Administration Control Panel. Integrated add-ons for Invision Power Board are released under this Agreement. Purchasing or downloading integrated add-ons constitute an additional, separate instance of this Agreement. + +Technical support will not be provided for third-party modifications to the Software including modifications to code, Skin packs, and Language packs to any license holder. If the Software is modified using a third-party modification instruction or otherwise, technical support may be refused to any license holder. + +PROPRIETARY LABELS +Authorization to remove or modify output of copyright notices can be obtained from IPS for a fee. This fee authorizes you to remove the output of copyright notices: it does not give you authorization to remove any copyright notices in the program source files or any other rights. + +GOVERNING LAW +This Agreement shall be governed by the Laws of the Commonwealth of Virginia and the Laws of the United States of America. Any action in regard to this Agreement or arising out of its terms and conditions shall be instituted and litigated in the Circuit Court of Bedford County. Each of the parties consents to jurisdiction in such Court and agrees that service of process as provided by the states and rules of civil procedures of the Commonwealth of Virginia shall be sufficient. (FTB) + +MANUFACTURER +Invision Power Services, Inc., 1115 Vista Park Drive Suite C, Forest, VA 24551. For questions, write to the above address, email info@invisionpower.com, or call 434-316-7201. + + \ No newline at end of file diff --git a/upload/install/installfiles/faq.xml b/upload/install/installfiles/faq.xml new file mode 100644 index 00000000..3bb24620 --- /dev/null +++ b/upload/install/installfiles/faq.xml @@ -0,0 +1,171 @@ + + + + + 1 + Registration benefits + Registration is free and only takes a moment to complete.


    During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail.

    In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.

    Once you have registered and logged in, you will have access to your personal messenger and your control panel.

    For more information on these items, please see the relevant sections in this documentation.


    ]]> + How to register and the added benefits of being a registered member. + 1 + + + + 2 + Cookies and cookie usage +
    If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.

    Clearing Cookies

    You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.

    Removing Cookies in Internet Explorer for Windows


    • Close all open Internet Explorer Windows
    • Click on the 'start' button
    • Move up to 'Find' and click on 'Files and Folders'
    • When the new window appears, type in the domain name of the board you are using into the 'containing text' field. (If the boards address was 'http://www.invisionboard.com/forums/index.php' you would enter 'invisionboard.com' without the quotes)
    • In the 'look in' box, type in C:WindowsCookies and press 'Find Now'
    • After it has finished searching, highlight all files (click on a file then press CTRL+A) and delete them.


    Removing Cookies in Internet Explorer for Macintosh


    • With Internet Explorer active, choose 'Edit' and then 'Preferences' from the Macintosh menu bar at the top of the screen
    • When the preferences panel opens, choose 'Cookies' found in the 'Receiving Files' section.
    • When the cookie pane loads, look for the domain name of the board (If the boards address was 'http://www.invisionboard.com/forums/index.php' look for 'invisionboard.com' or 'www.invisionboard.com'
    • For each cookie, click on the entry and press the delete button.


    Your cookies should now be removed. In some cases you may need to restart your computer for the changes to take effect.]]>
    + The benefits of using cookies and how to remove cookies set by this board. + 4 +
    + + + 3 + Recovering lost or forgotten passwords + This means that we cannot email your password to you as we hold no record of your 'uncrypted' password. You can however, apply to have your password reset.

    To do this, click on the Lost Password link found on the log in page.

    Further instruction is available from there.]]>
    + + 2 +
    + + + 4 + Your Control Panel (My Controls) +
    Subscriptions

    This is where you manage your topic and forums subscriptions. Please see the help file 'Email Notification of new messages' for more information on how to subscribe to topics.

    Edit Profile Info

    This section allows you to add or edit your contact information and enter some personal information if you choose.

    Edit Signature

    A board 'signature' is very similar to an email signature. This signature is attached to the foot of every message you post unless you choose to check the box that allows you to ommit the signature in the message you are posting. You may use BB Code if available and in some cases, pure HTML (if the board administrator allows it).

    Edit Avatar Settings

    An avatar is a little image that appears under your username when you view a topic or post you authored. If the administrator allows, you may either choose from the board gallery, enter a URL to an avatar stored on your server or upload an avatar to use. You may also set the width of the avatar to ensure that it's sized in proportion.

    Change Personal Photo

    This section will allow you to add a photograph to your profile. This will be displayed when a user clicks to view your profile, on the mini-profile screen and will also be linked to from the member list.

    Email Settings

    Hide my email address allows you to deny the ability for other users to send you an email from the board.
    Send me updates sent by the board administrator will allow the administrator to include your email address in any mailings they send out - this is used mostly for important updates and community information.
    Include a copy of the post when emailing me from a subscribed topic, this allows you to have the new post included in any reply to topic notifications.
    Send a confirmation email when I receive a new private message, this will send you an e-mail notification to your registered e-mail address each time you receive a private message on the board.
    Enable 'Email Notification' by default?, this will automatically subscribe you to any topic that you make a reply to. You may unsubscribe from the 'Subscriptions' section of My Controls if you wish.

    Board Settings

    From this section, you can set your time zone, choose to not see users signatures, avatars and posted images.
    You can choose to get a pop up window informing you when you have a new message and choose to show or hide the 'Fast Reply' box where it is enabled.
    You are also able to choose display preferences for the number of topics/posts shown per page on the board.

    Change Email Address

    At any time, you can change the email address that is registered to your account. In some cases, you will need to revalidate your account after changing your email address. If this is the case, you will be notified before your email address change is processed.

    Change Password

    You may change your password from this section. Please note that you will need to know your current password before you can change your password.]]>
    + Editing contact information, personal information, avatars, signatures, board settings, languages and style choices. + 5 +
    + + + 5 + Email Notification of new messages +
    There are three ways to subscribe to a topic:

    • Click the 'Track This Topic' link at the top of the topic that you wish to track

    • On the posting screen when replying to or creating a topic, check the 'Enable email notification of replies?' checkbox

    • From the E-Mail settings section of your User CP (My Controls) check the 'Enable Email Notification by default?' option, this will automatically subscribe you to any topic that you make a reply to

    Please note that to avoid multiple emails being sent to your email address, you will only get one e-mail for each topic you are subscribed to until the next time you visit the board.

    You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click the 'Subscribe to this forum' link at the bottom of the forum that you wish to subscribe to.

    To unsubscribe from any forums or topics that you are subscribed to - just go to the 'Subscriptions' section of 'My Controls' and you can do thi from there.]]>
    + How to get emailed when a new reply is added to a topic. + 7 +
    + + + 17 + Your Personal Messenger +


    Send a new PM



    This will allow you to send a message to another member. If you have names in your contact list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a 'PM' button on the board (from the member list or a post). If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line.

    If the administrator allows, you may use BB Code and HTML in your private message. If you choose to check the 'Add a copy of this message to you sent items folder' box, a copy of the message will be saved for you for later reference. If you tick the 'Track this message?' box, then the details of the message will be available in your 'Message Tracker' where you will be able to see if/when it has been read.


    Go to Inbox



    Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.



    Empty PM Folders



    This option provides you with a quick and easy way to clear out all of your PM folders.



    Edit Storage Folders



    You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove 'Sent Items' or 'Inbox'.



    PM Buddies/Block List



    You may add in users names in this section, or edit any saved entries. You can also use this as a ban list, denying the named member the ability to message you.

    Names entered in this section will appear in the drop down list when sending a new PM, allowing you to quickly choose the members name when sending a message.



    Archive Messages



    If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft В© Excel Format. This page is then emailed to your registered email address for your convenience.



    Saved (Unsent) PMs



    This area will allow you to go back to any PM's that you have chosen to save to be sent later.



    Message Tracker



    This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.]]>
    + How to send personal messages, track them, edit your messenger folders and archive stored messages. + 6 +
    + + + 7 + <![CDATA[Contacting the moderating team & reporting posts]]> + Contacting the moderating team


    If you need to contact a moderator or simply wish to view the complete administration team, you can click the link 'The moderating team' found at the bottom of the main board page (the first page you see when visiting the board), or from 'My Assistant'.

    This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.

    If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.

    Reporting a post

    If the administrator has enabled this function on the board, you'll see a 'Report' button in a post, next to the 'Quote' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn't a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.]]> + Where to find a list of the board moderators and administrators. + 14 + + + + 8 + Viewing members profile information +
    This will show you their profile page which contains their contact information (if they have entered some) and their 'active stats'.

    You can also click on the 'Mini Profile' button underneath their posts, this will show up a mini 'e-card' with their contact information and a photograph if they have chosen to have one.]]>
    + How to view members contact information. + 13 +
    + + + 9 + Viewing active topics and new posts +
    The 'View New Posts' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.]]>
    + How to view all the topics which have a new reply today and the new posts made since your last visit. + 12 +
    + + + 10 + Searching Topics and Posts +
    There are two types of search form available, simple search and advanced search. You may switch between the two using the 'More Options' and 'Simple Mode' buttons.

    Simple Mode

    All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.

    Advanced Mode

    The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.

    If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.

    There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.]]>
    + How to use the search feature. + 11 +
    + + + 11 + Logging in and out +
    When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.

    You can also choose to hide - this will keep your name from appearing in the active users list.

    Logging out is simply a matter of clicking on the 'Log Out' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the 'Cookies' help file for more information.]]>
    + How to log in and out from the board and how to remain anonymous and not be shown on the active users list. + 3 +
    + + + 13 + My Assistant +
    At the top it tells you how many posts have been made since you last visited the board.. Also underneath this the number of posts with replies that have been made in topics that the individual has also posted in.
    Click on the 'View' link on either of the two sentences to see the posts.

    The next section is five links to useful features:

    • The link to the moderating team is basically a quick link to see all those that either administrate or moderate certain forums on the message board.

    • The link to 'Today's Active Topics' shows you all the topics that have been created in the last 24 hours on the board.

    • Today's Top 10 Posters link shows you exactly as the name suggests. It shows you the amount of posts by the members and also their total percentage of the total posts made that day.

    • The overall Top 10 Posters link shows you the top 10 posters for the whole time that the board has been installed.

    • My last 10 posts links to the latest topics that you have made on the board. These are shortened on the page, to save space, and are linked to if you require to read more of them.

    The two search features allow you to search the whole board for certain words in a whole topic. It isn't as featured as the normal search option so it is not as comprehensive.

    The Help Search is just as comprehensive as the normal help section's search function and allows for quick searching of all the help topics on the board.]]>
    + A comprehensive guide to use this handy little feature. + 9 +
    + + + 12 + Posting + +
    Posting new topics and replying +
    +
    When making a post, you will most likely have the option to use IBF code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the 'BB Code Help' link under the emoticon box to launch the help window. +
    +
    On the left of the text entry box, there is the clickable emoticons box - you can click on these to add them to the content of your message (these are sometimes known as 'smilies'). +
    +
    There are three options available when making a post or a reply. 'Enable emoticons?' if this is unchecked, then any text that would normally be converted into an emoticon will not be. 'Enable signature?' allows you to choose whether or not you would like your signature to appear on that individual post. 'Enable email notification of replies?' ticking this box will mean that you will receive e-mail updates to the topic, see the 'Email Notification of new messages' help topic for more information on this. +
    +
    You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic. +
    +
    If the admin has enabled it, you will also see a file attachments option, this will allow you to attach a file to be uploaded when making a post. Click the browse button to select a file from your computer to be uploaded. If you upload an image file, it may be shown in the content of the post, all other file types will be linked to. +
    +
    Poll Options +
    +
    If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left. +
    +
    Quoting Posts +
    +
    Displayed below each post in a topic, there is a 'Quote' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted. +
    +
    Editing Posts +
    +
    Above any posts that you have made, you may see an 'Edit' button. Pressing this will allow you to edit the post that you had previously made. +
    +
    When editing you may see an option to 'Add the 'Edit by' line in this post?'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post. +
    +
    If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired. +
    +
    Fast Reply +
    +
    Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the 'More Options' button will take you to the normal posting screen.]]>
    + A guide to the features avaliable when posting on the boards. + 10 +
    + + + 14 + Member List + +
    If you are looking to search for a particular member by all/part of their username, then in the drop down box at the bottom of the page, change the selection from 'Search All Available' to 'Name Begins With' or 'Name Contains' and input all/part of their name in the text input field and press the 'Go!' button. +
    +
    Also, at the bottom of the member list page, there are a number of sorting options available to alter the way in which the list is displayed. +
    +
    If a member has chosen to add a photo to their profile information, then a camera icon will appear next to their name, and you may click this to view the photo.]]>
    + Explaining the different ways to sort and search through the list of members. + 13 +
    + + + 15 + Topic Options +
    From this box, you can select from the following options:

    • Track this topic - this option will allow you to receive e-mail updates for the topic, see the 'Email Notification of new messages' help file for more information on this

    • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages' help file for more information on this

    • Download / Print this Topic - will show the topic in a number of different formats. 'Printer Friendly Version' will display a version of the topic that is suitable for printing out. 'Download HTML Version' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. 'Download Microsoft Word Version' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.

    ]]>
    + A guide to the options avaliable when viewing a topic. + 8 +
    + + + 16 + Calendar +
    You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the 'Add New Event' button to be taken to the event posting screen. There are three types of events that you can now add:

    • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.

    • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.

    • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.

    If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.

    Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.]]>
    + More information on the boards calendar feature. + 15 +
    + + + \ No newline at end of file diff --git a/upload/install/installfiles/groups.xml b/upload/install/installfiles/groups.xml new file mode 100644 index 00000000..f17842a6 --- /dev/null +++ b/upload/install/installfiles/groups.xml @@ -0,0 +1,317 @@ + + + + + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Validating + 0 + 1 + 0 + 0 + 0 + + 0 + 0 + + + 50 + 0 + 20 + 0 + + 0 + 0 + 1 + + 0 + 0 + 10:15 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 2 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + Guests + + + + + + + -1 + 0 + + + 50 + 0 + 20 + 0 + + 0 + 0 + 2 + + 0 + 0 + 10:15 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 3 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + Members + 0 + 1 + 0 + 0 + 0 + + 500 + 1 + + + 50 + 5 + 0 + 0 + + 0 + 0 + 3 + :: + 0 + 0 + 10:15 + 0 + 0 + 0 + 1 + 0 + 0 + + + + 4 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + Root Admin + 0 + 1 + 1 + 1 + 1 + + 10000000 + 1 + ]]> + ]]> + 50 + 6 + 0 + 5 + + 0 + 1 + 4 + 1000:500:500 + 1 + 1 + 10000:0 + 0 + 1 + 10000000 + 2 + 3 + 30 + + + + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Banned + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + + + 50 + 0 + 20 + 0 + + 1 + 0 + 5 + :: + 0 + 0 + 10:15 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 6 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + Administrators + 0 + 1 + 1 + 1 + 1 + + 50000 + 1 + ]]> + ]]> + 50 + 6 + 0 + 5 + + 0 + 1 + 4 + 50:150:150 + 1 + 1 + 10:15 + 1 + 1 + 0 + 2 + 3 + 30 + + + + \ No newline at end of file diff --git a/upload/install/installfiles/index.html b/upload/install/installfiles/index.html index 787531db..52a588b2 100644 --- a/upload/install/installfiles/index.html +++ b/upload/install/installfiles/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/install/installfiles/ipb_acpperms.xml b/upload/install/installfiles/ipb_acpperms.xml index 6b2f8868..d35fadd1 100644 --- a/upload/install/installfiles/ipb_acpperms.xml +++ b/upload/install/installfiles/ipb_acpperms.xml @@ -1,4 +1,4 @@ - + diff --git a/upload/install/installfiles/ipb_macro.xml b/upload/install/installfiles/ipb_macro.xml index eb8960e4..44a06ea8 100644 --- a/upload/install/installfiles/ipb_macro.xml +++ b/upload/install/installfiles/ipb_macro.xml @@ -1,34 +1,34 @@ - - + + A_LOCKED_B - /t_closed.gif' border='0' alt='Тема закрыта' />]]> + /t_closed.gif' border='0' alt='Closed Topic' />]]> A_MOVED_B - /t_moved.gif' border='0' alt='Тема перемещена'>]]> + /t_moved.gif' border='0' alt='Moved Topic'>]]> A_POLLONLY_B - /t_closed.gif' border='0' alt='Только опрос (ответы в теме запрещены)' />]]> + /t_closed.gif' border='0' alt='Poll Only' />]]> A_POST - /t_new.gif' border='0' alt='Открыть тему' />]]> + /t_new.gif' border='0' alt='Start new topic' />]]> A_REPLY - /t_reply.gif' border='0' alt='Добавить ответ в эту тему' />]]> + /t_reply.gif' border='0' alt='Reply to this topic' />]]> A_POLL - /t_poll.gif' border='0' alt='Открыть тему (с опросом)' />]]> + /t_poll.gif' border='0' alt='Start Poll' />]]> @@ -38,117 +38,117 @@ B_HOT - /f_hot.gif' border='0' alt='Горячая тема (есть новые ответы)' />]]> + /f_hot.gif' border='0' alt='Hot topic' />]]> B_HOT_NN - /f_hot_no.gif' border='0' alt='Горячая тема (нет новых ответов)' />]]> + /f_hot_no.gif' border='0' alt='No new' />]]> B_LOCKED - /f_closed.gif' border='0' alt='Закрытая тема' />]]> + /f_closed.gif' border='0' alt='Closed' />]]> B_MOVED - /f_moved.gif' border='0' alt='Тема перемещена' />]]> + /f_moved.gif' border='0' alt='Moved' />]]> B_NEW - /f_norm.gif' border='0' alt='Открытая тема (есть новые ответы)' />]]> + /f_norm.gif' border='0' alt='New Posts' />]]> B_NORM - /f_norm_no.gif' border='0' alt='Открытая тема (нет новых ответов)' />]]> + /f_norm_no.gif' border='0' alt='No New Posts' />]]> B_PIN - /f_pinned.gif' border='0' alt='Важная тема' />]]> + /f_pinned.gif' border='0' alt='Pinned' />]]> B_POLL - /f_poll.gif' border='0' alt='Опрос (есть новые голоса)' />]]> + /f_poll.gif' border='0' alt='Poll' />]]> B_POLL_NN - /f_poll_no.gif' border='0' alt='Опрос (нет новых голосов)' />]]> + /f_poll_no.gif' border='0' alt='No new votes' />]]> B_HOT_DOT - /f_hot_dot.gif' border='0' alt='Горячая тема (есть новые ответы)*'>]]> + /f_hot_dot.gif' border='0' alt='New Posts'>]]> B_NEW_DOT - /f_norm_dot.gif' border='0' alt='Открытая тема (есть новые ответы)*'>]]> + /f_norm_dot.gif' border='0' alt='No New Posts'>]]> B_HOT_NN_DOT - /f_hot_no_dot.gif' border='0' alt='Горячая тема (нет новых ответов)*'>]]> + /f_hot_no_dot.gif' border='0' alt='No New Posts*'>]]> B_NORM_DOT - /f_norm_no_dot.gif' border='0' alt='Открытая тема (нет новых ответов)*'>]]> + /f_norm_no_dot.gif' border='0' alt='No New Posts*'>]]> B_POLL_DOT - /f_poll_dot.gif' border='0' alt='Опрос (есть новые голоса)*'>]]> + /f_poll_dot.gif' border='0' alt='Poll*'>]]> B_POLL_NN_DOT - /f_poll_no_dot.gif' border='0' alt='Опрос (нет новых голосов)*'>]]> + /f_poll_no_dot.gif' border='0' alt='No New Votes*'>]]> C_LOCKED - /bf_readonly.gif' border='0' alt='Форум только для чтения' />]]> + /bf_readonly.gif' border='0' alt='Read Only Forum' />]]> C_OFF - /bf_nonew.gif' border='0' alt='Нет новых сообщений' />]]> + /bf_nonew.gif' border='0' alt='No New Posts' />]]> C_OFF_CAT - /bc_nonew.gif' border='0' alt='Нет новых сообщений' />]]> + /bc_nonew.gif' border='0' alt='No New Posts' />]]> C_OFF_RES - /br_nonew.gif' border='0' alt='Нет новых сообщений' />]]> + /br_nonew.gif' border='0' alt='No New Posts' />]]> C_ON - /bf_new.gif' border='0' alt='Есть новые сообщения' />]]> + /bf_new.gif' border='0' alt='New Posts' />]]> C_ON_CAT - /bc_new.gif' border='0' alt='Есть новые сообщения' />]]> + /bc_new.gif' border='0' alt='New Posts' />]]> C_ON_RES - /br_new.gif' border='0' alt='Есть новые сообщения' />]]> + /br_new.gif' border='0' alt='New Posts' />]]> F_ACTIVE - /user.gif' border='0' alt='Активные пользователи' />]]> + /user.gif' border='0' alt='Active Users' />]]> @@ -163,27 +163,27 @@ F_STATS - /stats.gif' border='0' alt='Статистика форума' />]]> + /stats.gif' border='0' alt='Board Stats' />]]> NO_PHOTO - /nophoto.gif' border='0' alt='Нет фото' />]]> + /nophoto.gif' border='0' alt='No Photo' />]]> CAMERA - /camera.gif' border='0' alt='Есть фото' />]]> + /camera.gif' border='0' alt='Photo' />]]> M_READ - /f_norm_no.gif' border='0' alt='Прочитанное сообщение' />]]> + /f_norm_no.gif' border='0' alt='Read Msg' />]]> M_UNREAD - /f_norm.gif' border='0' alt='Непрочитанное сообщение' />]]> + /f_norm.gif' border='0' alt='Unread Msg' />]]> @@ -193,17 +193,17 @@ P_DELETE - /p_delete.gif' border='0' alt='Удалить сообщение' />]]> + /p_delete.gif' border='0' alt='Delete Post' />]]> P_EDIT - /p_edit.gif' border='0' alt='Изменить сообщение' />]]> + /p_edit.gif' border='0' alt='Edit Post' />]]> P_EMAIL - /p_email.gif' border='0' alt='Отправить письмо на e-mail' />]]> + /p_email.gif' border='0' alt='Email Poster' />]]> @@ -213,17 +213,17 @@ P_MSG - /p_pm.gif' border='0' alt='Отправить личное сообщение' />]]> + /p_pm.gif' border='0' alt='PM' />]]> P_QUOTE - /p_quote.gif' border='0' alt='Ответить с цитированием данного сообщения' />]]> + /p_quote.gif' border='0' alt='Quote Post' />]]> P_WEBSITE - /p_www.gif' border='0' alt='Домашняя страница' />]]> + /p_www.gif' border='0' alt='Users Website' />]]> @@ -233,7 +233,7 @@ P_REPORT - /p_report.gif' border='0' alt='Известить модератора об этом сообщении' />]]> + /p_report.gif' border='0' alt='Report Post' />]]> @@ -248,17 +248,17 @@ NEW_POST - /newpost.gif' border='0' alt='Перейти к последнему непрочитанному сообщению' hspace=2>]]> + /newpost.gif' border='0' alt='Goto last unread' title='Goto last unread' hspace=2>]]> LAST_POST - /lastpost.gif' border='0' alt='Последнее сообщение' />]]> + /lastpost.gif' border='0' alt='Last Post' />]]> BR_REDIRECT - /br_redirect.gif' border='0' alt='Переадресация' />]]> + /br_redirect.gif' border='0' alt='Redirect' />]]> @@ -266,24 +266,29 @@ /p_im.gif' border='0' alt='Integrity Messenger IM' />]]> + + ADDRESS_CARD + /addresscard.gif' border='0' alt='Mini Profile' />]]> + + T_QREPLY - /t_qr.gif' border='0' alt='Быстрый ответ в тему' />]]> + /t_qr.gif' border='0' alt='Fast Reply' />]]> T_OPTS - /t_options.gif' border='0' alt='Опции темы' />]]> + /t_options.gif' border='0' alt='Topic Options' />]]> CAL_NEWEVENT - /cal_newevent.gif' border='0' alt='Добавить новое событие' />]]> + /cal_newevent.gif' border='0' alt='Add New Event' />]]> F_RULES - /forum_rules.gif' border='0' alt='Правила этого форума' />]]> + /forum_rules.gif' border='0' alt='Forum Rules' />]]> @@ -328,17 +333,17 @@ PB_USER_ONLINE - /p_online.gif' border='0' alt='Пользователь в онлайне!' />]]> + /p_online.gif' border='0' alt='User is online!' />]]> PB_USER_OFFLINE - /p_offline.gif' border='0' alt='Пользователя в офлайне' />]]> + /p_offline.gif' border='0' alt='User is offline' />]]> ATTACH_ICON - /attachicon.gif' border='0' alt='Тема имеет прикрепленные файлы' />]]> + /attachicon.gif' border='0' alt='Topic has attachments' />]]> @@ -353,7 +358,7 @@ ADDRESS_CARD - /addresscard.gif' border='0' alt='Карточка пользователя' />]]> + /addresscard.gif' border='0' alt='Mini Profile' />]]> @@ -363,17 +368,17 @@ BR_REDIRECT - /br_redirect.gif' border='0' alt='Переадресация' />]]> + /br_redirect.gif' border='0' alt='Redirect' />]]> LAST_POST - /lastpost.gif' border='0' alt='Последнее сообщение' />]]> + /lastpost.gif' border='0' alt='Last Post' />]]> NEW_POST - /newpost.gif' border='0' alt='Перейти к последнему непрочитанному сообщению' hspace=2>]]> + /newpost.gif' border='0' alt='Goto last unread' title='Goto last unread' hspace=2>]]> @@ -388,7 +393,7 @@ P_REPORT - /p_report.gif' border='0' alt='Известить модератора об этом сообщении' />]]> + /p_report.gif' border='0' alt='Report Post' />]]> @@ -398,17 +403,17 @@ P_WEBSITE - /p_www.gif' border='0' alt='Домашняя страница' />]]> + /p_www.gif' border='0' alt='Users Website' />]]> P_QUOTE - /p_quote.gif' border='0' alt='Ответить с цитированием данного сообщения' />]]> + /p_quote.gif' border='0' alt='Quote Post' />]]> P_MSG - /p_pm.gif' border='0' alt='Отправить личное сообщение' />]]> + /p_pm.gif' border='0' alt='PM' />]]> @@ -418,17 +423,17 @@ P_EMAIL - /p_email.gif' border='0' alt='Отправить письмо на e-mail' />]]> + /p_email.gif' border='0' alt='Email Poster' />]]> P_EDIT - /p_edit.gif' border='0' alt='Изменить сообщение' />]]> + /p_edit.gif' border='0' alt='Edit Post' />]]> P_DELETE - /p_delete.gif' border='0' alt='Удалить сообщение' />]]> + /p_delete.gif' border='0' alt='Delete Post' />]]> @@ -438,27 +443,27 @@ M_UNREAD - /f_norm.gif' border='0' alt='Непрочитанное сообщение' />]]> + /f_norm.gif' border='0' alt='Unread Msg' />]]> M_READ - /f_norm_no.gif' border='0' alt='Прочитанное сообщение' />]]> + /f_norm_no.gif' border='0' alt='Read Msg' />]]> CAMERA - /camera.gif' border='0' alt='Есть фото' />]]> + /camera.gif' border='0' alt='Photo' />]]> NO_PHOTO - /nophoto.gif' border='0' alt='Нет фото' />]]> + /nophoto.gif' border='0' alt='No Photo' />]]> F_STATS - /stats.gif' border='0' alt='Статистика форума' />]]> + /stats.gif' border='0' alt='Board Stats' />]]> @@ -473,117 +478,117 @@ F_ACTIVE - /user.gif' border='0' alt='Активные пользователи' />]]> + /user.gif' border='0' alt='Active Users' />]]> C_ON_RES - /br_new.gif' border='0' alt='Есть новые сообщения' />]]> + /br_new.gif' border='0' alt='New Posts' />]]> C_ON_CAT - /bc_new.gif' border='0' alt='Есть новые сообщения' />]]> + /bc_new.gif' border='0' alt='New Posts' />]]> C_ON - /bf_new.gif' border='0' alt='Есть новые сообщения' />]]> + /bf_new.gif' border='0' alt='New Posts' />]]> C_OFF_RES - /br_nonew.gif' border='0' alt='Нет новых сообщений' />]]> + /br_nonew.gif' border='0' alt='No New Posts' />]]> C_OFF_CAT - /bc_nonew.gif' border='0' alt='Нет новых сообщений' />]]> + /bc_nonew.gif' border='0' alt='No New Posts' />]]> C_OFF - /bf_nonew.gif' border='0' alt='Нет новых сообщений' />]]> + /bf_nonew.gif' border='0' alt='No New Posts' />]]> C_LOCKED - /bf_readonly.gif' border='0' alt='Форум только для чтения' />]]> + /bf_readonly.gif' border='0' alt='Read Only Forum' />]]> B_POLL_NN_DOT - /f_poll_no_dot.gif' border='0' alt='Опрос (нет новых голосов)*'>]]> + /f_poll_no_dot.gif' border='0' alt='No New Votes*'>]]> B_POLL_DOT - /f_poll_dot.gif' border='0' alt='Опрос (есть новые голоса)*'>]]> + /f_poll_dot.gif' border='0' alt='Poll*'>]]> B_NORM_DOT - /f_norm_no_dot.gif' border='0' alt='Открытая тема (нет новых сообщений)*'>]]> + /f_norm_no_dot.gif' border='0' alt='No New Posts*'>]]> B_HOT_NN_DOT - /f_hot_no_dot.gif' border='0' alt='Горячая тема (нет новых сообщений)*'>]]> + /f_hot_no_dot.gif' border='0' alt='No New Posts*'>]]> B_NEW_DOT - /f_norm_dot.gif' border='0' alt='Открытая тема (есть новые сообщения)*'>]]> + /f_norm_dot.gif' border='0' alt='No New Posts'>]]> B_HOT_DOT - /f_hot_dot.gif' border='0' alt='Горячая тема (есть новые сообщения)*'>]]> + /f_hot_dot.gif' border='0' alt='New Posts'>]]> B_POLL_NN - /f_poll_no.gif' border='0' alt='Опрос (нет новых голосов)' />]]> + /f_poll_no.gif' border='0' alt='No new votes' />]]> B_POLL - /f_poll.gif' border='0' alt='Опрос (есть новые голоса)' />]]> + /f_poll.gif' border='0' alt='Poll' />]]> B_PIN - /f_pinned.gif' border='0' alt='Важная тема' />]]> + /f_pinned.gif' border='0' alt='Pinned' />]]> B_NORM - /f_norm_no.gif' border='0' alt='Нет новых сообщений' />]]> + /f_norm_no.gif' border='0' alt='No New Posts' />]]> B_NEW - /f_norm.gif' border='0' alt='Есть новые сообщения' />]]> + /f_norm.gif' border='0' alt='New Posts' />]]> B_MOVED - /f_moved.gif' border='0' alt='Тема перемещена' />]]> + /f_moved.gif' border='0' alt='Moved' />]]> B_LOCKED - /f_closed.gif' border='0' alt='Тема закрыта' />]]> + /f_closed.gif' border='0' alt='Closed' />]]> B_HOT_NN - /f_hot_no.gif' border='0' alt='Горячая тема (нет новых сообщений)' />]]> + /f_hot_no.gif' border='0' alt='No new' />]]> B_HOT - /f_hot.gif' border='0' alt='Горячая тема (есть новые сообщения)' />]]> + /f_hot.gif' border='0' alt='Hot topic' />]]> @@ -593,27 +598,27 @@ A_POLL - /t_poll.gif' border='0' alt='Создать опрос' />]]> + /t_poll.gif' border='0' alt='Start Poll' />]]> A_REPLY - /t_reply.gif' border='0' alt='Ответить в эту тему' />]]> + /t_reply.gif' border='0' alt='Reply to this topic' />]]> A_POST - /t_new.gif' border='0' alt='Открыть новую тему' />]]> + /t_new.gif' border='0' alt='Start new topic' />]]> A_MOVED_B - /t_moved.gif' border='0' alt='Тема перемещена'>]]> + /t_moved.gif' border='0' alt='Moved Topic'>]]> A_POLLONLY_B - /t_closed.gif' border='0' alt='Только опрос (ответы в тему запрещены)' />]]> + /t_closed.gif' border='0' alt='Poll Only' />]]> @@ -628,27 +633,27 @@ A_LOCKED_B - /t_closed.gif' border='0' alt='Тема закрыта' />]]> + /t_closed.gif' border='0' alt='Closed Topic' />]]> A_APOLL - /t_addpoll.gif' border='0' alt='Добавить опрос' />]]> + /t_addpoll.gif' border='0' alt='Add Poll' />]]> F_CALEN - /calen.gif' border='0' alt='Календарь' />]]> + /calen.gif' border='0' alt='calendar' />]]> E_PLUS - /exp_plus.gif' border='0' alt='Развернуть' />]]> + /exp_plus.gif' border='0' alt='Expand' />]]> E_MINUS - /exp_minus.gif' border='0' alt='Свернуть' />]]> + /exp_minus.gif' border='0' alt='Collapse' />]]> @@ -658,22 +663,22 @@ T_QREPLY - /t_qr.gif' border='0' alt='Быстрый ответ' />]]> + /t_qr.gif' border='0' alt='Fast Reply' />]]> T_OPTS - /t_options.gif' border='0' alt='Опции темы' />]]> + /t_options.gif' border='0' alt='Topic Options' />]]> CAL_NEWEVENT - /cal_newevent.gif' border='0' alt='Добавить новое событие' />]]> + /cal_newevent.gif' border='0' alt='Add New Event' />]]> F_RULES - /forum_rules.gif' border='0' alt='Правила этого форума' />]]> + /forum_rules.gif' border='0' alt='Forum Rules' />]]> @@ -718,17 +723,17 @@ PB_USER_ONLINE - /p_online.gif' border='0' alt='Пользователь в онлайне!' />]]> + /p_online.gif' border='0' alt='User is online!' />]]> PB_USER_OFFLINE - /p_offline.gif' border='0' alt='Пользователь в офлайне' />]]> + /p_offline.gif' border='0' alt='User is offline' />]]> ATTACH_ICON - /attachicon.gif' border='0' alt='Тема имеет прикрепленные файлы' />]]> + /attachicon.gif' border='0' alt='Topic has attachments' />]]> @@ -753,22 +758,22 @@ A_APOLL - /t_addpoll.gif' border='0' alt='Добавить опрос' />]]> + /t_addpoll.gif' border='0' alt='Add Poll' />]]> F_CALEN - /calen.gif' border='0' alt='Календарь' />]]> + /calen.gif' border='0' alt='calendar' />]]> E_PLUS - /exp_plus.gif' border='0' alt='Развернуть' />]]> + /exp_plus.gif' border='0' alt='Expand' />]]> E_MINUS - /exp_minus.gif' border='0' alt='Свернуть' />]]> + /exp_minus.gif' border='0' alt='Collapse' />]]> @@ -778,7 +783,7 @@ P_UP - /p_up.gif' border='0' alt='Вернуться в начало страницы' />]]> + /p_up.gif' border='0' alt='Go to the top of the page' />]]> @@ -788,7 +793,7 @@ P_CARD - /p_card.gif' border='0' alt='Карточка пользователя' />]]> + /p_card.gif' border='0' alt='Profile Card' />]]> @@ -798,7 +803,7 @@ PRO_ITEM - /profile_item.gif' border='0' alt='Опции профиля' />]]> + /profile_item.gif' border='0' alt='Profile Item' />]]> @@ -818,7 +823,7 @@ PRO_CONTACT - /icon_msg_nonew.gif' border='0' alt='Контакт' />]]> + /icon_msg_nonew.gif' border='0' alt='Contact' />]]> @@ -833,7 +838,7 @@ CAL_GOTO - /cal_goto.gif' border='0' alt='Перейти к месяцу' />]]> + /cal_goto.gif' border='0' alt='Goto Month' />]]> diff --git a/upload/install/installfiles/ipb_macro_with_width_height.xml b/upload/install/installfiles/ipb_macro_with_width_height.xml deleted file mode 100644 index 7eb26d6e..00000000 --- a/upload/install/installfiles/ipb_macro_with_width_height.xml +++ /dev/null @@ -1,840 +0,0 @@ - - - - - A_LOCKED_B - /t_closed.gif' width='89' height='27' border='0' alt='Тема закрыта' />]]> - - - - A_MOVED_B - /t_moved.gif' width='110' height='27' border='0' alt='Тема перемещена'>]]> - - - - A_POLLONLY_B - /t_closed.gif' width='110' height='27' border='0' alt='Только опрос (ответы в теме запрещены)' />]]> - - - - A_POST - /t_new.gif' width='117' height='27' border='0' alt='Открыть тему' />]]> - - - - A_REPLY - /t_reply.gif' width='89' height='27' border='0' alt='Добавить ответ в эту тему' />]]> - - - - A_POLL - /t_poll.gif' width='124' height='27' border='0' alt='Открыть тему (с опросом)' />]]> - - - - A_STAR - /pip.gif' width='11' height='10' border='0' alt='*' />]]> - - - - B_HOT - /f_hot.gif' width='19' height='15' border='0' alt='Горячая тема (есть новые ответы)' />]]> - - - - B_HOT_NN - /f_hot_no.gif' width='19' height='15' border='0' alt='Горячая тема (нет новых ответов)' />]]> - - - - B_LOCKED - /f_closed.gif' width='14' height='14' border='0' alt='Закрытая тема' />]]> - - - - B_MOVED - /f_moved.gif' width='14' height='14' border='0' alt='Тема перемещена' />]]> - - - - B_NEW - /f_norm.gif' width='19' height='15' border='0' alt='Открытая тема (есть новые ответы)' />]]> - - - - B_NORM - /f_norm_no.gif' width='19' height='15' border='0' alt='Открытая тема (нет новых ответов)' />]]> - - - - B_PIN - /f_pinned.gif' width='14' height='14' border='0' alt='Важная тема' />]]> - - - - B_POLL - /f_poll.gif' width='19' height='15' border='0' alt='Опрос (есть новые голоса)' />]]> - - - - B_POLL_NN - /f_poll_no.gif' width='19' height='15' border='0' alt='Опрос (нет новых голосов)' />]]> - - - - B_HOT_DOT - /f_hot_dot.gif' width='19' height='15' border='0' alt='Горячая тема (есть новые ответы)*'>]]> - - - - B_NEW_DOT - /f_norm_dot.gif' width='19' height='15' border='0' alt='Открытая тема (есть новые ответы)*'>]]> - - - - B_HOT_NN_DOT - /f_hot_no_dot.gif' width='19' height='15' border='0' alt='Горячая тема (нет новых ответов)*'>]]> - - - - B_NORM_DOT - /f_norm_no_dot.gif' width='19' height='15' border='0' alt='Открытая тема (нет новых ответов)*'>]]> - - - - B_POLL_DOT - /f_poll_dot.gif' width='19' height='15' border='0' alt='Опрос (есть новые голоса)*'>]]> - - - - B_POLL_NN_DOT - /f_poll_no_dot.gif' width='19' height='15' border='0' alt='Опрос (нет новых голосов)*'>]]> - - - - C_LOCKED - /bf_readonly.gif' width='27' height='27' border='0' alt='Форум только для чтения' />]]> - - - - C_OFF - /bf_nonew.gif' width='27' height='27' border='0' alt='Нет новых сообщений' />]]> - - - - C_OFF_CAT - /bc_nonew.gif' width='27' height='27' border='0' alt='Нет новых сообщений' />]]> - - - - C_OFF_RES - /br_nonew.gif' width='27' height='27' border='0' alt='Нет новых сообщений' />]]> - - - - C_ON - /bf_new.gif' width='27' height='27' border='0' alt='Есть новые сообщения' />]]> - - - - C_ON_CAT - /bc_new.gif' width='27' height='27' border='0' alt='Есть новые сообщения' />]]> - - - - C_ON_RES - /br_new.gif' width='27' height='27' border='0' alt='Есть новые сообщения' />]]> - - - - F_ACTIVE - /user.gif' width='27' height='27' border='0' alt='Активные пользователи' />]]> - - - - F_NAV_SEP -  ]]> - - - - F_NAV - /nav.gif' width='10' height='10' border='0' alt='>' />]]> - - - - F_STATS - /stats.gif' width='27' height='27' border='0' alt='Статистика форума' />]]> - - - - NO_PHOTO - /nophoto.gif' width='79' height='79' border='0' alt='Нет фото' />]]> - - - - CAMERA - /camera.gif' width='30' height='21' border='0' alt='Есть фото' />]]> - - - - M_READ - /f_norm_no.gif' width='19' height='15' border='0' alt='Прочитанное сообщение' />]]> - - - - M_UNREAD - /f_norm.gif' width='19' height='15' border='0' alt='Непрочитанное сообщение' />]]> - - - - P_AOL - /p_aim.gif' width='35' height='21' border='0' alt='AOL' />]]> - - - - P_DELETE - /p_delete.gif' width='80' height='21' border='0' alt='Удалить сообщение' />]]> - - - - P_EDIT - /p_edit.gif' width='89' height='21' border='0' alt='Изменить сообщение' />]]> - - - - P_EMAIL - /p_email.gif' width='68' height='21' border='0' alt='Отправить письмо на e-mail' />]]> - - - - P_ICQ - /p_icq.gif' width='35' height='21' border='0' alt='ICQ' />]]> - - - - P_MSG - /p_pm.gif' width='57' height='21' border='0' alt='Отправить личное сообщение' />]]> - - - - P_QUOTE - /p_quote.gif' width='85' height='21' border='0' alt='Ответить с цитированием данного сообщения' />]]> - - - - P_WEBSITE - /p_www.gif' width='61' height='21' border='0' alt='Домашняя страница' />]]> - - - - P_YIM - /p_yim.gif' width='35' height='21' border='0' alt='Yahoo' />]]> - - - - P_REPORT - /p_report.gif' width='72' height='21' border='0' alt='Известить модератора об этом сообщении' />]]> - - - - P_MSN - /p_msn.gif' width='35' height='21' border='0' alt='MSN' />]]> - - - - CAT_IMG - /nav_m.gif' border='0' alt='>' width='8' height='8' />]]> - - - - NEW_POST - /newpost.gif' width='8' height='8' border='0' alt='Перейти к последнему непрочитанному сообщению' hspace=2>]]> - - - - LAST_POST - /lastpost.gif' width='10' height='10' border='0' alt='Последнее сообщение' />]]> - - - - BR_REDIRECT - /br_redirect.gif' width='27' height='27' border='0' alt='Переадресация' />]]> - - - - INTEGRITY_MSGR - /p_im.gif' width='30' height='21' border='0' alt='Integrity Messenger IM' />]]> - - - - T_QREPLY - /t_qr.gif' width='120' height='27' border='0' alt='Быстрый ответ в тему' />]]> - - - - T_OPTS - /t_options.gif' width='89' height='27' border='0' alt='Опции темы' />]]> - - - - CAL_NEWEVENT - /cal_newevent.gif' width='144' height='27' border='0' alt='Добавить новое событие' />]]> - - - - F_RULES - /forum_rules.gif' width='10' height='10' border='0' alt='Правила этого форума' />]]> - - - - WARN_0 - /warn0.gif' width='50' height='10' border='0' alt='-----' />]]> - - - - WARN_1 - /warn1.gif' width='50' height='10' border='0' alt='X----' />]]> - - - - WARN_2 - /warn2.gif' width='50' height='10' border='0' alt='XX---' />]]> - - - - WARN_3 - /warn3.gif' width='50' height='10' border='0' alt='XXX--' />]]> - - - - WARN_4 - /warn4.gif' width='50' height='10' border='0' alt='XXXX-' />]]> - - - - WARN_5 - /warn5.gif' width='50' height='10' border='0' alt='XXXXX' />]]> - - - - WARN_ADD - /warn_add.gif' width='10' height='10' border='0' alt='+' />]]> - - - - WARN_MINUS - /warn_minus.gif' width='10' height='10' border='0' alt='-' />]]> - - - - PB_USER_ONLINE - /p_online.gif' width='30' height='21' border='0' alt='Пользователь в онлайне!' />]]> - - - - PB_USER_OFFLINE - /p_offline.gif' width='35' height='21' border='0' alt='Пользователя в офлайне' />]]> - - - - ATTACH_ICON - /attachicon.gif' width='8' height='10' border='0' alt='Тема имеет прикрепленные файлы' />]]> - - - - MSG_FOLDER - /msg_folder.gif' width='19' height='15' border='0' alt='-' />]]> - - - - ITEM_START - /nav_m_dark.gif' width='8' height='8' border='0' alt='.' />]]> - - - - ADDRESS_CARD - /addresscard.gif' width='87' height='21' border='0' alt='Карточка пользователя' />]]> - - - - INTEGRITY_MSGR - /p_im.gif' width='30' height='21' border='0' alt='Integrity Messenger IM' />]]> - - - - BR_REDIRECT - /br_redirect.gif' width='27' height='27' border='0' alt='Переадресация' />]]> - - - - LAST_POST - /lastpost.gif' width='10' height='10' border='0' alt='Последнее сообщение' />]]> - - - - NEW_POST - /newpost.gif' width='8' height='8' border='0' alt='Перейти к последнему непрочитанному сообщению' hspace=2>]]> - - - - CAT_IMG - /nav_m.gif' width='8' height='8' border='0' alt='>' />]]> - - - - P_MSN - /p_msn.gif' width='35' height='21' border='0' alt='MSN' />]]> - - - - P_REPORT - /p_report.gif' width='72' height='21' border='0' alt='Известить модератора об этом сообщении' />]]> - - - - P_YIM - /p_yim.gif' width='35' height='21' border='0' alt='Yahoo' />]]> - - - - P_WEBSITE - /p_www.gif' width='61' height='21' border='0' alt='Домашняя страница' />]]> - - - - P_QUOTE - /p_quote.gif' width='85' height='21' border='0' alt='Ответить с цитированием данного сообщения' />]]> - - - - P_MSG - /p_pm.gif' width='57' height='21' border='0' alt='Отправить личное сообщение' />]]> - - - - P_ICQ - /p_icq.gif' width='35' height='21' border='0' alt='ICQ' />]]> - - - - P_EMAIL - /p_email.gif' width='68' height='21' border='0' alt='Отправить письмо на e-mail' />]]> - - - - P_EDIT - /p_edit.gif' width='89' height='21' border='0' alt='Изменить сообщение' />]]> - - - - P_DELETE - /p_delete.gif' width='80' height='21' border='0' alt='Удалить сообщение' />]]> - - - - P_AOL - /p_aim.gif' width='35' height='21' border='0' alt='AOL' />]]> - - - - M_UNREAD - /f_norm.gif' width='19' height='15' border='0' alt='Непрочитанное сообщение' />]]> - - - - M_READ - /f_norm_no.gif' width='19' height='15' border='0' alt='Прочитанное сообщение' />]]> - - - - CAMERA - /camera.gif' width='30' height='21' border='0' alt='Есть фото' />]]> - - - - NO_PHOTO - /nophoto.gif' width='79' height='79' border='0' alt='Нет фото' />]]> - - - - F_STATS - /stats.gif' width='27' height='27' border='0' alt='Статистика форума' />]]> - - - - F_NAV - /nav.gif' width='10' height='10' border='0' alt='>' />]]> - - - - F_NAV_SEP -  ]]> - - - - F_ACTIVE - /user.gif' width='27' height='27' border='0' alt='Активные пользователи' />]]> - - - - C_ON_RES - /br_new.gif' width='27' height='27' border='0' alt='Есть новые сообщения' />]]> - - - - C_ON_CAT - /bc_new.gif' width='27' height='27' border='0' alt='Есть новые сообщения' />]]> - - - - C_ON - /bf_new.gif' width='27' height='27' border='0' alt='Есть новые сообщения' />]]> - - - - C_OFF_RES - /br_nonew.gif' width='27' height='27' border='0' alt='Нет новых сообщений' />]]> - - - - C_OFF_CAT - /bc_nonew.gif' width='27' height='27' border='0' alt='Нет новых сообщений' />]]> - - - - C_OFF - /bf_nonew.gif' width='27' height='27' border='0' alt='Нет новых сообщений' />]]> - - - - C_LOCKED - /bf_readonly.gif' width='27' height='27' border='0' alt='Форум только для чтения' />]]> - - - - B_POLL_NN_DOT - /f_poll_no_dot.gif' width='19' height='15' border='0' alt='Опрос (нет новых голосов)*'>]]> - - - - B_POLL_DOT - /f_poll_dot.gif' width='19' height='15' border='0' alt='Опрос (есть новые голоса)*'>]]> - - - - B_NORM_DOT - /f_norm_no_dot.gif' width='19' height='15' border='0' alt='Открытая тема (нет новых сообщений)*'>]]> - - - - B_HOT_NN_DOT - /f_hot_no_dot.gif' width='19' height='15' border='0' alt='Горячая тема (нет новых сообщений)*'>]]> - - - - B_NEW_DOT - /f_norm_dot.gif' width='19' height='15' border='0' alt='Открытая тема (есть новые сообщения)*'>]]> - - - - B_HOT_DOT - /f_hot_dot.gif' width='19' height='15' border='0' alt='Горячая тема (есть новые сообщения)*'>]]> - - - - B_POLL_NN - /f_poll_no.gif' width='19' height='15' border='0' alt='Опрос (нет новых голосов)' />]]> - - - - B_POLL - /f_poll.gif' width='19' height='15' border='0' alt='Опрос (есть новые голоса)' />]]> - - - - B_PIN - /f_pinned.gif' width='14' height='14' border='0' alt='Важная тема' />]]> - - - - B_NORM - /f_norm_no.gif' width='19' height='15' border='0' alt='Нет новых сообщений' />]]> - - - - B_NEW - /f_norm.gif' width='19' height='15' border='0' alt='Есть новые сообщения' />]]> - - - - B_MOVED - /f_moved.gif' width='14' height='14' border='0' alt='Тема перемещена' />]]> - - - - B_LOCKED - /f_closed.gif' width='14' height='14' border='0' alt='Тема закрыта' />]]> - - - - B_HOT_NN - /f_hot_no.gif' width='19' height='15' border='0' alt='Горячая тема (нет новых сообщений)' />]]> - - - - B_HOT - /f_hot.gif' width='19' height='15' border='0' alt='Горячая тема (есть новые сообщения)' />]]> - - - - A_STAR - /pip.gif' width='11' height='10' border='0' alt='*' />]]> - - - - A_POLL - /t_poll.gif' width='124' height='27' border='0' alt='Создать опрос' />]]> - - - - A_REPLY - /t_reply.gif' width='89' height='27' border='0' alt='Ответить в эту тему' />]]> - - - - A_POST - /t_new.gif' width='117' height='27' border='0' alt='Открыть новую тему' />]]> - - - - A_MOVED_B - /t_moved.gif' width='110' height='27' border='0' alt='Тема перемещена'>]]> - - - - A_POLLONLY_B - /t_closed.gif' width='89' height='27' border='0' alt='Только опрос (ответы в тему запрещены)' />]]> - - - - ACTIVE_LIST_SEP - , - - - - BC_QUEUED_POSTS - /bc_queued.gif' width='10' height='10' alt='*' border='0' />]]> - - - - A_LOCKED_B - /t_closed.gif' width='89' height='27' border='0' alt='Тема закрыта' />]]> - - - - A_APOLL - /t_addpoll.gif' width='132' height='27' border='0' alt='Добавить опрос' />]]> - - - - F_CALEN - /calen.gif' width='27' height='27' border='0' alt='Календарь' />]]> - - - - E_PLUS - /exp_plus.gif' width='10' height='10' border='0' alt='Развернуть' />]]> - - - - E_MINUS - /exp_minus.gif' width='10' height='10' border='0' alt='Свернуть' />]]> - - - - test - test - - - - T_QREPLY - /t_qr.gif' width='120' height='27' border='0' alt='Быстрый ответ' />]]> - - - - T_OPTS - /t_options.gif' width='89' height='27' border='0' alt='Опции темы' />]]> - - - - CAL_NEWEVENT - /cal_newevent.gif' width='144' height='27' border='0' alt='Добавить новое событие' />]]> - - - - F_RULES - /forum_rules.gif' width='10' height='10' border='0' alt='Правила этого форума' />]]> - - - - WARN_0 - /warn0.gif' width='50' height='10' border='0' alt='-----' />]]> - - - - WARN_1 - /warn1.gif' width='50' height='10' border='0' alt='X----' />]]> - - - - WARN_2 - /warn2.gif' width='50' height='10' border='0' alt='XX---' />]]> - - - - WARN_3 - /warn3.gif' width='50' height='10' border='0' alt='XXX--' />]]> - - - - WARN_4 - /warn4.gif' width='50' height='10' border='0' alt='XXXX-' />]]> - - - - WARN_5 - /warn5.gif' width='50' height='10' border='0' alt='XXXXX' />]]> - - - - WARN_ADD - /warn_add.gif' width='10' height='10' border='0' alt='+' />]]> - - - - WARN_MINUS - /warn_minus.gif' width='10' height='10' border='0' alt='-' />]]> - - - - PB_USER_ONLINE - /p_online.gif' width='30' height='21' border='0' alt='Пользователь в онлайне!' />]]> - - - - PB_USER_OFFLINE - /p_offline.gif' width='35' height='21' border='0' alt='Пользователь в офлайне' />]]> - - - - ATTACH_ICON - /attachicon.gif' width='8' height='10' border='0' alt='Тема имеет прикрепленные файлы' />]]> - - - - MSG_FOLDER - /msg_folder.gif' width='19' height='15' border='0' alt='-' />]]> - - - - ITEM_START - /nav_m_dark.gif' width='8' height='8' border='0' alt='.' />]]> - - - - ACTIVE_LIST_SEP - , - - - - BC_QUEUED_POSTS - /bc_queued.gif' width='10' height='10' alt='*' border='0' />]]> - - - - A_APOLL - /t_addpoll.gif' width='132' height='27' border='0' alt='Добавить опрос' />]]> - - - - F_CALEN - /calen.gif' width='27' height='27' border='0' alt='Календарь' />]]> - - - - E_PLUS - /exp_plus.gif' width='10' height='10' border='0' alt='Развернуть' />]]> - - - - E_MINUS - /exp_minus.gif' width='10' height='10' border='0' alt='Свернуть' />]]> - - - - test - test - - - - P_UP - /p_up.gif' width='24' height='21' border='0' alt='Вернуться в начало страницы' />]]> - - - - POST_SNAPBACK - /post_snapback.gif' width='10' height='10' alt='*' border='0' />]]> - - - - P_CARD - /p_card.gif' width='87' height='21' border='0' alt='Карточка пользователя' />]]> - - - - PRO_AIM - /profile_aim.gif' width='16' height='14' border='0' alt='AIM' />]]> - - - - PRO_ITEM - /profile_item.gif' width='15' height='21' border='0' alt='Опции профиля' />]]> - - - - PRO_MSN - /profile_msn.gif' width='16' height='15' border='0' alt='MSN' />]]> - - - - PRO_ICQ - /profile_icq.gif' width='16' height='14' border='0' alt='ICQ' />]]> - - - - PRO_YIM - /profile_yahoo.gif' width='16' height='16' border='0' alt='Yahoo' />]]> - - - - PRO_CONTACT - /icon_msg_nonew.gif' width='22' height='21' border='0' alt='Контакт' />]]> - - - - BAR_LEFT - /bar_left.gif' width='4' height='11' border='0' alt='*' />]]> - - - - BAR_RIGHT - /bar_right.gif' width='4' height='11' border='0' alt='*' />]]> - - - - CAL_GOTO - /cal_goto.gif' width='28' height='23' border='0' alt='Перейти к месяцу' />]]> - - - - \ No newline at end of file diff --git a/upload/install/installfiles/ipb_settings.xml b/upload/install/installfiles/ipb_settings.xml index b48c3b24..2a3746b0 100644 --- a/upload/install/installfiles/ipb_settings.xml +++ b/upload/install/installfiles/ipb_settings.xml @@ -1,52 +1,23 @@ - + - 1 - converge - Установка Converge - Converge - единая система авторизации для всех продуктов компании. Это позволяет иметь одну авторизацию для всех IPS продуктов. + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. 0 - 16 - - отображаемые, независимые от их имени пользователя для авторизации на форуме. Это ТРЕБУЕТСЯ, когда используется не внутренние методы авторизации.]]> - 4 + 174 + Show link in header to guidelines? + + 17 yes_no - auth_allow_dnames + gl_show - 1 - - - 1 - 1 - Установка отображаемого имени - 0 - - 1 - converge - - - - 1 - cookies - Настройка Cookies - Группа опций по настройке cookies. Следует изменять при нестабильной работе авторизации на форуме. - 0 - - - - 19 - Cookie домен - .your-domain.ru для глобальных cookies.]]> - 5 - input - cookie_domain - - + 0 1 @@ -55,228 +26,119 @@ 0 1 - cookies + boardguidelines + 0 - 1 - email - Настройки E-mail - Позволяют настраивать служебные E-mail адреса форума, выбирать метод для отправки почты (PHP mail(), SMTP) с форума. - 0 - - - - 48 - E-mail адрес для всей входящей почты - Этот E-mail адрес будет использоваться для приема почты к администрации форума. - 9 + 175 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 17 input - email_in + gl_link 1 - 1 - E-mail адреса + 2 + 0 1 - email + boardguidelines + 0 - 1 - httpapi - IPB HTTP-API Настройки - Настройки для управления модулями HTTP-API - 0 - - - - 1 - ipbreg - IPB Лицензия - Позволяет редактировать настройки лицензии. - 0 - - - - 109 - IPB Регистрационный ключ - НЕ УДАЛЯЙТЕ И НЕ ИЗМЕНЯЙТЕ ЭТОТ КЛЮЧ, ПОКА ВЫ НА 100% НЕ УВЕРЕНЫ В ТОМ, ЧТО ВЫ ДЕЛАЕТЕ! - 15 + 176 + Title to use in header? + + 17 input - ipb_reg_number + gl_title 1 - 1 + 3 0 1 - ipbreg + boardguidelines + 0 - 1 - ipbportal - IPB Портал - Эти настройки позволят Вам включить/отключить и настроить IPB Портал. - 0 - - - - 112 - Включить IPB портал? - - 16 - yes_no - csite_on + 177 + If not using external link; guidelines/rules text + HTML Enabled + 17 + textarea + gl_guidelines - 1 + 1 - 1 + 4 0 - 1 - ipbportal + 0 + boardguidelines + 0 - 1 - securityandprivacy - Настройки Безопасности - Опции, позволяющие Вам контролировать уровень безопасности Вашего форума. - 0 - - - - 142 - Включить защиту от флуда (массовых регистраций и т.д.)? - Эта опция требует от пользователей вводить случайный защитный код при регистрации, смене e-mail адреса и т.д, не допуская, например, массовых регистраций ботами. - 23 - dropdown - bot_antispam + 238 + + HTML ENABLED]]> + 17 + textarea + reg_rules - gif - 0=Нет -gif=Стандартный режим (не требует специальных средств) -gd=Расширенный (требуется GD библиотека) + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + 1 - 1 - + 5 + 1 - s_reg_antispam - 1 - securityandprivacy - - - - 1 - trashcansetup - Настройки Корзины - Корзина - специальный форум, в который перемещаются темы после удаления, тем самым оставляя возможность восстановить тему при ее случайном удалении. - 0 - - - - 208 - Включить корзину? - - 26 - yes_no - forum_trash_can_enable - - 1 - - - 1 - 1 - - 0 - 1 - trashcansetup - - - - 1 - warnsetup - Система Предупреждений - Настройки системы предупреждений пользователей, администрацией форума. - 0 - - - - 237 - Включить систему предупреждений? - - 28 - yes_no - warn_on - - 1 - - - 1 - 1 - - 0 - - 1 - warnsetup - - - - 1 - searchenginespiders - Поисковые боты - Группа опций, отвечающих за настройку системы слежения за поисковыми ботами. Позволяет добавлять новых ботов, включать и отключать ведение журнала посещений ботов. - 0 - - - - 131 - Включить слежение за поисковыми ботами на форуме? - - 21 - yes_no - spider_sense - - 1 - - - 1 - 1 - - 0 - - 1 - searchenginespiders + 0 + boardguidelines + 0 1 boardoffline - Включение / Выключение форума - Группа опций для включения/выключения форума. Если форум находится в выключенном состоянии, то доступ к нему будут иметь только администраторы. Полезно при проведении технических работ на форуме. + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. 0 - 6 - Выключить форум? - - 2 + 163 + Turn the board offline? + + 15 yes_no board_offline @@ -290,26 +152,48 @@ gd= 1 boardoffline + 0 + + + + 164 + The offline message to display + + 15 + textarea + offline_msg + + + + + 1 + 2 + + 0 + + 0 + boardoffline + 0 1 - newssetup - Настройка Новостей форума - Позволяет выбрать новостной раздел форума, откуда будут экспортироваться новости, как самим форумом, так и ssi.php. + calendar + + This section will allow you to set up the board calendar and its related options. 0 122 - Из какого форума экспортировать новости? - - 17 - dropdown - news_forum_id + Show birthdays on the main calendar view? + + 9 + yes_no + show_bday_calendar - - #show_forums# + 1 + 1 1 @@ -317,22 +201,313 @@ gd= 0 1 - newssetup + calendar + 0 + + + + 123 + + + 9 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 124 + Auto hide when no birthdays to show? + + 9 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 125 + Show forthcoming calendar events? + + 9 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 126 + Auto hide when no events to show? + + 9 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 127 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 9 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 128 + + This applies to view calendar / post event. + 9 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 129 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 9 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + 340 + + + 18 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + 0 + + + + 343 + Prohibit Display Names from selecting Log In names + + 18 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + 0 + + + + 184 + Log in with user name or email address? + Which identifiable piece of information do you wish to require your members to use when logging in? + 18 + dropdown + converge_login_method + + username + username=User Name +email=Email Address + + 1 + 5 + + 0 + + 1 + converge + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + 116 + Cookie Domain + .your-domain.com for global cookie]]> + 7 + input + cookie_domain + + + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 117 + Cookie Name Prefix + Allows multiple boards on one host. + 7 + input + cookie_id + + + + + 1 + 2 + + 0 + + 1 + cookies + 0 + + + + 118 + Cookie Path + Relative path from domain to root IBF dir + 7 + input + cookie_path + + + + + 1 + 3 + + 0 + + 1 + cookies + 0 1 coppa - Установка COPPA - COPPA. В России не актуально!]]> - 1 + COPPA Set-up + COPPA.]]> + 0 - 22 - Использовать регистрационную систему COPPA? - COPPA на вашем форуме, при регистрации детей до 13 лет будет требоваться письменное разрешение родителей. Не актуально для России.]]> - 6 + 119 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 8 yes_no use_coppa @@ -346,128 +521,780 @@ gd= 1 coppa + 0 - 1 - searchsetup - Поисковая Система форума - - 0 - - - - 138 - Какой тип поиска использовать? -

    ]]>
    - 22 - dropdown - search_sql_method + 120 + Fax number to receive COPPA forms + + 8 + input + coppa_fax - man - ftext=Полнотекстовый -man=Обычный - ipsclass->admin->get_mysql_version(); - if ( $this->ipsclass->mysql_version < 32323 ) - { - $full_text = "ПОЛНОТЕКСТОВЫЙ ПОИСК НЕДОСТУПЕН НА ВАШЕМ СЕРВЕРЕ."; - } - else - { - $full_text = "Полнотекстовый поиск доступен"; - } - - if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) - { - $index = "ИНДЕКСЫ ПОЛНОТЕКСТОВОГО ПОИСКА НЕ НАЙДЕНЫ: Build indexes now!"; - } - else - { - $index = "Индексы полнотекстового поиска найдены"; - } - - $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); - $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); -}]]> + + + 1 - 1 + 2 0 1 - searchsetup + coppa + 0 +
    + + + 121 + Mail address to receive COPPA forms + + 8 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 1 - ipbcopyright - IPB Удаление копирайта - Этот блок позволяет ввести ключ активации услуги удаления копирайта. - 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 - 107 - Ключ удаления копирайта IPB - Ваш ключ для удаления копирайта IPB, полученный от IPS. + 24 + Allow custom profile field info be used in TopicView? + + 2 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 22 + Cache calendar and birthdays? + + 2 + yes_no + cache_calendar + + 1 + + + 1 + 2 + + 0 + 0 + 1 + cpusaving + 0 + + + + 20 + + + 2 input - ipb_copy_number + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 181 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 2 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 316 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 2 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 25 + Mark topics a user has posted when displaying a forum? + + 2 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 26 + + This save 1 query per forum view + 2 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + (This save 1 query per topic view) + 2 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 19 + Show Active Users + + 2 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 29 + Allow users (where allowed) to use search? + + 2 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 23 + Show Board Totals? + Show the board totals at the footer of the board index page. + 2 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 28 + Server Load Limit + Can be left blank for no limit]]> + 2 + input + load_limit + + + + + 1 + 10 + + 0 + 0 + 1 + cpusaving + 0 + + + + 32 + Print HTTP no-cache headers? + Note: The setting 'Print HTTP Headers?' found under General Configuration needs to be enabled for this setting to have any effect.]]> + 2 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 30 + + Leave blank to return full post with proper formatting]]> + 2 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 2 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + 34 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 3 + dropdown + time_offset + + 0 + + $words ) + { + if (preg_match("/^time_(\\S+)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 35 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 3 + input + time_adjust + + 0 + + ipsclass->get_date(time(), 'LONG',1); +$r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ); +}]]> + 1 + 2 + + 1 + 0 + 1 + date + 0 + + + + 36 + Short time format + PHP Date]]> + 3 + input + clock_short + + jS F Y - h:i A + + + 1 + 3 + + 0 + 0 + 1 + date + 0 + + + + 37 + Join date time format + PHP Date]]> + 3 + input + clock_joined + + j-F y + + + 1 + 4 + + 0 + 0 + 1 + date + 0 + + + + 38 + Long time format + PHP Date]]> + 3 + input + clock_long + + M j Y, h:i A + + + 1 + 5 + + 0 + 0 + 1 + date + 0 + + + + 39 + Use relative dates? + + 3 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 40 + Relative time format + + 3 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 333 + DST Auto Detection + + 3 + yes_no + time_dst_auto_correction + + 1 + + + 1 + 8 + DST Correction + 1 + + 1 + date + 0 + + + + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + 135 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 12 + input + email_in 1 1 + Email Addresses + 0 + + 1 + email + 0 + + + + 136 + Board outgoing email address + This is the email address that all mail appears to come from. + 12 + input + email_out + + + + + 1 + 2 + + 1 + + 1 + email + 0 + + + + 137 + Mail Delivery Method + + 12 + dropdown + mail_method + + mail + mail=PHP Mail() +smtp=SMTP + + 1 + 3 0 1 - ipbcopyright + email + 0 - 1 - topicspostsandpolls - Темы, Сообщения и Опросы - Группа опций для настройки параметров отображения тем, а так же ограничений при отправке сообщений, опросов. - 0 - - - - 167 - Количество тем, отображаемых в списке тем форума - - 25 + 138 + Over-ride SMTP Host? + + 12 input - display_max_topics + smtp_host - 30 + localhost 1 - 1 - Просмотр тем + 4 + SMTP Set-up 0 - 0 + 1 - topicspostsandpolls + email + 0 + + + + 139 + Over-ride SMTP Port? + Default is 25 + 12 + input + smtp_port + + 25 + + + 1 + 5 + + 0 + + 1 + email + 0 + + + + 187 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 12 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 140 + SMTP UserName + + 12 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 141 + SMTP Password + + 12 + input + smtp_pass + + + + + 1 + 7 + + 1 + + 1 + email + 0 + + + + 337 + PHP Mail Extra Options + + 12 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 1 general - Глобальные Настройки форума - Это основные настройки форума, такие как название форума, сайта, пути форума и т.д. + General Configuration + These settings control the basics of the board such as URLs and paths. 0 - 57 - Название вашего форума - - 10 + 4 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 1 input board_name @@ -476,26 +1303,396 @@ man= 1 1 - Названия и адреса + 0 0 1 general + 0 + + + + 6 + Website Name + + 1 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 7 + Website Address + + 1 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 9 + Upload URL + + 1 + input + upload_url + + + + + 1 + 5 + Other URLs and Paths + 0 + 0 + 1 + general + 0 + + + + 11 + + This is a path, not a URL. + 1 + input + upload_dir + + + upload_dir + + 1 + 7 + + 0 + 0 + 1 + general + 0 + + + + 265 + Caching PATH + This can be left blank +
    This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
    + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
    + + + 338 + Document character set + Enter the document character set for all HTML pages. + 1 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 264 + Image URL + This can be left blank +
    This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
    + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
    + + + 12 + Print HTTP Headers? + + 1 + yes_no + print_headers + + 0 + + + 1 + 9 + + 1 + 0 + 1 + general + 0 + + + + 14 + Type of auto-redirect + + 1 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection + 0 + 0 + 1 + general + 0 + + + + 183 + + + 1 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 + + 1 + general + 0 + + + + 15 + Debug level + This controls the debug information shown at the footer of your board. + 1 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 13 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 1 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 16 + Enable SQL Debug Mode + + 1 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 17 + Use Safe Mode Skins? + + 1 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 + + + + 18 + Number Formatting + (EG: USA & UK use a comma)]]> + 1 + dropdown + number_format + + , + + + 1 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 345 + Decimal Seperator + Character used to seperate decimals in numbers. + 1 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 182 + GD Version + + 1 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 + + 0 + + 1 + general + 0 1 chat04 - Invision Chat Настройки - Этот пункт позволяет изменять ваш Invision Chat версию 2004 года. + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition 1 - 75 + 202 Chat Site ID / Account No. - Если вы используете Parachat v7 и выше, введите ваш site ID. Если вы используете старую версию Parachat, пожалуйста введите ваш group number - 11 + If you are using Parachat v7 or greater, enter your site ID (1234, for example). If you are using an older version of Parachat please enter your group number (ip0000, for example) + 21 input chat04_account_no @@ -504,19 +1701,20 @@ man= 1 1 - Настройки учетной записи + Account Specifics 0 1 chat04 + 0 351 Custom Applet Codebase URL - Этот пункт должен быть пустым до тех пор, пока вы имеете -ParaChat Server или ParaChat Enterprise hosted solution.]]> - 11 + This should be left blank unless you have a local +ParaChat Server installation or hosted ParaChat Enterprise solution.]]> + 21 input parachat_codebase_url @@ -536,14 +1734,14 @@ ParaChat Server 350 Chat Room Version - - 11 + + 21 dropdown parachat_version 6 - 6=Parachat v6, и ниже -7=Parachat v7, и выше + 6=Parachat v6 or below +7=Parachat v7 or greater 1 3 @@ -556,650 +1754,224 @@ ParaChat Server - 1 - chat - Invision Chat Настройки (Legacy Version) - Этот пункт позволяет изменять ваш Invision Chat. - 1 - - - - 93 - Номер учетной записи комнаты чата? - Удаление этого номера удалит все ссылки / чат функционирует без IPB. - - 12 - input - chat_account_no - - - - - 1 - 1 - Учетные записи - 0 - - 1 - chat - - - - 1 - boardguidelines - Правила форума - Настройки, позволяющие менять тексты правил форума выдаваемых при регистрации и глобальных правил форума. - 0 - - - - 1 - Показать ссылку на правила форума в верхней части страниц форума? - - 1 - yes_no - gl_show - - 0 - - - 1 - 1 - - 0 - - 1 - boardguidelines - - - - 1 - cpusaving - - Позволяют ограничивать или отключать некоторые ресурсоемкие возможности форума для увеличения скорости работы вашего форума, а так же уменьшения нагрузки на сервер. - 0 - - - - 25 - Показывать дополнительные поля профиля при просмотре тем? - - 7 - yes_no - custom_profile_topic - - 1 - - - 1 - 1 - Снижение нагрузки на SQL-базу - 0 - 0 - 1 - cpusaving - - - - 1 - calendar - - Настройки отображения календаря и блока именинников форума.. - 0 - - - - 8 - Показывать именинников на главной странице календаря? - Вывод в календаре количества именинников для каждого дня. - 3 - yes_no - show_bday_calendar - - 1 - - - 1 - 1 - - 0 - - 1 - calendar - - - - 1 - subsmanager - Менеджер подписок (не для России) - Управление менеджером подписок. В России не работает. - 1 - - - - 164 - Показывать пакеты подписки при регистрации пользователя? - Если этот пункт включен, пакеты подписки будут показываться на странице регистрации, и пользователь сможет выбрать нужный пакет... - 24 - yes_no - subsm_show_reg - - 0 - - - 1 - 1 - Опционально во время регистрации - 1 - - 1 - subsmanager - - - - 1 - personalmessagesetup - Личные сообщения - Глобальные настройки системы личных сообщений форума. - 0 - - - - 124 - Разрешить BB коды в личных сообщениях? - - 18 - yes_no - msg_allow_code - - 1 - - - 1 - 1 - - 0 - - 1 - personalmessagesetup - - - - 1 - userprofiles - Профили пользователей - - 0 - - - - 214 - Разрешить пользователям выбирать стиль форума? - - 27 - yes_no - allow_skins - - 1 - - - 1 - 1 - Глобальные настройки профиля пользователей - 0 - 0 - 1 - userprofiles - - - - 1 - date - - Настройки формата отображения даты и времени на форуме. - 0 - - - - 40 - Часовой пояс сервера: - Если вы выбрали корректный часовой пояс, а время неточное на 1 час, то это из-за перехода на летнее/зимнее время, и ваши пользователи могут исправить это в своих настройках форума в профиле.]]> - 8 - dropdown - time_offset - - 0 - - $words ) - { - if (preg_match("/^time_(\\S+)$/", $off, $match)) - { - $dropdown[] = array( $match[1], $words ); - } - } -}]]> - 1 - 1 - Корректировка времени на форуме - 0 - 0 - 1 - date - - - - 20 - Cookie префикс - Позволяет безопасно держать несколько форумов на одном хосте. - 5 - input - cookie_id - - - - - 1 - 2 - - 0 - - 1 - cookies - - - - 49 - E-mail адрес для всей исходящей почты - Этот E-mail адрес будет использоваться в поле «обратный адрес» для писем, отправленных с форума. - 9 - input - email_out - - - - - 1 - 2 - - 1 - - 1 - email - - - - 132 - Вести журнал посещений поисковых ботов? - Если вы подвергаетесь тяжелым атакам через систему слежения за поисковыми ботами, отключите эту опцию, это несколько уменьшит загрузку сервера. + 204 + + 21 yes_no - spider_visit + chat04_who_on 1 1 - 2 - + 4 + 0 1 - searchenginespiders + chat04 + 0 - 139 - Вид формы поиска по умолчанию? - Эта настройка будет работать только если вы используете полнотекстовый поиск. - 22 - dropdown - search_default_method + 205 + + + 21 + yes_no + chat04_hide_whoschatting - simple - simple=Простой -adv=Расширенный - - 1 - 2 - - 0 - - 1 - searchsetup - - - - 2 - Внешняя http:// ссылка на страницу с правилами форума? - Введите внешний адрес (URL) правил форума! - 1 - input - gl_link - - + 1 1 - 2 - - 0 - - 1 - boardguidelines - - - - 113 - Заголовок страницы портала - - 16 - input - csite_title - - Портал IPB - - - 1 - 2 - - 0 - - 0 - ipbportal - - - - 209 - Какой форум будет корзиной? - Форум, выделяемый под корзину, должен иметь специальные маски доступа на чтение/запись/ответ. А именно на чтение он должен быть открыт только администраторским группам и запрещен на запись и ответ для всех групп. - 26 - dropdown - forum_trash_can_id - - - #show_forums# - - 1 - 2 - - 0 - - 1 - trashcansetup - - - - 215 - Количество сообщений, необходимых набрать пользователю, чтобы получить возможность изменять свой статус - Введите 0, чтобы полностью отключить эту возможность - 27 - input - post_titlechange - - 500 - - - 1 - 2 - - 0 - 0 - 1 - userprofiles - - - - 77 - Комната чата по умолчанию - Это комната чата, в которую попадут пользователи, войдя в чат. - 11 - input - chat04_default_room - - Lobby - - - 1 - 2 + 5 1 1 chat04 + 0 - 41 - Корректировка времени сервера (в минутах) - Время форума (с учетом всех поправок) сейчас: <-T->]]> - 8 + 209 + Chat Room Dimensions (WIDTH)? + + 21 input - time_adjust + chat04_width - 0 - - ipsclass->get_date(time(), 'LONG',1); -$r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ); -}]]> - 1 - 2 - - 1 - 0 - 1 - date - - - - 26 - кеширование календаря? - Не рекомендуется включать этот пункт, если форум ежедневно не посещается. - 7 - yes_no - cache_calendar - - 1 + 600 1 - 2 - + 8 + Showing the chat room 0 - 0 + 1 - cpusaving + chat04 + 0 - 238 - Минимальный уровень предупреждений - Отрицательные числа разрешены. Если вы используете отрицательные числа, мы рекомендуем НЕ использовать графические блоки и проценты, а использовать режим рейтинга. - 28 + 210 + Chat Room Dimensions (HEIGHT)? + + 21 input - warn_min + chat04_height - 0 + 350 1 - 2 - Уровни предупреждений + 9 + 0 1 - warnsetup + chat04 + 0 - 23 - Номер факса COPPA, на который будут приходить вам разрешения от родителей + 213 + Load the chat room in...? - 6 - input - coppa_fax + 21 + dropdown + chat04_display - - + self + self=Normal IPB Page 1 - 2 + 12 0 1 - coppa + chat04 + 0 - 108 - Отключить копирайт? - - yes_no - ips_cp_purchase - - 0 - - - 1 - 2 - - 0 - - 1 - ipbcopyright - - - - 110 - Отображать информацию о том, на кого зарегистрирован ваш IPB? - - 15 - yes_no - ipb_reg_show - - 0 - - - 1 - 2 - - 0 - - 1 - ipbreg - - - - 9 - Показывать сегодняшних именинников на главной странице форума? - - 3 - yes_no - show_birthdays - - 1 - - - 1 - 2 - Сегодняшние именинники - 0 - - 1 - calendar - - - - 123 - Показывать ссылку на последнюю новость на главной странице форума? - - 17 - yes_no - index_news_link - - 0 - - - 1 - 2 - - 0 - - 1 - newssetup - - - - 125 - Разрешить HTML коды в личных сообщениях? - Пользователи смогут использовать HTML в личных сообщениях. Мы рекомендуем отключить этот пункт в целях безопасности. - 18 - yes_no - msg_allow_html - - 0 - - - 1 - 2 - - 0 - - 1 - personalmessagesetup - - - - 94 - Сервер комнаты чата? - ]]> - 12 - input - chat_server_addr - - - - - 1 - 2 - - 1 - - 1 - chat - - - - 7 - Сообщение, которое выключенный форум отображает всем пользователям - - 2 + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
    <param name="cmd.BeepLeave" value="true"> +
    Please refer to the Invision Chat documentation for more info.]]>
    + 21 textarea - offline_msg + chat04_customparams 1 - 2 + 13 0 0 - boardoffline + chat04 + 0
    - 76 - Тип комнаты чата - Это тип купленного вами чата - 11 + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 254 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) + 21 + dropdown + chat04_default_lang + + english.conf + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German + + 1 + 99 + Version 6 Settings (Not required for v7) + 0 + + 0 + chat04 + 0 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 dropdown chat04_servicetype @@ -1214,216 +1986,212 @@ premium=Premium 1 chat04 + 0 - 165 - Требовать от каждого пользователя выбора пакета подписки - Если пункт включен, пользователь должен будет обязательно выбрать какой-то пакет подписки при регистрации. - 24 - yes_no - subsm_enforce - - 0 - - - 1 - 2 - Force Package Purchase - 0 - - 1 - subsmanager - - - - 168 - Удалять множество восклицательных/вопросительных знаков в названиях тем? - Посмотрите!!!!! будет заменено на Посмотрите!.]]> - 25 - yes_no - etfilter_punct - - 0 - - - 1 - 2 - - 0 - 0 - 1 - topicspostsandpolls - - - - 21 - Cookie путь - Отноcительный путь от корня домена до главной папки форума IPB (где лежит файл index.php). - 5 + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 input - cookie_path + chat04_default_room 1 - 3 + 101 0 1 - cookies + chat04 + 0 - 1 - portal_recent_topics - Портал: Последние обсуждения - Настройки вывода последних обсуждений в портал - 1 - - - - 128 - Из каких форумов экспортировать новости? - Вы можете выбирать несколько форумов. - multi - recent_topics_article_forum + 255 + + + 21 + yes_no + chat04_plainmode - - #show_forums# - + 0 + + 1 - 3 + 102 0 0 - portal_recent_topics + chat04 + 0 - 169 - Сколько оценок требуется для отображения рейтинга темы - - 25 + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 input - topic_rating_needed + chat04_style_applet_bg - 1 + #BCD0ED 1 - 3 + 130 0 - 1 - topicspostsandpolls + 0 + chat04 + 0 - 17 - Запретить отображаемые имена из выбранных имен пользователя - - 4 - yes_no - auth_dnames_nologinname + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg - 1 + #345487 1 - 3 - - 1 - - 1 - converge - - - - 29 - Обновлять количество просмотров тем немедленно - Если "Да", то счетчик просмотров тем будет обновляться с каждым просмотром темы. Если "Нет", количество просмотров будет записываться в другую таблицу и обновляться каждые 6 часов. Отключенная данная опция позволяет сэкономить процессорное время для больших форумов. - 7 - yes_no - update_topic_views_immediately - - 1 - - - 1 - 3 + 131 0 - 1 - cpusaving + 0 + chat04 + 0 - 10 - Автоматически скрывать, когда в текущий день нет именинников? - - 3 - yes_no - autohide_bday + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg - 0 + #F5F9FD 1 - 3 + 132 - 1 + 0 - 1 - calendar + 0 + chat04 + 0 - 24 - Адрес почтового ящика COPPA, на который будут приходить вам разрешения от родителей - - 6 - textarea - coppa_address + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 133 + + 0 + + 0 + chat04 + 0 + + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 135 + + 1 + + 0 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no 1 - 3 - + 1 + Account Specifics 0 1 - coppa + chat + 0 - 95 - - Если эту опцию включить, то на главной странице форума в блоке статистики будет показываться блок с пользователям, кто сейчас находится в чате. - 12 + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 190 + + + 20 yes_no chat_who_on @@ -1432,553 +2200,19 @@ $key = 'recent_topics_article_forum[]'; 1 3 - Кто в чате + 0 1 chat + 0 - 166 - Группа пользователей, в которую попадет пользователь после регистрации и до оплаты пакета? - Если этот пункт включить, то каждый регистрирующийся пользователь будет попадать в указанную группу пользователей, пока не оплатит выбранный пакет... - 24 - dropdown - subsm_nopkg_group - - 1 - #show_groups# - - 1 - 3 - - 1 - - 1 - subsmanager - - - - 3 - Заголовок, используемый в верхней части? + 191 + - 1 - input - gl_title - - - - - 1 - 3 - - 0 - - 1 - boardguidelines - - - - 170 - Запретить использование только заглавных букв в названиях тем? - НАЖМИТЕ СЮДА будет заменено на Нажмите сюда — следует правильно выбрать локаль на сервере]]> - 25 - yes_no - etfilter_shout - - 0 - - - 1 - 3 - - 0 - 0 - 1 - topicspostsandpolls - - - - 210 - Использовать корзину для основных администраторов? - При удалении темы данной группой, она (тема) будет перемещаться в корзину. - 26 - yes_no - forum_trash_can_use_radmin - - 1 - - - 1 - 3 - - 0 - - 1 - trashcansetup - - - - 133 - К какой группе пользователей относить поисковых ботов? - Этот пункт полезен тем, что вы можете назначать индивидуальные настройки для группы, которую будут использовать поисковые боты, например, ограничить доступ ботам к некоторым разделам форума и т.д. - 21 - dropdown - spider_group - - 2 - #show_groups# - - 1 - 3 - - 0 - - 1 - searchenginespiders - - - - 42 - Краткий формат - Даты в PHP.]]> - 8 - input - clock_short - - j.n.Y, G:i - - - 1 - 3 - - 0 - 0 - 1 - date - - - - 216 - - - 27 - input - max_location_length - - 1000 - - - 1 - 3 - - 0 - 0 - 1 - userprofiles - - - - 126 - Максимальное количество личных сообщений на страницу при просмотре списка сообщений - 50]]> - 18 - input - show_max_msg_list - - 50 - - - 1 - 3 - - 0 - - 1 - personalmessagesetup - - - - 239 - Максимальный уровень предупреждений - - 28 - input - warn_max - - 10 - - - 1 - 3 - - 1 - - 1 - warnsetup - - - - 50 - Метод отправки почты - Если функция PHP mail() недоступна, выберите метод SMTP. Если вы не знаете, что выбрать, уточните у вашего хостинг-провайдера. - 9 - dropdown - mail_method - - mail - mail=PHP Mail() -smtp=SMTP - - 1 - 3 - - 0 - - 1 - email - - - - 58 - Название вашего сайта - При заполнении этого и ниже следующего поля, в верхней части страниц форума появится ссылка на ваш сайт. - 10 - input - home_name - - - - - 1 - 3 - - 0 - 0 - 1 - general - - - - 111 - - Примеры: Иван Петров или Компания Invision Power Services - 15 - input - ipb_reg_name - - - - - 1 - 3 - - 0 - - 1 - ipbreg - - - - 27 - Сколько минут считать пользователя в онлайне? - Введите здесь количество минут, в течение которого после последнего действия на форуме пользователь все еще будет считаться в онлайне на форуме. - 7 - input - au_cutoff - - 15 - - - 1 - 3 - - 0 - 0 - 1 - cpusaving - - - - 114 - Формат времени для новостей - Даты в PHP.]]> - 16 - input - csite_article_date - - j.n.Y, G:i - - - 1 - 3 - - 0 - - 0 - ipbportal - - - - 28 - Хранение прочитанных тем в базе данных - Количество дней, в течение которого форум будет хранить информацию о прочитанных пользователем темах в базе данных. Для больших форумов мы рекомендуем выставить значение не более 7 дней. Введите в поле 0 (ноль) для отключения возможности отслеживания прочитанных тем с помощью базы данных. - 7 - input - db_topic_read_cutoff - - 7 - - - 1 - 3 - - 0 - - 1 - cpusaving - - - - 129 - Количество новостей для отображения - - input - recent_topics_article_max - - 15 - - - 1 - 4 - Последние новости - 1 - - 0 - portal_recent_topics - - - - 51 - SMTP хост - - 9 - input - smtp_host - - localhost - - - 1 - 4 - Настройки SMTP сервера - 0 - - 1 - email - - - - 59 - Адрес вашего сайта: - - 10 - input - home_url - - - - - 1 - 4 - - 1 - 0 - 1 - general - - - - 78 - - Если эту опцию включить, то на главной странице форума в блоке статистики будет показываться блок с пользователям, кто сейчас находится в чате. - 11 - yes_no - chat04_who_on - - 1 - - - 1 - 4 - Кто в чате - 0 - - 1 - chat04 - - - - 240 - Защищенные группы - Вы можете использовать выбрать более одной (используя «Ctrl»).]]> - 28 - multi - warn_protected - - - #show_groups# - 1 - 4 - - 0 - - 1 - warnsetup - - - - 211 - Использовать корзину для других администраторов? - При удалении темы данной группой, она (тема) будет перемещаться в корзину. - 26 - yes_no - forum_trash_can_use_admin - - 1 - - - 1 - 4 - - 0 - - 1 - trashcansetup - - - - 134 - Какой стиль использовать поисковикам? - Это полезно тем, что вы можете создать легкий оптимизированный стиль для поисковых ботов, чтобы уменьшить лишний трафик и улучшить индексируемость вашего форума. - 21 - dropdown - spider_suit - - - #show_skins# - - 1 - 4 - - 0 - - 1 - searchenginespiders - - - - 171 - - - 25 - input - hot_topic - - 15 - - - 1 - 4 - - 1 - 0 - 1 - topicspostsandpolls - - - - 217 - - - 27 - input - max_interest_length - - 1000 - - - 1 - 4 - - 0 - 0 - 1 - userprofiles - - - - 11 - Показать будущие календарные события? - Форум будет выводить наступающие события календаря на главной странице. - 3 - yes_no - show_calendar - - 1 - - - 1 - 4 - Будущие календарные события - 0 - - 1 - calendar - - - - 30 - Помечать темы, созданные пользователем, при просмотре форума? - - 7 - yes_no - show_user_posted - - 1 - - - 1 - 4 - - 1 - 0 - 1 - cpusaving - - - - 96 - - - 12 + 20 yes_no chat_hide_whoschatting @@ -1992,194 +2226,14 @@ if ( $show == 1 ) 1 chat + 0 - 4 - Текст правил форума (если не используете внешнюю ссылку) - HTML Включен - 1 - textarea - gl_guidelines - - - - - 1 - 4 - - 0 - - 0 - boardguidelines - - - - 43 - Формат даты регистрации - Даты в PHP.]]> - 8 - input - clock_joined - - j.n.Y - - - 1 - 4 - - 0 - 0 - 1 - date - - - - 79 - - - 11 - yes_no - chat04_hide_whoschatting - - 1 - - - 1 - 5 - - 1 - - 1 - chat04 - - - - 52 - SMTP Порт - - 9 - input - smtp_port - - 25 - - - 1 - 5 - - 0 - - 1 - email - - - - 60 - URL к папке для загрузок: - URL адрес вашей папки /uploads/, куда будут загружаться прикрепленные файлы, фотографии, аватары и т.д. - 10 - input - upload_url - - - - - 1 - 5 - URL адреса и пути - 0 - 0 - 1 - general - - - - 12 - Автоматически скрывать, когда нет календарных событий к отображению? - - 3 - yes_no - autohide_calendar - - 0 - - - 1 - 5 - - 0 - - 1 - calendar - - - - 18 - Идентифицировать пользователя по: - - 4 - dropdown - converge_login_method - - username - username=имени пользователя (login) -email=E-mail - - 1 - 5 - - 0 - - 1 - converge - - - - 212 - Использовать корзину для супермодераторов? - При удалении темы данной группой, она (тема) будет перемещаться в корзину. - 26 - yes_no - forum_trash_can_use_smod - - 1 - - - 1 - 5 - - 0 - - 1 - trashcansetup - - - - 218 - Максимальная длина подписи пользователя (кол-во символов) - - 27 - input - max_sig_length - - 10000 - - - 1 - 5 - - 0 - 0 - 1 - userprofiles - - - - 97 - Обновлять локальный список не менее, чем каждые: - Локальный список обновляется от основного сервера чата с установленной вами частотой и кешируется локально. В минутах. - 12 + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 dropdown chat_refresh_list @@ -2196,187 +2250,14 @@ email=E-mail 1 chat + 0 - 31 - - Это сохранит один запрос при просмотре списка тем форума. - 7 - yes_no - no_au_forum - - 0 - no_au_forum - - 1 - 5 - Отключение возможностей - 0 - 0 - 1 - cpusaving - - - - 135 - Показывать поисковых ботов в списке активных пользователей? - - 21 - yes_no - spider_active - - 1 - - - 1 - 5 - Список активных пользователей - 0 - - 1 - searchenginespiders - - - - 44 - Полный формат - Даты в PHP.]]> - 8 - input - clock_long - - j.n.Y, G:i - - - 1 - 5 - - 0 - 0 - 1 - date - - - - 241 - Разрешить пользователю видеть свой уровень и причины предупреждений? - При включении данной опции пользователи будут видеть их уровень предупреждений и причины, по которым они их получили. - 28 - yes_no - warn_show_own - - 0 - - - 1 - 5 - - 0 - - 1 - warnsetup - - - - 5 - Регистрационные правила и положения - HTML Включен]]> - 1 - textarea - reg_rules - - Правила и положения форума - -Пожалуйста, уделите немного внимания и прочтите краткие правила, указанные ниже. Если вы принимаете их и желаете продолжить процесс регистрации, отметьте свое согласие и нажмите кнопку «Регистрация». Для отмены регистрации нажмите кнопку «Назад» в вашем браузере. - -Пожалуйста, помните, что мы не отвечаем на все публикуемые сообщения. - -На форуме отсутствует предварительная проверка открываемых тем и публикаций. Как только вы отправляете сообщение — оно сразу публикуется на форуме. Администрация форума снимает с себя ответственность за содержание сообщений, публикуемых пользователями. Ответственность за содержание сообщения несет только его автор. - -На форуме запрещено: -отправка сообщений не по содержанию форума/темы, оскорбления и угрозы в адрес пользователей форума, пропаганда расовой, национальной и религиозной вражды; реклама и самореклама; -ненормативная лексика, сексуальные домогательства и т.д. - -Нарушители правил будут строго наказаны модераторами или администраторами форума и им будет закрыт доступ на форум. - -Согласившись с правилами, вы соглашаетесь не публиковать любой материал, защищенный авторским правом, если авторское право не принадлежит вам.]]> - - - 1 - 5 - Правила и положения форума - 1 - - 0 - boardguidelines - - - - 54 - SMTP Имя пользователя - - 9 - input - smtp_user - - - - - 1 - 6 - - 0 - - 1 - email - - - - 53 - » к полям «Кому» и «Обратный адрес» в отправляемых письмах?]]> - Некоторые SMTP сервера требует, чтобы e-mail адреса были в угловых скобках. Если вы получаете ошибку в журнале почтовых ошибок, включите эту опцию. - 9 - yes_no - mail_wrap_brackets - - 0 - - - 1 - 6 - - 0 - - 1 - email - - - - 13 - За сколько дней до события выводить его? - Укажите число дней. В пределах этого количества дней до события оно будет отображаться в соответствующем блоке на главной странице форума. - 3 - input - calendar_limit - - 5 - - - 1 - 6 - - 1 - - 1 - calendar - - - - 98 - Изменение пароля панели управления IPChat? - Если вы изменили ваш пароль от панели управления IPChat, пожалуйста, добавьте новый пароль здесь. Оставьте поле пустым, если не изменяли. - 12 + 193 + Changed your IPChat control panel password? + + 20 input chat_pass_md5 @@ -2390,156 +2271,14 @@ email=E-mail 1 chat + 0 - 213 - Использовать корзину для модераторов? - При удалении темы данной группой, она (тема) будет перемещаться в корзину. - 26 - yes_no - forum_trash_can_use_mod - - 1 - - - 1 - 6 - - 0 - - 1 - trashcansetup - - - - 45 - Использовать относительные даты? - - 8 - dropdown - time_use_relative - - 1 - - - 1 - 6 - Относительные даты - 0 - 0 - 1 - date - - - - 32 - - Это сохранит один запрос при просмотре темы. - 7 - yes_no - no_au_topic - - 0 - - - 1 - 6 - - 0 - 0 - 1 - cpusaving - - - - 136 - Показывать поисковых ботов, как скрытых пользователей? - Все поисковые боты, находящиеся на форуме, будут видны в списке активных пользователей только администраторам. - 21 - yes_no - spider_anon - - 0 - - - 1 - 6 - - 1 - - 1 - searchenginespiders - - - - 219 - Разрешить HTML в подписи? - НЕ рекомендуем включать данную опцию, пока вы не доверяете всем пользователям, которые могут добавлять себе подпись. - 27 - yes_no - sig_allow_html - - 0 - - - 1 - 6 - - 0 - 0 - 1 - userprofiles - - - - 242 - Разрешить продолжать предупреждать пользователя при достижении им максимального/минимального уровня предупреждений? - - 28 - yes_no - warn_past_max - - 0 - - - 1 - 6 - - 0 - - 1 - warnsetup - - - - 55 - SMTP Пароль - - 9 - input - smtp_pass - - - - - 1 - 7 - - 1 - - 1 - email - - - - 99 - ВВЕДИТЕ ВАШ ПАРОЛЬ К ПАНЕЛИ УПРАВЛЕНИЯ IPCHAT - - 12 + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 input chat_pass_md5_new @@ -2553,368 +2292,14 @@ email=E-mail 1 chat + 0 - 14 - Начальный год календаря - Указанный год и ,соответственно, последующие можно будет указывать в дате создаваемого события, а также при поиске. - 3 - input - start_year - - 2004 - - - 1 - 7 - - 0 - - 1 - calendar - - - - 243 - Отображение индикатора уровня предупреждений + 195 + Chat Room Dimensions (WIDTH)? - 28 - dropdown - warn_show_rating - - 0 - - - 1 - 7 - - 0 - - 1 - warnsetup - - - - 33 - - - 7 - yes_no - show_active - - 1 - - - 1 - 7 - - 0 - 0 - 1 - cpusaving - - - - 61 - Путь к папке /uploads/ - Это путь на сервере до папки, не путать с URL адресом. - 10 - input - upload_dir - - - upload_dir - - 1 - 7 - - 0 - 0 - 1 - general - - - - 220 - Разрешить BB коды в подписи? - - 27 - yes_no - sig_allow_ibc - - 1 - - - 1 - 7 - - 0 - 0 - 1 - userprofiles - - - - 137 - - -«уникальная строчка из user-agent»=«имя бота для отображения на форуме», например:
    googlebot=Google Bot -]]>
    - 21 - textarea - search_engine_bots - - googlebot=Google Bot -slurp@inktomi=Hot Bot -archive_org=Archive.org Bot -Ask Jeeves=Ask Jeeves Bot -Lycos=Lycos Bot -WhatUSeek=What You Seek Bot -ia_archiver=IA.Archiver Bot -GigaBlast=Gigablast Bot -Gigabot=Gigablast Bot -Yandex=Yandex Bot -Yahoo!=Yahoo Bot -Yahoo-MMCrawler=Yahoo-MMCrawler Bot -TurtleScanner=TurtleScanner Bot -TurnitinBot=TurnitinBot -ZipppBot=ZipppBot -StackRambler=StackRambler Bot -oBot=oBot -rambler=Rambler Bot -Jetbot=Jet Bot -NaverBot=Naver Bot -libwww=Punto Bot -aport=Aport Bot -msnbot=MSN Bot -MnoGoSearch=mnoGoSearch Bot -booch=Booch Bot -Openbot=Openfind Bot -scooter=Altavista Bot -WebCrawler=Fast Bot -WebZIP=WebZIP Bot -GetSmart=GetSmart Bot -grub-client=GrubClient Bot -Vampire=Net_Vampire Bot - - - - 1 - 7 - - 0 - - 1 - searchenginespiders -
    - - - 46 - Формат относительного времени: - - 8 - input - time_use_relative_format - - {--}, G:i - - - 1 - 7 - - 1 - 0 - 1 - date - - - - 63 - Кодировка страниц форума - Введите желаемую кодировку, в которой будут отображаться все HTML страницы форума. - 10 - input - gb_char_set - - windows-1251 - - - 1 - 8 - - 0 - - 1 - general - - - - 47 - Авто-определение перехода на летнее время - - 8 - yes_no - time_dst_auto_correction - - 1 - - - 1 - 8 - Переход на летнее время (DST) - 1 - - 1 - date - - - - 56 - Дополнительные опции PHP Mail - - 9 - input - php_mail_extra - - - - - 1 - 8 - Настройки PHP Mail - 1 - - 1 - email - - - - 64 - URL адрес к изображениям - Необязательно к заполнению
    Это полезно если вы желаете размещать изображения на другом сервере или когда используется кластерный сервер.

    Если вы вводите здесь путь, убедитесь, что он заканчиваеся «слэшем».
    Не заполняйте этот пункт, если не уверены в правильности пути!]]>
    - 10 - input - ipb_img_url - - - - - 1 - 8 - - 0 - - 1 - general -
    - - - 221 - Количество сообщений, на страницу темы, выбираемых пользователем в настройках форума? - Пример: 5,15,20,25,30]]> - 27 - input - postpage_contents - - 5,10,15,20,25,30,35,40 - - - 1 - 8 - - 0 - 0 - 1 - userprofiles - - - - 244 - Могут ли модераторы полностью блокировать пользователю доступ через панель предупреждений? - Администраторы могут блокировать пользователю доступ всегда!]]> - 28 - yes_no - warn_mod_ban - - 1 - - - 1 - 8 - Права модераторов форума - 0 - - 1 - warnsetup - - - - 15 - На сколько лет разбивать календарь? - - 3 - input - year_limit - - 5 - - - 1 - 8 - - 0 - - 1 - calendar - - - - 62 - Путь к кешируемым файлам - Необязательно к заполнению
    Это полезно для указания ПУТИ на серверее для записи IPB файлов (/skin_cache/, /style_avatars/, /style_emoticons/, /style_images/), когда работаете с загрузочными кластерными серверами.
    Если вы вводите здесь путь, убедитесь, что он заканчивается «слэшем».
    Не заполняйте этот пункт, если не уверены в правильности пути!]]>
    - 10 - input - ipb_cache_path - - - - - 1 - 8 - - 0 - - 1 - general -
    - - - 80 - Размеры комнаты чата (ШИРИНА)? - - 11 - input - chat04_width - - 600 - - - 1 - 8 - Отображение комнаты чата - 0 - - 1 - chat04 - - - - 100 - Размеры комнаты чата (ШИРИНА)? - - 12 + 20 input chat_width @@ -2923,177 +2308,19 @@ Vampire=Net_Vampire Bot 1 8 - Отображение комнаты чата + Showing the chat room 0 1 chat + 0 - 34 - Разрешить пользователям (где разрешено) пользоваться поиском по форуму? + 196 + Chat Room Dimensions (HEIGHT)? - 7 - yes_no - allow_search - - 1 - - - 1 - 8 - - 0 - 0 - 1 - cpusaving - - - - 130 - Количество отображаемых тем - - input - recent_topics_discuss_number - - 1 - - - 1 - 9 - Последние обсуждения - 1 - - 0 - portal_recent_topics - - - - 102 - Загружать комнату чата в...? - - 12 - dropdown - chat_display - - self - self=Нормальной IPB странице - - 1 - 9 - - 0 - - 1 - chat - - - - 222 - Количество тем, на страницу форума, выбираемых пользователем в настройках форума? - Пример: 5,15,20,25,30]]> - 27 - input - topicpage_contents - - 5,10,15,20,25,30,35,40 - - - 1 - 9 - - 1 - 0 - 1 - userprofiles - - - - 245 - Могут ли модераторы включать проверку всех публикуемых пользователем сообщений перед публикацией в форум (через панель предупреждений)? - Администраторы могут включать проверку пользователю всегда!]]> - 28 - yes_no - warn_mod_modq - - 1 - - - 1 - 9 - - 0 - - 1 - warnsetup - - - - 35 - Показывать блок со статистикой форума? - Показывает блок со статистикой в нижней части главной страницы форума. - 7 - yes_no - show_totals - - 1 - - - 1 - 9 - - 1 - 0 - 1 - cpusaving - - - - 65 - Принудительно отправлять HTTP заголовки? - Некоторые NT системы требуют, чтобы эта функция была отключена. - 10 - yes_no - print_headers - - 0 - - - 1 - 9 - - 1 - 0 - 1 - general - - - - 81 - Размеры комнаты чата (ВЫСОТА)? - - 11 - input - chat04_height - - 350 - - - 1 - 9 - - 0 - - 1 - chat04 - - - - 101 - Размеры комнаты чата (ВЫСОТА)? - - 12 + 20 input chat_height @@ -3107,13 +2334,35 @@ Vampire=Net_Vampire Bot 1 chat + 0 - 103 - Pop-up окно комнаты чата фиксированных размеров? (в пикселях) - Разрешить открывать окно без полос прокрутки - 12 + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 input chat_poppad @@ -3127,291 +2376,29 @@ Vampire=Net_Vampire Bot 1 chat + 0 - 223 - - Оставьте пустым или введите 0, чтобы эту опцию отключить - 27 - input - subs_autoprune - - 0 - - - 1 - 10 - Подписки на темы и форумы - 0 - 0 - 1 - userprofiles - - - - 36 - Лимит загрузки сервера - Форум будет выводить сообщение о перегрузке сервера, когда лимит будет исчерпан. Вы можете также оставить поле пустым, чтобы не использовать ограничение вообще. - 7 - input - load_limit - - - - - 1 - 10 - - 0 - 0 - 1 - cpusaving - - - - 246 - Могут ли модераторы отключать пользователю возможность публикации сообщений/тем на форуме (через панель предупреждений)? - Администраторы могут отключать пользователям возможность публикации сообщений всегда!]]> - 28 - yes_no - warn_mod_post - - 1 - - - 1 - 10 - - 0 - - 1 - warnsetup - - - - 172 - Префикс важных тем - Текст, отображаемый перед названием темы с таким статусом. Важная тема всегда в верхней части списка всех тем в форуме. - 25 - input - pre_pinned - - Важно: - - - 1 - 10 - Префиксы тем - 0 - 0 - 1 - topicspostsandpolls - - - - 143 - Разрешить динамические изображения? - Позволить пользователям публиковать динамические изображения, созданные CGI скриптами. Это может быть использовано, например, для создания случайных изображений в подписи и т.д., но пользователи также смогут публиковать вредоносные скрипты, которые могут угрожать безопасности форума. - 23 - yes_no - allow_dynamic_img - - 0 - - - 1 - 10 - - 0 - - 1 - securityandprivacy - - - - 82 - Язык всех стандартных записей в комнатах чата (по умолчанию) - Язык стандартных записей - 11 - dropdown - chat04_default_lang - - english.conf - english.conf=Английский -spanish.conf=Испанский -portuguese.conf=Португальский -italian.conf=Итальянский -french.conf=Французский -german.conf=Немецкий - - 1 - 99 - Настройки шестой версии (не требуется в v7) - 0 - - 0 - chat04 - - - - 224 - Автоматически подписывать на каждый форум - - 27 - multi - autoforum_sub_groups - - - #show_groups# - - 1 - 11 - - 1 - - 1 - userprofiles - - - - 83 - - - 11 - yes_no - chat04_plainmode - - 0 - - - 1 - 102 - - 0 - - 0 - chat04 - - - - 144 - Включить получение IP-адресов из X_FORWARDED_FOR? - Если опция включена, то IP-адреса пользователей будут получаться так же из заголовка X_FORWARDED_FOR. Рекоммендуется для форумов работающих в локальных сетях, когда не удается определить реальный IP-адрес пользователя. - 23 - yes_no - xforward_matching - - 0 - - - 1 - 11 - - 0 - - 1 - securityandprivacy - - - - 173 - Префикс перемещенных тем - - 25 - input - pre_moved - - Перемещено: - - - 1 - 11 - - 0 - 0 - 1 - topicspostsandpolls - - - - 247 - Сколько раз за день модераторы могут ставить предупреждение одному пользователю? + 198 + Default Chat Room Interface Language? - 28 - input - warn_mod_day - - 3 - - - 1 - 11 - - 1 - - 1 - warnsetup - - - - 66 - Тип переадресации - - 10 - dropdown - header_redirect - - location - location=С использованием заголовка Location: (*nix) -refresh=С использованием заголовка Refresh: (Windows) -html=HTML META переадресация (если варианты выше не подходят) - - 1 - 11 - Настройки переадресации - 0 - 0 - 1 - general - - - - 104 - Язык интерфейса чата по умолчанию? - - 12 + 20 dropdown chat_language en en=English -ar=Арабский -de=Немецкий -es=Испанский -fr=Французский -hr=Хорватский -it=Итальянский -iw=Иврит -nl=Датский -pl=Польский -pt=Португальский +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese 1 11 @@ -3420,233 +2407,14 @@ pt= 1 chat + 0 - 145 - - - 23 - yes_no - login_change_key - - 0 - - - 1 - 12 - - 0 - - 1 - securityandprivacy - - - - 84 - Загружать комнату чата в...? - - 11 - dropdown - chat04_display - - self - self=Нормальной IPB странице - - 1 - 12 - - 0 - - 1 - chat04 - - - - 248 - Могут ли супермодераторы полностью блокировать пользователю доступ через панель предупреждений? - Администраторы могут блокировать пользователю доступ всегда! - 28 - yes_no - warn_gmod_ban - - 1 - - - 1 - 12 - Права супермодераторов - 0 - - 1 - warnsetup - - - - 174 - Префикс опросов - Текст, отображаемый перед названием темы с таким статусом. Все темы, в которых есть опрос, отмечаются так. - 25 - input - pre_polls - - Опрос: - - - 1 - 12 - - 0 - 0 - 1 - topicspostsandpolls - - - - 225 - Разрешить использовать аватары? - - 27 - yes_no - avatars_on - - 1 - - - 1 - 12 - Аватары и фотографии - 0 - 0 - 1 - userprofiles - - - - 67 - Убрать страницы переадресаций? - Запрещает форуму использовать страницы переадресации, которые вводятся для уведомления пользователей о его последнем действии, и быстро переадресуют его на нужную страницу. Включается в целях экономии трафика. - 10 - yes_no - ipb_remove_redirect_pages - - 0 - - - 1 - 12 - - 1 - - 1 - general - - - - 175 - Максимальная длина заголовка тем - Максимальная разрешенная длина заголовка тем. - 25 - input - topic_title_max_len - - 150 - - - 1 - 13 - - 1 - - 1 - topicspostsandpolls - - - - 146 - Длительность сессии (в секундах) - Неактивные сессии удаляются после истечения этого лимита. Чем меньше число, тем меньше вероятность похищения сессии. - 23 - input - session_expiration - - 3600 - - - 1 - 13 - - 0 - - 1 - securityandprivacy - - - - 140 - Минимальная длина запроса при поиске (в символах): - - 22 - input - min_search_word - - 4 - min_search_word - - 1 - 13 - - 0 - 0 - 1 - searchsetup - - - - 249 - Могут ли супермодераторы включать проверку всех публикуемых пользователем сообщений перед публикацией в форум (через панель предупреждений)? - Администраторы могут блокировать пользователю доступ всегда! - 28 - yes_no - warn_gmod_modq - - 1 - - - 1 - 13 - - 0 - - 1 - warnsetup - - - - 226 - Разрешенные расширения файлов для URL аватаров - Разделяйте запятой (gif,jpeg,jpg,png) и т.д. - 27 - input - avatar_ext - - gif,jpg,jpeg,png - - - 1 - 13 - - 0 - 0 - 1 - userprofiles - - - - 105 - Разрешить доступ в чат для этих групп - Вы можете выбирать более, чем одну - 12 + 200 + Allow chat access to these groups + You may select more than one + 20 multi chat_access_groups @@ -3671,217 +2439,19 @@ if ( $show == 1 ) }]]> 1 13 - Права доступа + Access Permissions 0 1 chat + 0 - 147 - - - 23 - yes_no - match_ipaddress - - 1 - - - 1 - 14 - - 0 - - 1 - securityandprivacy - - - - 85 - Pop-up окно комнаты чата фиксированных размеров? (в пикселях) - Разрешить открывать окно без полос прокрутки - 11 - input - chat04_poppad - - 50 - - - 1 - 14 - - 1 - - 1 - chat04 - - - - 141 - Просмотр новых сообщений: исключение форумов - не желаете видеть в списке при использовании ссылок 'Активные темы' или 'Просмотр новых сообщений'. Вы можете выбирать несколько форумов.]]> - 22 - multi - vnp_block_forums - - - #show_forums# - - 1 - 14 - - 0 - - 1 - searchsetup - - - - 250 - Могут ли супермодераторы отключать пользователю возможность публикации сообщений/тем на форуме (через панель предупреждений)? - Администраторы могут блокировать пользователю доступ всегда! - 28 - yes_no - warn_gmod_post - - 1 - - - 1 - 14 - - 0 - - 1 - warnsetup - - - - 69 - Отключить GZIP сжатие? - GZIP ускоряет загрузку страниц и уменьшает трафик, но некоторые серверы не поддерживают этот метод. - 10 - yes_no - disable_gzip - - 0 - - - 1 - 14 - - 0 - 0 - 1 - general - - - - 68 - Отладочные сообщения - - 10 - dropdown - debug_level - - 0 - - - 1 - 14 - - 0 - 0 - 1 - general - - - - 37 - - Внимание: Чтобы эта опция работала, необходимо, чтобы другая опция «Принудительно отправлять HTTP заголовки?» была включена.]]> - 7 - yes_no - nocache - - 1 - - - 1 - 14 - Уменьшение трафика - 0 - 0 - 1 - cpusaving - - - - 116 - Показывать блок с формой поиска? - - 16 - yes_no - csite_search_show - - 1 - - - 1 - 14 - - 0 - - 0 - ipbportal - - - - 227 - Разрешить пользователям использовать удаленные URL адреса аватаров? - Если эта опция включена, то пользователи могут не загружать на форум аватар, а просто указать на него ссылку - 27 - yes_no - avatar_url - - 1 - - - 1 - 14 - - 0 - 0 - 1 - userprofiles - - - - 106 - Разрешить права администратора этим группам - Вы можете выбирать более, чем одну, пожалуйста, выбирайте внимательно! - 12 + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 multi chat_admin_groups @@ -3911,430 +2481,215 @@ if ( $show == 1 ) 1 chat + 0 - 70 - Включить режим отладки SQL? - - 10 + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 247 + Turn off copyright? + + 25 yes_no - sql_debug + ips_cp_purchase 0 1 - 15 + 2 0 - 0 + 1 - general + ipbcopyright + 0 - 228 - Максимальный размер загружаемого файла аватара (в килобайтах) - - 27 + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + 1 + ipbreg + IPB License Settings + This section will allow you to edit your IPB registered license settings. + 0 + + + + 245 + IPB Registered License Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 input - avup_size_max + ipb_reg_number - 50 + 1 - 15 + 1 0 - 0 + 1 - userprofiles + ipbreg + 0 - 117 - Показывать блок с выпадающем меню выбора стиля? - - 16 + 243 + Display registered to line? + + 24 yes_no - csite_skinchange_show + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + ipbreg + 0 + + + + 244 + Show as licensed to... + Matthew Mecham, IPS, Inc.]]> + 24 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + ipbreg + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on 1 1 - 15 + 1 + + 0 + + 1 + ipbportal + 0 + + + + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 0 0 ipbportal + 0 - 148 - Проверять USER_AGENT браузера пользователя? - Эта опция уменьшит риск подмены сессии пользователя. То есть если кто-то сможет подменить сессию другого пользователя, то форум при проверке браузера не позволит злоумышленнику завладеть сессией пользователя-жертвы. - 23 - yes_no - match_browser + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date - 0 + m-j-y H:i 1 - 15 + 3 - 1 + 0 - 1 - securityandprivacy + 0 + ipbportal + 0 - 251 - Сколько раз за день супермодератор может ставить предупреждение одному пользователю? + 233 + Show Site Navigation Menu? - 28 - input - warn_gmod_day - - 3 - - - 1 - 15 - - 1 - - 1 - warnsetup - - - - 38 - Сколько символов найденного сообщения выводить в результатах поиска? - В результатах поиска сообщения будут урезаться введенным здесь количеством символов. При нажатии на ссылку пользователь будет попадать на страницу с полным содержанием сообщения. Оставьте этот пункт пустым, если хотите, чтобы при поиске всегда выводилось сообщение полностью... - 7 - input - search_post_cut - - - - - 1 - 15 - - 0 - 0 - 1 - cpusaving - - - - 71 - Использовать безопасный режим стилей? - Безопасный режим стилей не кеширует их в PHP файлы в папку /skin_cache/, а использует для хранения только базу данных.]]> - 10 - yes_no - safe_mode_skins - - 0 - - - 1 - 16 - - 0 - 0 - 1 - general - - - - 229 - Максимальные размеры аватара - xВЫСОТА), где x — буква английского алфавита]]> - 27 - input - avatar_dims - - 90x90 - - - 1 - 16 - - 0 - 0 - 1 - userprofiles - - - - 39 - Удалить подфорумы из выпадающее меню перехода по форумам? - Следует использовать при большом количестве разделов и подразделов -. - 7 - yes_no - short_forum_jump - - 0 - short_forum_jump - - 1 - 16 - - 1 - 0 - 1 - cpusaving - - - - 86 - Чат: Цвет фона - Для изменения цвета фона вашего чата введите необходимый цвет здесь (RGB). - 11 - input - chat04_style_applet_bg - - #BCD0ED - - - 1 - 130 - Опции стиля комнаты чата - 0 - - 0 - chat04 - - - - 1 - portal_poll - Портал: Опрос - Настройки вывода опроса в портал. - 1 - - - - 127 - Введите URL темы с импортируемым опросом - Оставьте пустым, если не хотите, чтобы отображался блок с опросом - input - poll_poll_url - - - - - 1 - 17 - - 0 - - 0 - portal_poll - - - - 89 - Окно чата: Цвет переднего плана - Для изменения цвета переднего плана вашего чата введите необходимый цвет здесь (RGB). - 11 - input - chat04_style_window_fg - - #345487 - - - 1 - 133 - - 0 - - 0 - chat04 - - - - 88 - Окно чата: Цвет фона - Для изменения цвета фона вашего чата введите необходимый цвет здесь (RGB). - 11 - input - chat04_style_window_bg - - #F5F9FD - - - 1 - 132 - - 0 - - 0 - chat04 - - - - 230 - Размеры по умолчанию для галереи аватаров - xВЫСОТА), где x — буква английского алфавита]]> - 27 - input - avatar_def - - 80x80 - - - 1 - 17 - - 0 - 0 - 1 - userprofiles - - - - 72 - Форматирование числовых разрядов: - - 10 - dropdown - number_format - - space - none=Не разделять -space=Пробел -,=, -.=. - - 1 - 17 - Форматирование чисел - 0 - 0 - 1 - general - - - - 87 - Чат: Цвет переднего плана - Для изменения цвета переднего плана вашего чата введите необходимый цвет здесь (RGB). - 11 - input - chat04_style_applet_fg - - #345487 - - - 1 - 131 - - 0 - - 0 - chat04 - - - - 73 - Разделитель целой от дробной части чисел - Символ, используемый для разделения целой от дробной части в числах на форуме. - 10 - dropdown - decimal_seperator - - . - .=. -,=, - - 1 - 18 - - 1 - - 1 - general - - - - 74 - Версия GD библиотеки - - 10 - dropdown - gd_version - - 2 - 1=GD1 -2=GD2 - - 1 - 19 - - 0 - - 1 - general - - - - 90 - Дополнительные параметры - -<param name="cmd.BeepEnter" value="true"> -
    <param name="cmd.BeepLeave" value="true"> -
    Пожалуйста, прочтите документацию к Invision Chat для получения подробной информации.]]>
    - 11 - textarea - chat04_customparams - - - - - 1 - 18 - - 0 - - 0 - chat04 -
    - - - 231 - Количество столбцов для галереи аватаров - - 27 - input - av_gal_cols - - 5 - - - 1 - 18 - - 0 - 0 - 1 - userprofiles - - - - 118 - Показывать навигационное меню? - - 16 + 22 yes_no csite_nav_show @@ -4348,64 +2703,25 @@ space= 0 ipbportal + 0 - 91 - Размер шрифта для текста в чате - Для изменения размера шрифта, применяемого в чате, используйте эту опцию. - 11 - input - chat04_style_font_size - - 10 - - - 1 - 135 - - 1 - - 0 - chat04 - - - - 232 - Разрешенные расширения файлов для фотографий - Разделяйте запятой (gif,jpeg,jpg,png) и т.д. - 27 - input - photo_ext - - gif,jpg,jpeg,png - - - 1 - 19 - - 0 - 0 - 1 - userprofiles - - - - 119 - Ссылки навигационного меню - http://www.yandex.ru [Яndex]

    Запись {board_url} будет заменена на URL вашего форума]]>
    - 16 + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

    {board_url} will convert into your board]]>
    + 22 textarea csite_nav_contents - + 1 19 @@ -4414,53 +2730,14 @@ space= 0 ipbportal + 0
    - 176 - Количество сообщений, размещаемых на одной странице темы - - 25 - input - display_max_posts - - 20 - - - 1 - 20 - Просмотр сообщений - 0 - 0 - 1 - topicspostsandpolls - - - - 233 - Отключить автоматическое изменение размеров больших фотографий/аватаров? - Пользователю необходимо будет изменять размеры изображения вручную. - 27 - yes_no - disable_ipbsize - - 0 - - - 1 - 20 - - 1 - 0 - 1 - userprofiles - - - - 120 - Показывать блок с рекомендуемыми ссылками? - Например, ссылки на сайты ваших партнеров. - 16 + 235 + Show Affiliates / Favoured Sites box? + + 22 yes_no csite_fav_show @@ -4474,53 +2751,14 @@ space= 0 ipbportal + 0 - 177 - Древовидный режим: количество сообщений, размещаемых на одной странице - Эта опция позволяет контролировать, сколько сообщений будет показывать на одной странице темы в древовидном режиме. Это помогает уменьшить нагрузку на сервер при просмотре очень больших тем таким способом. - 25 - input - threaded_per_page - - 100 - - - 1 - 21 - - 0 - - 1 - topicspostsandpolls - - - - 234 - Разрешить гостям видеть подписи? - - 27 - yes_no - guests_sig - - 1 - - - 1 - 21 - Настройки для гостей - 0 - 0 - 1 - userprofiles - - - - 121 - Содержание блока с рекомендуемыми ссылками - HTML включен - 16 + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 textarea csite_fav_contents @@ -4537,40 +2775,1341 @@ space= 0 ipbportal + 0 - 235 - Разрешить гостям видеть публикуемые в сообщениях изображения? + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + 130 + Export news topics from which forum? - 27 + 10 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 131 + + + 10 yes_no - guests_img + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + 132 + Allow BBCode in messages? + + 11 + yes_no + msg_allow_code 1 1 - 22 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 133 + Allow HTML in messages? + + 11 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 134 + Max. number of messages to show per page when viewing message list + The default is 50. + 11 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 31 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + 218 + Forums to export articles from + You may select more than one. + 30 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 219 + Number of articles to show + + 30 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 224 + Number of topics to show + + 30 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + 165 + Enable the search engine spider recognition? + + 16 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 166 + Log all spider visits? + + 16 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 167 + Treat spider/bot as part of which group? + + 16 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 168 + Force spider/bot to use skin + + 16 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 169 + Show spider/bot in the active users list? + + 16 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 171 + Show spider as anonymous + + 16 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 172 + Spider Bot User-Agent + bot=Human Name format.(one per line)
    Example: googlebot=Google.com]]>
    + 16 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
    + + + 1 + searchsetup + Search Set-Up + + 0 + + + + 185 + Type of search to use? + +
    +]]>
    + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
    + + + 186 + Default Search Mode? + This setting will only take effect if using full text searching + 19 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 31 + Minimum search word length + + 19 + input + min_search_word + + 4 + min_search_word + + 1 + 13 0 0 1 - userprofiles + searchsetup + 0 + + + + 334 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 19 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + 93 + Enable Script/Bot Flood Control? + + 6 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 1 + + 1 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 98 + Allow dynamic images? + + 6 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 331 + + + 6 + yes_no + login_change_key + + 0 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 99 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 6 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 332 + + + 6 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 100 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 6 + yes_no + match_browser + + 0 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 101 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 6 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 102 + Allow images to be posted? + Advanced programmers can force images to run as scripts. IBF limits damage by this method however. This should only be disabled as an extreme measure. + 6 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 103 + Allow flash movies in posts and avatars? + + 6 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 105 + New registration email validation? + + 6 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 106 + + + 6 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 107 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 6 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 108 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 6 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 109 + Disable new registrations? + + 6 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 111 + + Removes the ability for your members to report a post. + 6 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 112 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 6 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 113 + Allow users to browse the Active Users list? + + 6 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 114 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 6 + yes_no + disable_admin_anon + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 115 + Disable root admin group viewing online users IP address in online user list? + + 6 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + 63 + Number of topics per forum page + + 5 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 69 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 5 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 329 + Number of rating votes required to show + + 5 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 68 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 5 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 64 + + + 5 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 65 + Topic prefix for PINNED topics + + 5 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 66 + Topic prefix for MOVED topics + + 5 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 67 + Topic prefix for POLLS + + 5 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 335 + Topic Title Max Length + Maximum topic title length allowed. + 5 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 70 + Number of posts per topic page + + 5 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 179 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 5 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 178 - Режим просмотра тем по умолчанию - - 25 + Default Topic View Mode + + 5 dropdown topicmode_default linear - linear=Стандартный -threaded=Древовидный -linearplus=Линейный + linear=Standard +threaded=Outline +linearplus=Linear Plus 1 22 @@ -4579,13 +4118,14 @@ linearplus= 1 topicspostsandpolls + 0 - 179 - Игнорирование пользователей: Неигнорируемые группы - Пользователи выбранных групп не смогут быть игнорированы. - 25 + 344 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 5 multi cannot_ignore_groups @@ -4615,39 +4155,20 @@ $key = 'cannot_ignore_groups[]'; 1 topicspostsandpolls + 0 - 236 - Разрешить гостям видеть аватары пользователей? + 71 + Order posts within a topic by - 27 - yes_no - guests_ava - - 1 - - - 1 - 23 - - 1 - 0 - 1 - userprofiles - - - - 180 - Сортировать сообщения по - - 25 + 5 dropdown post_order_column pid - pid=номеру -post_date=дате публикации + pid=Post ID +post_date=Post Date 1 24 @@ -4656,55 +4177,20 @@ post_date= 0 1 topicspostsandpolls + 0 - 92 - Разрешить доступ в чат для этих групп - Вы можете выбирать более, чем одну - 11 - multi - chat04_access_groups - - - #show_groups# - - 1 - 25 - Права доступа - 1 - - 1 - chat04 - - - - 181 - Сортировать сообщения по + 72 + Order posts within a topic by - 25 + 5 dropdown post_order_sort asc - asc=возрастанию (0-9) -desc=убыванию (9-0) + asc=Ascending (0-9) +desc=Descending (9-0) 1 25 @@ -4713,96 +4199,14 @@ desc= 0 1 topicspostsandpolls + 0 - 149 - Использовать защищенную форму для отправки письма пользователю? - - 23 - yes_no - use_mail_form - - 1 - - - 1 - 30 - - 0 - - 1 - securityandprivacy - - - - 150 - Разрешить публиковать изображения? - Хорошие программисты могут через такие изображения запускать скрипты. IPB максимально возможно блокирует повреждения через это метод. Отключайте эту опцию только в самых крайних случаях. - 23 - yes_no - allow_images - - 1 - - - 1 - 31 - - 0 - - 1 - securityandprivacy - - - - 151 - Разрешить Flash ролики в сообщениях и аватарах? - - 23 - yes_no - allow_flash - - 0 - - - 1 - 32 - - 1 - - 1 - securityandprivacy - - - - 152 - Использовать активацию учетных записей пользователей? - Вы можете включить активацию учетных записей вручную администратором или другой способ активации, через которые новые пользователи сами будут активировать свою учетную запись через специальное письмо, высылаемое им на e-mail. - 23 - dropdown - reg_auth_type - - 0 - admin_user=Активация по e-mail, затем администратором -user=Активация пользователем по e-mail -admin=Активация администратором -0=Нет - - 1 - 40 - - 0 - - 1 - securityandprivacy - - - - 182 - Максимальное количество смайлов в одном сообщении - - 25 + 74 + Max. no. emoticons per post + + 5 input max_emos @@ -4811,18 +4215,19 @@ admin= 1 40 - Создание сообщения + Making a Post 0 0 1 topicspostsandpolls + 0 - 183 - Максимальное количество изображений в одном сообщении - - 25 + 75 + Max. no. images per post + + 5 input max_images @@ -4836,33 +4241,14 @@ admin= 0 1 topicspostsandpolls + 0 - 153 - - - 23 - input - validate_day_prune - - 0 - - - 1 - 41 - - 0 - - 1 - securityandprivacy - - - - 184 - Максимальный размер сообщения (в килобайтах) - - 25 + 76 + + + 5 input max_post_length @@ -4876,57 +4262,18 @@ admin= 0 1 topicspostsandpolls + 0 - 154 - Уведомлять администратора при регистрации нового пользователя? - Если включить эту опцию, форум будет отправлять письмо на e-mail к главному администратору, когда пользователь успешно зарегистрируется на форуме. - 23 - yes_no - new_reg_notify - - 0 - - - 1 - 42 - - 0 - - 1 - securityandprivacy - - - - 155 - Заставлять пользователей авторизоваться или регистрироваться, чтобы увидеть форум? - Если опцию включить, все гости должны будут войти или зарегистрироваться для того, чтобы увидеть форум. - 23 - yes_no - force_login - - 0 - - - 1 - 43 - - 0 - - 1 - securityandprivacy - - - - 185 - Максимальная высота прикрепленного к сообщению Flash ролика - По умолчанию — 200]]> - 25 + 78 + Max. height of posted Flash movies (in pixels) + + 5 input max_h_flash - 200 + 199 1 @@ -4936,17 +4283,18 @@ admin= 0 1 topicspostsandpolls + 0 - 186 - Максимальная ширина прикрепленного к сообщению Flash ролика - По умолчанию — 200]]> - 25 + 77 + Max. width of posted Flash movies (in pixels) + + 5 input max_w_flash - 200 + 199 1 @@ -4956,33 +4304,14 @@ admin= 0 1 topicspostsandpolls + 0 - 156 - Отключить регистрацию? - Запретить регистрацию новых пользователей на вашем форуме. - 23 - yes_no - no_reg - - 0 - - - 1 - 44 - - 0 - - 1 - securityandprivacy - - - - 187 - Максимальное количество символов в слове? - Рекомендуется ставить 80-100.]]> - 25 + 87 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 5 input post_wordwrap @@ -4996,33 +4325,14 @@ admin= 0 1 topicspostsandpolls + 0 - 157 - Удалять коды chr(0xCA)? - chr(0xCA) — позволяют создавать «невидимые» пробелы в информации отправляемой форуму. Но в русском языке использовать не рекомендуем, будут проблемы.]]> - 23 - yes_no - strip_space_chr - - 0 - - - 1 - 45 - - 0 - - 1 - securityandprivacy - - - - 188 - Количество смайлов в одной строке таблицы смайлов при создании темы/отправки сообщения - - 25 + 73 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 5 input emo_per_row @@ -5036,54 +4346,14 @@ admin= 0 1 topicspostsandpolls + 0 - 158 - - Отключить возможность вашим пользователям подавать жалобу о некорректном сообщении. - 23 - yes_no - disable_reportpost - - 0 - - - 1 - 46 - - 0 - - 1 - securityandprivacy - - - - 159 - Каким способом администратору получать жалобы? - Куда вы хотите получать жалобы от пользователей? - 23 - dropdown - reportpost_method - - pm - email=На email -pm=Личным сообщением - - 1 - 47 - - 0 - - 1 - securityandprivacy - - - - 189 - Максимальное число цитат в одном сообщении - Используя этот пункт, вы ограничите очень большое количество цитат в сообщении, это исключает возможное «падение» некоторых браузеров. - 25 + 317 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 5 input max_quotes_per_post @@ -5097,35 +4367,16 @@ pm= 1 topicspostsandpolls + 0 - 160 - - Вы можете оставить поле пустым для отключения флуд-контроля.]]> - 23 - input - flood_control - - 0 - - - 1 - 48 - - 1 - - 1 - securityandprivacy - - - - 190 - - n
    минут, то его сообщения объединяются в одно. -Введите кол-во минут, в течение которых такие сообщения склеиваются. -Введите 0, чтобы отключить опцию.]]> - 25 + 336 + + n minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 5 input post_merge_conc @@ -5139,13 +4390,14 @@ pm= 1 topicspostsandpolls + 0
    - 191 - Запретить цитирование цитат? - Эта опция будет удалять любой цитируемый текст при цитировании сообщения, содержащего цитаты. :) - 25 + 84 + Stop Quote Embedding? + ..]]> + 5 yes_no strip_quotes @@ -5159,13 +4411,15 @@ pm= 0 1 topicspostsandpolls + 0 - 192 - Разрешенные к публикации в сообщениях расширения файлов изображений - Разделяйте их, используя запятую (gif,jpeg,jpg)]]> - 25 + 79 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 5 input img_ext @@ -5179,73 +4433,14 @@ pm= 0 1 topicspostsandpolls + 0 - 161 - Разрешить пользователям просматривать список активных пользователей? - Если включить эту опцию, то пользователи не смогут просматривать список активных пользователей, где кто находится, кто что делает на форуме. - 23 - yes_no - allow_online_list - - 1 - - - 1 - 50 - Секретность - 0 - - 1 - securityandprivacy - - - - 162 - Отключить возможность основной группе администраторов видеть анонимных пользователей в онлайне? - Скрытые пользователи имеют * после имени пользователя - 23 - yes_no - disable_admin_anon - - 0 - - - 1 - 51 - - 0 - - 1 - securityandprivacy - - - - 163 - Отключить возможность основной группе администраторов видеть IP-адреса пользователей в онлайне? - - 23 - yes_no - disable_online_ip - - 0 - - - 1 - 53 - - 1 - - 1 - securityandprivacy - - - - 193 - Показывать прикрепленные изображения в сообщении? - При отключении этой опции прикрепленное изображение будет выводится в тексте сообщения как ссылка. - 25 + 80 + Show uploaded images in post as images? + + 5 yes_no show_img_upload @@ -5254,18 +4449,19 @@ pm= 1 60 - Опции прикрепленных изображений + Attached Image Options 0 0 1 topicspostsandpolls + 0 - 194 - Показывать эскизы прикрепленных изображений? - Если опция выше включена, то включение еще и этой будет отображать в сообщении только уменьшенную копию прикрепленного изображения, которая экономит трафик и гораздо быстрее загружается. Нажав на уменьшенную копию пользователь загрузит полномасштабное изображение. - 25 + 81 + Show thumbnail of attached image? + + 5 yes_no siu_thumb @@ -5279,13 +4475,14 @@ pm= 0 1 topicspostsandpolls + 0 - 195 - - Если обе опции выше включены, то вы можете здесь определить максимальную ширину эскиза. Если прикрепляемое изображение будет меньше по размерам, то он будет попросту сразу отображено без каких-либо действий с ним. - 25 + 180 + + + 5 input siu_width @@ -5299,13 +4496,14 @@ pm= 1 topicspostsandpolls + 0 - 196 - - Если обе опции выше включены, то вы можете здесь определить максимальную высоту эскиза. Если прикрепляемое изображение будет меньше по размерам, то он будет попросту сразу отображено без каких-либо действий с ним. - 25 + 83 + + + 5 input siu_height @@ -5319,33 +4517,35 @@ pm= 0 1 topicspostsandpolls + 0 - 197 - - Это для тех случаев, когда сообщения гостя публикуются от имени, схожего с именем зарегистрированного пользователя, что возможно сразу и не заметить... Эта опция сделает имена различными, что предотвратит подобные проблемы. - 25 + 85 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 input guest_name_pre - Гость_ + Guest_ 1 70 - Префиксы и суффиксы для имен гостей + Guest Username 0 0 1 topicspostsandpolls + 0 - 198 - - Это для тех случаев, когда сообщения гостя публикуются от имени, схожего с именем зарегистрированного пользователя, что возможно сразу и не заметить... Эта опция сделает имена различными, что предотвратит подобные проблемы. - 25 + 86 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 input guest_name_suf @@ -5359,13 +4559,14 @@ pm= 0 1 topicspostsandpolls + 0 - 199 - + 88 + - 25 + 5 yes_no poll_tags @@ -5374,18 +4575,19 @@ pm= 1 80 - Настройки опросов + Poll Options 0 0 1 topicspostsandpolls + 0 - 200 - Максимальное количество вопросов в одном опросе - Введите максимальное количество вопросов, которые пользователи могут создать в одном опросе. - 25 + 347 + Max. Poll Questions Per Poll + Enter the maximum number of questions you wish to allow your members to create in a single poll. + 5 input max_poll_questions @@ -5399,13 +4601,14 @@ pm= 1 topicspostsandpolls + 0 - 201 - Максимальное количество вариантов ответа в опросе - - 25 + 89 + Maximum number of poll choices allowed? + + 5 input max_poll_choices @@ -5419,13 +4622,14 @@ pm= 0 1 topicspostsandpolls + 0 - 202 - Разрешить пользователям просматривать результаты опроса, не теряя права голоса в нем? + 90 + Allow members to view the results of a poll without losing their vote? - 25 + 5 yes_no allow_result_view @@ -5439,13 +4643,14 @@ pm= 0 1 topicspostsandpolls + 0 - 203 - Разрешить создателю опроса голосовать в нем? - - 25 + 237 + Allow poll creator to vote in own poll? + + 5 yes_no allow_creator_vote @@ -5459,13 +4664,14 @@ pm= 1 topicspostsandpolls + 0 - 204 - Количество часов с момента создания темы, в течение которых для создателя открыта возможность добавить к ней опрос - Эта опция не распространяется на администраторов и супермодераторов. Они могу добавлять, когда захотят. :) - 25 + 92 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 5 input startpoll_cutoff @@ -5479,13 +4685,14 @@ pm= 0 1 topicspostsandpolls + 0 - 205 - Разрешить пользователям использовать Rich Text редактор? - - 25 + 330 + Allow members to use Rich Text Editing? + + 5 yes_no posting_allow_rte @@ -5494,18 +4701,19 @@ pm= 1 100 - Настройки редактора + Editor Settings 0 1 topicspostsandpolls + 0 - 206 - - - 25 + 348 + + + 5 input rte_width @@ -5519,13 +4727,14 @@ pm= 1 topicspostsandpolls + 0 - 207 - - - 25 + 349 + + + 5 input rte_pm_width @@ -5539,8 +4748,990 @@ pm= 1 topicspostsandpolls + 0 + + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + + + + 157 + Enable the trashcan? + + 14 + yes_no + forum_trash_can_enable + + 1 + + + 1 + 1 + + 0 + + 1 + trashcansetup + 0 + + + + 158 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 14 + dropdown + forum_trash_can_id + + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 159 + Use trashcan for ROOT administrators? + + 14 + yes_no + forum_trash_can_use_radmin + + 1 + + + 1 + 3 + + 0 + + 1 + trashcansetup + 0 + + + + 160 + Use trashcan for normal administrators? + + 14 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 + + + + 161 + Use trashcan for global moderators? + + 14 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 + + + + 162 + Use trashcan for forum moderators? + + 14 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 + + + + 1 + userprofiles + User Profiles + + 0 + + + + 41 + Allow members to choose skins? + + 4 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 42 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 4 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 43 + Maximum length (in bytes) for the location field entry + + 4 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 44 + Maximum length (in bytes) for the interests field entry + + 4 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 45 + Maximum length (in bytes) for user signatures + + 4 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 46 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 4 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 47 + Allow BBCode in signatures? + + 4 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 48 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 49 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
    Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
    + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
    + + + 53 + Allow the use of avatars? + + 4 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 54 + Allowed avatar image URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 55 + Allow users to use remote URL avatars? + + 4 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 56 + Max. file size for avatar uploads? (K) + + 4 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 57 + Maximum avatar dimensions + xHEIGHT)]]> + 4 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 58 + Default sizes for gallery avatars? + xHEIGHT)]]> + 4 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 59 + Number of columns for the avatar gallery? + + 4 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 51 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 52 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 4 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 60 + Allow GUESTS to view signatures? + + 4 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 61 + Allow GUESTS to view posted images? + + 4 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 62 + Allow GUESTS to view user avatars? + + 4 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + + + 1 + warnsetup + Warn Set-up + This section will allow you to set up the warning system. + 0 + + + + 142 + Enable the warning system? + + 13 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 143 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 13 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 144 + Maximum Warn Level + + 13 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 145 + Protected Groups + You may choose more than one.]]> + 13 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 146 + Allow all other non-protected groups to see their own warn level and reasons? + + 13 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 147 + Allow warnings to continue once the minimum or maximum has been reached? + + 13 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 148 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 13 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day moderators can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 153 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 154 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 155 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 156 + Number of times per day a global moderator can warn a single member + + 13 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 +
    \ No newline at end of file diff --git a/upload/install/installfiles/loginauth.xml b/upload/install/installfiles/loginauth.xml new file mode 100644 index 00000000..232f7867 --- /dev/null +++ b/upload/install/installfiles/loginauth.xml @@ -0,0 +1,89 @@ + + + + + 1 + IPB Internal + The standard method of authentication + internal + + + passthrough + + 1137078935 + 0 + 1 + 0 + 1 + 0 + 1 + username + + + + + + 2 + LDAP Authentication + LDAP / Active Directory Authentication + ldap + + + passthrough + + 1137078935 + 1 + 0 + 1 + 1 + 0 + 1 + username + + + + + + 3 + External Database + Authentication via an external database + external + + + passthrough + + 1137078935 + 1 + 0 + 1 + 1 + 0 + 1 + username + + + + + + 4 + IP.Converge + Internal Use Only + ipconverge + + + passthrough + + 0 + 0 + 0 + 1 + 1 + 0 + 1 + username + + + + + + \ No newline at end of file diff --git a/upload/install/installfiles/macro.xml b/upload/install/installfiles/macro.xml new file mode 100644 index 00000000..4b20f0f5 --- /dev/null +++ b/upload/install/installfiles/macro.xml @@ -0,0 +1,470 @@ + + + + + A_LOCKED_B + /t_closed.gif' border='0' alt='Closed Topic' />]]> + + + + A_MOVED_B + /t_moved.gif' border='0' alt='Moved Topic'>]]> + + + + A_POLLONLY_B + /t_closed.gif' border='0' alt='Poll Only' />]]> + + + + A_POST + /t_new.gif' border='0' alt='Start new topic' />]]> + + + + A_REPLY + /t_reply.gif' border='0' alt='Reply to this topic' />]]> + + + + A_POLL + /t_poll.gif' border='0' alt='Start Poll' />]]> + + + + A_STAR + /pip.gif' border='0' alt='*' />]]> + + + + B_HOT + /f_hot.gif' border='0' alt='Hot topic' />]]> + + + + B_HOT_NN + /f_hot_no.gif' border='0' alt='No new' />]]> + + + + B_LOCKED + /f_closed.gif' border='0' alt='Closed' />]]> + + + + B_MOVED + /f_moved.gif' border='0' alt='Moved' />]]> + + + + B_NEW + /f_norm.gif' border='0' alt='New Posts' />]]> + + + + B_NORM + /f_norm_no.gif' border='0' alt='No New Posts' />]]> + + + + B_PIN + /f_pinned.gif' border='0' alt='Pinned' />]]> + + + + B_POLL + /f_poll.gif' border='0' alt='Poll' />]]> + + + + B_POLL_NN + /f_poll_no.gif' border='0' alt='No new votes' />]]> + + + + B_HOT_DOT + /f_hot_dot.gif' border='0' alt='New Posts'>]]> + + + + B_NEW_DOT + /f_norm_dot.gif' border='0' alt='No New Posts'>]]> + + + + B_HOT_NN_DOT + /f_hot_no_dot.gif' border='0' alt='No New Posts*'>]]> + + + + B_NORM_DOT + /f_norm_no_dot.gif' border='0' alt='No New Posts*'>]]> + + + + B_POLL_DOT + /f_poll_dot.gif' border='0' alt='Poll*'>]]> + + + + B_POLL_NN_DOT + /f_poll_no_dot.gif' border='0' alt='No New Votes*'>]]> + + + + C_LOCKED + /bf_readonly.gif' border='0' alt='Read Only Forum' />]]> + + + + C_OFF + /bf_nonew.gif' border='0' alt='No New Posts' />]]> + + + + C_OFF_CAT + /bc_nonew.gif' border='0' alt='No New Posts' />]]> + + + + C_OFF_RES + /br_nonew.gif' border='0' alt='No New Posts' />]]> + + + + C_ON + /bf_new.gif' border='0' alt='New Posts' />]]> + + + + C_ON_CAT + /bc_new.gif' border='0' alt='New Posts' />]]> + + + + C_ON_RES + /br_new.gif' border='0' alt='New Posts' />]]> + + + + F_ACTIVE + /user.gif' border='0' alt='Active Users' />]]> + + + + F_NAV_SEP +  ]]> + + + + F_NAV + /nav.gif' border='0' alt='>' />]]> + + + + F_STATS + /stats.gif' border='0' alt='Board Stats' />]]> + + + + NO_PHOTO + /nophoto.gif' border='0' alt='No Photo' />]]> + + + + CAMERA + /camera.gif' border='0' alt='Photo' />]]> + + + + M_READ + /f_norm_no.gif' border='0' alt='Read Msg' />]]> + + + + M_UNREAD + /f_norm.gif' border='0' alt='Unread Msg' />]]> + + + + P_AOL + /p_aim.gif' border='0' alt='AOL' />]]> + + + + P_DELETE + /p_delete.gif' border='0' alt='Delete Post' />]]> + + + + P_EDIT + /p_edit.gif' border='0' alt='Edit Post' />]]> + + + + P_EMAIL + /p_email.gif' border='0' alt='Email Poster' />]]> + + + + P_ICQ + /p_icq.gif' border='0' alt='ICQ' />]]> + + + + P_MSG + /p_pm.gif' border='0' alt='PM' />]]> + + + + P_QUOTE + /p_quote.gif' border='0' alt='Quote Post' />]]> + + + + P_WEBSITE + /p_www.gif' border='0' alt='Users Website' />]]> + + + + P_YIM + /p_yim.gif' border='0' alt='Yahoo' />]]> + + + + P_REPORT + /p_report.gif' border='0' alt='Report Post' />]]> + + + + P_MSN + /p_msn.gif' border='0' alt='MSN' />]]> + + + + CAT_IMG + /nav_m.gif' border='0' alt='>' width='8' height='8' />]]> + + + + NEW_POST + /newpost.gif' border='0' alt='Goto first unread' title='Goto first unread' hspace=2>]]> + + + + LAST_POST + /lastpost.gif' border='0' alt='Last Post' />]]> + + + + BR_REDIRECT + /br_redirect.gif' border='0' alt='Redirect' />]]> + + + + INTEGRITY_MSGR + /p_im.gif' border='0' alt='Integrity Messenger IM' />]]> + + + + ADDRESS_CARD + /addresscard.gif' border='0' alt='Mini Profile' />]]> + + + + T_QREPLY + /t_qr.gif' border='0' alt='Fast Reply' />]]> + + + + T_OPTS + /t_options.gif' border='0' alt='Topic Options' />]]> + + + + CAL_NEWEVENT + /cal_newevent.gif' border='0' alt='Add New Event' />]]> + + + + F_RULES + /forum_rules.gif' border='0' alt='Forum Rules' />]]> + + + + WARN_0 + /warn0.gif' border='0' alt='-----' />]]> + + + + WARN_1 + /warn1.gif' border='0' alt='X----' />]]> + + + + WARN_2 + /warn2.gif' border='0' alt='XX---' />]]> + + + + WARN_3 + /warn3.gif' border='0' alt='XXX--' />]]> + + + + WARN_4 + /warn4.gif' border='0' alt='XXXX-' />]]> + + + + WARN_5 + /warn5.gif' border='0' alt='XXXXX' />]]> + + + + WARN_ADD + /warn_add.gif' border='0' alt='+' />]]> + + + + WARN_MINUS + /warn_minus.gif' border='0' alt='-' />]]> + + + + PB_USER_ONLINE + /p_online.gif' border='0' alt='User is online!' />]]> + + + + PB_USER_OFFLINE + /p_offline.gif' border='0' alt='User is offline' />]]> + + + + ATTACH_ICON + /attachicon.gif' border='0' alt='Topic has attachments' />]]> + + + + MSG_FOLDER + /msg_folder.gif' border='0' alt='-' />]]> + + + + ITEM_START + /nav_m_dark.gif' border='0' alt='.' />]]> + + + + ACTIVE_LIST_SEP + , + + + + BC_QUEUED_POSTS + /bc_queued.gif' alt='*' border='0' />]]> + + + + A_APOLL + /t_addpoll.gif' border='0' alt='Add Poll' />]]> + + + + F_CALEN + /calen.gif' border='0' alt='calendar' />]]> + + + + E_PLUS + /exp_plus.gif' border='0' alt='Expand' />]]> + + + + E_MINUS + /exp_minus.gif' border='0' alt='Collapse' />]]> + + + + test + test + + + + P_UP + /p_up.gif' border='0' alt='Go to the top of the page' />]]> + + + + POST_SNAPBACK + /post_snapback.gif' alt='*' border='0' />]]> + + + + P_CARD + /p_card.gif' border='0' alt='Profile Card' />]]> + + + + PRO_AIM + /profile_aim.gif' border='0' alt='AIM' />]]> + + + + PRO_ITEM + /profile_item.gif' border='0' alt='Profile Item' />]]> + + + + PRO_MSN + /profile_msn.gif' border='0' alt='MSN' />]]> + + + + PRO_ICQ + /profile_icq.gif' border='0' alt='ICQ' />]]> + + + + PRO_YIM + /profile_yahoo.gif' border='0' alt='Yahoo' />]]> + + + + PRO_CONTACT + /icon_msg_nonew.gif' border='0' alt='Contact' />]]> + + + + BAR_LEFT + /bar_left.gif' border='0' alt='*' />]]> + + + + BAR_RIGHT + /bar_right.gif' border='0' alt='*' />]]> + + + + CAL_GOTO + /cal_goto.gif' border='0' alt='Goto Month' />]]> + + + + F_NORM_HOT + f_hot_no.gif + + + + F_CLOSED + f_closed.gif + + + + F_NORM + f_norm_no.gif + + + + \ No newline at end of file diff --git a/upload/install/installfiles/sequence.xml b/upload/install/installfiles/sequence.xml new file mode 100644 index 00000000..dd7d68ec --- /dev/null +++ b/upload/install/installfiles/sequence.xml @@ -0,0 +1,32 @@ + + + requirements + Requirements + 0 + + + eula + EULA + 1 + + + address + Addresses + 2 + + + db + DB Details + 3 + + + admin + Admin Account + 4 + + + install + Installation + 5 + + \ No newline at end of file diff --git a/upload/install/installfiles/settings.xml b/upload/install/installfiles/settings.xml new file mode 100644 index 00000000..7bd8651c --- /dev/null +++ b/upload/install/installfiles/settings.xml @@ -0,0 +1,6604 @@ + + + + + 1 + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. + 0 + + + + 370 + Show link in header to guidelines? + + 17 + yes_no + gl_show + + + + + 1 + 1 + + 0 + + 1 + boardguidelines + 0 + + + + 175 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 17 + input + gl_link + + + + + 1 + 2 + + 0 + + 1 + boardguidelines + 0 + + + + 176 + Title to use in header? + + 17 + input + gl_title + + + + + 1 + 3 + + 0 + + 1 + boardguidelines + 0 + + + + 177 + If not using external link; guidelines/rules text + HTML Enabled + 17 + editor + gl_guidelines + + + + + 1 + 4 + + 0 + + 0 + boardguidelines + 0 + + + + 1 + boardoffline + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. + 0 + + + + 163 + Turn the board offline? + + 15 + yes_no + board_offline + + 0 + + + 1 + 1 + + 0 + + 1 + boardoffline + 0 + + + + 164 + The offline message to display + + 15 + editor + offline_msg + + + + + 1 + 2 + + 0 + + 0 + boardoffline + 0 + + + + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + 0 + + + + 122 + Show birthdays on the main calendar view? + + 9 + yes_no + show_bday_calendar + + 1 + + + 1 + 1 + + 0 + + 1 + calendar + 0 + + + + 123 + + + 9 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 124 + Auto hide when no birthdays to show? + + 9 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 125 + Show forthcoming calendar events? + + 9 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 126 + Auto hide when no events to show? + + 9 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 127 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 9 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 128 + + This applies to view calendar / post event. + 9 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 129 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 9 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 380 + Start Calendar on Monday? + The default behavior for the calendar is to start the week on Sunday. By setting this to yes, you will start the week on Monday instead. + 9 + yes_no + ipb_calendar_mon + + 0 + + + 1 + 9 + + 0 + + 1 + calendar + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + 116 + Cookie Domain + .your-domain.com for global cookie]]> + 7 + input + cookie_domain + + + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 117 + Cookie Name Prefix + Allows multiple boards on one host. + 7 + input + cookie_id + + + + + 1 + 2 + + 0 + + 1 + cookies + 0 + + + + 118 + Cookie Path + Relative path from domain to root IBF dir + 7 + input + cookie_path + + + + + 1 + 3 + + 0 + + 1 + cookies + 0 + + + + 361 + Create a stronghold auto-log in cookie? + If enabled, when a member logs in, an additional cookie is set which contains geographic information in a crypt to make cookie stealing almost impossible. Only turn off if users cannot stay logged in + 7 + yes_no + cookie_stronghold + + 1 + + + 1 + 4 + Advanced Options + 1 + + 1 + cookies + 0 + + + + 1 + coppa + COPPA Set-up + COPPA.]]> + 0 + + + + 119 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 8 + yes_no + use_coppa + + 0 + + + 1 + 1 + + 0 + + 1 + coppa + 0 + + + + 120 + Fax number to receive COPPA forms + + 8 + input + coppa_fax + + + + + 1 + 2 + + 0 + + 1 + coppa + 0 + + + + 121 + Mail address to receive COPPA forms + + 8 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + 24 + Allow custom profile field info be used in TopicView? + + 2 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 22 + Cache calendar and birthdays? + + 2 + yes_no + cache_calendar + + 1 + + + 1 + 2 + + 0 + 0 + 1 + cpusaving + 0 + + + + 20 + + + 2 + input + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 181 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 2 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 316 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 2 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 25 + Mark topics a user has posted when displaying a forum? + + 2 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 26 + + This save 1 query per forum view + 2 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + (This save 1 query per topic view) + 2 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 19 + Show Active Users + + 2 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 29 + Allow users (where allowed) to use search? + + 2 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 23 + Show Board Totals? + Show the board totals at the footer of the board index page. + 2 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 28 + Server Load Limit + Can be left blank for no limit]]> + 2 + input + load_limit + + + + + 1 + 10 + + 0 + 0 + 1 + cpusaving + 0 + + + + 32 + Print HTTP no-cache headers? + Note: The setting 'Print HTTP Headers?' found under General Configuration needs to be enabled for this setting to have any effect.]]> + 2 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 30 + + Leave blank to return full post with proper formatting]]> + 2 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 2 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + 34 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 3 + dropdown + time_offset + + 0 + + ipsclass->lang; + $this->ipsclass->lang = array(); + + $this->ipsclass->load_language('lang_ucp'); + + foreach( $this->ipsclass->lang as $off => $words ) + { + if (preg_match("/^time_(\\S+)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } + + $this->ipsclass->lang = $tmp; +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 35 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 3 + input + time_adjust + + 0 + + ipsclass->get_date(time(), 'LONG',1); +$r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ); +}]]> + 1 + 2 + + 1 + 0 + 1 + date + 0 + + + + 36 + Short time format + PHP Date]]> + 3 + input + clock_short + + jS F Y - h:i A + + + 1 + 3 + + 0 + 0 + 1 + date + 0 + + + + 37 + Join date time format + PHP Date]]> + 3 + input + clock_joined + + j-F y + + + 1 + 4 + + 0 + 0 + 1 + date + 0 + + + + 38 + Long time format + PHP Date]]> + 3 + input + clock_long + + M j Y, h:i A + + + 1 + 5 + + 0 + 0 + 1 + date + 0 + + + + 39 + Use relative dates? + + 3 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 40 + Relative time format + + 3 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 333 + DST Auto Detection + + 3 + yes_no + time_dst_auto_correction + + 1 + + + 1 + 8 + DST Correction + 1 + + 1 + date + 0 + + + + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + 135 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 12 + input + email_in + + + + + 1 + 1 + Email Addresses + 0 + + 1 + email + 0 + + + + 136 + Board outgoing email address + This is the email address that all mail appears to come from. + 12 + input + email_out + + + + + 1 + 2 + + 1 + + 1 + email + 0 + + + + 137 + Mail Delivery Method + + 12 + dropdown + mail_method + + mail + mail=PHP Mail() +smtp=SMTP + + 1 + 3 + + 0 + + 1 + email + 0 + + + + 138 + Over-ride SMTP Host? + + 12 + input + smtp_host + + localhost + + + 1 + 4 + SMTP Set-up + 0 + + 1 + email + 0 + + + + 139 + Over-ride SMTP Port? + Default is 25 + 12 + input + smtp_port + + 25 + + + 1 + 5 + + 0 + + 1 + email + 0 + + + + 187 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 12 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 140 + SMTP UserName + + 12 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 141 + SMTP Password + + 12 + input + smtp_pass + + + + + 1 + 7 + + 1 + + 1 + email + 0 + + + + 337 + PHP Mail Extra Options + + 12 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 + + + + 1 + general + General Configuration + These settings control the basics of the board such as URLs and paths. + 0 + + + + 4 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 1 + input + board_name + + Invision Power Board + + + 1 + 1 + + 0 + 0 + 1 + general + 0 + + + + 6 + Website Name + + 1 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 7 + Website Address + + 1 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 9 + Upload URL + + 1 + input + upload_url + + + + + 1 + 5 + Other URLs and Paths + 0 + 0 + 1 + general + 0 + + + + 11 + + This is a path, not a URL. + 1 + input + upload_dir + + + upload_dir + + 1 + 7 + + 0 + 0 + 1 + general + 0 + + + + 265 + Caching PATH + This can be left blank +
    This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
    + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
    + + + 338 + Document character set + Enter the document character set for all HTML pages. + 1 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 264 + Image URL + This can be left blank +
    This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
    + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
    + + + 12 + Print HTTP Headers? + + 1 + yes_no + print_headers + + 0 + + + 1 + 9 + + 1 + 0 + 1 + general + 0 + + + + 14 + Type of auto-redirect + + 1 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection + 0 + 0 + 1 + general + 0 + + + + 183 + + + 1 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 + + 1 + general + 0 + + + + 15 + Debug level + This controls the debug information shown at the footer of your board. + 1 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 13 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 1 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 16 + Enable SQL Debug Mode + + 1 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 17 + Use Safe Mode Skins? + + 1 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 + + + + 18 + Number Formatting + (EG: USA & UK use a comma)]]> + 1 + dropdown + number_format + + , + + + 1 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 345 + Decimal Seperator + Character used to seperate decimals in numbers. + 1 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 182 + GD Version + + 1 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 + + 0 + + 1 + general + 0 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + 202 + Chat Site ID / Account No. + If you are using Parachat v7 or greater, enter your site ID (1234, for example). If you are using an older version of Parachat please enter your group number (ip0000, for example) + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + 0 + + + + 351 + Custom Applet Codebase URL + This should be left blank unless you have a local +ParaChat Server installation or hosted ParaChat Enterprise solution.]]> + 21 + input + parachat_codebase_url + + + + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + Lobby + + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 350 + Chat Room Version + + 21 + dropdown + parachat_version + + 6 + 6=Parachat v6 or below +7=Parachat v7 or greater + + 1 + 3 + + 1 + + 1 + chat04 + 0 + + + + 204 + + + 21 + yes_no + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + chat04 + 0 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 5 + + 1 + + 1 + chat04 + 0 + + + + 209 + Chat Room Dimensions (WIDTH)? + + 21 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat04 + 0 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat04 + 0 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page + + 1 + 12 + + 0 + + 1 + chat04 + 0 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
    <param name="cmd.BeepLeave" value="true"> +
    Please refer to the Invision Chat documentation for more info.]]>
    + 21 + textarea + chat04_customparams + + + + + 1 + 13 + + 0 + + 0 + chat04 + 0 +
    + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 254 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) + 21 + dropdown + chat04_default_lang + + english.conf + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German + + 1 + 99 + Version 6 Settings (Not required for v7) + 0 + + 0 + chat04 + 0 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 100 + + 0 + + 1 + chat04 + 0 + + + + 255 + + + 21 + yes_no + chat04_plainmode + + 0 + + + 1 + 102 + + 0 + + 0 + chat04 + 0 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 130 + + 0 + + 0 + chat04 + 0 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 131 + + 0 + + 0 + chat04 + 0 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 132 + + 0 + + 0 + chat04 + 0 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 133 + + 0 + + 0 + chat04 + 0 + + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 135 + + 1 + + 0 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat + 0 + + + + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 190 + + + 20 + yes_no + chat_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + chat + 0 + + + + 191 + + + 20 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + chat + 0 + + + + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 + dropdown + chat_refresh_list + + 15 + 5=5 +10=10 +15=15 +30=30 + + 1 + 5 + + 1 + + 1 + chat + 0 + + + + 193 + Changed your IPChat control panel password? + + 20 + input + chat_pass_md5 + + + + + 1 + 6 + + 0 + + 1 + chat + 0 + + + + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 + input + chat_pass_md5_new + + + + + 1 + 7 + + 0 + + 1 + chat + 0 + + + + 195 + Chat Room Dimensions (WIDTH)? + + 20 + input + chat_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat + 0 + + + + 196 + Chat Room Dimensions (HEIGHT)? + + 20 + input + chat_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 + input + chat_poppad + + 50 + + + 1 + 10 + + 0 + + 1 + chat + 0 + + + + 198 + Default Chat Room Interface Language? + + 20 + dropdown + chat_language + + en + en=English +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese + + 1 + 11 + + 1 + + 1 + chat + 0 + + + + 200 + Allow chat access to these groups + You may select more than one + 20 + multi + chat_access_groups + + + #show_groups# + + 1 + 13 + Access Permissions + 0 + + 1 + chat + 0 + + + + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 + multi + chat_admin_groups + + + #show_groups# + + 1 + 14 + + 1 + + 1 + chat + 0 + + + + 1 + ipconverge + IP.Converge Settings + Hidden settings + 1 + + + + 352 + IP.Converge Enabled? + + 32 + yes_no + ipconverge_enabled + + 0 + + + 1 + 1 + + 0 + + 1 + ipconverge + 0 + + + + 353 + IP.Converge URL + The root URL of the converge application. + 32 + input + ipconverge_url + + + + + 1 + 2 + + 0 + + 1 + ipconverge + 0 + + + + 354 + IP.Converge Product ID + The product ID assigned from the IP.Converge server + 32 + input + ipconverge_pid + + + + + 1 + 3 + + 0 + + 1 + ipconverge + 0 + + + + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 247 + Turn off copyright? + + 25 + yes_no + ips_cp_purchase + + 0 + + + 1 + 2 + + 0 + + 1 + ipbcopyright + 0 + + + + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + 1 + ipbreg + IPB License Settings + This section will allow you to edit your IPB registered license settings. + 0 + + + + 245 + IPB Registered License Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + ipbreg + 0 + + + + 243 + Display registered to line? + + 24 + yes_no + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + ipbreg + 0 + + + + 244 + Show as licensed to... + Matthew Mecham, IPS, Inc.]]> + 24 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + ipbreg + 0 + + + + 1 + ipbloginhandler + IPB Log in Handler + Hidden settings, so there. + 1 + + + + 355 + Log in Method Key + + 33 + input + ipbli_key + + internal + + + 1 + 1 + + 0 + + 1 + ipbloginhandler + 0 + + + + 356 + Log In User Name Type + + 33 + input + ipbli_usertype + + username + + + 1 + 2 + + 0 + + 1 + ipbloginhandler + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on + + 1 + + + 1 + 1 + + 0 + + 1 + ipbportal + 0 + + + + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 0 + ipbportal + 0 + + + + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + ipbportal + 0 + + + + 357 + Show User / Guest Info box? + + 22 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + ipbportal + 0 + + + + 358 + Show search box? + + 22 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + ipbportal + 0 + + + + 359 + Enable skin selection choice dropdown? + + 22 + yes_no + csite_skinchange_show + + 1 + + + 1 + 15 + + 0 + + 0 + ipbportal + 0 + + + + 233 + Show Site Navigation Menu? + + 22 + yes_no + csite_nav_show + + 1 + + + 1 + 18 + + 0 + + 0 + ipbportal + 0 + + + + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

    {board_url} will convert into your board]]>
    + 22 + textarea + csite_nav_contents + + + + + 1 + 19 + + 0 + + 0 + ipbportal + 0 +
    + + + 235 + Show Affiliates / Favoured Sites box? + + 22 + yes_no + csite_fav_show + + 0 + + + 1 + 20 + + 0 + + 0 + ipbportal + 0 + + + + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 + textarea + csite_fav_contents + + + + + 1 + 21 + + 1 + + 0 + ipbportal + 0 + + + + 1 + log_prune + Log Pruning + Controls to determine which (if any) logs you wish to regularly prune. + 0 + + + + 381 + Prune Spider Logs? + Do you wish to prune spider logs regularly (default every 30 days)? + 34 + yes_no + ipb_prune_spider + + 0 + + + 1 + 10 + Prune Options + 0 + + 1 + log_prune + 0 + + + + 382 + Prune Task Logs? + Do you wish to prune task logs regularly (default every 30 days)? + 34 + yes_no + ipb_prune_task + + 0 + + + 1 + 20 + + 0 + + 1 + log_prune + 0 + + + + 383 + Prune Admin Logs? + Do you wish to prune admin logs regularly (default every 30 days)? + 34 + yes_no + ipb_prune_admin + + 0 + + + 1 + 30 + + 0 + + 1 + log_prune + 0 + + + + 384 + Prune Moderator Logs? + Do you wish to prune moderator logs regularly (default every 30 days)? + 34 + yes_no + ipb_prune_mod + + 0 + + + 1 + 40 + + 0 + + 1 + log_prune + 0 + + + + 385 + Prune Email Logs? + Do you wish to prune email logs regularly (default every 30 days)? + 34 + yes_no + ipb_prune_email + + 0 + + + 1 + 50 + + 0 + + 1 + log_prune + 0 + + + + 386 + Prune Email Error Logs + Do you wish to prune email error logs regularly (default every 30 days)? + 34 + yes_no + ipb_prune_emailerror + + 0 + + + 1 + 60 + + 1 + + 1 + log_prune + 0 + + + + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + 130 + Export news topics from which forum? + + 10 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 131 + + + 10 + yes_no + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + 132 + Allow BBCode in messages? + + 11 + yes_no + msg_allow_code + + 1 + + + 1 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 133 + Allow HTML in messages? + + 11 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 134 + Max. number of messages to show per page when viewing message list + The default is 50. + 11 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 387 + Unblockable PM Groups + Members will not be able to block private messages from members in the selected groups. You may select more than one. + 11 + multi + unblockable_pm_groups + + + #show_groups# + + 1 + 4 + + 0 + + 1 + personalmessagesetup + 0 + + + + 388 + + + 11 + multi + override_inbox_full + + + #show_groups# + + 1 + 5 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 31 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + 218 + Forums to export articles from + You may select more than one. + 30 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 219 + Number of articles to show + + 30 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 224 + Number of topics to show + + 30 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + 165 + Enable the search engine spider recognition? + + 16 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 166 + Log all spider visits? + + 16 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 167 + Treat spider/bot as part of which group? + + 16 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 168 + Force spider/bot to use skin + + 16 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 169 + Show spider/bot in the active users list? + + 16 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 171 + Show spider as anonymous + + 16 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 172 + Spider Bot User-Agent + bot=Human Name format.(one per line)
    Example: googlebot=Google.com]]>
    + 16 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
    + + + 1 + searchsetup + Search Set-Up + + 0 + + + + 185 + Type of search to use? + +
    +]]>
    + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
    + + + 186 + Default Search Mode? + This setting will only take effect if using full text searching + 19 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 31 + Minimum search word length + + 19 + input + min_search_word + + 4 + min_search_word + + 1 + 13 + + 0 + 0 + 1 + searchsetup + 0 + + + + 334 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 19 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + 238 + + HTML ENABLED]]> + 6 + editor + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 1 + + 1 + + 0 + securityandprivacy + 0 + + + + 93 + Enable Script/Bot Flood Control? + + 6 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 5 + + 1 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 389 + Guest Posting Bot Control + Do you wish to require guests who post (where allowed) to input a code to confirm their post? + 6 + dropdown + guest_captcha + + 0 + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 6 + + 1 + + 1 + securityandprivacy + 0 + + + + 98 + Allow dynamic images? + + 6 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 363 + Lost Password: Password Method + + 6 + dropdown + lp_method + + random + random=Email Random Password +choose=Allow User to Enter New Password + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 377 + + + 6 + dropdown + login_key_expire + + 7 + 0=Do not expire (not recommended) +3=Expire after 3 days +7=Expire after 7 days +30=Expire after 30 days + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 331 + + + 6 + yes_no + login_change_key + + 1 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 99 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 6 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 332 + + + 6 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 100 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 6 + yes_no + match_browser + + 1 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 390 + Lock user account after how many failed login attempts + +Tip: Set to 0 to disable]]> + 6 + input + ipb_bruteforce_attempts + + 3 + + + 1 + 20 + Brute-force Account Locking + 0 + + 1 + securityandprivacy + 0 + + + + 391 + Reset failed login attempts after how many minutes + +Tip: Set to 0 to not reset failed login attempts until a succesful login occurs]]> + 6 + input + ipb_bruteforce_period + + 15 + + + 1 + 21 + + 0 + + 1 + securityandprivacy + 0 + + + + 392 + Automatically unlock account? + +Tip: Setting this to no will require you to manually unlock accounts under the Management tab]]> + 6 + yes_no + ipb_bruteforce_unlock + + 1 + + + 1 + 22 + + 1 + + 1 + securityandprivacy + 0 + + + + 101 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 6 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 102 + Allow images to be posted? + Advanced programmers can force images to run as scripts. Invision Power Board limits damage by this method however. This should only be disabled as an extreme measure. + 6 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 103 + Allow flash movies in posts and avatars? + + 6 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 362 + Remove the ACP link from the board + + 6 + yes_no + security_remove_acp_link + + 0 + + + 1 + 33 + + 0 + + 1 + securityandprivacy + 0 + + + + 393 + Characters allowed in usernames +
    +To allow only alphanumeric usernames, use: a-zA-Z0-9]]>
    + 6 + input + username_characters + + + + + 1 + 37 + + 0 + + 1 + securityandprivacy + 0 +
    + + + 394 + Error Message to Display + Tip:You can use {chars} to show the characters allowed]]> + 6 + input + username_errormsg + + The name can only contain these characters: {chars} + + + 1 + 38 + + 0 + + 1 + securityandprivacy + 0 + + + + 105 + New registration email validation? + + 6 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 106 + + + 6 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 107 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 6 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 108 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 6 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 109 + Disable new registrations? + + 6 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 111 + + Removes the ability for your members to report a post. + 6 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 112 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 6 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 113 + Allow users to browse the Active Users list? + + 6 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 360 + Disable Anonymous Login + + 6 + yes_no + disable_anonymous + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 114 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 6 + yes_no + disable_admin_anon + + 0 + + + 1 + 52 + + 0 + + 1 + securityandprivacy + 0 + + + + 115 + Disable root admin group viewing online users IP address in online user list? + + 6 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 395 + Display IPB version on your site? + Do you wish to display the version of Invision Power Board you are running in your copyright footer? + 6 + yes_no + ipb_display_version + + 1 + + + 1 + 54 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + 63 + Number of topics per forum page + + 5 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 69 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 5 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 329 + Number of rating votes required to show + + 5 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 68 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 5 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 64 + + + 5 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 65 + Topic prefix for PINNED topics + + 5 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 66 + Topic prefix for MOVED topics + + 5 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 67 + Topic prefix for POLLS + + 5 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 335 + Topic Title Max Length + Maximum topic title length allowed. + 5 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 70 + Number of posts per topic page + + 5 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 179 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 5 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 178 + Default Topic View Mode + + 5 + dropdown + topicmode_default + + linear + linear=Standard +threaded=Outline +linearplus=Linear Plus + + 1 + 22 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 344 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 5 + multi + cannot_ignore_groups + + 4 + #show_groups# + + 1 + 23 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 71 + Order posts within a topic by + + 5 + dropdown + post_order_column + + pid + pid=Post ID +post_date=Post Date + + 1 + 24 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 72 + Order posts within a topic by + + 5 + dropdown + post_order_sort + + asc + asc=Ascending (0-9) +desc=Descending (9-0) + + 1 + 25 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 74 + Max. no. emoticons per post + + 5 + input + max_emos + + 10 + + + 1 + 40 + Making a Post + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 75 + Max. no. images per post + + 5 + input + max_images + + 10 + + + 1 + 41 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 76 + + + 5 + input + max_post_length + + 100 + + + 1 + 42 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 78 + Max. height of posted Flash movies (in pixels) + + 5 + input + max_h_flash + + 199 + + + 1 + 43 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 77 + Max. width of posted Flash movies (in pixels) + + 5 + input + max_w_flash + + 199 + + + 1 + 43 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 87 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 5 + input + post_wordwrap + + 80 + + + 1 + 45 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 73 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 5 + input + emo_per_row + + 3 + + + 1 + 46 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 317 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 5 + input + max_quotes_per_post + + 10 + + + 1 + 48 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 336 + + n
    minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 5 + input + post_merge_conc + + 0 + + + 1 + 49 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 84 + Stop Quote Embedding? + This will remove any quoted text when quoting a post that contains quotes + 5 + yes_no + strip_quotes + + 1 + + + 1 + 49 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 79 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 5 + input + img_ext + + gif,jpeg,jpg,png + + + 1 + 50 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 396 + Use URL Filtering? + If you would like to filter urls based on your blacklist or whitelist settings, enable this. URL filtering allows you to explicitely allow (whitelist) or deny (blacklist) links in topic posts (images and urls). + 5 + yes_no + ipb_use_url_filter + + 0 + + + 1 + 53 + URL Filtering Options + 0 + + 1 + topicspostsandpolls + 0 + + + + 397 + Which filter do you wish to use? + If you have enabled the url filtering, do you wish to use your blacklist or whitelist? You may only use one or the other. + 5 + dropdown + ipb_url_filter_option + + black + white=Whitelist +black=Blacklist + + 1 + 54 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 398 + Whitelist Settings +
    +i.e.: http://www.yourdomain.com*
    +http://*.google.com/*]]>
    + 5 + textarea + ipb_url_whitelist + + + + + 1 + 55 + + 0 + + 1 + topicspostsandpolls + 0 +
    + + + 399 + Blacklist Options +
    +i.e.: http://*.somedomain.com*
    +http://competitor_domain.com*]]>
    + 5 + textarea + ipb_url_blacklist + + + + + 1 + 56 + + 1 + + 1 + topicspostsandpolls + 0 +
    + + + 80 + Show uploaded images in post as images? + + 5 + yes_no + show_img_upload + + 1 + + + 1 + 60 + Attached Image Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 81 + Show thumbnail of attached image? + + 5 + yes_no + siu_thumb + + 1 + siu_thumb + + 1 + 61 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 180 + + + 5 + input + siu_width + + 100 + + + 1 + 62 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 83 + + + 5 + input + siu_height + + 100 + + + 1 + 63 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 85 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 + input + guest_name_pre + + Guest_ + + + 1 + 70 + Guest Username + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 86 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 + input + guest_name_suf + + _* + + + 1 + 71 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 88 + + + 5 + yes_no + poll_tags + + 1 + + + 1 + 80 + Poll Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 347 + Max. Poll Questions Per Poll + Enter the maximum number of questions you wish to allow your members to create in a single poll. + 5 + input + max_poll_questions + + 3 + + + 1 + 81 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 89 + Maximum number of poll choices allowed? + + 5 + input + max_poll_choices + + 20 + + + 1 + 81 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 90 + Allow members to view the results of a poll without losing their vote? + + 5 + yes_no + allow_result_view + + 1 + + + 1 + 82 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 237 + Allow poll creator to vote in own poll? + + 5 + yes_no + allow_creator_vote + + 1 + + + 1 + 83 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 400 + + Do you wish to allow posters who create polls to be able to disallow replies to the poll? + 5 + yes_no + ipb_poll_only + + 0 + + + 1 + 84 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 92 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 5 + input + startpoll_cutoff + + 24 + + + 1 + 84 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 330 + Allow members to use Rich Text Editing? + + 5 + yes_no + posting_allow_rte + + 1 + + + 1 + 100 + Editor Settings + 0 + + 1 + topicspostsandpolls + 0 + + + + 348 + + + 5 + input + rte_width + + 650px + + + 1 + 101 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 349 + + + 5 + input + rte_pm_width + + 500px + + + 1 + 102 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + + + + 157 + Enable the trashcan? + + 14 + yes_no + forum_trash_can_enable + + 1 + + + 1 + 1 + + 0 + + 1 + trashcansetup + 0 + + + + 158 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 14 + dropdown + forum_trash_can_id + + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 159 + Use trashcan for ROOT administrators? + + 14 + yes_no + forum_trash_can_use_radmin + + 1 + + + 1 + 3 + + 0 + + 1 + trashcansetup + 0 + + + + 160 + Use trashcan for normal administrators? + + 14 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 + + + + 161 + Use trashcan for global moderators? + + 14 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 + + + + 162 + Use trashcan for forum moderators? + + 14 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 + + + + 1 + userprofiles + User Profiles + + 0 + + + + 41 + Allow members to choose skins? + + 4 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 401 + Disable group prefix/suffix formatting + This will allow you to globally disable the group prefix and suffix from formatting member names + 4 + yes_no + ipb_disable_group_psformat + + 0 + + + 1 + 2 + + 0 + + 1 + userprofiles + 0 + + + + 42 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 4 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 43 + Maximum length (in bytes) for the location field entry + + 4 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 44 + Maximum length (in bytes) for the interests field entry + + 4 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 45 + Maximum length (in bytes) for user signatures + + 4 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 46 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 4 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 47 + Allow BBCode in signatures? + + 4 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 402 + Default editor type for members + + 4 + dropdown + ips_default_editor + + std + std=Standard Editor +rte=Rich-Text Editor + + 1 + 7 + + 0 + + 1 + userprofiles + 0 + + + + 48 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 49 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
    Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
    + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
    + + + 53 + Allow the use of avatars? + + 4 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 54 + Allowed avatar image URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 55 + Allow users to use remote URL avatars? + + 4 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 56 + Max. file size for avatar uploads? (K) + + 4 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 57 + Maximum avatar dimensions + xHEIGHT)]]> + 4 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 58 + Default sizes for gallery avatars? + xHEIGHT)]]> + 4 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 59 + Number of columns for the avatar gallery? + + 4 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 51 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 52 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 4 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 60 + Allow GUESTS to view signatures when viewing a post? + + 4 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 61 + Allow GUESTS to view posted images when viewing a post? + + 4 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 62 + Allow GUESTS to view user avatars when viewing a post? + + 4 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + + + 340 + + + 4 + yes_no + auth_allow_dnames + + 1 + + + 1 + 30 + Display Name Set-Up + 0 + + 1 + userprofiles + 0 + + + + 403 + Maximum Display Name Length + The maxiumum number of characters that a display name can be. + 4 + input + max_user_name_length + + 26 + + + 1 + 30 + + 0 + + 1 + userprofiles + 0 + + + + 343 + Prohibit Display Names from selecting Log In names + + 4 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 31 + + 1 + + 1 + userprofiles + 0 + + + + 378 + + + 4 + yes_no + pp_show_classic + + 0 + + + 1 + 32 + Personal Portal + 0 + + 1 + userprofiles + 0 + + + + 379 + Allow members to rate each other? + + 4 + yes_no + pp_allow_member_rate + + 1 + + + 1 + 33 + + 1 + + 1 + userprofiles + 0 + + + + 1 + warnsetup + Warn Set-up + This section will allow you to set up the warning system. + 0 + + + + 142 + Enable the warning system? + + 13 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 143 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 13 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 144 + Maximum Warn Level + + 13 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 145 + Protected Groups + You may choose more than one.]]> + 13 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 146 + Allow all other non-protected groups to see their own warn level and reasons? + + 13 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 147 + Allow warnings to continue once the minimum or maximum has been reached? + + 13 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 148 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 13 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day moderators can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 153 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 154 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 155 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 156 + Number of times per day a global moderator can warn a single member + + 13 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 + +
    + +
    \ No newline at end of file diff --git a/upload/install/installfiles/skinsets.xml b/upload/install/installfiles/skinsets.xml new file mode 100644 index 00000000..2391342a --- /dev/null +++ b/upload/install/installfiles/skinsets.xml @@ -0,0 +1,3955 @@ + + + + + 1 + IPB Master Skin Set + 1 + 0 + 0 + external + -1 + + + + 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(style_images/1/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap +{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(style_images/1/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.celltodayshaded, +.celldateshaded, +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.celltodayshaded, +.celldateshaded +{ + background: #E3DFE7; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.celltodayshaded, +.mcelltoday{ + border: 2px solid #8B0000; +} + +.calranged +{ + border: 2px outset #C2CFDF; + background: #C2CFDF; + padding:4px; +} + +.calitem +{ + border-bottom: 1px dotted #C2CFDF; + padding:4px; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +.input-warn, +.input-green, +.input-checkbox, +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +select +{ + margin: 0px; +} + +.input-checkbox +{ + border: none; +} + +.input-warn, +.input-warn-content +{ + border: 1px solid #C00; +} + +.input-ok, +.input-ok-content +{ + border: 1px solid #0C0; +} + +.input-warn-content +{ + padding: 4px; + margin: 4px; + background-color: #FCC; +} + +.input-ok-content +{ + padding: 4px; + margin: 4px; + background-color: #CFC; +} + + +.input-text +{ + color: #900; +} + +input.button{ + margin: 0; + width: auto; + cursor: hand; + cursor: pointer; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; + background: transparent; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0px; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(style_images/1/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 0 auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(style_images/1/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; + width: 98%; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; + width: 98%; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0px; + margin: 0px; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: url(style_images/1/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.maintitle td { + color: #FFF; + font-size: 12px; + font-weight: bold; +} + + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(style_images/1/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + + +td.formbuttonrow, +.pformstrip, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap { + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + + +.errorwrap h4 { + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p { + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(style_images/1/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#logographic{ + background: transparent url(style_images/1/logo4.gif) no-repeat left; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(style_images/1/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; + height: 28px; + text-align: right; +} + +.ipb-top-left-link, +.ipb-top-right-link +{ + background: transparent url(style_images/1/tile_sub-lite.gif); + float: right; + font-size: 10px; + font-weight: bold; + letter-spacing: 0.5px; + margin: 0px; + padding: 7px 0 7px 0; + width: auto; + border-left: 1px solid #dce3ee; +} + +.ipb-top-left-link +{ + float: left; + border-left: 0px; + border-right: 1px solid #dce3ee; +} + +.ipb-top-left-link a:link, +.ipb-top-left-link a:visited, +.ipb-top-right-link a:link, +.ipb-top-right-link a:visited +{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +.ipb-top-left-link a:hover, +.ipb-top-left-link a:active, +.ipb-top-right-link a:hover, +.ipb-top-right-link a:active +{ + background: transparent; + color: #5176B5; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 14px 0px 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +.dny-edit-title +{ + border:0px; + padding:3px; + margin:0px; + background: #D1DCEB; + color: #3A4F6C; +} + + +/* ======================================== */ +/* TABS +/* ======================================== */ + +.tabon +{ + border-top:1px solid #999; + border-left:1px solid #999; + border-right:1px solid #999; + background-color:#FFF; + padding:8px; + padding-bottom:9px; + font-size:10px; + float:left; + width:auto; + margin-top:3px; +} + +.taboff +{ + border-top: 1px solid #777; + border-left: 1px solid #777; + border-right: 1px solid #777; + background-color: #B5C3D9; + color: #333; + padding: 8px; + font-size:10px; + float: left; + width: auto; + margin-top:3px; +} + +.tabon a:link, +.tabon a:visited, +.tabon a:active +{ + text-decoration:none; + color: #000; +} + +.taboff a:link, +.taboff a:visited, +.taboff a:active +{ + text-decoration:none; + color: #333; +} + +.mya-back +{ + background: #072A66; + margin:1px; +} + +.mya-content +{ + background: #FFF; + padding:8px; + margin:1px; + border: 1px solid #777; +} + +.mya-content-tbl +{ + background: #F0F5FA; + border: 1px solid #777; + text-align:left; + font-size:10px; + white-space:nowrap; + margin:1px; +} + +/* -------------------------------- */ +/* Create PM box defaults */ +/* -------------------------------- */ + +.iframeshim +{ + position:absolute; + display:none; + background: #FFF; + filter:alpha(opacity=0); + border:0px; + width:auto; + height:auto; +} + + + +/* -------------------------------- */ +/* Experimental */ +/* -------------------------------- */ + +.popupmenu, +.popupmenu-new +{ + background: #F0F5FA; + border: 1px solid #3A4F6C; + text-align:left; + font-size:10px; + white-space:nowrap; + /*padding:3px 5px 3px 3px;*/ + /*width:300px;*/ +} + +.popupmenu-item +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + border-bottom: 1px solid #C2CFDF; + color: #000000; + font-weight: normal; +} + +.popupmenu-item-last +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + color: #000000; + font-weight: normal; +} + +.popmenubutton-new, +.popmenubutton +{ + width:120px; + white-space:nowrap; + background-color: #C2CFDF; + border:1px solid #3A4F6C; + color: #3A4F6C; + font-weight:bold; + float:right; + height:18px; + text-align:center; + margin:0px; + font-size:11px; + padding:3px; +} + +.popmenubutton-new +{ + float:none; + width:auto; + text-align:left; + height:auto; + padding:3px; + font-weight:normal; + background-color:#EEF2F7; + background-image: url(style_images/1/menu_action_down-padded.gif); + background-repeat: no-repeat; + background-position: right; +} + +.popmenubutton-new-out +{ + padding:4px; +} + +.popupmenu-new +{ + background-color: #DFE6EF; +} + + +.popmenubutton a:link, +.popmenubutton a:visited, +.popmenubutton-new a:link, +.popmenubutton-new a:visited, +.popupmenu-item a:link, +.popupmenu-item a:visited, +.popupmenu-item-last a:link, +.popupmenu-item-last a:visited +{ + color: #3A4F6C; + text-decoration: none; +} + +.popmenubutton a:hover, +.popmenubutton-new a:hover, +.popupmenu-item a:hover, +.popupmenu-item-last a:hover +{ + color: #5176B5; + text-decoration: none; +} + +.popupmenu-category +{ + background: transparent url(style_images/1/tile_sub.gif); + border-top: 1px solid #5176B5; + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +/* -------------------------------- */ +/* Loading box +/* -------------------------------- */ + +#loading-layer-inner +{ + width:220px; + height:28px; + padding:18px 10px 10px 10px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#CCC #666 #666 #CCC; + background-color: #FCF8C7; +} + +/* -------------------------------- */ +/* Message in a bo(x|ttle) +/* -------------------------------- */ + +#ipd-msg-wrapper +{ + display: none; + width: 220px; +} + +#ipd-msg-inner +{ + width:100%; + height:45px; + padding: 6px 4px 4px 4px; + margin: 0px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#ccc #666 #666 #ccc; + background-color: #FCF8C7; + filter:alpha(opacity=75); + opacity:.75 +} + +#ipd-msg-title +{ + width: 100%; + height:20px; + margin: 0px; + padding: 6px 4px 4px 4px; + background: transparent url(style_images/1/css_pp_header.gif); + border: 1px solid #3A4F6C; + border-bottom: 0px; + color: #3A4F6C; + color: #FFF; +} + +.linked-image +{ + margin: 0px; + padding: 0px; + border: 0px; +} + +.resized-linked-image +{ + margin: 4px 0px 0px 0px; + padding: 0px; + background-color: #000; + border: 0px; + color: #FFF; +} + +/* -------------------------------- */ +/* Personal Profile +/* -------------------------------- */ + +.pp-name +{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0px; + padding: 10px; +} + +.pp-name h3 +{ + margin:0px; + padding:0px 0px 5px 0px; + font-size:24px; +} + +.pp-header +{ + background: transparent url(style_images/1/tile_sub.gif); + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + margin: 0px 0px 1px 0px; + padding: 5px; +} + +.pp-title +{ + background: url(style_images/1/css_pp_header.gif); + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-datebox +{ + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-left: 4px; + margin-bottom: 4px; + font-size:24px; + font-weight:bold; + line-height: 100%; + letter-spacing: -1px; + float:right; + width: 80px; +} + +.pp-datebox em +{ + font-size: 10px; + font-weight: normal; + font-style: normal; +} + +.pp-contentbox-back +{ + background-image: url(style_images/1/folder_profile_portal/pp-css-contentblock.gif); + background-repeat: repeat-x; + background-color: #ACBFD9; + padding: 6px; +} + +.pp-contentbox-entry, +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + background-color: #EEF2F7; + border: 1px solid #888888; + line-height: 140%; + padding: 12px; + margin-bottom: 6px; + height: 200px; + overflow: auto; +} + +.pp-contentbox-entry-noheight-sel +{ + background-color:#FCECCD; +} + +.pp-contentbox-entry-noheight-mod +{ + background-color:#FDF1DA; +} + +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + height: auto; +} + +.pp-image-thumb-wrap, +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 52px; + height: 52px; + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 27px; + height: 27px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap-floatright +{ + float:right; +} + +.pp-tiny-text +{ + color: gray; + font-size: 10px; +} + +.pp-mini-content-entry, +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + background-color: #F5F9FD; + padding: 6px; + border-bottom: 1px dotted #555555; + clear:both; + width: auto; + height: 60px; +} + +.pp-mini-entry-noheight-shaded +{ + background-color: #E3DFE7; +} + +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + height: auto; +} + +.pp-tabclear, +.pp-maintitle +{ + background: url(style_images/1/css_pp_header.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-tabclear +{ + border:0px; + border-right: 1px solid #072A66; + border-left: 1px solid #072A66; +} + +.pp-tabon +{ + border-top:1px solid #3363A1; + border-left:1px solid #3363A1; + border-right:1px solid #3363A1; + background-color:#6696D6; + color:#FFFFFF; + padding:8px; + float:left; + width:auto; + background-image: url(style_images/1/css_pp_tab_on.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-taboff, +.pp-tabshaded +{ + border-top: 1px solid #759BC7; + border-left: 1px solid #759BC7; + border-right: 1px solid #759BC7; + background-color: #3363A1; + color: #3363A1; + padding:8px; + float: left; + width: auto; + background-image: url(style_images/1/css_pp_tab_off.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-tabshaded +{ + background-image: url(style_images/1/css_pp_tab_shaded.gif); + background-repeat: repeat-x; + background-position: left bottom; + color: #516795; + border-top: 1px solid #7f9BBC; + border-left: 1px solid #7f9BBC; + border-right: 1px solid #7f9BBC; +} + +.pp-tabon a:link, +.pp-tabon a:visited, +.pp-tabon a:active +{ + text-decoration:none; + color: #FFFFFF; +} + +.pp-taboff a:link, +.pp-taboff a:visited, +.pp-taboff a:active, +.pp-tabshaded a:link, +.pp-tabshaded a:visited, +.pp-tabshaded a:active +{ + text-decoration:none; + color: #3363A1; +} + +.pp-tabwrap +{ + height: 35px; + margin:0px; + padding:0px; +}]]> + /t_addpoll.gif' border='0' alt='Add Poll' />";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"a_locked_b";a:6:{s:8:"macro_id";s:3:"164";s:11:"macro_value";s:10:"A_LOCKED_B";s:13:"macro_replace";s:82:"Closed Topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"a_moved_b";a:6:{s:8:"macro_id";s:3:"165";s:11:"macro_value";s:9:"A_MOVED_B";s:13:"macro_replace";s:78:"Moved Topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"a_poll";a:6:{s:8:"macro_id";s:3:"169";s:11:"macro_value";s:6:"A_POLL";s:13:"macro_replace";s:78:"Start Poll";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"a_pollonly_b";a:6:{s:8:"macro_id";s:3:"166";s:11:"macro_value";s:12:"A_POLLONLY_B";s:13:"macro_replace";s:79:"Poll Only";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"a_post";a:6:{s:8:"macro_id";s:3:"167";s:11:"macro_value";s:6:"A_POST";s:13:"macro_replace";s:82:"Start new topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"a_reply";a:6:{s:8:"macro_id";s:3:"168";s:11:"macro_value";s:7:"A_REPLY";s:13:"macro_replace";s:88:"Reply to this topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"a_star";a:6:{s:8:"macro_id";s:3:"170";s:11:"macro_value";s:6:"A_STAR";s:13:"macro_replace";s:66:"*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:15:"active_list_sep";a:6:{s:8:"macro_id";s:3:"235";s:11:"macro_value";s:15:"ACTIVE_LIST_SEP";s:13:"macro_replace";s:1:",";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"address_card";a:6:{s:8:"macro_id";s:3:"217";s:11:"macro_value";s:12:"ADDRESS_CARD";s:13:"macro_replace";s:85:"Mini Profile";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:11:"attach_icon";a:6:{s:8:"macro_id";s:3:"232";s:11:"macro_value";s:11:"ATTACH_ICON";s:13:"macro_replace";s:93:"Topic has attachments";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"b_hot";a:6:{s:8:"macro_id";s:3:"171";s:11:"macro_value";s:5:"B_HOT";s:13:"macro_replace";s:76:"Hot topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"b_hot_dot";a:6:{s:8:"macro_id";s:3:"180";s:11:"macro_value";s:9:"B_HOT_DOT";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"b_hot_nn";a:6:{s:8:"macro_id";s:3:"172";s:11:"macro_value";s:8:"B_HOT_NN";s:13:"macro_replace";s:76:"No new";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"b_hot_nn_dot";a:6:{s:8:"macro_id";s:3:"182";s:11:"macro_value";s:12:"B_HOT_NN_DOT";s:13:"macro_replace";s:84:"No New Posts*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"b_locked";a:6:{s:8:"macro_id";s:3:"173";s:11:"macro_value";s:8:"B_LOCKED";s:13:"macro_replace";s:76:"Closed";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"b_moved";a:6:{s:8:"macro_id";s:3:"174";s:11:"macro_value";s:7:"B_MOVED";s:13:"macro_replace";s:74:"Moved";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"b_new";a:6:{s:8:"macro_id";s:3:"175";s:11:"macro_value";s:5:"B_NEW";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"b_new_dot";a:6:{s:8:"macro_id";s:3:"181";s:11:"macro_value";s:9:"B_NEW_DOT";s:13:"macro_replace";s:81:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"b_norm";a:6:{s:8:"macro_id";s:3:"176";s:11:"macro_value";s:6:"B_NORM";s:13:"macro_replace";s:83:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"b_norm_dot";a:6:{s:8:"macro_id";s:3:"183";s:11:"macro_value";s:10:"B_NORM_DOT";s:13:"macro_replace";s:85:"No New Posts*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"b_pin";a:6:{s:8:"macro_id";s:3:"177";s:11:"macro_value";s:5:"B_PIN";s:13:"macro_replace";s:76:"Pinned";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"b_poll";a:6:{s:8:"macro_id";s:3:"178";s:11:"macro_value";s:6:"B_POLL";s:13:"macro_replace";s:72:"Poll";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"b_poll_dot";a:6:{s:8:"macro_id";s:3:"184";s:11:"macro_value";s:10:"B_POLL_DOT";s:13:"macro_replace";s:74:"Poll*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"b_poll_nn";a:6:{s:8:"macro_id";s:3:"179";s:11:"macro_value";s:9:"B_POLL_NN";s:13:"macro_replace";s:83:"No new votes";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:13:"b_poll_nn_dot";a:6:{s:8:"macro_id";s:3:"185";s:11:"macro_value";s:13:"B_POLL_NN_DOT";s:13:"macro_replace";s:85:"No New Votes*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"bar_left";a:6:{s:8:"macro_id";s:3:"273";s:11:"macro_value";s:8:"BAR_LEFT";s:13:"macro_replace";s:71:"*";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"bar_right";a:6:{s:8:"macro_id";s:3:"274";s:11:"macro_value";s:9:"BAR_RIGHT";s:13:"macro_replace";s:72:"*";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:15:"bc_queued_posts";a:6:{s:8:"macro_id";s:3:"236";s:11:"macro_value";s:15:"BC_QUEUED_POSTS";s:13:"macro_replace";s:71:"*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:11:"br_redirect";a:6:{s:8:"macro_id";s:3:"215";s:11:"macro_value";s:11:"BR_REDIRECT";s:13:"macro_replace";s:81:"Redirect";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"c_locked";a:6:{s:8:"macro_id";s:3:"186";s:11:"macro_value";s:8:"C_LOCKED";s:13:"macro_replace";s:88:"Read Only Forum";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"c_off";a:6:{s:8:"macro_id";s:3:"187";s:11:"macro_value";s:5:"C_OFF";s:13:"macro_replace";s:82:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"c_off_cat";a:6:{s:8:"macro_id";s:3:"188";s:11:"macro_value";s:9:"C_OFF_CAT";s:13:"macro_replace";s:82:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"c_off_res";a:6:{s:8:"macro_id";s:3:"189";s:11:"macro_value";s:9:"C_OFF_RES";s:13:"macro_replace";s:82:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:4:"c_on";a:6:{s:8:"macro_id";s:3:"190";s:11:"macro_value";s:4:"C_ON";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"c_on_cat";a:6:{s:8:"macro_id";s:3:"191";s:11:"macro_value";s:8:"C_ON_CAT";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"c_on_res";a:6:{s:8:"macro_id";s:3:"192";s:11:"macro_value";s:8:"C_ON_RES";s:13:"macro_replace";s:78:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"cal_goto";a:6:{s:8:"macro_id";s:3:"275";s:11:"macro_value";s:8:"CAL_GOTO";s:13:"macro_replace";s:80:"Goto Month";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"cal_newevent";a:6:{s:8:"macro_id";s:3:"220";s:11:"macro_value";s:12:"CAL_NEWEVENT";s:13:"macro_replace";s:87:"Add New Event";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"camera";a:6:{s:8:"macro_id";s:3:"198";s:11:"macro_value";s:6:"CAMERA";s:13:"macro_replace";s:73:"Photo";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"cat_img";a:6:{s:8:"macro_id";s:3:"212";s:11:"macro_value";s:7:"CAT_IMG";s:13:"macro_replace";s:92:">";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"e_minus";a:6:{s:8:"macro_id";s:3:"240";s:11:"macro_value";s:7:"E_MINUS";s:13:"macro_replace";s:79:"Collapse";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"e_plus";a:6:{s:8:"macro_id";s:3:"239";s:11:"macro_value";s:6:"E_PLUS";s:13:"macro_replace";s:76:"Expand";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"f_active";a:6:{s:8:"macro_id";s:3:"193";s:11:"macro_value";s:8:"F_ACTIVE";s:13:"macro_replace";s:78:"Active Users";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"f_calen";a:6:{s:8:"macro_id";s:3:"238";s:11:"macro_value";s:7:"F_CALEN";s:13:"macro_replace";s:75:"calendar";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"f_closed";a:6:{s:8:"macro_id";s:3:"291";s:11:"macro_value";s:8:"F_CLOSED";s:13:"macro_replace";s:12:"f_closed.gif";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"f_nav";a:6:{s:8:"macro_id";s:3:"195";s:11:"macro_value";s:5:"F_NAV";s:13:"macro_replace";s:69:">";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"f_nav_sep";a:6:{s:8:"macro_id";s:3:"194";s:11:"macro_value";s:9:"F_NAV_SEP";s:13:"macro_replace";s:13:" > ";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"f_norm";a:6:{s:8:"macro_id";s:3:"292";s:11:"macro_value";s:6:"F_NORM";s:13:"macro_replace";s:13:"f_norm_no.gif";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"f_norm_hot";a:6:{s:8:"macro_id";s:3:"290";s:11:"macro_value";s:10:"F_NORM_HOT";s:13:"macro_replace";s:12:"f_hot_no.gif";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"f_rules";a:6:{s:8:"macro_id";s:3:"221";s:11:"macro_value";s:7:"F_RULES";s:13:"macro_replace";s:84:"Forum Rules";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"f_stats";a:6:{s:8:"macro_id";s:3:"196";s:11:"macro_value";s:7:"F_STATS";s:13:"macro_replace";s:78:"Board Stats";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:14:"integrity_msgr";a:6:{s:8:"macro_id";s:3:"216";s:11:"macro_value";s:14:"INTEGRITY_MSGR";s:13:"macro_replace";s:88:"Integrity Messenger IM";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"item_start";a:6:{s:8:"macro_id";s:3:"234";s:11:"macro_value";s:10:"ITEM_START";s:13:"macro_replace";s:73:".";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"last_post";a:6:{s:8:"macro_id";s:3:"214";s:11:"macro_value";s:9:"LAST_POST";s:13:"macro_replace";s:79:"Last Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"m_read";a:6:{s:8:"macro_id";s:3:"199";s:11:"macro_value";s:6:"M_READ";s:13:"macro_replace";s:79:"Read Msg";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"m_unread";a:6:{s:8:"macro_id";s:3:"200";s:11:"macro_value";s:8:"M_UNREAD";s:13:"macro_replace";s:78:"Unread Msg";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"msg_folder";a:6:{s:8:"macro_id";s:3:"233";s:11:"macro_value";s:10:"MSG_FOLDER";s:13:"macro_replace";s:73:"-";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"new_post";a:6:{s:8:"macro_id";s:3:"213";s:11:"macro_value";s:8:"NEW_POST";s:13:"macro_replace";s:119:"Goto first unread";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"no_photo";a:6:{s:8:"macro_id";s:3:"197";s:11:"macro_value";s:8:"NO_PHOTO";s:13:"macro_replace";s:77:"No Photo";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_aol";a:6:{s:8:"macro_id";s:3:"201";s:11:"macro_value";s:5:"P_AOL";s:13:"macro_replace";s:70:"AOL";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"p_card";a:6:{s:8:"macro_id";s:3:"266";s:11:"macro_value";s:6:"P_CARD";s:13:"macro_replace";s:80:"Profile Card";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"p_delete";a:6:{s:8:"macro_id";s:3:"202";s:11:"macro_value";s:8:"P_DELETE";s:13:"macro_replace";s:81:"Delete Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"p_edit";a:6:{s:8:"macro_id";s:3:"203";s:11:"macro_value";s:6:"P_EDIT";s:13:"macro_replace";s:77:"Edit Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"p_email";a:6:{s:8:"macro_id";s:3:"204";s:11:"macro_value";s:7:"P_EMAIL";s:13:"macro_replace";s:81:"Email Poster";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_icq";a:6:{s:8:"macro_id";s:3:"205";s:11:"macro_value";s:5:"P_ICQ";s:13:"macro_replace";s:70:"ICQ";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_msg";a:6:{s:8:"macro_id";s:3:"206";s:11:"macro_value";s:5:"P_MSG";s:13:"macro_replace";s:68:"PM";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_msn";a:6:{s:8:"macro_id";s:3:"211";s:11:"macro_value";s:5:"P_MSN";s:13:"macro_replace";s:69:"MSN";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"p_quote";a:6:{s:8:"macro_id";s:3:"207";s:11:"macro_value";s:7:"P_QUOTE";s:13:"macro_replace";s:79:"Quote Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"p_report";a:6:{s:8:"macro_id";s:3:"210";s:11:"macro_value";s:8:"P_REPORT";s:13:"macro_replace";s:81:"Report Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:4:"p_up";a:6:{s:8:"macro_id";s:3:"265";s:11:"macro_value";s:4:"P_UP";s:13:"macro_replace";s:91:"Go to the top of the page";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"p_website";a:6:{s:8:"macro_id";s:3:"208";s:11:"macro_value";s:9:"P_WEBSITE";s:13:"macro_replace";s:80:"Users Website";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_yim";a:6:{s:8:"macro_id";s:3:"209";s:11:"macro_value";s:5:"P_YIM";s:13:"macro_replace";s:71:"Yahoo";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:15:"pb_user_offline";a:6:{s:8:"macro_id";s:3:"231";s:11:"macro_value";s:15:"PB_USER_OFFLINE";s:13:"macro_replace";s:86:"User is offline";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:14:"pb_user_online";a:6:{s:8:"macro_id";s:3:"230";s:11:"macro_value";s:14:"PB_USER_ONLINE";s:13:"macro_replace";s:85:"User is online!";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:13:"post_snapback";a:6:{s:8:"macro_id";s:3:"243";s:11:"macro_value";s:13:"POST_SNAPBACK";s:13:"macro_replace";s:75:"*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_aim";a:6:{s:8:"macro_id";s:3:"267";s:11:"macro_value";s:7:"PRO_AIM";s:13:"macro_replace";s:76:"AIM";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:11:"pro_contact";a:6:{s:8:"macro_id";s:3:"272";s:11:"macro_value";s:11:"PRO_CONTACT";s:13:"macro_replace";s:83:"Contact";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_icq";a:6:{s:8:"macro_id";s:3:"276";s:11:"macro_value";s:7:"PRO_ICQ";s:13:"macro_replace";s:76:"ICQ";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"pro_item";a:6:{s:8:"macro_id";s:3:"268";s:11:"macro_value";s:8:"PRO_ITEM";s:13:"macro_replace";s:86:"Profile Item";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_msn";a:6:{s:8:"macro_id";s:3:"269";s:11:"macro_value";s:7:"PRO_MSN";s:13:"macro_replace";s:76:"MSN";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_yim";a:6:{s:8:"macro_id";s:3:"271";s:11:"macro_value";s:7:"PRO_YIM";s:13:"macro_replace";s:80:"Yahoo";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"t_opts";a:6:{s:8:"macro_id";s:3:"219";s:11:"macro_value";s:6:"T_OPTS";s:13:"macro_replace";s:84:"Topic Options";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"t_qreply";a:6:{s:8:"macro_id";s:3:"218";s:11:"macro_value";s:8:"T_QREPLY";s:13:"macro_replace";s:76:"Fast Reply";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:4:"test";a:6:{s:8:"macro_id";s:3:"241";s:11:"macro_value";s:4:"test";s:13:"macro_replace";s:4:"test";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_0";a:6:{s:8:"macro_id";s:3:"222";s:11:"macro_value";s:6:"WARN_0";s:13:"macro_replace";s:72:"-----";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_1";a:6:{s:8:"macro_id";s:3:"223";s:11:"macro_value";s:6:"WARN_1";s:13:"macro_replace";s:72:"X----";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_2";a:6:{s:8:"macro_id";s:3:"224";s:11:"macro_value";s:6:"WARN_2";s:13:"macro_replace";s:72:"XX---";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_3";a:6:{s:8:"macro_id";s:3:"225";s:11:"macro_value";s:6:"WARN_3";s:13:"macro_replace";s:72:"XXX--";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_4";a:6:{s:8:"macro_id";s:3:"226";s:11:"macro_value";s:6:"WARN_4";s:13:"macro_replace";s:72:"XXXX-";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_5";a:6:{s:8:"macro_id";s:3:"227";s:11:"macro_value";s:6:"WARN_5";s:13:"macro_replace";s:72:"XXXXX";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"warn_add";a:6:{s:8:"macro_id";s:3:"228";s:11:"macro_value";s:8:"WARN_ADD";s:13:"macro_replace";s:71:"+";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"warn_minus";a:6:{s:8:"macro_id";s:3:"229";s:11:"macro_value";s:10:"WARN_MINUS";s:13:"macro_replace";s:73:"-";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}}]]> + + + + + +<% TITLE %> +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
    +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
    + +]]>
    + 1158674884 + 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(style_images/1/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap +{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(style_images/1/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.celltodayshaded, +.celldateshaded, +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.celltodayshaded, +.celldateshaded +{ + background: #E3DFE7; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.celltodayshaded, +.mcelltoday{ + border: 2px solid #8B0000; +} + +.calranged +{ + border: 2px outset #C2CFDF; + background: #C2CFDF; + padding:4px; +} + +.calitem +{ + border-bottom: 1px dotted #C2CFDF; + padding:4px; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +.input-warn, +.input-green, +.input-checkbox, +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +select +{ + margin: 0px; +} + +.input-checkbox +{ + border: none; +} + +.input-warn, +.input-warn-content +{ + border: 1px solid #C00; +} + +.input-ok, +.input-ok-content +{ + border: 1px solid #0C0; +} + +.input-warn-content +{ + padding: 4px; + margin: 4px; + background-color: #FCC; +} + +.input-ok-content +{ + padding: 4px; + margin: 4px; + background-color: #CFC; +} + + +.input-text +{ + color: #900; +} + +input.button{ + margin: 0; + width: auto; + cursor: hand; + cursor: pointer; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; + background: transparent; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0px; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(style_images/1/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 0 auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(style_images/1/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; + width: 98%; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; + width: 98%; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0px; + margin: 0px; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: url(style_images/1/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.maintitle td { + color: #FFF; + font-size: 12px; + font-weight: bold; +} + + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(style_images/1/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + + +td.formbuttonrow, +.pformstrip, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap { + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + + +.errorwrap h4 { + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p { + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(style_images/1/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#logographic{ + background: transparent url(style_images/1/logo4.gif) no-repeat left; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(style_images/1/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; + height: 28px; + text-align: right; +} + +.ipb-top-left-link, +.ipb-top-right-link +{ + background: transparent url(style_images/1/tile_sub-lite.gif); + float: right; + font-size: 10px; + font-weight: bold; + letter-spacing: 0.5px; + margin: 0px; + padding: 7px 0 7px 0; + width: auto; + border-left: 1px solid #dce3ee; +} + +.ipb-top-left-link +{ + float: left; + border-left: 0px; + border-right: 1px solid #dce3ee; +} + +.ipb-top-left-link a:link, +.ipb-top-left-link a:visited, +.ipb-top-right-link a:link, +.ipb-top-right-link a:visited +{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +.ipb-top-left-link a:hover, +.ipb-top-left-link a:active, +.ipb-top-right-link a:hover, +.ipb-top-right-link a:active +{ + background: transparent; + color: #5176B5; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 14px 0px 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +.dny-edit-title +{ + border:0px; + padding:3px; + margin:0px; + background: #D1DCEB; + color: #3A4F6C; +} + + +/* ======================================== */ +/* TABS +/* ======================================== */ + +.tabon +{ + border-top:1px solid #999; + border-left:1px solid #999; + border-right:1px solid #999; + background-color:#FFF; + padding:8px; + padding-bottom:9px; + font-size:10px; + float:left; + width:auto; + margin-top:3px; +} + +.taboff +{ + border-top: 1px solid #777; + border-left: 1px solid #777; + border-right: 1px solid #777; + background-color: #B5C3D9; + color: #333; + padding: 8px; + font-size:10px; + float: left; + width: auto; + margin-top:3px; +} + +.tabon a:link, +.tabon a:visited, +.tabon a:active +{ + text-decoration:none; + color: #000; +} + +.taboff a:link, +.taboff a:visited, +.taboff a:active +{ + text-decoration:none; + color: #333; +} + +.mya-back +{ + background: #072A66; + margin:1px; +} + +.mya-content +{ + background: #FFF; + padding:8px; + margin:1px; + border: 1px solid #777; +} + +.mya-content-tbl +{ + background: #F0F5FA; + border: 1px solid #777; + text-align:left; + font-size:10px; + white-space:nowrap; + margin:1px; +} + +/* -------------------------------- */ +/* Create PM box defaults */ +/* -------------------------------- */ + +.iframeshim +{ + position:absolute; + display:none; + background: #FFF; + filter:alpha(opacity=0); + border:0px; + width:auto; + height:auto; +} + + + +/* -------------------------------- */ +/* Experimental */ +/* -------------------------------- */ + +.popupmenu, +.popupmenu-new +{ + background: #F0F5FA; + border: 1px solid #3A4F6C; + text-align:left; + font-size:10px; + white-space:nowrap; + /*padding:3px 5px 3px 3px;*/ + /*width:300px;*/ +} + +.popupmenu-item +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + border-bottom: 1px solid #C2CFDF; + color: #000000; + font-weight: normal; +} + +.popupmenu-item-last +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + color: #000000; + font-weight: normal; +} + +.popmenubutton-new, +.popmenubutton +{ + width:120px; + white-space:nowrap; + background-color: #C2CFDF; + border:1px solid #3A4F6C; + color: #3A4F6C; + font-weight:bold; + float:right; + height:18px; + text-align:center; + margin:0px; + font-size:11px; + padding:3px; +} + +.popmenubutton-new +{ + float:none; + width:auto; + text-align:left; + height:auto; + padding:3px; + font-weight:normal; + background-color:#EEF2F7; + background-image: url(style_images/1/menu_action_down-padded.gif); + background-repeat: no-repeat; + background-position: right; +} + +.popmenubutton-new-out +{ + padding:4px; +} + +.popupmenu-new +{ + background-color: #DFE6EF; +} + + +.popmenubutton a:link, +.popmenubutton a:visited, +.popmenubutton-new a:link, +.popmenubutton-new a:visited, +.popupmenu-item a:link, +.popupmenu-item a:visited, +.popupmenu-item-last a:link, +.popupmenu-item-last a:visited +{ + color: #3A4F6C; + text-decoration: none; +} + +.popmenubutton a:hover, +.popmenubutton-new a:hover, +.popupmenu-item a:hover, +.popupmenu-item-last a:hover +{ + color: #5176B5; + text-decoration: none; +} + +.popupmenu-category +{ + background: transparent url(style_images/1/tile_sub.gif); + border-top: 1px solid #5176B5; + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +/* -------------------------------- */ +/* Loading box +/* -------------------------------- */ + +#loading-layer-inner +{ + width:220px; + height:28px; + padding:18px 10px 10px 10px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#CCC #666 #666 #CCC; + background-color: #FCF8C7; +} + +/* -------------------------------- */ +/* Message in a bo(x|ttle) +/* -------------------------------- */ + +#ipd-msg-wrapper +{ + display: none; + width: 220px; +} + +#ipd-msg-inner +{ + width:100%; + height:45px; + padding: 6px 4px 4px 4px; + margin: 0px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#ccc #666 #666 #ccc; + background-color: #FCF8C7; + filter:alpha(opacity=75); + opacity:.75 +} + +#ipd-msg-title +{ + width: 100%; + height:20px; + margin: 0px; + padding: 6px 4px 4px 4px; + background: transparent url(style_images/1/css_pp_header.gif); + border: 1px solid #3A4F6C; + border-bottom: 0px; + color: #3A4F6C; + color: #FFF; +} + +.linked-image +{ + margin: 0px; + padding: 0px; + border: 0px; +} + +.resized-linked-image +{ + margin: 4px 0px 0px 0px; + padding: 0px; + background-color: #000; + border: 0px; + color: #FFF; +} + +/* -------------------------------- */ +/* Personal Profile +/* -------------------------------- */ + +.pp-name +{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0px; + padding: 10px; +} + +.pp-name h3 +{ + margin:0px; + padding:0px 0px 5px 0px; + font-size:24px; +} + +.pp-header +{ + background: transparent url(style_images/1/tile_sub.gif); + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + margin: 0px 0px 1px 0px; + padding: 5px; +} + +.pp-title +{ + background: url(style_images/1/css_pp_header.gif); + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-datebox +{ + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-left: 4px; + margin-bottom: 4px; + font-size:24px; + font-weight:bold; + line-height: 100%; + letter-spacing: -1px; + float:right; + width: 80px; +} + +.pp-datebox em +{ + font-size: 10px; + font-weight: normal; + font-style: normal; +} + +.pp-contentbox-back +{ + background-image: url(style_images/1/folder_profile_portal/pp-css-contentblock.gif); + background-repeat: repeat-x; + background-color: #ACBFD9; + padding: 6px; +} + +.pp-contentbox-entry, +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + background-color: #EEF2F7; + border: 1px solid #888888; + line-height: 140%; + padding: 12px; + margin-bottom: 6px; + height: 200px; + overflow: auto; +} + +.pp-contentbox-entry-noheight-sel +{ + background-color:#FCECCD; +} + +.pp-contentbox-entry-noheight-mod +{ + background-color:#FDF1DA; +} + +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + height: auto; +} + +.pp-image-thumb-wrap, +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 52px; + height: 52px; + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 27px; + height: 27px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap-floatright +{ + float:right; +} + +.pp-tiny-text +{ + color: gray; + font-size: 10px; +} + +.pp-mini-content-entry, +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + background-color: #F5F9FD; + padding: 6px; + border-bottom: 1px dotted #555555; + clear:both; + width: auto; + height: 60px; +} + +.pp-mini-entry-noheight-shaded +{ + background-color: #E3DFE7; +} + +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + height: auto; +} + +.pp-tabclear, +.pp-maintitle +{ + background: url(style_images/1/css_pp_header.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-tabclear +{ + border:0px; + border-right: 1px solid #072A66; + border-left: 1px solid #072A66; +} + +.pp-tabon +{ + border-top:1px solid #3363A1; + border-left:1px solid #3363A1; + border-right:1px solid #3363A1; + background-color:#6696D6; + color:#FFFFFF; + padding:8px; + float:left; + width:auto; + background-image: url(style_images/1/css_pp_tab_on.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-taboff, +.pp-tabshaded +{ + border-top: 1px solid #759BC7; + border-left: 1px solid #759BC7; + border-right: 1px solid #759BC7; + background-color: #3363A1; + color: #3363A1; + padding:8px; + float: left; + width: auto; + background-image: url(style_images/1/css_pp_tab_off.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-tabshaded +{ + background-image: url(style_images/1/css_pp_tab_shaded.gif); + background-repeat: repeat-x; + background-position: left bottom; + color: #516795; + border-top: 1px solid #7f9BBC; + border-left: 1px solid #7f9BBC; + border-right: 1px solid #7f9BBC; +} + +.pp-tabon a:link, +.pp-tabon a:visited, +.pp-tabon a:active +{ + text-decoration:none; + color: #FFFFFF; +} + +.pp-taboff a:link, +.pp-taboff a:visited, +.pp-taboff a:active, +.pp-tabshaded a:link, +.pp-tabshaded a:visited, +.pp-tabshaded a:active +{ + text-decoration:none; + color: #3363A1; +} + +.pp-tabwrap +{ + height: 35px; + margin:0px; + padding:0px; +}]]> + + + + + +<% TITLE %> +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
    +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
    + +]]>
    + default +
    + + + 2 + IPB Default Skin + 1 + 0 + 1 + 1 + -1 + ipbauto@invisionboard.com + Invision Power Services + www.invisionboard.com + + + + 0 + + + default + +
    + +
    \ No newline at end of file diff --git a/upload/install/installfiles/tasks.xml b/upload/install/installfiles/tasks.xml new file mode 100644 index 00000000..7281c39b --- /dev/null +++ b/upload/install/installfiles/tasks.xml @@ -0,0 +1,257 @@ + + + + + 1 + Hourly Clean Out + cleanout.php + 1154618460 + -1 + -1 + -1 + 59 + 2a7d083832daa123b73a68f9c51fdb29 + 1 + Kill old sessions, reg images, searches + 1 + + 0 + 0 + + + + 3 + Daily Stats Rebuild + rebuildstats.php + 1154563200 + -1 + -1 + 0 + 0 + 640b9a6c373ff207bc1b1100a98121af + 1 + Rebuilds board statistics + 1 + + 0 + 0 + + + + 6 + Daily Clean Out + dailycleanout.php + 1154574000 + -1 + -1 + 3 + 0 + e71b52f3ff9419abecedd14b54e692c4 + 1 + Prunes topic subscriptions and old read topic entries + 1 + + 0 + 0 + + + + 8 + Birthday and Events Cache + calendarevents.php + 1154579940 + -1 + -1 + 12 + -1 + 2c148c9bd754d023a7a19dd9b1535796 + 1 + + 1 + + 0 + 0 + + + + 9 + Announcements Update + announcements.php + 1154565600 + -1 + -1 + 4 + -1 + e82f2c19ab1ed57c140fccf8aea8b9fe + 1 + Rebuilds cache and expires out of date announcements + 1 + + 0 + 0 + + + + 10 + Send Bulk Mail + bulkmail.php + 1144080120 + -1 + -1 + -1 + -1 + 61359ac93eb93ebbd935a4e275ade2db + 0 + Dynamically assigned, no need to edit or change + 0 + bulkmail + 1 + 0 + + + + 11 + + dailydigest.php + 1154563800 + -1 + -1 + 0 + 10 + 723cab2aae32dd5d04898b1151038846 + 1 + + 1 + dailydigest + 0 + 0 + + + + 12 + + weeklydigest.php + 1154833800 + 0 + -1 + 3 + 10 + 7e7fccd07f781bdb24ac108d26612931 + 1 + + 1 + weeklydigest + 0 + 0 + + + + 13 + Expire Paid Subscriptions + doexpiresubs.php + 1154563200 + -1 + -1 + 0 + 0 + bb57399ea05eb9240b42d5d5f53575fb + 1 + Unsubscribes members from their subscribed packages + 1 + doexpiresubs + 1 + 0 + + + + 14 + Update Topic Views Counter + updateviews.php + 1154625780 + -1 + -1 + 3 + -1 + ddce954b5ba1c163bc627ca20725b595 + 0 + Used when topic views are not incremented immediately + 1 + updateviews + 0 + 0 + + + + 15 + Subscription Expiration Notification + expiresubs.php + 1154566800 + -1 + -1 + 1 + 0 + 21fa5f52cf9122c6fe940e1c6dac0b5a + 1 + Sends out an email to all members who have a subscription due to expire + 1 + expiresubs + 0 + 0 + + + + 16 + RSS Import Update + rssimport.php + 1154616720 + -1 + -1 + -1 + 30 + 8f17dc0ba334e5f18e762f154365a578 + 1 + Imports any new RSS articles + 1 + rssimport + 1 + 0 + + + + 17 + Remove Old Validating Members + removevalidating.php + 1154570400 + -1 + -1 + 2 + 0 + 64b090f2e636305b819b30ee54f95d1f + 1 + + 1 + validating + 1 + 0 + + + + 18 + Prune Logs + logprune.php + 1156658400 + -1 + 27 + 6 + 0 + c2e512b3174296d2a2bbbf8f9f7d95a9 + 1 + This task will prune logs based on your log pruning settings + 1 + logprune + 0 + 0 + + + + \ No newline at end of file diff --git a/upload/install/installfiles/writeablefiles.xml b/upload/install/installfiles/writeablefiles.xml new file mode 100644 index 00000000..80c9bb5d --- /dev/null +++ b/upload/install/installfiles/writeablefiles.xml @@ -0,0 +1,17 @@ + + + cache + + + cache/lang_cache + + + cache/skin_cache + + + uploads + + + conf_global.php + + \ No newline at end of file diff --git a/upload/install/ips_xmlhttprequest.js b/upload/install/ips_xmlhttprequest.js new file mode 100644 index 00000000..2218aaec --- /dev/null +++ b/upload/install/ips_xmlhttprequest.js @@ -0,0 +1,333 @@ +//------------------------------------------------------------------------------ +// IPS XML HTTP REQUEST +//------------------------------------------------------------------------------ +// Supports Safari, Mozilla 1.3+ (Firefox, etc) and IE 5.5+ +// (c) 2005 Invision Power Services, Inc. +// http://www.invisionpower.com +//------------------------------------------------------------------------------ + +/*--------------------------------------------*/ +// New object +/*--------------------------------------------*/ + +function ajax_request() +{ + this.isIE = false; + this.allow_use = use_enhanced_js ? true : false; + this.xmlhandler = null; + this.error_string = ''; + this.nocache = true; + this.do_request_functon = function() {} + this.loading_fired = 0; + this.centerdiv = null; +} + +/*--------------------------------------------*/ +// Initiate +/*--------------------------------------------*/ + +ajax_request.prototype.xml_init = function() +{ + try + { + //------------------------------------------------ + // Moz, Safari, Opera + //------------------------------------------------ + + this.xmlhandler = new XMLHttpRequest(); + this.ie = false; + this.allow_use = true; + return true; + } + catch(e) + { + try + { + //------------------------------------------------ + // IE + //------------------------------------------------ + + this.xmlhandler = new ActiveXObject('Microsoft.XMLHTTP'); + this.ie = true; + this.allow_use = true; + return true; + } + catch(e) + { + this.ie = true; + this.allow_use = false; + return false; + } + } +} + +/*--------------------------------------------*/ +// Actually send data +/*--------------------------------------------*/ + +ajax_request.prototype.process = function( url, type, post ) +{ + //------------------------------------------------ + // The 'post' variable needs to be in the following format: + // + // var=content&var2=content&var3=content + // + // All values need to be escaped with encodeURIComponent(); + //------------------------------------------------ + + type = type == "POST" ? "POST" : "GET"; + + //------------------------------------------------ + // Use nocache where possible... + //------------------------------------------------ + + if ( this.nocache == true && type == 'GET' ) + { + url = this.nocache_url( url ); + } + + //------------------------------------------------ + // Make sure we're initialized + //------------------------------------------------ + + if ( ! this.xmlhandler ) + { + this.xml_init(); + } + + //------------------------------------------------ + // Only go when ready + //------------------------------------------------ + + if ( ! this.readystate_not_ready() ) + { + this.xmlhandler.open(type, url, true); + + if ( type == "GET" ) + { + this.xmlhandler.send(null); + } + else + { + if ( typeof( this.xmlhandler.setRequestHeader ) != "undefined" ) + { + this.xmlhandler.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } + + this.xmlhandler.send( post ); + } + + if ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) + { + return true; + } + } + + return false; +} + +/*--------------------------------------------*/ +// retrieve text of an XML document element, including +// elements using namespaces +/*--------------------------------------------*/ + +ajax_request.prototype.get_element_text_ns = function(prefix, local, parentElem, index) +{ + var result = ""; + + if ( prefix && this.isIE ) + { + //------------------------------- + // IE + //------------------------------- + + result = parentElem.getElementsByTagName(prefix + ":" + local)[index]; + } + else + { + //------------------------------- + // Safari, Gecko + //------------------------------- + + result = parentElem.getElementsByTagName(local)[index]; + } + + if ( result ) + { + if (result.childNodes.length > 1) + { + return result.childNodes[1].nodeValue; + } + else + { + return result.firstChild.nodeValue; + } + } + else + { + return "n/a"; + } +} + +/*--------------------------------------------*/ +// Make sure URL is not cached +/*--------------------------------------------*/ + +ajax_request.prototype.nocache_url = function (url) +{ + var sep = ( -1 < url.indexOf("?") ) ? "&" : "?"; + var mydate = new Date(); + var newurl = url + sep + "__=" + mydate.getTime(); + return newurl; +} + +/*--------------------------------------------*/ +// Takes an array of: +// array[ field ] = value +// and returns a nice encoded POST string +/*--------------------------------------------*/ + +ajax_request.prototype.format_for_post = function( arrayfields ) +{ + var str = ''; + + try + { + for( var i in arrayfields ) + { + str += i + '=' + this.encodeurl(arrayfields[i]) + '&'; + } + } + catch(e) + { + } + + return str; +} + +/*--------------------------------------------*/ +// Hand roll encode URL to UTF-8 +/*--------------------------------------------*/ + +ajax_request.prototype.encodeurl = function( url ) +{ + //------------------------------- + // Ensure we have a string + //------------------------------- + + url = url.toString(); + + var regcheck = url.match(/[\x90-\xFF]/g); + + if ( regcheck ) + { + for (var i = 0; i < i.length; i++) + { + url = url.replace(regcheck[i], '%u00' + (regcheck[i].charCodeAt(0) & 0xFF).toString(16).toUpperCase()); + } + } + + return escape(url).replace(/\+/g, "%2B"); +} + + +/*--------------------------------------------*/ +// Check to ensure ready state-ness +/*--------------------------------------------*/ + +ajax_request.prototype.readystate_not_ready = function() +{ + return ( this.xmlhandler.readyState && ( this.xmlhandler.readyState < 4 ) ); +} + +/*--------------------------------------------*/ +// Check to ensure ready state-ness +/*--------------------------------------------*/ + +ajax_request.prototype.readystate_ready_and_ok = function() +{ + return ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) ? true : false; +} + +/*--------------------------------------------*/ +// Onready state change event handler +/*--------------------------------------------*/ + +ajax_request.prototype.onreadystatechange = function( event ) +{ + //------------------------------------------------ + // Make sure we're initialized + //------------------------------------------------ + + if ( ! this.xmlhandler ) + { + this.xml_init(); + } + + //------------------------------------------------ + // Make sure its a function event + //------------------------------------------------ + + if ( typeof(event) == 'function' ) + { + this.xmlhandler.onreadystatechange = event; + } +} + +/*--------------------------------------------*/ +// Show loading layer +/*--------------------------------------------*/ + +ajax_request.prototype.show_loading = function( message ) +{ + if ( ! this.loading_fired ) + { + this.loading_fired = 1; + + //------------------------------------------------ + // Change text? + //------------------------------------------------ + + if ( message ) + { + document.getElementById( 'loading-layer-text' ).innerHTML = message; + } + + this.centerdiv = new center_div(); + this.centerdiv.divname = 'loading-layer'; + this.centerdiv.move_div(); + } + + return; +} + +/*--------------------------------------------*/ +// Hide loading layer +/*--------------------------------------------*/ + +ajax_request.prototype.hide_loading = function() +{ + try + { + if ( this.centerdiv && this.centerdiv.divobj ) + { + this.centerdiv.hide_div(); + } + } + catch(e) + { + } + + this.loading_fired = 0; + + return; +} + +/*--------------------------------------------*/ +// IPB thinks we can use fancy JS, lets see... +/*--------------------------------------------*/ + +if ( use_enhanced_js ) +{ + use_enhanced_js = ajax_request.prototype.xml_init() ? 1 : 0; +} \ No newline at end of file diff --git a/upload/install/sql/index.html b/upload/install/sql/index.html index 787531db..52a588b2 100644 --- a/upload/install/sql/index.html +++ b/upload/install/sql/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/install/sql/mysql_fulltext.php b/upload/install/sql/mysql_fulltext.php index 19c499a2..2c05a456 100644 --- a/upload/install/sql/mysql_fulltext.php +++ b/upload/install/sql/mysql_fulltext.php @@ -1,33 +1,5 @@ Script written by Matthew Mecham -| > Date started: 12th August 2004 -| > MYSQL EXTRA CONFIG / INSTALL FILE -+-------------------------------------------------------------------------- -*/ - $INDEX[] = "alter table ibf_posts ADD FULLTEXT(post)"; $INDEX[] = "alter table ibf_topics ADD FULLTEXT(title)"; diff --git a/upload/install/sql/mysql_inserts.php b/upload/install/sql/mysql_inserts.php index d124f01f..78dcdf27 100644 --- a/upload/install/sql/mysql_inserts.php +++ b/upload/install/sql/mysql_inserts.php @@ -1,225 +1,90 @@ - Script written by Matthew Mecham -| > Date started: 12th August 2004 -| > MYSQL EXTRA CONFIG / INSTALL FILE -+-------------------------------------------------------------------------- -*/ - -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (1, 'pdf', 'application/pdf', 1, 0, 'folder_mime_types/pdf.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (2, 'png', 'image/png', 1, 1, 'folder_mime_types/quicktime.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (3, 'viv', 'video/vivo', 1, 0, 'folder_mime_types/win_player.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (4, 'wmv', 'video/x-msvideo', 1, 0, 'folder_mime_types/win_player.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (5, 'html', 'unknown/unknown', 1, 0, 'folder_mime_types/html.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (6, 'ram', 'audio/x-pn-realaudio', 1, 0, 'folder_mime_types/real_audio.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (7, 'gif', 'image/gif', 1, 1, 'folder_mime_types/gif.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (8, 'mpg', 'video/mpeg', 1, 0, 'folder_mime_types/quicktime.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (9, 'ico', 'image/ico', 1, 0, 'folder_mime_types/gif.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (10, 'tar', 'application/x-tar', 1, 0, 'folder_mime_types/zip.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (11, 'bmp', 'image/x-MS-bmp', 1, 0, 'folder_mime_types/gif.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (12, 'tiff', 'image/tiff', 1, 0, 'folder_mime_types/quicktime.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (13, 'rtf', 'unknown/unknown', 1, 0, 'folder_mime_types/rtf.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (14, 'hqx', 'application/mac-binhex40', 1, 0, 'folder_mime_types/stuffit.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (15, 'aiff', 'audio/x-aiff', 1, 0, 'folder_mime_types/quicktime.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (31, 'zip', 'application/zip', 1, 0, 'folder_mime_types/zip.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (17, 'ps', 'application/postscript', 1, 0, 'folder_mime_types/eps.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (18, 'doc', 'application/msword', 1, 0, 'folder_mime_types/doc.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (19, 'mov', 'video/quicktime', 1, 0, 'folder_mime_types/quicktime.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (20, 'ppt', 'application/powerpoint', 1, 0, 'folder_mime_types/ppt.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (21, 'wav', 'audio/x-wav', 1, 0, 'folder_mime_types/music.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (22, 'mp3', 'audio/x-mpeg', 1, 0, 'folder_mime_types/music.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (23, 'jpg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (24, 'txt', 'unknown/unknown', 1, 0, 'folder_mime_types/txt.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (25, 'xml', 'unknown/unknown', 1, 0, 'folder_mime_types/script.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (26, 'css', 'unknown/unknown', 1, 0, 'folder_mime_types/script.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (27, 'swf', 'application/x-shockwave-flash', 0, 0, 'folder_mime_types/quicktime.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (32, 'php', 'unknown/unknown', 1, 0, 'folder_mime_types/php.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (28, 'htm', 'unknown/unknown', 1, 0, 'folder_mime_types/html.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (29, 'jpeg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; -$INSERT[] = "INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (33, 'gz', 'application/x-gzip', 1, 0, 'folder_mime_types/zip.gif');"; - - -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('skin_id_cache', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('bbcode', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('moderators', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('multimod', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('banfilters', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('attachtypes', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('emoticons', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('forum_cache', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('badwords', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('systemvars', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('adminnotes', '', '', 0);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('ranks', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('group_cache', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('stats', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('profilefields', 'a:0:{}', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('settings','', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('languages', '', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; - -# IPB 2.1: -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('components', 'a:0:{}', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('rss_export', 'a:0:{}', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('rss_calendar', 'a:0:{}', '', 1);"; -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('announcements', 'a:0:{}', '', 1);"; - -# IPB 2.1 (BETA 4 ) -$INSERT[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('portal', 'a:6:{s:5:\"blogs\";a:5:{s:8:\"pc_title\";s:30:\"Invision Community Blog\";s:7:\"pc_desc\";s:40:\"Показ информации от блога в портале\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:25:\"blogs_show_last_updated_x\";a:2:{i:0;s:25:\"blogs_show_last_updated_x\";i:1;s:30:\"Shows the last X updated blogs\";}}s:6:\"pc_key\";s:5:\"blogs\";}s:8:\"calendar\";a:5:{s:8:\"pc_title\";s:29:\"Invision Power Board Календарь\";s:7:\"pc_desc\";s:46:\"Отображает мини-календарь для текущего месяца\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:27:\"calendar_show_current_month\";a:2:{i:0;s:27:\"calendar_show_current_month\";i:1;s:38:\"Показывает календарь на текущий месяц\";}}s:6:\"pc_key\";s:8:\"calendar\";}s:7:\"gallery\";a:5:{s:8:\"pc_title\";s:22:\"Invision Power Gallery\";s:7:\"pc_desc\";s:54:\"Отображает на портале информацию с галереи\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:25:\"gallery_show_random_image\";a:2:{i:0;s:25:\"gallery_show_random_image\";i:1;s:44:\"Показывается случайное изображение из пользовательской галереи\";}}s:6:\"pc_key\";s:7:\"gallery\";}s:12:\"online_users\";a:5:{s:8:\"pc_title\";s:33:\"Invision Power Board Активные Пользователи\";s:7:\"pc_desc\";s:49:\"Показывае имена текущих пользователей в онлайне\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:17:\"online_users_show\";a:2:{i:0;s:17:\"online_users_show\";i:1;s:22:\"Показывает активных пользователей\";}}s:6:\"pc_key\";s:12:\"online_users\";}s:4:\"poll\";a:5:{s:8:\"pc_title\";s:25:\"Invision Power Board Опрос\";s:7:\"pc_desc\";s:23:\"Показывает выбранный опрос\";s:19:\"pc_settings_keyword\";s:11:\"portal_poll\";s:18:\"pc_exportable_tags\";a:1:{s:14:\"poll_show_poll\";a:2:{i:0;s:14:\"poll_show_poll\";i:1;s:22:\"Shows the request poll\";}}s:6:\"pc_key\";s:4:\"poll\";}s:13:\"recent_topics\";a:5:{s:8:\"pc_title\";s:34:\"Invision Power Board Последние Темы\";s:7:\"pc_desc\";s:47:\"Показывает последние темы с первым сообщением в них\";s:19:\"pc_settings_keyword\";s:20:\"portal_recent_topics\";s:18:\"pc_exportable_tags\";a:2:{s:20:\"recent_topics_last_x\";a:2:{i:0;s:20:\"recent_topics_last_x\";i:1;s:63:\"Показывает X последних тем с первым сообщением в них из выбранных форумов\";}s:32:\"recent_topics_discussions_last_x\";a:2:{i:0;s:32:\"recent_topics_discussions_last_x\";i:1;s:54:\"Показывает X заголовков тем из всех видимых форумов\";}}s:6:\"pc_key\";s:13:\"recent_topics\";}}', '', 1);"; - - - -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (1, ':mellow:', 'mellow.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (2, ':huh:', 'huh.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (3, '^_^', 'happy.gif', 0, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (4, ':o', 'ohmy.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (5, ';)', 'wink.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (6, ':P', 'tongue.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (7, ':D', 'biggrin.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (8, ':lol:', 'laugh.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (9, 'B)', 'cool.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (10, ':rolleyes:', 'rolleyes.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (11, '-_-', 'sleep.gif', 0, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (12, '<_<', 'dry.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (13, ':)', 'smile.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (14, ':wub:', 'wub.gif', 0, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (15, ':angry:', 'mad.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (16, ':(', 'sad.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (17, ':unsure:', 'unsure.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (18, ':wacko:', 'wacko.gif', 0, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (19, ':blink:', 'blink.gif', 1, 'default');"; -$INSERT[] = "INSERT INTO ibf_emoticons (id, typed, image, clickable, emo_set) VALUES (20, ':ph34r:', 'ph34r.gif', 0, 'default');"; - -# FORUMS: Last field: forum_last_deletion -$INSERT[] = "INSERT INTO ibf_forums VALUES (2, 1, 1, <%time%>, 1, 'BestWarez.Ru Team', 'Тестовый форум', 'Тестовый форум может быть удален в любое время', 1, 1, 1, 1, '', 'Добро пожаловать!', 1, 'last_post', 'Z-A', 100, 'all', 0, 0, 1, 1, 1, NULL, 1, 1, '', 0, 0, '', '', '', '', '', 1, '', 'a:5:{s:11:\"start_perms\";s:1:\"*\";s:11:\"reply_perms\";s:1:\"*\";s:10:\"read_perms\";s:1:\"*\";s:12:\"upload_perms\";s:1:\"*\";s:10:\"show_perms\";s:1:\"*\";}', 0, 0, 0, 0, 1);"; -$INSERT[] = "INSERT INTO ibf_forums VALUES (1, 0, 0, 0, 0, '', 'Тестовая категория', 'Тестовая категория может быть удалена в любое время', 1, 1, 0, 1, '', '', 0, 'last_post', 'Z-A', 30, 'all', 0, 0, 1, 1, 1, NULL, -1, 0, '', 0, 0, '', '', '', '', '', 0, '', 'a:5:{s:11:\"start_perms\";s:1:\"*\";s:11:\"reply_perms\";s:1:\"*\";s:10:\"read_perms\";s:1:\"*\";s:12:\"upload_perms\";s:1:\"*\";s:10:\"show_perms\";s:1:\"*\";}', 0, 0, 0, 1, 1);"; - -$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Маска неактивированных', perm_id=1"; -$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Маска пользователей', perm_id=3"; -$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Маска гостей', perm_id=2"; -$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Маска администраторов', perm_id=4"; -$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Маска заблокированных', perm_id=5"; - -# GROUPS: g_topic_rate_setting, g_dname_changes, g_dname_date -# IPB 2.1 BETA 2: Changed "Admin" name to "Root Admin" -$INSERT[] = "INSERT INTO ibf_groups (g_id, g_view_board, g_mem_info, g_other_topics, g_use_search, g_email_friend, g_invite_friend, g_edit_profile, g_post_new_topics, g_reply_own_topics, g_reply_other_topics, g_edit_posts, g_delete_own_posts, g_open_close_posts, g_delete_own_topics, g_post_polls, g_vote_polls, g_use_pm, g_is_supmod, g_access_cp, g_title, g_can_remove, g_append_edit, g_access_offline, g_avoid_q, g_avoid_flood, g_icon, g_attach_max, g_avatar_upload, g_calendar_post, prefix, suffix, g_max_messages, g_max_mass_pm, g_search_flood, g_edit_cutoff, g_promotion, g_hide_from_list, g_post_closed, g_perm_id, g_photo_max_vars, g_dohtml, g_edit_topic, g_email_limit, g_bypass_badwords, g_can_msg_attach, g_topic_rate_setting, g_dname_changes, g_dname_date) VALUES (4, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 'Главные администраторы', 0, 1, 1, 1, 1, '', 50000, 1, 1, '', '', 50, 6, 0, 5, '-1&-1', 0, 1, '4', '50:150:150', 1, 1, '10:15', 1, 1, 2, 3, 30);"; -$INSERT[] = "INSERT INTO ibf_groups (g_id, g_view_board, g_mem_info, g_other_topics, g_use_search, g_email_friend, g_invite_friend, g_edit_profile, g_post_new_topics, g_reply_own_topics, g_reply_other_topics, g_edit_posts, g_delete_own_posts, g_open_close_posts, g_delete_own_topics, g_post_polls, g_vote_polls, g_use_pm, g_is_supmod, g_access_cp, g_title, g_can_remove, g_append_edit, g_access_offline, g_avoid_q, g_avoid_flood, g_icon, g_attach_max, g_avatar_upload, g_calendar_post, prefix, suffix, g_max_messages, g_max_mass_pm, g_search_flood, g_edit_cutoff, g_promotion, g_hide_from_list, g_post_closed, g_perm_id, g_photo_max_vars, g_dohtml, g_edit_topic, g_email_limit, g_bypass_badwords, g_can_msg_attach, g_topic_rate_setting, g_dname_changes, g_dname_date) VALUES (2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, 'Гости', NULL, NULL, NULL, NULL, NULL, '', -1, 0, 0, NULL, NULL, 50, 0, 20, 0, '-1&-1', 0, 0, '2', '', 0, 0, '10:15', 0, 0, 0, 0, 0);"; -$INSERT[] = "INSERT INTO ibf_groups (g_id, g_view_board, g_mem_info, g_other_topics, g_use_search, g_email_friend, g_invite_friend, g_edit_profile, g_post_new_topics, g_reply_own_topics, g_reply_other_topics, g_edit_posts, g_delete_own_posts, g_open_close_posts, g_delete_own_topics, g_post_polls, g_vote_polls, g_use_pm, g_is_supmod, g_access_cp, g_title, g_can_remove, g_append_edit, g_access_offline, g_avoid_q, g_avoid_flood, g_icon, g_attach_max, g_avatar_upload, g_calendar_post, prefix, suffix, g_max_messages, g_max_mass_pm, g_search_flood, g_edit_cutoff, g_promotion, g_hide_from_list, g_post_closed, g_perm_id, g_photo_max_vars, g_dohtml, g_edit_topic, g_email_limit, g_bypass_badwords, g_can_msg_attach, g_topic_rate_setting, g_dname_changes, g_dname_date) VALUES (3, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 'Пользователи', 0, 1, 0, 0, 0, '', 500, 1, 0, '', '', 50, 0, 20, 0, '-1&-1', 0, 0, '3', '::', 0, 0, '10:15', 0, 0, 1, 0, 0);"; -$INSERT[] = "INSERT INTO ibf_groups (g_id, g_view_board, g_mem_info, g_other_topics, g_use_search, g_email_friend, g_invite_friend, g_edit_profile, g_post_new_topics, g_reply_own_topics, g_reply_other_topics, g_edit_posts, g_delete_own_posts, g_open_close_posts, g_delete_own_topics, g_post_polls, g_vote_polls, g_use_pm, g_is_supmod, g_access_cp, g_title, g_can_remove, g_append_edit, g_access_offline, g_avoid_q, g_avoid_flood, g_icon, g_attach_max, g_avatar_upload, g_calendar_post, prefix, suffix, g_max_messages, g_max_mass_pm, g_search_flood, g_edit_cutoff, g_promotion, g_hide_from_list, g_post_closed, g_perm_id, g_photo_max_vars, g_dohtml, g_edit_topic, g_email_limit, g_bypass_badwords, g_can_msg_attach, g_topic_rate_setting, g_dname_changes, g_dname_date) VALUES (1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Неактивированные', 0, 1, 0, 0, 0, '', 0, 0, 0, NULL, NULL, 50, 0, 20, 0, '-1&-1', 0, 0, '1', '', 0, 0, '10:15', 0, 0, 0, 0, 0);"; -$INSERT[] = "INSERT INTO ibf_groups (g_id, g_view_board, g_mem_info, g_other_topics, g_use_search, g_email_friend, g_invite_friend, g_edit_profile, g_post_new_topics, g_reply_own_topics, g_reply_other_topics, g_edit_posts, g_delete_own_posts, g_open_close_posts, g_delete_own_topics, g_post_polls, g_vote_polls, g_use_pm, g_is_supmod, g_access_cp, g_title, g_can_remove, g_append_edit, g_access_offline, g_avoid_q, g_avoid_flood, g_icon, g_attach_max, g_avatar_upload, g_calendar_post, prefix, suffix, g_max_messages, g_max_mass_pm, g_search_flood, g_edit_cutoff, g_promotion, g_hide_from_list, g_post_closed, g_perm_id, g_photo_max_vars, g_dohtml, g_edit_topic, g_email_limit, g_bypass_badwords, g_can_msg_attach, g_topic_rate_setting, g_dname_changes, g_dname_date) VALUES (5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Заблокированные', 0, 0, 0, 0, 0, '', NULL, 0, 0, NULL, NULL, 50, 0, 20, 0, '-1&-1', 1, 0, '5', '', 0, 0, '10:15', 0, 0, 0, 0, 0);"; - -# IPB 2.1 BETA 2 -$INSERT[] = "INSERT INTO ibf_groups (g_id, g_view_board, g_mem_info, g_other_topics, g_use_search, g_email_friend, g_invite_friend, g_edit_profile, g_post_new_topics, g_reply_own_topics, g_reply_other_topics, g_edit_posts, g_delete_own_posts, g_open_close_posts, g_delete_own_topics, g_post_polls, g_vote_polls, g_use_pm, g_is_supmod, g_access_cp, g_title, g_can_remove, g_append_edit, g_access_offline, g_avoid_q, g_avoid_flood, g_icon, g_attach_max, g_avatar_upload, g_calendar_post, prefix, suffix, g_max_messages, g_max_mass_pm, g_search_flood, g_edit_cutoff, g_promotion, g_hide_from_list, g_post_closed, g_perm_id, g_photo_max_vars, g_dohtml, g_edit_topic, g_email_limit, g_bypass_badwords, g_can_msg_attach, g_topic_rate_setting, g_dname_changes, g_dname_date) VALUES (6, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 'Администраторы', 0, 1, 1, 1, 1, '', 50000, 1, 1, '', '', 50, 6, 0, 5, '-1&-1', 0, 1, '4', '50:150:150', 1, 1, '10:15', 1, 1, 2, 3, 30);"; - - -$INSERT[] = "INSERT INTO ibf_languages (lid, ldir, lname, lauthor, lemail) VALUES (1, 'ru', 'Русский', 'IBResource.ru', 'support@ibresource.ru');"; - -$INSERT[] = "INSERT INTO ibf_posts (pid, append_edit, edit_time, author_id, author_name, use_sig, use_emo, ip_address, post_date, icon_id, post, queued, topic_id, post_title, new_topic, edit_name, post_key, post_parent, post_htmlstate) VALUES (1, 0, NULL, 1, 'BestWarez.Ru Team', 0, 1, '127.0.0.1', <%time%>, 0, 'Добро пожаловать в ваш новый форум — Invision Power Board!
    Это тестовое сообщение говорит вам о том, что установка форума прошла успешно.
    Вы можете удалить это сообщение, эту тему и этот форум в любое время.
    Также не забудьте посетить наш сайт — BestWarez.Ru , на нём вы сможете найти всё, что вам угодно! :)', 0, 1, NULL, 1, NULL, '0', 0, 0);"; - -$INSERT[] = "INSERT INTO ibf_skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB ГЛАВНЫЙ СТИЛЬ', '1', 0, 0, '0', -1, '', '', '', '', '', '', <%time%>, '', '', 'default');"; -$INSERT[] = "INSERT INTO ibf_skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Стандартный стиль', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - - -$INSERT[] = "INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (1, 'Ежечасная очистка форума', 'cleanout.php', <%time%>, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Удаление старых сессий, защитных регистрационных кодов, поисков', 1);"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (3, 'Ежедневный пересчет статистики', 'rebuildstats.php', <%time%>, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Пересчет статистики форума', 1);"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (6, 'Ежедневная очистка форума', 'dailycleanout.php', <%time%>, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Сокращает подписки на темы и старые записи прочтения тем', 1);"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (8, 'Кеширование именинников и событий', 'calendarevents.php', <%time%>, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Кеширование событий календаря и дней рождения форумчан', 1);"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES ('Обновление объявлений', 'announcements.php', <%time%>, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1,'Обновление кеша и удаление оконченных объявлений', 1);"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отправка рассылки', 'bulkmail.php', <%time%>, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Динамически назначается, нет необходимости изменять', 0, 'bulkmail', 1);"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Ежедневный обзор тем и форума', 'dailydigest.php', <%time%>, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Ежедневная рассылка тем и обзора форума', 1, 'dailydigest', 0)"; -$INSERT[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Еженедельный обзор тем и форума', 'weeklydigest.php', <%time%>, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Еженедельная рассылка тем и обзора форума', 1, 'weeklydigest', 0)"; - -# IPB 2.1 BETA 2 -$INSERT[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отписка от заказов (не для России)', 'doexpiresubs.php', 1121212800, -1, -1, 0, 0, 'bb57399ea05eb9240b42d5d5f53575fb', 1, 'Отписать пользователей от заказанных пакетов', 1, 'doexpiresubs', 1)"; - - - -$INSERT[] = "INSERT INTO ibf_titles (id, posts, title, pips) VALUES (1, 0, 'Новичок', '1');"; -$INSERT[] = "INSERT INTO ibf_titles (id, posts, title, pips) VALUES (2, 10, 'Участник', '2');"; -$INSERT[] = "INSERT INTO ibf_titles (id, posts, title, pips) VALUES (4, 30, 'Активный участник', '3');"; - -# TOPICS: topic_rating_hits -$INSERT[] = "INSERT INTO ibf_topics VALUES (1, 'Добро пожаловать', '', 'open', 0, 1, <%time%>, 1, <%time%>, 0, 'BestWarez Team', 'BestWarez.Ru Team', '0', 0, 1, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);"; - -$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='USD', subcurrency_desc='United States Dollars', subcurrency_exchange='1.00', subcurrency_default=1;"; -$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='GBP', subcurrency_desc='United Kingdom Pounds', subcurrency_exchange=' 0.550776', subcurrency_default=0;"; -$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='CAD', subcurrency_desc='Canada Dollars', subcurrency_exchange='1.37080', subcurrency_default=0;"; -$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='EUR', subcurrency_desc='Euro', subcurrency_exchange='0.901517', subcurrency_default=0;"; - - -$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (1, 'PayPal', 'paypal', '', '', '', '', '', '', '', 0, 1, 'All major credit cards accepted. See PayPal for more information.', '', 1, 'USD');"; -$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (2, 'NOCHEX', 'nochex', '', '', '', '', '', '', '', 0, 1, 'UK debit and credit cards, such as Switch, Solo and VISA Delta. All prices will be convereted into GBP (UK Pounds) upon ordering.', NULL, 1, 'GBP');"; -$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (3, 'Post Service', 'manual', '', '', '', '', '', '', '', 0, 0, 'You can use this method if you wish to send us a check, postal order or international money order.', NULL, 1, 'USD');"; -$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (4, '2CheckOut', '2checkout', '', '', '', '', '', '', '', 1, 1, 'All major credit cards accepted. See 2CheckOut for more information.', NULL, 1, 'USD');"; -$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (5, 'Safshop', 'safshop', '', '', NULL, NULL, NULL, NULL, NULL, 0, 1, 'Accepts all major credit cards', NULL, 1, 'USD');"; -$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (6, 'Protx', 'protx', '', '', '', '', '', '', '', 1, 1, 'Accepts all major credit cards', '', 1, 'GBP');"; - -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (1, 'Преимущества регистрации', 'Для полноценного использования всех функций форума, администратор требует зарегистрироваться на форуме. Регистрация на форуме абсолютно бесплатна и отнимет у вас всего лишь пару минут.\r
    \r
    При регистрации необходимо обязательно указать ваш реальный e-mail адрес. Администратор может потребовать от вас подтверждения Вашей регистрации по указанному вами e-mail адресу. Если данное требование администратора включено, вы будете извещены об этом во время регистрации. Если вы по какой-то причине не получили письма для активации, зайдите на форум и в правой верхней части форума, воспользуйтесь ссылкой «Выслать повторно письмо для активации».\r
    \r
    Также возможно, что администратор сам должен будет одобрить вашу регистрацию. Об этом вы также будете извещены во время регистрации.\r
    \r
    После завершения регистрации и успешной авторизации, вы получите доступ к вашей панели управления и к личному ящику для форума, сокращенное название которого — PM.\r
    \r
    Более подробные сведения обо всех функциях и характеристиках форума, Вы сможете узнать в секции помощи по форуму.', 'Как зарегистрироваться и дополнительные преимущества зарегистрированных пользователей.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (2, 'Cookies и их использование', 'Использование cookies не является обязательным, но очень рекомендуется. Cookies необходимы для того, чтобы прослеживать за темами, подписываться на них, узнавать каждый раз о новых темах и сообщениях, их количестве и для автоматической авторизации на форуме при каждом посещении форума.\r
    \r
    Если в вашем компьютере нет возможности использования системы cookie, для корректного использования форума, то, форум автоматически будет добавлять ко всем ссылкам ID вашего сеанса посещения, для удобства использования форума\r
    \r
    Очистка Cookies\r
    \r
    Вы можете удалять все ваши cookies, если нажмете на ссылку, находящуюся в нижней части главной страницы форума (это самая первая страница форума). Если у вас это не сработает, то возможно вам необходимо проделать это вручную.\r
    \r
    Удаление Cookies для пользователей Internet Explorer для Microsoft Windows\r
      \r
    • Закройте все окна Internet Explorer\r
    • Нажмите на кнопку «Пуск»\r
    • Перейдите в меню «Найти» и выберите «Файлы и папки»\r
    • После открытия проводника, введите доменное имя форума в поле «Искать текст». (Например, если адрес форума «http://www.ibresource.ru/forums/index.php» то Вы должны ввести «ibresource.ru» без кавычек)\r
    • В поле «где искать» выберите C:WindowsCookies и нажмите кнопку «Найти»\r
    • После завершения поиска, выделите все найденные файлы (для выделения всех файлов, можете использовать комбинацию клавиш CTRL+A) и удалите их.\r
    \r
    \r
    Удаление Cookies для пользователей Internet Explorer для Macintosh\r
      \r
    • Откройте окно Internet Explorer, зайдите в меню «Правка» и выберите «Настройки»\r
    • После открытия панели настроек, зайдите в меню «Cookies» в секции «Принятые файлы».\r
    • После полной загрузки панели cookie, найдите там доменное имя форума (Если адрес форума «http://www.ibresource.ru/forums/index.php» ищите «ibresource.ru» или «www.ibresource.ru»\r
    • Войдите в каждый cookie и нажмите кнопку удаления.\r
    \r
    Теперь все ваши cookies удалены. В некоторых случаях, для вступления изменений в силу, необходимо перезагрузить компьютер.', 'Преимущества использования cookies и удаление cookies , установленных форумом.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (3, 'Восстановление утерянного или забытого пароля', 'Главной характеристикой форума, является безопасность и поэтому, все пароли пользователей кодируются при регистрации.\r
    Это означает, что мы не в состоянии выслать вам, ваш забытый пароль, т.к. «раскодировка» пароля невозможна. Но, тем не менее, вы можете восстановить свой пароль.\r
    \r
    Для восстановления пароля, зайдите по ссылке Восстановление забытого пароля, которая находится на странице авторизации.\r
    \r
    С дальнейшей инструкцией по восстановлению, вы можете ознакомиться уже там.\r
    ', 'Инструкция по восстановлению забытого пароля.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (4, 'Ваша панель управления (Личные данные)', 'Панель управления форума, является частной собственностью каждого пользователя форума. Здесь вы можете изменить и настроить различные функции форума.\r
    \r
    Подписки\r
    \r
    На этой странице, вы можете настраивать подписки на темы и форумы. Для более подробного ознакомления, с инструкциями по подписке на темы, читайте раздел помощи «Уведомление по e-mail о новых сообщениях».\r
    \r
    Ваш профиль\r
    \r
    В этой секции вы можете добавить или отредактировать различную дополнительную информацию о вас.\r
    \r
    Изменить подпись\r
    \r
    Использование «подписи» на форуме, аналогично тому, как вы используете подпись в ваших письмах, отправляемых вашего e-mail адреса. Ваша подпись будет добавлена к концу каждого вашего сообщения на форуме, но в некоторых сообщениях, вы можете отменить добавление подписи, просто сняв галочку в поле добавления подписи под формой отправки сообщения. Вы даже можете использовать в подписи коды форума, а в некоторых случаях даже и «чистый» HTML (если администратор форума разрешил данную функцию).\r
    \r
    Установка аватара\r
    \r
    Аватар — это небольшая картинка, которая будет отображена под вашим именем, в каждом вашем сообщении на форуме. В зависимости от установок форума, настроенных администратором, можно выбрать аватар в галерее аватаров форума, либо ввести ссылку на аватар, находящийся на другом сайте/сервере, либо загрузить личный аватар с вашего компьютера. Вы также можете установить длину и ширину аватара, если аватар отображается не так, как бы вам хотелось.\r
    \r
    Установка фотографии\r
    \r
    В этой секции, вы можете добавить фотографию в ваш профиль. Ваша фотография, будет доступна при просмотре вашего профиля, пользователями, на странице карточки, а также, в списке пользователей форума, будет присутствовать ссылка на вашу фотографию.\r
    \r
    Настройки e-mail\r
    \r
    При установке галочки в поле «Скрыть мой адрес e-mail от других пользователей», пользователи форума не смогут отправлять вам из форума письма на ваш e-mail адрес.\r
    «Сообщать мне обо всех изменениях, проводимых администратором форума» — эта функция для добавления вашего e-mail адреса в список рассылок. Каждый раз, при каких-либо важных изменениях, дополнениях на форуме, администратор форума будет сразу извещать вас об этом.\r
    «Добавлять копию сообщения из подписанных тем в отправляемое письмо-уведомление» — при включении этой функции, текст нового сообщения из подписанной темы будет отправлен вам на e-mail.\r
    «Уведомлять меня по e-mail при получении новых личных сообщений» — при включении этого, вы будете уведомлены по e-mail о каждом отправленном вам на личый ящик форума, приватном письме.\r
    «Включить уведомления на e-mail по умолчанию?» — при включении этой опции, вам будут отправлять уведомления о всех новых темах и сообщениях на форуме. Вы можете отписаться от всего, зайдя по ссылке «Подписки» в вашей панели управления.\r
    \r
    Настройки\r
    \r
    В этой секции вы можете настроить ваш часовой пояс, запретить отображение подписи пользователей, отображение аватаров и изображений в сообщениях, а так же скрытие или отображение формы быстрого ответа (если она разрешена администратором форума).\r
    Вы также можете сами установить количество отображаемых тем/сообщений, за страницу форума, темы соответственно.\r
    \r
    Изменить E-mail\r
    \r
    Здесь вы можете в любое время изменить ваш e-mail адрес, указанный вами при регистрации на форуме. В некоторых случаях, для изменения e-mail адреса, от вас могут потребовать подтверждение изменения и переактивацию вашей учетной записи. Если данное требование включено, то перед изменением вы будете заранее извещены об этом.\r
    \r
    Изменить пароль\r
    \r
    В этой секции вы можете изменить ваш пароль. Но учтите, что перед изменением вашего пароля на новый, вы должны будете ввести ваш старый пароль.\r
    ', 'Редактирование контактной и персональной информации, аватаров, подписи, настроек форума.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (5, 'Уведомление на e-mail о новых сообщениях', 'На форуме существует возможность уведомлять вас о новых сообщениях в темах. Многие пользователи с успехом используют эту функцию для своевременного извещения о том, что в теме имеются новые сообщения.\r
    \r
    Существует 3 способа подписки на тему:\r
    \r
  • Нажав на кнопку «Опции», которая находится в верхней части каждой темы, и выбрав пункт «Подписка на тему».\r
  • С помощью установки галочки в окошко «Включить уведомление на e-mail при ответах?», находящееся под формой ответа.\r
  • Через пункт «Настройки e-mail» в вашей панели управления (Личные данные), установив галочку на опции «Включить E-mail Уведомление по умолчанию?», после чего вы будете автоматически подписываться на все темы, в которые вы ответите.\r
    \r
    Но имейте ввиду, что, в избежание повтора писем, отправляемых на ваш e-mail адрес, вы будете получать только одно письмо для каждой подписанной темы, независимо от количества новых ответов в эту тему, до тех пор, пока не посетите данную тему.\r
    \r
    Вы также можете подписаться на любой из разделов форума и при появлении новой темы в этом разделе, вы будете уведомлены об этом. Для подписки на раздел, нажмите кнопку «Опции форума», находящуюся в верхней части каждого форума, и выбрав пункт «Подписаться на форум».\r
    \r
    Для отмены подписки на любой из разделов или тем, на которые вы подписаны, зайдите в «Личные данные», затем выбрать в разделе «Подписки» пункт «Темы» или «Форумы» (в зависимости от того, от чего вы хотите отписаться). \r
    ', 'Как подписаться на тему для уведомления по e-mail о новых ответах.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (6, 'Личный ящик (PM)', 'Ваш личный ящик на форуме, действует аналогично e-mail ящику. Здесь вы можете получать и отправлять письма пользователям форума, хранить ваши письма в папках, создавать, редактировать и удалять папки.\r
    \r
    Новое личное сообщение\r
    \r
    Отсюда Вы можете отправить письмо пользователю форума. Если в вашем списке контактов имеются имена пользователей, вы можете выбрать имя оттуда или ввести имя получателя вручную. Если вы нажмете в каком-либо сообщении в темах или в списке пользователей на кнопку «Приват», то имя пользователя будет автоматически добавлено в графу получателя письма. Если администратор форума разрешил отправлять письма нескольким пользователям одновременно, вы можете ввести имена сразу нескольких пользователей, — по одному имени на строку, в окне «Копия пользователям».\r
    В некоторых случаях, если это разрешено администратором, вы даже можете использовать коды форума и HTML в тексте ваших писем. Вы также можете выбрать пункт «Добавить копию этого сообщения в папку «Отправленные»» для сохранения копии письма в папке отправленных писем. При установке галочки в окошке «Проследить за этим сообщением?», вы сможете прослеживать через пункт меню «Слежение за сообщениями» состояние того, что прочитано ли ваше письмо адресатом.\r
    \r
    Входящие\r
    \r
    Вы попадете в папку входящих писем, на которую поступают все отправленные вам письма. Нажав на заголовок письма, вы сможете прочесть пришедшее письмо. После прочтения, вы можете удалять или перемещать письма в другие папки.\r
    \r
    Очистка папок\r
    \r
    Через эту опцию, вы можете быстро удалить все письма из любых ваших папок.\r
    \r
    Редактировать папки\r
    \r
    Здесь вы можете переименовывать, удалять или создавать новые папки для сортировки ваших писем так, как вам будет более удобно. Вы не можете удалять только две папки, созданные самим форумом — это папка «Отправленные» и «Входящие».\r
    \r
    Список контактов\r
    \r
    Вы можете добавить в ваш контактный лист имена ваших друзей, а также внести в черный список имена ваших недругов, от которых вы не желаете получать письма.\r
    При отправке писем, вы будете способны быстро выбрать имя получателя в выпадающем списке, если вы до этого ввели его имя в ваш список друзей\r
    \r
    Архивирование сообщений\r
    \r
    Если ваш Личный Ящик переполнен и в связи с этим вы не в состоянии получать новые письма, то можно произвести архивацию писем. Все ваши письма будут скомпилированы на одной странице в формате HTML или Microsoft © Excel, а затем высланы на ваш e-mail адрес, указанный вами при регистрации на форуме.\r
    \r
    Неотправленные\r
    \r
    Здесь вы можете вернуться к любому письму, которое вы решили сохранить, для отправки его позже.\r
    \r
    Слежение за сообщениями\r
    \r
    На этой странице появляются все письма, за которыми вы решили проследить. Все данные о том, прочитаны ли ваши письма получателями и когда они прочитаны, — появляются здесь. Также, если вы передумали, и если письмо пока не прочитано получателем, вы можете удалить это письмо.\r
    \r
    ', 'Отправка личных сообщений, редактирование папок Личного Ящика, слежение за письмами, архивация сохраненных сообщений.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (7, 'Контакт с администрацией и доклад модератору о сообщениях', 'Контакт с администрацией\r
    \r
    Для связи с модератором или просто для просмотра списка администрации форума, нажмите на ссылку «Администрация», находящуюся в нижней части главной страницы форума или на странице «Помощник».\r
    \r
    В этом списке вы увидите имена всех администраторов (это главные администраторы форума, имеющие доступ ко всем функциям), супермодераторов (это команда модераторов, имеющих возможность модерирования всех разделов форума) и модераторов (это модераторы, модерирующие индивидуальные разделы форума, в которые они назначены).\r
    \r
    Для связи по поводу пользовательских данных, необходимо связаться непосредственно с администратором форума, а для связи по поводу тем или сообщений, обращайтесь к супермодератором или модераторам.\r
    \r
    Жалоба модератору о сообщении\r
    \r
    Если администратор форума включил эту функцию, вы увидите кнопку «Жалоба», внизу каждого сообщения темы. При помощи этой функции, вы сможете быстро доложить о сообщении модератору данного раздела форума (или администратору, — если в данном форуме нет назначенных модераторов). Используйте эту функцию только в том случае, если вы видите какие-либо нарушения правил форума в данном сообщении. Запрещено использовать эту функцию для простых переговоров с модератором!. Для переговоров, вы можете использовать PM (Личный ящик форума).\r
    \r
    ', 'Где найти список Администраторов и Модераторов форума.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (8, 'Просмотр информации профиля пользователей', 'Для просмотра данных профиля любого пользователя, нажмите на имя этого пользователя, если имя подчеркнуто (в виде ссылки).\r
    \r
    После нажатия, вы попадете на страницу профиля пользователя, в которой можно увидеть всю контактную информацию, все данные (если он ввел их), а также «Статистику активности на форуме» данного пользователя.\r
    \r
    Вы также можете нажать на кнопку «Карточка», находящуюся в нижней части сообщения любого из пользователей, где также можете увидеть контактную информацию пользователя и, если он загрузил фотографию на форум, — его фотографию.\r
    \r
    ', 'Где можно найти контактную информацию пользователя.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (9, 'Просмотр активных тем и новых сообщений', 'Вы можете быстро просмотреть список сегодняшних активных тем (это темы, имеющие новые ответы), нажав на ссылку «Активные темы», находящуюся в нижней части главной страницы форума. Там же, вы можете установить свои критерии поиска по дате, для поиска активных тем, обновленных в течение нескольких дней.', 'Где можно просмотреть список сегодняшних активных тем и новые сообщения, появившиеся с момента Вашего последнего посещения форума.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (10, 'Поиск тем и сообщений', 'Функция поиска, предназначена для быстрого поиска тем и сообщений, по введенным вами ключевым словам.\r
    \r
    Имеются два доступных типа поиска, простой поиск и расширенный поиск. Вы можете переключаться между ними, при помощи кнопок «Расширенный поиск» и «Простой поиск».\r
    \r
    Простой поиск\r
    \r
    Здесь Вы должны ввести ключевое слово для поиска и выбрать форум(ы), в которых хотите найти что-то по этому слову, (для выбора нескольких форумов одновременно, необходимо кликать по их названиям, удерживая кнопку «Ctrl», а пользователи Mac, должны удерживать кнопки «Shift»/«Apple»), затем выбрать порядок сортировки найденного и искать.\r
    \r
    Расширенный поиск\r
    \r
    На странице расширенного поиска, у вас появится возможность использования дополнительных критериев поиска, значительно улучшающих функцию поиска. Дополнительно к поиску по ключевому слову, вы сможете произвести поиск по имени пользователя, а также возможно использование сразу обоих комбинаций. Можно увеличить критерии поиска, посредством выбора диапазона дат, а также выбрать порядок сортировки найденного. Также имеется два вида отображения результатов поиска - в виде отображения полного текста сообщения и в виде ссылки на тему. Вид отображения, вы можете заранее указать, на странице поиска.\r
    \r
    Администратор может включить минимальное время, известное под названием «Флуд-контроль», которое вы должны будете прождать для повторного поиска.\r
    \r
    На форуме имеется также поисковая форма, известная под названием «Фильтр поиска», находящаяся в нижней части каждого раздела, через которую вы сможете произвести быстрый поиск в конкретном разделе форума.\r
    ', 'Как воспользоваться функцией поиска.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (11, 'Авторизация и Выход из форума', 'Во время авторизации на форуме, вы можете установить функцию запоминания ваших данных через cookies, а если вы зашли на форум с чужого компьютера, вам надо будет авторизоваться снова.\r
    \r
    Но не используйте функцию запоминания cookies, если заходите с чужого компьютера.\r
    \r
    Вы можете также выбрать функцию скрытия, поставив галочку в окне «Скрытность». И тогда ваше имя не будет отображаться в списке «Кто в онлайне».\r
    \r
    Выход из форума производится простым нажатием на ссылку «Выход». Если вдруг вы обнаружите, что выход не сработал, возможно, вы должны будете удалить ваши cookies. Читайте раздел помощи про «Cookies» для дополнительной информации.\r
    \r
    \r
    ', 'Как авторизоваться, выйти из форума, а также как скрыть свое имя из списка пользователей, находящихся на форуме.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (13, 'Помощник', 'В верхней части форума, находится ссылка «Помощник», нажав на которую, у вас откроется окно с вкладкой «Информация». В этой вкладке вы увидите несколько полезных ссылок:\r
    \r
  • Ссылка «Администрация форума» покажет вам список администраторов и модераторов форума.\r
  • Ссылка «Самые активные сегодня» покажет вам список самых активных пользователей за последние 24 часа.\r
  • Ссылка «Самые активные форумчане» покажет вам список самых активных пользователей форума, количество сообщений и прочую полезную информацию, за все время.\r
  • Ссылка «10 ваших последних сообщений» покажет вам 10 ваших последних сообщений, с обрезанным текстом самих сообщений. Если вы захотите увидеть полный текст какого-либо из этих 10 сообщений, вы можете нажать на ссылку, ведущую в тему, в которой находится данное сообщение.\r
    \r
    На второй вкладке «Помощника» вы можете увидеть список 10 тем, в которых появились новые ответы. Чтобы открыть тему, вам нужно кликнуть на её заголовок. \r
    \r
    В третье вкладке находится поиск по форуму, с помощью которого вы сможете найти конкретное сообщение, имеющее ключевое слово, введенное вами.\r
    \r
    Последняя вкладка, «Личные сообщения», содержит список ваших последних пяти личных сообщений. Если вы хотите прочитать содержимое письма, то вам нужно кликнуть на тему сообщений и в окне откроется это сообщение. Так же, внизу этой вкладки имеется ссылка «Перейти во «Входящие» »», нажав на которую, вы попадете в папку входящих личных сообщений.\r
    \r
    ', 'Полный справочник по использованию этой маленькой, но удобной функции.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (12, 'Сообщения', 'На форуме доступны две разные формы создания сообщений. Кнопка «Открыть тему», находящаяся в каждом разделе форума и на странице тем, предназначена для создания новой темы. При просмотре темы, вы увидите кнопку «Ответить», которая предназначена для добавления вашего сообщения в данную тему. \r
    \r
    Создание новой темы и ответ в тему\r
    \r
    При написании сообщений, вас, вероятно, заинтересуют коды форума. Данные коды, предназначены для различного форматирования текстов ваших сообщений. \r
    \r
    С левой стороны от окна для ввода текста сообщения, имеется таблица со смайликами. Для добавления любого смайлика к тексту вашего сообщения, нажмите на этот смайлик, и его код будет автоматически добавлен в нужное место текста.\r
    \r
    Имеются три опции сообщения, доступные при создании темы или ответе в тему. При отключении опции «Включить смайлы?», коды смайликов не будут преобразованы в изображения. Опция «Включить подпись?», предназначена для добавления текста вашей подписи к каждому сообщению на форуме. При установке галочки в окошке опции «Включить уведомление на e-mail при ответах?», на ваш e-mail адрес будет поступать информация каждый раз при новых ответах в данную тему. Для более подробной информации по этой функции, читайте раздел помощи «Уведомление на e-mail о новых сообщениях».\r
    \r
    Также для вас доступен выбор иконки сообщения, при создании тем или ответах в темы. Выбранная вами иконка будет отображаться слева от названия вашей темы, в списке тем форума, а если выбрать иконку при ответе в тему, ваша иконка будет отображаться над вашим сообщением, слева от даты написания сообщения.\r
    \r
    Если администратор форума включил функцию присоединений, вы увидите формочку для присоединения файла к вашему сообщению. Для присоединения файла, нажмите на кнопку Обзор и выберите файл на вашем компьютере, для загрузки этот файла. Если вы загружаете файл изображения, данное изображения будет отображено под текстом сообщения, а при загрузке всех других типов файлов, под текстом вашего сообщения будет прописана ссылка для скачивания этого файла.\r
    \r
    Установки опроса\r
    \r
    При создании новой темы, под полями для ввода названия и описания темы, вы увидите ссылку «Нажмите сюда для управления опросом в этой теме». Нажав на это ссылку, вам откроются опции опроса. Первое поле служит для ввода в нем вопроса вашего голосования. Чтобы добавить вопрос к вашему опросу, нужно кликнуть на «Добавить еще вопрос в опрос». Количество возможных опросов в одной теме и соответственно вариантов ответов устанавливается администратором форума.\r
    Просмотреть разрешенное количество вопрос и вариантов ответов к каждому вопросу вы можете посмотреть внизу формы добавления опроса.\r
    Чтобы отменить весь опрос, вам нужно нажать «Закрыть форму опроса»\r
    \r
    Цитирование сообщений\r
    \r
    Над каждым сообщением в теме имеется кнопка «Цитата». При нажатии на эту кнопку, вы сможете ответить в тему, с цитированием того сообщения, над которым нажали данную кнопку. Таким образом, при нажатии на эту кнопку, вы попадете на страницу написания ответа в тему, где под формой ответа вы увидите дополнительное текстовое окно, с текстом процитированного сообщения, которое вы можете отредактировать на ваше усмотрение.\r
    \r
    Редактирование сообщений\r
    \r
    Над каждым сообщением, написанным вами, вы увидите кнопку «Изменить». При нажатии на эту кнопку, вам будет предложено выбрать один из способов редактирования: «Полное редактирование» или «Быстрое редактирование». «Быстрое редактирование» позваляет вам отредактировать сообщения без перезагрузки страницы. Вы сможете отредактировать текст вашего сообщения независимо от того, когда вы это сообщение писали.\r
    \r
    При редактировании своего сообщения вы можете увидеть опцию «Добавить надпись «Отредактировано...» в это сообщение?». При установке галочки в этой опции, под вашим отредактированным сообщением появится надпись, информирующая о том, что вы редактировали это сообщение, с датой редактирования. Если вы не видите эту опцию, значит, данная информация о редактировании будет добавлена автоматически.\r
    \r
    Если вы не видите кнопку для редактирования вашего сообщения, то, возможно, что администратор форума отключил данную функцию, либо установил лимит времени, по истечении которого, редактирование сообщения уже невозможно.\r
    \r
    ', 'Руководство по функциям, используемым при создании темы, опроса и ответа в тему.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (14, 'Список пользователей', 'Список пользователей, доступный через ссылку «Пользователи», находящуюся в верхней части каждой страницы форума, — это полный список всех пользователей, зарегистрированных на форуме.\r
    \r
    Для поиска конкретного пользователя по части или по полному имени, в выпадающем меню, находящимся в нижней части списка пользователей, измените пункт «Найти всех доступных» на «Имя начинается с» или «Имя содержит», затем введите часть имени или полное имя в текстовое поле и нажмите на кнопку «ОК!». \r
    \r
    Также доступны несколько опций сортировки найденного, которые вы можете использовать, как вам будет удобно. \r
    \r
    В последней колонке списка пользователей, напротив имен пользователей, которые загрузили фотографию в свой профиль, будет отображаться иконка\r
    ', 'Просмотр и поиск пользователей через список пользователей и возможность сортировки найденного.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (15, 'Опции темы', 'В верхней части каждой темы имеется кнопка «Опции». При нажатии на эту кнопку раскроется меню с опциями темы. \r
    \r
    В этом меню вы можете использовать следующие опции: \r
    \r
  • «Подписаться на тему» — эта опция служит для получения уведомлений на e-mail, об обновлении темы. Для более подробной информации по этой части, читайте раздел помощи «Уведомление на e-mail о новых сообщениях». \r
    \r
  • «Сообщить другу» — данная опция позволит вам отправить ссылку на тему вашему другу на e-mail адрес.\r
    \r
  • «Подписка на этот форум» — эта опция служит для получения уведомлений на e-mail, о любых новых темах, созданных в этом форуме. Для более подробной информации по этой части, читайте раздел помощи «Уведомление на e-mail о новых сообщениях». \r
    \r
  • «Версия для печати» — эта опция отобразит данную тему в других различных форматах. «Версия для печати» отобразит тему в том виде, в котором она будет распечатана на принтере.\r
    \r
    ', 'Руководство по доступным опциям, при просмотре тем.');"; -$INSERT[] ="INSERT INTO ibf_faq (id, title, text, description) VALUES (16, 'Календарь', 'На форуме имеется функция календаря, ссылка на который находится в верхней части форума.\r
    \r
    Вы можете добавлять персональные события в календарь, которые будут видны только вам. Для добавления нового события, используйте кнопку «Добавить новое событие». Имеется возможность создания двух видов событий:\r
    \r
  • Однодневное событие — для добавления этого вида, используйте первое поле, указав в нем дату события.\r
    \r
  • Многодневное событие — это вид события, предусмотренный на несколько дней, для добавления этого вида, вам нужно отметить галочкой поле «Если это событие не действует весь день, вы можете указать начальное время». После этого появится поле, где можно будет выбрать временную зону и начальное время.\r
    \r
    \r
    Также, Вы можете указать дату вашего рождения через страницу личных данных и, если администратор включил эту возможность, то дата вашего рождения появится в виде ссылки, в календаре, в день вашего рождения.\r
    \r
    ', 'Информация по использованию функции календаря форума.');"; - -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Указатель сообщения', 'Этот тэг показывает маленькое изображение, которое является ссылкой на цитируемое сообщение — используется, когда цитируются сообщения с форума. Открывается по умолчанию в том же окне.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По правому краю', 'Выравнивание текста по правому краю', 'right', '
    {content}
    ', 0, '[right]Любой текст здесь[/right]');"; -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По левому краю', 'Выравнивание текста по левому краю', 'left', '
    {content}
    ', 0, '[left]Этот текст будет использовать выравнивание по левому краю[/left]');"; -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По центру', 'Выравнивание текста по центру.', 'center', '
    {content}
    ', 0, '[center]Выравнивание текста будет по центру[/center]');"; -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Ссылка на тему', 'Этот тэг позволяет легко опубликовать ссылку на тему, зная лишь ее номер', 'topic', '{content}', 1, '[topic=100]Нажми на меня![/topic]');"; -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Ссылка на сообщение', 'Этот тэг позволяет легко опубликовать ссылку на сообщение, зная лишь его номер.', 'post', '{content}', 1, '[post=100]Нажми на меня![/post]');"; -$INSERT[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Блок кода', 'Этот тэг будет показывать блок кода с полосой прокрутки. Применяется для больших блоков с исходным кодом программы.', 'codebox', '
    Исходный код
    {content}
    ', 0, '[codebox]long_code_here = '';[/codebox]');"; - -# IPB 2.1: CHANGED B4 -$INSERT[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (1, 'Invision Gallery', 'Invision Power Services', 'http://www.invisiongallery.com', '1.3.0', 1113309894, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'gallery', 'gallery', 'Галерея для форума', '{ipb.lang[\'gallery\']}', '{ipb.base_url}act=module&module=gallery', 1);"; -$INSERT[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (2, 'Invision Community Blog', 'Invision Power Services', 'http://www.invisionblog.com', '1.1.2', 1113310263, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'blog', 'blog', 'Система блогов для форума', '{ipb.lang[\'blog\']}', '{ipb.base_url}automodule=blog', -1);"; -$INSERT[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (3, 'Invision Chat (ParaChat)', 'Invision Power Services', 'http://chat.invisionsitetools.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatpara', 'chatpara', 'Модуль чата для форума', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatpara', 2);"; -$INSERT[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (4, 'Invision Copyright Removal', 'Invision Power Services', 'http://www.invisionboard.com', '2.1', 1113314009, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 1, 1, 'copyright', 'copyright', 'Разрешение на удаление копирайта', '', '', 3);"; -$INSERT[] ="INSERT INTO ibf_components (com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES ('SigmaChat', 'Invision Power Services', 'http://www.invisionpower.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatsigma', 'chatsigma', 'Модуль чата для форума', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatsigma', 5);"; - -$INSERT[] ="INSERT INTO ibf_task_manager VALUES ('', 'Обновление счетчика просмотров тем', 'updateviews.php', <%time%>, -1, -1, 3, -1, 'ddce954b5ba1c163bc627ca20725b595', 0, 'Используется, когда просмотры тем не обновляются в реальном времени', 1, 'updateviews', 0, 0);"; -$INSERT[] ="INSERT INTO ibf_task_manager VALUES ('', 'Уведомление об истечении подписок', 'expiresubs.php', <%time%>, -1, -1, 1, 0, '21fa5f52cf9122c6fe940e1c6dac0b5a', 1, 'Отправляет письмо пользователям, у которых закончилась подписка', 1, 'expiresubs', 0, 0);"; -$INSERT[] ="INSERT INTO ibf_task_manager VALUES ('', 'Обновление RSS Импорта', 'rssimport.php', <%time%>, -1, -1, -1, 30, '8f17dc0ba334e5f18e762f154365a578', 1, 'Импорт новых RSS записей', 1, 'rssimport', 1, 0);"; - -$INSERT[] ="INSERT INTO ibf_cal_calendars (cal_id, cal_title, cal_moderate, cal_position, cal_event_limit, cal_bday_limit, cal_rss_export, cal_rss_export_days, cal_rss_export_max, cal_rss_update, cal_rss_update_last, cal_rss_cache, cal_permissions) VALUES (1, 'Основной календарь', 1, 0, 2, 1, 1, 14, 20, 1440, <%time%>, '', 'a:3:{s:9:\"perm_read\";s:1:\"*\";s:9:\"perm_post\";s:3:\"4,3\";s:10:\"perm_nomod\";s:0:\"\";}');"; - -$INSERT[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (1, 'Внутренняя авторизация IPB', 'Стандартный метод авторизации', 'internal', '', '', 'passthrough', '', <%time%>, 0, 1, 1, 1, 0, 1);"; -$INSERT[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (2, 'LDAP Авторизация', 'LDAP / Авторизация Active Directory', 'ldap', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; -$INSERT[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (3, 'Внешняя база данных', 'Авторизация через внешнюю базу данных', 'external', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; - - -$INSERT[] = "INSERT INTO ibf_upgrade_history (upgrade_id, upgrade_version_id, upgrade_version_human, upgrade_date, upgrade_mid, upgrade_notes) VALUES ('', '".IPB_LONG_VERSION."', '".IPBVERSION."', '0', '0', '');"; - +, 1, '<%admin_name%>', 'A Test Forum', 'A test forum that may be removed at any time', 1, 1, 0, 1, '', '', 'Welcome!', 1, 'last_post', 'Z-A', 100, 'all', 0, 0, 1, 1, 1, NULL, 1, 1, '', 0, 0, '', '', '', '', '', 1, '', 'a:6:{s:11:\"start_perms\";s:1:\"*\";s:11:\"reply_perms\";s:1:\"*\";s:10:\"read_perms\";s:1:\"*\";s:12:\"upload_perms\";s:1:\"*\";s:14:\"download_perms\";s:1:\"*\";s:10:\"show_perms\";s:1:\"*\";}', 0, 0, 0, 0, 1, '', 0);"; +$INSERT[] = "INSERT INTO ibf_forums VALUES (1, 0, 0, 0, 0, '', 'A Test Root', 'A test forum that may be removed at any time' , 1, 1, 0, 1, '', '', '', 0, 'last_post', 'Z-A', 30, 'all', 0, 0, 1, 1, 1, NULL, -1, 0, '', 0, 0, '', '', '', '', '', 0, '', 'a:5:{s:11:\"start_perms\";s:0:\"\";s:11:\"reply_perms\";s:0:\"\";s:10:\"read_perms\";s:0:\"\";s:12:\"upload_perms\";s:0:\"\";s:10:\"show_perms\";s:1:\"*\";}', 1, 0, 0, 1, 1, '', 0);"; + +$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Validating Forum Set', perm_id=1"; +$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Member Forum Set', perm_id=3"; +$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Guest Forum Set', perm_id=2"; +$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Admin Forum Set', perm_id=4"; +$INSERT[] = "INSERT INTO ibf_forum_perms SET perm_name='Banned Forum Set', perm_id=5"; + +$INSERT[] = "INSERT INTO ibf_languages (lid, ldir, lname, lauthor, lemail) VALUES (1, 'en', 'English', 'Invision Power Board', 'languages@invisionboard.com');"; + +$INSERT[] = "INSERT INTO ibf_posts (pid, append_edit, edit_time, author_id, author_name, use_sig, use_emo, ip_address, post_date, icon_id, post, queued, topic_id, post_title, new_topic, edit_name, post_key, post_parent, post_htmlstate) VALUES (1, 0, NULL, 1, 'Invision Power Board Team', 0, 1, '127.0.0.1', <%time%>, 0, 'Welcome to your new Invision Power Board!
    This is simply a test message confirming that the installation was successful.
    You can remove this message, topic, forum or even category at any time.', 0, 1, NULL, 1, NULL, '0', 0, 0);"; + +$INSERT[] = "INSERT INTO ibf_titles (id, posts, title, pips) VALUES (1, 0, 'Newbie', '1');"; +$INSERT[] = "INSERT INTO ibf_titles (id, posts, title, pips) VALUES (2, 10, 'Member', '2');"; +$INSERT[] = "INSERT INTO ibf_titles (id, posts, title, pips) VALUES (4, 30, 'Advanced Member', '3');"; + +# TOPICS: topic_rating_hits +$INSERT[] = "INSERT INTO ibf_topics VALUES (1, 'Welcome', '', 'open', 0, 1, <%time%>, 1, <%time%>, 0, '<%admin_name%>', '<%admin_name%>', '0', 0, 1, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);"; + +$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='USD', subcurrency_desc='United States Dollars', subcurrency_exchange='1.00', subcurrency_default=1;"; +$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='GBP', subcurrency_desc='United Kingdom Pounds', subcurrency_exchange=' 0.550776', subcurrency_default=0;"; +$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='CAD', subcurrency_desc='Canada Dollars', subcurrency_exchange='1.37080', subcurrency_default=0;"; +$INSERT[] = "INSERT INTO ibf_subscription_currency SET subcurrency_code='EUR', subcurrency_desc='Euro', subcurrency_exchange='0.901517', subcurrency_default=0;"; + + +$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (1, 'PayPal', 'paypal', '', '', '', '', '', '', '', 0, 1, 'All major credit cards accepted. See PayPal for more information.', '', 1, 'USD');"; +$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (2, 'NOCHEX', 'nochex', '', '', '', '', '', '', '', 0, 1, 'UK debit and credit cards, such as Switch, Solo and VISA Delta. All prices will be convereted into GBP (UK Pounds) upon ordering.', NULL, 1, 'GBP');"; +$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (3, 'Post Service', 'manual', '', '', '', '', '', '', '', 0, 0, 'You can use this method if you wish to send us a check, postal order or international money order.', NULL, 1, 'USD');"; +$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (4, '2CheckOut', '2checkout', '', '', '', '', '', '', '', 1, 1, 'All major credit cards accepted. See 2CheckOut for more information.', NULL, 1, 'USD');"; +$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (5, 'Safshop', 'safshop', '', '', NULL, NULL, NULL, NULL, NULL, 0, 1, 'Accepts all major credit cards', NULL, 1, 'USD');"; +$INSERT[] = "INSERT INTO ibf_subscription_methods (submethod_id, submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES (6, 'Protx', 'protx', '', '', '', '', '', '', '', 1, 1, 'Accepts all major credit cards', '', 1, 'GBP');"; + +$INSERT[] ="INSERT INTO ibf_cal_calendars (cal_id, cal_title, cal_moderate, cal_position, cal_event_limit, cal_bday_limit, cal_rss_export, cal_rss_export_days, cal_rss_export_max, cal_rss_update, cal_rss_update_last, cal_rss_cache, cal_permissions) VALUES (1, 'Community Calendar', 1, 0, 2, 1, 1, 14, 20, 1440, <%time%>, '', 'a:3:{s:9:\"perm_read\";s:1:\"*\";s:9:\"perm_post\";s:3:\"4,3\";s:10:\"perm_nomod\";s:0:\"\";}');"; + +$INSERT[] = "INSERT INTO ibf_upgrade_history (upgrade_version_id, upgrade_version_human, upgrade_date, upgrade_mid, upgrade_notes) VALUES ('".IPB_LONG_VERSION."', '".IPBVERSION."', '0', '0', '');"; + ?> \ No newline at end of file diff --git a/upload/install/sql/mysql_install.php b/upload/install/sql/mysql_install.php index 6f3f03e9..6db9b9ae 100644 --- a/upload/install/sql/mysql_install.php +++ b/upload/install/sql/mysql_install.php @@ -2,24 +2,13 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| INVISION POWER BOARD INSTALLER v2.1 | ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +-------------------------------------------------------------------------- | | > Script written by Matthew Mecham @@ -82,8 +71,8 @@ class install_extra function install_form_extra() { $extra = " - Тип таблиц MySQL
    Обычно это MyISAM. Если вы выберите INNODB, вы не сможете использовать полнотекстовый поиск
    - "; return $extra; @@ -106,7 +95,7 @@ class install_extra if ( ! $_REQUEST['mysql_tbl_type'] ) { - $this->errors[] = 'Вы обязаны заполнить всю SQL информацию!'; + $this->errors[] = 'You must complete the required SQL section!'; return; } diff --git a/upload/install/sql/mysql_tables.php b/upload/install/sql/mysql_tables.php index df3c01c8..af95b33e 100644 --- a/upload/install/sql/mysql_tables.php +++ b/upload/install/sql/mysql_tables.php @@ -1,33 +1,5 @@ Script written by Matthew Mecham -| > Date started: 12th August 2004 -| > MYSQL EXTRA CONFIG / INSTALL FILE -+-------------------------------------------------------------------------- -*/ - # Don't forget to remove TYPE=MyISAM AND FULLTEXT INDEXES # ); must be the last character, no spaces! @@ -42,6 +14,18 @@ $TABLE[] = "CREATE TABLE ibf_admin_logs ( PRIMARY KEY (id) );"; +$TABLE[] = "CREATE TABLE ibf_admin_login_logs ( + admin_id INT(10) NOT NULL auto_increment, + admin_ip_address VARCHAR(16) NOT NULL default '0.0.0.0', + admin_username VARCHAR(40) NOT NULL default '', + admin_time INT(10) UNSIGNED NOT NULL default '0', + admin_success INT(1) UNSIGNED NOT NULL default '0', + admin_post_details TEXT NOT NULL default '', + PRIMARY KEY (admin_id), + KEY admin_ip_address (admin_ip_address), + KEY admin_time (admin_time) +);"; + # IPB 2.1: BETA 2 $TABLE[] = "CREATE TABLE ibf_admin_permission_rows ( row_member_id INT(8) NOT NULL, @@ -88,28 +72,30 @@ $TABLE[] = "CREATE TABLE ibf_announcements ( );"; $TABLE[] = "CREATE TABLE ibf_attachments ( - attach_id int(10) NOT NULL auto_increment, - attach_ext varchar(10) NOT NULL default '', - attach_file varchar(250) NOT NULL default '', - attach_location varchar(250) NOT NULL default '', + attach_id int(10) NOT NULL auto_increment, + attach_ext varchar(10) NOT NULL default '', + attach_file varchar(250) NOT NULL default '', + attach_location varchar(250) NOT NULL default '', attach_thumb_location varchar(250) NOT NULL default '', - attach_thumb_width smallint(5) NOT NULL default '0', - attach_thumb_height smallint(5) NOT NULL default '0', - attach_is_image tinyint(1) NOT NULL default '0', - attach_hits int(10) NOT NULL default '0', - attach_date int(10) NOT NULL default '0', - attach_temp tinyint(1) NOT NULL default '0', - attach_pid int(10) NOT NULL default '0', - attach_post_key varchar(32) NOT NULL default '0', - attach_msg int(10) NOT NULL default '0', - attach_member_id mediumint(8) NOT NULL default '0', - attach_approved int(10) NOT NULL default '1', - attach_filesize int(10) NOT NULL default '0', + attach_thumb_width smallint(5) NOT NULL default '0', + attach_thumb_height smallint(5) NOT NULL default '0', + attach_is_image tinyint(1) NOT NULL default '0', + attach_hits int(10) NOT NULL default '0', + attach_date int(10) NOT NULL default '0', + attach_temp tinyint(1) NOT NULL default '0', + attach_post_key varchar(32) NOT NULL default '0', + attach_member_id INT(8) NOT NULL default '0', + attach_approved int(10) NOT NULL default '1', + attach_filesize int(10) NOT NULL default '0', + attach_rel_id INT(10) NOT NULL default '0', + attach_rel_module VARCHAR(100) NOT NULL default '0', + attach_img_width INT(5) NOT NULL default '0', + attach_img_height INT(5) NOT NULL default '0', PRIMARY KEY (attach_id), - KEY attach_pid (attach_pid), - KEY attach_msg (attach_msg), + KEY attach_pid (attach_rel_id), + KEY attach_where (attach_rel_module, attach_rel_id), KEY attach_post_key (attach_post_key), - KEY attach_mid_size (attach_member_id,attach_filesize) + KEY attach_mid_size (attach_member_id,attach_rel_module, attach_filesize) );"; $TABLE[] = "CREATE TABLE ibf_attachments_type ( @@ -201,32 +187,6 @@ $TABLE[] = "CREATE TABLE ibf_cal_events ( );"; -$TABLE[] = "CREATE TABLE ibf_calendar_events ( - eventid mediumint(8) NOT NULL auto_increment, - userid mediumint(8) NOT NULL default '0', - year int(4) NOT NULL default '2002', - month int(2) NOT NULL default '1', - mday int(2) NOT NULL default '1', - title varchar(254) NOT NULL default 'no title', - event_text text NOT NULL, - read_perms varchar(254) NOT NULL default '*', - unix_stamp int(10) NOT NULL default '0', - priv_event tinyint(1) NOT NULL default '0', - show_emoticons tinyint(1) NOT NULL default '1', - rating smallint(2) NOT NULL default '1', - event_ranged tinyint(1) NOT NULL default '0', - event_repeat tinyint(1) NOT NULL default '0', - repeat_unit char(2) NOT NULL default '', - end_day int(2) default NULL, - end_month int(2) default NULL, - end_year int(4) default NULL, - end_unix_stamp int(10) default NULL, - event_bgcolor varchar(32) NOT NULL default '', - event_color varchar(32) NOT NULL default '', - PRIMARY KEY (eventid), - KEY unix_stamp (unix_stamp) -);"; - $TABLE[] = "CREATE TABLE ibf_components ( com_id int(10) NOT NULL auto_increment, com_title varchar(255) NOT NULL default '', @@ -246,17 +206,18 @@ $TABLE[] = "CREATE TABLE ibf_components ( PRIMARY KEY (com_id) );"; +# MySQL 5: added default values $TABLE[] = "CREATE TABLE ibf_conf_settings ( conf_id int(10) NOT NULL auto_increment, - conf_title text NOT NULL, + conf_title varchar(255) NOT NULL default '', conf_description text NOT NULL, - conf_group varchar(255) NOT NULL default '', + conf_group smallint(3) NOT NULL default '0', conf_type varchar(255) NOT NULL default '', - conf_key text NOT NULL, - conf_value text NOT NULL, - conf_default text NOT NULL, - conf_extra text NOT NULL, - conf_evalphp text NOT NULL, + conf_key varchar(255) NOT NULL default '', + conf_value text NOT NULL default '', + conf_default text NOT NULL default '', + conf_extra text NOT NULL default '', + conf_evalphp text NOT NULL default '', conf_protected tinyint(1) NOT NULL default '0', conf_position smallint(3) NOT NULL default '0', conf_start_group varchar(255) NOT NULL default '', @@ -269,10 +230,11 @@ $TABLE[] = "CREATE TABLE ibf_conf_settings ( $TABLE[] = "CREATE TABLE ibf_conf_settings_titles ( conf_title_id smallint(3) NOT NULL auto_increment, conf_title_title varchar(255) NOT NULL default '', - conf_title_desc text NOT NULL, + conf_title_desc text NOT NULL default '', conf_title_count smallint(3) NOT NULL default '0', conf_title_noshow tinyint(1) NOT NULL default '0', - conf_title_keyword varchar(200) NOT NULL default '0', + conf_title_keyword varchar(200) NOT NULL default '', + conf_title_module varchar(200) NOT NULL default '', PRIMARY KEY (conf_title_id) );"; @@ -286,6 +248,19 @@ $TABLE[] = "CREATE TABLE ibf_contacts ( PRIMARY KEY (id) );"; +$TABLE[] = "CREATE TABLE ibf_converge_local ( + converge_api_code VARCHAR(32) NOT NULL default '', + converge_product_id INT(10) NOT NULL default '0', + converge_added INT(10) NOT NULL default '0', + converge_ip_address VARCHAR(16) NOT NULL default '', + converge_url VARCHAR(255) NOT NULL default '', + converge_active INT(1) NOT NULL default '0', + converge_http_user VARCHAR(255) NOT NULL default '', + converge_http_pass VARCHAR(255) NOT NULL default '', + PRIMARY KEY (converge_api_code ), + KEY converge_active (converge_active) +);"; + $TABLE[] = "CREATE TABLE ibf_custom_bbcode ( bbcode_id int(10) NOT NULL auto_increment, bbcode_title varchar(255) NOT NULL default '', @@ -294,6 +269,10 @@ $TABLE[] = "CREATE TABLE ibf_custom_bbcode ( bbcode_replace text NOT NULL, bbcode_useoption tinyint(1) NOT NULL default '0', bbcode_example text NOT NULL, + bbcode_switch_option INT(1) NOT NULL default '0', + bbcode_add_into_menu INT(1) NOT NULL default '0', + bbcode_menu_option_text VARCHAR(200) NOT NULL default '', + bbcode_menu_content_text VARCHAR(200) NOT NULL default '', PRIMARY KEY (bbcode_id) );"; @@ -339,6 +318,7 @@ $TABLE[] = "CREATE TABLE ibf_faq ( title varchar(128) NOT NULL default '', text text, description text NOT NULL, + position SMALLINT(3) DEFAULT '0' NOT NULL, PRIMARY KEY (id) );"; @@ -367,11 +347,12 @@ $TABLE[] = "CREATE TABLE ibf_forums ( last_poster_name varchar(32) default NULL, name varchar(128) NOT NULL default '', description text, - position tinyint(2) default NULL, + position INT(5) UNSIGNED default '0', use_ibc tinyint(1) default NULL, use_html tinyint(1) default NULL, status tinyint(1) default '1', password varchar(32) default NULL, + password_override VARCHAR(255) default NULL, last_title varchar(128) default NULL, last_id int(10) default NULL, sort_key varchar(32) default NULL, @@ -402,6 +383,8 @@ $TABLE[] = "CREATE TABLE ibf_forums ( queued_posts mediumint(6) NOT NULL default '0', forum_allow_rating tinyint(1) NOT NULL default '0', forum_last_deletion int(10) NOT NULL default '0', + newest_title VARCHAR( 128 ) NOT NULL default '', + newest_id INT( 10 ) NOT NULL default '0', PRIMARY KEY (id), KEY position (position,parent_id) );"; @@ -424,7 +407,7 @@ $TABLE[] = "CREATE TABLE ibf_groups ( g_delete_own_topics tinyint(1) default NULL, g_post_polls tinyint(1) default NULL, g_vote_polls tinyint(1) default NULL, - g_use_pm tinyint(1) default NULL, + g_use_pm tinyint(1) default '0', g_is_supmod tinyint(1) default NULL, g_access_cp tinyint(1) default NULL, g_title varchar(32) NOT NULL default '', @@ -436,7 +419,6 @@ $TABLE[] = "CREATE TABLE ibf_groups ( g_icon text NOT NULL, g_attach_max bigint(20) default NULL, g_avatar_upload tinyint(1) default '0', - g_calendar_post tinyint(1) default '0', prefix varchar(250) default NULL, suffix varchar(250) default NULL, g_max_messages int(5) default '50', @@ -447,7 +429,7 @@ $TABLE[] = "CREATE TABLE ibf_groups ( g_hide_from_list tinyint(1) default '0', g_post_closed tinyint(1) default '0', g_perm_id varchar(255) NOT NULL default '', - g_photo_max_vars varchar(200) default '', + g_photo_max_vars varchar(200) default '100:150:150', g_dohtml tinyint(1) NOT NULL default '0', g_edit_topic tinyint(1) NOT NULL default '0', g_email_limit varchar(15) NOT NULL default '10:15', @@ -485,6 +467,9 @@ $TABLE[] = "CREATE TABLE ibf_login_methods ( login_installed int(1) NOT NULL default '0', login_replace_form int(1) NOT NULL default '0', login_allow_create int(1) NOT NULL default '0', + login_user_id VARCHAR(255) NOT NULL default 'username', + login_login_url VARCHAR(255) NOT NULL default '', + login_logout_url VARCHAR(255) NOT NULL default '', PRIMARY KEY (login_id) );"; @@ -512,6 +497,7 @@ $TABLE[] = "CREATE TABLE ibf_mail_queue ( PRIMARY KEY (mail_id) );"; + $TABLE[] = "CREATE TABLE ibf_member_extra ( id mediumint(8) NOT NULL default '0', notes text, @@ -525,7 +511,7 @@ $TABLE[] = "CREATE TABLE ibf_member_extra ( icq_number int(15) NOT NULL default '0', website varchar(250) NOT NULL default '', yahoo varchar(40) NOT NULL default '', - interests text NOT NULL, + interests text NOT NULL default '', msnname varchar(200) NOT NULL default '', vdirs text NOT NULL, location varchar(250) NOT NULL default '', @@ -540,7 +526,6 @@ $TABLE[] = "CREATE TABLE ibf_members ( id mediumint(8) NOT NULL default '0', name varchar(255) NOT NULL default '', mgroup smallint(3) NOT NULL default '0', - legacy_password varchar(32) NOT NULL default '', email varchar(150) NOT NULL default '', joined int(10) NOT NULL default '0', ip_address varchar(16) NOT NULL default '', @@ -578,22 +563,29 @@ $TABLE[] = "CREATE TABLE ibf_members ( temp_ban varchar(100) default '0', sub_end int(10) NOT NULL default '0', login_anonymous char(3) NOT NULL default '0&0', - ignored_users text NOT NULL, + ignored_users text NOT NULL default '', mgroup_others varchar(255) NOT NULL default '', org_perm_id varchar(255) NOT NULL default '', member_login_key varchar(32) NOT NULL default '', + member_login_key_expire INT(10) NOT NULL default '0', subs_pkg_chosen smallint(3) NOT NULL default '0', has_blog tinyint(1) NOT NULL default '0', - members_markers text NOT NULL, + has_gallery tinyint(1) NOT NULL default '0', + members_markers text NOT NULL default '', members_editor_choice char(3) NOT NULL default 'std', members_auto_dst tinyint(1) NOT NULL default '1', members_display_name varchar(255) NOT NULL default '', members_created_remote tinyint(1) NOT NULL default '0', members_cache MEDIUMTEXT default '', members_disable_pm INT(1) NOT NULL default '0', + members_l_display_name VARCHAR(255) NOT NULL default '0', + members_l_username VARCHAR(255) NOT NULL default '0', + failed_logins TEXT, + failed_login_count SMALLINT(3) DEFAULT '0' NOT NULL, + members_profile_views INT(10) UNSIGNED NOT NULL default '0', PRIMARY KEY (id), - KEY members_display_name (members_display_name), - KEY name (name), + KEY members_l_display_name (members_l_display_name), + KEY members_l_username (members_l_username), KEY mgroup (mgroup), KEY bday_day (bday_day), KEY bday_month (bday_month) @@ -613,6 +605,7 @@ $TABLE[] = "CREATE TABLE ibf_members_partial ( partial_id int(10) NOT NULL auto_increment, partial_member_id int(8) NOT NULL default '0', partial_date int(10) NOT NULL default '0', + partial_email_ok INT(1) NOT NULL default '0', PRIMARY KEY (partial_id), KEY partial_member_id (partial_member_id) );"; @@ -703,6 +696,72 @@ $TABLE[] = "CREATE TABLE ibf_moderators ( KEY member_id (member_id) );"; +$TABLE[] = "CREATE TABLE ibf_profile_portal ( + pp_member_id INT(10) NOT NULL default '0', + pp_profile_update INT(10) UNSIGNED NOT NULL default '0', + pp_bio_content TEXT NOT NULL default '', + pp_last_visitors TEXT NOT NULL default '', + pp_comment_count INT(10) UNSIGNED NOT NULL default '0', + pp_rating_hits INT(10) UNSIGNED NOT NULL default '0', + pp_rating_value INT(10) UNSIGNED NOT NULL default '0', + pp_rating_real INT(10) UNSIGNED NOT NULL default '0', + pp_friend_count INT(5) UNSIGNED NOT NULL default '0', + pp_main_photo VARCHAR(255) NOT NULL default '', + pp_main_width INT(5) UNSIGNED NOT NULL default '0', + pp_main_height INT(5) UNSIGNED NOT NULL default '0', + pp_thumb_photo VARCHAR(255) NOT NULL default '', + pp_thumb_width INT(5) UNSIGNED NOT NULL default '0', + pp_thumb_height INT(5) UNSIGNED NOT NULL default '0', + pp_gender VARCHAR(10) NOT NULL default '', + pp_setting_notify_comments VARCHAR(10) NOT NULL default 'email', + pp_setting_notify_friend VARCHAR(10) NOT NULL default 'email', + pp_setting_moderate_comments TINYINT(1) NOT NULL default '0', + pp_setting_moderate_friends TINYINT(1) NOT NULL default '0', + pp_setting_count_friends INT(2) NOT NULL default '0', + pp_setting_count_comments INT(2) NOT NULL default '0', + pp_setting_count_visitors INT(2) NOT NULL default '0', + pp_profile_views INT(10) NOT NULL default '0', + PRIMARY KEY ( pp_member_id ) +);"; + +$TABLE[] = "CREATE TABLE ibf_profile_ratings ( + rating_id INT(10) NOT NULL auto_increment, + rating_for_member_id INT(10) NOT NULL default '0', + rating_by_member_id INT(10) NOT NULL default '0', + rating_added INT(10) NOT NULL default '0', + rating_ip_address VARCHAR(16) NOT NULL default '', + rating_value INT(2) NOT NULL default '0', + PRIMARY KEY ( rating_id ), + KEY rating_for_member_id ( rating_for_member_id ) +);"; + +$TABLE[] = "CREATE TABLE ibf_profile_portal_views ( + views_member_id int(10) NOT NULL default '0' +);"; + +$TABLE[] = "CREATE TABLE ibf_profile_friends ( + friends_id INT(10) NOT NULL auto_increment, + friends_member_id INT(10) UNSIGNED NOT NULL default '0', + friends_friend_id INT(10) UNSIGNED NOT NULL default '0', + friends_approved TINYINT(1) NOT NULL default '0', + friends_added INT(10) UNSIGNED NOT NULL default '0', + PRIMARY KEY( friends_id ), + KEY my_friends ( friends_member_id, friends_friend_id ), + KEY friends_member_id ( friends_member_id ) +);"; + +$TABLE[] = "CREATE TABLE ibf_profile_comments ( + comment_id INT(10) NOT NULL auto_increment, + comment_for_member_id INT(10) UNSIGNED NOT NULL default '0', + comment_by_member_id INT(10) UNSIGNED NOT NULL default '0', + comment_date INT(10) UNSIGNED NOT NULL default '0', + comment_ip_address VARCHAR(16) NOT NULL default '0', + comment_content TEXT NOT NULL default '', + comment_approved TINYINT(1) NOT NULL default '0', + PRIMARY KEY( comment_id ), + KEY my_comments( comment_for_member_id ) +);"; + $TABLE[] = "CREATE TABLE ibf_pfields_content ( member_id mediumint(8) NOT NULL default '0', updated int(10) default '0', @@ -736,6 +795,7 @@ $TABLE[] = "CREATE TABLE ibf_polls ( votes smallint(5) NOT NULL default '0', forum_id smallint(5) NOT NULL default '0', poll_question varchar(255) default NULL, + poll_only TINYINT(1) DEFAULT '0' NOT NULL, PRIMARY KEY (pid) );"; @@ -750,7 +810,7 @@ $TABLE[] = "CREATE TABLE ibf_posts ( ip_address varchar(16) NOT NULL default '', post_date int(10) default NULL, icon_id smallint(3) default NULL, - post text, + post mediumtext, queued tinyint(1) NOT NULL default '0', topic_id int(10) NOT NULL default '0', post_title varchar(255) default NULL, @@ -759,10 +819,13 @@ $TABLE[] = "CREATE TABLE ibf_posts ( post_key varchar(32) NOT NULL default '0', post_parent int(10) NOT NULL default '0', post_htmlstate smallint(1) NOT NULL default '0', + post_edit_reason VARCHAR(255) NOT NULL default '', PRIMARY KEY (pid), - KEY topic_id (topic_id,queued,pid), + KEY topic_id (topic_id,queued,pid,post_date), KEY author_id (author_id,topic_id), - KEY post_date (post_date) + KEY post_date (post_date), + KEY ip_address (ip_address), + KEY post_key (post_key) );"; $TABLE[] = "CREATE TABLE ibf_reg_antispam ( @@ -808,8 +871,8 @@ $TABLE[] = "CREATE TABLE ibf_rss_import ( rss_import_charset VARCHAR(200) NOT NULL default '', rss_import_allow_html TINYINT(1) NOT NULL default '0', rss_import_auth TINYINT( 1 ) DEFAULT '0' NOT NULL , - rss_import_auth_user VARCHAR( 255 ) DEFAULT 'Не требуется' NOT NULL, - rss_import_auth_pass VARCHAR( 255 ) DEFAULT 'Не требуется' NOT NULL, + rss_import_auth_user VARCHAR( 255 ) DEFAULT 'Not Needed' NOT NULL, + rss_import_auth_pass VARCHAR( 255 ) DEFAULT 'Not Needed' NOT NULL, PRIMARY KEY (rss_import_id) );"; @@ -821,24 +884,25 @@ $TABLE[] = "CREATE TABLE ibf_rss_imported ( KEY rss_imported_impid (rss_imported_impid) );"; + $TABLE[] = "CREATE TABLE ibf_search_results ( id varchar(32) NOT NULL default '', - topic_id text NOT NULL, + topic_id text NOT NULL default '', search_date int(12) NOT NULL default '0', topic_max int(3) NOT NULL default '0', sort_key varchar(32) NOT NULL default 'last_post', sort_order varchar(4) NOT NULL default 'desc', member_id mediumint(10) default '0', ip_address varchar(64) default NULL, - post_id text, + post_id text NOT NULL default '', post_max int(10) NOT NULL default '0', - query_cache text, + query_cache text NOT NULL default '', PRIMARY KEY (id), KEY search_date (search_date) );"; $TABLE[] = "CREATE TABLE ibf_sessions ( - id varchar(32) NOT NULL default '0', + id varchar(60) NOT NULL default '0', member_name varchar(64) default NULL, member_id mediumint(8) NOT NULL default '0', ip_address varchar(16) default NULL, @@ -1153,7 +1217,8 @@ $TABLE[] = "CREATE TABLE ibf_topics ( PRIMARY KEY (tid), KEY topic_firstpost (topic_firstpost), KEY last_post (forum_id,pinned,last_post), - KEY forum_id (forum_id,pinned,approved) + KEY forum_id (forum_id,pinned,approved), + KEY starter_id (starter_id, forum_id, approved) );"; $TABLE[] = "CREATE TABLE ibf_topics_read ( @@ -1196,6 +1261,7 @@ $TABLE[] = "CREATE TABLE ibf_validating ( email_chg tinyint(1) NOT NULL default '0', ip_address varchar(16) NOT NULL default '0', user_verified tinyint(1) NOT NULL default '0', + prev_email VARCHAR(150) NOT NULL default '0', PRIMARY KEY (vid), KEY new_reg (new_reg) );"; @@ -1207,6 +1273,7 @@ $TABLE[] = "CREATE TABLE ibf_voters ( tid int(10) NOT NULL default '0', member_id varchar(32) default NULL, forum_id smallint(5) NOT NULL default '0', + KEY (tid), PRIMARY KEY (vid) );"; diff --git a/upload/ipb_templates.xml b/upload/ipb_templates.xml deleted file mode 100644 index a708322c..00000000 --- a/upload/ipb_templates.xml +++ /dev/null @@ -1,11223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/upload/ipchat.php b/upload/ipchat.php index 5ee7aeea..e2a10f1e 100644 --- a/upload/ipchat.php +++ b/upload/ipchat.php @@ -2,24 +2,13 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v2.0.0 +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services, Inc | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +| ======================================== +| Web: http://www.invisionpower.com +--------------------------------------------------------------------------- | | > IP Chat => IPB Bridge Script diff --git a/upload/ips_kernel/PEAR/Text/Diff.php b/upload/ips_kernel/PEAR/Text/Diff.php index dd988203..bd7fe656 100644 --- a/upload/ips_kernel/PEAR/Text/Diff.php +++ b/upload/ips_kernel/PEAR/Text/Diff.php @@ -833,4 +833,4 @@ class Text_Diff_Op_change extends Text_Diff_Op { return $reverse = &new Text_Diff_Op_change($this->final, $this->orig); } -} +} \ No newline at end of file diff --git a/upload/ips_kernel/PEAR/Text/Diff/Renderer.php b/upload/ips_kernel/PEAR/Text/Diff/Renderer.php index 492af001..edcb90e2 100644 --- a/upload/ips_kernel/PEAR/Text/Diff/Renderer.php +++ b/upload/ips_kernel/PEAR/Text/Diff/Renderer.php @@ -205,4 +205,4 @@ class Text_Diff_Renderer { return $this->_deleted($orig) . "---\n" . $this->_added($final); } -} +} \ No newline at end of file diff --git a/upload/ips_kernel/PEAR/Text/Diff/Renderer/inline.php b/upload/ips_kernel/PEAR/Text/Diff/Renderer/inline.php index 2edfa817..e6aef952 100644 --- a/upload/ips_kernel/PEAR/Text/Diff/Renderer/inline.php +++ b/upload/ips_kernel/PEAR/Text/Diff/Renderer/inline.php @@ -136,4 +136,4 @@ class Text_Diff_Renderer_inline extends Text_Diff_Renderer { return $words; } -} +} \ No newline at end of file diff --git a/upload/ips_kernel/PEAR/Text/Diff/Renderer/unified.php b/upload/ips_kernel/PEAR/Text/Diff/Renderer/unified.php index 00c40964..446d2738 100644 --- a/upload/ips_kernel/PEAR/Text/Diff/Renderer/unified.php +++ b/upload/ips_kernel/PEAR/Text/Diff/Renderer/unified.php @@ -46,4 +46,4 @@ class Text_Diff_Renderer_unified extends Text_Diff_Renderer { return $this->_deleted($orig) . $this->_added($final); } -} +} \ No newline at end of file diff --git a/upload/ips_kernel/PEAR/Text/Diff3.php b/upload/ips_kernel/PEAR/Text/Diff3.php index 006a6e37..fbe067a0 100644 --- a/upload/ips_kernel/PEAR/Text/Diff3.php +++ b/upload/ips_kernel/PEAR/Text/Diff3.php @@ -256,4 +256,4 @@ class Text_Diff3_BlockBuilder { array_splice($array, sizeof($array), 0, $lines); } -} +} \ No newline at end of file diff --git a/upload/ips_kernel/class_api_server.php b/upload/ips_kernel/class_api_server.php index 529967df..e818d0fe 100644 --- a/upload/ips_kernel/class_api_server.php +++ b/upload/ips_kernel/class_api_server.php @@ -2,25 +2,16 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 | Invision Power KERNEL -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2006 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > API SERVER: Send and receive API data @@ -91,6 +82,30 @@ class class_api_server */ var $xml_server; + /** + * Return cookie information + * @var array + */ + var $cookies = array(); + + /** + * XML-RPC cookie serialized 64 key + * @var string + */ + var $cookie_serialized_key = '__cookie__serialized64__'; + + /** + * HTTP Auth required + */ + var $auth_user = ''; + var $auth_pass = ''; + + /** + * Errors array + * @var array + */ + var $errors = array(); + /*-------------------------------------------------------------------------*/ // Constructor /*-------------------------------------------------------------------------*/ @@ -102,8 +117,46 @@ class class_api_server require_once( IPS_CLASSES_PATH . '/class_xml_rpc.php' ); $this->xmlrpc = new class_xml_rpc(); } + + $this->cookies = array(); } + /*-------------------------------------------------------------------------*/ + // MIMIC SOAP SERVER: Decode request + /*-------------------------------------------------------------------------*/ + /** + * Add object map to this class + * + * @param string Incoming data + * @return string api + */ + function decode_request( $incoming='' ) + { + if ( ! $incoming ) + { + $incoming = isset( $GLOBALS['HTTP_RAW_POST_DATA'] ) ? $GLOBALS['HTTP_RAW_POST_DATA'] : ''; + } + + //----------------------------------------- + // Get data and dispatch + //----------------------------------------- + + $this->api_decode_request( $incoming ); + + $api_call = explode( ".", $this->method_name ); + + if ( count($api_call) > 1 ) + { + $this->method_name = $api_call[1]; + + return $api_call[0]; + } + else + { + return "default"; + } + } + /*-------------------------------------------------------------------------*/ // MIMIC SOAP SERVER: Add object map /*-------------------------------------------------------------------------*/ @@ -140,22 +193,11 @@ class class_api_server */ function get_xml_rpc( $incoming='' ) { - if ( ! $incoming ) - { - $incoming = $GLOBALS['HTTP_RAW_POST_DATA']; - } - if ( ! $this->xml_server ) { return FALSE; } - //----------------------------------------- - // Get data and dispatch - //----------------------------------------- - - $this->api_decode_request( $incoming ); - //----------------------------------------- // Got function? //----------------------------------------- @@ -194,6 +236,9 @@ class class_api_server case 'base64': $_var = trim($_var); break; + case 'struct': + $_var = is_array($_var) ? $_var : (string) $_var; + break; } $_params[ $field ] = $_var; @@ -215,11 +260,29 @@ class class_api_server // Return false //----------------------------------------- - $this->api_send_error( 100, 'No methodRequest function defined / found' ); + $this->api_send_error( 100, 'No methodRequest function -' . $this->method_name . 'defined / found' ); exit(); } } + /*-------------------------------------------------------------------------*/ + // Add cookies + /*-------------------------------------------------------------------------*/ + /** + * Return API Request + * + * @param array Array of params to send + * @param int Complex data: Encode before sending + * @return nuffink + */ + function api_add_cookie_data( $data ) + { + if ( $data['name'] ) + { + $this->cookies[ $data['name'] ] = $data; + } + } + /*-------------------------------------------------------------------------*/ // Return API Request /*-------------------------------------------------------------------------*/ @@ -230,13 +293,27 @@ class class_api_server * @param int Complex data: Encode before sending * @return nuffink */ - function api_send_reply( $data=array(), $complex_data=0 ) + function api_send_reply( $data=array(), $complex_data=0, $force=array() ) { + //----------------------------------------- + // Cookies? + //----------------------------------------- + + if ( is_array( $this->cookies ) AND count( $this->cookies ) ) + { + $data[ $this->cookie_serialized_key ] = $this->encode_base64_array( $this->cookies ); + $this->xmlrpc->map_type_to_key[ $this->cookie_serialized_key ] = 'base64'; + } + //----------------------------------------- // Check //----------------------------------------- - if ( ! is_array( $data ) OR ! count( $data ) ) + if ( ! is_array( $data ) ) + { + $this->xmlrpc->xml_rpc_return_value( $data ); + } + elseif ( ! count( $data ) ) { # No data? Just return true $this->xmlrpc->xml_rpc_return_true(); @@ -254,6 +331,18 @@ class class_api_server $this->xmlrpc->map_type_to_key[ $this->serialized_key ] = 'base64'; } + //----------------------------------------- + // Force type? + //----------------------------------------- + + if ( is_array($force) AND count($force) > 0 ) + { + foreach ( $force as $key => $type ) + { + $this->xmlrpc->map_type_to_key[ $key ] = $type; + } + } + //----------------------------------------- // Send... //----------------------------------------- @@ -322,8 +411,21 @@ class class_api_server // INIT //----------------------------------------- - $return_data = array(); - $raw = array(); + $return_data = array(); + $raw = array(); + $this->xmlrpc->errors = array(); + $this->xmlrpc->auth_user = $this->auth_user; + $this->xmlrpc->auth_pass = $this->auth_pass; + + //----------------------------------------- + // Cookies? + //----------------------------------------- + + if ( is_array( $this->cookies ) AND count( $this->cookies ) ) + { + $data[ $this->cookie_serialized_key ] = $this->encode_base64_array( $this->cookies ); + $this->xmlrpc->map_type_to_key[ $this->cookie_serialized_key ] = 'base64'; + } //----------------------------------------- // Complex data? @@ -389,7 +491,7 @@ class class_api_server // Fix up params //----------------------------------------- - if ( is_array( $_params[0] ) ) + if ( isset($_params[0]) AND is_array( $_params[0] ) ) { foreach( $_params[0] as $k => $v ) { @@ -402,12 +504,46 @@ class class_api_server $this->params = array_merge( $this->params, $_tmp ); } } + else if ( $k == $this->cookie_serialized_key ) + { + $_cookies = $this->decode_base64_array( $v ); + + if ( is_array( $_cookies ) and count( $_cookies ) ) + { + foreach( $_cookies as $cookie_data ) + { + if ( $cookie_data['sticky'] == 1 ) + { + $cookie_data['expires'] = time() + 60*60*24*365; + } + + $cookie_data['path'] = $cookie_data['path'] ? $cookie_data['path'] : '/'; + + @setcookie( $cookie_data['name'], $cookie_data['value'], $cookie_data['expires'], $cookie_data['path'], $cookie_data['domain'] ); + + if ( IPS_XML_RPC_DEBUG_ON ) + { + $this->xmlrpc->_add_debug( "API_PROCESS_DECODE: SETTING COOKIE: " . var_export( $cookie_data, TRUE ) ); + } + } + } + + } else { $this->params[ $k ] = $v; } } } + else if ( is_array( $_params ) ) + { + $i = 0; + foreach( $_params as $v ) + { + $this->params['param'.$i] = $v; + $i++; + } + } } /*-------------------------------------------------------------------------*/ diff --git a/upload/ips_kernel/class_cache_diskcache.php b/upload/ips_kernel/class_cache_diskcache.php new file mode 100644 index 00000000..baf9bc4d --- /dev/null +++ b/upload/ips_kernel/class_cache_diskcache.php @@ -0,0 +1,150 @@ + Core Module +| > Module written by Brandon Farber +| > Date started: Friday 19th May 2006 17:33 +| +| > Module Version Number: 1.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: Cache Object Core +* -- Hard-disk Cache Storage +* +* Basic Usage Examples +* +* $cache = new cache_lib( 'identifier' ); +* Update: +* $db->do_put( 'key', 'value' [, 'ttl'] ); +* Remove +* $db->do_remove( 'key' ); +* Retrieve +* $db->do_get( 'key' ); +* +* +* @package IPS_KERNEL +* @subpackage Cache Abstraction +* @author Brandon Mecham +* @version 1.0 +*/ + +class cache_lib +{ + var $identifier; + var $crashed = 0; + + + function cache_lib( $identifier='' ) + { + if( !is_writeable( ROOT_PATH.'cache' ) ) + { + $this->crashed = 1; + return FALSE; + } + + if( !$identifier ) + { + $this->identifier = md5( uniqid( rand(), TRUE ) ); + } + else + { + $this->identifier = $identifier; + } + + unset( $identifier ); + + } + + + function disconnect() + { + return TRUE; + } + + + function do_put( $key, $value, $ttl=0 ) + { + // We ignore TTL + + $fh = fopen( ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php', 'wb' ); + + if( !$fh ) + { + return FALSE; + } + + $extra_flag = ""; + + if( is_array( $value ) ) + { + $value = serialize($value); + $extra_flag = "\n".'$is_array = 1;'."\n\n"; + } + + $extra_flag .= "\n".'$ttl = '.$ttl.";\n\n"; + + $value = '"'.addslashes( $value ).'"'; + + $file_content = "'; + + flock( $fh, LOCK_EX ); + fwrite( $fh, $file_content ); + flock( $fh, LOCK_UN ); + fclose( $fh ); + + @chmod( ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php', 0777 ); + } + + function do_get( $key ) + { + $return_val = ""; + + if( file_exists( ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php' ) ) + { + require ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php'; + + $return_val = stripslashes($value); + + if( isset($is_array) AND $is_array == 1 ) + { + $return_val = unserialize($return_val); + } + + if( isset($ttl) AND $ttl > 0 ) + { + if( $mtime = filemtime( ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php' ) ) + { + if( time() - $mtime > $ttl ) + { + return FALSE; + } + } + } + } + + return $return_val; + } + + function do_remove( $key ) + { + if( file_exists( ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php' ) ) + { + @unlink( ROOT_PATH.'cache/'.md5( $this->identifier . $key ).'.php' ); + } + } +} +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_cache_eaccelerator.php b/upload/ips_kernel/class_cache_eaccelerator.php new file mode 100644 index 00000000..19afabc1 --- /dev/null +++ b/upload/ips_kernel/class_cache_eaccelerator.php @@ -0,0 +1,102 @@ + Core Module +| > Module written by Brandon Farber +| > Date started: Friday 19th May 2006 17:33 +| +| > Module Version Number: 1.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: Cache Object Core +* -- Eaccelerator Cache Storage +* +* Basic Usage Examples +* +* $cache = new cache_lib( 'identifier' ); +* Update: +* $db->do_put( 'key', 'value' [, 'ttl'] ); +* Remove +* $db->do_remove( 'key' ); +* Retrieve +* $db->do_get( 'key' ); +* +* +* @package IPS_KERNEL +* @subpackage Cache Abstraction +* @author Brandon Mecham +* @version 1.0 +*/ + +class cache_lib +{ + var $identifier; + var $crashed = 0; + + + function cache_lib( $identifier='' ) + { + if( !function_exists('eaccelerator_get') ) + { + $this->crashed = 1; + return FALSE; + } + + if( !$identifier ) + { + $this->identifier = md5( uniqid( rand(), TRUE ) ); + } + else + { + $this->identifier = $identifier; + } + + unset( $identifier ); + + } + + + function disconnect() + { + return TRUE; + } + + + function do_put( $key, $value, $ttl=0 ) + { + eaccelerator_lock( md5( $this->identifier . $key ) ); + + eaccelerator_put( md5( $this->identifier . $key ), + $value, + intval($ttl) ); + + eaccelerator_unlock( md5( $this->identifier . $key ) ); + } + + function do_get( $key ) + { + $return_val = eaccelerator_get( md5( $this->identifier . $key ) ); + + return $return_val; + } + + function do_remove( $key ) + { + eaccelerator_rm( md5( $this->identifier . $key ) ); + } +} +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_cache_memcache.php b/upload/ips_kernel/class_cache_memcache.php new file mode 100644 index 00000000..26bfa89e --- /dev/null +++ b/upload/ips_kernel/class_cache_memcache.php @@ -0,0 +1,146 @@ + Core Module +| > Module written by Brandon Farber +| > Date started: Friday 19th May 2006 17:33 +| +| > Module Version Number: 1.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: Cache Object Core +* -- Memcache Cache Storage +* +* Basic Usage Examples +* +* $cache = new cache_lib( 'identifier' ); +* Update: +* $db->do_put( 'key', 'value' [, 'ttl'] ); +* Remove +* $db->do_remove( 'key' ); +* Retrieve +* $db->do_get( 'key' ); +* +* +* @package IPS_KERNEL +* @subpackage Cache Abstraction +* @author Brandon Mecham +* @version 1.0 +*/ + +class cache_lib +{ + var $identifier; + var $crashed = 0; + + var $link; + + + function cache_lib( $identifier='' ) + { + if( !function_exists('memcache_connect') ) + { + $this->crashed = 1; + return FALSE; + } + + if( !$identifier ) + { + $this->identifier = md5( uniqid( rand(), TRUE ) ); + } + else + { + $this->identifier = $identifier; + } + + unset( $identifier ); + } + + + function connect( $server_info=array() ) + { + if( !count($server_info) ) + { + $this->crashed = 1; + return FALSE; + } + + if( !isset($server_info['memcache_server_1']) OR !isset($server_info['memcache_port_1']) ) + { + $this->crashed = 1; + return FALSE; + } + + $this->link = memcache_connect( $server_info['memcache_server_1'], $server_info['memcache_port_1'] ); + + if( !$this->link ) + { + $this->crashed = 1; + return FALSE; + } + + if( isset($server_info['memcache_server_2']) AND isset($server_info['memcache_port_2']) ) + { + memcache_add_server( $this->link, $server_info['memcache_server_2'], $server_info['memcache_port_2'] ); + } + + if( isset($server_info['memcache_server_3']) AND isset($server_info['memcache_port_3']) ) + { + memcache_add_server( $this->link, $server_info['memcache_server_3'], $server_info['memcache_port_3'] ); + } + + if( function_exists('memcache_set_compress_threshold') ) + { + memcache_set_compress_threshold( $this->link, 20000, 0.2 ); + } + + return TRUE; + } + + + function disconnect() + { + if( $this->link ) + { + memcache_close( $this->link ); + } + + return TRUE; + } + + + function do_put( $key, $value, $ttl=0 ) + { + memcache_set( $this->link, md5( $this->identifier . $key ), + $value, + MEMCACHE_COMPRESSED, + intval($ttl) ); + } + + function do_get( $key ) + { + $return_val = memcache_get( $this->link, md5( $this->identifier . $key ) ); + + return $return_val; + } + + function do_remove( $key ) + { + memcache_delete( $this->link, md5( $this->identifier . $key ) ); + } +} +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_cache_mmcache.php b/upload/ips_kernel/class_cache_mmcache.php new file mode 100644 index 00000000..a89c4fb4 --- /dev/null +++ b/upload/ips_kernel/class_cache_mmcache.php @@ -0,0 +1,102 @@ + Core Module +| > Module written by Brandon Farber +| > Date started: Friday 19th May 2006 17:33 +| +| > Module Version Number: 1.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: Cache Object Core +* -- Turck-MMCache Cache Storage +* +* Basic Usage Examples +* +* $cache = new cache_lib( 'identifier' ); +* Update: +* $db->do_put( 'key', 'value' [, 'ttl'] ); +* Remove +* $db->do_remove( 'key' ); +* Retrieve +* $db->do_get( 'key' ); +* +* +* @package IPS_KERNEL +* @subpackage Cache Abstraction +* @author Brandon Mecham +* @version 1.0 +*/ + +class cache_lib +{ + var $identifier; + var $crashed = 0; + + + function cache_lib( $identifier='' ) + { + if( !function_exists('mmcache_get') ) + { + $this->crashed = 1; + return FALSE; + } + + if( !$identifier ) + { + $this->identifier = md5( uniqid( rand(), TRUE ) ); + } + else + { + $this->identifier = $identifier; + } + + unset( $identifier ); + + } + + + function disconnect() + { + return TRUE; + } + + + function do_put( $key, $value, $ttl=0 ) + { + mmcache_lock( md5( $this->identifier . $key ) ); + + mmcache_put( md5( $this->identifier . $key ), + $value, + intval($ttl) ); + + mmcache_unlock( md5( $this->identifier . $key ) ); + } + + function do_get( $key ) + { + $return_val = mmcache_get( md5( $this->identifier . $key ) ); + + return $return_val; + } + + function do_remove( $key ) + { + mmcache_rm( md5( $this->identifier . $key ) ); + } +} +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_communication.php b/upload/ips_kernel/class_communication.php index 99e4ac5d..ddfb360c 100644 --- a/upload/ips_kernel/class_communication.php +++ b/upload/ips_kernel/class_communication.php @@ -2,25 +2,16 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 | Invision Power KERNEL -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2006 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > Communication Class: Allows data to be sent via HTTP:POST @@ -294,7 +285,7 @@ class class_communication // Try CURL first... //------------------------------- - if ( function_exists("curl_init") ) + if ( function_exists("curl_init") AND function_exists("curl_exec") ) { if ( $sock = curl_init() ) { diff --git a/upload/ips_kernel/class_converge.php b/upload/ips_kernel/class_converge.php index 9b49b5fb..3535788c 100644 --- a/upload/ips_kernel/class_converge.php +++ b/upload/ips_kernel/class_converge.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ diff --git a/upload/ips_kernel/class_convert_charset.php b/upload/ips_kernel/class_convert_charset.php index 281dc975..13894e8c 100644 --- a/upload/ips_kernel/class_convert_charset.php +++ b/upload/ips_kernel/class_convert_charset.php @@ -2,24 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CONVERT CHAR SET FUNCTIONS (Simple, light parser) @@ -110,11 +101,16 @@ class class_convert_charset return; } + if( !$t OR $t == '' ) + { + return $string; + } + //----------------------------------------- - // Do the convert + // Do the convert - internally.. //----------------------------------------- - if ( function_exists( 'mb_convert_encoding' ) ) + /*if ( function_exists( 'mb_convert_encoding' ) ) { $text = mb_convert_encoding( $string, $destination_char_set, $string_char_set ); } @@ -127,11 +123,11 @@ class class_convert_charset $text = iconv( $string_char_set, $destination_char_set.'//TRANSLIT', $string); } else - { + {*/ require_once( IPS_CLASSES_PATH . '/i18n/convertcharset/ConvertCharset.class.php' ); $convert = new ConvertCharset(); $text = $convert->Convert($string, $string_char_set, $destination_char_set, false ); - } + //} return $text ? $text : $t; } diff --git a/upload/ips_kernel/class_db.php b/upload/ips_kernel/class_db.php index 5b530829..d9733926 100644 --- a/upload/ips_kernel/class_db.php +++ b/upload/ips_kernel/class_db.php @@ -2,25 +2,16 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 | Invision Power Services Kernel [DB Abstraction] +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +| THIS IS NOT FREE / OPEN SOURCE SOFTWARE +--------------------------------------------------------------------------- | | > Core Module @@ -80,6 +71,19 @@ * @version 2.1 */ +//----------------------------------------- +// Allow SUB SELECTS? +//----------------------------------------- + +/** +* This can be overridden by using +* $DB->allow_sub_select = 1; +* before any query construct +*/ + +define( 'IPS_DB_ALLOW_SUB_SELECTS', 0 ); + + class db_main { # Global OBJECT @@ -89,19 +93,21 @@ class db_main * * @var array */ - var $obj = array ( "sql_database" => "" , - "sql_user" => "root" , - "sql_pass" => "" , - "sql_host" => "localhost", - "sql_port" => "" , - "persistent" => "0" , - "sql_tbl_prefix" => "ibf_" , - "cached_queries" => array() , - 'shutdown_queries' => array() , - 'debug' => 0 , - 'use_shutdown' => 1 , - 'query_cache_file' => '' , - 'force_new_connection' => 0 , + var $obj = array ( "sql_database" => "" , + "sql_user" => "root" , + "sql_pass" => "" , + "sql_host" => "localhost", + "sql_port" => "" , + "persistent" => "0" , + "sql_tbl_prefix" => "ibf_" , + "cached_queries" => array() , + 'shutdown_queries' => array() , + 'debug' => 0 , + 'use_shutdown' => 1 , + 'query_cache_file' => '' , + 'force_new_connection' => 0 , + 'error_log' => '' , + 'use_error_log' => 0 , ); /** @@ -109,7 +115,8 @@ class db_main * * @var string */ - var $error = ""; + var $error = ""; + var $error_no = ""; /** * Return error message or die inline @@ -229,6 +236,17 @@ class db_main * @var string */ var $sql_queries_name = 'sql_queries'; + + + var $mysql_version; + var $true_version; + + /* + * Allow sub selects for this query + * + * @var int + */ + var $allow_sub_select = 0; /*-------------------------------------------------------------------------*/ // Constructor @@ -302,7 +320,7 @@ class db_main { if ( ! file_exists( $filepath ) ) { - print "Невозможно найти $filepath!"; + print "Cannot locate $filepath - exiting!"; exit(); } else @@ -465,6 +483,17 @@ class db_main $this->do_insert( $tbl, $arr, TRUE ); } + + /*-------------------------------------------------------------------------*/ + // Quick function: DO DELETE + /*-------------------------------------------------------------------------*/ + + function do_delete( $table, $where="" ) + { + $this->build_and_exec_query( array( 'delete' => $table, + 'where' => $where ) ); + } + /*-------------------------------------------------------------------------*/ // Simple elements /*-------------------------------------------------------------------------*/ @@ -477,34 +506,39 @@ class db_main function build_query( $a ) { - if ( $a['select'] ) + if ( isset($a['select']) && $a['select'] ) { - if ( is_array( $a['add_join'] ) ) + if ( isset($a['add_join']) && is_array( $a['add_join'] ) ) { - $this->simple_select_with_join( $a['select'], $a['from'], $a['where'], $a['add_join'] ); + $this->simple_select_with_join( $a['select'], $a['from'], isset($a['where']) ? $a['where'] : '', $a['add_join'] ); } else { - $this->simple_select( $a['select'], $a['from'], $a['where'] ); + $this->simple_select( $a['select'], $a['from'], isset($a['where']) ? $a['where'] : '' ); } } - if ( $a['update'] ) + if ( isset($a['update']) && $a['update'] ) { - $this->simple_update( $a['update'], $a['set'], $a['where'], $a['lowpro'] ); + $this->simple_update( $a['update'], $a['set'], isset($a['where']) ? $a['where'] : '', isset($a['lowpro']) ? $a['lowpro'] : '' ); } - if ( $a['delete'] ) + if ( isset($a['delete']) && $a['delete'] ) { $this->simple_delete( $a['delete'], $a['where'] ); } - if ( $a['order'] ) + if ( isset($a['group']) && $a['group'] ) + { + $this->simple_group( $a['group'] ); + } + + if ( isset($a['order']) && $a['order'] ) { $this->simple_order( $a['order'] ); } - if ( is_array( $a['limit'] ) ) + if ( isset($a['limit']) && is_array( $a['limit'] ) ) { $this->simple_limit( $a['limit'][0], $a['limit'][1] ); } @@ -529,7 +563,7 @@ class db_main $ci = $this->exec_query(); - if ( $a['select'] ) + if ( isset($a['select']) AND $a['select'] ) { return $this->fetch_row( $ci ); } @@ -658,7 +692,8 @@ class db_main { return $this->query_count; } - + + /*-------------------------------------------------------------------------*/ // Flushes the in memory query string /*-------------------------------------------------------------------------*/ @@ -687,29 +722,57 @@ class db_main function fatal_error($the_error="") { - // Are we simply returning the error? + //----------------------------------------- + // INIT + //----------------------------------------- - if ($this->return_die == 1) + $this->error = $this->_get_error_string(); + $this->error_no = $this->_get_error_number(); + + if ( $this->return_die == 1 ) { - $this->error = $this->_get_error_string(); - $this->error_no = $this->_get_error_number(); - $this->failed = 1; + $this->error = ( $this->error == "" ? $the_error : $this->error ); + $this->failed = 1; return; } + else if ( $this->obj['use_error_log'] AND $this->obj['error_log'] ) + { + $_error_string = "\n==================================================="; + $_error_string .= "\n Date: ". date( 'r' ); + $_error_string .= "\n Error Number: " . $this->error_no; + $_error_string .= "\n Error: " . $this->error; + $_error_string .= "\n IP Address: " . $_SERVER['REMOTE_ADDR']; + $_error_string .= "\n ".$the_error; + + if ( $FH = @fopen( $this->obj['error_log'], 'a' ) ) + { + @fwrite( $FH, $_error_string ); + @fclose( $FH ); + } + + print "IPS Driver Error + +

    IPS Driver Error

    There appears to be an error with the database.
    + You can try to refresh the page by clicking here + "; + } + else + { + $the_error .= "\n\nSQL error: ".$this->error."\n"; + $the_error .= "SQL error code: ".$this->error_no."\n"; + $the_error .= "Date: ".date("l dS \o\f F Y h:i:s A"); - $the_error .= "\n\nSQL error: ".$this->_get_error_string()."\n"; - $the_error .= "SQL error code: ".$this->error_no."\n"; - $the_error .= "Date: ".date("j.n.Y, G:i"); - - $out = "IPS Driver Error - -  

    Ошибка с базой данных.
    - Вы можете попробовать обновить эту страницу, нажав сюда. -

    Возвращаемая ошибка
    -

    Приносим свои извинения за предоставленные неудобства.
    "; + $out = "IPS Driver Error + +

    IPS Driver Error

    There appears to be an error with the database.
    + You can try to refresh the page by clicking here. +

    Error Returned
    +

    We apologise for any inconvenience
    "; - print $out; + print $out; + } + exit(); } @@ -741,7 +804,7 @@ class db_main $add_slashes = 0; } - if ( $this->no_escape_fields[ $k ] ) + if ( isset($this->no_escape_fields[ $k ]) AND $this->no_escape_fields[ $k ] ) { $add_slashes = 0; } @@ -757,7 +820,7 @@ class db_main // Forcing data type? //----------------------------------------- - if ( $this->force_data_type[ $k ] ) + if ( isset($this->force_data_type[ $k ]) AND $this->force_data_type[ $k ] ) { if ( $this->force_data_type[ $k ] == 'string' ) { @@ -831,7 +894,7 @@ class db_main $add_slashes = 0; } - if ( $this->no_escape_fields[ $k ] ) + if ( isset($this->no_escape_fields[ $k ]) && $this->no_escape_fields[ $k ] ) { $add_slashes = 0; } @@ -845,7 +908,7 @@ class db_main // Forcing data type? //----------------------------------------- - if ( $this->force_data_type[ $k ] ) + if ( isset($this->force_data_type[ $k ]) && $this->force_data_type[ $k ] ) { if ( $this->force_data_type[ $k ] == 'string' ) { @@ -901,6 +964,68 @@ class db_main # Driver specific } + /*-------------------------------------------------------------------------*/ + // Removes quotes from a DB query + /*-------------------------------------------------------------------------*/ + + function remove_all_quotes( $t ) + { + //----------------------------------------- + // Remove quotes + //----------------------------------------- + + $t = preg_replace( "#\\\{1,}[\"']#s", "", $t ); + $t = preg_replace( "#'[^'].*'#s" , "", $t ); + $t = preg_replace( "#\"[^\"].*\"#s" , "", $t ); + $t = preg_replace( "#\"\"#s" , "", $t ); + $t = preg_replace( "#''#s" , "", $t ); + + //----------------------------------------- + // Remove comments + //----------------------------------------- + + $t = preg_replace( "#/\*(.??)\*/#s", "", $t ); + $t = preg_replace( "#/\*.+?\*/#s", "", $t ); + + return $t; + } + + /*-------------------------------------------------------------------------*/ + // Basic error handler + /*-------------------------------------------------------------------------*/ + + /** + * Prints SQL error message + * + * @param string Additional error message + * + * @return integer Optional, if var $return_die is set to 1 + */ + + function write_debug_log( $query, $data, $endtime ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + if ( $this->obj['use_debug_log'] AND $this->obj['debug_log'] ) + { + $_string = "\n=============================================================================="; + $_string .= "\n Date: ". date( 'r' ); + $_string .= "\n IP Address: " . $_SERVER['REMOTE_ADDR']; + $_string .= "\n Time Taken: ".$endtime; + $_string .= "\n ".$query; + $_string .= "\n=============================================================================="; + $_string .= "\n".$data; + + if ( $FH = @fopen( $this->obj['debug_log'], 'a' ) ) + { + @fwrite( $FH, $_string ); + @fclose( $FH ); + } + } + } + /*-------------------------------------------------------------------------*/ // INTERNAL: Get error number /*-------------------------------------------------------------------------*/ diff --git a/upload/ips_kernel/class_db_mysql.php b/upload/ips_kernel/class_db_mysql.php index 37f31232..d6ed4cd1 100644 --- a/upload/ips_kernel/class_db_mysql.php +++ b/upload/ips_kernel/class_db_mysql.php @@ -2,25 +2,16 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 | Invision Power Services Kernel [DB Abstraction] +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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) +| THIS IS NOT FREE / OPEN SOURCE SOFTWARE +--------------------------------------------------------------------------- | | > MySQL Driver Module @@ -42,819 +33,34 @@ */ /** - * Handle base class definitions + * Gateway for mysql/mysqli client * */ - + +//----------------------------------------- +// Define KERNEL_PATH if not +// defined - i.e. installation +//----------------------------------------- + if ( ! defined('KERNEL_PATH') ) { - define( 'KERNEL_PATH', dirname(__FILE__) . '/' ); + if( defined('INS_KERNEL_PATH') ) + { + define( 'KERNEL_PATH', INS_KERNEL_PATH ); + } + else + { + define( 'KERNEL_PATH', str_replace( "//", "/", str_replace( "\\", "/", dirname( __FILE__ ) ) ) . "/" ); + } } -if ( ! class_exists( 'db_main' ) ) +if ( extension_loaded('mysqli') AND ! defined( 'FORCE_MYSQL_ONLY' ) ) { - require_once( KERNEL_PATH.'class_db.php' ); + require( KERNEL_PATH."class_db_mysqli_client.php" ); } - -/** - * Allow < 4.3.0 PHP client access - * - */ -if ( ! defined('IPS_MAIN_DB_CLASS_LEGACY') ) +else { - define('IPS_MAIN_DB_CLASS_LEGACY', ( PHP_VERSION < '4.3.0' ) ? TRUE : FALSE ); + require( KERNEL_PATH."class_db_mysql_client.php" ); } -/** -* DB Class: Driver Methods -* -* Base class for database abstraction -* -* @package IPS_KERNEL -* @subpackage DatabaseAbstraction -* @author Matt Mecham -* @version 2.1 -*/ -class db_driver extends db_main -{ - /*-------------------------------------------------------------------------*/ - // Set up required vars - /*-------------------------------------------------------------------------*/ - - function db_driver() - { - //-------------------------- - // Set up any required connect - // vars here: - // Will be populated by obj - // caller - //-------------------------- - - $this->connect_vars['mysql_tbl_type'] = ""; - } - - /*-------------------------------------------------------------------------*/ - // Connect to the database - /*-------------------------------------------------------------------------*/ - - function connect() - { - //----------------------------------------- - // Done SQL prefix yet? - //----------------------------------------- - - $this->_set_prefix(); - - //----------------------------------------- - // Load query file - //----------------------------------------- - - $this->_load_cache_file(); - - //----------------------------------------- - // Connect - //----------------------------------------- - - if ( $this->obj['persistent'] AND ! IPS_MAIN_DB_CLASS_LEGACY ) - { - $this->connection_id = mysql_pconnect( $this->obj['sql_host'] , - $this->obj['sql_user'] , - $this->obj['sql_pass'] , - $this->obj['force_new_connection'] - ); - } - else - { - if ( IPS_MAIN_DB_CLASS_LEGACY ) - { - $this->connection_id = mysql_connect( $this->obj['sql_host'] , - $this->obj['sql_user'] , - $this->obj['sql_pass'] - ); - } - else - { - $this->connection_id = mysql_connect( $this->obj['sql_host'] , - $this->obj['sql_user'] , - $this->obj['sql_pass'] , - $this->obj['force_new_connection'] - ); - } - } - - if ( ! $this->connection_id ) - { - $this->fatal_error(); - return FALSE; - } - - if ( ! mysql_select_db($this->obj['sql_database'], $this->connection_id) ) - { - $this->fatal_error(); - return FALSE; - } - - return TRUE; - } - - /*-------------------------------------------------------------------------*/ - // Quick function: DO UPDATE - /*-------------------------------------------------------------------------*/ - - function do_update( $tbl, $arr, $where="", $shutdown=FALSE ) - { - //----------------------------------------- - // Form query - //----------------------------------------- - - $dba = $this->compile_db_update_string( $arr ); - $query = "UPDATE ".$this->obj['sql_tbl_prefix']."$tbl SET $dba"; - - if ( $where ) - { - $query .= " WHERE ".$where; - } - - //----------------------------------------- - // Shut down query? - //----------------------------------------- - - if ( $shutdown ) - { - if ( ! $this->obj['use_shutdown'] ) - { - $this->is_shutdown = 1; - return $this->query( $query ); - } - else - { - $this->obj['shutdown_queries'][] = $query; - $this->cur_query = ""; - } - } - else - { - return $this->query( $query ); - } - } - - /*-------------------------------------------------------------------------*/ - // Quick function: DO INSERT - /*-------------------------------------------------------------------------*/ - - function do_insert( $tbl, $arr, $shutdown=FALSE ) - { - //----------------------------------------- - // Form query - //----------------------------------------- - - $dba = $this->compile_db_insert_string( $arr ); - $query = "INSERT INTO ".$this->obj['sql_tbl_prefix']."$tbl ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})"; - - //----------------------------------------- - // Shut down query? - //----------------------------------------- - - if ( $shutdown ) - { - if ( ! $this->obj['use_shutdown'] ) - { - $this->is_shutdown = 1; - return $this->query( $query ); - } - else - { - $this->obj['shutdown_queries'][] = $query; - $this->cur_query = ""; - } - } - else - { - return $this->query( $query ); - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: UPDATE - /*-------------------------------------------------------------------------*/ - - function simple_update( $tbl, $set, $where, $low_pro='' ) - { - if ( $low_pro ) - { - $low_pro = ' LOW_PRIORITY '; - } - - $this->cur_query .= "UPDATE ". $low_pro . $this->obj['sql_tbl_prefix']."$tbl SET $set"; - - if ( $where ) - { - $this->cur_query .= " WHERE $where"; - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: DELETE - /*-------------------------------------------------------------------------*/ - - function simple_delete( $tbl, $where ) - { - $this->cur_query .= "DELETE FROM ".$this->obj['sql_tbl_prefix']."$tbl"; - - if ( $where ) - { - $this->cur_query .= " WHERE $where"; - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: ORDER - /*-------------------------------------------------------------------------*/ - - function simple_order( $a ) - { - if ( $a ) - { - $this->cur_query .= ' ORDER BY '.$a; - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: LIMIT WITH CHECK - /*-------------------------------------------------------------------------*/ - - function simple_limit_with_check( $offset, $limit="" ) - { - if ( ! preg_match( "#LIMIT\s+?\d+,#i", $this->cur_query ) ) - { - $this->simple_limit( $offset, $limit ); - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: LIMIT - /*-------------------------------------------------------------------------*/ - - function simple_limit( $offset, $limit="" ) - { - if ( $limit ) - { - $this->cur_query .= ' LIMIT '.$offset.','.$limit; - } - else - { - $this->cur_query .= ' LIMIT '.$offset; - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: SELECT - /*-------------------------------------------------------------------------*/ - - function simple_select( $get, $table, $where="" ) - { - $this->cur_query .= "SELECT $get FROM ".$this->obj['sql_tbl_prefix']."$table"; - - if ( $where != "" ) - { - $this->cur_query .= " WHERE ".$where; - } - } - - /*-------------------------------------------------------------------------*/ - // SIMPLE: SELECT WITH JOIN - /*-------------------------------------------------------------------------*/ - - function simple_select_with_join( $get, $table, $where="", $add_join=array() ) - { - //----------------------------------------- - // OK, here we go... - //----------------------------------------- - - $select_array = array(); - $from_array = array(); - $joinleft_array = array(); - $where_array = array(); - $final_from = array(); - - $select_array[] = $get; - $from_array[] = $table; - - if ( $where ) - { - $where_array[] = $where; - } - - //----------------------------------------- - // Loop through JOINs and sort info - //----------------------------------------- - - if ( is_array( $add_join ) and count( $add_join ) ) - { - foreach( $add_join as $i => $join ) - { - # Push join's select to stack - if ( $join['select'] ) - { - $select_array[] = $join['select']; - } - - if ( $join['type'] == 'inner' ) - { - # Join is inline - $from_array[] = $join['from']; - - if ( $join['where'] ) - { - $where_array[] = $join['where']; - } - } - else if ( $join['type'] == 'left' ) - { - # Join is left - $tmp = " LEFT JOIN "; - - foreach( $join['from'] as $tbl => $alias ) - { - $tmp .= $this->obj['sql_tbl_prefix'].$tbl.' '.$alias; - } - - if ( $join['where'] ) - { - $tmp .= " ON ( ".$join['where']." ) "; - } - - $joinleft_array[] = $tmp; - - unset( $tmp ); - } - else - { - # Not using any other type of join - } - } - } - - //----------------------------------------- - // Build it.. - //----------------------------------------- - - foreach( $from_array as $i ) - { - foreach( $i as $tbl => $alias ) - { - $final_from[] = $this->obj['sql_tbl_prefix'].$tbl.' '.$alias; - } - } - - $get = implode( "," , $select_array ); - $table = implode( "," , $final_from ); - $where = implode( " AND " , $where_array ); - $join = implode( "\n" , $joinleft_array ); - - $this->cur_query .= "SELECT $get FROM $table"; - - if ( $join ) - { - $this->cur_query .= " ".$join." "; - } - - if ( $where != "" ) - { - $this->cur_query .= " WHERE ".$where; - } - } - - - /*-------------------------------------------------------------------------*/ - // Process a manual query - /*-------------------------------------------------------------------------*/ - - function query($the_query, $bypass=0) - { - //----------------------------------------- - // Change the table prefix if needed - //----------------------------------------- - - if ( $this->no_prefix_convert ) - { - $bypass = 1; - } - - if ( ! $bypass ) - { - if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed ) - { - $the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query); - } - } - - //----------------------------------------- - // Debug? - //----------------------------------------- - - if ($this->obj['debug']) - { - global $Debug; - - $Debug->startTimer(); - } - - //----------------------------------------- - // Run the query - //----------------------------------------- - - $this->query_id = mysql_query($the_query, $this->connection_id); - - //----------------------------------------- - // Reset array... - //----------------------------------------- - - $this->force_data_type = array(); - - if (! $this->query_id ) - { - $this->fatal_error("mySQL query error: $the_query"); - } - - //----------------------------------------- - // Debug? - //----------------------------------------- - - if ($this->obj['debug']) - { - $endtime = $Debug->endTimer(); - - $shutdown = $this->is_shutdown ? 'SHUTDOWN QUERY: ' : ''; - - if ( preg_match( "/^select/i", $the_query ) ) - { - $eid = mysql_query("EXPLAIN $the_query", $this->connection_id); - - $this->debug_html .= " - - - - - - - - - - - \n"; - while( $array = mysql_fetch_array($eid) ) - { - $type_col = '#FFFFFF'; - - if ($array['type'] == 'ref' or $array['type'] == 'eq_ref' or $array['type'] == 'const') - { - $type_col = '#D8FFD4'; - } - else if ($array['type'] == 'ALL') - { - $type_col = '#FFEEBA'; - } - - $this->debug_html .= " - - - - - - - - - \n"; - } - - $this->sql_time += $endtime; - - if ($endtime > 0.1) - { - $endtime = "$endtime"; - } - - $this->debug_html .= " - - -
    {$shutdown}Select Query
    $the_query
    tabletypepossible_keyskeykey_lenrefrowsExtra
    $array[table] $array[type] $array[possible_keys] $array[key] $array[key_len] $array[ref] $array[rows] $array[Extra] 
    MySQL time: $endtime
    \n
    \n"; - } - else - { - $this->debug_html .= " - - - - - - - - - -
    {$shutdown}Non Select Query
    $the_query
    MySQL time: $endtime

    \n\n"; - } - } - - $this->query_count++; - - $this->obj['cached_queries'][] = $the_query; - - return $this->query_id; - } - - /*-------------------------------------------------------------------------*/ - // Fetch a row based on the last query - /*-------------------------------------------------------------------------*/ - - function fetch_row($query_id = "") - { - if ($query_id == "") - { - $query_id = $this->query_id; - } - - $this->record_row = mysql_fetch_array($query_id, MYSQL_ASSOC); - - return $this->record_row; - } - - /*-------------------------------------------------------------------------*/ - // DROP TABLE - /*-------------------------------------------------------------------------*/ - - function sql_drop_table( $table ) - { - $this->query( "DROP TABLE if exists ".$this->obj['sql_tbl_prefix']."{$table}" ); - } - - /*-------------------------------------------------------------------------*/ - // DROP FIELD - /*-------------------------------------------------------------------------*/ - - function sql_drop_field( $table, $field ) - { - $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} DROP $field" ); - } - - /*-------------------------------------------------------------------------*/ - // ADD FIELD - /*-------------------------------------------------------------------------*/ - - function sql_add_field( $table, $field_name, $field_type, $field_default="''" ) - { - $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} ADD $field_name $field_type default {$field_default}" ); - } - - /*-------------------------------------------------------------------------*/ - // OPTIMIZE TABLE - /*-------------------------------------------------------------------------*/ - - function sql_optimize_table( $table ) - { - $this->query( "OPTIMIZE TABLE ".$this->obj['sql_tbl_prefix']."{$table}" ); - } - - /*-------------------------------------------------------------------------*/ - // ADD FULLTEXT INDEX - /*-------------------------------------------------------------------------*/ - - function sql_add_fulltext_index( $table, $field ) - { - $this->query( "alter table ".$this->obj['sql_tbl_prefix']."{$table} ADD FULLTEXT({$field})" ); - } - - /*-------------------------------------------------------------------------*/ - // GET TABLE SCHEMATIC - /*-------------------------------------------------------------------------*/ - - function sql_get_table_schematic( $table ) - { - $this->query( "SHOW CREATE TABLE ".$this->obj['sql_tbl_prefix']."{$table}" ); - return $this->fetch_row(); - } - - /*-------------------------------------------------------------------------*/ - // IS ALREADY TABLE FULLTEXT? - /*-------------------------------------------------------------------------*/ - - function sql_is_currently_fulltext( $table ) - { - $result = $this->sql_get_table_schematic( $table ); - - if ( preg_match( "/FULLTEXT KEY/i", $result['Create Table'] ) ) - { - return TRUE; - } - else - { - return FALSE; - } - } - - /*-------------------------------------------------------------------------*/ - // Return the version number of the SQL server - // Should return 'true' version string (ie: 3.23.0) - // And formatted string (ie: 3230 ) - /*-------------------------------------------------------------------------*/ - - function sql_get_version() - { - if ( ! $this->mysql_version and ! $this->true_version ) - { - $this->query("SELECT VERSION() AS version"); - - if ( ! $row = $this->fetch_row() ) - { - $this->query("SHOW VARIABLES LIKE 'version'"); - $row = $this->fetch_row(); - } - - $this->true_version = $row['version']; - $tmp = explode( '.', preg_replace( "#[^\d\.]#", "\\1", $row['version'] ) ); - - $this->mysql_version = sprintf('%d%02d%02d', $tmp[0], $tmp[1], $tmp[2] ); - } - } - - /*-------------------------------------------------------------------------*/ - // sql_can_fulltext - // returns whether SQL engine has fulltext abilities - // returns TRUE or FALSE - /*-------------------------------------------------------------------------*/ - - function sql_can_fulltext() - { - $this->sql_get_version(); - - if ( $this->mysql_version >= 32323 AND strtolower($this->connect_vars['mysql_tbl_type']) == 'myisam' ) - { - return TRUE; - } - else - { - return FALSE; - } - } - - /*-------------------------------------------------------------------------*/ - // sql_can_fulltext_boolean - // returns whether SQL engine has boolean fulltext abilities - // (+word -word, etc) - // returns TRUE or FALSE - /*-------------------------------------------------------------------------*/ - - function sql_can_fulltext_boolean() - { - $this->sql_get_version(); - - if ( $this->mysql_version >= 40010 AND strtolower($this->connect_vars['mysql_tbl_type']) == 'myisam' ) - { - return TRUE; - } - else - { - return FALSE; - } - } - - /*-------------------------------------------------------------------------*/ - // Fetch the number of rows affected by the last query - /*-------------------------------------------------------------------------*/ - - function get_affected_rows() - { - return mysql_affected_rows($this->connection_id); - } - - /*-------------------------------------------------------------------------*/ - // Fetch the number of rows in a result set - /*-------------------------------------------------------------------------*/ - - function get_num_rows() - { - return mysql_num_rows($this->query_id); - } - - /*-------------------------------------------------------------------------*/ - // Fetch the last insert id from an sql autoincrement - /*-------------------------------------------------------------------------*/ - - function get_insert_id() - { - return mysql_insert_id($this->connection_id); - } - - /*-------------------------------------------------------------------------*/ - // Free the result set from mySQLs memory - /*-------------------------------------------------------------------------*/ - - function free_result($query_id="") - { - - if ($query_id == "") { - $query_id = $this->query_id; - } - - @mysql_free_result($query_id); - } - - /*-------------------------------------------------------------------------*/ - // Shut down the database - /*-------------------------------------------------------------------------*/ - - function close_db() - { - if ( $this->connection_id ) - { - return @mysql_close( $this->connection_id ); - } - } - - /*-------------------------------------------------------------------------*/ - // Return an array of tables - /*-------------------------------------------------------------------------*/ - - function get_table_names() - { - $result = mysql_list_tables($this->obj['sql_database']); - $num_tables = @mysql_numrows($result); - for ($i = 0; $i < $num_tables; $i++) - { - $tables[] = mysql_tablename($result, $i); - } - - mysql_free_result($result); - - return $tables; - } - - /*-------------------------------------------------------------------------*/ - // Return an array of fields - /*-------------------------------------------------------------------------*/ - - function get_result_fields($query_id="") - { - - if ($query_id == "") - { - $query_id = $this->query_id; - } - - while ($field = mysql_fetch_field($query_id)) - { - $Fields[] = $field; - } - - return $Fields; - } - - /*-------------------------------------------------------------------------*/ - // INTERNAL: Get error number - /*-------------------------------------------------------------------------*/ - - function _get_error_number() - { - return mysql_errno(); - } - - /*-------------------------------------------------------------------------*/ - // INTERNAL: Get error number - /*-------------------------------------------------------------------------*/ - - function _get_error_string() - { - return mysql_error(); - } - - /*-------------------------------------------------------------------------*/ - // Use different escape method for different SQL engines - /*-------------------------------------------------------------------------*/ - - function add_slashes( $t ) - { - return ( IPS_MAIN_DB_CLASS_LEGACY ) ? mysql_escape_string($t) : mysql_real_escape_string($t, $this->connection_id ); - } - - /*-------------------------------------------------------------------------*/ - // Use different escape method for different SQL engines - /*-------------------------------------------------------------------------*/ - - function remove_slashes( $t ) - { - # Not required for MySQL because we use the mysql_real_escape_string - - /*if ( get_magic_quotes_gpc() ) - { - $t = stripslashes($t); - }*/ - - return $t; - } - - - -} // end class - - ?> \ No newline at end of file diff --git a/upload/ips_kernel/class_db_mysql_client.php b/upload/ips_kernel/class_db_mysql_client.php new file mode 100644 index 00000000..6ebe1cb3 --- /dev/null +++ b/upload/ips_kernel/class_db_mysql_client.php @@ -0,0 +1,1010 @@ + MySQLi Driver Module +| > Module written by Brandon Farber +| > Date started: Monday 28th February 2005 16:46 +| +| > Module Version Number: 2.1.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: Database Object Driver +* +* @package IPS_KERNEL +* @subpackage DatabaseAbstraction +* @author Brandon Farber +* @copyright Invision Power Services, Inc. +* @version 2.1 +*/ + +/** + * Handle base class definitions + * + */ + +if ( ! defined('KERNEL_PATH') ) +{ + define( 'KERNEL_PATH', dirname(__FILE__) . '/' ); +} + +if ( ! class_exists( 'db_main' ) ) +{ + require_once( KERNEL_PATH.'class_db.php' ); +} + +/** + * Allow < 4.3.0 PHP client access + * + */ +if ( ! defined('IPS_MAIN_DB_CLASS_LEGACY') ) +{ + define('IPS_MAIN_DB_CLASS_LEGACY', ( PHP_VERSION < '4.3.0' ) ? TRUE : FALSE ); +} + +/** +* DB Class: Driver Methods +* +* Base class for database abstraction +* +* @package IPS_KERNEL +* @subpackage DatabaseAbstraction +* @author Brandon Farber +* @version 2.1 +*/ +class db_driver_mysql extends db_main +{ + + /*-------------------------------------------------------------------------*/ + // Set up required vars + /*-------------------------------------------------------------------------*/ + + function db_driver_mysql() + { + //-------------------------- + // Set up any required connect + // vars here: + // Will be populated by obj + // caller + //-------------------------- + + $this->connect_vars['mysql_tbl_type'] = ""; + } + + /*-------------------------------------------------------------------------*/ + // Connect to the database + /*-------------------------------------------------------------------------*/ + + function connect() + { + //----------------------------------------- + // Done SQL prefix yet? + //----------------------------------------- + + $this->_set_prefix(); + + //----------------------------------------- + // Load query file + //----------------------------------------- + + $this->_load_cache_file(); + + //----------------------------------------- + // Connect + //----------------------------------------- + + if ( $this->obj['persistent'] AND ! IPS_MAIN_DB_CLASS_LEGACY ) + { + $this->connection_id = @mysql_pconnect( $this->obj['sql_host'] , + $this->obj['sql_user'] , + $this->obj['sql_pass'] , + $this->obj['force_new_connection'] + ); + } + else + { + if ( IPS_MAIN_DB_CLASS_LEGACY ) + { + $this->connection_id = @mysql_connect( $this->obj['sql_host'] , + $this->obj['sql_user'] , + $this->obj['sql_pass'] + ); + } + else + { + $this->connection_id = @mysql_connect( $this->obj['sql_host'] , + $this->obj['sql_user'] , + $this->obj['sql_pass'] , + $this->obj['force_new_connection'] + ); + } + } + + if ( ! $this->connection_id ) + { + $this->fatal_error(); + return FALSE; + } + + if ( ! mysql_select_db($this->obj['sql_database'], $this->connection_id) ) + { + $this->fatal_error(); + return FALSE; + } + + return TRUE; + } + + function sql_can_subquery() + { + $this->sql_get_version(); + + if ( $this->mysql_version >= 41000 ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Quick function: DO UPDATE + /*-------------------------------------------------------------------------*/ + + function do_update( $tbl, $arr, $where="", $shutdown=FALSE ) + { + //----------------------------------------- + // Form query + //----------------------------------------- + + $dba = $this->compile_db_update_string( $arr ); + $query = "UPDATE ".$this->obj['sql_tbl_prefix']."$tbl SET $dba"; + + if ( $where ) + { + $query .= " WHERE ".$where; + } + + //----------------------------------------- + // Shut down query? + //----------------------------------------- + + $this->no_prefix_convert = 1; + + if ( $shutdown ) + { + if ( ! $this->obj['use_shutdown'] ) + { + $this->is_shutdown = 1; + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + $this->is_shutdown = 0; + return $return; + } + else + { + $this->obj['shutdown_queries'][] = $query; + $this->no_prefix_convert = 0; + $this->cur_query = ""; + } + } + else + { + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + return $return; + } + } + + /*-------------------------------------------------------------------------*/ + // Quick function: DO INSERT + /*-------------------------------------------------------------------------*/ + + function do_insert( $tbl, $arr, $shutdown=FALSE ) + { + //----------------------------------------- + // Form query + //----------------------------------------- + + $dba = $this->compile_db_insert_string( $arr ); + $query = "INSERT INTO ".$this->obj['sql_tbl_prefix']."$tbl ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})"; + + //----------------------------------------- + // Shut down query? + //----------------------------------------- + + $this->no_prefix_convert = 1; + + if ( $shutdown ) + { + if ( ! $this->obj['use_shutdown'] ) + { + $this->is_shutdown = 1; + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + $this->is_shutdown = 0; + return $return; + } + else + { + $this->obj['shutdown_queries'][] = $query; + $this->no_prefix_convert = 0; + $this->cur_query = ""; + } + } + else + { + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + return $return; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: UPDATE + /*-------------------------------------------------------------------------*/ + + function simple_update( $tbl, $set, $where, $low_pro='' ) + { + if ( $low_pro ) + { + $low_pro = ' LOW_PRIORITY '; + } + + $this->cur_query .= "UPDATE ". $low_pro . $this->obj['sql_tbl_prefix']."$tbl SET $set"; + + if ( $where ) + { + $this->cur_query .= " WHERE $where"; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: DELETE + /*-------------------------------------------------------------------------*/ + + function simple_delete( $tbl, $where ) + { + if( !$where ) + { + $this->cur_query .= "TRUNCATE TABLE ".$this->obj['sql_tbl_prefix']."$tbl"; + } + else + { + $this->cur_query .= "DELETE FROM ".$this->obj['sql_tbl_prefix']."$tbl WHERE $where"; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: ORDER + /*-------------------------------------------------------------------------*/ + + function simple_order( $a ) + { + if ( $a ) + { + $this->cur_query .= ' ORDER BY '.$a; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: GROUP + /*-------------------------------------------------------------------------*/ + + function simple_group( $a ) + { + if ( $a ) + { + $this->cur_query .= ' GROUP BY '.$a; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: LIMIT WITH CHECK + /*-------------------------------------------------------------------------*/ + + function simple_limit_with_check( $offset, $limit="" ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $offset = intval( $offset ); + $offset = ( $offset < 0 ) ? 0 : $offset; + $limit = intval( $limit ); + #$limit = ( $limit < 0 ) ? 0 : $limit; + + if ( ! preg_match( "#LIMIT\s+?\d+,#i", $this->cur_query ) ) + { + $this->simple_limit( $offset, $limit ); + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: LIMIT + /*-------------------------------------------------------------------------*/ + + function simple_limit( $offset, $limit="" ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $offset = intval( $offset ); + $offset = ( $offset < 0 ) ? 0 : $offset; + $limit = intval( $limit ); + #$limit = ( $limit < 0 ) ? 0 : $limit; + + if ( $limit ) + { + $this->cur_query .= ' LIMIT '.$offset.','.$limit; + } + else + { + $this->cur_query .= ' LIMIT '.$offset; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: SELECT + /*-------------------------------------------------------------------------*/ + + function simple_select( $get, $table, $where="" ) + { + $this->cur_query .= "SELECT $get FROM ".$this->obj['sql_tbl_prefix']."$table"; + + if ( $where != "" ) + { + $this->cur_query .= " WHERE ".$where; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: SELECT WITH JOIN + /*-------------------------------------------------------------------------*/ + + function simple_select_with_join( $get, $table, $where="", $add_join=array() ) + { + //----------------------------------------- + // OK, here we go... + //----------------------------------------- + + $select_array = array(); + $from_array = array(); + $joinleft_array = array(); + $where_array = array(); + $final_from = array(); + + $select_array[] = $get; + $from_array[] = $table; + + if ( $where ) + { + $where_array[] = $where; + } + + //----------------------------------------- + // Loop through JOINs and sort info + //----------------------------------------- + + if ( is_array( $add_join ) and count( $add_join ) ) + { + foreach( $add_join as $join ) + { + # Push join's select to stack + if ( $join['select'] ) + { + $select_array[] = $join['select']; + } + + if ( $join['type'] == 'inner' ) + { + # Join is inline + $from_array[] = $join['from']; + + if ( $join['where'] ) + { + $where_array[] = $join['where']; + } + } + else if ( $join['type'] == 'left' ) + { + # Join is left + $tmp = " LEFT JOIN "; + + foreach( $join['from'] as $tbl => $alias ) + { + $tmp .= $this->obj['sql_tbl_prefix'].$tbl.' '.$alias; + } + + if ( $join['where'] ) + { + $tmp .= " ON ( ".$join['where']." ) "; + } + + $joinleft_array[] = $tmp; + + unset( $tmp ); + } + else + { + # Not using any other type of join + } + } + } + + //----------------------------------------- + // Build it.. + //----------------------------------------- + + foreach( $from_array as $i ) + { + foreach( $i as $tbl => $alias ) + { + $final_from[] = $this->obj['sql_tbl_prefix'].$tbl.' '.$alias; + } + } + + $get = implode( "," , $select_array ); + $table = implode( "," , $final_from ); + $where = implode( " AND " , $where_array ); + $join = implode( "\n" , $joinleft_array ); + + $this->cur_query .= "SELECT $get FROM $table"; + + if ( $join ) + { + $this->cur_query .= " ".$join." "; + } + + if ( $where != "" ) + { + $this->cur_query .= " WHERE ".$where; + } + } + + + /*-------------------------------------------------------------------------*/ + // Process a manual query + /*-------------------------------------------------------------------------*/ + + function query($the_query, $bypass=0) + { + //----------------------------------------- + // Change the table prefix if needed + //----------------------------------------- + + if ( $this->no_prefix_convert ) + { + $bypass = 1; + } + + if ( ! $bypass ) + { + if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed ) + { + $the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query); + } + } + + //----------------------------------------- + // Debug? + //----------------------------------------- + + if ( $this->obj['debug'] OR ($this->obj['use_debug_log'] AND $this->obj['debug_log']) ) + { + global $Debug; + + $Debug->startTimer(); + } + + //----------------------------------------- + // Stop sub selects? (UNION) + //----------------------------------------- + + if ( ! IPS_DB_ALLOW_SUB_SELECTS ) + { + # On the spot allowance? + + if ( ! $this->allow_sub_select ) + { + $_tmp = strtolower( $this->remove_all_quotes($the_query) ); + + if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) ) + { + $this->fatal_error( "UNION query joins are not allowed.\nAdd \$DB->allow_sub_select=1; before any query construct to allow them" ); + return false; + } + else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) ) + { + if ( count( $matches ) > 1 ) + { + $this->fatal_error( "SUB SELECT query joins are not allowed.\nAdd \$DB->allow_sub_select=1; before any query construct to allow them" ); + return false; + } + } + } + } + + //----------------------------------------- + // Run the query + //----------------------------------------- + + $this->query_id = mysql_query($the_query, $this->connection_id); + + //----------------------------------------- + // Reset array... + //----------------------------------------- + + $this->force_data_type = array(); + $this->allow_sub_select = 0; + + if (! $this->query_id ) + { + $this->fatal_error("mySQL query error: $the_query"); + } + + //----------------------------------------- + // Debug? + //----------------------------------------- + + if ( $this->obj['use_debug_log'] AND $this->obj['debug_log'] ) + { + $endtime = $Debug->endTimer(); + + if ( preg_match( "/^(?:\()?select/i", $the_query ) ) + { + $eid = mysql_query("EXPLAIN $the_query", $this->connection_id); + + while( $array = mysql_fetch_array($eid) ) + { + $_data .= "\n+------------------------------------------------------------------------------+"; + $_data .= "\n|Table: ". $array['table']; + $_data .= "\n|Type: ". $array['type']; + $_data .= "\n|Possible Keys: ". $array['possible_keys']; + $_data .= "\n|Key: ". $array['key']; + $_data .= "\n|Key Len: ". $array['key_len']; + $_data .= "\n|Ref: ". $array['ref']; + $_data .= "\n|Rows: ". $array['rows']; + $_data .= "\n|Extra: ". $array['extra']; + $_data .= "\n+------------------------------------------------------------------------------+"; + } + + $this->write_debug_log( $query, $_data, $endtime ); + } + } + else if ( $this->obj['debug'] ) + { + $endtime = $Debug->endTimer(); + + $shutdown = $this->is_shutdown ? 'SHUTDOWN QUERY: ' : ''; + + if ( preg_match( "/^(?:\()?select/i", $the_query ) ) + { + $eid = mysql_query("EXPLAIN $the_query", $this->connection_id); + + $this->debug_html .= " + + + + + + + + + + + \n"; + while( $array = mysql_fetch_array($eid) ) + { + $type_col = '#FFFFFF'; + + if ($array['type'] == 'ref' or $array['type'] == 'eq_ref' or $array['type'] == 'const') + { + $type_col = '#D8FFD4'; + } + else if ($array['type'] == 'ALL') + { + $type_col = '#FFEEBA'; + } + + $this->debug_html .= " + + + + + + + + + \n"; + } + + $this->sql_time += $endtime; + + if ($endtime > 0.1) + { + $endtime = "$endtime"; + } + + $this->debug_html .= " + + +
    {$shutdown}Select Query
    $the_query
    tabletypepossible_keyskeykey_lenrefrowsExtra
    $array[table] $array[type] $array[possible_keys] $array[key] $array[key_len] $array[ref] $array[rows] $array[Extra] 
    MySQL time: $endtime
    \n
    \n"; + } + else + { + $this->debug_html .= " + + + + + + + + + +
    {$shutdown}Non Select Query
    $the_query
    MySQL time: $endtime

    \n\n"; + } + } + + $this->query_count++; + + $this->obj['cached_queries'][] = $the_query; + + return $this->query_id; + } + + /*-------------------------------------------------------------------------*/ + // Fetch a row based on the last query + /*-------------------------------------------------------------------------*/ + + function fetch_row($query_id = "") + { + if ($query_id == "") + { + $query_id = $this->query_id; + } + + $this->record_row = mysql_fetch_array($query_id, MYSQL_ASSOC); + + return $this->record_row; + } + + /*-------------------------------------------------------------------------*/ + // DROP TABLE + /*-------------------------------------------------------------------------*/ + + function sql_drop_table( $table ) + { + $this->query( "DROP TABLE if exists ".$this->obj['sql_tbl_prefix']."{$table}" ); + } + + /*-------------------------------------------------------------------------*/ + // DROP FIELD + /*-------------------------------------------------------------------------*/ + + function sql_drop_field( $table, $field ) + { + $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} DROP $field" ); + } + + /*-------------------------------------------------------------------------*/ + // ADD FIELD + /*-------------------------------------------------------------------------*/ + + function sql_add_field( $table, $field_name, $field_type, $field_default="''" ) + { + $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} ADD $field_name $field_type default {$field_default}" ); + } + + /*-------------------------------------------------------------------------*/ + // CHANGE FIELD + /*-------------------------------------------------------------------------*/ + + function sql_change_field( $table, $original_field, $field_name, $field_type, $field_default="''" ) + { + $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} CHANGE $original_field $field_name $field_type default {$field_default}" ); + } + + /*-------------------------------------------------------------------------*/ + // OPTIMIZE TABLE + /*-------------------------------------------------------------------------*/ + + function sql_optimize_table( $table ) + { + $this->query( "OPTIMIZE TABLE ".$this->obj['sql_tbl_prefix']."{$table}" ); + } + + /*-------------------------------------------------------------------------*/ + // ADD FULLTEXT INDEX + /*-------------------------------------------------------------------------*/ + + function sql_add_fulltext_index( $table, $field ) + { + $this->query( "alter table ".$this->obj['sql_tbl_prefix']."{$table} ADD FULLTEXT({$field})" ); + } + + /*-------------------------------------------------------------------------*/ + // GET TABLE SCHEMATIC + /*-------------------------------------------------------------------------*/ + + function sql_get_table_schematic( $table ) + { + $qid = $this->query( "SHOW CREATE TABLE ".$this->obj['sql_tbl_prefix']."{$table}" ); + + if( $qid ) + { + return $this->fetch_row($qid); + } + } + + /*-------------------------------------------------------------------------*/ + // IS ALREADY TABLE FULLTEXT? + /*-------------------------------------------------------------------------*/ + + function sql_is_currently_fulltext( $table ) + { + $result = $this->sql_get_table_schematic( $table ); + + if ( preg_match( "/FULLTEXT KEY/i", $result['Create Table'] ) ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Return the version number of the SQL server + // Should return 'true' version string (ie: 3.23.0) + // And formatted string (ie: 3230 ) + /*-------------------------------------------------------------------------*/ + + function sql_get_version() + { + if ( ! $this->mysql_version and ! $this->true_version ) + { + $this->query("SELECT VERSION() AS version"); + + if ( ! $row = $this->fetch_row() ) + { + $this->query("SHOW VARIABLES LIKE 'version'"); + $row = $this->fetch_row(); + } + + $this->true_version = $row['version']; + $tmp = explode( '.', preg_replace( "#[^\d\.]#", "\\1", $row['version'] ) ); + + $this->mysql_version = sprintf('%d%02d%02d', $tmp[0], $tmp[1], $tmp[2] ); + } + } + + /*-------------------------------------------------------------------------*/ + // sql_can_fulltext + // returns whether SQL engine has fulltext abilities + // returns TRUE or FALSE + /*-------------------------------------------------------------------------*/ + + function sql_can_fulltext() + { + $this->sql_get_version(); + + if ( $this->mysql_version >= 32323 AND strtolower($this->connect_vars['mysql_tbl_type']) == 'myisam' ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // sql_can_fulltext_boolean + // returns whether SQL engine has boolean fulltext abilities + // (+word -word, etc) + // returns TRUE or FALSE + /*-------------------------------------------------------------------------*/ + + function sql_can_fulltext_boolean() + { + $this->sql_get_version(); + + if ( $this->mysql_version >= 40010 AND strtolower($this->connect_vars['mysql_tbl_type']) == 'myisam' ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Fetch the number of rows affected by the last query + /*-------------------------------------------------------------------------*/ + + function get_affected_rows() + { + return mysql_affected_rows($this->connection_id); + } + + /*-------------------------------------------------------------------------*/ + // Fetch the number of rows in a result set + /*-------------------------------------------------------------------------*/ + + function get_num_rows( $query_id="" ) + { + if ( ! $query_id ) + { + $query_id = $this->query_id; + } + + return mysql_num_rows( $query_id ); + } + + /*-------------------------------------------------------------------------*/ + // Fetch the last insert id from an sql autoincrement + /*-------------------------------------------------------------------------*/ + + function get_insert_id() + { + return mysql_insert_id($this->connection_id); + } + + /*-------------------------------------------------------------------------*/ + // Free the result set from mySQLs memory + /*-------------------------------------------------------------------------*/ + + function free_result($query_id="") + { + if ($query_id == "") + { + $query_id = $this->query_id; + } + + @mysql_free_result($query_id); + } + + /*-------------------------------------------------------------------------*/ + // Shut down the database + /*-------------------------------------------------------------------------*/ + + function close_db() + { + if ( $this->connection_id ) + { + return @mysql_close( $this->connection_id ); + } + } + + /*-------------------------------------------------------------------------*/ + // Return an array of tables + /*-------------------------------------------------------------------------*/ + + function get_table_names() + { + $result = mysql_list_tables($this->obj['sql_database']); + $num_tables = @mysql_numrows($result); + for ($i = 0; $i < $num_tables; $i++) + { + $tables[] = mysql_tablename($result, $i); + } + + // free result docs say only for select, explain, describe, show queries + //mysql_free_result($result); + + return $tables; + } + + /*-------------------------------------------------------------------------*/ + // Check if table exists + /*-------------------------------------------------------------------------*/ + + function table_exists( $table ) + { + $table_names = $this->get_table_names(); + + $return = 0; + + if( in_array( SQL_PREFIX.$table, $table_names ) ) + { + $return = 1; + } + + unset($table_names); + + return $return; + } + + + /*-------------------------------------------------------------------------*/ + // Return an array of fields + /*-------------------------------------------------------------------------*/ + + function get_result_fields($query_id="") + { + + if ($query_id == "") + { + $query_id = $this->query_id; + } + + while ($field = mysql_fetch_field($query_id)) + { + $Fields[] = $field; + } + + return $Fields; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Get error number + /*-------------------------------------------------------------------------*/ + + function _get_error_number() + { + $conid = $this->connection_id ? $this->connection_id : ''; + + return @mysql_errno( $conid ); + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Get error number + /*-------------------------------------------------------------------------*/ + + function _get_error_string() + { + $conid = $this->connection_id ? $this->connection_id : ''; + + return @mysql_error( $conid ); + } + + /*-------------------------------------------------------------------------*/ + // Use different escape method for different SQL engines + /*-------------------------------------------------------------------------*/ + + function add_slashes( $t ) + { + return ( IPS_MAIN_DB_CLASS_LEGACY ) ? mysql_escape_string($t) : mysql_real_escape_string($t, $this->connection_id ); + } + + /*-------------------------------------------------------------------------*/ + // Use different escape method for different SQL engines + /*-------------------------------------------------------------------------*/ + + function remove_slashes( $t ) + { + # Not required for MySQL because we use the mysql_real_escape_string + + /*if ( get_magic_quotes_gpc() ) + { + $t = stripslashes($t); + }*/ + + return $t; + } + +} // end class + + +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_db_mysqli_client.php b/upload/ips_kernel/class_db_mysqli_client.php new file mode 100644 index 00000000..b16b600a --- /dev/null +++ b/upload/ips_kernel/class_db_mysqli_client.php @@ -0,0 +1,1006 @@ + MySQLi Driver Module +| > Module written by Brandon Farber +| > Date started: Monday 28th February 2005 16:46 +| +| > Module Version Number: 2.1.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: Database Object Driver +* +* @package IPS_KERNEL +* @subpackage DatabaseAbstraction +* @author Brandon Farber +* @copyright Invision Power Services, Inc. +* @version 2.1 +*/ + + +/** + * Handle base class definitions + * + */ + +if ( ! defined('KERNEL_PATH') ) +{ + define( 'KERNEL_PATH', dirname(__FILE__) . '/' ); +} + +if ( ! class_exists( 'db_main' ) ) +{ + require_once( KERNEL_PATH.'class_db.php' ); +} + +/** + * Allow < 4.3.0 PHP client access + * + */ +if ( ! defined('IPS_MAIN_DB_CLASS_LEGACY') ) +{ + define('IPS_MAIN_DB_CLASS_LEGACY', ( PHP_VERSION < '4.3.0' ) ? TRUE : FALSE ); +} + +/** +* DB Class: Driver Methods +* +* Base class for database abstraction +* +* @package IPS_KERNEL +* @subpackage DatabaseAbstraction +* @author Brandon Farber +* @version 2.1 +*/ +class db_driver_mysql extends db_main +{ + var $connect_failed = 0; + + /*-------------------------------------------------------------------------*/ + // Set up required vars + /*-------------------------------------------------------------------------*/ + + function db_driver_mysql() + { + if( !defined('MYSQLI_USED') ) + { + // Stewart instantiates 2 drivers for conversions + + define( 'MYSQLI_USED', 1 ); + } + + //-------------------------- + // Set up any required connect + // vars here: + // Will be populated by obj + // caller + //-------------------------- + + $this->connect_vars['mysql_tbl_type'] = ""; + } + + /*-------------------------------------------------------------------------*/ + // Connect to the database + /*-------------------------------------------------------------------------*/ + + function connect() + { + //----------------------------------------- + // Done SQL prefix yet? + //----------------------------------------- + + $this->_set_prefix(); + + //----------------------------------------- + // Load query file + //----------------------------------------- + + $this->_load_cache_file(); + + //----------------------------------------- + // Connect + //----------------------------------------- + + $this->connection_id = @mysqli_connect( $this->obj['sql_host'] , + $this->obj['sql_user'] , + $this->obj['sql_pass'] + ); + + if ( ! $this->connection_id ) + { + $this->connect_failed = 1; + $this->fatal_error(); + return FALSE; + } + + if ( ! mysqli_select_db( $this->connection_id, $this->obj['sql_database'] ) ) + { + $this->fatal_error(); + return FALSE; + } + + mysqli_autocommit( $this->connection_id, TRUE ); + + return TRUE; + } + + function sql_can_subquery() + { + $this->sql_get_version(); + + if ( $this->mysql_version >= 41000 ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Quick function: DO UPDATE + /*-------------------------------------------------------------------------*/ + + function do_update( $tbl, $arr, $where="", $shutdown=FALSE ) + { + //----------------------------------------- + // Form query + //----------------------------------------- + + $dba = $this->compile_db_update_string( $arr ); + $query = "UPDATE ".$this->obj['sql_tbl_prefix']."$tbl SET $dba"; + + if ( $where ) + { + $query .= " WHERE ".$where; + } + + //----------------------------------------- + // Shut down query? + //----------------------------------------- + + $this->no_prefix_convert = 1; + + if ( $shutdown ) + { + if ( ! $this->obj['use_shutdown'] ) + { + $this->is_shutdown = 1; + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + $this->is_shutdown = 1; + return $return; + } + else + { + $this->obj['shutdown_queries'][] = $query; + $this->no_prefix_convert = 0; + $this->cur_query = ""; + } + } + else + { + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + return $return; + } + } + + /*-------------------------------------------------------------------------*/ + // Quick function: DO INSERT + /*-------------------------------------------------------------------------*/ + + function do_insert( $tbl, $arr, $shutdown=FALSE ) + { + //----------------------------------------- + // Form query + //----------------------------------------- + + $dba = $this->compile_db_insert_string( $arr ); + + $query = "INSERT INTO ".$this->obj['sql_tbl_prefix']."$tbl ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})"; + + //----------------------------------------- + // Shut down query? + //----------------------------------------- + + $this->no_prefix_convert = 1; + + if ( $shutdown ) + { + if ( ! $this->obj['use_shutdown'] ) + { + $this->is_shutdown = 1; + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + $this->is_shutdown = 1; + return $return; + } + else + { + $this->obj['shutdown_queries'][] = $query; + $this->no_prefix_convert = 0; + $this->cur_query = ""; + } + } + else + { + $return = $this->query( $query ); + $this->no_prefix_convert = 0; + return $return; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: UPDATE + /*-------------------------------------------------------------------------*/ + + function simple_update( $tbl, $set, $where, $low_pro='' ) + { + if ( $low_pro ) + { + $low_pro = ' LOW_PRIORITY '; + } + + $this->cur_query .= "UPDATE ". $low_pro . $this->obj['sql_tbl_prefix']."$tbl SET $set"; + + if ( $where ) + { + $this->cur_query .= " WHERE $where"; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: DELETE + /*-------------------------------------------------------------------------*/ + + function simple_delete( $tbl, $where ) + { + if( !$where ) + { + $this->cur_query .= "TRUNCATE TABLE ".$this->obj['sql_tbl_prefix']."$tbl"; + } + else + { + $this->cur_query .= "DELETE FROM ".$this->obj['sql_tbl_prefix']."$tbl WHERE $where"; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: ORDER + /*-------------------------------------------------------------------------*/ + + function simple_order( $a ) + { + if ( $a ) + { + $this->cur_query .= ' ORDER BY '.$a; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: GROUP + /*-------------------------------------------------------------------------*/ + + function simple_group( $a ) + { + if ( $a ) + { + $this->cur_query .= ' GROUP BY '.$a; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: LIMIT WITH CHECK + /*-------------------------------------------------------------------------*/ + + function simple_limit_with_check( $offset, $limit="" ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $offset = intval( $offset ); + $offset = ( $offset < 0 ) ? 0 : $offset; + $limit = intval( $limit ); + #$limit = ( $limit < 0 ) ? 0 : $limit; + + if ( ! preg_match( "#LIMIT\s+?\d+,#i", $this->cur_query ) ) + { + $this->simple_limit( $offset, $limit ); + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: LIMIT + /*-------------------------------------------------------------------------*/ + + function simple_limit( $offset, $limit="" ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $offset = intval( $offset ); + $offset = ( $offset < 0 ) ? 0 : $offset; + $limit = intval( $limit ); + #$limit = ( $limit < 0 ) ? 0 : $limit; + + if ( $limit ) + { + $this->cur_query .= ' LIMIT '.$offset.','.$limit; + } + else + { + $this->cur_query .= ' LIMIT '.$offset; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: SELECT + /*-------------------------------------------------------------------------*/ + + function simple_select( $get, $table, $where="" ) + { + $this->cur_query .= "SELECT $get FROM ".$this->obj['sql_tbl_prefix']."$table"; + + if ( $where != "" ) + { + $this->cur_query .= " WHERE ".$where; + } + } + + /*-------------------------------------------------------------------------*/ + // SIMPLE: SELECT WITH JOIN + /*-------------------------------------------------------------------------*/ + + function simple_select_with_join( $get, $table, $where="", $add_join=array() ) + { + //----------------------------------------- + // OK, here we go... + //----------------------------------------- + + $select_array = array(); + $from_array = array(); + $joinleft_array = array(); + $where_array = array(); + $final_from = array(); + + $select_array[] = $get; + $from_array[] = $table; + + if ( $where ) + { + $where_array[] = $where; + } + + //----------------------------------------- + // Loop through JOINs and sort info + //----------------------------------------- + + if ( is_array( $add_join ) and count( $add_join ) ) + { + foreach( $add_join as $join ) + { + # Push join's select to stack + if ( isset($join['select']) AND $join['select'] ) + { + $select_array[] = $join['select']; + } + + if ( $join['type'] == 'inner' ) + { + # Join is inline + $from_array[] = $join['from']; + + if ( $join['where'] ) + { + $where_array[] = $join['where']; + } + } + else if ( $join['type'] == 'left' ) + { + # Join is left + $tmp = " LEFT JOIN "; + + foreach( $join['from'] as $tbl => $alias ) + { + $tmp .= $this->obj['sql_tbl_prefix'].$tbl.' '.$alias; + } + + if ( $join['where'] ) + { + $tmp .= " ON ( ".$join['where']." ) "; + } + + $joinleft_array[] = $tmp; + + unset( $tmp ); + } + else + { + # Not using any other type of join + } + } + } + + //----------------------------------------- + // Build it.. + //----------------------------------------- + + foreach( $from_array as $i ) + { + foreach( $i as $tbl => $alias ) + { + $final_from[] = $this->obj['sql_tbl_prefix'].$tbl.' '.$alias; + } + } + + $get = implode( "," , $select_array ); + $table = implode( "," , $final_from ); + $where = implode( " AND " , $where_array ); + $join = implode( "\n" , $joinleft_array ); + + $this->cur_query .= "SELECT $get FROM $table"; + + if ( $join ) + { + $this->cur_query .= " ".$join." "; + } + + if ( $where != "" ) + { + $this->cur_query .= " WHERE ".$where; + } + } + + + /*-------------------------------------------------------------------------*/ + // Process a manual query + /*-------------------------------------------------------------------------*/ + + function query($the_query, $bypass=0) + { + //----------------------------------------- + // Change the table prefix if needed + //----------------------------------------- + + if ( $this->no_prefix_convert ) + { + $bypass = 1; + } + + if ( ! $bypass ) + { + if ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed ) + { + $the_query = preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->obj['sql_tbl_prefix']."\\1\\2", $the_query); + } + } + + //----------------------------------------- + // Debug? + //----------------------------------------- + + if ( $this->obj['debug'] OR ( $this->obj['use_debug_log'] AND $this->obj['debug_log'] ) ) + { + global $Debug; + + $Debug->startTimer(); + } + + //----------------------------------------- + // Stop sub selects? (UNION) + //----------------------------------------- + + if ( ! IPS_DB_ALLOW_SUB_SELECTS ) + { + # On the spot allowance? + if ( ! $this->allow_sub_select ) + { + $_tmp = strtolower( $this->remove_all_quotes($the_query) ); + + if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) ) + { + $this->fatal_error( "UNION query joins are not allowed.\nAdd \$DB->allow_sub_select=1; before any query construct to allow them" ); + return false; + } + else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) ) + { + if ( count( $matches ) > 1 ) + { + $this->fatal_error( "SUB SELECT query joins are not allowed.\nAdd \$DB->allow_sub_select=1; before any query construct to allow them" ); + return false; + } + } + } + } + + //----------------------------------------- + // Run the query + //----------------------------------------- + + $this->query_id = mysqli_query($this->connection_id, $the_query ); + + //----------------------------------------- + // Reset array... + //----------------------------------------- + + $this->force_data_type = array(); + $this->allow_sub_select = 0; + + if (! $this->query_id ) + { + $this->fatal_error("mySQL query error: $the_query"); + } + + //----------------------------------------- + // Debug? + //----------------------------------------- + + if ( $this->obj['use_debug_log'] AND $this->obj['debug_log'] ) + { + $endtime = $Debug->endTimer(); + + if ( preg_match( "/^(?:\()?select/i", $the_query ) ) + { + $eid = mysqli_query($this->connection_id, "EXPLAIN $the_query"); + + while( $array = mysqli_fetch_array($eid) ) + { + $_data .= "\n+------------------------------------------------------------------------------+"; + $_data .= "\n|Table: ". $array['table']; + $_data .= "\n|Type: ". $array['type']; + $_data .= "\n|Possible Keys: ". $array['possible_keys']; + $_data .= "\n|Key: ". $array['key']; + $_data .= "\n|Key Len: ". $array['key_len']; + $_data .= "\n|Ref: ". $array['ref']; + $_data .= "\n|Rows: ". $array['rows']; + $_data .= "\n|Extra: ". $array['extra']; + $_data .= "\n+------------------------------------------------------------------------------+"; + } + + $this->write_debug_log( $the_query, $_data, $endtime ); + } + } + else if ($this->obj['debug']) + { + $endtime = $Debug->endTimer(); + + $shutdown = $this->is_shutdown ? 'SHUTDOWN QUERY: ' : ''; + + if ( preg_match( "/^(?:\()?select/i", $the_query ) ) + { + $eid = mysqli_query( $this->connection_id, "EXPLAIN $the_query" ); + + $this->debug_html .= " + + + + + + + + + + + \n"; + while( $array = mysqli_fetch_array($eid) ) + { + $type_col = '#FFFFFF'; + + if ($array['type'] == 'ref' or $array['type'] == 'eq_ref' or $array['type'] == 'const') + { + $type_col = '#D8FFD4'; + } + else if ($array['type'] == 'ALL') + { + $type_col = '#FFEEBA'; + } + + $this->debug_html .= " + + + + + + + + + \n"; + } + + $this->sql_time += $endtime; + + if ($endtime > 0.1) + { + $endtime = "$endtime"; + } + + $this->debug_html .= " + + +
    {$shutdown}Select Query
    $the_query
    tabletypepossible_keyskeykey_lenrefrowsExtra
    $array[table] $array[type] $array[possible_keys] $array[key] $array[key_len] $array[ref] $array[rows] $array[Extra] 
    MySQL time: $endtime
    \n
    \n"; + } + else + { + $this->debug_html .= " + + + + + + + + + +
    {$shutdown}Non Select Query
    $the_query
    MySQL time: $endtime

    \n\n"; + } + } + + $this->query_count++; + + $this->obj['cached_queries'][] = $the_query; + + return $this->query_id; + } + + /*-------------------------------------------------------------------------*/ + // Fetch a row based on the last query + /*-------------------------------------------------------------------------*/ + + function fetch_row($query_id = "") + { + if ( !$query_id ) + { + $query_id = $this->query_id; + } + + $this->record_row = mysqli_fetch_array($query_id, MYSQL_ASSOC); + + return $this->record_row; + } + + /*-------------------------------------------------------------------------*/ + // DROP TABLE + /*-------------------------------------------------------------------------*/ + + function sql_drop_table( $table ) + { + $this->query( "DROP TABLE if exists ".$this->obj['sql_tbl_prefix']."{$table}" ); + } + + /*-------------------------------------------------------------------------*/ + // DROP FIELD + /*-------------------------------------------------------------------------*/ + + function sql_drop_field( $table, $field ) + { + $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} DROP $field" ); + } + + /*-------------------------------------------------------------------------*/ + // ADD FIELD + /*-------------------------------------------------------------------------*/ + + function sql_add_field( $table, $field_name, $field_type, $field_default="''" ) + { + $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} ADD $field_name $field_type default {$field_default}" ); + } + + /*-------------------------------------------------------------------------*/ + // CHANGE FIELD + /*-------------------------------------------------------------------------*/ + + function sql_change_field( $table, $original_field, $field_name, $field_type, $field_default="''" ) + { + $this->query( "ALTER TABLE ".$this->obj['sql_tbl_prefix']."{$table} CHANGE $original_field $field_name $field_type default {$field_default}" ); + } + + /*-------------------------------------------------------------------------*/ + // OPTIMIZE TABLE + /*-------------------------------------------------------------------------*/ + + function sql_optimize_table( $table ) + { + $this->query( "OPTIMIZE TABLE ".$this->obj['sql_tbl_prefix']."{$table}" ); + } + + /*-------------------------------------------------------------------------*/ + // ADD FULLTEXT INDEX + /*-------------------------------------------------------------------------*/ + + function sql_add_fulltext_index( $table, $field ) + { + $this->query( "alter table ".$this->obj['sql_tbl_prefix']."{$table} ADD FULLTEXT({$field})" ); + } + + /*-------------------------------------------------------------------------*/ + // GET TABLE SCHEMATIC + /*-------------------------------------------------------------------------*/ + + function sql_get_table_schematic( $table ) + { + $qid = $this->query( "SHOW CREATE TABLE ".$this->obj['sql_tbl_prefix']."{$table}" ); + + if( $qid ) + { + return $this->fetch_row($qid); + } + } + + /*-------------------------------------------------------------------------*/ + // IS ALREADY TABLE FULLTEXT? + /*-------------------------------------------------------------------------*/ + + function sql_is_currently_fulltext( $table ) + { + $result = $this->sql_get_table_schematic( $table ); + + if ( preg_match( "/FULLTEXT KEY/i", $result['Create Table'] ) ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Return the version number of the SQL server + // Should return 'true' version string (ie: 3.23.0) + // And formatted string (ie: 3230 ) + /*-------------------------------------------------------------------------*/ + + function sql_get_version() + { + if ( ! $this->mysql_version and ! $this->true_version ) + { + $version = mysqli_get_server_info($this->connection_id); + + $this->true_version = $version; + $tmp = explode( '.', preg_replace( "#[^\d\.]#", "\\1", $version ) ); + + $this->mysql_version = sprintf('%d%02d%02d', $tmp[0], $tmp[1], $tmp[2] ); + } + } + + /*-------------------------------------------------------------------------*/ + // sql_can_fulltext + // returns whether SQL engine has fulltext abilities + // returns TRUE or FALSE + /*-------------------------------------------------------------------------*/ + + function sql_can_fulltext() + { + $this->sql_get_version(); + + if ( $this->mysql_version >= 32323 AND strtolower($this->connect_vars['mysql_tbl_type']) == 'myisam' ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // sql_can_fulltext_boolean + // returns whether SQL engine has boolean fulltext abilities + // (+word -word, etc) + // returns TRUE or FALSE + /*-------------------------------------------------------------------------*/ + + function sql_can_fulltext_boolean() + { + $this->sql_get_version(); + + if ( $this->mysql_version >= 40010 AND strtolower($this->connect_vars['mysql_tbl_type']) == 'myisam' ) + { + return TRUE; + } + else + { + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Fetch the number of rows affected by the last query + /*-------------------------------------------------------------------------*/ + + function get_affected_rows() + { + return mysqli_affected_rows($this->connection_id); + } + + /*-------------------------------------------------------------------------*/ + // Fetch the number of rows in a result set + /*-------------------------------------------------------------------------*/ + + function get_num_rows( $query_id="" ) + { + if ( ! $query_id ) + { + $query_id = $this->query_id; + } + + return mysqli_num_rows( $query_id ); + } + + /*-------------------------------------------------------------------------*/ + // Fetch the last insert id from an sql autoincrement + /*-------------------------------------------------------------------------*/ + + function get_insert_id() + { + return mysqli_insert_id($this->connection_id); + } + + /*-------------------------------------------------------------------------*/ + // Free the result set from mySQLs memory + /*-------------------------------------------------------------------------*/ + + function free_result( $query_id="" ) + { + if ( ! $query_id ) + { + $query_id = $this->query_id; + } + + @mysqli_free_result( $query_id ); + } + + /*-------------------------------------------------------------------------*/ + // Shut down the database + /*-------------------------------------------------------------------------*/ + + function close_db() + { + if ( $this->connection_id ) + { + return @mysqli_close( $this->connection_id ); + } + } + + /*-------------------------------------------------------------------------*/ + // Return an array of tables + /*-------------------------------------------------------------------------*/ + + function get_table_names() + { + $tbl = $this->query( "SHOW TABLES FROM `{$this->obj['sql_database']}`" ); + + while( $result = mysqli_fetch_row($tbl) ) + { + $tables[] = $result[0]; + } + + mysqli_free_result($tbl); + + return $tables; + } + + + /*-------------------------------------------------------------------------*/ + // Check if table exists + /*-------------------------------------------------------------------------*/ + + function table_exists( $table ) + { + $table_names = $this->get_table_names(); + + $return = 0; + + if ( in_array( SQL_PREFIX.$table, $table_names ) ) + { + $return = 1; + } + + unset($table_names); + + return $return; + } + + /*-------------------------------------------------------------------------*/ + // Return an array of fields + /*-------------------------------------------------------------------------*/ + + function get_result_fields($query_id="") + { + $Fields = array(); + + if ( !$query_id ) + { + $query_id = $this->query_id; + } + + while ($field = mysqli_fetch_field($query_id)) + { + $Fields[] = $field; + } + + return $Fields; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Get error number + /*-------------------------------------------------------------------------*/ + + function _get_error_number() + { + if( $this->connect_failed ) + { + return mysqli_connect_errno( $this->connection_id ); + } + else + { + return mysqli_errno( $this->connection_id ); + } + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Get error number + /*-------------------------------------------------------------------------*/ + + function _get_error_string() + { + if( $this->connect_failed ) + { + return mysqli_connect_error( $this->connection_id ); + } + else + { + return mysqli_error( $this->connection_id ); + } + } + + /*-------------------------------------------------------------------------*/ + // Use different escape method for different SQL engines + /*-------------------------------------------------------------------------*/ + + function add_slashes( $t ) + { + return mysqli_real_escape_string( $this->connection_id, $t ); + } + + /*-------------------------------------------------------------------------*/ + // Use different escape method for different SQL engines + /*-------------------------------------------------------------------------*/ + + function remove_slashes( $t ) + { + # Not required for MySQL because we use the mysql_real_escape_string + + /*if ( get_magic_quotes_gpc() ) + { + $t = stripslashes($t); + }*/ + + return $t; + } + + + +} // end class + + +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_difference.php b/upload/ips_kernel/class_difference.php index 6006d38e..d2dc1542 100644 --- a/upload/ips_kernel/class_difference.php +++ b/upload/ips_kernel/class_difference.php @@ -1,25 +1,13 @@ Difference Engine. @@ -148,7 +136,7 @@ class class_difference $c = 0; $diff_res_array = array(); - foreach( $diff_res as $bleh => $l_val ) + foreach( $diff_res as $l_val ) { if ( intval($l_val) ) { @@ -265,7 +253,7 @@ class class_difference reset($str_array); - foreach( $str_array as $hehe => $low ) + foreach( $str_array as $low ) { $all_words = $this->_explode_trim( ' ', $low, 1 ); $out_array = array_merge($out_array, $all_words); diff --git a/upload/ips_kernel/class_email.php b/upload/ips_kernel/class_email.php index f8349dea..68510852 100644 --- a/upload/ips_kernel/class_email.php +++ b/upload/ips_kernel/class_email.php @@ -2,26 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 | Invision Power Services Kernel [Email Functions] +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| Licence Info: http://www.invisionboard.com/?license -| http://www.ibresource.ru/license +--------------------------------------------------------------------------- -| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE! +| THIS IS NOT FREE / OPEN SOURCE SOFTWARE +--------------------------------------------------------------------------- -| INVISION POWER BOARD НЕ ЯВЛЯЕТСЯ БЕСПЛАТНЫМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ! -| Права на ПО принадлежат Invision Power Services -| Права на перевод IBResource (http://www.ibresource.ru) -+-------------------------------------------------------------------------- | | > Core Module | > Module written by Matt Mecham @@ -146,7 +137,7 @@ class class_email * * @var string */ - var $char_set = 'windows-1251'; + var $char_set = 'iso-8859-1'; /** * SMTP: diff --git a/upload/ips_kernel/class_file_management.php b/upload/ips_kernel/class_file_management.php index b36128ed..1448c3db 100644 --- a/upload/ips_kernel/class_file_management.php +++ b/upload/ips_kernel/class_file_management.php @@ -1,26 +1,17 @@ File Management Functions | > Script written by Matt Mecham @@ -72,6 +63,14 @@ class class_file_management */ var $errors = array(); + /** + * HTTP Status Code/Text + * + * @var array + */ + var $http_status_code = 0; + var $http_status_text = ""; + /**#@+ * Set Authentication * @@ -120,7 +119,7 @@ class class_file_management return FALSE; } - if ( ! stristr( $file_location, 'http://' ) ) + if ( ! stristr( $file_location, 'http://' ) AND ! stristr( $file_location, 'https://' ) ) { //------------------------------- // It's a path! @@ -128,7 +127,7 @@ class class_file_management if ( ! file_exists( $file_location ) ) { - $this->errors[] = "Файл '$file_location' не существует, пожалуйста проверьте настройки ссылки на шаблоны."; + $this->errors[] = "File '$file_location' does not exist, please check the path."; return; } @@ -246,34 +245,38 @@ class class_file_management if ( ! $fp = @fsockopen( $host, $port, $errno, $errstr, $fsocket_timeout ) ) { - $this->errors[] = "CONNECTION REFUSED FROM $host"; + $this->errors[] = "Could not establish a connection with $host"; return FALSE; } else { $final_carriage = ""; + if( ! $this->auth_req ) { $final_carriage = "\r\n"; } + if ( ! fputs( $fp, "GET $path HTTP/1.0\r\nHost:$host\r\nConnection: Keep-Alive\r\n{$final_carriage}" ) ) { $this->errors[] = "Unable to send request to $host!"; return FALSE; } - if( $this->auth_req ) + + if ( $this->auth_req ) { - if( $this->auth_user && $this->auth_pass ) + if ( $this->auth_user && $this->auth_pass ) { $header = "Authorization: Basic ".base64_encode("{$this->auth_user}:{$this->auth_pass}")."\r\n\r\n"; + if ( ! fputs( $fp, $header ) ) { $this->errors[] = "Authorization Failed!"; return FALSE; } } - } + } } @stream_set_timeout($fp, $fsocket_timeout); @@ -292,6 +295,10 @@ class class_file_management // Strip headers //------------------------------- + // HTTP/1.1 ### ABCD + $this->http_status_code = substr( $data, 9, 3 ); + $this->http_status_text = substr( $data, 13, ( strpos( $data, "\r\n" ) - 13 ) ); + $tmp = split("\r\n\r\n", $data, 2); $data = $tmp[1]; @@ -309,7 +316,7 @@ class class_file_management */ function get_contents_with_curl( $file_location ) { - if ( function_exists( 'curl_init' ) ) + if ( function_exists( 'curl_init' ) AND function_exists("curl_exec") ) { $ch = curl_init( $file_location ); @@ -329,6 +336,136 @@ class class_file_management } } + /*-------------------------------------------------------------------------*/ + // dir_copy_dir + // + // Copies to contents of a dir to a new dir, creating + // destination dir if needed. + // + /*-------------------------------------------------------------------------*/ + + function dir_copy_dir($from_path, $to_path, $mode = 0777) + { + $this->errors = ""; + + //----------------------------------------- + // Strip off trailing slashes... + //----------------------------------------- + + $from_path = preg_replace( "#/$#", "", $from_path); + $to_path = preg_replace( "#/$#", "", $to_path); + + if ( ! is_dir( $from_path ) ) + { + $this->errors[] = "Could not locate directory '$from_path'"; + return FALSE; + } + + if ( ! is_dir( $to_path ) ) + { + if ( ! @mkdir( $to_path, $mode ) ) + { + $this->errors[] = "Could not create directory '$to_path' please check the CHMOD permissions and re-try"; + return FALSE; + } + else + { + @chmod( $to_path, $mode ); + } + } + + if ( is_dir( $from_path ) ) + { + $handle = opendir($from_path); + + while ( ($file = readdir($handle)) !== false ) + { + if ( ($file != ".") && ($file != "..") ) + { + if ( is_dir( $from_path."/".$file ) ) + { + $this->dir_copy_dir($from_path."/".$file, $to_path."/".$file); + } + + if ( is_file( $from_path."/".$file ) ) + { + copy($from_path."/".$file, $to_path."/".$file); + @chmod($to_path."/".$file, 0777); + } + } + } + closedir($handle); + } + + if ( ! count( $this->errors ) ) + { + return TRUE; + } + } + + /*-------------------------------------------------------------------------*/ + // dir_rm_dir + // + // Removes directories, if non empty, removes + // content and directories + /*-------------------------------------------------------------------------*/ + + function dir_rm_dir($file) + { + $errors = 0; + + //----------------------------------------- + // Remove trailing slashes.. + //----------------------------------------- + + $file = preg_replace( "#/$#", "", $file ); + + if ( file_exists($file) ) + { + //----------------------------------------- + // Attempt CHMOD + //----------------------------------------- + + @chmod($file, 0777); + + if ( is_dir($file) ) + { + $handle = opendir($file); + + while ( ($filename = readdir($handle)) !== false ) + { + if ( ($filename != ".") && ($filename != "..") ) + { + $this->dir_rm_dir($file."/".$filename); + } + } + + closedir($handle); + + if ( ! @rmdir($file) ) + { + $errors++; + } + } + else + { + if ( ! @unlink($file) ) + { + $errors++; + } + } + } + + if ($errors == 0) + { + return TRUE; + } + else + { + return FALSE; + } + } + } ?> \ No newline at end of file diff --git a/upload/ips_kernel/class_image.php b/upload/ips_kernel/class_image.php index 52eea601..99579271 100644 --- a/upload/ips_kernel/class_image.php +++ b/upload/ips_kernel/class_image.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -280,8 +270,10 @@ class class_image 'cur_height' => $img_size[1] ) ); - $return['thumb_width'] = $im['img_width']; - $return['thumb_height'] = $im['img_height']; + $return['thumb_width'] = $im['img_width']; + $return['thumb_height'] = $im['img_height']; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; //----------------------------------------------- // May as well scale properly. @@ -313,9 +305,11 @@ class class_image { if ( $this->out_type == 'file' ) { - $return['thumb_width'] = $this->desired_width; - $return['thumb_height'] = $this->desired_height; - $return['thumb_location'] = $this->in_file_name; + $return['thumb_width'] = $this->desired_width; + $return['thumb_height'] = $this->desired_height; + $return['thumb_location'] = $this->in_file_name; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; } else { @@ -341,9 +335,11 @@ class class_image { if ( $this->out_type == 'file' ) { - $return['thumb_width'] = $this->desired_width; - $return['thumb_height'] = $this->desired_height; - $return['thumb_location'] = $this->in_file_name; + $return['thumb_width'] = $this->desired_width; + $return['thumb_height'] = $this->desired_height; + $return['thumb_location'] = $this->in_file_name; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; } else { @@ -369,9 +365,11 @@ class class_image { if ( $this->out_type == 'file' ) { - $return['thumb_width'] = $this->desired_width; - $return['thumb_height'] = $this->desired_height; - $return['thumb_location'] = $this->in_file_name; + $return['thumb_width'] = $this->desired_width; + $return['thumb_height'] = $this->desired_height; + $return['thumb_location'] = $this->in_file_name; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; } else { @@ -444,9 +442,11 @@ class class_image // Can't save... //-------------------------------------- - $return['thumb_width'] = $this->desired_width; - $return['thumb_height'] = $this->desired_height; - $return['thumb_location'] = $this->in_file_name; + $return['thumb_width'] = $this->desired_width; + $return['thumb_height'] = $this->desired_height; + $return['thumb_location'] = $this->in_file_name; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; return $return; } @@ -469,9 +469,11 @@ class class_image if ( $this->out_type == 'file' ) { - $return['thumb_width'] = $this->desired_width; - $return['thumb_height'] = $this->desired_height; - $return['thumb_location'] = $this->in_file_name; + $return['thumb_width'] = $this->desired_width; + $return['thumb_height'] = $this->desired_height; + $return['thumb_location'] = $this->in_file_name; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; } else { @@ -493,8 +495,10 @@ class class_image { if ( $this->out_type == 'file' ) { - $return['thumb_width'] = $img_size[0]; - $return['thumb_height'] = $img_size[1]; + $return['thumb_width'] = $img_size[0]; + $return['thumb_height'] = $img_size[1]; + $return['original_width'] = $img_size[0]; + $return['original_height'] = $img_size[1]; return $return; } diff --git a/upload/ips_kernel/class_rss.php b/upload/ips_kernel/class_rss.php index 132f497d..869d15b6 100644 --- a/upload/ips_kernel/class_rss.php +++ b/upload/ips_kernel/class_rss.php @@ -1,25 +1,16 @@ RSS FUNCTIONS (Simple, light parser) @@ -131,6 +122,7 @@ class class_rss * @ var string */ var $doc_type = 'UTF-8'; + var $orig_doc_type = ""; /** * Error capture @@ -247,6 +239,8 @@ class class_rss */ var $convert_charset = 0; + var $collapse_newlines = 0; + /** * Destination charset * @@ -305,7 +299,7 @@ class class_rss { if ( ! count( $this->channels ) ) { - $this->errors[] = "Каналы не определены"; + $this->errors[] = "No channels defined"; } $this->rss_document = 'doc_type.'" ?'.'>'."\n"; @@ -347,9 +341,9 @@ class class_rss // Got image? //------------------------------- - if ( is_array( $this->channel_images[ $idx ] ) and count( $this->channel_images[ $idx ] ) ) + if ( isset($this->channel_images[ $idx ]) AND is_array( $this->channel_images[ $idx ] ) AND count( $this->channel_images[ $idx ] ) ) { - foreach( $this->channel_images[ $idx ] as $i => $image ) + foreach( $this->channel_images[ $idx ] as $image ) { $tmp_data .= "\t\n"; @@ -368,7 +362,7 @@ class class_rss if ( is_array( $this->items[ $idx ] ) and count( $this->items[ $idx ] ) ) { - foreach( $this->items[ $idx ] as $i => $item ) + foreach( $this->items[ $idx ] as $item ) { $tmp_data .= "\t\n"; @@ -601,32 +595,33 @@ class class_rss if ( count( $this->class_file_management->errors ) ) { $this->errors = $this->class_file_management->errors; - xml_parser_free($xml_parser); // Let's kill the parser before we return + @xml_parser_free($xml_parser); // Let's kill the parser before we return return FALSE; } + if( preg_match( "#encoding=[\"'](\S+?)[\"']#si", $data, $matches ) ) + { + $this->orig_doc_type = $matches[1]; + } + + if( preg_match( "#charset=(\S+?)#si", $data, $matches ) ) + { + $this->orig_doc_type = $matches[1]; + } + //----------------------------------------- // Charset conversion? //----------------------------------------- if ( $this->convert_charset AND $data ) { - if ( $this->feed_charset != $this->destination_charset ) + if ( $this->feed_charset != $this->doc_type ) { - if ( ! is_object( $this->class_convert_charset ) ) - { - require_once( IPS_CLASSES_PATH.'/class_convert_charset.php' ); - $this->class_convert_charset = new class_convert_charset(); - } - - $data = $this->class_convert_charset->convert_charset( $data, $this->feed_charset, $this->destination_charset ); + $data = $this->ipsclass->txt_convert_charsets( $data, $this->feed_charset ); # Replace any char-set= data - $data = preg_replace( "#encoding=[\"'](\S+?)[\"']#si", "encoding=\"".$this->destination_charset."\"", $data ); - $data = preg_replace( "#charset=(\S+?)#si" , "charset=".$this->destination_charset , $data ); - - # Reset doc type - $this->doc_type = $this->destination_charset; + $data = preg_replace( "#encoding=[\"'](\S+?)[\"']#si", "encoding=\"".$this->doc_type."\"", $data ); + $data = preg_replace( "#charset=(\S+?)#si" , "charset=".$this->doc_type , $data ); } } @@ -634,6 +629,9 @@ class class_rss // Generate XML parser //------------------------------- + $supported_encodings = array( "utf-8", "iso-8859-1", "us-ascii" ); + $this->doc_type = in_array( strtolower($this->doc_type), $supported_encodings ) ? $this->doc_type : "utf-8"; + $xml_parser = xml_parser_create( $this->doc_type ); xml_set_element_handler( $xml_parser, array( &$this, "parse_startElement" ), array( &$this, "parse_endElement") ); xml_set_character_data_handler($xml_parser, array( &$this, "parse_characterData" ) ); @@ -644,14 +642,14 @@ class class_rss if ( ! xml_parse( $xml_parser, $data ) ) { - $this->errors[] = sprintf("XML ошибка: %s в строке %d", xml_error_string( xml_get_error_code($xml_parser) ), xml_get_current_line_number($xml_parser) ); + $this->errors[] = sprintf("XML error: %s at line %d", xml_error_string( xml_get_error_code($xml_parser) ), xml_get_current_line_number($xml_parser) ); } //------------------------------- // Free memory used by XML parser //------------------------------- - xml_parser_free($xml_parser); + @xml_parser_free($xml_parser); } /*-------------------------------------------------------------------------*/ @@ -706,7 +704,7 @@ class class_rss if ( ! xml_parse( $xml_parser, $data, TRUE ) ) { - $this->errors[] = sprintf("XML ошибка: %s строка %d", xml_error_string( xml_get_error_code($xml_parser) ), xml_get_current_line_number($xml_parser) ); + $this->errors[] = sprintf("XML error: %s at line %d", xml_error_string( xml_get_error_code($xml_parser) ), xml_get_current_line_number($xml_parser) ); } //------------------------------- @@ -752,18 +750,18 @@ class class_rss if ( $this->in_channel ) { $this->in_channel++; - $this->tag = $this->rss_tag_names[ $name ]; + $this->tag = isset($this->rss_tag_names[ $name ]) ? $this->rss_tag_names[ $name ] : ''; } - if ( $this->rss_tag_names[ $name ] == "ITEM" ) + if ( isset($this->rss_tag_names[ $name ]) AND $this->rss_tag_names[ $name ] == "ITEM" ) { $this->in_item = 1; } - else if ( $this->rss_tag_names[ $name ] == "IMAGE") + else if ( isset($this->rss_tag_names[ $name ]) AND $this->rss_tag_names[ $name ] == "IMAGE") { $this->in_image = 1; } - else if ( $this->rss_tag_names[ $name ] == "CHANNEL") + else if ( isset($this->rss_tag_names[ $name ]) AND $this->rss_tag_names[ $name ] == "CHANNEL") { $this->in_channel = 1; } @@ -789,7 +787,7 @@ class class_rss $name = strtoupper($name); - if ( $this->rss_tag_names[ $name ] == "IMAGE" ) + if ( isset($this->rss_tag_names[ $name ]) AND $this->rss_tag_names[ $name ] == "IMAGE" ) { $this->rss_images[ $this->cur_channel ]['url'] = $this->rss_img_image; $this->rss_images[ $this->cur_channel ]['title'] = $this->rss_img_title; @@ -801,7 +799,7 @@ class class_rss $this->_kill_image_elements(); $this->in_image = 0; } - else if ( $this->rss_tag_names[ $name ] == "CHANNEL" ) + else if ( isset($this->rss_tag_names[ $name ]) AND $this->rss_tag_names[ $name ] == "CHANNEL" ) { //------------------------------- // Add data @@ -827,7 +825,7 @@ class class_rss $this->_kill_channel_elements(); $this->in_channel = 0; } - else if ( $this->rss_tag_names[ $name ] == "ITEM" ) + else if ( isset($this->rss_tag_names[ $name ]) AND $this->rss_tag_names[ $name ] == "ITEM" ) { if ( $this->rss_count < $this->rss_max_show ) { diff --git a/upload/ips_kernel/class_template.php b/upload/ips_kernel/class_template.php index dfe22657..55973344 100644 --- a/upload/ips_kernel/class_template.php +++ b/upload/ips_kernel/class_template.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -46,7 +36,7 @@ * * Example Usage: * -* +* * html here * * diff --git a/upload/ips_kernel/class_template_engine.php b/upload/ips_kernel/class_template_engine.php index 25d57d37..177540c5 100644 --- a/upload/ips_kernel/class_template_engine.php +++ b/upload/ips_kernel/class_template_engine.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -89,6 +79,11 @@ class class_template */ var $foreach_blocks = array(); + /** + * Allow PHP code to execute + */ + var $allow_php_code = 1; + function class_template() { @@ -109,6 +104,12 @@ class class_template */ function convert_cache_to_eval($data='', $full_class_name='') { + //----------------------------------------- + // INIT + //----------------------------------------- + + $final_content = ''; + //----------------------------------------- // Remove PHP tags //----------------------------------------- @@ -219,19 +220,30 @@ class class_template if ( $compile ) { - $_func_code = '"' . $this->compile_html_to_php( $func_html, $func_data ) . '"'; + $_func_code = '"' . $this->compile_html_to_php( trim( $func_html ), $func_data ) . '"'; } else { $_func_code = "<<unconvert_tags( $func_html ) . "\nEOF"; } + //----------------------------------------- + // Make safe.. clear up any potential escapes + //----------------------------------------- + + $_func_code = preg_replace( "#\\\{1,}\"#s", '\\"', $_func_code ); + + //----------------------------------------- + // Continue... + //----------------------------------------- + $top = "//===========================================================================\n". "// \n". "//===========================================================================\n"; $start = "function {$func_name}($func_data) {\n\$IPBHTML = \"\";\n//--starthtml--//\n"; $middle = '$IPBHTML .= '.$_func_code.';'; + $end = "\n//--endhtml--//\nreturn \$IPBHTML;\n}\n"; //------------------------------- @@ -250,13 +262,31 @@ class class_template { $end = preg_replace( "#]+?)xx>(.+?)#si", "\".\\2.\"", $end ); } + + //----------------------------------------- + // Remove raw PHP tags + //----------------------------------------- + + $end = preg_replace( "#(.+?)#si", "", $end ); } + //----------------------------------------- + // Sort out the rest of the PHP tags + //----------------------------------------- + + $php_tags = $this->_process_raw_php_tags( $_func_code ); + + //----------------------------------------- + // Remove raw PHP tags + //----------------------------------------- + + $middle = preg_replace( "#(.+?)#si", "", $middle ); + //------------------------------- // Return //------------------------------- - return $top.$start.$middle.$end; + return $top.$start.$php_tags.$middle.$end; } /*-------------------------------------------------------------------------*/ @@ -341,7 +371,7 @@ class class_template { $text = str_replace('\\\\$', '\\$', $text); } - + return $text; } @@ -596,6 +626,8 @@ class class_template $function_name = '__foreach_loop__'. uniqid( 'id_' ); $php_statement = '$this->'.$function_name.'('.$clean_func_data.')'; $php_block = $this->_process_raw_html_logic( addslashes($block) ); + $php_tags = $this->_process_raw_php_tags( $block ); + $this->foreach_blocks[] = <<allow_php_code ) + { + return ''; + } + + //----------------------------------------- + // EXTRACT! + //----------------------------------------- + + preg_match_all( "#(.+?)#si", $text, $match ); + + for ( $i = 0; $i < count($match[0]); $i++ ) + { + $php_code = trim( $match[1][$i] ); + $complete_tag = $match[0][$i]; + + $str_find = array('\\"', '\\\\'); + $str_replace = array('"' , '\\' ); + + $str_find[] = "\\'"; + $str_replace[] = "'"; + + $php_code = str_replace($str_find, $str_replace, $php_code); + + $php .= "\n".$php_code."\n"; + } + + return $php; + } + /*-------------------------------------------------------------------------*/ // Convert HTML logic to cached PHP (work function) /*-------------------------------------------------------------------------*/ @@ -653,6 +733,12 @@ EOF; while ( 1 == 1 ) { + //----------------------------------------- + // Update template length + //----------------------------------------- + + $total_length = strlen( $template ); + $_end = 0; //---------------------------------------- @@ -936,9 +1022,9 @@ EOF; $t = preg_replace( "/\{ips\.vars\[(['\"])?(sql_driver|sql_host|sql_database|sql_pass|sql_user|sql_port|sql_tbl_prefix|smtp_host|smtp_port|smtp_user|smtp_pass|html_dir|base_dir|upload_dir)(['\"])?\]\}/", "" , $t ); # IPB 2.1+ Kernel - $t = preg_replace( "/{ips\.script_url}/i" , '{$this->ipsclass->base_url}' , $t); - $t = preg_replace( "/{ips\.session_id}/i" , '{$this->ipsclass->session_id}', $t); - $t = preg_replace( "#ips\.(member|vars|skin|lang|input)#i", '$this->ipsclass->\\1' , $t ); + $t = preg_replace( "/{ip(s|b|d)\.script_url}/i" , '{$this->ipsclass->base_url}' , $t); + $t = preg_replace( "/{ip(s|b|d)\.session_id}/i" , '{$this->ipsclass->session_id}', $t); + $t = preg_replace( "#ip(?:s|b|d)\.(member|vars|skin|lang|input)#i", '$this->ipsclass->\\1' , $t ); return $t; } diff --git a/upload/ips_kernel/class_upload.php b/upload/ips_kernel/class_upload.php index a3fa0162..ab55d011 100644 --- a/upload/ips_kernel/class_upload.php +++ b/upload/ips_kernel/class_upload.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -255,9 +245,9 @@ class class_upload // Set up some variables to stop carpals developing //------------------------------------------------- - $FILE_NAME = $_FILES[ $this->upload_form_field ]['name']; - $FILE_SIZE = $_FILES[ $this->upload_form_field ]['size']; - $FILE_TYPE = $_FILES[ $this->upload_form_field ]['type']; + $FILE_NAME = isset($_FILES[ $this->upload_form_field ]['name']) ? $_FILES[ $this->upload_form_field ]['name'] : ''; + $FILE_SIZE = isset($_FILES[ $this->upload_form_field ]['size']) ? $_FILES[ $this->upload_form_field ]['size'] : ''; + $FILE_TYPE = isset($_FILES[ $this->upload_form_field ]['type']) ? $_FILES[ $this->upload_form_field ]['type'] : ''; //------------------------------------------------- // Naughty Opera adds the filename on the end of the @@ -271,7 +261,8 @@ class class_upload // I love universal languages that aren't universal. //------------------------------------------------- - if ($_FILES[ $this->upload_form_field ]['name'] == "" + if ( !isset($_FILES[ $this->upload_form_field ]['name']) + or $_FILES[ $this->upload_form_field ]['name'] == "" or !$_FILES[ $this->upload_form_field ]['name'] or !$_FILES[ $this->upload_form_field ]['size'] or ($_FILES[ $this->upload_form_field ]['name'] == "none") ) @@ -343,7 +334,7 @@ class class_upload } else { - $this->parsed_file_name = preg_replace( '#\.'.$this->file_extension."#is", "", $FILE_NAME ); + $this->parsed_file_name = str_replace( '.'.$this->file_extension, "", $FILE_NAME ); } //------------------------------------------------- diff --git a/upload/ips_kernel/class_xml.php b/upload/ips_kernel/class_xml.php index eaa6b889..51dec1fc 100644 --- a/upload/ips_kernel/class_xml.php +++ b/upload/ips_kernel/class_xml.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -200,14 +190,14 @@ class class_xml * * @var integer */ - var $lite_parser = 1; + var $lite_parser = 0; /** * DOC type * * @ var string */ - var $doc_type = 'WINDOWS-1251'; + var $doc_type = 'ISO-8859-1'; /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -215,6 +205,8 @@ class class_xml function class_xml() { + ini_set("memory_limit", "32M"); + //$this->header = 'doc_type.'"?'.'>'; } @@ -255,7 +247,14 @@ class class_xml //----------------------------------------- else { - $parser = xml_parser_create(); + if ( $this->use_doctype && in_array( strtolower($this->doc_type), array( 'us-ascii', 'utf-8', 'iso-8859-1' ) ) ) + { + $parser = xml_parser_create( $this->doc_type ); + } + else + { + $parser = xml_parser_create(); + } xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE , 0); diff --git a/upload/ips_kernel/class_xml.rev354.php b/upload/ips_kernel/class_xml.rev354.php new file mode 100644 index 00000000..8ee35025 --- /dev/null +++ b/upload/ips_kernel/class_xml.rev354.php @@ -0,0 +1,1372 @@ + $Date: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ +| > $Revision: 22 $ +| > $Author: matt $ ++--------------------------------------------------------------------------- +| +| > XML handling methods (KERNEL) +| > Module written by Matt Mecham +| > Date started: 25th February +| +| > Module Version Number: 1.0.0 ++-------------------------------------------------------------------------- +*/ + +/** +* IPS Kernel Pages: XML Creation and Extraction Functions +* +* This class contains all generic functions to handle +* the creation of XML documents and the parsing of XML documents +* +* Example Usage: +* +* +* +* +* This is a descrption +* Baked Beans +* 103 +* +* +* +* +* // Set the root tag +* $xml->xml_set_root( 'productlist', array( 'name' => 'myname', 'version' => '1.0' ) ); +* +* // Add a group +* $xml->xml_add_group( 'productgroup', array( 'name' => 'thisgroup' ) ); +* +* // Build entry content +* $content[] = $xml->xml_build_simple_tag( 'description', "This is a descrption" ); +* $content[] = $xml->xml_build_simple_tag( 'title' , "Baked Beans" ); +* $content[] = $xml->xml_build_simple_tag( 'room' , '103' , array( 'store' => 1 ) ); +* +* // Build entry +* $entry[] = $xml->xml_build_entry( 'product', $content, array( 'id' => '1.0' ) ); +* +* // Add to group 'productlist' +* $xml->xml_add_entry_to_group( 'productgroup', $entry ); +* +* // Format.. +* $xml->xml_format_document(); +* +* // Get XML document +* $filecontents = $xml->xml_document; +* +* // Parse XML document +* $xml->xml_parse_document( $filecontents ); +* +* // Show XML array +* print_r( $xml->xml_array ); +* +* // print "Baked Beans"; +* print $xml->xml_array['productlist']['productgroup']['product'][0]['title']['VALUE']; +* +* // print "1"; +* print $xml->xml_array['productlist']['productgroup']['product'][0]['room']['ATTRIBUTES']['store']; +* +* +* @package IPS_KERNEL +* @subpackage XMLHandling +* @author Matt Mecham +* @copyright Invision Power Services, Inc. +* @version 2.1 +*/ + +/** +* +*/ + +/** +* XML Creation and Extraction Functions +* +* Methods and functions for handling XML documents +* +* @package IPS_KERNEL +* @subpackage XMLHandling +* @author Matt Mecham +* @version 2.1 +*/ +class class_xml +{ + /** + * XML header + * + * @var string + */ + var $header = ""; + + /** + * Root tag name + * + * @var string + */ + var $root_tag = ''; + + /** + * Root attributes + * + * @var string + */ + var $root_attributes = ""; + + /** + * Array of entries + * + * @var array + */ + var $entries = array(); + + /** + * String of compiled XML document + * + * @var string + */ + var $xml_document = ""; + + /** + * Work variable + * + * @var integer + */ + var $depth = 0; + + /** + * Tmp doc, used during creation + * + * @var string + */ + var $tmp_doc = ""; + + /** + * Tag groups + * + * @var string + */ + var $groups = ""; + + /** + * Index numerically flag + * + * @var integer + */ + var $index_numeric = 0; + + /** + * Collapse duplicate tags flag + * + * @var integer + */ + var $collapse_dups = 1; + + /** + * Main XML array of parsed components + * + * @var array + */ + var $xml_array = array(); + + /** + * Collapse newlines in CDATA tags + * + * @var integer + */ + var $collapse_newlines = 1; + + /** + * Use lite parser flag + * + * @var integer + */ + var $lite_parser = 0; + + /** + * DOC type + * + * @ var string + */ + var $doc_type = 'ISO-8859-1'; + + /** + * Specify DOC Type when retrieving XML data? + * + * @ var integer + */ + var $use_doctype = 0; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function class_xml() + { + ini_set("memory_limit", "32M"); + + //$this->header = 'doc_type.'"?'.'>'; + } + + /*-------------------------------------------------------------------------*/ + // Parse an XML document into arrays + /*-------------------------------------------------------------------------*/ + + /** + * Parse an XML document into an array of field and values + * + * @param string Raw XML Data + * @return void + */ + function xml_parse_document( $xml ) + { + $i = -1; + + //----------------------------------------- + // Use "lite" parser + //----------------------------------------- + + if ( $this->lite_parser ) + { + $lite = new xml_lite_parse(); + + $lite->xml_parse_it( $xml ); + + $this->xml_array = $this->_xml_get_children( $lite->stack, $i ); + + //----------------------------------------- + // Free willy..er..memory + //----------------------------------------- + + $lite->garbage_collect(); + } + //----------------------------------------- + // Use PHP EXPAT Parser? + //----------------------------------------- + else + { + if( $this->use_doctype && in_array( strtolower($this->doc_type), array( 'us-ascii', 'utf-8', 'iso-8859-1' ) ) ) + { + $parser = xml_parser_create( $this->doc_type ); + } + else + { + $parser = xml_parser_create(); + } + + xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); + xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE , 0); + xml_parse_into_struct($parser, $xml, $vals); + xml_parser_free($parser); + + $this->xml_array = $this->_xml_get_children($vals, $i); + } + + //----------------------------------------- + // Garbage collect + //----------------------------------------- + + unset( $vals ); + unset( $xml ); + } + + /*-------------------------------------------------------------------------*/ + // Format the XML document + /*-------------------------------------------------------------------------*/ + + /** + * Parse an array into an XML document + * + * @param array Entry array + * @return void + */ + function xml_format_document( $entry=array() ) + { + $this->header = 'doc_type.'"?'.'>'; + + $this->xml_document = $this->header ? $this->header."\n" : ''; + + $this->xml_document .= "<".$this->root_tag.$this->root_attributes.">\n"; + + $this->xml_document .= $this->tmp_doc; + + $this->xml_document .= "\nroot_tag.">"; + + $this->tmp_doc = ""; + } + + /*-------------------------------------------------------------------------*/ + // Set the root tags + /*-------------------------------------------------------------------------*/ + + /** + * Set the root tag + * + * @param string Root tag name + * @param array Root tag attributes + * @return void + */ + function xml_set_root($tag, $attributes=array() ) + { + $this->root_tag = $tag; + $this->root_attributes = $this->_xml_build_attribute_string( $attributes ); + } + + /*-------------------------------------------------------------------------*/ + // Add entries to the group + /*-------------------------------------------------------------------------*/ + + /** + * Add entry to XML group + * + * @param string Tag name + * @param array Entry values + * @return void + */ + + function xml_add_entry_to_group($tag, $entry=array() ) + { + $this->tmp_doc .= "\t".$this->groups[ $tag ]; + + if ( is_array( $entry ) and count( $entry ) ) + { + foreach( $entry as $e ) + { + $this->tmp_doc .= "\n\t\t".$e."\n"; + } + } + + $this->tmp_doc .= "\t\n"; + } + + /*-------------------------------------------------------------------------*/ + // Builds an entry + /*-------------------------------------------------------------------------*/ + + /** + * Build an XML entry + * + * @param string Tag name + * @param array Content array + * @param array Attributes + * @return string + */ + + function xml_build_entry( $tag, $content=array(), $attributes=array() ) + { + $entry = "<" . $tag . $this->_xml_build_attribute_string($attributes) . ">\n"; + + if ( is_array( $content ) and count( $content ) ) + { + foreach( $content as $c ) + { + $entry .= "\t\t\t".$c."\n"; + } + } + + $entry .= "\t\t"; + + return $entry; + } + + /*-------------------------------------------------------------------------*/ + // Add a group + /*-------------------------------------------------------------------------*/ + + /** + * Add a group to an XML document + * + * @param string Tag name + * @param array Attributes + * @return string + */ + function xml_add_group( $tag, $attributes=array() ) + { + $this->groups[ $tag ] = "<" . $tag . $this->_xml_build_attribute_string($attributes) . ">"; + } + + /*-------------------------------------------------------------------------*/ + // Builds a simple content structure + /*-------------------------------------------------------------------------*/ + + /** + * Build and XML simple tag + * + * @param string Tag name + * @param string Tag value + * @param array Attributes + * @return string + */ + function xml_build_simple_tag( $tag, $description="", $attributes=array() ) + { + return "<" . $tag . $this->_xml_build_attribute_string($attributes) . ">" . $this->_xml_encode_string($description) . ""; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Build tree node + // Adapted from http://eric.pollmann.net/work/public_domain/ + /*-------------------------------------------------------------------------*/ + + /** + * Build tree node + * + * @param array Values + * @param array Values + * @param string Counter + * @param string Tag type + * @return array + */ + function _xml_build_tag( $thisvals, $vals, &$i, $type ) + { + $tag = array(); + + if ( isset($thisvals['attributes']) ) + { + $tag['ATTRIBUTES'] = $this->_xml_decode_attribute($thisvals['attributes']); + } + + if ( $type === 'complete' ) + { + $tag['VALUE'] = $this->_xml_unconvert_safecdata($thisvals['value']); + } + else + { + $tag = array_merge( $tag, $this->_xml_get_children($vals, $i) ); + } + + return $tag; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Build a nested array of children + // Adapted from http://eric.pollmann.net/work/public_domain/ + /*-------------------------------------------------------------------------*/ + + /** + * Build a nested array of children + * + * @param array Values + * @param string Counter + * @return array + */ + + function _xml_get_children($vals, &$i) + { + $children = array(); + + //----------------------------------- + // CDATA before children + //----------------------------------- + + if ( $i > -1 && isset( $vals[$i]['value'] ) ) + { + $children['VALUE'] = $this->_xml_unconvert_safecdata( $vals[$i]['value'] ); + } + + //----------------------------------- + // Loopy loo + //----------------------------------- + + while( ++$i < count( $vals ) ) + { + $type = $vals[$i]['type']; + + //----------------------------------- + // CDATA after children + //----------------------------------- + + if ($type === 'cdata') + { + $children['VALUE'] .= $this->_xml_unconvert_safecdata( $vals[$i]['value'] ); + } + + //----------------------------------- + // COMPLETE: At end of current branch + // OPEN: Node has children, recurse + //----------------------------------- + + else if ( $type === 'complete' OR $type === 'open' ) + { + $tag = $this->_xml_build_tag( $vals[$i], $vals, $i, $type ); + + if ( $this->index_numeric ) + { + $tag['TAG'] = $vals[$i]['tag']; + $children[] = $tag; + } + else + { + $children[$vals[$i]['tag']][] = $tag; + } + } + + //----------------------------------- + // End of node? + //----------------------------------- + + else if ($type === 'close') + { + break; + } + } + + if ( $this->collapse_dups ) + { + foreach( $children as $key => $value ) + { + if ( is_array($value) && (count($value) == 1) ) + { + $children[$key] = $value[0]; + } + } + } + + return $children; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Builds attribute string + /*-------------------------------------------------------------------------*/ + + /** + * Builds attribute string + * + * @param array Values + * @return string + */ + + function _xml_build_attribute_string( $array = array() ) + { + if ( is_array( $array ) and count( $array ) ) + { + $string = array(); + + foreach( $array as $k => $v ) + { + $v = trim( $this->_xml_encode_attribute($v) ); + + $string[] = $k.'="'.$v.'"'; + } + + return ' ' . implode( " ", $string ); + } + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Encodes an attribute string + /*-------------------------------------------------------------------------*/ + + /** + * Encode XML attribute (Make safe for transport) + * + * @param string Raw data + * @return string Converted Data + */ + function _xml_encode_attribute( $t ) + { + $t = preg_replace("/&(?!#[0-9]+;)/s", '&', $t ); + $t = str_replace( "<", "<" , $t ); + $t = str_replace( ">", ">" , $t ); + $t = str_replace( '"', """, $t ); + $t = str_replace( "'", ''', $t ); + + return $t; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Encodes an attribute string + /*-------------------------------------------------------------------------*/ + + /** + * Decode XML attribute (Make safe for transport) + * + * @param string Raw data + * @return string Converted Data + */ + function _xml_decode_attribute( $t ) + { + $t = str_replace( "&" , "&", $t ); + $t = str_replace( "<" , "<", $t ); + $t = str_replace( ">" , ">", $t ); + $t = str_replace( """, '"', $t ); + $t = str_replace( "'", "'", $t ); + + return $t; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Encodes a string to make it safe (uses cdata) + /*-------------------------------------------------------------------------*/ + + /** + * Encode XML attribute (Make safe for transport) + * + * @param string Raw data + * @return string Converted Data + */ + + function _xml_encode_string( $v ) + { + if ( preg_match( "/['\"\[\]<>&]/", $v ) ) + { + $v = "_xml_convert_safecdata($v) . "]]>"; + } + + if ( $this->collapse_newlines ) + { + $v = str_replace( "\r\n", "\n", $v ); + } + + return $v; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Ensures no embedding of cdata + /*-------------------------------------------------------------------------*/ + + /** + * Encode CDATA XML attribute (Make safe for transport) + * + * @param string Raw data + * @return string Converted Data + */ + + function _xml_convert_safecdata( $v ) + { + # Legacy + //$v = str_replace( "" , "|ў]>" , $v ); + + # New + $v = str_replace( "" , "|#^#]>" , $v ); + + return $v; + } + + /*-------------------------------------------------------------------------*/ + // INTERNAL: Uncoverts safe embedding + /*-------------------------------------------------------------------------*/ + + /** + * Decode CDATA XML attribute (Make safe for transport) + * + * @param string Raw data + * @return string Converted Data + */ + + function _xml_unconvert_safecdata( $v ) + { + # Legacy + $v = str_replace( "" , "]]>" , $v ); + + # New + $v = str_replace( "" , "]]>" , $v ); + + return $v; + } + +} + + +//====================================================================================== +// CLASS: XML_LITE_PARSE (Takes parsed XML and puts into EXPAT compatible array +//====================================================================================== + +/** +* XML-LITE Extraction +* +* Methods and functions for handling XML documents +* +* @package IPS_KERNEL +* @subpackage XMLHandling +* @author Matt Mecham +* @version 2.1 +*/ +class xml_lite_parse +{ + var $xml_class; + var $parser; + var $preserve_cdata = 1; + var $stack = array(); + var $level = 1; + var $tagname = ""; + var $array_id = 0; + var $last_id = 0; + var $tagopen = array(); + var $xmldoc = ""; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function xml_lite_parse() + { + + } + + /*-------------------------------------------------------------------------*/ + // Main parser + /*-------------------------------------------------------------------------*/ + + function xml_parse_it( $xmldoc ) + { + $parser = new xml_extract(); + + $this->xmldoc = $xmldoc; + + unset( $xmldoc ); + + //----------------------------------------- + // Set up element handlers + //----------------------------------------- + + $parser->my_xml_set_element_handler( array($this, 'my_start_element'), array($this, 'my_end_element') ); + $parser->my_xml_set_character_data_handler(array($this, 'my_data_element')); + + if ( $this->preserve_cdata ) + { + $parser->my_xml_set_cdata_section_handler( array($this, 'my_cdata_element') ); + } + + $parser->xml_parse_document( $this->xmldoc ); + } + + /*-------------------------------------------------------------------------*/ + // Start element + /*-------------------------------------------------------------------------*/ + + function my_start_element( &$parser_obj, $name, $attr ) + { + //------------------------------- + // Add to stack + //------------------------------- + + $this->stack[ $this->array_id ] = array( 'tag' => $name, + 'type' => 'open', + 'level' => $this->level, + 'value' => '', + ); + + //------------------------------- + // Attributes? + //------------------------------- + + if ( is_array( $attr ) and count( $attr ) ) + { + $this->stack[ $this->array_id ]['attributes'] = $attr; + } + + //------------------------------- + // Flying higher than an eagle? + //------------------------------- + + if ( $this->tagname != $name ) + { + if ( $this->tagopen[ $name ] ) + { + $this->level = $this->tagopen[ $name ]; + } + else + { + $this->level++; + } + } + + //------------------------------- + // Set current tag name + //------------------------------- + + $this->tagname = $name; + + //------------------------------- + // Inc. array ID + //------------------------------- + + $this->array_id++; + + //------------------------------- + // Set tag == depth + //------------------------------- + + $this->tagopen[ $name ] = $this->level; + } + + /*-------------------------------------------------------------------------*/ + // Start element + /*-------------------------------------------------------------------------*/ + + function my_end_element( &$parser_obj, $name ) + { + $this->stack[ $this->array_id ] = array( 'tag' => $name, + 'type' => 'close', + 'level' => $this->tagopen[ $name ] - 1, + ); + + //------------------------------- + // Update already done data? + //------------------------------- + + if ( ( $this->stack[ $this->array_id - 2 ]['tag'] == $this->tagname ) + AND + ( $this->stack[ $this->array_id - 1 ]['_data'] == 1 ) + ) + { + //------------------------------- + // Update previous tag + //------------------------------- + + $this->stack[ $this->array_id - 2 ]['value'] = class_xml::_xml_unconvert_safecdata( $this->stack[ $this->array_id - 1 ]['value'] ); + $this->stack[ $this->array_id - 2 ]['type'] = 'complete'; + + unset( $this->stack[ $this->array_id - 1 ] ); + unset( $this->stack[ $this->array_id ] ); + + $this->array_id -= 2; + $this->last_id = $this->array_id - 1; + } + + $this->tagname = ""; + + $this->array_id++; + $this->level--; + } + + /*-------------------------------------------------------------------------*/ + // DATA element + /*-------------------------------------------------------------------------*/ + + function my_data_element( &$parser_obj, $data ) + { + if ( $this->tagname ) + { + $this->stack[ $this->array_id ] = array( 'tag' => $this->tagname, + 'type' => 'open', + 'level' => $this->level, + 'value' => class_xml::_xml_unconvert_safecdata($data), + '_data' => 1 + ); + } + + //------------------------------- + // Inc. array ID + //------------------------------- + + $this->array_id++; + } + + /*-------------------------------------------------------------------------*/ + // CDATA element + /*-------------------------------------------------------------------------*/ + + function my_cdata_element( &$parser_obj, $data ) + { + $this->my_data_element( $parser_obj, $data ); + } + + /*-------------------------------------------------------------------------*/ + // Free memory + /*-------------------------------------------------------------------------*/ + + function garbage_collect() + { + $this->stack = array(); + $this->tagname = array(); + $this->array_id = 0; + $this->level = 0; + $this->xmldoc = ""; + } + +} + +//====================================================================================== +// CLASS: XML_EXTRACT (Parses XML file) +//====================================================================================== + +/** +* XML-LITE Extraction Sub class +* +* Methods and functions for handling XML documents +* +* @package IPS_KERNEL +* @subpackage XMLHandling +* @author Matt Mecham +* @version 2.1 +*/ +class xml_extract +{ + var $xml_array = array(); + var $chr_sofar = ""; + var $handler_cdata_handler; + var $handler_character_data; + var $handler_end_element; + var $handler_start_element; + + //----------------------------------------- + // Definitions + //----------------------------------------- + + var $xml_constants = array( + 'CDATA_TAG' => '![CDATA[', + 'CDATA_LEN' => 8, + 'NOTATION' => '!NOTATION', + 'DOCTYPE' => '!DOCTYPE' + ); + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function xml_extract() + { + + } + + /*-------------------------------------------------------------------------*/ + // MAIN "PARSE" ROUTINE (Roughly mime EXPAT in PHP) + /*-------------------------------------------------------------------------*/ + + function xml_parse_document( $xml ) + { + //----------------------------------------- + // Grab all relevant XML data + // Strip off header, DOC TYPE, etc + //----------------------------------------- + + $xml = preg_replace( "#^(?:.+?)?(<.*>)(?:.+?)?$#s", "\\1", $xml ); + + $xml_strlen = strlen( $xml ); + + //----------------------------------------- + // Pick through, char by char + //----------------------------------------- + + for( $i = 0 ; $i < $xml_strlen; $i++ ) + { + $chr = $xml{$i}; + + switch( $chr ) + { + case '<': + if ( substr( $this->chr_sofar, 0, $this->xml_constants['CDATA_LEN'] ) == $this->xml_constants['CDATA_TAG'] ) + { + //----------------------------------------- + // Processing CDATA + //----------------------------------------- + + $this->chr_sofar .= $chr; + } + else + { + $this->parse_between_tags( $this->chr_sofar ); + $this->chr_sofar = ''; + } + break; + case '>': + if ( + ( substr( $this->chr_sofar, 0, $this->xml_constants['CDATA_LEN'] ) == $this->xml_constants['CDATA_TAG'] ) + AND + ! ( + ( $this->_get_nth_char_from_end( $this->chr_sofar, 0 ) == ']' ) + AND + ( $this->_get_nth_char_from_end( $this->chr_sofar, 1 ) == ']' ) + ) + ) + { + $this->chr_sofar .= $chr; + } + else + { + if( $xml{ strlen($this->chr_sofar +1) } == ']' ) + { + $this->chr_sofar .= $chr; + } + else + { + $this->parse_tag( $this->chr_sofar ); + $this->chr_sofar = ''; + } + } + break; + default: + $this->chr_sofar .= $chr; + } + } + + unset($xml); + } + + /*-------------------------------------------------------------------------*/ + // Parse tag + /*-------------------------------------------------------------------------*/ + + function parse_tag( $text ) + { + $attr = array(); + $text = trim($text); + $fchr = $text{0}; + + switch ($fchr) + { + //----------------------------------------- + // First char is closing tag? + //----------------------------------------- + case '/': + + $tag_name = substr($text, 1); + $this->exec_end_element($tag_name); + break; + //----------------------------------------- + // First char is instruction/doctype? + //----------------------------------------- + case '!': + + $uc_tag_text = strtoupper($text); + + if ( strpos($uc_tag_text, $this->xml_constants['CDATA_TAG']) !== false ) + { + //----------------------------------------- + // CDATA text + //----------------------------------------- + + $total = strlen($text); + $openbrace_cnt = 0; + $tn_text = ''; + + for ( $i = 0; $i < $total; $i++ ) + { + $cc = $text{$i}; + + //----------------------------------------- + // End of CDATA? + //----------------------------------------- + + if ( ($cc == ']') && ( $text{($i + 1)} == ']' ) ) + { + if( ! $text{($i + 2)} == ']' ) + { + break; + } + else + { + $tn_text .= $cc; + } + } + else if ($openbrace_cnt > 1) + { + $tn_text .= $cc; + } + else if ($cc == '[') + { + //----------------------------------------- + // Won't get here until first OB reached + //----------------------------------------- + + $openbrace_cnt ++; + } + } + + if ( $this->handler_cdata_handler == null ) + { + $this->exec_character_data($tn_text); + } + else + { + $this->exec_cdata_element($tn_text); + } + } + else if ( strpos( $uc_tag_text, $this->xml_constants['NOTATION'] ) !== false ) + { + //----------------------------------------- + // !NOTATION? Ignore! + //----------------------------------------- + + return; + } + else if ( substr($text, 0, 2) == '!-' ) + { + //----------------------------------------- + // !Comment? Ignore! + //----------------------------------------- + + return; + } + + break; + //----------------------------------------- + // Case is ?INSTRUCTION? + //----------------------------------------- + case '?': + + //----------------------------------------- + // Instruction? Ignore! + //----------------------------------------- + + return; + //----------------------------------------- + // Normal tag - woohoo! + //----------------------------------------- + default: + + if ( (strpos($text, '"') !== false) || (strpos($text, "'") !== false) ) + { + $total = strlen($text); + $tag_name = ''; + + for ($i = 0; $i < $total; $i++) + { + $cc = $text{$i}; + + if ($cc == ' ') + { + $attr = $this->parse_attr(substr($text, $i)); + break; + } + else + { + $tag_name.= $cc; + } + } + + if ( strrpos($text, '/') == ( strlen($text) - 1 ) ) + { + $this->exec_start_element($tag_name, $attr); + $this->exec_end_element($tag_name); + } + else + { + $this->exec_start_element($tag_name, $attr); + } + } + else { + if ( strpos($text, '/') !== false ) + { + $text = trim( substr( $text, 0, ( strrchr($text, '/' ) - 1 ) ) ); + $this->exec_start_element($text, $attr); + $this->exec_end_element($text); + } + else + { + $this->exec_start_element($text, $attr); + } + } + } + } + + /*-------------------------------------------------------------------------*/ + // Parse Attributes + /*-------------------------------------------------------------------------*/ + + function parse_attr( $text ) + { + $text = trim($text); + $attr_array = array(); + $query_entity = false; + + $total = strlen($text); + $dump_key = ''; + $dump_value = ''; + $cur_state = 0; // 0 = none, 1 = key, 2 = value + $quote_type = ''; + + for ($i = 0; $i < $total; $i++) + { + $cc = $text{$i}; + + if ( $cur_state == 0 ) + { + if ( trim($cc != '') ) + { + $cur_state = 1; + } + } + + switch ($cc) + { + //----------------------------------------- + // Tab and we're in a value? + //----------------------------------------- + case "\t": + if ( $cur_state == 2 ) + { + $dump_value .= $cc; + } + else + { + $cc = ''; + } + break; + //----------------------------------------- + // Newlines.. + //----------------------------------------- + case "\n": + case "\r": + $cc = ''; + break; + //----------------------------------------- + // Param value + //----------------------------------------- + case '=': + if ( $cur_state == 2 ) + { + $dump_value .= $cc; + } + else + { + $cur_state = 2; + $quote_type = ''; + $query_entity = false; + } + break; + //----------------------------------------- + // Quoted + //----------------------------------------- + case '"': + if ($cur_state == 2) + { + if ($quote_type == '') + { + $quote_type = '"'; + } + else + { + if ($quote_type == $cc) + { + $attr_array[ trim($dump_key) ] = trim($dump_value); + $dump_key = $dump_value = $quote_type = ''; + $cur_state = 0; + } + else + { + $dump_value .= $cc; + } + } + } + break; + //----------------------------------------- + // Quoted + //----------------------------------------- + case "'": + if ($cur_state == 2) + { + if ($quote_type == '') + { + $quote_type = "'"; + } + else + { + if ($quote_type == $cc) + { + $attr_array[ trim($dump_key) ] = trim($dump_value); + $dump_key = $dump_value = $quote_type = ''; + $cur_state = 0; + } + else + { + $dump_value .= $cc; + } + } + } + break; + //----------------------------------------- + // Entity? + //----------------------------------------- + case '&': + $query_entity = true; + $dump_value .= $cc; + break; + + default: + if ($cur_state == 1) + { + $dump_key .= $cc; + } + else + { + $dump_value .= $cc; + } + } + } + + return $attr_array; + } + + /*-------------------------------------------------------------------------*/ + // Parse between the element tags + /*-------------------------------------------------------------------------*/ + + function parse_between_tags( $t ) + { + if ( trim($t ) != '') + { + $this->exec_character_data($t); + } + } + + /*-------------------------------------------------------------------------*/ + // Exec_events + /*-------------------------------------------------------------------------*/ + + function exec_character_data( $data ) + { + call_user_func( $this->handler_character_data, $this, $data ); + } + + function exec_start_element( $tagname, $attr ) + { + call_user_func( $this->handler_start_element, $this, $tagname, $attr ); + } + + function exec_end_element( $tagname ) + { + call_user_func( $this->handler_end_element, $this, $tagname ); + } + + function exec_cdata_element( $data ) + { + call_user_func( $this->handler_cdata_handler, $this, $data ); + } + + /*-------------------------------------------------------------------------*/ + // Set xml element handlers + /*-------------------------------------------------------------------------*/ + + function my_xml_set_element_handler( &$startHandler, &$endHandler) + { + $this->handler_start_element = &$startHandler; + $this->handler_end_element = &$endHandler; + } + + function my_xml_set_character_data_handler( &$handler ) + { + $this->handler_character_data = &$handler; + } + + function my_xml_set_cdata_section_handler( &$handler ) + { + $this->handler_cdata_handler = &$handler; + } + + /*-------------------------------------------------------------------------*/ + // Internal: Get nth character of $text + /*-------------------------------------------------------------------------*/ + + function _get_nth_char_from_end( $t, $i ) + { + return $t{ ( strlen( $t ) - 1 - $i ) }; + } +} + + +?> \ No newline at end of file diff --git a/upload/ips_kernel/class_xml_rpc.php b/upload/ips_kernel/class_xml_rpc.php index 63431c8b..8db239b3 100644 --- a/upload/ips_kernel/class_xml_rpc.php +++ b/upload/ips_kernel/class_xml_rpc.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -74,7 +64,7 @@ * to prevent it loading as plain text via HTTP which would show * the entire contents of the file. */ -define( 'IPS_XML_RPC_DEBUG_ON' , 0 ); +define( 'IPS_XML_RPC_DEBUG_ON' , 1 ); define( 'IPS_XML_RPC_DEBUG_FILE', dirname( __FILE__ ) . '/../cache/debug.php' ); /** @@ -126,6 +116,12 @@ class class_xml_rpc */ var $map_type_to_key = array(); + /** + * Auth required + */ + var $auth_user = ''; + var $auth_pass = ''; + /*-------------------------------------------------------------------------*/ // CONSTRUCTOR /*-------------------------------------------------------------------------*/ @@ -147,7 +143,7 @@ class class_xml_rpc */ function xml_rpc_decode( $_xml ) { - $xml_parser = new xmlrpc_parser(); + $xml_parser =& new xmlrpc_parser(); $data = $xml_parser->parse( $_xml ); $xml_parser->destruct(); @@ -184,7 +180,7 @@ class class_xml_rpc { if ( ! is_array($current_node['array']['data']) ) { - return array(); + $temp = array(); } else { @@ -196,7 +192,7 @@ class class_xml_rpc for( $n = 0 ; $n < $count ; $n++ ) { - $temp2[$n] = & $this->xml_rpc_adjust_value(&$temp[$n]); + $temp2[$n] = & $this->xml_rpc_adjust_value($temp[$n]); } $temp = &$temp2; @@ -204,7 +200,7 @@ class class_xml_rpc } else { - $temp2 = & $this->xml_rpc_adjust_value(&$temp); + $temp2 = & $this->xml_rpc_adjust_value($temp); $temp = array(&$temp2); } } @@ -225,12 +221,12 @@ class class_xml_rpc for( $n = 0 ; $n < $count ; $n++ ) { - $temp2[$temp[$n]['name']] = & $this->xml_rpc_adjust_value(&$temp[$n]['value']); + $temp2[$temp[$n]['name']] = & $this->xml_rpc_adjust_value($temp[$n]['value']); } } else { - $temp2[$temp['name']] = & $this->xml_rpc_adjust_value(&$temp['value']); + $temp2[$temp['name']] = & $this->xml_rpc_adjust_value($temp['value']); } $temp = &$temp2; } @@ -291,11 +287,11 @@ class class_xml_rpc */ function xml_rpc_get_params( $request ) { - if ( is_array( $request['methodCall']['params'] ) ) + if ( isset( $request['methodCall']['params'] ) AND is_array( $request['methodCall']['params'] ) ) { $temp = & $request['methodCall']['params']['param']; } - else if ( is_array( $request['methodResponse']['params'] ) ) + else if ( isset( $request['methodResponse']['params'] ) AND is_array( $request['methodResponse']['params'] ) ) { $temp = & $request['methodResponse']['params']['param']; } @@ -310,7 +306,7 @@ class class_xml_rpc for( $n = 0 ; $n < $count ; $n++) { - $temp2[$n] = & $this->xml_rpc_adjust_value(&$temp[$n]['value']); + $temp2[$n] = & $this->xml_rpc_adjust_value($temp[$n]['value']); } } else @@ -328,7 +324,7 @@ class class_xml_rpc */ function xml_rpc_get_method_name( $request ) { - return $request['methodCall']['methodName']; + return isset( $request['methodCall']['methodName'] ) ? $request['methodCall']['methodName'] : ''; } /*-------------------------------------------------------------------------*/ @@ -372,6 +368,33 @@ class class_xml_rpc } } + /*-------------------------------------------------------------------------*/ + // Return single value + /*-------------------------------------------------------------------------*/ + /** + * Prints a true document and exits + * + * @return void + */ + function xml_rpc_return_value( $value ) + { + $to_print = $this->header." + + + {$value} + + + "; + + @header( "Connection: close" ); + @header( "Content-length: ".strlen($to_print) ); + @header( "Content-type: text/xml" ); + @header( "Date: " . date("r") ); + print $to_print; + + exit(); + } + /*-------------------------------------------------------------------------*/ // Creates an XML-RPC complex document /*-------------------------------------------------------------------------*/ @@ -416,19 +439,51 @@ class class_xml_rpc $xmldata .= "\t\n"; $xmldata .= "\t\t\n"; $xmldata .= "\t\t\t\n"; - $xmldata .= "\t\t\t\n"; - - foreach( $data_array as $k => $v ) + + if ( isset( $data_array[0] ) AND is_array( $data_array[0] ) ) { - $_type = $this->map_type_to_key[ $k ] ? $this->map_type_to_key[ $k ] : $this->get_xmlrpc_string_type( $v ); - - $xmldata .= "\t\t\t\t\n"; - $xmldata .= "\t\t\t\t\t".$k."\n"; - $xmldata .= "\t\t\t\t\t<".$_type.">" . htmlspecialchars($v) . "\n"; - $xmldata .= "\t\t\t\t\n"; + $xmldata .= "\t\t\t\n"; + $xmldata .= "\t\t\t\t\n"; + + foreach( $data_array as $k => $v ) + { + $xmldata .= "\t\t\t\t\t\n"; + $xmldata .= "\t\t\t\t\t\t\n"; + + foreach( $v as $k2 => $v2 ) + { + $_type = $this->map_type_to_key[ $k2 ] ? $this->map_type_to_key[ $k2 ] : $this->get_xmlrpc_string_type( $v2 ); + + $xmldata .= "\t\t\t\t\t\t\t\n"; + $xmldata .= "\t\t\t\t\t\t\t\t".$k2."\n"; + $xmldata .= "\t\t\t\t\t\t\t\t<".$_type.">" . htmlspecialchars($v2) . "\n"; + $xmldata .= "\t\t\t\t\t\t\t\n"; + } + + $xmldata .= "\t\t\t\t\t\t\n"; + $xmldata .= "\t\t\t\t\t\n"; + } + + $xmldata .= "\t\t\t\t\n"; + $xmldata .= "\t\t\t\n"; } - - $xmldata .= "\t\t\t\n"; + else + { + $xmldata .= "\t\t\t\n"; + + foreach( $data_array as $k => $v ) + { + $_type = isset( $this->map_type_to_key[ $k ] ) ? $this->map_type_to_key[ $k ] : $this->get_xmlrpc_string_type( $v ); + + $xmldata .= "\t\t\t\t\n"; + $xmldata .= "\t\t\t\t\t".$k."\n"; + $xmldata .= "\t\t\t\t\t<".$_type.">" . htmlspecialchars($v) . "\n"; + $xmldata .= "\t\t\t\t\n"; + } + + $xmldata .= "\t\t\t\n"; + } + $xmldata .= "\t\t\t\n"; $xmldata .= "\t\t\n"; $xmldata .= "\t\n"; @@ -550,6 +605,7 @@ class class_xml_rpc $data = null; $fsocket_timeout = 10; + $header = ""; //----------------------------------------- // Send it.. @@ -568,7 +624,8 @@ class class_xml_rpc //------------------------------- $host = $url_parts['host']; - $port = ( isset($url_parts['port']) ) ? $url_parts['port'] : 80; + + $port = ( isset($url_parts['port']) ) ? $url_parts['port'] : 80; //------------------------------- // Tidy up path @@ -598,6 +655,14 @@ class class_xml_rpc { $header = "POST $path HTTP/1.0\r\n"; $header .= "Host: $host\r\n"; + + if ( $this->auth_user && $this->auth_pass ) + { + $this->_add_debug( "Authorization: Basic Performed" ); + + $header .= "Authorization: Basic ".base64_encode("{$this->auth_user}:{$this->auth_pass}")."\r\n"; + } + $header .= "Connection: close\r\n"; $header .= "Content-Type: text/xml\r\n"; $header .= "Content-Length: " . strlen($xmldata) . "\r\n\r\n"; @@ -683,14 +748,14 @@ class class_xml_rpc */ function _add_debug( $msg ) { - if ( IPS_XML_RPC_DEBUG_FILE ) + if ( IPS_XML_RPC_DEBUG_FILE AND file_exists( IPS_XML_RPC_DEBUG_FILE ) ) { $full_msg = "==================================================================\n" . "SCRIPT NAME: " . $_SERVER["SCRIPT_NAME"] . "\n" . gmdate( 'r' ) . ' - ' . $_SERVER['REMOTE_ADDR'] . ' - ' . $msg . "\n" . "==================================================================\n"; - $FH = fopen( IPS_XML_RPC_DEBUG_FILE, 'a' ); + $FH = fopen( IPS_XML_RPC_DEBUG_FILE, 'a+' ); fwrite( $FH, $full_msg, strlen( $full_msg ) ); fclose( $FH ); @@ -734,7 +799,7 @@ class xmlrpc_parser $this->parser = xml_parser_create(); xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); - xml_set_object( $this->parser, &$this); + xml_set_object( $this->parser, $this); xml_set_element_handler( $this->parser, "rpc_open", "rpc_close"); xml_set_character_data_handler($this->parser, "rpc_data"); } @@ -824,8 +889,16 @@ class xmlrpc_parser $this->parent[$key] = array(); $this->parent = &$this->parent[$key]; - array_unshift($this->parents, &$this->parent); + //array_unshift($this->parents, &$this->parent); + $this->array_unshift_ref($this->parents, $this->parent); } + + function array_unshift_ref(&$array, &$value) + { + $return = array_unshift($array,''); + $array[0] =& $value; + return $return; + } /** * XML data handler diff --git a/upload/ips_kernel/class_xmlarchive.php b/upload/ips_kernel/class_xmlarchive.php index b8dc487b..5b6679ff 100644 --- a/upload/ips_kernel/class_xmlarchive.php +++ b/upload/ips_kernel/class_xmlarchive.php @@ -2,24 +2,14 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -233,21 +223,24 @@ class class_xmlarchive { $this->file_array = array(); - foreach( $this->xml->xml_array['xmlarchive']['fileset']['file'] as $idx => $entry ) + foreach( $this->xml->xml_array['xmlarchive']['fileset']['file'] as $entry ) { $this_array = array(); - foreach ( $entry as $k => $v ) + if( is_array( $entry ) ) { - if ( $k == 'content' ) + foreach ( $entry as $k => $v ) { - $v['VALUE'] = base64_decode( preg_replace( "/\s/", "", $entry['content']['VALUE'] ) ); + if ( $k == 'content' ) + { + $v['VALUE'] = base64_decode( preg_replace( "/\s/", "", $entry['content']['VALUE'] ) ); + } + + $this_array[ $k ] = $v['VALUE']; } - $this_array[ $k ] = $v['VALUE']; + $this->file_array[] = $this_array; } - - $this->file_array[] = $this_array; } } } diff --git a/upload/ips_kernel/i18n/convertcharset/ConvertCharset.class.php b/upload/ips_kernel/i18n/convertcharset/ConvertCharset.class.php index 7b010df6..f0e897e7 100644 --- a/upload/ips_kernel/i18n/convertcharset/ConvertCharset.class.php +++ b/upload/ips_kernel/i18n/convertcharset/ConvertCharset.class.php @@ -9,7 +9,7 @@ **/ $PATH_TO_CLASS = dirname(ereg_replace("\\\\","/",__FILE__)) . "/" . "ConvertTables" . "/"; define ("CONVERT_TABLES_DIR", $PATH_TO_CLASS); -define ("DEBUG_MODE", 1); +define ("DEBUG_MODE", -1); /** * -- 1.0 2004-07-28 -- diff --git a/upload/ips_kernel/index.html b/upload/ips_kernel/index.html index 787531db..52a588b2 100644 --- a/upload/ips_kernel/index.html +++ b/upload/ips_kernel/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/jscripts/DEPRECATED/ipb_bbcode.js b/upload/jscripts/DEPRECATED/ipb_bbcode.js new file mode 100644 index 00000000..2df1a579 --- /dev/null +++ b/upload/jscripts/DEPRECATED/ipb_bbcode.js @@ -0,0 +1,447 @@ +//-------------------------------------------- +// Set up our simple tag open values +//-------------------------------------------- + +var B_open = 0; +var I_open = 0; +var U_open = 0; +var QUOTE_open = 0; +var CODE_open = 0; +var SQL_open = 0; +var HTML_open = 0; + +var bbtags = new Array(); + +var fombj = document.REPLIER; + +//========================================== +// prep and set up +//========================================== + +prep_mode(); + +function prep_mode() +{ + cvalue = my_getcookie( "bbmode" ); + + if (cvalue == 'ezmode') + { + fombj.bbmode[0].checked = true; + } + else + { + fombj.bbmode[1].checked = true; + } +} + +//========================================== +// Set BBCode mode +//========================================== + +function setmode(mVal) +{ + my_setcookie( 'bbmode', mVal, 1 ); +} + + +function get_easy_mode_state() +{ + //-------------------------------------------- + // Returns true if we've chosen easy mode + //-------------------------------------------- + + if ( fombj.bbmode[0].checked ) + { + return true; + } + else + { + return false; + } +} + +//========================================== +// Set the help bar status +//========================================== + +function hstat(msg) +{ + fombj.helpbox.value = eval( "help_" + msg ); +} + +//========================================== +// Set the number of tags open box +//========================================== + +function cstat() +{ + var c = stacksize(bbtags); + + if ( (c < 1) || (c == null) ) { + c = 0; + } + + if ( ! bbtags[0] ) { + c = 0; + } + + fombj.tagcount.value = c; +} + + +//========================================== +// Close all tags +//========================================== + +function closeall() +{ + if (bbtags[0]) + { + while (bbtags[0]) + { + tagRemove = popstack(bbtags); + fombj.Post.value += "[/" + tagRemove + "]"; + + //-------------------------------------------- + // Change the button status + // Ensure we're not looking for FONT, SIZE or COLOR as these + // buttons don't exist, they are select lists instead. + //-------------------------------------------- + + if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') ) + { + eval("fombj." + tagRemove + ".value = ' " + tagRemove + " '"); + eval(tagRemove + "_open = 0"); + } + } + } + + //-------------------------------------------- + // Ensure we got them all + //-------------------------------------------- + + fombj.tagcount.value = 0; + bbtags = new Array(); + fombj.Post.focus(); +} + +//========================================== +// EMOTICONS +//========================================== + +function emoticon(theSmilie) +{ + doInsert(" " + theSmilie + " ", "", false); +} + +//========================================== +// ADD CODE +//========================================== + +function add_code(NewCode) +{ + fombj.Post.value += NewCode; + fombj.Post.focus(); +} + +//========================================== +// ALTER FONT +//========================================== + +function alterfont(theval, thetag) +{ + if (theval == 0) + { + return; + } + + if ( doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true) ) + { + pushstack(bbtags, thetag); + } + + fombj.ffont.selectedIndex = 0; + fombj.fsize.selectedIndex = 0; + fombj.fcolor.selectedIndex = 0; + + cstat(); + +} + + +//========================================== +// SIMPLE TAGS (such as B, I U, etc) +//========================================== + +function simpletag(thetag) +{ + var tagOpen = eval(thetag + "_open"); + + if ( get_easy_mode_state() ) + { + inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]"); + if ( (inserttext != null) && (inserttext != "") ) + { + doInsert("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false); + } + } + else + { + if (tagOpen == 0) + { + if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true)) + { + eval(thetag + "_open = 1"); + + //-------------------------------------------- + // Change the button status + //-------------------------------------------- + + eval("fombj." + thetag + ".value += '*'"); + + pushstack(bbtags, thetag); + cstat(); + hstat('click_close'); + } + } + else + { + //-------------------------------------------- + // Find the last occurance of the opened tag + //-------------------------------------------- + lastindex = 0; + + for (i = 0 ; i < bbtags.length; i++ ) + { + if ( bbtags[i] == thetag ) + { + lastindex = i; + } + } + + //-------------------------------------------- + // Close all tags opened up to that tag was opened + //-------------------------------------------- + + while (bbtags[lastindex]) + { + tagRemove = popstack(bbtags); + doInsert("[/" + tagRemove + "]", "", false); + + //-------------------------------------------- + // Change the button status + //-------------------------------------------- + + if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') ) + { + eval("fombj." + tagRemove + ".value = ' " + tagRemove + " '"); + eval(tagRemove + "_open = 0"); + } + } + + cstat(); + } + } +} + +//========================================== +// List tag +//========================================== + +function tag_list() +{ + var listvalue = "init"; + var thelist = ""; + + while ( (listvalue != "") && (listvalue != null) ) + { + listvalue = prompt(list_prompt, ""); + if ( (listvalue != "") && (listvalue != null) ) + { + thelist = thelist+"[*]"+listvalue+"\n"; + } + } + + if ( thelist != "" ) + { + doInsert( "[LIST]\n" + thelist + "[/LIST]\n", "", false); + } +} + +//========================================== +// URL tag +//========================================== + +function tag_url() +{ + var FoundErrors = ''; + var enterURL = prompt(text_enter_url, "http://"); + var enterTITLE = prompt(text_enter_url_name, jsfile_myweb_lang); + + if (!enterURL) { + FoundErrors += " " + error_no_url; + } + if (!enterTITLE) { + FoundErrors += " " + error_no_title; + } + + if (FoundErrors) { + alert(jsfile_error_lang + FoundErrors); + return; + } + + doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false); +} + +//========================================== +// Insert attachment tag +//========================================== + +function insert_attach_to_textarea(aid) +{ + doInsert( "[attachmentid="+aid+"]" ); +} + +//========================================== +// Image tag +//========================================== + +function tag_image() +{ + var FoundErrors = ''; + var enterURL = prompt(text_enter_image, "http://"); + + if (!enterURL) { + FoundErrors += " " + error_no_url; + } + + if (FoundErrors) { + alert(jsfile_error_lang + FoundErrors); + return; + } + + doInsert("[IMG]"+enterURL+"[/IMG]", "", false); +} + +function tag_email() +{ + var emailAddress = prompt(text_enter_email, ""); + + if (!emailAddress) { + alert(error_no_email); + return; + } + + doInsert("[EMAIL]"+emailAddress+"[/EMAIL]", "", false); +} + +//-------------------------------------------- +// GENERAL INSERT FUNCTION +//-------------------------------------------- +// ibTag: opening tag +// ibClsTag: closing tag, used if we have selected text +// isSingle: true if we do not close the tag right now +// return value: true if the tag needs to be closed later + +// + +function doInsert(ibTag, ibClsTag, isSingle) +{ + var isClose = false; + var obj_ta = fombj.Post; + + //---------------------------------------- + // It's IE! + //---------------------------------------- + if ( (ua_vers >= 4) && is_ie && is_win) + { + if (obj_ta.isTextEdit) + { + obj_ta.focus(); + var sel = document.selection; + var rng = sel.createRange(); + rng.colapse; + if((sel.type == "Text" || sel.type == "None") && rng != null) + { + if(ibClsTag != "" && rng.text.length > 0) + ibTag += rng.text + ibClsTag; + else if(isSingle) + isClose = true; + + rng.text = ibTag; + } + } + else + { + if(isSingle) + { + isClose = true; + } + + obj_ta.value += ibTag; + } + } + //---------------------------------------- + // It's MOZZY! + //---------------------------------------- + + else if ( obj_ta.selectionEnd ) + { + var ss = obj_ta.selectionStart; + var st = obj_ta.scrollTop; + var es = obj_ta.selectionEnd; + + if (es <= 2) + { + es = obj_ta.textLength; + } + + var start = (obj_ta.value).substring(0, ss); + var middle = (obj_ta.value).substring(ss, es); + var end = (obj_ta.value).substring(es, obj_ta.textLength); + + //----------------------------------- + // text range? + //----------------------------------- + + if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) + { + middle = ibTag + middle + ibClsTag; + } + else + { + middle = ibTag + middle; + + if (isSingle) + { + isClose = true; + } + } + + obj_ta.value = start + middle + end; + + var cpos = ss + (middle.length); + + obj_ta.selectionStart = cpos; + obj_ta.selectionEnd = cpos; + obj_ta.scrollTop = st; + + + } + //---------------------------------------- + // It's CRAPPY! + //---------------------------------------- + else + { + if (isSingle) + { + isClose = true; + } + + obj_ta.value += ibTag; + } + + obj_ta.focus(); + + return isClose; +} diff --git a/upload/jscripts/DEPRECATED/ipb_editor.js b/upload/jscripts/DEPRECATED/ipb_editor.js new file mode 100644 index 00000000..e74da0d2 --- /dev/null +++ b/upload/jscripts/DEPRECATED/ipb_editor.js @@ -0,0 +1,328 @@ +//------------------------------------------ +// Invision Power Board v2 +// Text Editor Global Functions +// (c) 2005 Invision Power Services, Inc. +// +// http://www.invisionboard.com +//------------------------------------------ + +/*-------------------------------------------------------------------------*/ +// INIT +/*-------------------------------------------------------------------------*/ + +var dontpassgo = 0; + +//------------------------------- +// Keep an array of open tags +//------------------------------- + +var bbtags = new Array(); + +//------------------------------- +// Define font faces +//------------------------------- + +var ips_primary_fonts = new Array( + "arial", + "arial black", + "arial narrow", + "book antiqua", + "century gothic", + "comic sans ms", + "courier new", + "fixedsys", + "franklin gothic medium", + "garamond", + "georgia", + "impact", + "lucida console", + "lucida sans unicode", + "microsoft sans serif", + "palatino linotype", + "system", + "tahoma", + "times new roman", + "trebuchet ms", + "verdana" +); + +//------------------------------- +// Remap font sizes +//------------------------------- + +var ips_fontsizes = +{ + '8px' : 1, + '10pt' : 2, + '12pt' : 3, + '14pt' : 4, + '18pt' : 5, + '24pt' : 6, + '36pt' : 7 +} + +//------------------------------- +// Define sizes +//------------------------------- + +var ips_font_sizes = new Array( 1, 2, 3, 4, 5, 6, 7 ); + +//------------------------------- +// Reverse them so we can look up +// by ID +//------------------------------- + +var ips_reverse_primary_fonts = new Array(); +var ips_reverse_font_sizes = new Array(); +var ips_reverse_fontsizes = new Array(); + +for( var i in ips_primary_fonts ) +{ + ips_reverse_primary_fonts[ ips_primary_fonts[i] ] = i; +} + +for( var i in ips_font_sizes ) +{ + ips_reverse_font_sizes[ ips_font_sizes[i] ] = i; +} + +for( var i in ips_fontsizes ) +{ + ips_reverse_fontsizes[ ips_fontsizes[i] ] = i; +} + +/*-------------------------------------------------------------------------*/ +// Close all tags +/*-------------------------------------------------------------------------*/ + +function closeall() +{ + if ( bbtags[0] ) + { + while ( bbtags[0] ) + { + tagRemove = popstack( bbtags ) + postformobj.Post.value += "[/" + tagRemove + "]"; + + if ( i_am == 'std' ) + { + toggle_button( tagRemove ); + } + else + { + rte_button_update( tagRemove ); + } + } + } + + //-------------------------------------------- + // Ensure we got them all + //-------------------------------------------- + + bbtags = new Array(); + postformobj.Post.focus(); +} + +/*-------------------------------------------------------------------------*/ +// Close all nested tags +/*-------------------------------------------------------------------------*/ + +function smart_close_tags( thetag ) +{ + //-------------------------------------------- + // Find the last occurance of the opened tag + //-------------------------------------------- + + lastindex = 0; + + for (i = 0 ; i < bbtags.length; i++ ) + { + if ( bbtags[i] == thetag ) + { + lastindex = i; + } + } + + //-------------------------------------------- + // Close all tags opened up to that tag was opened + //-------------------------------------------- + + while ( bbtags[lastindex] ) + { + tagRemove = popstack(bbtags); + + wrap_tags("[/" + tagRemove + "]", "") + + //-------------------------------------------- + // Change the button status + //-------------------------------------------- + + if ( i_am == 'std' ) + { + toggle_button( tagRemove ); + } + else + { + rte_button_update( tagRemove ); + } + } +} + +/*-------------------------------------------------------------------------*/ +// Write font face box +/*-------------------------------------------------------------------------*/ + +function write_fontface_box() +{ + html = ""; + + for( var i in ips_primary_fonts ) + { + option = ips_primary_fonts[i]; + display = ips_primary_fonts[i]; + + //------------------------------- + // Tidy up show name + // Make "courier new" "Courier New" + //------------------------------- + + var tmp = display.split( " " ); + var rtn = new Array; + + for ( var id in tmp ) + { + rtn[id] = tmp[id].substr(0, 1).toUpperCase() + tmp[id].substr(1); + } + + display = rtn.join( " " ); + + html += "\n"; + } + + return html; +} + +/*-------------------------------------------------------------------------*/ +// Write font size box +/*-------------------------------------------------------------------------*/ + +function write_fontsize_box() +{ + html = ""; + + for( var i in ips_font_sizes ) + { + option = ips_font_sizes[i]; + display = ips_font_sizes[i]; + + html += "\n"; + } + + return html; +} + +/*-------------------------------------------------------------------------*/ +// INIT Editor +/*-------------------------------------------------------------------------*/ + +function init_editor() +{ + if ( ! postformid ) + { + postformid = 'postingform'; + } + + if ( ! postfieldid ) + { + postfieldid = 'postcontent'; + } + + postformobj = document.getElementById( postformid ); + postfieldobj = document.getElementById( postfieldid ); +} + +/*-------------------------------------------------------------------------*/ +// Remove an attachment +/*-------------------------------------------------------------------------*/ + +function removeattach(id) +{ + if ( id != "" ) + { + Override = 1; + postformobj.removeattachid.value = id; + } +} + +/*-------------------------------------------------------------------------*/ +// Insert attachment tag +/*-------------------------------------------------------------------------*/ + +function insert_attach_to_textarea(aid) +{ + rtewindow.focus(); + + wrap_tags( "[attachmentid="+aid+"]", "" ); + + rtewindow.focus(); +} + +/*-------------------------------------------------------------------------*/ +// Open emoticon window +/*-------------------------------------------------------------------------*/ + +var emowindow = ''; + +function emo_pop() +{ + emowindow = window.open( ipb_var_base_url + "act=legends&CODE=emoticons","Legends","width=250,height=500,resizable=yes,scrollbars=yes"); +} + +/*-------------------------------------------------------------------------*/ +// BBCode window +/*-------------------------------------------------------------------------*/ + +function bbc_pop() +{ + window.open( ipb_var_base_url + "act=legends&CODE=bbcode","Legends","width=700,height=500,resizable=yes,scrollbars=yes"); +} + +/*--------------------------------------------*/ +// Fix the amount of digging parents up. +/*--------------------------------------------*/ + +function getOffsetTop(elm) +{ + var mOffsetTop = elm.offsetTop; + var mOffsetParent = elm.offsetParent; + var parents_up = 2; + + while(parents_up > 0) + { + mOffsetTop += mOffsetParent.offsetTop; + mOffsetParent = mOffsetParent.offsetParent; + parents_up--; + } + + return mOffsetTop; +} + +/*--------------------------------------------*/ +// Fix the amount of digging parents up. +/*--------------------------------------------*/ + +function getOffsetLeft(elm) +{ + var mOffsetLeft = elm.offsetLeft; + var mOffsetParent = elm.offsetParent; + var parents_up = 2; + + while(parents_up > 0) + { + mOffsetLeft += mOffsetParent.offsetLeft; + mOffsetParent = mOffsetParent.offsetParent; + parents_up--; + } + + return mOffsetLeft; +} diff --git a/upload/jscripts/DEPRECATED/ipb_editor_rte.js b/upload/jscripts/DEPRECATED/ipb_editor_rte.js new file mode 100644 index 00000000..b93cffaf --- /dev/null +++ b/upload/jscripts/DEPRECATED/ipb_editor_rte.js @@ -0,0 +1,2296 @@ +//------------------------------------------------------------------------------ +// IPS Cross-Browser Rich Text Editor +//------------------------------------------------------------------------------ +// Supports Mozilla 1.3+ (Firefox, etc) and IE 5.5+ +// (c) 2005 Invision Power Services, Inc. +// http://www.invisionpower.com +//------------------------------------------------------------------------------ + +/*--------------------------------------------*/ +// INIT variables +/*--------------------------------------------*/ + +var i_am = 'rte'; + +//document.getElementById( 'debugmsg' ).value +var DEBUG = 0; + +var isRichText = false; +var css_off = false; +var rng; +var currentRTE; +var allRTEs = ""; +var rte = ""; + +// Defined in enable_design_mode +var rtewindow; +var rtedocument; +var rteready; + + +var isIE; +var isGecko; +var isSafari; +var isKonqueror; + +var imagesPath; +var includesPath; + +//------------------------------- +// Set global scope +//------------------------------- + +var g_buttons; +var g_rte; +var g_tablewidth; +var g_width_unit; +var g_imagesPath; +var g_width; +var g_height; +var g_readOnly; +var g_includesPath +var g_html; +var g_DEBUG; + +//------------------------------- +// Font & size +//------------------------------- + +var currentfont; +var currentsize; +var button_status = new Array(); + +//------------------------------- +// Viewing HTML? +//------------------------------- + +var viewingHTML = 0; + +//------------------------------- +// Viewing Full screen? +//------------------------------- + +var viewingFS = 0; + +//------------------------------- +// Define which buttons change +// when clicked +//------------------------------- + +var buttons_update = new Array( + "bold", + "italic", + "underline", + "strikethrough", + //"superscript", + //"subscript", + "justifyleft", + "justifycenter", + "justifyright", + "insertorderedlist", + "insertunorderedlist" +); + +var opentags = +{ + 'bold' : 0, + 'italic' : 0, + 'strikethrough' : 0, + 'underline' : 0, + 'forecolor' : 0, + 'fontname' : 0, + 'fontsize' : 0 +}; + +/*--------------------------------------------*/ +// INIT RTE +/*--------------------------------------------*/ + +function init_rte( imgPath, incPath ) +{ + //------------------------------- + // Set browser vars + //------------------------------- + + var ua = navigator.userAgent.toLowerCase(); + isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); + isGecko = (ua.indexOf("gecko") != -1); + isSafari = (ua.indexOf("safari") != -1); + isKonqueror = (ua.indexOf("konqueror") != -1); + + //------------------------------- + // Check to see if designMode mode + // is available. Should be for: + // IE5.5+ Mozilla 1.3+ + // Safari 2+ + //------------------------------- + + if ( document.getElementById && document.designMode && ! isSafari &&!isKonqueror ) + { + isRichText = true; + } + + if ( isIE ) + { + document.onmouseover = ie_raise_button; + document.onmouseout = ie_normal_button; + document.onmousedown = ie_lower_button; + document.onmouseup = ie_raise_button; + } + + //------------------------------- + // Set paths vars + //------------------------------- + + imagesPath = imgPath; + includesPath = incPath; + + //------------------------------- + //for testing standard textarea, uncomment the following line + //isRichText = false; + //------------------------------- +} + +/*--------------------------------------------*/ +// Write Rich text to screen +/*--------------------------------------------*/ + +function write_rte_editor(fieldname, html, width, height, buttons, readOnly) +{ + rte = fieldname; + + if ( isRichText ) + { + if (allRTEs.length > 0) + { + allRTEs += ";"; + } + + allRTEs += rte; + + write_rte(html, width, height, buttons, readOnly); + } + else + { + write_default(html, width, height, buttons, readOnly); + } +} + +/*--------------------------------------------*/ +// Write the default info +/*--------------------------------------------*/ + +function write_default(html, width, height, buttons, readOnly) +{ + if ( ! readOnly ) + { + document.writeln(''); + } + else + { + document.writeln(''); + } +} + +/*--------------------------------------------*/ +// Display RTE +/*--------------------------------------------*/ + +function write_rte(html, width, height, buttons, readOnly) +{ + if (readOnly) buttons = false; + + var o_width = width; + var o_height = height; + + width = parseInt( width ); + height = parseInt( height ); + + //------------------------------- + // Adjust minimum table widths + //------------------------------- + + if ( isIE ) + { + if ( ! o_width.match( /%/ ) ) + { + if ( buttons && (width < 400) ) + { + width = 400; + } + + g_width_unit = 'px'; + var tablewidth = width + 4; + + } + else + { + g_width_unit = '%'; + var tablewidth = width ; + width = width; + } + + } + else + { + if ( ! o_width.match( /%/ ) ) + { + if ( buttons && (width < 400) ) + { + width = 400; + } + + g_width_unit = 'px'; + var tablewidth = width + 2; + } + else + { + g_width_unit = '%'; + var tablewidth = width; + width = width; + } + } + + //------------------------------- + // Globalize + //------------------------------- + + g_buttons = buttons; + g_rte = rte; + g_tablewidth = tablewidth; + g_imagesPath = imagesPath; + g_width = width; + g_height = height; + g_readOnly = readOnly; + g_includesPath = includesPath; + g_html = html; + g_DEBUG = DEBUG; + + boo_to_int = isRichText == true ? 1 : 0; + + //------------------------------- + // Use HTML from rte_html.js + //------------------------------- + + document.writeln( "" ); + + write_rte_html(); + + document.getElementById('hdn_rte_content').value = html; + enable_design_mode( make_newlines_safe(html), readOnly ); + + //------------------------------- + // Make buttons unselectable + //------------------------------- + + poss_images = document.getElementsByTagName('img'); + + if ( poss_images.length ) + { + for( var i in poss_images ) + { + if ( poss_images[i].className == 'rteimage' ) + { + poss_images[i].unselectable = true; + } + } + } + + //----------------------------------------- + // Make

    into
    + //----------------------------------------- + + if( isIE && ie_ptags_to_newlines ) + { + rtewindow = frames[rte]; + var _test = new Array( 'Indent', 'Outdent', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'InsertOrderedList', 'InsertUnorderedList' ); + + rtewindow.document.onkeydown = function() + { + if ( rtewindow.event.keyCode == 13 ) + { + for ( var i in _test ) + { + if ( rtewindow.document.queryCommandState( _test[ i ] ) ) + { + return true; + } + } + + var sel = rtewindow.document.selection; + var ts = rtewindow.document.selection.createRange(); + + var t = ts.htmlText.replace(/]*)>(.*)<\/p>/i, '$2'); + + if ( (sel.type == "Text" || sel.type == "None") ) + { + ts.pasteHTML( "
    " + t + "\n" ); + } + else + { + rtewindow.document.body.innerHTML += "
    \n"; + } + + rtewindow.event.returnValue = false; + ts.select(); + + rtewindow.focus(); + return false ; + } + } + } +} + +/*--------------------------------------------*/ +// Enable Design Mode +/*--------------------------------------------*/ + +function enable_design_mode(html, readOnly) +{ + //------------------------------- + // Got char set? + //------------------------------- + + var use_charset = ''; + + try + { + use_charset = g_CHARSET; + } + catch(e) + { + } + + use_charset = use_charset ? use_charset : 'iso-8859-1'; + + //------------------------------- + // Print... + //------------------------------- + + var frameHtml = "\n"; + frameHtml += "\n"; + frameHtml += '' + "\n"; + frameHtml += "\n"; + frameHtml += "\n"; + frameHtml += "\n"; + frameHtml += html + "\n"; + frameHtml += "\n"; + frameHtml += ""; + + //alert( frameHtml ); + + //------------------------------- + // IE + //------------------------------- + + if ( isIE ) + { + try + { + rtewindow = frames[rte]; + rtewindow.document.open(); + rtewindow.document.write(frameHtml); + rtewindow.document.close(); + } + catch(e) + { + alert( e ); + } + + if ( ! readOnly ) + { + rtewindow.document.designMode = "On"; + } + + rtewindow.document.onmouseup = rte_button_update; + rtewindow.document.onkeyup = rte_button_update; + } + else + { + try + { + rtewindow = document.getElementById(rte).contentWindow; + rtedocument = document.getElementById(rte).contentDocument; + + if ( ! readOnly ) + { + rtedocument.designMode = "on"; + } + + try + { + rtewindow.document.open(); + rtewindow.document.write(frameHtml); + rtewindow.document.close(); + + rtewindow.document.body.style.fontSize = '10pt'; + + rtewindow.document.addEventListener("mouseup", rte_button_update, true); + rtewindow.document.addEventListener("keyup" , rte_button_update, true); + + if ( isGecko && ! readOnly ) + { + //attach a keyboard handler for gecko browsers to make keyboard shortcuts work + rtewindow.document.addEventListener("keypress", kb_handler, true); + } + } + catch (e) + { + alert(jsfile_errorc_lang + e); + } + } + catch (e) + { + //------------------------------- + // Gecko may take some time to enable + // design mode. + // Keep looping until able to set. + //------------------------------- + + if ( isGecko ) + { + setTimeout("enable_design_mode('" + rte + "', '" + make_newlines_safe(html) + "', " + readOnly + ");", 10); + } + else + { + return false; + } + } + } + + //------------------------------- + // Set up buttons + //------------------------------- + + for ( var i in buttons_update ) + { + button_status[ buttons_update[i] ] = false; + } + + //------------------------------- + // So the blinking cursor wants to play rough... + //------------------------------- + + rteready = 1; +} + +/*--------------------------------------------*/ +// Update single RTE +/*--------------------------------------------*/ + +function update_rte() +{ + if (!isRichText) return; + + //------------------------------- + // Set message value + //------------------------------- + + var oHdnMessage = document.getElementById('hdn_rte_content'); + var readOnly = false; + + //------------------------------- + // Check for readOnly mode + //------------------------------- + + if ( isIE ) + { + if ( rtewindow.document.designMode != "On" ) + { + readOnly = true; + } + } + else + { + if ( rtedocument.designMode != "on" ) + { + readOnly = true; + } + } + + if ( isRichText && ! readOnly ) + { + //------------------------------- + // If viewing source, switch back + // to design view + //------------------------------- + + if ( viewingHTML ) + { + toggleHTMLSrc(); + } + + if (oHdnMessage.value == null) + { + oHdnMessage.value = ""; + } + + oHdnMessage.value = rtewindow.document.body.innerHTML; + + //------------------------------- + // If there is no content (other + // than formatting) set value to nothing + //------------------------------- + + if (strip_html(oHdnMessage.value.replace(" ", " ")) == "" + && oHdnMessage.value.toLowerCase().search("<$1$2>
    " ); + t = t.replace( /<\/(p|div)([^&]*)>/ig , "
    </$1$2>
    "); + t = t.replace( /<br \/>(?!<\/td)/ig , "<br />
    " ); + + //------------------------------- + // And some table issues... + //------------------------------- + + t = t.replace( /<\/(td|tr|tbody|table)>/ig , "</$1>
    "); + t = t.replace( /<(tr|tbody|table(.+?)?)>/ig , "<$1>
    " ); + t = t.replace( /<(td(.+?)?)>/ig , " <$1>" ); + + //------------------------------- + // Newlines + //------------------------------- + + t = t.replace( /<p> <\/p>/ig , "<br />"); + + return t; +} + +/*--------------------------------------------*/ +// Event handler: Update buttons when text is +// changed or selected +/*--------------------------------------------*/ + +function rte_button_update( command ) +{ + if ( viewingHTML ) + { + return false; + } + + //------------------------------- + // Make sure RTE is ready + //------------------------------- + + if ( ! rteready ) + { + return false; + } + + //------------------------------- + // Loop through buttons... + //------------------------------- + + try { + var cmd_state; + + for ( var i in buttons_update ) + { + cmd_state = rtewindow.document.queryCommandState( buttons_update[i] ); + + if ( typeof( button_status[ buttons_update[i] ] ) != "undefined" && button_status[ buttons_update[i] ] != cmd_state ) + { + prev_state = button_status[ buttons_update[i] ]; + button_status[ buttons_update[i] ] = cmd_state; + rte_button_context( my_getbyid('do_' + buttons_update[i]), prev_state == true ? "mouseout" : "mouseover" ); + } + } + }catch(e) { } + + //------------------------------- + // Do font family + //------------------------------- + + font_context = rtewindow.document.queryCommandValue( "fontname" ); + + if ( font_context == "" ) + { + if ( isIE ) + { + font_context = document.body.style.fontFamily; + } + } + else if ( font_context == null ) + { + font_context = ""; + } + + if ( font_context != false && font_context != currentfont ) + { + //------------------------------- + // strip off rest of defs + //------------------------------- + + fontword = font_context; + commapos = fontword.indexOf(","); + + if (commapos != -1) + { + fontword = fontword.substr(0, commapos); + } + + fontword = fontword.toLowerCase(); + + document.getElementById( "fontname" ).selectedIndex = ips_reverse_primary_fonts[ fontword ]; + + currentfont = font_context; + } + + //------------------------------- + // Font size + //------------------------------- + + size_context = rtewindow.document.queryCommandValue( "fontsize" ); + + if ( size_context == "" ) + { + if ( ! isIE ) + { + size_context = ips_fontsizes[ rtewindow.document.body.style.fontSize ]; + } + } + else if ( size_context == null ) + { + size_context = ""; + } + + if ( size_context != currentsize ) + { + document.getElementById( "fontsize" ).selectedIndex = ips_reverse_font_sizes[ size_context ]; + + currentsize = size_context; + } + + rtewindow.focus(); +} + +/*--------------------------------------------*/ +// Make current RTE window (n)px bigger +/*--------------------------------------------*/ + +function rte_window_resize( elid, pix ) +{ + var box = my_getbyid( elid ); + var cur_height = parseInt( box.style.height ); + + cur_height = cur_height ? cur_height : g_height; + + var new_height = cur_height + pix; + + if ( new_height > 0 ) + { + box.style.height = new_height + "px"; + } + + return false; +} + +/*--------------------------------------------*/ +// Set context of buttons +/*--------------------------------------------*/ + +function rte_button_context( element, state ) +{ + if (element == null) + { + return; + } + + command = element.id.toString(); + command = command.replace( /do_/, "" ); + + if (typeof(button_status[ command ] ) == "undefined") + { + button_status[ command ] = null; + } + + try + { + switch (state) + { + case "click": + case "mouseout": + { + // Normal + element.className = 'rteimage'; + } + break; + + case "mouseup": + case "mouseover": + { + // Hover + element.className = 'rteImageRaised'; + } + break; + + case "mousedown": + { + // On + element.className = 'rteImageRaised'; + } + break; + } + } + catch (e) + { + + } +} + + +/*--------------------------------------------*/ +// Function to format text in the text box +/*--------------------------------------------*/ + +function format_text(command, option) +{ + if( isGecko ) + { + rtewindow.document.execCommand("inserthtml", false, "-"); + rtewindow.document.execCommand("undo", false, null); + } + + if ( isIE ) + { + //------------------------------- + // Get current selected range + //------------------------------- + var selection = rtewindow.document.selection; + + if (selection != null) + { + rng = selection.createRange(); + } + + } + else if ( is_safari ) + { + var selection = rtewindow.getSelection(); + } + else + { + //------------------------------- + // Get currently selected range + //------------------------------- + + var selection = rtewindow.getSelection(); + rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); + } + + try + { + if ( (command == "forecolor") || (command == "hilitecolor") ) + { + //------------------------------- + // Save current values + //------------------------------- + + parent.command = command; + + //------------------------------- + // Position and show color palette + //------------------------------- + + buttonElement = document.getElementById(command); + + var iLeftPos = getOffsetLeft(buttonElement); + var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30); + + document.getElementById('cp').style.left = (iLeftPos) + "px"; + document.getElementById('cp').style.top = (iTopPos) + "px"; + + if (document.getElementById('cp').style.visibility == "hidden") + { + document.getElementById('cp').style.visibility = "visible"; + document.getElementById('cp').style.display = "inline"; + } + else + { + document.getElementById('cp').style.visibility = "hidden"; + document.getElementById('cp').style.display = "none"; + } + } + else if ( command == 'cut' || command == 'copy' || command == 'paste' ) + { + try + { + rtewindow.document.execCommand( command, false, null ); + } + catch (e) + { + if ( isGecko ) + { + alert( jsfile_alert1 + jsfile_alert2 + jsfile_alert3 + "\n" + jsfile_alert4 ); + } + } + } + else if (command == "createlink") + { + if ( isIE ) + { + var check_text = rng.htmlText; + } + else + { + var check_text = _gecko_get_html(); + } + + if ( ! check_text ) + { + alert( jsfile_highlight_lang ); + return false; + } + else + { + var szURL = prompt( text_enter_url, "http://"); + } + + try + { + var pass_link = 0; + + if(szURL.substring(0,7) == 'http://') + { + pass_link = 1; + } + + if(szURL.substring(0,8) == 'https://') + { + pass_link = 1; + } + + if(szURL.substring(0,6) == 'ftp://') + { + pass_link = 1; + } + + if( pass_link == 0 ) + { + szURL = null; + } + + //------------------------------- + // Ignore error for blank urls + //------------------------------- + + rtewindow.document.execCommand("Unlink" , false, null ); + rtewindow.document.execCommand("CreateLink", false, szURL); + } + catch (e) + { + //do nothing + } + } + else if ( ( command == 'justifyleft' || command == 'justifycenter' || command == 'justifyright' ) && isIE && ie_ptags_to_newlines ) + { + var _a = command.replace( "justify", "" ); + + wrap_tags( "[" + _a + "]", "[/" + _a + "]" ); + } + else if ( ( command == 'outdent' || command == 'indent' || command == 'insertorderedlist' || command == 'insertunorderedlist' ) && isIE && ie_ptags_to_newlines ) + { + rtewindow.focus(); + + var sel = rtewindow.document.selection; + var ts = rtewindow.document.selection.createRange(); + + var t = ts.htmlText.replace(/]*)>(.*)<\/p>/i, '$2'); + + if ( (sel.type == "Text" || sel.type == "None") ) + { + ts.pasteHTML( t + "

    \n" ); + } + else + { + rtewindow.document.body.innerHTML += "

    "; + } + + rtewindow.focus(); + rtewindow.document.execCommand( command, false, null ); + rte_button_update( command ); + rtewindow.focus(); + } + else + { + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand(command, false, null); + rte_button_update( command ); + rtewindow.focus(); + } + } + catch (e) + { + alert(e); + } +} + +/*--------------------------------------------*/ +// Show smilies pop-up +/*--------------------------------------------*/ + +function show_smilies() +{ + //------------------------------- + // Position and show color palette + //------------------------------- + + buttonElement = document.getElementById('popsmilies'); + + var iLeftPos = getOffsetLeft(buttonElement); + var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30); + + document.getElementById('smiliestable').style.left = (iLeftPos) + "px"; + document.getElementById('smiliestable').style.top = (iTopPos) + "px"; + + if (document.getElementById('smiliestable').style.visibility == "hidden") + { + document.getElementById('smiliestable').style.visibility = "visible"; + document.getElementById('smiliestable').style.display = "inline"; + } + else + { + document.getElementById('smiliestable').style.visibility = "hidden"; + document.getElementById('smiliestable').style.display = "none"; + } +} + +/*--------------------------------------------*/ +// Function to set color +/*--------------------------------------------*/ + +function setColor(color) +{ + var parentCommand = parent.command; + + if ( isIE ) + { + //------------------------------- + //retrieve selected range + //------------------------------- + + var sel = rtewindow.document.selection; + + if (parentCommand == "hilitecolor") parentCommand = "backcolor"; + + if (sel != null) + { + var newRng = sel.createRange(); + newRng = rng; + newRng.select(); + } + } + + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand(parentCommand, false, color); + rtewindow.focus(); + + document.getElementById('cp').style.visibility = "hidden"; + document.getElementById('cp').style.display = "none"; +} + +/*--------------------------------------------*/ +// Function to add email address +/*--------------------------------------------*/ + +function add_email() +{ + if ( isIE ) + { + //------------------------------- + // Get current selected range + //------------------------------- + + var selection = rtewindow.document.selection; + + if (selection != null) + { + rng = selection.createRange(); + } + var rng_len = rng.text.length; + } + else + { + //------------------------------- + // Get currently selected range + //------------------------------- + + var selection = rtewindow.getSelection(); + rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); + } + + emailaddress = prompt( text_enter_email, ''); + + if ((emailaddress != null) && (emailaddress != "")) + { + if( isIE ) + { + if( rng_len != "undefined" && rng_len > 0 ) + { + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand('createlink', false, 'mailto:' + emailaddress); + rtewindow.focus(); + } + else + { + emailHTML = '' + emailaddress + ''; + wrap_tags( "" + emailHTML, ""); + rtewindow.focus(); + } + } + else if( (rng != null) && (rng != "") ) + { + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand('createlink', false, 'mailto:' + emailaddress); + rtewindow.focus(); + } + else + { + emailHTML = '' + emailaddress + ''; + wrap_tags( "" + emailHTML, ""); + rtewindow.focus(); + } + } +} + +/*--------------------------------------------*/ +// Function to add image +/*--------------------------------------------*/ + +function add_image() +{ + if ( isIE ) + { + //------------------------------- + // Get current selected range + //------------------------------- + + var selection = rtewindow.document.selection; + + if (selection != null) + { + rng = selection.createRange(); + } + } + else + { + //------------------------------- + // Get currently selected range + //------------------------------- + + var selection = rtewindow.getSelection(); + rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); + } + + imagePath = prompt( text_enter_image, 'http://'); + + var pass_image = 0; + + if(imagePath.substring(0,7) == 'http://') + { + pass_image = 1; + } + + if(imagePath.substring(0,8) == 'https://') + { + pass_image = 1; + } + + if(imagePath.substring(0,6) == 'ftp://') + { + pass_image = 1; + } + + if( pass_image == 0 ) + { + imagePath = null; + } + + if ((imagePath != null) && (imagePath != "")) + { + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand('InsertImage', false, imagePath); + rtewindow.focus(); + } +} + +/*--------------------------------------------*/ +//Function to perform spell check +/*--------------------------------------------*/ + +function checkspell() +{ + try + { + var tmpis = new ActiveXObject("ieSpell.ieSpellExtension"); + tmpis.CheckAllLinkedDocuments(document); + } + + catch(exception) + { + if(exception.number==-2146827859) + { + if (confirm( jsfile_erroriespell )) + window.open("http://www.iespell.com/download.php","DownLoad"); + } + else + { + alert( jsfile_errorliespell + exception.number); + } + } +} + +/*--------------------------------------------*/ +// Add emoticon +/*--------------------------------------------*/ + +function emoticon( scode, smid, surl ) +{ + rtewindow.focus(); + + try + { + if ( ! surl ) + { + surl = document.getElementById(smid).src; + } + + if ( ! isIE ) + { + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand('InsertImage', false, surl); + rtewindow.focus(); + + var images = rtewindow.document.getElementsByTagName('img'); + + //---------------------------------- + // Sort through and fix emo + //---------------------------------- + + for ( var i = 0 ; i <= images.length ; i++ ) + { + if ( images[i].src == surl ) + { + if ( ! images[i].getAttribute('emoid') ) + { + images[i].setAttribute( 'emoid', scode ); + images[i].setAttribute( 'border', '0' ); + images[i].style.verticalAlign = 'middle'; + } + } + } + } + else + { + smilieHTML = ''; + wrap_tags( "" + smilieHTML, ""); + } + } + catch(e) + { + //Ssshhhhhh + } + + rtewindow.focus(); + + if ( emowindow != '' && emowindow != 'undefined' ) + { + emowindow.focus(); + } +} + + +/*--------------------------------------------*/ +// Add simple HTML tag +/*--------------------------------------------*/ + +function wrap_tags( opentag, closetag ) +{ + //------------------------------- + // Has closed flag + //------------------------------- + + var has_closed = false; + + if ( ! isRichText ) + { + return; + } + + if ( isIE ) + { + rtewindow.focus(); + var sel = rtewindow.document.selection; + var ts = rtewindow.document.selection.createRange(); + var t = ts.htmlText.replace(/]*)>(.*)<\/p>/i, '$2'); + + if ( (sel.type == "Text" || sel.type == "None") ) + { + has_closed = true; + ts.pasteHTML( opentag + t + closetag ); + } + else + { + has_closed = true; + rtewindow.document.body.innerHTML += opentag + closetag; + } + } + else + { + //------------------------------- + // FRAGment, not a game of UT + //------------------------------- + + var frag = rtewindow.document.createDocumentFragment(); + var span = rtewindow.document.createElement("span"); + + //------------------------------- + // Apply tags... + //------------------------------- + + sel_html = _gecko_get_html(); + + //------------------------------- + // Remove empty span tags + //------------------------------- + var my_contents; + var my_length; + + if ( sel_html ) + { + has_closed = true; + span.innerHTML = opentag + sel_html + closetag; + my_contents = opentag + sel_html + closetag; + } + else + { + span.innerHTML = opentag + closetag; + my_contents = opentag + closetag; + } + + while ( span.firstChild ) + { + frag.appendChild(span.firstChild); + } + + my_length = my_contents.length ? my_contents.length : 0; + + _gecko_insert_node_at_selection( frag, my_length ); + } + + //------------------------------- + // Add tag to stack + //------------------------------- + + rtewindow.focus(); + + return has_closed; +} + +/*--------------------------------------------*/ +// Do fontsize, etc +/*--------------------------------------------*/ + +function do_select(selectname) +{ + if ( isIE ) + { + //------------------------------- + // Get current selected range + //------------------------------- + + var selection = rtewindow.document.selection; + + if (selection != null) + { + rng = selection.createRange(); + } + } + else + { + //------------------------------- + // Get currently selected range + //------------------------------- + + var selection = rtewindow.getSelection(); + + rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); + } + + var idx = document.getElementById(selectname).selectedIndex; + + var selected = document.getElementById(selectname).options[idx].value; + + rtewindow.focus(); + _gecko_kill_css(); + rtewindow.document.execCommand(selectname, false, selected); + rte_button_update( selectname ); + rtewindow.focus(); +} + +/*--------------------------------------------*/ +// Launch fullscreen... +/*--------------------------------------------*/ + +function launch_rte_fs() +{ + if ( viewingFS ) + { + //return false; + } + + //------------------------------- + // If viewing source, switch back + // to design view + //------------------------------- + + if ( viewingHTML ) + { + toggleHTMLSrc(); + } + + viewingFS = 1; + + window.open( ipb_var_base_url + '&act=rtefs', 'RTEFS', 'width=640,height=480,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no'); +} + +/*--------------------------------------------*/ +// Launch div... +/*--------------------------------------------*/ + +function launch_div() +{ + // Could do with sorting this mess out. + + window.open( includesPath + 'insert_div.html', 'DIV', 'width=550,height=340,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no'); +} + +/*--------------------------------------------*/ +// Manage tables... +/*--------------------------------------------*/ + +function write_div( param, pwindow ) +{ + try + { + if ( pwindow ) + { + pwindow.close(); + } + } + catch (e) + { + } + + if ( ! param ) + { + return false; + } + + //------------------------------- + // Build remap array + //------------------------------- + + var remap_elements = { + "f_fontfamily" : "font-family" , + "f_fontsize" : "font-size" , + "f_color" : "color" , + "f_backgroundimage" : "background-image" , + "f_backgroundrepeat" : "background-repeat", + "f_backgroundcolor" : "background-color" , + "f_border" : "border" , + "f_padding" : "padding" , + "f_margin" : "margin" + }; + + //------------------------------- + // Get tag type + //------------------------------- + + var tagtype = param["f_type"]; + var style = ""; + + if ( ! param["f_classes"] || param["f_classes"] == "__none" ) + { + //------------------------------- + // Start building style + //------------------------------- + + style += "style='"; + + for (var field in param) + { + var value = param[field]; + + if ( ! value || value == 'undefined' || field == 'undefined' || ! remap_elements[ field ] ) + { + continue; + } + + if ( remap_elements[ field ] && value ) + { + style += remap_elements[ field ] + ":" + value + ";"; + } + } + + //------------------------------- + // Finish style + //------------------------------- + + style += param["f_other"]+"'"; + } + else + { + style += "class='" + param["f_classes"] + "'"; + } + + //------------------------------- + // Pass to handler + //------------------------------- + + if ( style ) + { + wrap_tags( "<"+tagtype+" " + style + ">", "" ); + } + else + { + wrap_tags( "<"+tagtype+">", "" ) + } + + return true; +} + +/*--------------------------------------------*/ +// Launch tables... +/*--------------------------------------------*/ + +function launch_table() +{ + // Could do with sorting this mess out. + + window.open( includesPath + 'insert_table.html', 'TABLE', 'width=450,height=220,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no'); +} + +/*--------------------------------------------*/ +// Manage tables... +/*--------------------------------------------*/ + +function write_tables( param, pwindow ) +{ + try + { + if ( pwindow ) + { + pwindow.close(); + } + } + catch (e) + { + } + + var sel = _my_getselection(); + var range = _my_createrange(sel); + + if ( ! param ) + { + return false; + } + + var doc = rtewindow.document; + + //------------------------------- + // create the table element + //------------------------------- + + var table = doc.createElement("table"); + + //------------------------------- + // assign the given arguments + //------------------------------- + + for (var field in param) + { + var value = param[field]; + + if ( ! value ) + { + continue; + } + + switch (field) + { + case "f_width" : table.style.width = value + param["f_unit"]; break; + case "f_align" : table.align = value; break; + case "f_border" : table.border = parseInt(value); break; + case "f_spacing" : table.cellspacing = parseInt(value); break; + case "f_padding" : table.cellpadding = parseInt(value); break; + } + } + + var tbody = doc.createElement("tbody"); + + table.appendChild(tbody); + + for (var i = 0; i < param["f_rows"]; ++i) + { + var tr = doc.createElement("tr"); + + tbody.appendChild(tr); + + for (var j = 0; j < param["f_cols"]; ++j) + { + var td = doc.createElement("td"); + + tr.appendChild(td); + + //------------------------------- + // Mozilla likes to see something + // inside the cell. + //------------------------------- + + if ( ! isIE ) + { + td.appendChild(doc.createElement("br")); + } + } + } + + if ( isIE ) + { + range.pasteHTML(table.outerHTML); + } + else + { + //------------------------------- + // insert the table + //------------------------------- + + _gecko_insert_node_at_selection(table); + } + + return true; +} + + + +/*--------------------------------------------*/ +// KeyBoard Handler +/*--------------------------------------------*/ + +function kb_handler(evt) +{ + var rte = evt.target.id; + + if (evt.ctrlKey) + { + var key = String.fromCharCode(evt.charCode).toLowerCase(); + var cmd = ''; + + switch (key) + { + case 'b': cmd = "bold"; break; + case 'i': cmd = "italic"; break; + case 'u': cmd = "underline"; break; + }; + + if (cmd) + { + format_text(cmd, true); + + //------------------------------- + // evt.target.ownerDocument.execCommand(cmd, false, true); + // stop the event bubble + //------------------------------- + + evt.preventDefault(); + evt.stopPropagation(); + } + } +} + +function docChanged (evt) +{ + alert('changed'); +} + +/*--------------------------------------------*/ +// Get selection (MY) +/*--------------------------------------------*/ + +function _my_getselection() +{ + if ( isIE ) + { + return rtewindow.document.selection; + } + else + { + return rtewindow.getSelection(); + } +} + +/*--------------------------------------------*/ +// Create Range (my) +/*--------------------------------------------*/ + +function _my_createrange( sel ) +{ + if ( isIE ) + { + return sel.createRange(); + } + else + { + rtewindow.focus(); + return sel ? sel.getRangeAt(0) : rtewindow.document.createRange(); + } +} + +/*--------------------------------------------*/ +// Gecko work around to get selection HTML +/*--------------------------------------------*/ + +function _gecko_get_html() +{ + var sel = _my_getselection(); + var range = _my_createrange(sel); + var root = range.cloneContents(); + + return _gecko_read_nodes(root, false); +} + +/*--------------------------------------------*/ +// Gecko read nodes (based on midas) +/*--------------------------------------------*/ + +function _gecko_read_nodes(root, toptag) +{ + var html = ""; + var moz_check = /_moz/i; + + switch (root.nodeType) + { + case Node.ELEMENT_NODE: + case Node.DOCUMENT_FRAGMENT_NODE: + { + var closed; + + if (toptag) + { + closed = !root.hasChildNodes(); + html = '<' + root.tagName.toLowerCase(); + var attr = root.attributes; + for (i = 0; i < attr.length; ++i) + { + var a = attr.item(i); + + if (!a.specified || a.name.match(moz_check) || a.value.match(moz_check)) + { + continue; + } + + html += " " + a.name.toLowerCase() + '="' + a.value + '"'; + } + html += closed ? " />" : ">"; + } + for (var i = root.firstChild; i; i = i.nextSibling) + { + html += _gecko_read_nodes(i, true); + } + if (toptag && !closed) + { + html += ""; + } + } + break; + + case Node.TEXT_NODE: + { + html = htmlspecialchars(root.data); + } + break; + } + return html; +} + + +/*--------------------------------------------*/ +// Gecko insert html mode at selection (midas) +/*--------------------------------------------*/ + +function _gecko_insert_node_at_selection(text, text_length) +{ + var sel = _my_getselection(); + var range = _my_createrange(sel); + + var node = range.startContainer; + var pos = range.startOffset; + + text_length = text_length ? text_length : 0; + + sel.removeAllRanges(); + range.deleteContents(); + + //=============================== + // Suggested fix by Dean - thx! + // Have to switch node to body + // if it's currently at html tag + //=============================== + + if (node.nodeName == 'HTML') + { + node = _goto_parent_then_body(node); + } + + switch (node.nodeType) + { + case 1://Node.ELEMENT_NODE: + { + if (text.nodeType == 11)//Node.DOCUMENT_FRAGMENT_NODE) + { + selNode = text.firstChild; + } + else + { + selNode = text; + } + node.insertBefore(text, node.childNodes[pos]); + _gecko_add_range(selNode, text_length); + } + break; + + case 3://Node.TEXT_NODE: + { + if ( text.nodeType == 3)//Node.TEXT_NODE ) + { + var text_length = pos + text.length; + node.insertData(pos, text.data); + range = rtewindow.document.createRange(); + range.setEnd( node, text_length); + range.setStart(node, text_length); + sel.addRange(range); + } + else + { + node = node.splitText(pos); + var selNode; + if (text.nodeType == 11)//Node.DOCUMENT_FRAGMENT_NODE) + { + selNode = text.firstChild; + } + else + { + selNode = text; + } + node.parentNode.insertBefore(text, node); + _gecko_add_range(selNode, text_length); + } + } + break; + } +} + + +function _goto_parent_then_body(n) +{ + var o = n; + while (n.parentNode != null && n.parentNode.nodeName == 'HTML') + { + n = n.parentNode; + } + + if (n) + { + for (var c=0; c styles + // Not really sure if this needs + // to be fired before each command + // midas shows not, experience shows + // that it does. + //------------------------------- + + if ( ! isIE ) + { + try + { + rtewindow.document.execCommand("useCSS", false, true); + css_off = true; + } + catch (e) + { + css_off = false; + } + } +} + + +/*--------------------------------------------*/ +// Add range of inserted text +/*--------------------------------------------*/ + +function _gecko_add_range(node, text_length) +{ + rtewindow.focus(); + + var sel = rtewindow.getSelection(); + var range = null; + + range = rtewindow.document.createRange(); + range.selectNodeContents(node); + + range.setEnd( node, text_length); + range.setStart(node, text_length); + + sel.removeAllRanges(); + sel.addRange(range); +} + + +/*--------------------------------------------*/ +// IE ONLY: Button raised +/*--------------------------------------------*/ + +function ie_raise_button(e) +{ + var el = window.event.srcElement; + + className = el.className; + + if (className == 'rteimage' || className == 'rteImageLowered') + { + el.className = 'rteImageRaised'; + } +} + +/*--------------------------------------------*/ +// IE ONLY: Normal Button +/*--------------------------------------------*/ + +function ie_normal_button(e) +{ + var el = window.event.srcElement; + + className = el.className; + var command; + + try + { + if ( el.id ) + { + command = el.id.toString(); + command = command.replace( /do_/, "" ); + } + } + catch (e) + { + // Who cares + } + + if (className == 'rteImageRaised' || className == 'rteImageLowered') + { + if ( ! command || button_status[ command ] != true ) + { + el.className = 'rteimage'; + } + else + { + el.className = 'rteImageRaised'; + } + } +} + +/*--------------------------------------------*/ +// IE ONLY: Lowered Button +/*--------------------------------------------*/ + +function ie_lower_button(e) +{ + var el = window.event.srcElement; + + className = el.className; + + if (className == 'rteimage' || className == 'rteImageRaised') + { + el.className = 'rteImageLowered'; + } +} + +/*--------------------------------------------*/ +// Strip HTML +/*--------------------------------------------*/ + +function strip_html(oldString) +{ + var newString = oldString.replace(/(<([^>]+)>)/ig,""); + + //------------------------------- + //replace carriage returns and line feeds + //------------------------------- + + newString = newString.replace(/\r\n/g," "); + newString = newString.replace(/\n/g," "); + newString = newString.replace(/\r/g," "); + + //------------------------------- + //trim string + //------------------------------- + + newString = trim(newString); + + return newString; +} + +/*--------------------------------------------*/ +// Newlines safe +/*--------------------------------------------*/ + +function make_newlines_safe(t) +{ + //t = t.replace(/\n/g,'\\n'); + + //------------------------------- + //replace carriage returns and line feeds + //------------------------------- + + //t = t.replace(/\r/g,'\\r'); + + //------------------------------- + //trim string + //------------------------------- + + //t = trim(t); + + return t; +} + +/*--------------------------------------------*/ +// TRIM +/*--------------------------------------------*/ + +function trim(inputString) +{ + //------------------------------- + // Removes leading and trailing spaces from the passed string. Also removes + // consecutive spaces and replaces it with one space. If something besides + // a string is passed in (null, custom object, etc.) then return the input. + //------------------------------- + + if (typeof inputString != "string") return inputString; + var retValue = inputString; + var ch = retValue.substring(0, 1); + + while (ch == " ") + { + //------------------------------- + // Check for spaces at the beginning of the string + //------------------------------- + + retValue = retValue.substring(1, retValue.length); + ch = retValue.substring(0, 1); + } + + ch = retValue.substring(retValue.length - 1, retValue.length); + + while (ch == " ") + { + //------------------------------- + // Check for spaces at the end of the string + //------------------------------- + + retValue = retValue.substring(0, retValue.length - 1); + ch = retValue.substring(retValue.length - 1, retValue.length); + } + + //------------------------------- + // Note that there are two spaces + // in the string - look for multiple + // spaces within the string + //------------------------------- + + while (retValue.indexOf(" ") != -1) + { + //------------------------------- + // Again, there are two spaces in each of the strings + //------------------------------- + retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length); + } + + return retValue; +} + +//*-------------------------------------------------------------------------*/ +// Validate form (must always have this method defined!) +/*-------------------------------------------------------------------------*/ + +function ValidateForm( isMsg ) +{ + //----------------------------------------- + // Sync RTE + //----------------------------------------- + + update_rte(); + + MessageLength = 3; //postfieldobj.value.length; + errors = ""; + + //----------------------------------------- + // Check for remove attachments + //----------------------------------------- + + try + { + if ( postformobj.removeattachid.value > 0 ) + { + okdelete = confirm( js_remove_attach ); + + if ( okdelete == true ) + { + return true; + } + else + { + postformobj.removeattachid.value = 0; + return false; + } + } + } + catch(error) + { + // + } + + if ( isMsg == 1) + { + if ( postformobj.msg_title.value.length < 2 ) + { + errors = js_msg_no_title; + } + } + + if ( MessageLength < 2 ) + { + errors = js_no_message; + } + + if ( MessageMax != 0 ) + { + if (MessageLength > MessageMax) + { + errors = js_max_length + " " + MessageMax + " " + js_characters + ". " + js_current + ": " + MessageLength; + } + } + + if ( errors != "" && Override == "" ) + { + alert(errors); + return false; + } + else + { + try + { + postformobj.submit.disabled = true; + } + catch(e) + { + try + { + postformobj.dosubmit.disabled = true; + } + catch(e) { } + } + return true; + } +} + +/*--------------------------------------------*/ +// HTML SPECIAL CHARACTERS (PHP emulation) +/*--------------------------------------------*/ + +function htmlspecialchars(html) +{ + html = html.replace(/"/, """); + html = html.replace(//, ">"); + return html; +} diff --git a/upload/jscripts/DEPRECATED/ipb_editor_std.js b/upload/jscripts/DEPRECATED/ipb_editor_std.js new file mode 100644 index 00000000..0e6de588 --- /dev/null +++ b/upload/jscripts/DEPRECATED/ipb_editor_std.js @@ -0,0 +1,934 @@ +//------------------------------------------ +// Invision Power Board v2 +// STD Editor Functions +// (c) 2005 Invision Power Services, Inc. +// +// http://www.invisionboard.com +// SHOULD BE CALLED AFTER ipb_editor.js +//------------------------------------------ + +/*-------------------------------------------------------------------------*/ +// INIT +/*-------------------------------------------------------------------------*/ + +var i_am = 'std'; +var rtewindow; +var buttonbar; + +var opentags = +{ + 'b' : 0, + 'i' : 0, + 's' : 0, + 'u' : 0, + 'img' : 0, + 'quote' : 0, + 'left' : 0, + 'center' : 0, + 'right' : 0, + 'color' : 0, + 'background' : 0, + 'indent' : 0, + 'code' : 0 +}; + +var tags_to_div = +{ + 'b' : 'do_bold', + 'i' : 'do_italic', + 's' : 'do_strikethrough', + 'u' : 'do_underline', + 'quote' : 'do_quote', + 'left' : 'do_justifyleft', + 'center' : 'do_justifycenter', + 'right' : 'do_justifyright', + 'color' : 'forecolor', + 'background' : 'hilitecolor', + 'indent' : 'do_indent', + 'code' : 'do_code' +}; + +var rte_to_std = +{ + 'forecolor' : 'color', + 'hilitecolor' : 'background' +}; + +var easymode = 0; + +// IE bug fix +var ie_range_cache = ''; + +/*-------------------------------------------------------------------------*/ +// INIT +/*-------------------------------------------------------------------------*/ + +function init_std_editor() +{ + //-------------------------------------------- + // Pull in width of textarea + //-------------------------------------------- + + try + { + rtewindow = document.getElementById( 'postcontent' ); + oldwidth = parseInt(document.getElementById( 'postcontent' ).style.width); + buttonbar = document.getElementById( 'std-table-buttons' ); + widthunit = document.getElementById( 'postcontent' ).style.width.match( /%/ ) ? '%' : 'px'; + + if ( widthunit == 'px' ) + { + if ( is_opera ) + { + document.getElementById( 'postcontent' ).style.width = oldwidth - 4 + widthunit; + buttonbar.style.width = parseInt( buttonbar.style.width ) - 4 + widthunit; + } + else if ( is_safari ) + { + + } + else + { + document.getElementById( 'postcontent' ).style.width = oldwidth - 6 + widthunit; + } + } + else + { + if ( is_ie || is_moz ) + { + document.getElementById( 'postcontent' ).style.width = oldwidth - 1 + widthunit; + } + } + } + catch(e) + {} + + cvalue = my_getcookie( "bbmode" ); + + if ( cvalue == 1 ) + { + document.getElementById('togglebbmode').value = js_bbeasy_on; + easymode = 1; + } + else + { + document.getElementById('togglebbmode').value = js_bbeasy_off; + easymode = 0; + } + + + faceobj = document.getElementById('fontface'); + faceregex = /\<\!--FONTFACE--\>/gi; + facecontent = faceobj.innerHTML.replace( faceregex, write_fontface_box() ); + faceobj.innerHTML = facecontent; + + sizeobj = document.getElementById('fontsize'); + sizeregex = /\<\!--FONTSIZE--\>/gi; + sizecontent = sizeobj.innerHTML.replace( sizeregex, write_fontsize_box() ); + sizeobj.innerHTML = sizecontent; +} + +/*-------------------------------------------------------------------------*/ +// Toggle button highlighting (used when clicked on) +/*-------------------------------------------------------------------------*/ + +function toggle_button( tag ) +{ + //-------------------------------------------- + // Change the button status + // Ensure we're not looking for FONT, SIZE or COLOR as these + // buttons don't exist, they are select lists instead. + //-------------------------------------------- + + if ( (tag == 'font') || (tag == 'size') ) + { + return; + } + + if ( opentags[ tag ] ) + { + document.getElementById( tags_to_div[ tag ] ).className = 'rteimage'; + + // Turn off + opentags[ tag ] = 0; + } + else + { + document.getElementById( tags_to_div[ tag ] ).className = 'rteImageRaised'; + + // Turn on + opentags[ tag ] = 1; + } +} + +/*-------------------------------------------------------------------------*/ +// Set BBCode mode +/*-------------------------------------------------------------------------*/ + +function toggle_bbmode(mVal) +{ + if ( easymode ) + { + document.getElementById('togglebbmode').value = js_bbeasy_off; + easymode = 0; + } + else + { + document.getElementById('togglebbmode').value = js_bbeasy_on; + easymode = 1; + } + + my_setcookie( 'bbmode', easymode, 1 ); +} + +/*-------------------------------------------------------------------------*/ +// Get easy mode state +/*-------------------------------------------------------------------------*/ + +function get_easy_mode_state() +{ + //-------------------------------------------- + // Returns true if we've chosen easy mode + //-------------------------------------------- + + if ( easymode ) + { + return true; + } + else + { + return false; + } +} + +/*-------------------------------------------------------------------------*/ +// Pop open and set up the color palette +/*-------------------------------------------------------------------------*/ + +function popcolor( command ) +{ + //------------------------------- + // Already open? + //------------------------------- + + if ( opentags[ rte_to_std[ command ] ] ) + { + //-------------------------------------------- + // Smart close tags + //-------------------------------------------- + + smart_close_tags( rte_to_std[ command ] ); + + return false; + } + else + { + //------------------------------- + // Save current values + //------------------------------- + + parent.command = command; + + if ( is_ie ) + { + postfieldobj.focus(); + ie_range_cache = document.selection.createRange(); + } + + //------------------------------- + // Position and show color palette + //------------------------------- + + buttonElement = document.getElementById(command); + + var iLeftPos = getOffsetLeft(buttonElement); + var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30); + + document.getElementById('cp').style.left = (iLeftPos) + "px"; + document.getElementById('cp').style.top = (iTopPos) + "px"; + + if (document.getElementById('cp').style.visibility == "hidden") + { + document.getElementById('cp').style.visibility = "visible"; + document.getElementById('cp').style.display = "inline"; + } + else + { + document.getElementById('cp').style.visibility = "hidden"; + document.getElementById('cp').style.display = "none"; + } + } +} + +/*-------------------------------------------------------------------------*/ +// Write the color +/*-------------------------------------------------------------------------*/ + +function setColor(color) +{ + var parentCommand = parent.command; + + if ( parentCommand == "hilitecolor" ) + { + if ( wrap_tags("[background=" +color+ "]", "[/background]", true ) ) + { + toggle_button( "background" ); + pushstack(bbtags, "background"); + } + } + else + { + if ( wrap_tags("[color=" +color+ "]", "[/color]", true ) ) + { + toggle_button( "color" ); + pushstack(bbtags, "color"); + } + } + + document.getElementById('cp').style.visibility = "hidden"; + document.getElementById('cp').style.display = "none"; +} + +/*-------------------------------------------------------------------------*/ +// EMOTICONS +/*-------------------------------------------------------------------------*/ + +function emoticon(theSmilie) +{ + doInsert(" " + theSmilie + " ", "", false); + + if ( (ua_vers >= 4) && is_ie && is_win && emowindow != '' && emowindow != 'undefined' ) + { + emowindow.focus(); + } +} + +/*-------------------------------------------------------------------------*/ +// ALTER FONT +/*-------------------------------------------------------------------------*/ + +function alterfont(theval, thetag) +{ + if (theval == 0) + { + return; + } + + if ( wrap_tags("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true ) ) + { + pushstack(bbtags, thetag); + } + + postformobj.ffont.selectedIndex = 0; + postformobj.fsize.selectedIndex = 0; +} + +/*-------------------------------------------------------------------------*/ +// SIMPLE TAGS (such as B, I S U, etc) +/*-------------------------------------------------------------------------*/ + +function simpletag(thetag) +{ + var tagOpen = opentags[ thetag ]; + + if ( get_easy_mode_state() ) + { + inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]"); + + if ( (inserttext != null) && (inserttext != "") ) + { + wrap_tags("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false); + } + } + else + { + if ( tagOpen == 0 ) + { + if ( wrap_tags("[" + thetag + "]", "[/" + thetag + "]", true ) ) + { + //-------------------------------------------- + // Toggle + //-------------------------------------------- + + toggle_button( thetag ); + + pushstack(bbtags, thetag); + } + } + else + { + //-------------------------------------------- + // Smart close tags + //-------------------------------------------- + + smart_close_tags( thetag ); + } + } +} + +/*-------------------------------------------------------------------------*/ +// List tag +/*-------------------------------------------------------------------------*/ + +function tag_list( type ) +{ + var listvalue = "init"; + var thelist = ""; + + opentag = ( type == 'ordered' ) ? '[list=1]' : '[list]'; + + while ( (listvalue != "") && (listvalue != null) ) + { + listvalue = prompt(list_prompt, ""); + + if ( (listvalue != "") && (listvalue != null) ) + { + thelist = thelist+"[*]"+listvalue+"\n"; + } + } + + if ( thelist != "" ) + { + wrap_tags( opentag + "\n" + thelist + "[/list]\n", ""); + } +} + +/*-------------------------------------------------------------------------*/ +// URL tag +/*-------------------------------------------------------------------------*/ + +function tag_url() +{ + var FoundErrors = ''; + + //---------------------------------------- + // Do we have ranged text? + //---------------------------------------- + + if ( check_range() ) + { + //---------------------------------------- + // Yes, just ask for the URL and wrap + //---------------------------------------- + + var enterURL = prompt(text_enter_url, "http://"); + + if ( ! enterURL) + { + alert(error_no_url); + return; + } + + wrap_tags( "[url="+enterURL+"]", "[/url]", "" ); + } + else + { + var enterURL = prompt(text_enter_url, "http://"); + var enterTITLE = prompt(text_enter_url_name, jsfile_myweb_lang ); + + if ( ! enterURL) + { + FoundErrors += " " + error_no_url; + } + if ( ! enterTITLE) + { + FoundErrors += " " + error_no_title; + } + + if ( FoundErrors ) + { + alert( jsfile_error_lang +FoundErrors); + return; + } + + wrap_tags("[url="+enterURL+"]"+enterTITLE+"[/url]", ""); + } +} + +/*-------------------------------------------------------------------------*/ +// Image tag +/*-------------------------------------------------------------------------*/ + +function tag_image() +{ + var FoundErrors = ''; + + //---------------------------------------- + // Do we have ranged text? + //---------------------------------------- + + if ( check_range() ) + { + //---------------------------------------- + // Yes, just wrap text + //---------------------------------------- + + wrap_tags( "[img]", "[/img]", "" ); + } + else + { + var enterURL = prompt(text_enter_image, "http://"); + + if ( ! enterURL ) + { + alert(error_no_url); + return; + } + + wrap_tags("[img]"+enterURL+"[/img]", ""); + } +} + +/*-------------------------------------------------------------------------*/ +// Email tag +/*-------------------------------------------------------------------------*/ + +function tag_email() +{ + //---------------------------------------- + // Do we have ranged text? + //---------------------------------------- + + if ( check_range() ) + { + //---------------------------------------- + // Yes, just wrap text + //---------------------------------------- + + wrap_tags( "[email]", "[/email]", "" ); + } + else + { + var emailAddress = prompt(text_enter_email, ""); + + if ( ! emailAddress ) + { + alert(error_no_email); + return; + } + + wrap_tags( "[email]"+emailAddress+"[/email]", "" ); + } +} + +/*-------------------------------------------------------------------------*/ +// Do we have ranged text? +/*-------------------------------------------------------------------------*/ + +function check_range() +{ + var has_range = false; + + //---------------------------------------- + // It's IE! + //---------------------------------------- + + if ( (ua_vers >= 4) && is_ie && is_win ) + { + var sel = document.selection; + var rng = sel.createRange(); + rng.colapse; + + if ( (sel.type == "Text" || sel.type == "None") && rng != null ) + { + if ( rng.text.length > 0) + { + has_range = true; + } + } + } + + //---------------------------------------- + // It's MOZZY! + //---------------------------------------- + + else if ( postfieldobj.selectionEnd ) + { + var ss = postfieldobj.selectionStart; + var st = postfieldobj.scrollTop; + var es = postfieldobj.selectionEnd; + + if (es <= 2) + { + es = postfieldobj.textLength; + } + + var start = (postfieldobj.value).substring(0, ss); + var middle = (postfieldobj.value).substring(ss, es); + var end = (postfieldobj.value).substring(es, postfieldobj.textLength); + + //----------------------------------- + // text range? + //----------------------------------- + + if (postfieldobj.selectionEnd - postfieldobj.selectionStart > 0) + { + has_range = true; + } + } + + return has_range; +} + +/*-------------------------------------------------------------------------*/ +// Check message length +/*-------------------------------------------------------------------------*/ + +function check_length() +{ + MessageLength = postfieldobj.value.length; + message = ""; + + if (MessageMax > 0) + { + message = js_post + ": " + js_max_length + " " + MessageMax + " " + js_characters +"."; + } + else + { + message = ""; + } + + alert(message + " " + js_used + " " + MessageLength + " " + js_characters + "."); +} + +/*-------------------------------------------------------------------------*/ +// GENERAL INSERT FUNCTION +// opentext : opening tag +// closetext: closing tag, used if we have selected text +/*-------------------------------------------------------------------------*/ + +function wrap_tags(opentext, closetext, issingle) +{ + var has_closed = false; + + if ( ! issingle ) + { + issingle = false; + } + + //---------------------------------------- + // It's IE! + //---------------------------------------- + + if ( (ua_vers >= 4) && is_ie && is_win ) + { + if ( postfieldobj.isTextEdit ) + { + postfieldobj.focus(); + + var sel = document.selection; + + var rng = ie_range_cache ? ie_range_cache : sel.createRange(); + + var stored_range = rng.duplicate() + stored_range.moveToElementText( postfieldobj ); + stored_range.setEndPoint( 'EndToEnd', rng ); + + // Stores start position of text selection + postfieldobj.selectionStart = stored_range.text.length - rng.text.length; + // Stores end position of text selection + postfieldobj.selectionEnd = postfieldobj.selectionStart + rng.text.length; + + rng.colapse; + + if ( (sel.type == "Text" || sel.type == "None") && rng != null) + { + if (closetext != "" && rng.text && rng.text.length > 0) + { + opentext += rng.text + closetext; + } + else if ( issingle ) + { + has_closed = true; + } + + rng.text = rng.text.charAt(rng.text.length - 1) == ' ' ? opentext + ' ' : opentext; + } + else + { + postfieldobj.value += opentext; + has_closed = true; + } + } + else + { + postfieldobj.value += opentext; + has_closed = true; + } + + ie_range_cache = null; + + rng.select(); + } + + //---------------------------------------- + // It's MOZZY! + //---------------------------------------- + + else if ( postfieldobj.selectionEnd ) + { + var ss = postfieldobj.selectionStart; + var st = postfieldobj.scrollTop; + var es = postfieldobj.selectionEnd; + + if (es <= 0) + { + es = postfieldobj.textLength; + } + + var start = (postfieldobj.value).substring(0, ss); + var middle = (postfieldobj.value).substring(ss, es); + var end = (postfieldobj.value).substring(es, postfieldobj.textLength); + + //----------------------------------- + // text range? + //----------------------------------- + + if ( postfieldobj.selectionEnd - postfieldobj.selectionStart > 0 ) + { + middle = opentext + middle + closetext; + } + else + { + middle = opentext + middle; + + if ( issingle ) + { + has_closed = true; + } + } + + postfieldobj.value = start + middle + end; + + var cpos = ss + (middle.length); + + postfieldobj.selectionStart = cpos; + postfieldobj.selectionEnd = cpos; + postfieldobj.scrollTop = st; + } + + //---------------------------------------- + // It's CRAPPY! + //---------------------------------------- + + else + { + if ( issingle ) + { + has_closed = false; + } + + postfieldobj.value += opentext + ' ' + closetext; + } + + postfieldobj.focus(); + + return has_closed; +} + +/*--------------------------------------------*/ +// Make current STD window (n)px bigger +/*--------------------------------------------*/ + +function std_window_resize( pix ) +{ + var box = postfieldobj; + var cur_height = parseInt( box.style.height ) ? parseInt( box.style.height ) : 300; + var new_height = cur_height + pix; + + if ( new_height > 0 ) + { + box.style.height = new_height + "px"; + } + + return false; +} + +/*-------------------------------------------------------------------------*/ +// Validate form (must always have this method defined!) +/*-------------------------------------------------------------------------*/ + +function ValidateForm( isMsg ) +{ + MessageLength = postfieldobj.value.length; + errors = ""; + + //----------------------------------------- + // Check for remove attachments + //----------------------------------------- + + try + { + if ( postformobj.removeattachid.value > 0 ) + { + okdelete = confirm( js_remove_attach ); + + if ( okdelete == true ) + { + return true; + } + else + { + postformobj.removeattachid.value = 0; + return false; + } + } + } + catch(error) + { + // + } + + if ( isMsg == 1) + { + if ( postformobj.msg_title.value.length < 2 ) + { + errors = js_msg_no_title; + } + } + + if ( MessageLength < 2 ) + { + errors = js_no_message; + } + + if ( MessageMax !=0 ) + { + if (MessageLength > MessageMax) + { + errors = js_max_length + " " + MessageMax + " " + js_characters + ". " + js_current + ": " + MessageLength; + } + } + + if ( errors != "" && ! Override ) + { + alert(errors); + return false; + } + + else + { + try + { + postformobj.submit.disabled = true; + } + catch(e) + { + try + { + postformobj.dosubmit.disabled = true; + } + catch(e) { } + } + + return true; + } +} + + +function doInsert(ibTag, ibClsTag, isSingle) +{ + var isClose = false; + var obj_ta = fombj.Post; + + //---------------------------------------- + // It's IE! + //---------------------------------------- + if ( (ua_vers >= 4) && is_ie && is_win) + { + if (obj_ta.isTextEdit) + { + obj_ta.focus(); + var sel = document.selection; + var rng = sel.createRange(); + rng.colapse; + if((sel.type == "Text" || sel.type == "None") && rng != null) + { + if(ibClsTag != "" && rng.text.length > 0) + ibTag += rng.text + ibClsTag; + else if(isSingle) + isClose = true; + + rng.text = ibTag; + } + } + else + { + if(isSingle) + { + isClose = true; + } + + obj_ta.value += ibTag; + } + } + //---------------------------------------- + // It's MOZZY! + //---------------------------------------- + + else if ( obj_ta.selectionEnd ) + { + var ss = obj_ta.selectionStart; + var st = obj_ta.scrollTop; + var es = obj_ta.selectionEnd; + + if (es <= 2) + { + es = obj_ta.textLength; + } + + var start = (obj_ta.value).substring(0, ss); + var middle = (obj_ta.value).substring(ss, es); + var end = (obj_ta.value).substring(es, obj_ta.textLength); + + //----------------------------------- + // text range? + //----------------------------------- + + if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) + { + middle = ibTag + middle + ibClsTag; + } + else + { + middle = ibTag + middle; + + if (isSingle) + { + isClose = true; + } + } + + obj_ta.value = start + middle + end; + + var cpos = ss + (middle.length); + + obj_ta.selectionStart = cpos; + obj_ta.selectionEnd = cpos; + obj_ta.scrollTop = st; + + + } + //---------------------------------------- + // It's CRAPPY! + //---------------------------------------- + else + { + if (isSingle) + { + isClose = true; + } + + obj_ta.value += ibTag; + } + + obj_ta.focus(); + + return isClose; +} +var bbtags = new Array(); + +var fombj = document.REPLIER; + + + diff --git a/upload/jscripts/dom-drag.js b/upload/jscripts/dom-drag.js index 6133e742..7cbf6114 100644 --- a/upload/jscripts/dom-drag.js +++ b/upload/jscripts/dom-drag.js @@ -1,214 +1 @@ -/************************************************** - * dom-drag.js - * 09.25.2001 - * www.youngpup.net - ************************************************** - * 10.28.2001 - fixed minor bug where events - * sometimes fired off the handle, not the root. - ************************************************** - * IPS CHANGES - * 06.01.2005 - Added "cursorchange" to change - * 07.18.2005 - Added cookie to store values - * 07.18.2005 - Made it impossible to drag < 0 height (keeponscreen) - * mouse cursor when over drag handle - **************************************************/ - - -var Drag = { - - obj : null, - fx : null, - fy : null, - cookiename : null, - keeponscreen: true, - - init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper) - { - o.onmousedown = Drag.start; - o.onmouseover = Drag.cursorchange; - - o.hmode = bSwapHorzRef ? false : true ; - o.vmode = bSwapVertRef ? false : true ; - - o.root = oRoot && oRoot != null ? oRoot : o ; - - if (o.hmode && isNaN(parseInt(o.root.style.left ))) o.root.style.left = "0px"; - if (o.vmode && isNaN(parseInt(o.root.style.top ))) o.root.style.top = "0px"; - if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right = "0px"; - if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px"; - - o.minX = typeof minX != 'undefined' ? minX : null; - o.minY = typeof minY != 'undefined' ? minY : null; - o.maxX = typeof maxX != 'undefined' ? maxX : null; - o.maxY = typeof maxY != 'undefined' ? maxY : null; - - o.xMapper = fXMapper ? fXMapper : null; - o.yMapper = fYMapper ? fYMapper : null; - - //---------------------------------- - // Figure width and height - //---------------------------------- - - if ( Drag.keeponscreen ) - { - Drag.my_width = 0; - Drag.my_height = 0; - - if ( typeof( window.innerWidth ) == 'number' ) - { - //---------------------------------- - // Non IE - //---------------------------------- - - Drag.my_width = window.innerWidth; - Drag.my_height = window.innerHeight; - } - else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) - { - //---------------------------------- - // IE 6+ - //---------------------------------- - - Drag.my_width = document.documentElement.clientWidth; - Drag.my_height = document.documentElement.clientHeight; - } - else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) - { - //---------------------------------- - // Old IE - //---------------------------------- - - Drag.my_width = document.body.clientWidth; - Drag.my_height = document.body.clientHeight; - } - } - - o.root.onDragStart = new Function(); - o.root.onDragEnd = new Function(); - o.root.onDrag = new Function(); - }, - - cursorchange : function(e) - { - var o = Drag.obj = this; - o.style.cursor = 'move'; - }, - - start : function(e) - { - var o = Drag.obj = this; - e = Drag.fixE(e); - var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom); - var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right ); - o.root.onDragStart(x, y); - - o.lastMouseX = e.clientX; - o.lastMouseY = e.clientY; - - if (o.hmode) { - if (o.minX != null) o.minMouseX = e.clientX - x + o.minX; - if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX; - } else { - if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x; - if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x; - } - - if (o.vmode) { - if (o.minY != null) o.minMouseY = e.clientY - y + o.minY; - if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY; - } else { - if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y; - if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y; - } - - document.onmousemove = Drag.drag; - document.onmouseup = Drag.end; - - return false; - }, - - drag : function(e) - { - e = Drag.fixE(e); - var o = Drag.obj; - - var ey = e.clientY; - var ex = e.clientX; - var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom); - var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right ); - var nx, ny; - - if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX); - if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX); - if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY); - if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY); - - nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1)); - ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1)); - - if (o.xMapper) nx = o.xMapper(y) - else if (o.yMapper) ny = o.yMapper(x) - - //---------------------------------- - // Keep on screen? - //---------------------------------- - - if ( Drag.keeponscreen ) - { - ny = ny < 0 ? 0 : ny; - nx = nx < 0 ? 0 : nx; - - if ( Drag.my_width ) - { - nx = nx > Drag.my_width - parseInt(o.root.style.width) ? Drag.my_width - parseInt(o.root.style.width) : nx; - } - } - - Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px"; - Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px"; - Drag.obj.lastMouseX = ex; - Drag.obj.lastMouseY = ey; - - Drag.obj.root.onDrag(nx, ny); - return false; - }, - - end : function() - { - document.onmousemove = null; - document.onmouseup = null; - Drag.obj.root.onDragEnd( parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), - parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"])); - - var o = Drag.obj; - - fy = parseInt( o.root.style.top ); - fx = parseInt( o.root.style.left ); - - //---------------------------------- - // Store in a cookie? - //---------------------------------- - - if ( Drag.cookiename ) - { - try - { - my_setcookie( Drag.cookiename, fx+','+fy, 1 ); - } - catch(e) - { - } - } - - Drag.obj = null; - - }, - - fixE : function(e) - { - if (typeof e == 'undefined') e = window.event; - if (typeof e.layerX == 'undefined') e.layerX = e.offsetX; - if (typeof e.layerY == 'undefined') e.layerY = e.offsetY; - return e; - } -}; \ No newline at end of file +var Drag={obj:null,fx:null,fy:null,cookiename:null,keeponscreen:true,init:function(o,oRoot,minX,maxX,minY,maxY,bSwapHorzRef,bSwapVertRef,fXMapper,fYMapper){o.onmousedown=Drag.start;o.onmouseover=Drag.cursorchange;o.hmode=bSwapHorzRef?false:true;o.vmode=bSwapVertRef?false:true;o.root=oRoot&&oRoot!=null?oRoot:o;if(o.hmode&&isNaN(parseInt(o.root.style.left)))o.root.style.left="0px";if(o.vmode&&isNaN(parseInt(o.root.style.top)))o.root.style.top="0px";if(!o.hmode&&isNaN(parseInt(o.root.style.right)))o.root.style.right="0px";if(!o.vmode&&isNaN(parseInt(o.root.style.bottom)))o.root.style.bottom="0px";o.minX=typeof minX!='undefined'?minX:null;o.minY=typeof minY!='undefined'?minY:null;o.maxX=typeof maxX!='undefined'?maxX:null;o.maxY=typeof maxY!='undefined'?maxY:null;o.xMapper=fXMapper?fXMapper:null;o.yMapper=fYMapper?fYMapper:null;if(Drag.keeponscreen){Drag.my_width=0;Drag.my_height=0;if(typeof(window.innerWidth)=='number'){Drag.my_width=window.innerWidth;Drag.my_height=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){Drag.my_width=document.documentElement.clientWidth;Drag.my_height=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){Drag.my_width=document.body.clientWidth;Drag.my_height=document.body.clientHeight;}}o.root.onDragStart=new Function();o.root.onDragEnd=new Function();o.root.onDrag=new Function();},cursorchange:function(e){var o=Drag.obj=this;o.style.cursor='move';},start:function(e){var o=Drag.obj=this;e=Drag.fixE(e);var y=parseInt(o.vmode?o.root.style.top:o.root.style.bottom);var x=parseInt(o.hmode?o.root.style.left:o.root.style.right);o.root.onDragStart(x,y);o.lastMouseX=e.clientX;o.lastMouseY=e.clientY;if(o.hmode){if(o.minX!=null)o.minMouseX=e.clientX-x+o.minX;if(o.maxX!=null)o.maxMouseX=o.minMouseX+o.maxX-o.minX;}else{if(o.minX!=null)o.maxMouseX=-o.minX+e.clientX+x;if(o.maxX!=null)o.minMouseX=-o.maxX+e.clientX+x;}if(o.vmode){if(o.minY!=null)o.minMouseY=e.clientY-y+o.minY;if(o.maxY!=null)o.maxMouseY=o.minMouseY+o.maxY-o.minY;}else{if(o.minY!=null)o.maxMouseY=-o.minY+e.clientY+y;if(o.maxY!=null)o.minMouseY=-o.maxY+e.clientY+y;}document.onmousemove=Drag.drag;document.onmouseup=Drag.end;return false;},drag:function(e){e=Drag.fixE(e);var o=Drag.obj;var ey=e.clientY;var ex=e.clientX;var y=parseInt(o.vmode?o.root.style.top:o.root.style.bottom);var x=parseInt(o.hmode?o.root.style.left:o.root.style.right);var nx,ny;if(o.minX!=null)ex=o.hmode?Math.max(ex,o.minMouseX):Math.min(ex,o.maxMouseX);if(o.maxX!=null)ex=o.hmode?Math.min(ex,o.maxMouseX):Math.max(ex,o.minMouseX);if(o.minY!=null)ey=o.vmode?Math.max(ey,o.minMouseY):Math.min(ey,o.maxMouseY);if(o.maxY!=null)ey=o.vmode?Math.min(ey,o.maxMouseY):Math.max(ey,o.minMouseY);nx=x+((ex-o.lastMouseX)*(o.hmode?1:-1));ny=y+((ey-o.lastMouseY)*(o.vmode?1:-1));if(o.xMapper)nx=o.xMapper(y);else if(o.yMapper)ny=o.yMapper(x);if(Drag.keeponscreen){ny=ny<0?0:ny;nx=nx<0?0:nx;if(Drag.my_width){nx=nx>Drag.my_width-parseInt(o.root.style.width)?Drag.my_width-parseInt(o.root.style.width):nx;}}Drag.obj.root.style[o.hmode?"left":"right"]=nx+"px";Drag.obj.root.style[o.vmode?"top":"bottom"]=ny+"px";Drag.obj.lastMouseX=ex;Drag.obj.lastMouseY=ey;Drag.obj.root.onDrag(nx,ny);return false;},end:function(){document.onmousemove=null;document.onmouseup=null;Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style[Drag.obj.hmode?"left":"right"]),parseInt(Drag.obj.root.style[Drag.obj.vmode?"top":"bottom"]));var o=Drag.obj;fy=parseInt(o.root.style.top);fx=parseInt(o.root.style.left);if(Drag.cookiename){try{ipsclass.my_setcookie(Drag.cookiename,fx+','+fy,1);}catch(e){}}Drag.obj=null;},addEvent:function(elm,evType,fn,useCapture){if(elm.addEventListener){elm.addEventListener(evType,fn,useCapture);return true;}else if(elm.attachEvent){var r=elm.attachEvent('on'+evType,fn);return r;}else{elm['on'+evType]=fn;}},fixE:function(e){if(typeof e=='undefined')e=window.event;if(typeof e.layerX=='undefined')e.layerX=e.offsetX;if(typeof e.layerY=='undefined')e.layerY=e.offsetY;return e;}}; diff --git a/upload/jscripts/folder_rte_files/blank.html b/upload/jscripts/folder_rte_files/blank.html new file mode 100644 index 00000000..65238c08 --- /dev/null +++ b/upload/jscripts/folder_rte_files/blank.html @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/upload/jscripts/folder_rte_files/module_bbcodeloader.php b/upload/jscripts/folder_rte_files/module_bbcodeloader.php new file mode 100644 index 00000000..c50708d7 --- /dev/null +++ b/upload/jscripts/folder_rte_files/module_bbcodeloader.php @@ -0,0 +1,237 @@ + + + Insert Custom BBCode + + + + + + + +

    Insert
    + +
    +Example +
    +
    + +
    + +
    + + + +
    +Content Text +
    + + + + + + +
    +
    + +
    + + +
    +
    + + +
    + + + + + diff --git a/upload/jscripts/folder_rte_files/module_div.php b/upload/jscripts/folder_rte_files/module_div.php new file mode 100644 index 00000000..a77b4844 --- /dev/null +++ b/upload/jscripts/folder_rte_files/module_div.php @@ -0,0 +1,264 @@ + + + Insert Div/Span + + + + + + + +
    Insert DIV/SPAN
    + +
    + + + + + + + +
    Type: +
    + +
    + +
    +Font + + + + + + + + + + + + + + + +
    Family:
    Size:
    Color:
    +
    + +
    + +
    +Background + + + + + + + + + + + + + + + +
    Image:
    Repeat:
    Color:
    +
    + +
    + +
    +Box Model + + + + + + + + + + + + + + + +
    Border:
    Padding:
    Margin:
    +
    + +
    +Custom Elements + + + + + + +
    +
    + + +
    +
    + + +
    + +
    + + + diff --git a/upload/jscripts/folder_rte_files/module_email.php b/upload/jscripts/folder_rte_files/module_email.php new file mode 100644 index 00000000..f479331c --- /dev/null +++ b/upload/jscripts/folder_rte_files/module_email.php @@ -0,0 +1,208 @@ + + + Insert Div/Span + + + + + + + +
    Insert Email
    + +
    + +
    +Email Address + + + + + + +
    +
    + +
    + +
    +Email Text + + + + + + +
    +
    + +
    + +
    +
    + + +
    + +
    + + + diff --git a/upload/jscripts/folder_rte_files/module_image.php b/upload/jscripts/folder_rte_files/module_image.php new file mode 100644 index 00000000..44eb8806 --- /dev/null +++ b/upload/jscripts/folder_rte_files/module_image.php @@ -0,0 +1,231 @@ + + + Insert Div/Span + + + + + + + +
    Insert Image
    + +
    + +
    +Image Location + + + + + + +
    +
    + + + + +
    + + + + + +
    +
    + + +
    + +
    + + + diff --git a/upload/jscripts/folder_rte_files/module_link.php b/upload/jscripts/folder_rte_files/module_link.php new file mode 100644 index 00000000..a3c365f6 --- /dev/null +++ b/upload/jscripts/folder_rte_files/module_link.php @@ -0,0 +1,260 @@ + + + Insert Div/Span + + + + + + + +
    Insert Link
    + +
    + +
    +Link Location + + + + + + +
    +
    + +
    + +
    +Link Text + + + + + + +
    +
    + + + +
    + + + + + +
    +
    + + +
    + +
    + + + diff --git a/upload/jscripts/folder_rte_files/module_table.php b/upload/jscripts/folder_rte_files/module_table.php new file mode 100644 index 00000000..ee8ecb66 --- /dev/null +++ b/upload/jscripts/folder_rte_files/module_table.php @@ -0,0 +1,299 @@ + + + + + + Insert Table + + + + + + + + +
    Insert Table
    + +
    +
    +Basics + + + + + + + + + + + + + + + +
    Rows:
    Cols:
    Width: + +
    +
    + +
    + +
    +Layout + + + + + + + +
    Alignment: + +
    +
    + +
    + +
    +Spacing + + + + + + + + + + + + + + + +
    Cell Spacing:
    Cell Padding:
    Border thickness: +
    +
    + +
    +
    + + +
    + +
    + + + diff --git a/upload/jscripts/folder_rte_files/rte_html_functions.js b/upload/jscripts/folder_rte_files/rte_html_functions.js new file mode 100644 index 00000000..b5d8a683 --- /dev/null +++ b/upload/jscripts/folder_rte_files/rte_html_functions.js @@ -0,0 +1,143 @@ +//------------------------------------------------------------------------------ +// IPS Cross-Browser Global Text Editor HTML +//------------------------------------------------------------------------------ +// Supports all "v5" browsers (inc. Opera, Safari, etc) +// Used for non RTE applications. +// (c) 2005 Invision Power Services, Inc. +// http://www.invisionpower.com +//------------------------------------------------------------------------------ + + +/** +* Rich Text Editor HTML Functions +*/ +function rte_html_functions() +{ + /** + * Main control bar object + * @var object Main control bar object + */ + this.control_obj = false; + /** + * Editor ID + */ + this.editor_id = false; + /** + * Current open bar object + */ + this.current_bar_object = null; + + /** + * Main init function + * Nothing much to do + */ + this.init = function() + { + } + + /** + * Show new control bar + * + * @param type Type of control bar (must be same as function key) + */ + this.show_control_bar = function( type ) + { + if ( ! this.control_obj ) + { + return; + } + + //----------------------------------------- + // Already open? Kill it + //----------------------------------------- + + if ( this.current_bar_object ) + { + this.remove_control_bar(); + } + + var mainbar = document.getElementById( 'rte-main-bar'); + var addtobar = document.getElementById( 'rte-hidden-items' ); + + //----------------------------------------- + // Spawn new DIV object + //----------------------------------------- + + var newdiv = document.createElement('div'); + + newdiv.id = this.editor_id + '_htmlblock_' + type + '_menu'; + newdiv.style.display = ''; + newdiv.className = 'rte-buttonbar'; + newdiv.style.zIndex = parseInt( this.control_obj.style.zIndex ) + 1; + newdiv.style.position = 'absolute'; + newdiv.style.width = '220px'; + newdiv.style.height = '400px'; + newdiv.style.top = ipsclass.get_obj_toppos( mainbar ) + 'px'; + newdiv.style.left = ipsclass.get_obj_leftpos( mainbar ) - ( parseInt(newdiv.style.width) + 10 ) + 'px'; + + var tmpheight = parseInt(newdiv.style.height) - 15; + newdiv.innerHTML = this.wrap_html_panel( "" ); + + //----------------------------------------- + // Add and show + //----------------------------------------- + + addtobar.appendChild(newdiv); + + ipsclass.set_unselectable( newdiv ); + + //----------------------------------------- + // INIT Drag + //----------------------------------------- + + var phdl = document.getElementById('rte-pallete-handle'); + + Drag.init( phdl, newdiv ); + + this.current_bar_object = newdiv; + } + + /** + * Remove control bar + * Removes the control bar. + */ + this.remove_control_bar = function() + { + if ( ! this.current_bar_object ) + { + return; + } + + var addtobar = document.getElementById( 'rte-hidden-items' ); + + //----------------------------------------- + // Kill old bar + //----------------------------------------- + + addtobar.removeChild( this.current_bar_object ); + + //----------------------------------------- + // Reset bar object + //----------------------------------------- + + this.current_bar_object = null; + } + + /** + * Wrap HTML block with basic control panel stuff + */ + this.wrap_html_panel = function( html ) + { + var newhtml = ""; + newhtml += "
    "; + newhtml += "
    "; + newhtml += "
    "; + newhtml += "
    "; + newhtml += "
    "; + newhtml += "
    " + html + "
    "; + newhtml += "
    "; + newhtml += "
    "; + + return newhtml; + } +} \ No newline at end of file diff --git a/upload/jscripts/folder_rte_files/rte_popup.css b/upload/jscripts/folder_rte_files/rte_popup.css new file mode 100644 index 00000000..24540963 --- /dev/null +++ b/upload/jscripts/folder_rte_files/rte_popup.css @@ -0,0 +1,81 @@ +html, body +{ + color: #000; + font: 10px Verdana,sans-serif; + background-color: transparent; + margin: 0px; + padding: 0px; +} +body +{ + padding: 5px; +} + +table +{ + font: 10px Verdana,sans-serif; +} + +.tblbutton +{ + border:1px solid #999; + background-color: #CCC; + font-family:Verdana, Arial; + font-size:10px; + font-weight:bold; + padding:2px; +} + +form p +{ + margin-top: 5px; + margin-bottom: 5px; +} +.fl +{ + width: 9em; float: left; padding: 2px 5px; text-align: right; +} + +.fr +{ + width: 7em; float: left; padding: 2px 5px; text-align: right; +} + +.frlarge +{ + width: 10em; float: left; padding: 2px 5px; text-align: right; +} + +fieldset +{ + padding: 0px 10px 5px 5px; +} + +select, input, button +{ + font: 10px Verdana,sans-serif; +} + +button +{ + width: 70px; +} +.space +{ + padding: 2px; +} + +.title +{ + color: #000; + font-weight: bold; + font-size: 120%; + padding: 3px 10px; + margin-bottom: 10px; + border-bottom: 1px solid black; + letter-spacing: 2px; +} +form +{ + padding: 0px; margin: 0px; +} \ No newline at end of file diff --git a/upload/jscripts/index.html b/upload/jscripts/index.html index 787531db..52a588b2 100644 --- a/upload/jscripts/index.html +++ b/upload/jscripts/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/jscripts/ipb_bbcode.js b/upload/jscripts/ipb_bbcode.js index a09c0d56..bbb849bd 100644 --- a/upload/jscripts/ipb_bbcode.js +++ b/upload/jscripts/ipb_bbcode.js @@ -1,443 +1 @@ -//-------------------------------------------- -// Set up our simple tag open values -//-------------------------------------------- - -var B_open = 0; -var I_open = 0; -var U_open = 0; -var QUOTE_open = 0; -var CODE_open = 0; -var SQL_open = 0; -var HTML_open = 0; - -var bbtags = new Array(); - -var fombj = document.REPLIER; - -//========================================== -// prep and set up -//========================================== - -prep_mode(); - -function prep_mode() -{ - cvalue = my_getcookie( "bbmode" ); - - if (cvalue == 'ezmode') - { - fombj.bbmode[0].checked = true; - } - else - { - fombj.bbmode[1].checked = true; - } -} - -//========================================== -// Set BBCode mode -//========================================== - -function setmode(mVal) -{ - my_setcookie( 'bbmode', mVal, 1 ); -} - - -function get_easy_mode_state() -{ - //-------------------------------------------- - // Returns true if we've chosen easy mode - //-------------------------------------------- - - if ( fombj.bbmode[0].checked ) - { - return true; - } - else - { - return false; - } -} - -//========================================== -// Set the help bar status -//========================================== - -function hstat(msg) -{ - fombj.helpbox.value = eval( "help_" + msg ); -} - -//========================================== -// Set the number of tags open box -//========================================== - -function cstat() -{ - var c = stacksize(bbtags); - - if ( (c < 1) || (c == null) ) { - c = 0; - } - - if ( ! bbtags[0] ) { - c = 0; - } - - fombj.tagcount.value = c; -} - - -//========================================== -// Close all tags -//========================================== - -function closeall() -{ - if (bbtags[0]) - { - while (bbtags[0]) - { - tagRemove = popstack(bbtags) - fombj.Post.value += "[/" + tagRemove + "]"; - - //-------------------------------------------- - // Change the button status - // Ensure we're not looking for FONT, SIZE or COLOR as these - // buttons don't exist, they are select lists instead. - //-------------------------------------------- - - if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') ) - { - eval("fombj." + tagRemove + ".value = ' " + tagRemove + " '"); - eval(tagRemove + "_open = 0"); - } - } - } - - //-------------------------------------------- - // Ensure we got them all - //-------------------------------------------- - - fombj.tagcount.value = 0; - bbtags = new Array(); - fombj.Post.focus(); -} - -//========================================== -// EMOTICONS -//========================================== - -function emoticon(theSmilie) -{ - doInsert(" " + theSmilie + " ", "", false); -} - -//========================================== -// ADD CODE -//========================================== - -function add_code(NewCode) -{ - fombj.Post.value += NewCode; - fombj.Post.focus(); -} - -//========================================== -// ALTER FONT -//========================================== - -function alterfont(theval, thetag) -{ - if (theval == 0) - return; - - if(doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true)) - pushstack(bbtags, thetag); - - fombj.ffont.selectedIndex = 0; - fombj.fsize.selectedIndex = 0; - fombj.fcolor.selectedIndex = 0; - - cstat(); - -} - - -//========================================== -// SIMPLE TAGS (such as B, I U, etc) -//========================================== - -function simpletag(thetag) -{ - var tagOpen = eval(thetag + "_open"); - - if ( get_easy_mode_state() ) - { - inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]"); - if ( (inserttext != null) && (inserttext != "") ) - { - doInsert("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false); - } - } - else - { - if (tagOpen == 0) - { - if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true)) - { - eval(thetag + "_open = 1"); - - //-------------------------------------------- - // Change the button status - //-------------------------------------------- - - eval("fombj." + thetag + ".value += '*'"); - - pushstack(bbtags, thetag); - cstat(); - hstat('click_close'); - } - } - else - { - //-------------------------------------------- - // Find the last occurance of the opened tag - //-------------------------------------------- - lastindex = 0; - - for (i = 0 ; i < bbtags.length; i++ ) - { - if ( bbtags[i] == thetag ) - { - lastindex = i; - } - } - - //-------------------------------------------- - // Close all tags opened up to that tag was opened - //-------------------------------------------- - - while (bbtags[lastindex]) - { - tagRemove = popstack(bbtags); - doInsert("[/" + tagRemove + "]", "", false) - - //-------------------------------------------- - // Change the button status - //-------------------------------------------- - - if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') ) - { - eval("fombj." + tagRemove + ".value = ' " + tagRemove + " '"); - eval(tagRemove + "_open = 0"); - } - } - - cstat(); - } - } -} - -//========================================== -// List tag -//========================================== - -function tag_list() -{ - var listvalue = "init"; - var thelist = ""; - - while ( (listvalue != "") && (listvalue != null) ) - { - listvalue = prompt(list_prompt, ""); - if ( (listvalue != "") && (listvalue != null) ) - { - thelist = thelist+"[*]"+listvalue+"\n"; - } - } - - if ( thelist != "" ) - { - doInsert( "[LIST]\n" + thelist + "[/LIST]\n", "", false); - } -} - -//========================================== -// URL tag -//========================================== - -function tag_url() -{ - var FoundErrors = ''; - var enterURL = prompt(text_enter_url, "http://"); - var enterTITLE = prompt(text_enter_url_name, jsfile_myweb_lang); - - if (!enterURL) { - FoundErrors += " " + error_no_url; - } - if (!enterTITLE) { - FoundErrors += " " + error_no_title; - } - - if (FoundErrors) { - alert(jsfile_error_lang + FoundErrors); - return; - } - - doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false); -} - -//========================================== -// Insert attachment tag -//========================================== - -function insert_attach_to_textarea(aid) -{ - doInsert( "[attachmentid="+aid+"]" ); -} - -//========================================== -// Image tag -//========================================== - -function tag_image() -{ - var FoundErrors = ''; - var enterURL = prompt(text_enter_image, "http://"); - - if (!enterURL) { - FoundErrors += " " + error_no_url; - } - - if (FoundErrors) { - alert(jsfile_error_lang + FoundErrors); - return; - } - - doInsert("[IMG]"+enterURL+"[/IMG]", "", false); -} - -function tag_email() -{ - var emailAddress = prompt(text_enter_email, ""); - - if (!emailAddress) { - alert(error_no_email); - return; - } - - doInsert("[EMAIL]"+emailAddress+"[/EMAIL]", "", false); -} - -//-------------------------------------------- -// GENERAL INSERT FUNCTION -//-------------------------------------------- -// ibTag: opening tag -// ibClsTag: closing tag, used if we have selected text -// isSingle: true if we do not close the tag right now -// return value: true if the tag needs to be closed later - -// - -function doInsert(ibTag, ibClsTag, isSingle) -{ - var isClose = false; - var obj_ta = fombj.Post; - - //---------------------------------------- - // It's IE! - //---------------------------------------- - if ( (ua_vers >= 4) && is_ie && is_win) - { - if (obj_ta.isTextEdit) - { - obj_ta.focus(); - var sel = document.selection; - var rng = sel.createRange(); - rng.colapse; - if((sel.type == "Text" || sel.type == "None") && rng != null) - { - if(ibClsTag != "" && rng.text.length > 0) - ibTag += rng.text + ibClsTag; - else if(isSingle) - isClose = true; - - rng.text = ibTag; - } - } - else - { - if(isSingle) - { - isClose = true; - } - - obj_ta.value += ibTag; - } - } - //---------------------------------------- - // It's MOZZY! - //---------------------------------------- - - else if ( obj_ta.selectionEnd ) - { - var ss = obj_ta.selectionStart; - var st = obj_ta.scrollTop; - var es = obj_ta.selectionEnd; - - if (es <= 2) - { - es = obj_ta.textLength; - } - - var start = (obj_ta.value).substring(0, ss); - var middle = (obj_ta.value).substring(ss, es); - var end = (obj_ta.value).substring(es, obj_ta.textLength); - - //----------------------------------- - // text range? - //----------------------------------- - - if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) - { - middle = ibTag + middle + ibClsTag; - } - else - { - middle = ibTag + middle; - - if (isSingle) - { - isClose = true; - } - } - - obj_ta.value = start + middle + end; - - var cpos = ss + (middle.length); - - obj_ta.selectionStart = cpos; - obj_ta.selectionEnd = cpos; - obj_ta.scrollTop = st; - - - } - //---------------------------------------- - // It's CRAPPY! - //---------------------------------------- - else - { - if (isSingle) - { - isClose = true; - } - - obj_ta.value += ibTag; - } - - obj_ta.focus(); - - return isClose; -} +var B_open=0;var I_open=0;var U_open=0;var QUOTE_open=0;var CODE_open=0;var SQL_open=0;var HTML_open=0;var bbtags=new Array();var fombj=document.REPLIER;prep_mode();function prep_mode(){cvalue=my_getcookie("bbmode");if(cvalue=='ezmode'){fombj.bbmode[0].checked=true;}else{fombj.bbmode[1].checked=true;}}function setmode(mVal){my_setcookie('bbmode',mVal,1);}function get_easy_mode_state(){if(fombj.bbmode[0].checked){return true;}else{return false;}}function hstat(msg){fombj.helpbox.value=eval("help_"+msg);}function cstat(){var c=stacksize(bbtags);if((c<1)||(c==null)){c=0;}if(!bbtags[0]){c=0;}fombj.tagcount.value=c;}function closeall(){if(bbtags[0]){while(bbtags[0]){tagRemove=popstack(bbtags)fombj.Post.value+="[/"+tagRemove+"]";if((tagRemove!='FONT')&&(tagRemove!='SIZE')&&(tagRemove!='COLOR')){eval("fombj."+tagRemove+".value = ' "+tagRemove+" '");eval(tagRemove+"_open = 0");}}}fombj.tagcount.value=0;bbtags=new Array();fombj.Post.focus();}function emoticon(theSmilie){doInsert(" "+theSmilie+" ","",false);}function add_code(NewCode){fombj.Post.value+=NewCode;fombj.Post.focus();}function alterfont(theval,thetag){if(theval==0)return;if(doInsert("["+thetag+"="+theval+"]","[/"+thetag+"]",true))pushstack(bbtags,thetag);fombj.ffont.selectedIndex=0;fombj.fsize.selectedIndex=0;fombj.fcolor.selectedIndex=0;cstat();}function simpletag(thetag){var tagOpen=eval(thetag+"_open");if(get_easy_mode_state()){inserttext=prompt(prompt_start+"\n["+thetag+"]xxx[/"+thetag+"]");if((inserttext!=null)&&(inserttext!="")){doInsert("["+thetag+"]"+inserttext+"[/"+thetag+"] ","",false);}}else{if(tagOpen==0){if(doInsert("["+thetag+"]","[/"+thetag+"]",true)){eval(thetag+"_open = 1");eval("fombj."+thetag+".value += '*'");pushstack(bbtags,thetag);cstat();hstat('click_close');}}else{lastindex=0;for(i=0;i=4)&&is_ie&&is_win){if(obj_ta.isTextEdit){obj_ta.focus();var sel=document.selection;var rng=sel.createRange();rng.colapse;if((sel.type=="Text"||sel.type=="None")&&rng!=null){if(ibClsTag!=""&&rng.text.length>0)ibTag+=rng.text+ibClsTag;else if(isSingle)isClose=true;rng.text=ibTag;}}else{if(isSingle){isClose=true;}obj_ta.value+=ibTag;}}else if(obj_ta.selectionEnd){var ss=obj_ta.selectionStart;var st=obj_ta.scrollTop;var es=obj_ta.selectionEnd;if(es<=2){es=obj_ta.textLength;}var start=(obj_ta.value).substring(0,ss);var middle=(obj_ta.value).substring(ss,es);var end=(obj_ta.value).substring(es,obj_ta.textLength);if(obj_ta.selectionEnd-obj_ta.selectionStart>0){middle=ibTag+middle+ibClsTag;}else{middle=ibTag+middle;if(isSingle){isClose=true;}}obj_ta.value=start+middle+end;var cpos=ss+(middle.length);obj_ta.selectionStart=cpos;obj_ta.selectionEnd=cpos;obj_ta.scrollTop=st;}else{if(isSingle){isClose=true;}obj_ta.value+=ibTag;}obj_ta.focus();return isClose;} diff --git a/upload/jscripts/ipb_board.js b/upload/jscripts/ipb_board.js index 763cd9f3..8b137891 100644 --- a/upload/jscripts/ipb_board.js +++ b/upload/jscripts/ipb_board.js @@ -1,80 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Boards JS File -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - - -/*--------------------------------------------*/ -// Send request to update marker -// NO LONGER USED -/*--------------------------------------------*/ - -function boards_send_marker_update( fid, is_subforum ) -{ - //---------------------------------- - // Get current image... - //---------------------------------- - - try - { - var imgsrc = document.getElementById( 'f-'+fid ).innerHTML; - - if ( imgsrc ) - { - //---------------------------------- - // Find out what img its using... - //---------------------------------- - - var regex = new RegExp( "src=['\"](.*/)("+regex_markers+")['\"]" ); - - var results = imgsrc.match( regex ); - - //---------------------------------- - // Got a replacement? - //---------------------------------- - - if ( img_markers[ results[2] ] ) - { - imgsrc = imgsrc.replace( regex, "src='$1"+img_markers[ results[2] ]+"'" ); - - document.getElementById( 'f-'+fid ).innerHTML = imgsrc; - } - } - } - catch(e){} - - //---------------------------------- - // Get new xhttp obj - //---------------------------------- - - xmlobj = new xmlrequest(); - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - xmlrequest.do_request_functon = function() - { - //---------------------------------- - // Do nothing - //---------------------------------- - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlrequest.load_xml_document( ipb_var_base_url + 'act=xmlout&do=mark-forum&fid='+fid+'&sf='+is_subforum ); - - if ( ! xmlrequest.allow_use ) - { - window.location = document.getElementById( 'f-'+fid ).url; - } - - return false; -} \ No newline at end of file diff --git a/upload/jscripts/ipb_editor.js b/upload/jscripts/ipb_editor.js index 8f3a1f0f..1271614f 100644 --- a/upload/jscripts/ipb_editor.js +++ b/upload/jscripts/ipb_editor.js @@ -1,328 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Text Editor Global Functions -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - -/*-------------------------------------------------------------------------*/ -// INIT -/*-------------------------------------------------------------------------*/ - -var dontpassgo = 0; - -//------------------------------- -// Keep an array of open tags -//------------------------------- - -var bbtags = new Array(); - -//------------------------------- -// Define font faces -//------------------------------- - -var ips_primary_fonts = new Array( - "arial", - "arial black", - "arial narrow", - "book antiqua", - "century gothic", - "comic sans ms", - "courier new", - "fixedsys", - "franklin gothic medium", - "garamond", - "georgia", - "impact", - "lucida console", - "lucida sans unicode", - "microsoft sans serif", - "palatino linotype", - "system", - "tahoma", - "times new roman", - "trebuchet ms", - "verdana" -); - -//------------------------------- -// Remap font sizes -//------------------------------- - -var ips_fontsizes = -{ - '8px' : 1, - '10pt' : 2, - '12pt' : 3, - '14pt' : 4, - '18pt' : 5, - '24pt' : 6, - '36pt' : 7 -} - -//------------------------------- -// Define sizes -//------------------------------- - -var ips_font_sizes = new Array( 1, 2, 3, 4, 5, 6, 7 ); - -//------------------------------- -// Reverse them so we can look up -// by ID -//------------------------------- - -var ips_reverse_primary_fonts = new Array(); -var ips_reverse_font_sizes = new Array(); -var ips_reverse_fontsizes = new Array(); - -for( var i in ips_primary_fonts ) -{ - ips_reverse_primary_fonts[ ips_primary_fonts[i] ] = i; -} - -for( var i in ips_font_sizes ) -{ - ips_reverse_font_sizes[ ips_font_sizes[i] ] = i; -} - -for( var i in ips_fontsizes ) -{ - ips_reverse_fontsizes[ ips_fontsizes[i] ] = i; -} - -/*-------------------------------------------------------------------------*/ -// Close all tags -/*-------------------------------------------------------------------------*/ - -function closeall() -{ - if ( bbtags[0] ) - { - while ( bbtags[0] ) - { - tagRemove = popstack( bbtags ) - postformobj.Post.value += "[/" + tagRemove + "]"; - - if ( i_am == 'std' ) - { - toggle_button( tagRemove ); - } - else - { - rte_button_update( tagRemove ); - } - } - } - - //-------------------------------------------- - // Ensure we got them all - //-------------------------------------------- - - bbtags = new Array(); - postformobj.Post.focus(); -} - -/*-------------------------------------------------------------------------*/ -// Close all nested tags -/*-------------------------------------------------------------------------*/ - -function smart_close_tags( thetag ) -{ - //-------------------------------------------- - // Find the last occurance of the opened tag - //-------------------------------------------- - - lastindex = 0; - - for (i = 0 ; i < bbtags.length; i++ ) - { - if ( bbtags[i] == thetag ) - { - lastindex = i; - } - } - - //-------------------------------------------- - // Close all tags opened up to that tag was opened - //-------------------------------------------- - - while ( bbtags[lastindex] ) - { - tagRemove = popstack(bbtags); - - wrap_tags("[/" + tagRemove + "]", "") - - //-------------------------------------------- - // Change the button status - //-------------------------------------------- - - if ( i_am == 'std' ) - { - toggle_button( tagRemove ); - } - else - { - rte_button_update( tagRemove ); - } - } -} - -/*-------------------------------------------------------------------------*/ -// Write font face box -/*-------------------------------------------------------------------------*/ - -function write_fontface_box() -{ - html = ""; - - for( var i in ips_primary_fonts ) - { - option = ips_primary_fonts[i]; - display = ips_primary_fonts[i]; - - //------------------------------- - // Tidy up show name - // Make "courier new" "Courier New" - //------------------------------- - - var tmp = display.split( " " ); - var rtn = new Array; - - for ( var id in tmp ) - { - rtn[id] = tmp[id].substr(0, 1).toUpperCase() + tmp[id].substr(1); - } - - display = rtn.join( " " ); - - html += "\n"; - } - - return html; -} - -/*-------------------------------------------------------------------------*/ -// Write font size box -/*-------------------------------------------------------------------------*/ - -function write_fontsize_box() -{ - html = ""; - - for( var i in ips_font_sizes ) - { - option = ips_font_sizes[i]; - display = ips_font_sizes[i]; - - html += "\n"; - } - - return html; -} - -/*-------------------------------------------------------------------------*/ -// INIT Editor -/*-------------------------------------------------------------------------*/ - -function init_editor() -{ - if ( ! postformid ) - { - postformid = 'postingform'; - } - - if ( ! postfieldid ) - { - postfieldid = 'postcontent'; - } - - postformobj = document.getElementById( postformid ); - postfieldobj = document.getElementById( postfieldid ); -} - -/*-------------------------------------------------------------------------*/ -// Remove an attachment -/*-------------------------------------------------------------------------*/ - -function removeattach(id) -{ - if ( id != "" ) - { - Override = 1; - postformobj.removeattachid.value = id; - } -} - -/*-------------------------------------------------------------------------*/ -// Insert attachment tag -/*-------------------------------------------------------------------------*/ - -function insert_attach_to_textarea(aid) -{ - rtewindow.focus(); - - wrap_tags( "[attachmentid="+aid+"]", "" ); - - rtewindow.focus(); -} - -/*-------------------------------------------------------------------------*/ -// Open emoticon window -/*-------------------------------------------------------------------------*/ - -var emowindow = ''; - -function emo_pop() -{ - emowindow = window.open( ipb_var_base_url + "act=legends&CODE=emoticons","Legends","width=250,height=500,resizable=yes,scrollbars=yes"); -} - -/*-------------------------------------------------------------------------*/ -// BBCode window -/*-------------------------------------------------------------------------*/ - -function bbc_pop() -{ - window.open( ipb_var_base_url + "act=legends&CODE=bbcode","Legends","width=700,height=500,resizable=yes,scrollbars=yes"); -} - -/*--------------------------------------------*/ -// Fix the amount of digging parents up. -/*--------------------------------------------*/ - -function getOffsetTop(elm) -{ - var mOffsetTop = elm.offsetTop; - var mOffsetParent = elm.offsetParent; - var parents_up = 2; - - while(parents_up > 0) - { - mOffsetTop += mOffsetParent.offsetTop; - mOffsetParent = mOffsetParent.offsetParent; - parents_up--; - } - - return mOffsetTop; -} - -/*--------------------------------------------*/ -// Fix the amount of digging parents up. -/*--------------------------------------------*/ - -function getOffsetLeft(elm) -{ - var mOffsetLeft = elm.offsetLeft; - var mOffsetParent = elm.offsetParent; - var parents_up = 2; - - while(parents_up > 0) - { - mOffsetLeft += mOffsetParent.offsetLeft; - mOffsetParent = mOffsetParent.offsetParent; - parents_up--; - } - - return mOffsetLeft; -} +var dontpassgo=0;var bbtags=new Array();var ips_primary_fonts=new Array("arial","arial black","arial narrow","book antiqua","century gothic","comic sans ms","courier new","fixedsys","franklin gothic medium","garamond","georgia","impact","lucida console","lucida sans unicode","microsoft sans serif","palatino linotype","system","tahoma","times new roman","trebuchet ms","verdana");var ips_fontsizes={'8px':1,'10pt':2,'12pt':3,'14pt':4,'18pt':5,'24pt':6,'36pt':7}var ips_font_sizes=new Array(1,2,3,4,5,6,7);var ips_reverse_primary_fonts=new Array();var ips_reverse_font_sizes=new Array();var ips_reverse_fontsizes=new Array();for(var i in ips_primary_fonts){ips_reverse_primary_fonts[ips_primary_fonts[i]]=i;}for(var i in ips_font_sizes){ips_reverse_font_sizes[ips_font_sizes[i]]=i;}for(var i in ips_fontsizes){ips_reverse_fontsizes[ips_fontsizes[i]]=i;}function closeall(){if(bbtags[0]){while(bbtags[0]){tagRemove=popstack(bbtags)postformobj.Post.value+="[/"+tagRemove+"]";if(i_am=='std'){toggle_button(tagRemove);}else{rte_button_update(tagRemove);}}}bbtags=new Array();postformobj.Post.focus();}function smart_close_tags(thetag){lastindex=0;for(i=0;i"+display+"";}return html;}function write_fontsize_box(){html="";for(var i in ips_font_sizes){option=ips_font_sizes[i];display=ips_font_sizes[i];html+="\n";}return html;}function init_editor(){if(!postformid){postformid='postingform';}if(!postfieldid){postfieldid='postcontent';}postformobj=document.getElementById(postformid);postfieldobj=document.getElementById(postfieldid);}function removeattach(id){if(id!=""){Override=1;postformobj.removeattachid.value=id;}}function insert_attach_to_textarea(aid){rtewindow.focus();wrap_tags("[attachmentid="+aid+"]","");rtewindow.focus();}var emowindow='';function emo_pop(){emowindow=window.open(ipb_var_base_url+"act=legends&CODE=emoticons","Legends","width=250,height=500,resizable=yes,scrollbars=yes");}function bbc_pop(){window.open(ipb_var_base_url+"act=legends&CODE=bbcode","Legends","width=700,height=500,resizable=yes,scrollbars=yes");}function getOffsetTop(elm){var mOffsetTop=elm.offsetTop;var mOffsetParent=elm.offsetParent;var parents_up=2;while(parents_up>0){mOffsetTop+=mOffsetParent.offsetTop;mOffsetParent=mOffsetParent.offsetParent;parents_up--;}return mOffsetTop;}function getOffsetLeft(elm){var mOffsetLeft=elm.offsetLeft;var mOffsetParent=elm.offsetParent;var parents_up=2;while(parents_up>0){mOffsetLeft+=mOffsetParent.offsetLeft;mOffsetParent=mOffsetParent.offsetParent;parents_up--;}return mOffsetLeft;} diff --git a/upload/jscripts/ipb_editor_rte.js b/upload/jscripts/ipb_editor_rte.js index d3e0ebe7..b1e38438 100644 --- a/upload/jscripts/ipb_editor_rte.js +++ b/upload/jscripts/ipb_editor_rte.js @@ -1,2190 +1 @@ -//------------------------------------------------------------------------------ -// IPS Cross-Browser Rich Text Editor -//------------------------------------------------------------------------------ -// Supports Mozilla 1.3+ (Firefox, etc) and IE 5.5+ -// (c) 2005 Invision Power Services, Inc. -// http://www.invisionpower.com -// http://www.ibresource.ru -//------------------------------------------------------------------------------ - - -/*--------------------------------------------*/ -// INIT variables -/*--------------------------------------------*/ - -var i_am = 'rte'; - -//document.getElementById( 'debugmsg' ).value -var DEBUG = 0; - -var isRichText = false; -var css_off = false; -var rng; -var currentRTE; -var allRTEs = ""; -var rte = ""; - -// Defined in enable_design_mode -var rtewindow; -var rtedocument; -var rteready; - - -var isIE; -var isGecko; -var isSafari; -var isKonqueror; - -var imagesPath; -var includesPath; - -//------------------------------- -// Set global scope -//------------------------------- - -var g_buttons; -var g_rte; -var g_tablewidth; -var g_width_unit; -var g_imagesPath; -var g_width; -var g_height; -var g_readOnly; -var g_includesPath -var g_imagesPath; -var g_html; -var g_DEBUG; - -//------------------------------- -// Font & size -//------------------------------- - -var currentfont; -var currentsize; -var button_status = new Array(); - -//------------------------------- -// Viewing HTML? -//------------------------------- - -var viewingHTML = 0; - -//------------------------------- -// Viewing Full screen? -//------------------------------- - -var viewingFS = 0; - -//------------------------------- -// Define which buttons change -// when clicked -//------------------------------- - -var buttons_update = new Array( - "bold", - "italic", - "underline", - "strikethrough", - //"superscript", - //"subscript", - "justifyleft", - "justifycenter", - "justifyright", - "insertorderedlist", - "insertunorderedlist" -); - -var opentags = -{ - 'bold' : 0, - 'italic' : 0, - 'strikethrough' : 0, - 'underline' : 0, - 'forecolor' : 0, - 'fontname' : 0, - 'fontsize' : 0 -}; - -/*--------------------------------------------*/ -// INIT RTE -/*--------------------------------------------*/ - -function init_rte( imgPath, incPath ) -{ - //------------------------------- - // Set browser vars - //------------------------------- - - var ua = navigator.userAgent.toLowerCase(); - isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); - isGecko = (ua.indexOf("gecko") != -1); - isSafari = (ua.indexOf("safari") != -1); - isKonqueror = (ua.indexOf("konqueror") != -1); - - //------------------------------- - // Check to see if designMode mode - // is available. Should be for: - // IE5.5+ Mozilla 1.3+ - // Safari 2+ - //------------------------------- - - if ( document.getElementById && document.designMode && ! isSafari &&!isKonqueror ) - { - isRichText = true; - } - - if ( isIE ) - { - document.onmouseover = ie_raise_button; - document.onmouseout = ie_normal_button; - document.onmousedown = ie_lower_button; - document.onmouseup = ie_raise_button; - } - - //------------------------------- - // Set paths vars - //------------------------------- - - imagesPath = imgPath; - includesPath = incPath; - - //------------------------------- - //for testing standard textarea, uncomment the following line - //isRichText = false; - //------------------------------- -} - -/*--------------------------------------------*/ -// Write Rich text to screen -/*--------------------------------------------*/ - -function write_rte_editor(fieldname, html, width, height, buttons, readOnly) -{ - rte = fieldname; - - if ( isRichText ) - { - if (allRTEs.length > 0) - { - allRTEs += ";"; - } - - allRTEs += rte; - - write_rte(html, width, height, buttons, readOnly); - } - else - { - write_default(html, width, height, buttons, readOnly); - } -} - -/*--------------------------------------------*/ -// Write the default info -/*--------------------------------------------*/ - -function write_default(html, width, height, buttons, readOnly) -{ - if ( ! readOnly ) - { - document.writeln(''); - } - else - { - document.writeln(''); - } -} - -/*--------------------------------------------*/ -// Display RTE -/*--------------------------------------------*/ - -function write_rte(html, width, height, buttons, readOnly) -{ - if (readOnly) buttons = false; - - var o_width = width; - var o_height = height; - - width = parseInt( width ); - height = parseInt( height ); - - //------------------------------- - // Adjust minimum table widths - //------------------------------- - - if ( isIE ) - { - if ( ! o_width.match( /%/ ) ) - { - if ( buttons && (width < 400) ) - { - width = 400; - } - - g_width_unit = 'px'; - var tablewidth = width + 4; - - } - else - { - g_width_unit = '%'; - var tablewidth = width ; - width = width; - } - - } - else - { - if ( ! o_width.match( /%/ ) ) - { - if ( buttons && (width < 400) ) - { - width = 400; - } - - g_width_unit = 'px'; - var tablewidth = width + 2; - } - else - { - g_width_unit = '%'; - var tablewidth = width; - width = width; - } - } - - //------------------------------- - // Globalize - //------------------------------- - - g_buttons = buttons; - g_rte = rte; - g_tablewidth = tablewidth; - g_imagesPath = imagesPath; - g_width = width; - g_height = height; - g_readOnly = readOnly; - g_includesPath = includesPath; - g_imagesPath = imagesPath; - g_html = html; - g_DEBUG = DEBUG; - - boo_to_int = isRichText == true ? 1 : 0; - - //------------------------------- - // Use HTML from rte_html.js - //------------------------------- - - document.writeln( "" ); - - write_rte_html(); - - document.getElementById('hdn_rte_content').value = html; - enable_design_mode( make_newlines_safe(html), readOnly ); - - //------------------------------- - // Make buttons unselectable - //------------------------------- - - poss_images = document.getElementsByTagName('img'); - - if ( poss_images.length ) - { - for( var i in poss_images ) - { - if ( poss_images[i].className == 'rteimage' ) - { - poss_images[i].unselectable = true; - } - } - } - - //----------------------------------------------------------- - // This setting makes hitting the enter key in IE turn into a - // newline (br tag) instead of the default action of using a - // paragraph tag. This causes the indent and list options not - // to work properly in IE, so do not enable this unless you - // don't care about those options. This functionality will be - // expanded upon in a future release, however this is not due - // to an issue with IPB, but rather due to how IE handles the - // javascript exec_command functions, and is beyond our control - // without a lot of javascript rewriting of those functions, - // specific to IE behaviors. - //----------------------------------------------------------- - - var ie_ptags_to_newlines = false; - - if( isIE && ie_ptags_to_newlines ) - { - rtewindow = frames[rte]; - - rtewindow.document.onkeydown = function () { - if (rtewindow.event.keyCode == 13) - { // ENTER - //wrap_tags( "
    \n", "\n" ); - - var sel = rtewindow.document.selection; - var ts = rtewindow.document.selection.createRange(); - - var t = ts.htmlText.replace(/]*)>(.*)<\/p>/i, '$2'); - - if ( (sel.type == "Text" || sel.type == "None") ) - { - ts.pasteHTML( "
    " + t + "\n" ); - } - else - { - rtewindow.document.body.innerHTML += "
    \n"; - } - - rtewindow.event.returnValue = false; - ts.select(); - rtewindow.focus(); - - } - } - } -} - -/*--------------------------------------------*/ -// Enable Design Mode -/*--------------------------------------------*/ - -function enable_design_mode(html, readOnly) -{ - //------------------------------- - // Got char set? - //------------------------------- - - var use_charset = ''; - - try - { - use_charset = g_CHARSET; - } - catch(e) - { - } - - use_charset = use_charset ? use_charset : 'windows-1251'; - - //------------------------------- - // Print... - //------------------------------- - - var frameHtml = "\n"; - frameHtml += "\n"; - frameHtml += '' + "\n"; - frameHtml += "\n"; - frameHtml += "\n"; - frameHtml += "\n"; - frameHtml += html + "\n"; - frameHtml += "\n"; - frameHtml += ""; - - //alert( frameHtml ); - - //------------------------------- - // IE - //------------------------------- - - if ( isIE ) - { - try - { - rtewindow = frames[rte]; - rtewindow.document.open(); - rtewindow.document.write(frameHtml); - rtewindow.document.close(); - } - catch(e) - { - alert( e ); - } - - if ( ! readOnly ) - { - rtewindow.document.designMode = "On"; - } - - rtewindow.document.onmouseup = rte_button_update; - rtewindow.document.onkeyup = rte_button_update; - } - else - { - try - { - rtewindow = document.getElementById(rte).contentWindow; - rtedocument = document.getElementById(rte).contentDocument; - - if ( ! readOnly ) - { - rtedocument.designMode = "on"; - } - - try - { - rtewindow.document.open(); - rtewindow.document.write(frameHtml); - rtewindow.document.close(); - - rtewindow.document.body.style.fontSize = '10pt'; - - rtewindow.document.addEventListener("mouseup", rte_button_update, true); - rtewindow.document.addEventListener("keyup" , rte_button_update, true); - - if ( isGecko && ! readOnly ) - { - //attach a keyboard handler for gecko browsers to make keyboard shortcuts work - rtewindow.document.addEventListener("keypress", kb_handler, true); - } - } - catch (e) - { - alert(jsfile_errorc_lang + e); - } - } - catch (e) - { - //------------------------------- - // Gecko may take some time to enable - // design mode. - // Keep looping until able to set. - //------------------------------- - - if ( isGecko ) - { - setTimeout("enable_design_mode('" + rte + "', '" + make_newlines_safe(html) + "', " + readOnly + ");", 10); - } - else - { - return false; - } - } - } - - //------------------------------- - // Set up buttons - //------------------------------- - - for ( var i in buttons_update ) - { - button_status[ buttons_update[i] ] = false; - } - - rteready = 1; -} - -/*--------------------------------------------*/ -// Update single RTE -/*--------------------------------------------*/ - -function update_rte() -{ - if (!isRichText) return; - - //------------------------------- - // Set message value - //------------------------------- - - var oHdnMessage = document.getElementById('hdn_rte_content'); - var readOnly = false; - - //------------------------------- - // Check for readOnly mode - //------------------------------- - - if ( isIE ) - { - if ( rtewindow.document.designMode != "On" ) - { - readOnly = true; - } - } - else - { - if ( rtedocument.designMode != "on" ) - { - readOnly = true; - } - } - - if ( isRichText && ! readOnly ) - { - //------------------------------- - // If viewing source, switch back - // to design view - //------------------------------- - - if ( viewingHTML ) - { - toggleHTMLSrc(); - } - - if (oHdnMessage.value == null) - { - oHdnMessage.value = ""; - } - - oHdnMessage.value = rtewindow.document.body.innerHTML; - - //------------------------------- - // If there is no content (other - // than formatting) set value to nothing - //------------------------------- - - if (strip_html(oHdnMessage.value.replace(" ", " ")) == "" - && oHdnMessage.value.toLowerCase().search("<$1$2>
    " ); - t = t.replace( /<\/(p|div)([^&]*)>/ig , "
    </$1$2>
    "); - t = t.replace( /<br \/>(?!<\/td)/ig , "<br />
    " ); - - //------------------------------- - // And some table issues... - //------------------------------- - - t = t.replace( /<\/(td|tr|tbody|table)>/ig , "</$1>
    "); - t = t.replace( /<(tr|tbody|table(.+?)?)>/ig , "<$1>
    " ); - t = t.replace( /<(td(.+?)?)>/ig , " <$1>" ); - - //------------------------------- - // Newlines - //------------------------------- - - t = t.replace( /<p> <\/p>/ig , "<br />"); - - return t; -} - -/*--------------------------------------------*/ -// Event handler: Update buttons when text is -// changed or selected -/*--------------------------------------------*/ - -function rte_button_update( command ) -{ - if ( viewingHTML ) - { - return false; - } - - //------------------------------- - // Make sure RTE is ready - //------------------------------- - - if ( ! rteready ) - { - return false; - } - - //------------------------------- - // Loop through buttons... - //------------------------------- - - try { - var cmd_state; - - for ( var i in buttons_update ) - { - cmd_state = rtewindow.document.queryCommandState( buttons_update[i] ); - - if ( typeof( button_status[ buttons_update[i] ] ) != "undefined" && button_status[ buttons_update[i] ] != cmd_state ) - { - prev_state = button_status[ buttons_update[i] ]; - button_status[ buttons_update[i] ] = cmd_state; - rte_button_context( my_getbyid('do_' + buttons_update[i]), prev_state == true ? "mouseout" : "mouseover" ); - } - } - }catch(e) { } - - //------------------------------- - // Do font family - //------------------------------- - - font_context = rtewindow.document.queryCommandValue( "fontname" ); - - if ( font_context == "" ) - { - if ( isIE ) - { - font_context = document.body.style.fontFamily; - } - } - else if ( font_context == null ) - { - font_context = ""; - } - - if ( font_context != false && font_context != currentfont ) - { - //------------------------------- - // strip off rest of defs - //------------------------------- - - fontword = font_context; - commapos = fontword.indexOf(","); - - if (commapos != -1) - { - fontword = fontword.substr(0, commapos); - } - - fontword = fontword.toLowerCase(); - - document.getElementById( "fontname" ).selectedIndex = ips_reverse_primary_fonts[ fontword ]; - - currentfont = font_context; - } - - //------------------------------- - // Font size - //------------------------------- - - size_context = rtewindow.document.queryCommandValue( "fontsize" ); - - if ( size_context == "" ) - { - if ( ! isIE ) - { - size_context = ips_fontsizes[ rtewindow.document.body.style.fontSize ]; - } - } - else if ( size_context == null ) - { - size_context = ""; - } - - if ( size_context != currentsize ) - { - document.getElementById( "fontsize" ).selectedIndex = ips_reverse_font_sizes[ size_context ]; - - currentsize = size_context; - } - - rtewindow.focus(); -} - -/*--------------------------------------------*/ -// Make current RTE window (n)px bigger -/*--------------------------------------------*/ - -function rte_window_resize( elid, pix ) -{ - var box = my_getbyid( elid ); - var cur_height = parseInt( box.style.height ); - - cur_height = cur_height ? cur_height : g_height; - - var new_height = cur_height + pix; - - if ( new_height > 0 ) - { - box.style.height = new_height + "px"; - } - - return false; -} - -/*--------------------------------------------*/ -// Set context of buttons -/*--------------------------------------------*/ - -function rte_button_context( element, state ) -{ - if (element == null) - { - return; - } - - command = element.id.toString(); - command = command.replace( /do_/, "" ); - - if (typeof(button_status[ command ] ) == "undefined") - { - button_status[ command ] = null; - } - - try - { - switch (state) - { - case "click": - case "mouseout": - { - // Normal - element.className = 'rteimage'; - } - break; - - case "mouseup": - case "mouseover": - { - // Hover - element.className = 'rteImageRaised'; - } - break; - - case "mousedown": - { - // On - element.className = 'rteImageRaised'; - } - break; - } - } - catch (e) - { - - } -} - - -/*--------------------------------------------*/ -// Function to format text in the text box -/*--------------------------------------------*/ - -function format_text(command, option) -{ - if ( isIE ) - { - //------------------------------- - // Get current selected range - //------------------------------- - - var selection = rtewindow.document.selection; - - if (selection != null) - { - rng = selection.createRange(); - } - - } - else if ( is_safari ) - { - var selection = rtewindow.getSelection(); - } - else - { - //------------------------------- - // Get currently selected range - //------------------------------- - - var selection = rtewindow.getSelection(); - rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); - } - - try - { - if ( (command == "forecolor") || (command == "hilitecolor") ) - { - //------------------------------- - // Save current values - //------------------------------- - - parent.command = command; - - //------------------------------- - // Position and show color palette - //------------------------------- - - buttonElement = document.getElementById(command); - - var iLeftPos = getOffsetLeft(buttonElement); - var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30); - - document.getElementById('cp').style.left = (iLeftPos) + "px"; - document.getElementById('cp').style.top = (iTopPos) + "px"; - - if (document.getElementById('cp').style.visibility == "hidden") - { - document.getElementById('cp').style.visibility = "visible"; - document.getElementById('cp').style.display = "inline"; - } - else - { - document.getElementById('cp').style.visibility = "hidden"; - document.getElementById('cp').style.display = "none"; - } - } - else if ( command == 'cut' || command == 'copy' || command == 'paste' ) - { - try - { - rtewindow.document.execCommand( command, false, null ); - } - catch (e) - { - if ( isGecko ) - { - alert( jsfile_alert1 + jsfile_alert2 + jsfile_alert3 + "\n" + jsfile_alert4 ); - } - } - } - else if (command == "createlink") - { - if ( isIE ) - { - var check_text = rng.htmlText; - } - else - { - var check_text = _gecko_get_html(); - } - - if ( ! check_text ) - { - alert( jsfile_highlight_lang ); - return false; - } - else - { - var szURL = prompt( text_enter_url, "http://"); - } - - try - { - var pass_link = 0; - - if(szURL.substring(0,7) == 'http://') - { - pass_link = 1; - } - - if(szURL.substring(0,8) == 'https://') - { - pass_link = 1; - } - - if(szURL.substring(0,6) == 'ftp://') - { - pass_link = 1; - } - - if( pass_link == 0 ) - { - szURL = null; - } - - //------------------------------- - // Ignore error for blank urls - //------------------------------- - - rtewindow.document.execCommand("Unlink" , false, null ); - rtewindow.document.execCommand("CreateLink", false, szURL); - } - catch (e) - { - //do nothing - } - } - else - { - rtewindow.focus(); - _gecko_kill_css(); - rtewindow.document.execCommand(command, false, null); - rte_button_update( command ); - rtewindow.focus(); - } - } - catch (e) - { - alert(e); - } -} - -/*--------------------------------------------*/ -// Show smilies pop-up -/*--------------------------------------------*/ - -function show_smilies() -{ - //------------------------------- - // Position and show color palette - //------------------------------- - - buttonElement = document.getElementById('popsmilies'); - - var iLeftPos = getOffsetLeft(buttonElement); - var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30); - - document.getElementById('smiliestable').style.left = (iLeftPos) + "px"; - document.getElementById('smiliestable').style.top = (iTopPos) + "px"; - - if (document.getElementById('smiliestable').style.visibility == "hidden") - { - document.getElementById('smiliestable').style.visibility = "visible"; - document.getElementById('smiliestable').style.display = "inline"; - } - else - { - document.getElementById('smiliestable').style.visibility = "hidden"; - document.getElementById('smiliestable').style.display = "none"; - } -} - -/*--------------------------------------------*/ -// Function to set color -/*--------------------------------------------*/ - -function setColor(color) -{ - var parentCommand = parent.command; - - if ( isIE ) - { - //------------------------------- - //retrieve selected range - //------------------------------- - - var sel = rtewindow.document.selection; - - if (parentCommand == "hilitecolor") parentCommand = "backcolor"; - - if (sel != null) - { - var newRng = sel.createRange(); - newRng = rng; - newRng.select(); - } - } - - rtewindow.focus(); - _gecko_kill_css(); - rtewindow.document.execCommand(parentCommand, false, color); - rtewindow.focus(); - - document.getElementById('cp').style.visibility = "hidden"; - document.getElementById('cp').style.display = "none"; -} - -/*--------------------------------------------*/ -// Function to add email address -/*--------------------------------------------*/ - -function add_email() -{ - if ( isIE ) - { - //------------------------------- - // Get current selected range - //------------------------------- - - var selection = rtewindow.document.selection; - - if (selection != null) - { - rng = selection.createRange(); - } - } - else - { - //------------------------------- - // Get currently selected range - //------------------------------- - - var selection = rtewindow.getSelection(); - rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); - } - - emailaddress = prompt( text_enter_email, ''); - - if ((emailaddress != null) && (emailaddress != "")) - { - rtewindow.focus(); - _gecko_kill_css(); - rtewindow.document.execCommand('createlink', false, 'mailto:' + emailaddress); - rtewindow.focus(); - } -} - -/*--------------------------------------------*/ -// Function to add image -/*--------------------------------------------*/ - -function add_image() -{ - if ( isIE ) - { - //------------------------------- - // Get current selected range - //------------------------------- - - var selection = rtewindow.document.selection; - - if (selection != null) - { - rng = selection.createRange(); - } - } - else - { - //------------------------------- - // Get currently selected range - //------------------------------- - - var selection = rtewindow.getSelection(); - rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); - } - - imagePath = prompt( text_enter_image, 'http://'); - - var pass_image = 0; - - if(imagePath.substring(0,7) == 'http://') - { - pass_image = 1; - } - - if(imagePath.substring(0,8) == 'https://') - { - pass_image = 1; - } - - if(imagePath.substring(0,6) == 'ftp://') - { - pass_image = 1; - } - - if( pass_image == 0 ) - { - imagePath = null; - } - - if ((imagePath != null) && (imagePath != "")) - { - rtewindow.focus(); - _gecko_kill_css(); - rtewindow.document.execCommand('InsertImage', false, imagePath); - rtewindow.focus(); - } -} - -/*--------------------------------------------*/ -//Function to perform spell check -/*--------------------------------------------*/ - -function checkspell() -{ - try - { - var tmpis = new ActiveXObject("ieSpell.ieSpellExtension"); - tmpis.CheckAllLinkedDocuments(document); - } - - catch(exception) - { - if(exception.number==-2146827859) - { - if (confirm( jsfile_erroriespell )) - window.open("http://www.iespell.com/download.php","DownLoad"); - } - else - { - alert( jsfile_errorliespell + exception.number); - } - } -} - -/*--------------------------------------------*/ -// Add emoticon -/*--------------------------------------------*/ - -function emoticon( scode, smid, surl ) -{ - rtewindow.focus(); - - try - { - if ( ! surl ) - { - surl = document.getElementById(smid).src; - } - - if ( ! isIE ) - { - rtewindow.focus(); - _gecko_kill_css(); - rtewindow.document.execCommand('InsertImage', false, surl); - rtewindow.focus(); - - var images = rtewindow.document.getElementsByTagName('img'); - - //---------------------------------- - // Sort through and fix emo - //---------------------------------- - - for ( var i = 0 ; i <= images.length ; i++ ) - { - if ( images[i].src == surl ) - { - if ( ! images[i].getAttribute('emoid') ) - { - images[i].setAttribute( 'emoid', scode ); - images[i].setAttribute( 'border', '0' ); - images[i].style.verticalAlign = 'middle'; - } - } - } - } - else - { - smilieHTML = ''; - wrap_tags( "" + smilieHTML, ""); - } - } - catch(e) - { - //Ssshhhhhh - } - - rtewindow.focus(); - - if ( emowindow != '' && emowindow != 'undefined' ) - { - emowindow.focus(); - } -} - - -/*--------------------------------------------*/ -// Add simple HTML tag -/*--------------------------------------------*/ - -function wrap_tags( opentag, closetag ) -{ - //------------------------------- - // Has closed flag - //------------------------------- - - var has_closed = false; - - if ( ! isRichText ) - { - return; - } - - if ( isIE ) - { - var sel = rtewindow.document.selection; - var ts = rtewindow.document.selection.createRange(); - var t = ts.htmlText.replace(/]*)>(.*)<\/p>/i, '$2'); - - if ( (sel.type == "Text" || sel.type == "None") ) - { - has_closed = true; - ts.pasteHTML( opentag + t + closetag ); - } - else - { - has_closed = true; - rtewindow.document.body.innerHTML += opentag + closetag; - } - } - else - { - //------------------------------- - // FRAGment, not a game of UT - //------------------------------- - - var frag = rtewindow.document.createDocumentFragment(); - var span = rtewindow.document.createElement("span"); - - //------------------------------- - // Apply tags... - //------------------------------- - - sel_html = _gecko_get_html(); - - //------------------------------- - // Remove empty span tags - //------------------------------- - - if ( sel_html ) - { - has_closed = true; - span.innerHTML = opentag + sel_html + closetag; - } - else - { - span.innerHTML = opentag + closetag; - } - - while ( span.firstChild ) - { - frag.appendChild(span.firstChild); - } - - _gecko_insert_node_at_selection( frag ); - } - - //------------------------------- - // Add tag to stack - //------------------------------- - - rtewindow.focus(); - - return has_closed; -} - -/*--------------------------------------------*/ -// Do fontsize, etc -/*--------------------------------------------*/ - -function do_select(selectname) -{ - if ( isIE ) - { - //------------------------------- - // Get current selected range - //------------------------------- - - var selection = rtewindow.document.selection; - - if (selection != null) - { - rng = selection.createRange(); - } - } - else - { - //------------------------------- - // Get currently selected range - //------------------------------- - - var selection = rtewindow.getSelection(); - - rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); - } - - var idx = document.getElementById(selectname).selectedIndex; - - var selected = document.getElementById(selectname).options[idx].value; - - rtewindow.focus(); - _gecko_kill_css(); - rtewindow.document.execCommand(selectname, false, selected); - rte_button_update( selectname ); - rtewindow.focus(); -} - -/*--------------------------------------------*/ -// Launch fullscreen... -/*--------------------------------------------*/ - -function launch_rte_fs() -{ - if ( viewingFS ) - { - //return false; - } - - //------------------------------- - // If viewing source, switch back - // to design view - //------------------------------- - - if ( viewingHTML ) - { - toggleHTMLSrc(); - } - - viewingFS = 1; - - window.open( ipb_var_base_url + '&act=rtefs', 'RTEFS', 'width=640,height=480,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no'); -} - -/*--------------------------------------------*/ -// Launch div... -/*--------------------------------------------*/ - -function launch_div() -{ - // Could do with sorting this mess out. - - window.open( includesPath + 'insert_div.html', 'DIV', 'width=550,height=340,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no'); -} - -/*--------------------------------------------*/ -// Manage tables... -/*--------------------------------------------*/ - -function write_div( param, pwindow ) -{ - try - { - if ( pwindow ) - { - pwindow.close(); - } - } - catch (e) - { - } - - if ( ! param ) - { - return false; - } - - //------------------------------- - // Build remap array - //------------------------------- - - var remap_elements = { - "f_fontfamily" : "font-family" , - "f_fontsize" : "font-size" , - "f_color" : "color" , - "f_backgroundimage" : "background-image" , - "f_backgroundrepeat" : "background-repeat", - "f_backgroundcolor" : "background-color" , - "f_border" : "border" , - "f_padding" : "padding" , - "f_margin" : "margin" - }; - - //------------------------------- - // Get tag type - //------------------------------- - - var tagtype = param["f_type"]; - var style = ""; - - if ( ! param["f_classes"] || param["f_classes"] == "__none" ) - { - //------------------------------- - // Start building style - //------------------------------- - - style += "style='"; - - for (var field in param) - { - var value = param[field]; - - if ( ! value || value == 'undefined' || field == 'undefined' || ! remap_elements[ field ] ) - { - continue; - } - - if ( remap_elements[ field ] && value ) - { - style += remap_elements[ field ] + ":" + value + ";"; - } - } - - //------------------------------- - // Finish style - //------------------------------- - - style += param["f_other"]+"'"; - } - else - { - style += "class='" + param["f_classes"] + "'"; - } - - //------------------------------- - // Pass to handler - //------------------------------- - - if ( style ) - { - wrap_tags( "<"+tagtype+" " + style + ">", "" ); - } - else - { - wrap_tags( "<"+tagtype+">", "" ) - } - - return true; -} - -/*--------------------------------------------*/ -// Launch tables... -/*--------------------------------------------*/ - -function launch_table() -{ - // Could do with sorting this mess out. - - window.open( includesPath + 'insert_table.html', 'TABLE', 'width=450,height=220,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no'); -} - -/*--------------------------------------------*/ -// Manage tables... -/*--------------------------------------------*/ - -function write_tables( param, pwindow ) -{ - try - { - if ( pwindow ) - { - pwindow.close(); - } - } - catch (e) - { - } - - var sel = _my_getselection(); - var range = _my_createrange(sel); - - if ( ! param ) - { - return false; - } - - var doc = rtewindow.document; - - //------------------------------- - // create the table element - //------------------------------- - - var table = doc.createElement("table"); - - //------------------------------- - // assign the given arguments - //------------------------------- - - for (var field in param) - { - var value = param[field]; - - if ( ! value ) - { - continue; - } - - switch (field) - { - case "f_width" : table.style.width = value + param["f_unit"]; break; - case "f_align" : table.align = value; break; - case "f_border" : table.border = parseInt(value); break; - case "f_spacing" : table.cellspacing = parseInt(value); break; - case "f_padding" : table.cellpadding = parseInt(value); break; - } - } - - var tbody = doc.createElement("tbody"); - - table.appendChild(tbody); - - for (var i = 0; i < param["f_rows"]; ++i) - { - var tr = doc.createElement("tr"); - - tbody.appendChild(tr); - - for (var j = 0; j < param["f_cols"]; ++j) - { - var td = doc.createElement("td"); - - tr.appendChild(td); - - //------------------------------- - // Mozilla likes to see something - // inside the cell. - //------------------------------- - - ( ! isIE ) - { - td.appendChild(doc.createElement("br")); - } - } - } - - if ( isIE ) - { - range.pasteHTML(table.outerHTML); - } - else - { - //------------------------------- - // insert the table - //------------------------------- - - _gecko_insert_node_at_selection(table); - } - - return true; -} - - - -/*--------------------------------------------*/ -// KeyBoard Handler -/*--------------------------------------------*/ - -function kb_handler(evt) -{ - var rte = evt.target.id; - - if (evt.ctrlKey) - { - var key = String.fromCharCode(evt.charCode).toLowerCase(); - var cmd = ''; - - switch (key) - { - case 'b': cmd = "bold"; break; - case 'i': cmd = "italic"; break; - case 'u': cmd = "underline"; break; - }; - - if (cmd) - { - format_text(cmd, true); - - //------------------------------- - // evt.target.ownerDocument.execCommand(cmd, false, true); - // stop the event bubble - //------------------------------- - - evt.preventDefault(); - evt.stopPropagation(); - } - } -} - -function docChanged (evt) -{ - alert('changed'); -} - -/*--------------------------------------------*/ -// Get selection (MY) -/*--------------------------------------------*/ - -function _my_getselection() -{ - if ( isIE ) - { - return rtewindow.document.selection; - } - else - { - return rtewindow.getSelection(); - } -} - -/*--------------------------------------------*/ -// Create Range (my) -/*--------------------------------------------*/ - -function _my_createrange( sel ) -{ - if ( isIE ) - { - return sel.createRange(); - } - else - { - rtewindow.focus(); - return sel ? sel.getRangeAt(0) : rtewindow.document.createRange(); - } -} - -/*--------------------------------------------*/ -// Gecko work around to get selection HTML -/*--------------------------------------------*/ - -function _gecko_get_html() -{ - var sel = _my_getselection(); - var range = _my_createrange(sel); - var root = range.cloneContents(); - - return _gecko_read_nodes(root, false); -} - -/*--------------------------------------------*/ -// Gecko read nodes (based on midas) -/*--------------------------------------------*/ - -function _gecko_read_nodes(root, toptag) -{ - var html = ""; - var moz_check = /_moz/i; - - switch (root.nodeType) - { - case Node.ELEMENT_NODE: - case Node.DOCUMENT_FRAGMENT_NODE: - { - var closed; - - if (toptag) - { - closed = !root.hasChildNodes(); - html = '<' + root.tagName.toLowerCase(); - var attr = root.attributes; - for (i = 0; i < attr.length; ++i) - { - var a = attr.item(i); - - if (!a.specified || a.name.match(moz_check) || a.value.match(moz_check)) - { - continue; - } - - html += " " + a.name.toLowerCase() + '="' + a.value + '"'; - } - html += closed ? " />" : ">"; - } - for (var i = root.firstChild; i; i = i.nextSibling) - { - html += _gecko_read_nodes(i, true); - } - if (toptag && !closed) - { - html += ""; - } - } - break; - - case Node.TEXT_NODE: - { - html = htmlspecialchars(root.data); - } - break; - } - return html; -} - - -/*--------------------------------------------*/ -// Gecko insert html mode at selection (midas) -/*--------------------------------------------*/ - -function _gecko_insert_node_at_selection(text) -{ - var sel = _my_getselection(); - var range = _my_createrange(sel); - - sel.removeAllRanges(); - range.deleteContents(); - - var node = range.startContainer; - var pos = range.startOffset; - - switch (node.nodeType) - { - case Node.ELEMENT_NODE: - { - if (text.nodeType == Node.DOCUMENT_FRAGMENT_NODE) - { - selNode = text.firstChild; - } - else - { - selNode = text; - } - node.insertBefore(text, node.childNodes[pos]); - _gecko_add_range(selNode); - } - break; - - case Node.TEXT_NODE: - { - if ( text.nodeType == Node.TEXT_NODE ) - { - var text_length = pos + text.length; - node.insertData(pos, text.data); - range = rtewindow.document.createRange(); - range.setEnd( node, text_length); - range.setStart(node, text_length); - sel.addRange(range); - } - else - { - node = node.splitText(pos); - var selNode; - if (text.nodeType == Node.DOCUMENT_FRAGMENT_NODE) - { - selNode = text.firstChild; - } - else - { - selNode = text; - } - node.parentNode.insertBefore(text, node); - _gecko_add_range(selNode); - } - } - break; - } -} - -/*--------------------------------------------*/ -// Turns off CSS mode for gecko -/*--------------------------------------------*/ - -function _gecko_kill_css() -{ - //------------------------------- - // Moz likes to use styles - // Not really sure if this needs - // to be fired before each command - // midas shows not, experience shows - // that it does. - //------------------------------- - - if ( ! isIE ) - { - try - { - rtewindow.document.execCommand("useCSS", false, true); - css_off = true; - } - catch (e) - { - css_off = false; - } - } -} - - -/*--------------------------------------------*/ -// Add range of inserted text -/*--------------------------------------------*/ - -function _gecko_add_range(node) -{ - rtewindow.focus(); - - var sel = rtewindow.getSelection(); - var range = null; - - range = rtewindow.document.createRange(); - range.selectNodeContents(node); - - sel.removeAllRanges(); - sel.addRange(range); -} - - -/*--------------------------------------------*/ -// IE ONLY: Button raised -/*--------------------------------------------*/ - -function ie_raise_button(e) -{ - var el = window.event.srcElement; - - className = el.className; - - if (className == 'rteimage' || className == 'rteImageLowered') - { - el.className = 'rteImageRaised'; - } -} - -/*--------------------------------------------*/ -// IE ONLY: Normal Button -/*--------------------------------------------*/ - -function ie_normal_button(e) -{ - var el = window.event.srcElement; - - className = el.className; - var command; - - try - { - if ( el.id ) - { - command = el.id.toString(); - command = command.replace( /do_/, "" ); - } - } - catch (e) - { - // Who cares - } - - if (className == 'rteImageRaised' || className == 'rteImageLowered') - { - if ( ! command || button_status[ command ] != true ) - { - el.className = 'rteimage'; - } - else - { - el.className = 'rteImageRaised'; - } - } -} - -/*--------------------------------------------*/ -// IE ONLY: Lowered Button -/*--------------------------------------------*/ - -function ie_lower_button(e) -{ - var el = window.event.srcElement; - - className = el.className; - - if (className == 'rteimage' || className == 'rteImageRaised') - { - el.className = 'rteImageLowered'; - } -} - -/*--------------------------------------------*/ -// Strip HTML -/*--------------------------------------------*/ - -function strip_html(oldString) -{ - var newString = oldString.replace(/(<([^>]+)>)/ig,""); - - //------------------------------- - //replace carriage returns and line feeds - //------------------------------- - - newString = newString.replace(/\r\n/g," "); - newString = newString.replace(/\n/g," "); - newString = newString.replace(/\r/g," "); - - //------------------------------- - //trim string - //------------------------------- - - newString = trim(newString); - - return newString; -} - -/*--------------------------------------------*/ -// Newlines safe -/*--------------------------------------------*/ - -function make_newlines_safe(t) -{ - //t = t.replace(/\n/g,'\\n'); - - //------------------------------- - //replace carriage returns and line feeds - //------------------------------- - - //t = t.replace(/\r/g,'\\r'); - - //------------------------------- - //trim string - //------------------------------- - - //t = trim(t); - - return t; -} - -/*--------------------------------------------*/ -// TRIM -/*--------------------------------------------*/ - -function trim(inputString) -{ - //------------------------------- - // Removes leading and trailing spaces from the passed string. Also removes - // consecutive spaces and replaces it with one space. If something besides - // a string is passed in (null, custom object, etc.) then return the input. - //------------------------------- - - if (typeof inputString != "string") return inputString; - var retValue = inputString; - var ch = retValue.substring(0, 1); - - while (ch == " ") - { - //------------------------------- - // Check for spaces at the beginning of the string - //------------------------------- - - retValue = retValue.substring(1, retValue.length); - ch = retValue.substring(0, 1); - } - - ch = retValue.substring(retValue.length - 1, retValue.length); - - while (ch == " ") - { - //------------------------------- - // Check for spaces at the end of the string - //------------------------------- - - retValue = retValue.substring(0, retValue.length - 1); - ch = retValue.substring(retValue.length - 1, retValue.length); - } - - //------------------------------- - // Note that there are two spaces - // in the string - look for multiple - // spaces within the string - //------------------------------- - - while (retValue.indexOf(" ") != -1) - { - //------------------------------- - // Again, there are two spaces in each of the strings - //------------------------------- - retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length); - } - - return retValue; -} - -//*-------------------------------------------------------------------------*/ -// Validate form (must always have this method defined!) -/*-------------------------------------------------------------------------*/ - -function ValidateForm( isMsg ) -{ - //----------------------------------------- - // Sync RTE - //----------------------------------------- - - update_rte(); - - MessageLength = 3; //postfieldobj.value.length; - errors = ""; - - //----------------------------------------- - // Check for remove attachments - //----------------------------------------- - - try - { - if ( postformobj.removeattachid.value > 0 ) - { - okdelete = confirm( js_remove_attach ); - - if ( okdelete == true ) - { - return true; - } - else - { - postformobj.removeattachid.value = 0; - return false; - } - } - } - catch(error) - { - // - } - - if ( isMsg == 1) - { - if ( postformobj.msg_title.value.length < 2 ) - { - errors = js_msg_no_title; - } - } - - if ( MessageLength < 2 ) - { - errors = js_no_message; - } - - if ( MessageMax != 0 ) - { - if (MessageLength > MessageMax) - { - errors = js_max_length + " " + MessageMax + " " + js_characters + ". " + js_current + ": " + MessageLength; - } - } - - if ( errors != "" && Override == "" ) - { - alert(errors); - return false; - } - else - { - try - { - postformobj.submit.disabled = true; - } - catch(e) - { - try - { - postformobj.dosubmit.disabled = true; - } - catch(e) { } - } - return true; - } -} - -/*--------------------------------------------*/ -// HTML SPECIAL CHARACTERS (PHP emulation) -/*--------------------------------------------*/ - -function htmlspecialchars(html) -{ - html = html.replace(/"/, """); - html = html.replace(//, ">"); - return html; -} +var i_am='rte';var DEBUG=0;var isRichText=false;var css_off=false;var rng;var currentRTE;var allRTEs="";var rte="";var rtewindow;var rtedocument;var rteready;var isIE;var isGecko;var isSafari;var isKonqueror;var imagesPath;var includesPath;var g_buttons;var g_rte;var g_tablewidth;var g_width_unit;var g_imagesPath;var g_width;var g_height;var g_readOnly;var g_includesPath var g_html;var g_DEBUG;var currentfont;var currentsize;var button_status=new Array();var viewingHTML=0;var viewingFS=0;var buttons_update=new Array("bold","italic","underline","strikethrough","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist");var opentags={'bold':0,'italic':0,'strikethrough':0,'underline':0,'forecolor':0,'fontname':0,'fontsize':0};function init_rte(imgPath,incPath){var ua=navigator.userAgent.toLowerCase();isIE=((ua.indexOf("msie")!=-1)&&(ua.indexOf("opera")==-1)&&(ua.indexOf("webtv")==-1));isGecko=(ua.indexOf("gecko")!=-1);isSafari=(ua.indexOf("safari")!=-1);isKonqueror=(ua.indexOf("konqueror")!=-1);if(document.getElementById&&document.designMode&&!isSafari&&!isKonqueror){isRichText=true;}if(isIE){document.onmouseover=ie_raise_button;document.onmouseout=ie_normal_button;document.onmousedown=ie_lower_button;document.onmouseup=ie_raise_button;}imagesPath=imgPath;includesPath=incPath;}function write_rte_editor(fieldname,html,width,height,buttons,readOnly){rte=fieldname;if(isRichText){if(allRTEs.length>0){allRTEs+=";";}allRTEs+=rte;write_rte(html,width,height,buttons,readOnly);}else{write_default(html,width,height,buttons,readOnly);}}function write_default(html,width,height,buttons,readOnly){if(!readOnly){document.writeln('');}else{document.writeln('');}}function write_rte(html,width,height,buttons,readOnly){if(readOnly)buttons=false;var o_width=width;var o_height=height;width=parseInt(width);height=parseInt(height);if(isIE){if(!o_width.match( /%/)){if(buttons&&(width<400)){width=400;}g_width_unit='px';var tablewidth=width+4;}else{g_width_unit='%';var tablewidth=width;width=width;}}else{if(!o_width.match( /%/)){if(buttons&&(width<400)){width=400;}g_width_unit='px';var tablewidth=width+2;}else{g_width_unit='%';var tablewidth=width;width=width;}}g_buttons=buttons;g_rte=rte;g_tablewidth=tablewidth;g_imagesPath=imagesPath;g_width=width;g_height=height;g_readOnly=readOnly;g_includesPath=includesPath;g_html=html;g_DEBUG=DEBUG;boo_to_int=isRichText==true?1:0;document.writeln("");write_rte_html();document.getElementById('hdn_rte_content').value=html;enable_design_mode(make_newlines_safe(html),readOnly);poss_images=document.getElementsByTagName('img');if(poss_images.length){for(var i in poss_images){if(poss_images[i].className=='rteimage'){poss_images[i].unselectable=true;}}}if(isIE&&ie_ptags_to_newlines){rtewindow=frames[rte];var _test=new Array('Indent','Outdent','JustifyLeft','JustifyCenter','JustifyRight','InsertOrderedList','InsertUnorderedList');rtewindow.document.onkeydown=function(){if(rtewindow.event.keyCode==13){for(var i in _test){if(rtewindow.document.queryCommandState(_test[i])){return true;}}var sel=rtewindow.document.selection;var ts=rtewindow.document.selection.createRange();var t=ts.htmlText.replace(/]*)>(.*)<\/p>/i,'$2');if((sel.type=="Text"||sel.type=="None")){ts.pasteHTML("
    "+t+"\n");}else{rtewindow.document.body.innerHTML+="
    \n";}rtewindow.event.returnValue=false;ts.select();rtewindow.focus();return false;}}}}function enable_design_mode(html,readOnly){var use_charset='';try{use_charset=g_CHARSET;}catch(e){}use_charset=use_charset?use_charset:'iso-8859-1';var frameHtml="\n";frameHtml+="\n";frameHtml+=''+"\n";frameHtml+="\n";frameHtml+="\n";frameHtml+="\n";frameHtml+=html+"\n";frameHtml+="\n";frameHtml+="";if(isIE){try{rtewindow=frames[rte];rtewindow.document.open();rtewindow.document.write(frameHtml);rtewindow.document.close();}catch(e){alert(e);}if(!readOnly){rtewindow.document.designMode="On";}rtewindow.document.onmouseup=rte_button_update;rtewindow.document.onkeyup=rte_button_update;}else{try{rtewindow=document.getElementById(rte).contentWindow;rtedocument=document.getElementById(rte).contentDocument;if(!readOnly){rtedocument.designMode="on";}try{rtewindow.document.open();rtewindow.document.write(frameHtml);rtewindow.document.close();rtewindow.document.body.style.fontSize='10pt';rtewindow.document.addEventListener("mouseup",rte_button_update,true);rtewindow.document.addEventListener("keyup",rte_button_update,true);if(isGecko&&!readOnly){rtewindow.document.addEventListener("keypress",kb_handler,true);}}catch(e){alert(jsfile_errorc_lang+e);}}catch(e){if(isGecko){setTimeout("enable_design_mode('"+rte+"', '"+make_newlines_safe(html)+"', "+readOnly+");",10);}else{return false;}}}for(var i in buttons_update){button_status[buttons_update[i]]=false;}rteready=1;}function update_rte(){if(!isRichText)return;var oHdnMessage=document.getElementById('hdn_rte_content');var readOnly=false;if(isIE){if(rtewindow.document.designMode!="On"){readOnly=true;}}else{if(rtedocument.designMode!="on"){readOnly=true;}}if(isRichText&&!readOnly){if(viewingHTML){toggleHTMLSrc();}if(oHdnMessage.value==null){oHdnMessage.value="";}oHdnMessage.value=rtewindow.document.body.innerHTML;if(strip_html(oHdnMessage.value.replace(" "," "))==""&&oHdnMessage.value.toLowerCase().search("<$1$2>
    ");t=t.replace( /<\/(p|div)([^&]*)>/ig,"
    </$1$2>
    ");t=t.replace( /<br \/>(?!<\/td)/ig,"<br />
    ");t=t.replace( /<\/(td|tr|tbody|table)>/ig,"</$1>
    ");t=t.replace( /<(tr|tbody|table(.+?)?)>/ig,"<$1>
    ");t=t.replace( /<(td(.+?)?)>/ig," <$1>");t=t.replace( /<p> <\/p>/ig,"<br />");return t;}function rte_button_update(command){if(viewingHTML){return false;}if(!rteready){return false;}try{var cmd_state;for(var i in buttons_update){cmd_state=rtewindow.document.queryCommandState(buttons_update[i]);if(typeof(button_status[buttons_update[i]])!="undefined"&&button_status[buttons_update[i]]!=cmd_state){prev_state=button_status[buttons_update[i]];button_status[buttons_update[i]]=cmd_state;rte_button_context(my_getbyid('do_'+buttons_update[i]),prev_state==true?"mouseout":"mouseover");}}}catch(e){}font_context=rtewindow.document.queryCommandValue("fontname");if(font_context==""){if(isIE){font_context=document.body.style.fontFamily;}}else if(font_context==null){font_context="";}if(font_context!=false&&font_context!=currentfont){fontword=font_context;commapos=fontword.indexOf(",");if(commapos!=-1){fontword=fontword.substr(0,commapos);}fontword=fontword.toLowerCase();document.getElementById("fontname").selectedIndex=ips_reverse_primary_fonts[fontword];currentfont=font_context;}size_context=rtewindow.document.queryCommandValue("fontsize");if(size_context==""){if(!isIE){size_context=ips_fontsizes[rtewindow.document.body.style.fontSize];}}else if(size_context==null){size_context="";}if(size_context!=currentsize){document.getElementById("fontsize").selectedIndex=ips_reverse_font_sizes[size_context];currentsize=size_context;}rtewindow.focus();}function rte_window_resize(elid,pix){var box=my_getbyid(elid);var cur_height=parseInt(box.style.height);cur_height=cur_height?cur_height:g_height;var new_height=cur_height+pix;if(new_height>0){box.style.height=new_height+"px";}return false;}function rte_button_context(element,state){if(element==null){return;}command=element.id.toString();command=command.replace( /do_/,"");if(typeof(button_status[command])=="undefined"){button_status[command]=null;}try{switch(state){case "click":case "mouseout":{element.className='rteimage';}break;case "mouseup":case "mouseover":{element.className='rteImageRaised';}break;case "mousedown":{element.className='rteImageRaised';}break;}}catch(e){}}function format_text(command,option){if(isGecko){rtewindow.document.execCommand("inserthtml",false,"-");rtewindow.document.execCommand("undo",false,null);}if(isIE){var selection=rtewindow.document.selection;if(selection!=null){rng=selection.createRange();}}else if(is_safari){var selection=rtewindow.getSelection();}else{var selection=rtewindow.getSelection();rng=selection.getRangeAt(selection.rangeCount-1).cloneRange();}try{if((command=="forecolor")||(command=="hilitecolor")){parent.command=command;buttonElement=document.getElementById(command);var iLeftPos=getOffsetLeft(buttonElement);var iTopPos=getOffsetTop(buttonElement)+(buttonElement.offsetHeight+30);document.getElementById('cp').style.left=(iLeftPos)+"px";document.getElementById('cp').style.top=(iTopPos)+"px";if(document.getElementById('cp').style.visibility=="hidden"){document.getElementById('cp').style.visibility="visible";document.getElementById('cp').style.display="inline";}else{document.getElementById('cp').style.visibility="hidden";document.getElementById('cp').style.display="none";}}else if(command=='cut'||command=='copy'||command=='paste'){try{rtewindow.document.execCommand(command,false,null);}catch(e){if(isGecko){alert(jsfile_alert1+jsfile_alert2+jsfile_alert3+"\n"+jsfile_alert4);}}}else if(command=="createlink"){if(isIE){var check_text=rng.htmlText;}else{var check_text=_gecko_get_html();}if(!check_text){alert(jsfile_highlight_lang);return false;}else{var szURL=prompt(text_enter_url,"http://");}try{var pass_link=0;if(szURL.substring(0,7)=='http://'){pass_link=1;}if(szURL.substring(0,8)=='https://'){pass_link=1;}if(szURL.substring(0,6)=='ftp://'){pass_link=1;}if(pass_link==0){szURL=null;}rtewindow.document.execCommand("Unlink",false,null);rtewindow.document.execCommand("CreateLink",false,szURL);}catch(e){}}else if((command=='justifyleft'||command=='justifycenter'||command=='justifyright')&&isIE&&ie_ptags_to_newlines){var _a=command.replace("justify","");wrap_tags("["+_a+"]","[/"+_a+"]");}else if((command=='outdent'||command=='indent'||command=='insertorderedlist'||command=='insertunorderedlist')&&isIE&&ie_ptags_to_newlines){rtewindow.focus();var sel=rtewindow.document.selection;var ts=rtewindow.document.selection.createRange();var t=ts.htmlText.replace(/]*)>(.*)<\/p>/i,'$2');if((sel.type=="Text"||sel.type=="None")){ts.pasteHTML(t+"

    \n");}else{rtewindow.document.body.innerHTML+="

    ";}rtewindow.focus();rtewindow.document.execCommand(command,false,null);rte_button_update(command);rtewindow.focus();}else{rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand(command,false,null);rte_button_update(command);rtewindow.focus();}}catch(e){alert(e);}}function show_smilies(){buttonElement=document.getElementById('popsmilies');var iLeftPos=getOffsetLeft(buttonElement);var iTopPos=getOffsetTop(buttonElement)+(buttonElement.offsetHeight+30);document.getElementById('smiliestable').style.left=(iLeftPos)+"px";document.getElementById('smiliestable').style.top=(iTopPos)+"px";if(document.getElementById('smiliestable').style.visibility=="hidden"){document.getElementById('smiliestable').style.visibility="visible";document.getElementById('smiliestable').style.display="inline";}else{document.getElementById('smiliestable').style.visibility="hidden";document.getElementById('smiliestable').style.display="none";}}function setColor(color){var parentCommand=parent.command;if(isIE){var sel=rtewindow.document.selection;if(parentCommand=="hilitecolor")parentCommand="backcolor";if(sel!=null){var newRng=sel.createRange();newRng=rng;newRng.select();}}rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand(parentCommand,false,color);rtewindow.focus();document.getElementById('cp').style.visibility="hidden";document.getElementById('cp').style.display="none";}function add_email(){if(isIE){var selection=rtewindow.document.selection;if(selection!=null){rng=selection.createRange();}var rng_len=rng.text.length;}else{var selection=rtewindow.getSelection();rng=selection.getRangeAt(selection.rangeCount-1).cloneRange();}emailaddress=prompt(text_enter_email,'');if((emailaddress!=null)&&(emailaddress!="")){if(isIE){if(rng_len!="undefined"&&rng_len>0){rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand('createlink',false,'mailto:'+emailaddress);rtewindow.focus();}else{emailHTML=''+emailaddress+'';wrap_tags(""+emailHTML,"");rtewindow.focus();}}else if((rng!=null)&&(rng!="")){rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand('createlink',false,'mailto:'+emailaddress);rtewindow.focus();}else{emailHTML=''+emailaddress+'';wrap_tags(""+emailHTML,"");rtewindow.focus();}}}function add_image(){if(isIE){var selection=rtewindow.document.selection;if(selection!=null){rng=selection.createRange();}}else{var selection=rtewindow.getSelection();rng=selection.getRangeAt(selection.rangeCount-1).cloneRange();}imagePath=prompt(text_enter_image,'http://');var pass_image=0;if(imagePath.substring(0,7)=='http://'){pass_image=1;}if(imagePath.substring(0,8)=='https://'){pass_image=1;}if(imagePath.substring(0,6)=='ftp://'){pass_image=1;}if(pass_image==0){imagePath=null;}if((imagePath!=null)&&(imagePath!="")){rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand('InsertImage',false,imagePath);rtewindow.focus();}}function checkspell(){try{var tmpis=new ActiveXObject("ieSpell.ieSpellExtension");tmpis.CheckAllLinkedDocuments(document);}catch(exception){if(exception.number==-2146827859){if(confirm(jsfile_erroriespell))window.open("http://www.iespell.com/download.php","DownLoad");}else{alert(jsfile_errorliespell+exception.number);}}}function emoticon(scode,smid,surl){rtewindow.focus();try{if(!surl){surl=document.getElementById(smid).src;}if(!isIE){rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand('InsertImage',false,surl);rtewindow.focus();var images=rtewindow.document.getElementsByTagName('img');for(var i=0;i<=images.length;i++){if(images[i].src==surl){if(!images[i].getAttribute('emoid')){images[i].setAttribute('emoid',scode);images[i].setAttribute('border','0');images[i].style.verticalAlign='middle';}}}}else{smilieHTML='';wrap_tags(""+smilieHTML,"");}}catch(e){}rtewindow.focus();if(emowindow!=''&&emowindow!='undefined'){emowindow.focus();}}function wrap_tags(opentag,closetag){var has_closed=false;if(!isRichText){return;}if(isIE){rtewindow.focus();var sel=rtewindow.document.selection;var ts=rtewindow.document.selection.createRange();var t=ts.htmlText.replace(/]*)>(.*)<\/p>/i,'$2');if((sel.type=="Text"||sel.type=="None")){has_closed=true;ts.pasteHTML(opentag+t+closetag);}else{has_closed=true;rtewindow.document.body.innerHTML+=opentag+closetag;}}else{var frag=rtewindow.document.createDocumentFragment();var span=rtewindow.document.createElement("span");sel_html=_gecko_get_html();var my_contents;var my_length;if(sel_html){has_closed=true;span.innerHTML=opentag+sel_html+closetag;my_contents=opentag+sel_html+closetag;}else{span.innerHTML=opentag+closetag;my_contents=opentag+closetag;}while(span.firstChild){frag.appendChild(span.firstChild);}my_length=my_contents.length?my_contents.length:0;_gecko_insert_node_at_selection(frag,my_length);}rtewindow.focus();return has_closed;}function do_select(selectname){if(isIE){var selection=rtewindow.document.selection;if(selection!=null){rng=selection.createRange();}}else{var selection=rtewindow.getSelection();rng=selection.getRangeAt(selection.rangeCount-1).cloneRange();}var idx=document.getElementById(selectname).selectedIndex;var selected=document.getElementById(selectname).options[idx].value;rtewindow.focus();_gecko_kill_css();rtewindow.document.execCommand(selectname,false,selected);rte_button_update(selectname);rtewindow.focus();}function launch_rte_fs(){if(viewingFS){}if(viewingHTML){toggleHTMLSrc();}viewingFS=1;window.open(ipb_var_base_url+'&act=rtefs','RTEFS','width=640,height=480,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no');}function launch_div(){window.open(includesPath+'insert_div.html','DIV','width=550,height=340,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no');}function write_div(param,pwindow){try{if(pwindow){pwindow.close();}}catch(e){}if(!param){return false;}var remap_elements={"f_fontfamily":"font-family","f_fontsize":"font-size","f_color":"color","f_backgroundimage":"background-image","f_backgroundrepeat":"background-repeat","f_backgroundcolor":"background-color","f_border":"border","f_padding":"padding","f_margin":"margin"};var tagtype=param["f_type"];var style="";if(!param["f_classes"]||param["f_classes"]=="__none"){style+="style='";for(var field in param){var value=param[field];if(!value||value=='undefined'||field=='undefined'||!remap_elements[field]){continue;}if(remap_elements[field]&&value){style+=remap_elements[field]+":"+value+";";}}style+=param["f_other"]+"'";}else{style+="class='"+param["f_classes"]+"'";}if(style){wrap_tags("<"+tagtype+" "+style+">","");}else{wrap_tags("<"+tagtype+">","")}return true;}function launch_table(){window.open(includesPath+'insert_table.html','TABLE','width=450,height=220,resizable=yes,scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no');}function write_tables(param,pwindow){try{if(pwindow){pwindow.close();}}catch(e){}var sel=_my_getselection();var range=_my_createrange(sel);if(!param){return false;}var doc=rtewindow.document;var table=doc.createElement("table");for(var field in param){var value=param[field];if(!value){continue;}switch(field){case "f_width":table.style.width=value+param["f_unit"];break;case "f_align":table.align=value;break;case "f_border":table.border=parseInt(value);break;case "f_spacing":table.cellspacing=parseInt(value);break;case "f_padding":table.cellpadding=parseInt(value);break;}}var tbody=doc.createElement("tbody");table.appendChild(tbody);for(var i=0;i":">";}for(var i=root.firstChild;i;i=i.nextSibling){html+=_gecko_read_nodes(i,true);}if(toptag&&!closed){html+="";}}break;case Node.TEXT_NODE:{html=htmlspecialchars(root.data);}break;}return html;}function _gecko_insert_node_at_selection(text,text_length){var sel=_my_getselection();var range=_my_createrange(sel);var node=range.startContainer;var pos=range.startOffset;text_length=text_length?text_length:0;sel.removeAllRanges();range.deleteContents();if(node.nodeName=='HTML'){node=_goto_parent_then_body(node);}switch(node.nodeType){case 1:{if(text.nodeType==11){selNode=text.firstChild;}else{selNode=text;}node.insertBefore(text,node.childNodes[pos]);_gecko_add_range(selNode,text_length);}break;case 3:{if(text.nodeType==3){var text_length=pos+text.length;node.insertData(pos,text.data);range=rtewindow.document.createRange();range.setEnd(node,text_length);range.setStart(node,text_length);sel.addRange(range);}else{node=node.splitText(pos);var selNode;if(text.nodeType==11){selNode=text.firstChild;}else{selNode=text;}node.parentNode.insertBefore(text,node);_gecko_add_range(selNode,text_length);}}break;}}function _goto_parent_then_body(n){var o=n;while(n.parentNode!=null&&n.parentNode.nodeName=='HTML'){n=n.parentNode;}if(n){for(var c=0;c]+)>)/ig,"");newString=newString.replace(/\r\n/g," ");newString=newString.replace(/\n/g," ");newString=newString.replace(/\r/g," ");newString=trim(newString);return newString;}function make_newlines_safe(t){return t;}function trim(inputString){if(typeof inputString!="string")return inputString;var retValue=inputString;var ch=retValue.substring(0,1);while(ch==" "){retValue=retValue.substring(1,retValue.length);ch=retValue.substring(0,1);}ch=retValue.substring(retValue.length-1,retValue.length);while(ch==" "){retValue=retValue.substring(0,retValue.length-1);ch=retValue.substring(retValue.length-1,retValue.length);}while(retValue.indexOf(" ")!=-1){retValue=retValue.substring(0,retValue.indexOf(" "))+retValue.substring(retValue.indexOf(" ")+1,retValue.length);}return retValue;}function ValidateForm(isMsg){update_rte();MessageLength=3;errors="";try{if(postformobj.removeattachid.value>0){okdelete=confirm(js_remove_attach);if(okdelete==true){return true;}else{postformobj.removeattachid.value=0;return false;}}}catch(error){}if(isMsg==1){if(postformobj.msg_title.value.length<2){errors=js_msg_no_title;}}if(MessageLength<2){errors=js_no_message;}if(MessageMax!=0){if(MessageLength>MessageMax){errors=js_max_length+" "+MessageMax+" "+js_characters+". "+js_current+": "+MessageLength;}}if(errors!=""&&Override==""){alert(errors);return false;}else{try{postformobj.submit.disabled=true;}catch(e){try{postformobj.dosubmit.disabled=true;}catch(e){}}return true;}}function htmlspecialchars(html){html=html.replace(/"/,""");html=html.replace(//,">");return html;} diff --git a/upload/jscripts/ipb_editor_std.js b/upload/jscripts/ipb_editor_std.js index 81b8d330..ca6fec5a 100644 --- a/upload/jscripts/ipb_editor_std.js +++ b/upload/jscripts/ipb_editor_std.js @@ -1,923 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// STD Editor Functions -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -// SHOULD BE CALLED AFTER ipb_editor.js -//------------------------------------------ - -/*-------------------------------------------------------------------------*/ -// INIT -/*-------------------------------------------------------------------------*/ - -var i_am = 'std'; -var rtewindow; -var buttonbar; - -var opentags = -{ - 'b' : 0, - 'i' : 0, - 's' : 0, - 'u' : 0, - 'img' : 0, - 'quote' : 0, - 'left' : 0, - 'center' : 0, - 'right' : 0, - 'color' : 0, - 'background' : 0, - 'indent' : 0, - 'code' : 0 -}; - -var tags_to_div = -{ - 'b' : 'do_bold', - 'i' : 'do_italic', - 's' : 'do_strikethrough', - 'u' : 'do_underline', - 'quote' : 'do_quote', - 'left' : 'do_justifyleft', - 'center' : 'do_justifycenter', - 'right' : 'do_justifyright', - 'color' : 'forecolor', - 'background' : 'hilitecolor', - 'indent' : 'do_indent', - 'code' : 'do_code' -}; - -var rte_to_std = -{ - 'forecolor' : 'color', - 'hilitecolor' : 'background' -}; - -var easymode = 0; - -// IE bug fix -var ie_range_cache = ''; - -/*-------------------------------------------------------------------------*/ -// INIT -/*-------------------------------------------------------------------------*/ - -function init_std_editor() -{ - //-------------------------------------------- - // Pull in width of textarea - //-------------------------------------------- - - try - { - rtewindow = document.getElementById( 'postcontent' ); - oldwidth = parseInt(document.getElementById( 'postcontent' ).style.width); - buttonbar = document.getElementById( 'std-table-buttons' ); - widthunit = document.getElementById( 'postcontent' ).style.width.match( /%/ ) ? '%' : 'px'; - - if ( widthunit == 'px' ) - { - if ( is_opera ) - { - document.getElementById( 'postcontent' ).style.width = oldwidth - 4 + widthunit; - buttonbar.style.width = parseInt( buttonbar.style.width ) - 4 + widthunit; - } - else if ( is_safari ) - { - - } - else - { - document.getElementById( 'postcontent' ).style.width = oldwidth - 6 + widthunit; - } - } - else - { - if ( is_ie || is_moz ) - { - document.getElementById( 'postcontent' ).style.width = oldwidth - 1 + widthunit; - } - } - } - catch(e) - {} - - cvalue = my_getcookie( "bbmode" ); - - if ( cvalue == 1 ) - { - document.getElementById('togglebbmode').value = js_bbeasy_on; - easymode = 1; - } - else - { - document.getElementById('togglebbmode').value = js_bbeasy_off; - easymode = 0; - } -} - -/*-------------------------------------------------------------------------*/ -// Toggle button highlighting (used when clicked on) -/*-------------------------------------------------------------------------*/ - -function toggle_button( tag ) -{ - //-------------------------------------------- - // Change the button status - // Ensure we're not looking for FONT, SIZE or COLOR as these - // buttons don't exist, they are select lists instead. - //-------------------------------------------- - - if ( (tag == 'font') || (tag == 'size') ) - { - return; - } - - if ( opentags[ tag ] ) - { - document.getElementById( tags_to_div[ tag ] ).className = 'rteimage'; - - // Turn off - opentags[ tag ] = 0; - } - else - { - document.getElementById( tags_to_div[ tag ] ).className = 'rteImageRaised'; - - // Turn on - opentags[ tag ] = 1; - } -} - -/*-------------------------------------------------------------------------*/ -// Set BBCode mode -/*-------------------------------------------------------------------------*/ - -function toggle_bbmode(mVal) -{ - if ( easymode ) - { - document.getElementById('togglebbmode').value = js_bbeasy_off; - easymode = 0; - } - else - { - document.getElementById('togglebbmode').value = js_bbeasy_on; - easymode = 1; - } - - my_setcookie( 'bbmode', easymode, 1 ); -} - -/*-------------------------------------------------------------------------*/ -// Get easy mode state -/*-------------------------------------------------------------------------*/ - -function get_easy_mode_state() -{ - //-------------------------------------------- - // Returns true if we've chosen easy mode - //-------------------------------------------- - - if ( easymode ) - { - return true; - } - else - { - return false; - } -} - -/*-------------------------------------------------------------------------*/ -// Pop open and set up the color palette -/*-------------------------------------------------------------------------*/ - -function popcolor( command ) -{ - //------------------------------- - // Already open? - //------------------------------- - - if ( opentags[ rte_to_std[ command ] ] ) - { - //-------------------------------------------- - // Smart close tags - //-------------------------------------------- - - smart_close_tags( rte_to_std[ command ] ); - - return false; - } - else - { - //------------------------------- - // Save current values - //------------------------------- - - parent.command = command; - - if ( is_ie ) - { - postfieldobj.focus(); - ie_range_cache = document.selection.createRange(); - } - - //------------------------------- - // Position and show color palette - //------------------------------- - - buttonElement = document.getElementById(command); - - var iLeftPos = getOffsetLeft(buttonElement); - var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30); - - document.getElementById('cp').style.left = (iLeftPos) + "px"; - document.getElementById('cp').style.top = (iTopPos) + "px"; - - if (document.getElementById('cp').style.visibility == "hidden") - { - document.getElementById('cp').style.visibility = "visible"; - document.getElementById('cp').style.display = "inline"; - } - else - { - document.getElementById('cp').style.visibility = "hidden"; - document.getElementById('cp').style.display = "none"; - } - } -} - -/*-------------------------------------------------------------------------*/ -// Write the color -/*-------------------------------------------------------------------------*/ - -function setColor(color) -{ - var parentCommand = parent.command; - - if ( parentCommand == "hilitecolor" ) - { - if ( wrap_tags("[background=" +color+ "]", "[/background]", true ) ) - { - toggle_button( "background" ); - pushstack(bbtags, "background"); - } - } - else - { - if ( wrap_tags("[color=" +color+ "]", "[/color]", true ) ) - { - toggle_button( "color" ); - pushstack(bbtags, "color"); - } - } - - document.getElementById('cp').style.visibility = "hidden"; - document.getElementById('cp').style.display = "none"; -} - -/*-------------------------------------------------------------------------*/ -// EMOTICONS -/*-------------------------------------------------------------------------*/ - -function emoticon(theSmilie) -{ - doInsert(" " + theSmilie + " ", "", false); - - if ( (ua_vers >= 4) && is_ie && is_win && emowindow != 'undefined' ) - { - emowindow.focus(); - } -} - -/*-------------------------------------------------------------------------*/ -// ALTER FONT -/*-------------------------------------------------------------------------*/ - -function alterfont(theval, thetag) -{ - if (theval == 0) - { - return; - } - - if ( wrap_tags("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true ) ) - { - pushstack(bbtags, thetag); - } - - postformobj.ffont.selectedIndex = 0; - postformobj.fsize.selectedIndex = 0; -} - -/*-------------------------------------------------------------------------*/ -// SIMPLE TAGS (such as B, I S U, etc) -/*-------------------------------------------------------------------------*/ - -function simpletag(thetag) -{ - var tagOpen = opentags[ thetag ]; - - if ( get_easy_mode_state() ) - { - inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]"); - - if ( (inserttext != null) && (inserttext != "") ) - { - wrap_tags("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false); - } - } - else - { - if ( tagOpen == 0 ) - { - if ( wrap_tags("[" + thetag + "]", "[/" + thetag + "]", true ) ) - { - //-------------------------------------------- - // Toggle - //-------------------------------------------- - - toggle_button( thetag ); - - pushstack(bbtags, thetag); - } - } - else - { - //-------------------------------------------- - // Smart close tags - //-------------------------------------------- - - smart_close_tags( thetag ); - } - } -} - -/*-------------------------------------------------------------------------*/ -// List tag -/*-------------------------------------------------------------------------*/ - -function tag_list( type ) -{ - var listvalue = "init"; - var thelist = ""; - - opentag = ( type == 'ordered' ) ? '[list=1]' : '[list]'; - - while ( (listvalue != "") && (listvalue != null) ) - { - listvalue = prompt(list_prompt, ""); - - if ( (listvalue != "") && (listvalue != null) ) - { - thelist = thelist+"[*]"+listvalue+"\n"; - } - } - - if ( thelist != "" ) - { - wrap_tags( opentag + "\n" + thelist + "[/list]\n", ""); - } -} - -/*-------------------------------------------------------------------------*/ -// URL tag -/*-------------------------------------------------------------------------*/ - -function tag_url() -{ - var FoundErrors = ''; - - //---------------------------------------- - // Do we have ranged text? - //---------------------------------------- - - if ( check_range() ) - { - //---------------------------------------- - // Yes, just ask for the URL and wrap - //---------------------------------------- - - var enterURL = prompt(text_enter_url, "http://"); - - if ( ! enterURL) - { - alert(error_no_url); - return; - } - - wrap_tags( "[url="+enterURL+"]", "[/url]", "" ); - } - else - { - var enterURL = prompt(text_enter_url, "http://"); - var enterTITLE = prompt(text_enter_url_name, jsfile_myweb_lang ); - - if ( ! enterURL) - { - FoundErrors += " " + error_no_url; - } - if ( ! enterTITLE) - { - FoundErrors += " " + error_no_title; - } - - if ( FoundErrors ) - { - alert( jsfile_error_lang +FoundErrors); - return; - } - - wrap_tags("[url="+enterURL+"]"+enterTITLE+"[/url]", ""); - } -} - -/*-------------------------------------------------------------------------*/ -// Image tag -/*-------------------------------------------------------------------------*/ - -function tag_image() -{ - var FoundErrors = ''; - - //---------------------------------------- - // Do we have ranged text? - //---------------------------------------- - - if ( check_range() ) - { - //---------------------------------------- - // Yes, just wrap text - //---------------------------------------- - - wrap_tags( "[img]", "[/img]", "" ); - } - else - { - var enterURL = prompt(text_enter_image, "http://"); - - if ( ! enterURL ) - { - alert(error_no_url); - return; - } - - wrap_tags("[img]"+enterURL+"[/img]", ""); - } -} - -/*-------------------------------------------------------------------------*/ -// Email tag -/*-------------------------------------------------------------------------*/ - -function tag_email() -{ - //---------------------------------------- - // Do we have ranged text? - //---------------------------------------- - - if ( check_range() ) - { - //---------------------------------------- - // Yes, just wrap text - //---------------------------------------- - - wrap_tags( "[email]", "[/email]", "" ); - } - else - { - var emailAddress = prompt(text_enter_email, ""); - - if ( ! emailAddress ) - { - alert(error_no_email); - return; - } - - wrap_tags( "[email]"+emailAddress+"[/email]", "" ); - } -} - -/*-------------------------------------------------------------------------*/ -// Do we have ranged text? -/*-------------------------------------------------------------------------*/ - -function check_range() -{ - var has_range = false; - - //---------------------------------------- - // It's IE! - //---------------------------------------- - - if ( (ua_vers >= 4) && is_ie && is_win ) - { - var sel = document.selection; - var rng = sel.createRange(); - rng.colapse; - - if ( (sel.type == "Text" || sel.type == "None") && rng != null ) - { - if ( rng.text.length > 0) - { - has_range = true; - } - } - } - - //---------------------------------------- - // It's MOZZY! - //---------------------------------------- - - else if ( postfieldobj.selectionEnd ) - { - var ss = postfieldobj.selectionStart; - var st = postfieldobj.scrollTop; - var es = postfieldobj.selectionEnd; - - if (es <= 2) - { - es = postfieldobj.textLength; - } - - var start = (postfieldobj.value).substring(0, ss); - var middle = (postfieldobj.value).substring(ss, es); - var end = (postfieldobj.value).substring(es, postfieldobj.textLength); - - //----------------------------------- - // text range? - //----------------------------------- - - if (postfieldobj.selectionEnd - postfieldobj.selectionStart > 0) - { - has_range = true; - } - } - - return has_range; -} - -/*-------------------------------------------------------------------------*/ -// Check message length -/*-------------------------------------------------------------------------*/ - -function check_length() -{ - MessageLength = postfieldobj.value.length; - message = ""; - - if (MessageMax > 0) - { - message = js_post + ": " + js_max_length + " " + MessageMax + " " + js_characters +"."; - } - else - { - message = ""; - } - - alert(message + " " + js_used + " " + MessageLength + " " + js_characters + "."); -} - -/*-------------------------------------------------------------------------*/ -// GENERAL INSERT FUNCTION -// opentext : opening tag -// closetext: closing tag, used if we have selected text -/*-------------------------------------------------------------------------*/ - -function wrap_tags(opentext, closetext, issingle) -{ - var has_closed = false; - - if ( ! issingle ) - { - issingle = false; - } - - //---------------------------------------- - // It's IE! - //---------------------------------------- - - if ( (ua_vers >= 4) && is_ie && is_win ) - { - if ( postfieldobj.isTextEdit ) - { - postfieldobj.focus(); - - var sel = document.selection; - - var rng = ie_range_cache ? ie_range_cache : sel.createRange(); - - var stored_range = rng.duplicate() - stored_range.moveToElementText( postfieldobj ); - stored_range.setEndPoint( 'EndToEnd', rng ); - - // Stores start position of text selection - postfieldobj.selectionStart = stored_range.text.length - rng.text.length; - // Stores end position of text selection - postfieldobj.selectionEnd = postfieldobj.selectionStart + rng.text.length; - - rng.colapse; - - if ( (sel.type == "Text" || sel.type == "None") && rng != null) - { - if (closetext != "" && rng.text && rng.text.length > 0) - { - opentext += rng.text + closetext; - } - else if ( issingle ) - { - has_closed = true; - } - - rng.text = rng.text.charAt(rng.text.length - 1) == ' ' ? opentext + ' ' : opentext; - } - else - { - postfieldobj.value += opentext; - has_closed = true; - } - } - else - { - postfieldobj.value += opentext; - has_closed = true; - } - - ie_range_cache = null; - - rng.select(); - } - - //---------------------------------------- - // It's MOZZY! - //---------------------------------------- - - else if ( postfieldobj.selectionEnd ) - { - var ss = postfieldobj.selectionStart; - var st = postfieldobj.scrollTop; - var es = postfieldobj.selectionEnd; - - if (es <= 0) - { - es = postfieldobj.textLength; - } - - var start = (postfieldobj.value).substring(0, ss); - var middle = (postfieldobj.value).substring(ss, es); - var end = (postfieldobj.value).substring(es, postfieldobj.textLength); - - //----------------------------------- - // text range? - //----------------------------------- - - if ( postfieldobj.selectionEnd - postfieldobj.selectionStart > 0 ) - { - middle = opentext + middle + closetext; - } - else - { - middle = opentext + middle; - - if ( issingle ) - { - has_closed = true; - } - } - - postfieldobj.value = start + middle + end; - - var cpos = ss + (middle.length); - - postfieldobj.selectionStart = cpos; - postfieldobj.selectionEnd = cpos; - postfieldobj.scrollTop = st; - } - - //---------------------------------------- - // It's CRAPPY! - //---------------------------------------- - - else - { - if ( issingle ) - { - has_closed = false; - } - - postfieldobj.value += opentext + ' ' + closetext; - } - - postfieldobj.focus(); - - return has_closed; -} - -/*--------------------------------------------*/ -// Make current STD window (n)px bigger -/*--------------------------------------------*/ - -function std_window_resize( pix ) -{ - var box = postfieldobj; - var cur_height = parseInt( box.style.height ) ? parseInt( box.style.height ) : 300; - var new_height = cur_height + pix; - - if ( new_height > 0 ) - { - box.style.height = new_height + "px"; - } - - return false; -} - -/*-------------------------------------------------------------------------*/ -// Validate form (must always have this method defined!) -/*-------------------------------------------------------------------------*/ - -function ValidateForm( isMsg ) -{ - MessageLength = postfieldobj.value.length; - errors = ""; - - //----------------------------------------- - // Check for remove attachments - //----------------------------------------- - - try - { - if ( postformobj.removeattachid.value > 0 ) - { - okdelete = confirm( js_remove_attach ); - - if ( okdelete == true ) - { - return true; - } - else - { - postformobj.removeattachid.value = 0; - return false; - } - } - } - catch(error) - { - // - } - - if ( isMsg == 1) - { - if ( postformobj.msg_title.value.length < 2 ) - { - errors = js_msg_no_title; - } - } - - if ( MessageLength < 2 ) - { - errors = js_no_message; - } - - if ( MessageMax !=0 ) - { - if (MessageLength > MessageMax) - { - errors = js_max_length + " " + MessageMax + " " + js_characters + ". " + js_current + ": " + MessageLength; - } - } - - if ( errors != "" && ! Override ) - { - alert(errors); - return false; - } - - else - { - try - { - postformobj.submit.disabled = true; - } - catch(e) - { - try - { - postformobj.dosubmit.disabled = true; - } - catch(e) { } - } - - return true; - } -} - - -function doInsert(ibTag, ibClsTag, isSingle) -{ - var isClose = false; - var obj_ta = fombj.Post; - - //---------------------------------------- - // It's IE! - //---------------------------------------- - if ( (ua_vers >= 4) && is_ie && is_win) - { - if (obj_ta.isTextEdit) - { - obj_ta.focus(); - var sel = document.selection; - var rng = sel.createRange(); - rng.colapse; - if((sel.type == "Text" || sel.type == "None") && rng != null) - { - if(ibClsTag != "" && rng.text.length > 0) - ibTag += rng.text + ibClsTag; - else if(isSingle) - isClose = true; - - rng.text = ibTag; - } - } - else - { - if(isSingle) - { - isClose = true; - } - - obj_ta.value += ibTag; - } - } - //---------------------------------------- - // It's MOZZY! - //---------------------------------------- - - else if ( obj_ta.selectionEnd ) - { - var ss = obj_ta.selectionStart; - var st = obj_ta.scrollTop; - var es = obj_ta.selectionEnd; - - if (es <= 2) - { - es = obj_ta.textLength; - } - - var start = (obj_ta.value).substring(0, ss); - var middle = (obj_ta.value).substring(ss, es); - var end = (obj_ta.value).substring(es, obj_ta.textLength); - - //----------------------------------- - // text range? - //----------------------------------- - - if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) - { - middle = ibTag + middle + ibClsTag; - } - else - { - middle = ibTag + middle; - - if (isSingle) - { - isClose = true; - } - } - - obj_ta.value = start + middle + end; - - var cpos = ss + (middle.length); - - obj_ta.selectionStart = cpos; - obj_ta.selectionEnd = cpos; - obj_ta.scrollTop = st; - - - } - //---------------------------------------- - // It's CRAPPY! - //---------------------------------------- - else - { - if (isSingle) - { - isClose = true; - } - - obj_ta.value += ibTag; - } - - obj_ta.focus(); - - return isClose; -} -var bbtags = new Array(); - -var fombj = document.REPLIER; - - - +var i_am='std';var rtewindow;var buttonbar;var opentags={'b':0,'i':0,'s':0,'u':0,'img':0,'quote':0,'left':0,'center':0,'right':0,'color':0,'background':0,'indent':0,'code':0};var tags_to_div={'b':'do_bold','i':'do_italic','s':'do_strikethrough','u':'do_underline','quote':'do_quote','left':'do_justifyleft','center':'do_justifycenter','right':'do_justifyright','color':'forecolor','background':'hilitecolor','indent':'do_indent','code':'do_code'};var rte_to_std={'forecolor':'color','hilitecolor':'background'};var easymode=0;var ie_range_cache='';function init_std_editor(){try{rtewindow=document.getElementById('postcontent');oldwidth=parseInt(document.getElementById('postcontent').style.width);buttonbar=document.getElementById('std-table-buttons');widthunit=document.getElementById('postcontent').style.width.match( /%/)?'%':'px';if(widthunit=='px'){if(is_opera){document.getElementById('postcontent').style.width=oldwidth-4+widthunit;buttonbar.style.width=parseInt(buttonbar.style.width)-4+widthunit;}else if(is_safari){}else{document.getElementById('postcontent').style.width=oldwidth-6+widthunit;}}else{if(is_ie||is_moz){document.getElementById('postcontent').style.width=oldwidth-1+widthunit;}}}catch(e){}cvalue=my_getcookie("bbmode");if(cvalue==1){document.getElementById('togglebbmode').value=js_bbeasy_on;easymode=1;}else{document.getElementById('togglebbmode').value=js_bbeasy_off;easymode=0;}faceobj=document.getElementById('fontface');faceregex= /\<\!--FONTFACE--\>/gi;facecontent=faceobj.innerHTML.replace(faceregex,write_fontface_box());faceobj.innerHTML=facecontent;sizeobj=document.getElementById('fontsize');sizeregex= /\<\!--FONTSIZE--\>/gi;sizecontent=sizeobj.innerHTML.replace(sizeregex,write_fontsize_box());sizeobj.innerHTML=sizecontent;}function toggle_button(tag){if((tag=='font')||(tag=='size')){return;}if(opentags[tag]){document.getElementById(tags_to_div[tag]).className='rteimage';opentags[tag]=0;}else{document.getElementById(tags_to_div[tag]).className='rteImageRaised';opentags[tag]=1;}}function toggle_bbmode(mVal){if(easymode){document.getElementById('togglebbmode').value=js_bbeasy_off;easymode=0;}else{document.getElementById('togglebbmode').value=js_bbeasy_on;easymode=1;}my_setcookie('bbmode',easymode,1);}function get_easy_mode_state(){if(easymode){return true;}else{return false;}}function popcolor(command){if(opentags[rte_to_std[command]]){smart_close_tags(rte_to_std[command]);return false;}else{parent.command=command;if(is_ie){postfieldobj.focus();ie_range_cache=document.selection.createRange();}buttonElement=document.getElementById(command);var iLeftPos=getOffsetLeft(buttonElement);var iTopPos=getOffsetTop(buttonElement)+(buttonElement.offsetHeight+30);document.getElementById('cp').style.left=(iLeftPos)+"px";document.getElementById('cp').style.top=(iTopPos)+"px";if(document.getElementById('cp').style.visibility=="hidden"){document.getElementById('cp').style.visibility="visible";document.getElementById('cp').style.display="inline";}else{document.getElementById('cp').style.visibility="hidden";document.getElementById('cp').style.display="none";}}}function setColor(color){var parentCommand=parent.command;if(parentCommand=="hilitecolor"){if(wrap_tags("[background="+color+"]","[/background]",true)){toggle_button("background");pushstack(bbtags,"background");}}else{if(wrap_tags("[color="+color+"]","[/color]",true)){toggle_button("color");pushstack(bbtags,"color");}}document.getElementById('cp').style.visibility="hidden";document.getElementById('cp').style.display="none";}function emoticon(theSmilie){doInsert(" "+theSmilie+" ","",false);if((ua_vers>=4)&&is_ie&&is_win&&emowindow!=''&&emowindow!='undefined'){emowindow.focus();}}function alterfont(theval,thetag){if(theval==0){return;}if(wrap_tags("["+thetag+"="+theval+"]","[/"+thetag+"]",true)){pushstack(bbtags,thetag);}postformobj.ffont.selectedIndex=0;postformobj.fsize.selectedIndex=0;}function simpletag(thetag){var tagOpen=opentags[thetag];if(get_easy_mode_state()){inserttext=prompt(prompt_start+"\n["+thetag+"]xxx[/"+thetag+"]");if((inserttext!=null)&&(inserttext!="")){wrap_tags("["+thetag+"]"+inserttext+"[/"+thetag+"] ","",false);}}else{if(tagOpen==0){if(wrap_tags("["+thetag+"]","[/"+thetag+"]",true)){toggle_button(thetag);pushstack(bbtags,thetag);}}else{smart_close_tags(thetag);}}}function tag_list(type){var listvalue="init";var thelist="";opentag=(type=='ordered')?'[list=1]':'[list]';while((listvalue!="")&&(listvalue!=null)){listvalue=prompt(list_prompt,"");if((listvalue!="")&&(listvalue!=null)){thelist=thelist+"[*]"+listvalue+"\n";}}if(thelist!=""){wrap_tags(opentag+"\n"+thelist+"[/list]\n","");}}function tag_url(){var FoundErrors='';if(check_range()){var enterURL=prompt(text_enter_url,"http://");if(!enterURL){alert(error_no_url);return;}wrap_tags("[url="+enterURL+"]","[/url]","");}else{var enterURL=prompt(text_enter_url,"http://");var enterTITLE=prompt(text_enter_url_name,jsfile_myweb_lang);if(!enterURL){FoundErrors+=" "+error_no_url;}if(!enterTITLE){FoundErrors+=" "+error_no_title;}if(FoundErrors){alert(jsfile_error_lang+FoundErrors);return;}wrap_tags("[url="+enterURL+"]"+enterTITLE+"[/url]","");}}function tag_image(){var FoundErrors='';if(check_range()){wrap_tags("[img]","[/img]","");}else{var enterURL=prompt(text_enter_image,"http://");if(!enterURL){alert(error_no_url);return;}wrap_tags("[img]"+enterURL+"[/img]","");}}function tag_email(){if(check_range()){wrap_tags("[email]","[/email]","");}else{var emailAddress=prompt(text_enter_email,"");if(!emailAddress){alert(error_no_email);return;}wrap_tags("[email]"+emailAddress+"[/email]","");}}function check_range(){var has_range=false;if((ua_vers>=4)&&is_ie&&is_win){var sel=document.selection;var rng=sel.createRange();rng.colapse;if((sel.type=="Text"||sel.type=="None")&&rng!=null){if(rng.text.length>0){has_range=true;}}}else if(postfieldobj.selectionEnd){var ss=postfieldobj.selectionStart;var st=postfieldobj.scrollTop;var es=postfieldobj.selectionEnd;if(es<=2){es=postfieldobj.textLength;}var start=(postfieldobj.value).substring(0,ss);var middle=(postfieldobj.value).substring(ss,es);var end=(postfieldobj.value).substring(es,postfieldobj.textLength);if(postfieldobj.selectionEnd-postfieldobj.selectionStart>0){has_range=true;}}return has_range;}function check_length(){MessageLength=postfieldobj.value.length;message="";if(MessageMax>0){message=js_post+": "+js_max_length+" "+MessageMax+" "+js_characters+".";}else{message="";}alert(message+" "+js_used+" "+MessageLength+" "+js_characters+".");}function wrap_tags(opentext,closetext,issingle){var has_closed=false;if(!issingle){issingle=false;}if((ua_vers>=4)&&is_ie&&is_win){if(postfieldobj.isTextEdit){postfieldobj.focus();var sel=document.selection;var rng=ie_range_cache?ie_range_cache:sel.createRange();var stored_range=rng.duplicate()stored_range.moveToElementText(postfieldobj);stored_range.setEndPoint('EndToEnd',rng);postfieldobj.selectionStart=stored_range.text.length-rng.text.length;postfieldobj.selectionEnd=postfieldobj.selectionStart+rng.text.length;rng.colapse;if((sel.type=="Text"||sel.type=="None")&&rng!=null){if(closetext!=""&&rng.text&&rng.text.length>0){opentext+=rng.text+closetext;}else if(issingle){has_closed=true;}rng.text=rng.text.charAt(rng.text.length-1)==' '?opentext+' ':opentext;}else{postfieldobj.value+=opentext;has_closed=true;}}else{postfieldobj.value+=opentext;has_closed=true;}ie_range_cache=null;rng.select();}else if(postfieldobj.selectionEnd){var ss=postfieldobj.selectionStart;var st=postfieldobj.scrollTop;var es=postfieldobj.selectionEnd;if(es<=0){es=postfieldobj.textLength;}var start=(postfieldobj.value).substring(0,ss);var middle=(postfieldobj.value).substring(ss,es);var end=(postfieldobj.value).substring(es,postfieldobj.textLength);if(postfieldobj.selectionEnd-postfieldobj.selectionStart>0){middle=opentext+middle+closetext;}else{middle=opentext+middle;if(issingle){has_closed=true;}}postfieldobj.value=start+middle+end;var cpos=ss+(middle.length);postfieldobj.selectionStart=cpos;postfieldobj.selectionEnd=cpos;postfieldobj.scrollTop=st;}else{if(issingle){has_closed=false;}postfieldobj.value+=opentext+' '+closetext;}postfieldobj.focus();return has_closed;}function std_window_resize(pix){var box=postfieldobj;var cur_height=parseInt(box.style.height)?parseInt(box.style.height):300;var new_height=cur_height+pix;if(new_height>0){box.style.height=new_height+"px";}return false;}function ValidateForm(isMsg){MessageLength=postfieldobj.value.length;errors="";try{if(postformobj.removeattachid.value>0){okdelete=confirm(js_remove_attach);if(okdelete==true){return true;}else{postformobj.removeattachid.value=0;return false;}}}catch(error){}if(isMsg==1){if(postformobj.msg_title.value.length<2){errors=js_msg_no_title;}}if(MessageLength<2){errors=js_no_message;}if(MessageMax!=0){if(MessageLength>MessageMax){errors=js_max_length+" "+MessageMax+" "+js_characters+". "+js_current+": "+MessageLength;}}if(errors!=""&&!Override){alert(errors);return false;}else{try{postformobj.submit.disabled=true;}catch(e){try{postformobj.dosubmit.disabled=true;}catch(e){}}return true;}}function doInsert(ibTag,ibClsTag,isSingle){var isClose=false;var obj_ta=fombj.Post;if((ua_vers>=4)&&is_ie&&is_win){if(obj_ta.isTextEdit){obj_ta.focus();var sel=document.selection;var rng=sel.createRange();rng.colapse;if((sel.type=="Text"||sel.type=="None")&&rng!=null){if(ibClsTag!=""&&rng.text.length>0)ibTag+=rng.text+ibClsTag;else if(isSingle)isClose=true;rng.text=ibTag;}}else{if(isSingle){isClose=true;}obj_ta.value+=ibTag;}}else if(obj_ta.selectionEnd){var ss=obj_ta.selectionStart;var st=obj_ta.scrollTop;var es=obj_ta.selectionEnd;if(es<=2){es=obj_ta.textLength;}var start=(obj_ta.value).substring(0,ss);var middle=(obj_ta.value).substring(ss,es);var end=(obj_ta.value).substring(es,obj_ta.textLength);if(obj_ta.selectionEnd-obj_ta.selectionStart>0){middle=ibTag+middle+ibClsTag;}else{middle=ibTag+middle;if(isSingle){isClose=true;}}obj_ta.value=start+middle+end;var cpos=ss+(middle.length);obj_ta.selectionStart=cpos;obj_ta.selectionEnd=cpos;obj_ta.scrollTop=st;}else{if(isSingle){isClose=true;}obj_ta.value+=ibTag;}obj_ta.focus();return isClose;}var bbtags=new Array();var fombj=document.REPLIER; diff --git a/upload/jscripts/ipb_finduser.js b/upload/jscripts/ipb_finduser.js index 10890d75..9a9b835b 100644 --- a/upload/jscripts/ipb_finduser.js +++ b/upload/jscripts/ipb_finduser.js @@ -1,75 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Find User JS File -// (c) 2004 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - - - -function add_to_form() -{ - var name = document.finduser.username.options[document.finduser.username.selectedIndex].value; - - if (separator == 'line') - { - separator = '\n'; - } - - if (separator == 'none') - { - separator = ''; - } - - if (entry == 'textarea') - { - // Where shall we put the separator? - - var tbox = eval('opener.document.REPLIER.'+in_name+'.value'); - var tboxSize = eval('opener.document.REPLIER.'+in_name+'.value.length'); - - // Remove leading spaces... - - while ( tbox.slice(0,1) == " " ) - { - tbox = tbox.substr(1, tboxSize - 1); - tboxSize = tboxSize; - } - - // Remove trailing spaces... - - while ( tbox.slice(tboxSize - 1, tboxSize) == " " ) - { - tbox = tbox.substr(0, tboxSize - 1); - tboxSize = tboxSize; - } - - // Do we have a leading comma? - - while ( tbox.slice(0,1) == "\n" ) - { - tbox = tbox.substr(1, tboxSize - 1); - tboxSize = tboxSize; - } - - // Do we have a trailing comma?... - - while ( tbox.slice(tboxSize - 1, tboxSize) == "\n" ) - { - tbox = tbox.substr(0, tboxSize - 1); - tboxSize = tboxSize; - } - - // First in box? - - if ( tboxSize == 0) - { - eval('opener.document.REPLIER.'+in_name+'.value += name'); - } - else - { - eval('opener.document.REPLIER.'+in_name+'.value += separator + name'); - } - } -} \ No newline at end of file +function add_to_form(){var name=document.finduser.username.options[document.finduser.username.selectedIndex].value;if(separator=='line'){separator='\n';}if(separator=='none'){separator='';}if(entry=='textarea'){var tbox=eval('opener.document.REPLIER.'+in_name+'.value');var tboxSize=eval('opener.document.REPLIER.'+in_name+'.value.length');while(tbox.slice(0,1)==" "){tbox=tbox.substr(1,tboxSize-1);tboxSize=tboxSize;}while(tbox.slice(tboxSize-1,tboxSize)==" "){tbox=tbox.substr(0,tboxSize-1);tboxSize=tboxSize;}while(tbox.slice(0,1)=="\n"){tbox=tbox.substr(1,tboxSize-1);tboxSize=tboxSize;}while(tbox.slice(tboxSize-1,tboxSize)=="\n"){tbox=tbox.substr(0,tboxSize-1);tboxSize=tboxSize;}if(tboxSize==0){eval('opener.document.REPLIER.'+in_name+'.value += name');}else{eval('opener.document.REPLIER.'+in_name+'.value += separator + name');}}} diff --git a/upload/jscripts/ipb_forum.js b/upload/jscripts/ipb_forum.js index e833d817..7d892149 100644 --- a/upload/jscripts/ipb_forum.js +++ b/upload/jscripts/ipb_forum.js @@ -1,723 +1,356 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Forums JS File -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - -/*--------------------------------------------*/ -// INIT -/*--------------------------------------------*/ - -var topic_dates = {}; -var topic_flags = {}; -var forum_mark_time; -var newer_topics = new Array; -var newer_count = 0; -var flags_count = 0; -var forum_id; -var url_extra = ''; -var start_int = 0; -var forum_mark_sent = 0; -var span_html = new Array; -var desc_html = new Array; -var text_html = new Array; -var folders = new Array; -var _desc_clicked = 0; -var topic_links_init = 0; - -var tid_date = new Array(); - -var click_delay = 1200; //microseconds (1.2 seconds) - -/*--------------------------------------------*/ -// Pop up mod options -/*--------------------------------------------*/ - -function forum_mod_pop( fid ) -{ - try - { - menu_action_close(); - } - catch(e) { } - - PopUp( ipb_var_base_url + 'act=mod&CODE=prune_start&f='+fid+'&auth_key='+ipb_md5_check, 'PRUNE', 600,500); -} - -/*--------------------------------------------*/ -// INIT topic links... -/*--------------------------------------------*/ - -function forum_init_topic_links() -{ - //---------------------------------- - // Get page links... - // Gah.. another safari bug - //---------------------------------- - - var pagelinks = document.getElementsByTagName('a'); - - //---------------------------------- - // Sort through and grab topic links - //---------------------------------- - - for ( var i = 0 ; i <= pagelinks.length ; i++ ) - { - try - { - if ( ! pagelinks[i].id ) - { - continue; - } - } - catch(e) - { - continue; - } - - var linkid = pagelinks[i].id; - var linkname = linkid.replace( /^(.*)-(\d+)$/, "$1" ); - - if ( linkname == 'tid-link' ) - { - pagelinks[i].onmousedown = topic_link_event_mousedown; - pagelinks[i].onmouseup = topic_link_event_mouseup; - //pagelinks[i].style.cursor = 'text'; - - if ( ! topic_links_init ) - { - pagelinks[i].title = pagelinks[i].title + '. ' + lang_clickhold; - } - } - } - - topic_links_init = 1; -} - -/*--------------------------------------------*/ -// Mousedown, start timer -/*--------------------------------------------*/ - -function topic_link_event_mousedown( event ) -{ - //---------------------------------- - // Prevent link loading - //---------------------------------- - - event = global_cancel_bubble( event, true ); - - //---------------------------------- - // Get TID - //---------------------------------- - - var tid = _get_tid_from_id( this.id ); - - //---------------------------------- - // Start... - //---------------------------------- - - tid_date[ tid ] = _get_time_now(); - - //---------------------------------- - // Start loop - //---------------------------------- - - setTimeout( "topic_link_event_timer("+tid+")", 5 ); -} - -/*--------------------------------------------*/ -// Event, loop -/*--------------------------------------------*/ - -function topic_link_event_timer( tid ) -{ - //---------------------------------- - // Get time now - //---------------------------------- - - var timenow = _get_time_now(); - - //---------------------------------- - // Click held for 1.5 s+? - //---------------------------------- - - if ( timenow > 0 && tid_date[tid] > 0 && ( (timenow - tid_date[tid] ) > click_delay ) ) - { - //---------------------------------- - // Yeah.. wipe tid time and convert - //---------------------------------- - - tid_date[tid] = 0; - span_to_input( tid ); - return false; - } - - //---------------------------------- - // Not wiped? loop on! - //---------------------------------- - - if ( tid_date[tid] > 0 ) - { - setTimeout( "topic_link_event_timer("+tid+")", 5 ); - } - else - { - return false; - } -} - -/*--------------------------------------------*/ -// Mouseup? Cancel timer to kill the loop -/*--------------------------------------------*/ - -function topic_link_event_mouseup( event ) -{ - //---------------------------------- - // Prevent link loading - //---------------------------------- - - event = global_cancel_bubble( event, true ); - - //---------------------------------- - // Get TID - //---------------------------------- - - var tid = _get_tid_from_id( this.id ); - - //---------------------------------- - // Reset timer - //---------------------------------- - - tid_date[tid] = 0; -} - -/*--------------------------------------------*/ -// Get time now -/*--------------------------------------------*/ - -function _get_time_now() -{ - var mydate = new Date(); - return mydate.getTime(); -} - -/*--------------------------------------------*/ -// Get TID from ID -/*--------------------------------------------*/ - -function _get_tid_from_id( id ) -{ - return id.replace( /.*\-(\d+)/, "$1" ); -} - - -/*--------------------------------------------*/ -// Turn topic title into text input -/*--------------------------------------------*/ - -function topic_toggle_folder( tid ) -{ - //---------------------------------- - // Using fancy js? - //---------------------------------- - - if ( ! use_enhanced_js ) - { - return false; - } - - //---------------------------------- - // Can edit? - //---------------------------------- - - if ( ! perm_can_open && ! perm_can_close ) - { - return false; - } - - var td_content = document.getElementById( 'tid-folder-' + tid ).innerHTML; - var state; - - if ( td_content.match( new RegExp( "/("+img_folder_closed+")([\"'])", "i" ) ) ) - { - //---------------------------------- - // Can? - //---------------------------------- - - if ( ! perm_can_open ) - { - return false; - } - - //---------------------------------- - // Topic is locked - //---------------------------------- - - if ( folders[ tid ] ) - { - td_content = folders[ tid ]; - } - else - { - td_content = td_content.replace( new RegExp( "([\"'])(.*)/(.+?)([\"'])"), "$1$2/"+img_folder_normal+"$4" ); - } - - state = 'open'; - } - else - { - //---------------------------------- - // Can? - //---------------------------------- - - if ( ! perm_can_close ) - { - return false; - } - - //---------------------------------- - // Topic isn't locked - //---------------------------------- - - folders[ tid ] = td_content; - td_content = td_content.replace( new RegExp( "([\"'])(.*)/(.+?)([\"'])"), "$1$2/"+img_folder_closed+"$4" ); - state = 'closed'; - } - - document.getElementById( 'tid-folder-' + tid ).innerHTML = td_content; - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var returned = xmlobj.xmlhandler.responseText; - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - - xmlobj.process( ipb_var_base_url + 'act=xmlout&do=save-topic&type=openclose&name='+state+'&md5check='+ipb_md5_check+'&tid='+tid ); - - return false; -} - -/*--------------------------------------------*/ -// Turn topic title into text input -/*--------------------------------------------*/ - -function span_to_input( tid ) -{ - //---------------------------------- - // Using fancy js? - //---------------------------------- - - if ( ! use_enhanced_js ) - { - return false; - } - - //---------------------------------- - // Can? - //---------------------------------- - - if ( ! perm_can_edit ) - { - return false; - } - - //---------------------------------- - // Prevent double click when desc open - //---------------------------------- - - if ( _desc_clicked ) - { - return false; - } - - span_html[ tid ] = document.getElementById( 'tid-span-' + tid ).innerHTML; - text_html[ tid ] = document.getElementById( 'tid-link-' + tid ).innerHTML; - - //---------------------------------- - // Topic title - //---------------------------------- - - perm_max_length = perm_max_length ? perm_max_length : 50; - - document.getElementById( 'tid-span-' + tid ).innerHTML = ''; //"' - document.getElementById( 'edit-' + tid ).onkeyup = function( event ) { tid_keypress(event, tid) } - document.getElementById( 'edit-' + tid ).onblur = function( event ) { tid_blur(tid) } - document.getElementById( 'edit-' + tid ).focus(); - - return false; -} - -/*--------------------------------------------*/ -// Turn topic DESC into text input -/*--------------------------------------------*/ - -function span_desc_to_input( tid ) -{ - //---------------------------------- - // Using fancy js? - //---------------------------------- - - if ( ! use_enhanced_js ) - { - return false; - } - - //---------------------------------- - // Can? - //---------------------------------- - - if ( ! perm_can_edit ) - { - return false; - } - - //---------------------------------- - // Prevent double click when desc open - //---------------------------------- - - if ( _desc_clicked ) - { - return false; - } - - _desc_clicked = 1; - - desc_html[ tid ] = document.getElementById( 'tid-desc-' + tid ).innerHTML; - - //---------------------------------- - // Topic desc - //---------------------------------- - - perm_max_length = perm_max_length ? perm_max_length : 50; - - document.getElementById( 'tid-desc-' + tid ).innerHTML = ''; //"' - document.getElementById( 'edit-' + tid ).focus(); - - return false; -} - -/*--------------------------------------------*/ -// BLUR HANDLER -/*--------------------------------------------*/ - -tid_blur = function( tid, type ) -{ - new_text = document.getElementById( 'edit-' + tid ).value; - - if( type == 'desc' ) - { - tid_save( tid, new_text, type ); - } - else - { - if ( new_text != "" ) - { - tid_save( tid, new_text, type ); - } - } -} - -/*--------------------------------------------*/ -// KEY PRESS HANDLER -/*--------------------------------------------*/ - -tid_keypress = function( evt, tid, type ) -{ - if ( is_safari ) - { - return false; - } - - evt = evt ? evt : window.event; - new_text = document.getElementById( 'edit-' + tid ).value; - - if ( ( evt.keyCode == 13 || evt.keyCode == 3 ) && new_text != "" ) - { - tid_save( tid, new_text, type ); - } -} - -/*--------------------------------------------*/ -// UDPATE DB -/*--------------------------------------------*/ - -tid_save = function( tid, new_text, type ) -{ - var donotedit = 0; - - if ( type == 'desc' ) - { - if ( new_text == desc_html[ tid ] ) - { - donotedit = 1; - } - - _desc_clicked = 0; - - document.getElementById( 'tid-desc-' + tid ).innerHTML = new_text; - } - else - { - if ( new_text == text_html[ tid ] ) - { - donotedit = 1; - } - - type = 'title'; - document.getElementById( 'tid-span-' + tid ).innerHTML = span_html[ tid ]; - document.getElementById( 'tid-link-' + tid ).innerHTML = new_text; - - //---------------------------------- - // Re-check topic links - //---------------------------------- - - forum_init_topic_links(); - } - - if ( donotedit ) - { - return false; - } - - var url = ipb_var_base_url + 'act=xmlout&do=save-topic&type='+type+'&md5check='+ipb_md5_check+'&tid='+tid; - var fields = new Array(); - - //---------------------------------- - // Populate fields - //---------------------------------- - - fields['md5check'] = ipb_md5_check; - fields['tid'] = tid; - fields['act'] = 'xmlout'; - fields['do'] = 'save-topic'; - fields['type'] = type; - fields['name'] = new_text; - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var returned = xmlobj.xmlhandler.responseText; - - if ( type != 'desc' && ! returned.match( /s<\/null>/ ) ) - { - document.getElementById( 'tid-link-' + tid ).innerHTML = returned; - } - - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - xmlobj.process( url, 'POST', xmlobj.format_for_post(fields) ); - - - return false; -} - - -/*--------------------------------------------*/ -// Who posted -/*--------------------------------------------*/ - -function who_posted(tid) -{ - window.open("index.php?act=Stats&CODE=who&t="+tid, "WhoPosted", "toolbar=no,scrollbars=yes,resizable=yes,width=230,height=300"); -} - -/*--------------------------------------------*/ -// Check delete -/*--------------------------------------------*/ - -function checkdelete() -{ - if ( ! document.modform.selectedtids.value ) - { - return false; - } - - isDelete = document.modform.tact.options[document.modform.tact.selectedIndex].value; - - if (isDelete == 'delete') - { - formCheck = confirm( lang_suredelete ); - - if (formCheck == true) - { - return true; - } - else - { - return false; - } - } -} - -/*--------------------------------------------*/ -// Toggle selection -/*--------------------------------------------*/ - -function forum_toggle_tid( tid ) -{ - saved = new Array(); - clean = new Array(); - add = 1; - - //----------------------------------- - // Get form info - //----------------------------------- - - tmp = document.modform.selectedtids.value; - - if( tmp != "" ) - { - saved = tmp.split(","); - } - - //----------------------------------- - // Remove bit if exists - //----------------------------------- - - for( i = 0 ; i < saved.length; i++ ) - { - if ( saved[i] != "" ) - { - if ( saved[i] == tid ) - { - add = 0; - } - else - { - clean[clean.length] = saved[i]; - } - } - } - - //----------------------------------- - // Add? - //----------------------------------- - - if ( add ) - { - clean[ clean.length ] = tid; - eval("document.img"+tid+".src=selectedbutton"); - } - else - { - eval(" document.img"+tid+".src=unselectedbutton"); - } - - newvalue = clean.join(','); - - my_setcookie( 'modtids', newvalue, 0 ); - - document.modform.selectedtids.value = newvalue; - - newcount = stacksize(clean); - - document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ')'; - - return false; -} - -/*--------------------------------------------*/ -// Do multi page jump -/*--------------------------------------------*/ - -function multi_page_jump( url_bit, total_posts, per_page ) -{ - pages = 1; - cur_st = ipb_var_st; - cur_page = 1; - - if ( total_posts % per_page == 0 ) - { - pages = total_posts / per_page; - } - else - { - pages = Math.ceil( total_posts / per_page ); - } - - msg = ipb_lang_tpl_q1 + " " + pages; - - if ( cur_st > 0 ) - { - cur_page = cur_st / per_page; cur_page = cur_page -1; - } - - show_page = 1; - - if ( cur_page < pages ) - { - show_page = cur_page + 1; - } - - if ( cur_page >= pages ) - { - show_page = cur_page - 1; - } - else - { - show_page = cur_page + 1; - } - - userPage = prompt( msg, show_page ); - - if ( userPage > 0 ) - { - if ( userPage < 1 ) { userPage = 1; } - if ( userPage > pages ) { userPage = pages; } - if ( userPage == 1 ) { start = 0; } - else { start = (userPage - 1) * per_page; } - - window.location = url_bit + "&st=" + start; - } -} +var topic_dates={};var topic_flags={};var topic_state={};var forum_mark_time;var newer_topics=new Array;var newer_count=0;var flags_count=0;var forum_id;var url_extra='';var start_int=0;var forum_mark_sent=0;var span_html=new Array;var desc_html=new Array;var text_html=new Array;var folders=new Array;var _desc_clicked=0;var topic_links_init=0;var _this_select_all=0;var tid_date=new Array();var click_delay=1200;function forum_mod_pop(fid){try{menu_action_close();}catch(e){}PopUp(ipb_var_base_url+'act=mod&CODE=prune_start&f='+fid+'&auth_key='+ipb_md5_check,'PRUNE',600,500);}function forum_init_topic_links(){var pagelinks=document.getElementsByTagName('a');for(var i=0;i<=pagelinks.length;i++){try{if(!pagelinks[i].id){continue;}}catch(e){continue;}var linkid=pagelinks[i].id;var linkname=linkid.replace( /^(.*)-(\d+)$/,"$1");if(linkname=='tid-link'){pagelinks[i].onmousedown=topic_link_event_mousedown;pagelinks[i].onmouseup=topic_link_event_mouseup;if(!topic_links_init){pagelinks[i].title=pagelinks[i].title+'. '+lang_clickhold;}}}topic_links_init=1;}function topic_link_event_mousedown(event){event=global_cancel_bubble(event,true);var tid=_get_tid_from_id(this.id);tid_date[tid]=_get_time_now();setTimeout("topic_link_event_timer("+tid+")",5);}function topic_link_event_timer(tid){var timenow=_get_time_now();if(timenow>0&&tid_date[tid]>0&&((timenow-tid_date[tid])>click_delay)){tid_date[tid]=0;span_to_input(tid);return false;}if(tid_date[tid]>0){setTimeout("topic_link_event_timer("+tid+")",5);}else{return false;}}function topic_link_event_mouseup(event){event=global_cancel_bubble(event,true);var tid=_get_tid_from_id(this.id);tid_date[tid]=0;}function _get_time_now(){var mydate=new Date();return mydate.getTime();}function _get_tid_from_id(id){return id.replace( /.*\-(\d+)/,"$1");}function topic_toggle_folder(tid,state){if(!use_enhanced_js){return false;}if(!perm_can_open&&!perm_can_close){return false;}var td_content=document.getElementById('tid-folder-'+tid).innerHTML;if(topic_state[tid]){state=topic_state[tid];}if(state=='closed'){if(!perm_can_open){return false;}if(folders[tid]){td_content=folders[tid];}state='open';}else{if(!perm_can_close){return false;}folders[tid]=td_content;state='closed';}topic_state[tid]=state;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;}var returned=xmlobj.xmlhandler.responseText;td_content=returned;document.getElementById('tid-folder-'+tid).innerHTML=td_content;};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(ipb_var_base_url+'act=xmlout&do=save-topic&type=openclose&name='+state+'&md5check='+ipb_md5_check+'&tid='+tid);return false;}function span_to_input(tid){if(!use_enhanced_js){return false;}if(!perm_can_edit){return false;}if(_desc_clicked){return false;}span_html[tid]=document.getElementById('tid-span-'+tid).innerHTML;text_html[tid]=document.getElementById('tid-link-'+tid).innerHTML;perm_max_length=perm_max_length?perm_max_length:50;document.getElementById('tid-span-'+tid).innerHTML='';//"' +document.getElementById( 'edit-' + tid ).onkeyup = function( event ) { tid_keypress(event, tid) } +document.getElementById( 'edit-' + tid ).onblur = function( event ) { tid_blur(tid) } +document.getElementById( 'edit-' + tid ).focus(); +return false; +} +function span_desc_to_input( tid ) +{ +if ( ! use_enhanced_js ) +{ +return false; +} +if ( ! perm_can_edit ) +{ +return false; +} +if ( _desc_clicked ) +{ +return false; +} +_desc_clicked = 1; +desc_html[ tid ] = document.getElementById( 'tid-desc-' + tid ).innerHTML; +perm_max_length = perm_max_length ? perm_max_length : 50; +document.getElementById( 'tid-desc-' + tid ).innerHTML = '';//"' +document.getElementById( 'edit-' + tid ).focus(); +return false; +} +tid_blur = function( tid, type ) +{ +new_text = document.getElementById( 'edit-' + tid ).value; +if( type == 'desc' ) +{ +tid_save( tid, new_text, type ); +} +else +{ +if ( new_text != "" ) +{ +tid_save( tid, new_text, type ); +} +} +} +tid_keypress = function( evt, tid, type ) +{ +if ( is_safari ) +{ +return false; +} +evt = evt ? evt : window.event; +new_text = document.getElementById( 'edit-' + tid ).value; +if ( ( evt.keyCode == 13 || evt.keyCode == 3 ) && new_text != "" ) +{ +tid_save( tid, new_text, type ); +} +else if( evt.keyCode == 27 ) +{ +if( type == 'desc' ) +{ +document.getElementById( 'tid-desc-' + tid ).innerHTML = desc_html[ tid ]; +} +else +{ +document.getElementById( 'tid-span-' + tid ).innerHTML = span_html[ tid ]; +document.getElementById( 'tid-link-' + tid ).innerHTML = text_html[ tid ]; +} +return false; +} +} +tid_save = function( tid, new_text, type ) +{ +var donotedit = 0; +if ( type == 'desc' ) +{ +if ( new_text == desc_html[ tid ] ) +{ +donotedit = 1; +} +_desc_clicked = 0; +document.getElementById( 'tid-desc-' + tid ).innerHTML = new_text; +} +else +{ +if ( new_text == text_html[ tid ] ) +{ +donotedit = 1; +} +type = 'title'; +document.getElementById( 'tid-span-' + tid ).innerHTML = span_html[ tid ]; +document.getElementById( 'tid-link-' + tid ).innerHTML = new_text; +forum_init_topic_links(); +} +if ( donotedit ) +{ +return false; +} +var url = ipb_var_base_url + 'act=xmlout&do=save-topic&type='+type+'&md5check='+ipb_md5_check+'&tid='+tid; +var fields = new Array(); +fields['md5check'] = ipb_md5_check; +fields['tid'] = tid; +fields['act'] = 'xmlout'; +fields['do'] = 'save-topic'; +fields['type'] = type; +fields['name'] = new_text; +do_request_function = function() +{ +if ( ! xmlobj.readystate_ready_and_ok() ) +{ +return; +} +var returned = xmlobj.xmlhandler.responseText; +if ( type != 'desc' && ! returned.match( /s<\/null>/ ) ) +{ +document.getElementById( 'tid-link-' + tid ).innerHTML = returned; +} +}; +xmlobj = new ajax_request(); +xmlobj.onreadystatechange( do_request_function ); +xmlobj.process( url, 'POST', xmlobj.format_for_post(fields) ); +return false; +} +function who_posted(tid) +{ +window.open("index.php?act=Stats&CODE=who&t="+tid, "WhoPosted", "toolbar=no,scrollbars=yes,resizable=yes,width=230,height=300"); +} +function checkdelete() +{ +if ( ! document.modform.selectedtids.value ) +{ +return false; +} +isDelete = document.modform.tact.options[document.modform.tact.selectedIndex].value; +if (isDelete == 'delete') +{ +formCheck = confirm( lang_suredelete ); +if (formCheck == true) +{ +return true; +} +else +{ +return false; +} +} +} +function forum_select_all() +{ +clean = new Array(); +saved = new Array(); +var topics_this_page = new Array(); +tmp = document.modform.selectedtids.value; +if ( tmp != "" ) +{ +saved = tmp.split(","); +} +if( _this_select_all == 0 ) +{ +var the_topics = document.getElementsByTagName('input'); +for ( var i = 0 ; i <= the_topics.length ; i++ ) +{ +var e = the_topics[i]; +if ( e && (e.type == 'hidden') && (! e.disabled) ) +{ +var s = e.id; +var a = s.replace( /^tid_(.+?)$/, "$1" ); +if ( a ) +{ +try +{ +document.getElementById( 'ipb-topic-' + a ).src = selectedbutton; +clean[clean.length] = a; +topics_this_page[ a ] = 1; +} +catch(err) +{ +} +} +} +} +document.getElementById( 'ipb-topics-all' ).src = selectedbutton; +_this_select_all = 1; +} +else +{ +var the_topics = document.getElementsByTagName('input'); +for ( var i = 0 ; i <= the_topics.length ; i++ ) +{ +var e = the_topics[i]; +if ( e && (e.type == 'hidden') && (! e.disabled) ) +{ +var s = e.id; +var a = s.replace( /^tid_(.+?)$/, "$1" ); +if ( a ) +{ +try +{ +document.getElementById( 'ipb-topic-' + a ).src = unselectedbutton; +topics_this_page[ a ] = 1; +} +catch(err) +{ +} +} +} +} +document.getElementById( 'ipb-topics-all' ).src = unselectedbutton; +_this_select_all = 0; +} +for( i = 0 ; i < saved.length; i++ ) +{ +if ( saved[i] != "" && topics_this_page[ saved[i] ] != 1 ) +{ +clean[clean.length] = saved[i]; +} +} +newvalue = clean.join(','); +var oldvalue = 0; +for( var k = 0; k < clean.length; k++ ) +{ +if( topics_this_page[ clean[ k ] ] != 1 ) +{ +oldvalue++; +} +} +my_setcookie( 'modtids', newvalue, 0 ); +document.modform.selectedtids.value = newvalue; +newcount = stacksize(clean); +if( oldvalue > 0 ) +{ +document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ') (' + oldvalue + ' ' + lang_otherpage +' )'; +} +else +{ +document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ')'; +} +return false; +} +function forum_toggle_tid( tid ) +{ +var saved = new Array(); +var clean = new Array(); +var add = 1; +var _img = document.getElementById( 'ipb-topic-' + tid ); +tmp = document.modform.selectedtids.value; +if( tmp != "" ) +{ +saved = tmp.split(","); +} +for( i = 0 ; i < saved.length; i++ ) +{ +if ( saved[i] != "" ) +{ +if ( saved[i] == tid ) +{ +add = 0; +} +else +{ +clean[clean.length] = saved[i]; +} +} +} +if ( add ) +{ +clean[ clean.length ] = tid; +_img.src = selectedbutton; +} +else +{ +_img.src = unselectedbutton; +} +newvalue = clean.join(','); +var topics_this_page = new Array(); +var oldvalue = 0; +var the_topics = document.getElementsByTagName('input'); +for ( var i = 0 ; i <= the_topics.length ; i++ ) +{ +var e = the_topics[i]; +if ( e && (e.type == 'hidden') && (! e.disabled) ) +{ +var s = e.id; +var a = s.replace( /^tid_(.+?)$/, "$1" ); +if ( a ) +{ +topics_this_page[ a ] = 1; +} +} +} +for( var k = 0; k < clean.length; k++ ) +{ +if ( topics_this_page[ clean[ k ] ] != 1 ) +{ +oldvalue++; +} +} +my_setcookie( 'modtids', newvalue, 0 ); +document.modform.selectedtids.value = newvalue; +newcount = stacksize(clean); +if ( oldvalue > 0 ) +{ +document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ') (' + oldvalue + ' ' + lang_otherpage +' )'; +} +else +{ +document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ')'; +} +return false; +} +function multi_page_jump( url_bit, total_posts, per_page ) +{ +pages = 1; +cur_st = ipb_var_st; +cur_page = 1; +if ( total_posts % per_page == 0 ) +{ +pages = total_posts / per_page; +} +else +{ +pages = Math.ceil( total_posts / per_page ); +} +msg = ipb_lang_tpl_q1 + " " + pages; +if ( cur_st > 0 ) +{ +cur_page = cur_st / per_page; cur_page = cur_page -1; +} +show_page = 1; +if ( cur_page < pages ) +{ +show_page = cur_page + 1; +} +if ( cur_page >= pages ) +{ +show_page = cur_page - 1; +} +else +{ +show_page = cur_page + 1; +} +userPage = prompt( msg, show_page ); +if ( userPage > 0 ) +{ +if ( userPage < 1 ) { userPage = 1; } +if ( userPage > pages ) { userPage = pages; } +if ( userPage == 1 ) { start = 0; } +else { start = (userPage - 1) * per_page; } +window.location = url_bit + "&st=" + start; +} +} +function boards_send_marker_update( fid, is_subforum ) +{ +try +{ +var imgsrc = document.getElementById( 'f-'+fid ).innerHTML; +if ( imgsrc ) +{ +var regex = new RegExp( "src=['\"](.*/)("+regex_markers+")['\"]");var results=imgsrc.match(regex);if(img_markers[results[2]]){imgsrc=imgsrc.replace(regex,"src='$1"+img_markers[results[2]]+"'");document.getElementById('f-'+fid).innerHTML=imgsrc;}}}catch(e){}var text_return=0;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;};text_return=xmlobj.xmlhandler.responseText;};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(ipb_var_base_url+'act=xmlout&do=mark-forum&fid='+fid+'&sf='+is_subforum);if(text_return==1){return false;}} diff --git a/upload/jscripts/ipb_global.js b/upload/jscripts/ipb_global.js index 764f275b..a2562917 100644 --- a/upload/jscripts/ipb_global.js +++ b/upload/jscripts/ipb_global.js @@ -1,745 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Global JS File -// (c) 2003 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - -//========================================== -// Set up -//========================================== - -var input_red = 'input-warn'; -var input_green = 'input-ok'; -var input_ok_box = 'input-ok-content'; -var input_warn_box = 'input-warn-content'; - -var img_blank = 'blank.gif'; -var img_tick = 'aff_tick.gif'; -var img_cross = 'aff_cross.gif'; - -// Sniffer based on http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html - -var uagent = navigator.userAgent.toLowerCase(); -var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") ); -var is_opera = (uagent.indexOf('opera') != -1); -var is_webtv = (uagent.indexOf('webtv') != -1); -var is_ie = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) ); -var is_ie4 = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) ); -var is_moz = ( (navigator.product == 'Gecko') && (!is_opera) && (!is_webtv) && (!is_safari) ); -var is_ns = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) ); -var is_ns4 = ( (is_ns) && (parseInt(navigator.appVersion) == 4) ); -var is_kon = (uagent.indexOf('konqueror') != -1); - -var is_win = ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) ); -var is_mac = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") ); -var ua_vers = parseInt(navigator.appVersion); - -var ipb_pages_shown = 0; -var ipb_pages_array = new Array(); - -/*-------------------------------------------------------------------------*/ -// DST Auto correction -/*-------------------------------------------------------------------------*/ - -function global_dst_check( tzo, dst ) -{ - var thisoffset = tzo + dst; - var dstoffset = new Date().getTimezoneOffset() / 60; - var dstset = 0; - var url = ipb_var_base_url + 'act=xmlout&do=dst-autocorrection&md5check=' + ipb_md5_check; - - if ( Math.abs( thisoffset + dstoffset ) == 1 ) - { - try - { - //---------------------------------- - // Fancy first... - //---------------------------------- - - xml_dst_set( url + '&xml=1' ); - dstset = 1; - } - catch(e) - { - dstset = 0; - } - - //---------------------------------- - // No fancy? - //---------------------------------- - - if ( dstset == 0 ) - { - window.location = url; - } - } -} - -/*-------------------------------------------------------------------------*/ -// Get cookie -/*-------------------------------------------------------------------------*/ - -function my_getcookie( name ) -{ - cname = ipb_var_cookieid + name + '='; - cpos = document.cookie.indexOf( cname ); - - if ( cpos != -1 ) - { - cstart = cpos + cname.length; - cend = document.cookie.indexOf(";", cstart); - - if (cend == -1) - { - cend = document.cookie.length; - } - - return unescape( document.cookie.substring(cstart, cend) ); - } - - return null; -} - -/*-------------------------------------------------------------------------*/ -// Set cookie -/*-------------------------------------------------------------------------*/ - -function my_setcookie( name, value, sticky ) -{ - expire = ""; - domain = ""; - path = "/"; - - if ( sticky ) - { - expire = "; expires=Wed, 1 Jan 2020 00:00:00 GMT"; - } - - if ( ipb_var_cookie_domain != "" ) - { - domain = '; domain=' + ipb_var_cookie_domain; - } - - if ( ipb_var_cookie_path != "" ) - { - path = ipb_var_cookie_path; - } - - document.cookie = ipb_var_cookieid + name + "=" + value + "; path=" + path + expire + domain + ';'; -} - -/*-------------------------------------------------------------------------*/ -// Lang replace -/*-------------------------------------------------------------------------*/ - -function lang_build_string() -{ - if ( ! arguments.length || ! arguments ) - { - return; - } - - var string = arguments[0]; - - for( var i = 1 ; i < arguments.length ; i++ ) - { - var match = new RegExp('<%' + i + '>', 'gi'); - string = string.replace( match, arguments[i] ); - } - - return string; -} - -/*-------------------------------------------------------------------------*/ -// Pop up MyAssistant window -/*-------------------------------------------------------------------------*/ - -function buddy_pop() -{ - var not_loaded_yet = 0; - - if ( use_enhanced_js ) - { - try - { - xml_myassistant_init(); - not_loaded_yet = 1; - } - catch( e ) - { - //alert(e); - not_loaded_yet = 0; - } - } - - if ( ! not_loaded_yet ) - { - ipb_var_base_url = ipb_var_base_url.replace( '&', '&' ); - window.open( ipb_var_base_url + 'act=buddy','BrowserBuddy','width=250,height=500,resizable=yes,scrollbars=yes'); - } -} - -/*-------------------------------------------------------------------------*/ -// Multi Page jumps -/*-------------------------------------------------------------------------*/ - -function do_multi_page_jump( pages_id ) -{ - var pages = 1; - var cur_st = ipb_var_st; - var cur_page = 1; - var total_posts = ipb_pages_array[ pages_id ][2]; - var per_page = ipb_pages_array[ pages_id ][1]; - var url_bit = ipb_pages_array[ pages_id ][0]; - var userPage = parseInt( document.getElementById( 'st-'+pages_id ).value ); - - //----------------------------------- - // Fix up URL BIT - //----------------------------------- - - url_bit = url_bit.replace( new RegExp( "&", "g" ) , '&' ); - - //----------------------------------- - // Work out pages - //----------------------------------- - - if ( total_posts % per_page == 0 ) - { - pages = total_posts / per_page; - } - else - { - pages = Math.ceil( total_posts / per_page ); - } - - if ( cur_st > 0 ) - { - cur_page = cur_st / per_page; cur_page = cur_page -1; - } - - if ( userPage > 0 ) - { - if ( userPage < 1 ) { userPage = 1; } - if ( userPage > pages ) { userPage = pages; } - if ( userPage == 1 ) { start = 0; } - else { start = (userPage - 1) * per_page; } - - window.location = url_bit + "&st=" + start; - return false; - } -} - -/*-------------------------------------------------------------------------*/ -// Hide / Unhide menu elements -/*-------------------------------------------------------------------------*/ - -function pages_st_focus( pages_id ) -{ - document.getElementById( 'st-'+pages_id ).focus(); -} - -/*-------------------------------------------------------------------------*/ -// Hide / Unhide menu elements -/*-------------------------------------------------------------------------*/ - -function ShowHide(id1, id2) -{ - if (id1 != '') toggleview(id1); - if (id2 != '') toggleview(id2); -} - -/*-------------------------------------------------------------------------*/ -// Get element by id -/*-------------------------------------------------------------------------*/ - -function my_getbyid(id) -{ - itm = null; - - if (document.getElementById) - { - itm = document.getElementById(id); - } - else if (document.all) - { - itm = document.all[id]; - } - else if (document.layers) - { - itm = document.layers[id]; - } - - return itm; -} - -/*-------------------------------------------------------------------------*/ -// Show/hide toggle -/*-------------------------------------------------------------------------*/ - -function toggleview(id) -{ - if ( ! id ) return; - - if ( itm = my_getbyid(id) ) - { - if (itm.style.display == "none") - { - my_show_div(itm); - } - else - { - my_hide_div(itm); - } - } -} - -/*-------------------------------------------------------------------------*/ -// Set DIV ID to hide -/*-------------------------------------------------------------------------*/ - -function my_hide_div(itm) -{ - if ( ! itm ) return; - - itm.style.display = "none"; -} - -/*-------------------------------------------------------------------------*/ -// Set DIV ID to show -/*-------------------------------------------------------------------------*/ - -function my_show_div(itm) -{ - if ( ! itm ) return; - - itm.style.display = ""; -} - -/*-------------------------------------------------------------------------*/ -// Change cell colour -/*-------------------------------------------------------------------------*/ - -function change_cell_color( id, cl ) -{ - itm = my_getbyid(id); - - if ( itm ) - { - itm.className = cl; - } -} - -/*-------------------------------------------------------------------------*/ -// Toggle category -/*-------------------------------------------------------------------------*/ - -function togglecategory( fid, add ) -{ - saved = new Array(); - clean = new Array(); - - //----------------------------------- - // Get any saved info - //----------------------------------- - - if ( tmp = my_getcookie('collapseprefs') ) - { - saved = tmp.split(","); - } - - //----------------------------------- - // Remove bit if exists - //----------------------------------- - - for( i = 0 ; i < saved.length; i++ ) - { - if ( saved[i] != fid && saved[i] != "" ) - { - clean[clean.length] = saved[i]; - } - } - - //----------------------------------- - // Add? - //----------------------------------- - - if ( add ) - { - clean[ clean.length ] = fid; - my_show_div( my_getbyid( 'fc_'+fid ) ); - my_hide_div( my_getbyid( 'fo_'+fid ) ); - } - else - { - my_show_div( my_getbyid( 'fo_'+fid ) ); - my_hide_div( my_getbyid( 'fc_'+fid ) ); - } - - my_setcookie( 'collapseprefs', clean.join(','), 1 ); -} - -/*-------------------------------------------------------------------------*/ -// locationjump -/*-------------------------------------------------------------------------*/ - -function locationjump(url) -{ - window.location = ipb_var_base_url + url; -} - -/*-------------------------------------------------------------------------*/ -// CHOOSE SKIN -/*-------------------------------------------------------------------------*/ - -function chooseskin(obj) -{ - choosebox = obj.options[obj.selectedIndex].value; - extravars = ''; - - if ( choosebox != -1 && ! isNaN( choosebox ) ) - { - if ( document.skinselectorbox.skinurlbits.value ) - { - extravars = '&' + document.skinselectorbox.skinurlbits.value; - - //---------------------------------- - // Strip out old skin change stuff - // setskin=1&skinid=2 - //---------------------------------- - - extravars = extravars.replace( /setskin=\d{1,}/g, '' ); - extravars = extravars.replace( /skinid=\d{1,}/g , '' ); - extravars = extravars.replace( /&{1,}/g , '&' ); - extravars = extravars.replace( /s=&/g , '' ); - } - - locationjump( 'setskin=1&skinid=' + choosebox + extravars ); - } -} - -/*-------------------------------------------------------------------------*/ -// CHOOSE LANG -/*-------------------------------------------------------------------------*/ - -function chooselang(obj) -{ - choosebox = obj.options[obj.selectedIndex].value; - extravars = ''; - - if ( document.langselectorbox.langurlbits.value ) - { - extravars = '&' + document.langselectorbox.langurlbits.value; - - //---------------------------------- - // Strip out old skin change stuff - // setskin=1&skinid=2 - //---------------------------------- - - extravars = extravars.replace( /setlanguage=\d{1,}/g, '' ); - extravars = extravars.replace( /cal_id=&/g, '' ); - extravars = extravars.replace( /langid=\w{1,}/g , '' ); - extravars = extravars.replace( /&{1,}/g , '&' ); - extravars = extravars.replace( /s=&/g , '' ); - } - - locationjump( 'setlanguage=1&langid=' + choosebox + extravars ); -} - -/*-------------------------------------------------------------------------*/ -// pop up window -/*-------------------------------------------------------------------------*/ - -function PopUp(url, name, width,height,center,resize,scroll,posleft,postop) -{ - showx = ""; - showy = ""; - - if (posleft != 0) { X = posleft } - if (postop != 0) { Y = postop } - - if (!scroll) { scroll = 1 } - if (!resize) { resize = 1 } - - if ((parseInt (navigator.appVersion) >= 4 ) && (center)) - { - X = (screen.width - width ) / 2; - Y = (screen.height - height) / 2; - } - - if ( X > 0 ) - { - showx = ',left='+X; - } - - if ( Y > 0 ) - { - showy = ',top='+Y; - } - - if (scroll != 0) { scroll = 1 } - - var Win = window.open( url, name, 'width='+width+',height='+height+ showx + showy + ',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no'); -} - -/*-------------------------------------------------------------------------*/ -// Array: Get stack size -/*-------------------------------------------------------------------------*/ - -function stacksize(thearray) -{ - for (i = 0 ; i < thearray.length; i++ ) - { - if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) - { - return i; - } - } - - return thearray.length; -} - -/*-------------------------------------------------------------------------*/ -// Array: Push stack -/*-------------------------------------------------------------------------*/ - -function pushstack(thearray, newval) -{ - arraysize = stacksize(thearray); - thearray[arraysize] = newval; -} - -/*-------------------------------------------------------------------------*/ -// Array: Pop stack -/*-------------------------------------------------------------------------*/ - -function popstack(thearray) -{ - arraysize = stacksize(thearray); - theval = thearray[arraysize - 1]; - delete thearray[arraysize - 1]; - return theval; -} - -/*-------------------------------------------------------------------------*/ -// Converts "safe" innerHTML back to normal template -/*-------------------------------------------------------------------------*/ - -function innerhtml_template_to_html( t ) -{ - t = t.replace( /<%(\d+?)>/ig, "<%$1>" ); - t = t.replace( /%3C%(\d+?)%3E/ig , "<%$1>" ); - return t; -} - -/*-------------------------------------------------------------------------*/ -// Global freeze events -/*-------------------------------------------------------------------------*/ - -function global_cancel_bubble(obj, extra) -{ - if ( ! obj || is_ie) - { - if ( extra ) - { - window.event.returnValue = false; - } - - window.event.cancelBubble = true; - - return window.event; - } - else - { - obj.stopPropagation(); - - if ( extra ) - { - obj.preventDefault(); - } - - return obj; - } -} - -/*-------------------------------------------------------------------------*/ -// Get left posititon of object -/*-------------------------------------------------------------------------*/ - -function _get_obj_leftpos(obj) -{ - var left = obj.offsetLeft; - - while( (obj = obj.offsetParent) != null ) - { - left += obj.offsetLeft; - } - - return left; -} - -/*-------------------------------------------------------------------------*/ -// Get top position of object -/*-------------------------------------------------------------------------*/ - -function _get_obj_toppos(obj) -{ - var top = obj.offsetTop; - - while( (obj = obj.offsetParent) != null ) - { - top += obj.offsetTop; - } - - return top; -} - -/*-------------------------------------------------------------------------*/ -// Center a div on the screen -/*-------------------------------------------------------------------------*/ - -function center_div() -{ - this.divname = ''; - this.divobj = ''; -} - -/*-------------------------------------------------------------------------*/ -// Main run function -/*-------------------------------------------------------------------------*/ - -center_div.prototype.move_div = function() -{ - try - { - this.divobj = document.getElementById( this.divname ); - } - catch(e) - { - return; - } - - //---------------------------------- - // Figure width and height - //---------------------------------- - - var my_width = 0; - var my_height = 0; - - if ( typeof( window.innerWidth ) == 'number' ) - { - //---------------------------------- - // Non IE - //---------------------------------- - - my_width = window.innerWidth; - my_height = window.innerHeight; - } - else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) - { - //---------------------------------- - // IE 6+ - //---------------------------------- - - my_width = document.documentElement.clientWidth; - my_height = document.documentElement.clientHeight; - } - else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) - { - //---------------------------------- - // Old IE - //---------------------------------- - - my_width = document.body.clientWidth; - my_height = document.body.clientHeight; - } - - //---------------------------------- - // Show... - //---------------------------------- - - this.divobj.style.position = 'absolute'; - this.divobj.style.display = 'block'; - this.divobj.style.zIndex = 99; - - //---------------------------------- - // Get div height && width - //---------------------------------- - - var divheight = parseInt( this.divobj.style.Height ); - var divwidth = parseInt( this.divobj.style.Width ); - - divheight = divheight ? divheight : 200; - divwidth = divwidth ? divwidth : 400; - - //---------------------------------- - // Get current scroll offset - //---------------------------------- - - var scrolly = this.getYscroll(); - - //---------------------------------- - // Finalize... - //---------------------------------- - - var setX = ( my_width - divwidth ) / 2; - var setY = ( my_height - divheight ) / 2 + scrolly; - - setX = ( setX < 0 ) ? 0 : setX; - setY = ( setY < 0 ) ? 0 : setY; - - this.divobj.style.left = setX + "px"; - this.divobj.style.top = setY + "px"; -} - -/*-------------------------------------------------------------------------*/ -// Hide div -/*-------------------------------------------------------------------------*/ - -center_div.prototype.hide_div = function() -{ - try - { - if ( ! this.divobj ) - { - return; - } - else - { - this.divobj.style.display = 'none'; - } - } - catch(e) - { - return; - } -} - -/*-------------------------------------------------------------------------*/ -// Get YScroll -/*-------------------------------------------------------------------------*/ - -center_div.prototype.getYscroll = function() -{ - var scrollY = 0; - - if ( document.documentElement && document.documentElement.scrollTop ) - { - scrollY = document.documentElement.scrollTop; - } - else if ( document.body && document.body.scrollTop ) - { - scrollY = document.body.scrollTop; - } - else if ( window.pageYOffset ) - { - scrollY = window.pageYOffset; - } - else if ( window.scrollY ) - { - scrollY = window.scrollY; - } - - return scrollY; -} \ No newline at end of file +var input_red='input-warn';var input_green='input-ok';var input_ok_box='input-ok-content';var input_warn_box='input-warn-content';var img_blank='blank.gif';var img_tick='aff_tick.gif';var img_cross='aff_cross.gif';var uagent=navigator.userAgent.toLowerCase();var is_safari=((uagent.indexOf('safari')!=-1)||(navigator.vendor=="Apple Computer, Inc."));var is_opera=(uagent.indexOf('opera')!=-1);var is_webtv=(uagent.indexOf('webtv')!=-1);var is_ie=((uagent.indexOf('msie')!=-1)&&(!is_opera)&&(!is_safari)&&(!is_webtv));var is_ie4=((is_ie)&&(uagent.indexOf("msie 4.")!=-1));var is_ie7=((is_ie)&&(uagent.indexOf("msie 7.")!=-1));var is_moz=(navigator.product=='Gecko');var is_ns=((uagent.indexOf('compatible')==-1)&&(uagent.indexOf('mozilla')!=-1)&&(!is_opera)&&(!is_webtv)&&(!is_safari));var is_ns4=((is_ns)&&(parseInt(navigator.appVersion)==4));var is_kon=(uagent.indexOf('konqueror')!=-1);var is_win=((uagent.indexOf("win")!=-1)||(uagent.indexOf("16bit")!=-1));var is_mac=((uagent.indexOf("mac")!=-1)||(navigator.vendor=="Apple Computer, Inc."));var ua_vers=parseInt(navigator.appVersion);var ipb_pages_shown=0;var ipb_pages_array=new Array();var ipb_skin_url=ipb_skin_url?ipb_skin_url:ipb_var_image_url;function gbl_check_search_box(){try{var _cb=document.getElementById('gbl-search-checkbox');var _fd=document.getElementById('gbl-search-forums');if(_cb.checked&&ipb_input_f){_fd.value=ipb_input_f;}else{_fd.value='all';}}catch(error){}};function show_inline_messages(){var _string=window.location.toString();var _msg_box=null;if(_string.indexOf('?___msg=')!=-1||_string.indexOf(';___msg=')!=-1||_string.indexOf('&___msg=')!=-1){try{if(parent.document.getElementById('ipd-msg-text')){_msg_box=parent.document.getElementById('ipd-msg-text');}else{_msg_box=document.getElementById('ipd-msg-text');}}catch(error){alert(error);}var message=_string.replace( /^.*[\?;&]___msg=(.+?)(&.*$|$)/,"$1");message=unescape(message);if(message_pop_up_lang[message]){try{_msg_box.innerHTML=message_pop_up_lang[message];centerdiv=new center_div();centerdiv.divname='ipd-msg-wrapper';centerdiv.move_div();var _this_to=setTimeout("hide_inline_messages_instant()",2000);}catch(anerror){alert(message_pop_up_lang[message]);}}}};function show_inline_messages_instant(msg){_msg_box=document.getElementById('ipd-msg-text');_msg_box.innerHTML=message_pop_up_lang[msg];centerdiv=new center_div();centerdiv.divname='ipd-msg-wrapper';centerdiv.move_div();var _this_to=setTimeout("hide_inline_messages_instant()",2000);};function hide_inline_messages_instant(){try{document.getElementById('ipd-msg-wrapper').style.display='none';parent.document.getElementById('ipd-msg-wrapper').style.display='none';}catch(acold){}};function iframe_include(){this.iframe_id=null;this.iframe_obj=null;this.iframe_add_to_div=null;this.iframe_add_to_div_obj=null;this.iframe_main_wrapper=null;this.iframe_classname='GBL-component-iframe';this.ok_to_go=1;this.iframe_height=300;this.ajax='';};iframe_include.prototype.init=function(){try{this.iframe_add_to_div_obj=document.getElementById(this.iframe_add_to_div);}catch(error){this.ok_to_go=0;}};iframe_include.prototype.include=function(url){if(!this.ok_to_go){return false;}var iheight=parseInt(this.iframe_add_to_div_obj.style.height);var iwidth=this.iframe_add_to_div_obj.style.width;if(this.iframe_obj){this.iframe_add_to_div_obj.removeChild(this.iframe_obj);}this.iframe_obj=document.createElement('IFRAME');this.iframe_obj.src=url;this.iframe_obj.id=this.iframe_id;this.iframe_obj.name=this.iframe_id;this.iframe_obj.scrolling='no';this.iframe_obj.frameBorder='no';this.iframe_obj.border='0';this.iframe_obj.className=this.iframe_classname;this.iframe_obj.style.width=iwidth?iwidth:'100%';this.iframe_obj.style.height=iheight?iheight-5+'px':this.iframe_height+'px';this.iframe_obj.style.overflow='hidden';this.iframe_obj.style.padding='0px';this.iframe_obj.style.margin='0px';this.ajax=new ajax_request();this.iframe_add_to_div_obj.style.padding='0px';this.iframe_add_to_div_obj.style.margin='0px';this.iframe_obj.iframe_loaded=0;this.iframe_obj.iframe_init=0;this.iframe_obj._this=this;this.iframe_add_to_div_obj.style.overflow='';this.iframe_add_to_div_obj.appendChild(this.iframe_obj);this.ajax.show_loading("Loading content...");if(is_ie){this.iframe_obj.allowTransparency=true;this.iframe_obj.onreadystatechange=this.iframe_on_load_ie;}else{this.iframe_obj.onload=this.iframe_onload;}};iframe_include.prototype.iframe_onload=function(e){var _document=this._this.iframe_obj.contentDocument;if(is_safari){_document=window.frames[this.id].document;}if(!this.iframe_init){this.iframe_init=1;this.iframe_loaded=1;_document.onmousedown=menu_action_close;}else{this.iframe_loaded=1;_document.onmousedown=menu_action_close;}this._this.ajax.hide_loading();try{_document.getElementsByTagName('body')[0].style.padding='0px';_document.getElementsByTagName('body')[0].style.margin='0px';}catch(error){}var _new_height=parseInt(_document.getElementById(this._this.iframe_main_wrapper).offsetHeight);if(_new_height>0){if(is_safari){_new_height+=3;}this._this.iframe_obj.style.height=_new_height+"px";this._this.iframe_add_to_div_obj.style.height=_new_height+"px";}var style=document.getElementsByTagName('style');var _new_style='';for(i in style){_new_style+="\n"+style[i].innerHTML;}try{_document.getElementsByTagName('style')[0].innerHTML=_new_style;}catch(error){}};iframe_include.prototype.iframe_on_load_ie=function(e){if(this.readyState=='complete'){var _document='';if(this._this.iframe_obj.contentWindow){_document=this._this.iframe_obj.contentWindow.document;}else if(this._this.iframe_obj.document){_document=this._this.iframe_obj.document;}else{_document=window.frames[this.id].document;}if(!this.iframe_init){this.iframe_init=1;this.iframe_loaded=1;_document.onmousedown=menu_action_close;}else{this.iframe_loaded=1;_document.onmousedown=menu_action_close;}var style=document.getElementsByTagName('style');var _new_style='';for(i in style){if(style[i].innerHTML){_new_style+="\n"+style[i].innerHTML;}}var _urls=_new_style.match( /@import\s+?url\(\s+?['"](.+?)['"]\s+?\);/ig);if(_urls&&_urls.length){for(i=0;i<=_urls.length;i++){if(typeof(_urls[i])!='undefined'){_urls[i]=_urls[i].replace( /@import\s+?url\(\s+?['"](.+?)['"]\s+?\);/ig,"$1");if(typeof(_urls[i])!='undefined'){_document.createStyleSheet(_urls[i]);}}}}this._this.ajax.hide_loading();try{_document.getElementsByTagName('body')[0].style.padding='0px';_document.getElementsByTagName('body')[0].style.margin='0px';}catch(error){}var _new_height=parseInt(_document.getElementById(this._this.iframe_main_wrapper).offsetHeight);var _new_width=parseInt(_document.getElementById(this._this.iframe_main_wrapper).offsetWidth);if(_new_height>0){this._this.iframe_obj.style.height=_new_height+"px";this._this.iframe_add_to_div_obj.style.height=_new_height+"px";}if(_new_width>0){this._this.iframe_obj.style.width=_new_width+"px";this._this.iframe_add_to_div_obj.style.width=_new_width+"px";}}};function ie_fix_png(){if(is_ie){document.onreadystatechange=ie_fix_png_do;}}function ie_fix_png_do(){if(document.readyState=='complete'){var pos=navigator.userAgent.indexOf("MSIE ");var version=navigator.userAgent.substring(pos+5);var blanky=ipb_skin_url+"/blank.gif";var _sw=screen.width*(parseInt(ipsclass.settings['resize_percent'])/100);if(pos==-1){return false;}if(!((version.indexOf("5.5")==0)||(version.indexOf("6")==0))&&(navigator.platform==("Win32"))){return;}var images=document.getElementsByTagName('IMG');var _len=images.length;if(_len){for(var i=0;i<_len;i++){if(images[i].src.match( /\.png$/)){var element=images[i];var _width=0;var _height=0;var _src=0;element._width=element._width?parseInt(element._width):0;element._resized=parseInt(element._resized);if(!element.style.width){_width=element.width;}if(!element.style.height){_height=element.height;}_src=element.src;if(_width<_sw&&!element._resized&&element._width<_sw){element.src=blanky;if(_width){element.style.width=_width+"px";}if(_height){element.style.height=_height+"px";}element.runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_src+"',sizingMethod='scale')";}else{}}}}}}function add_onload_event(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){if(oldonload){oldonload();};func();};}}function add_shadow(wrapname,divname){var divobj=document.getElementById(divname);var wrapobj=document.getElementById(wrapname);if(is_ie){wrapobj.className='shadow-ie';wrapobj.style.width=divobj.offsetWidth+1+'px';wrapobj.style.height=divobj.offsetHeight+1+'px';}else{wrapobj.className='shadow-moz';wrapobj.style.width=divobj.offsetWidth+0+'px';wrapobj.style.height=divobj.offsetHeight+0+'px';}}function global_dst_check(tzo,dst){var thisoffset=tzo+dst;var dstoffset=new Date().getTimezoneOffset()/60;var dstset=0;var url=ipb_var_base_url+'act=xmlout&do=dst-autocorrection&md5check='+ipb_md5_check;if(Math.abs(thisoffset+dstoffset)==1){try{xml_dst_set(url+'&xml=1');dstset=1;}catch(e){dstset=0;}if(dstset==0){window.location=url;}}}function my_getcookie(name){return ipsclass.my_getcookie(name);}function my_setcookie(name,value,sticky){return ipsclass.my_setcookie(name,value,sticky);}function lang_build_string(){if(!arguments.length||!arguments){return;}var string=arguments[0];for(var i=1;i','gi');string=string.replace(match,arguments[i]);}return string;}function friends_pop(extra_url){ipb_var_base_url=ipb_var_base_url.replace('&','&');if(extra_url){extra_url=extra_url.replace('&','&');}else{extra_url='';}ipsclass.pop_up_window(ipb_var_base_url+'act=profile&CODE=friends_list_popup'+extra_url,450,400,'Friends');}function buddy_pop(){var not_loaded_yet=0;if(use_enhanced_js){try{xml_myassistant_init();not_loaded_yet=1;}catch(e){not_loaded_yet=0;}}if(!not_loaded_yet){ipb_var_base_url=ipb_var_base_url.replace('&','&');window.open(ipb_var_base_url+'act=buddy','BrowserBuddy','width=250,height=500,resizable=yes,scrollbars=yes');}}function do_multi_page_jump(pages_id){var pages=1;var cur_st=ipb_var_st;var cur_page=1;var total_posts=ipb_pages_array[pages_id][2];var per_page=ipb_pages_array[pages_id][1];var url_bit=ipb_pages_array[pages_id][0];var userPage=parseInt(document.getElementById('st-'+pages_id).value);url_bit=url_bit.replace(new RegExp("&","g"),'&');if(total_posts%per_page==0){pages=total_posts/per_page;}else{pages=Math.ceil(total_posts/per_page);}if(cur_st>0){cur_page=cur_st/per_page;cur_page=cur_page-1;}if(userPage>0){if(userPage<1){userPage=1;}if(userPage>pages){userPage=pages;}if(userPage==1){start=0;}else{start=(userPage-1)*per_page;}window.location=url_bit+"&st="+start;return false;}}function pages_st_focus(pages_id){document.getElementById('st-'+pages_id).focus();}function ShowHide(id1,id2){if(id1!='')toggleview(id1);if(id2!='')toggleview(id2);}function my_getbyid(id){itm=null;if(document.getElementById){itm=document.getElementById(id);}else if(document.all){itm=document.all[id];}else if(document.layers){itm=document.layers[id];}return itm;}function toggleview(id){if(!id)return;if(itm=my_getbyid(id)){if(itm.style.display=="none"){my_show_div(itm);}else{my_hide_div(itm);}}}function my_hide_div(itm){if(!itm)return;itm.style.display="none";}function my_show_div(itm){if(!itm)return;itm.style.display="";}function change_cell_color(id,cl){itm=my_getbyid(id);if(itm){itm.className=cl;}}function togglecategory(fid,add){saved=new Array();clean=new Array();if(tmp=ipsclass.my_getcookie('collapseprefs')){saved=tmp.split(",");}for(i=0;i=4)&&(center)){X=(screen.width-width)/2;Y=(screen.height-height)/2;}if(X>0){showx=',left='+X;}if(Y>0){showy=',top='+Y;}if(scroll!=0){scroll=1}var Win=window.open(url,name,'width='+width+',height='+height+showx+showy+',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');}function stacksize(thearray){for(i=0;i");t=t.replace( /%3C%(\d+?)%3E/ig,"<%$1>");return t;}function global_cancel_bubble(obj,extra){if(!obj||is_ie){if(extra){window.event.returnValue=false;}window.event.cancelBubble=true;return window.event;}else{obj.stopPropagation();if(extra){obj.preventDefault();}return obj;}}function _get_obj_leftpos(obj){var left=obj.offsetLeft;while((obj=obj.offsetParent)!=null){left+=obj.offsetLeft;}return left;}function _get_obj_toppos(obj){var top=obj.offsetTop;while((obj=obj.offsetParent)!=null){top+=obj.offsetTop;}return top;}function center_div(){this.divname='';this.divobj='';this.shimobj='';}center_div.prototype.move_div=function(){try{if(parent.document.getElementById(this.divname)){this._document=parent.document;this._window=parent.window;}}catch(e){return;}this.divobj=this._document.getElementById(this.divname);var my_width=0;var my_height=0;if(typeof(this._window.innerWidth)=='number'){my_width=this._window.innerWidth;my_height=this._window.innerHeight;}else if(this._document.documentElement&&(this._document.documentElement.clientWidth||this._document.documentElement.clientHeight)){my_width=this._document.documentElement.clientWidth;my_height=this._document.documentElement.clientHeight;}else if(this._document.body&&(this._document.body.clientWidth||this._document.body.clientHeight)){my_width=this._document.body.clientWidth;my_height=this._document.body.clientHeight;}this.divobj.style.position='absolute';this.divobj.style.display='block';this.divobj.style.zIndex=-1;if(is_ie){var layer_html=this.divobj.innerHTML;var full_html=""+layer_html;this.divobj.innerHTML=full_html;}if(is_ie){this.shimobj=this._document.getElementById(this.divname+"-shim");this.shimobj.style.width=(parseInt(this.divobj.offsetWidth)-5)+"px";this.shimobj.style.height=this.divobj.offsetHeight;this.shimobj.style.zIndex=this.divobj.style.zIndex-1;this.shimobj.style.top=this.divobj.style.top;this.shimobj.style.left=this.divobj.style.left;this.shimobj.style.display="block";}var divheight=parseInt(this.divobj.style.height)?parseInt(this.divobj.style.height):parseInt(this.divobj.offsetHeight);var divwidth=parseInt(this.divobj.style.width)?parseInt(this.divobj.style.width):parseInt(this.divobj.offsetWidth);divheight=divheight?divheight:200;divwidth=divwidth?divwidth:400;var scrolly=this.getYscroll();var setX=(my_width-divwidth)/2;var setY=(my_height-divheight)/2+scrolly;setX=(setX<0)?0:setX;setY=(setY<0)?0:setY;this.divobj.style.left=setX+"px";this.divobj.style.top=setY+"px";this.divobj.style.zIndex=99;};center_div.prototype.hide_div=function(){try{if(!this.divobj){return;}else{this.divobj.style.display='none';}}catch(e){return;}};center_div.prototype.getYscroll=function(){var scrollY=0;if(this._document.documentElement&&this._document.documentElement.scrollTop){scrollY=this._document.documentElement.scrollTop;}else if(this._document.body&&this._document.body.scrollTop){scrollY=this._document.body.scrollTop;}else if(this._window.pageYOffset){scrollY=this._window.pageYOffset;}else if(this._window.scrollY){scrollY=this._window.scrollY;}return scrollY;}; diff --git a/upload/jscripts/ipb_global_xmlenhanced.js b/upload/jscripts/ipb_global_xmlenhanced.js index 81bfc14e..4648586e 100644 --- a/upload/jscripts/ipb_global_xmlenhanced.js +++ b/upload/jscripts/ipb_global_xmlenhanced.js @@ -1,369 +1 @@ -//------------------------------------------------------------------------------ -// IPS XML HTTP REQUEST:: GET NEW POSTS -//------------------------------------------------------------------------------ -// Supports Safari, Mozilla 1.3+ (Firefox, etc) and IE 5.5+ -// (c) 2005 Invision Power Services, Inc. -// http://www.invisionpower.com -//------------------------------------------------------------------------------ - -/*--------------------------------------------*/ -// INIT VARS -/*--------------------------------------------*/ - -var gnp_div = 'get-new-posts_menu'; -var msg_div = 'get-new-msgs_menu'; -var mem_div = 'get-members'; -var divobj; -var divopen = 0; -var xmlobj; - -var myass_main; -var myass_loaded = 0; -var pm_cycle_count = 0; -var search_cache = {}; -var posts_st = 0; - -/*--------------------------------------------*/ -// Get NEXT posts link -/*--------------------------------------------*/ - -function xml_show_new_posts( st ) -{ - posts_st = st; - xml_myassistant_init( 'posts' ); -} - -/*--------------------------------------------*/ -// Load MyASSISTANT! -/*--------------------------------------------*/ - -function xml_myassistant_init( tab ) -{ - myass_main = document.getElementById( 'get-myassistant' ); - myass_drag = document.getElementById( 'myass-drag' ); - myass_content = document.getElementById( 'myass-content' ); - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - //---------------------------------- - // Stop IE showing select boxes over - // floating div [ 1 ] - //---------------------------------- - - if ( is_ie ) - { - html = "" + html; - } - - myass_content.innerHTML = html; - - //---------------------------------- - // Stop IE showing select boxes over - // floating div [ 2 ] - //---------------------------------- - - if ( is_ie ) - { - myass_shim = document.getElementById('myass-shim'); - myass_shim.style.width = myass_content.offsetWidth; - myass_shim.style.height = myass_content.offsetHeight; - myass_shim.style.zIndex = myass_content.style.zIndex - 1; - myass_shim.style.top = myass_content.style.top; - myass_shim.style.left = myass_content.style.left; - myass_shim.style.display = "block"; - } - } - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - - //---------------------------------- - // LOAD XML - //---------------------------------- - - if ( ! tab ) - { - xmlobj.process( ipb_var_base_url + 'act=buddy&xml=1' ); - } - else if ( tab == 'newpms' ) - { - //---------------------------------- - // Figure out where we are.. - //---------------------------------- - - var limit_a = 0; - - pm_cycle_count++; - - if ( pm_cycle_count <= ipb_new_msgs ) - { - limit_a = pm_cycle_count - 1; - } - else - { - pm_cycle_count = 1; - } - - xmlobj.process( ipb_var_base_url + 'act=buddy&xml=1&tab=' + tab + '&limit=' + limit_a ); - - myass_content.style.width = '399px'; - myass_content.style.overflow = 'auto'; - } - else if ( tab == 'posts' ) - { - xmlobj.process( ipb_var_base_url + 'act=buddy&xml=1&tab=' + tab + '&st=' + posts_st ); - } - else - { - xmlobj.process( ipb_var_base_url + 'act=buddy&xml=1&tab=' + tab); - } - - myass_main.style.position = 'absolute'; - myass_main.style.display = 'block'; - myass_main.style.zIndex = 99; - - //---------------------------------- - // Not loaded? INIT - //---------------------------------- - - if ( ! myass_loaded ) - { - //---------------------------------- - // Figure width and height - //---------------------------------- - - var my_width = 0; - var my_height = 0; - - if ( typeof( window.innerWidth ) == 'number' ) - { - //---------------------------------- - // Non IE - //---------------------------------- - - my_width = window.innerWidth; - my_height = window.innerHeight; - } - else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) - { - //---------------------------------- - // IE 6+ - //---------------------------------- - - my_width = document.documentElement.clientWidth; - my_height = document.documentElement.clientHeight; - } - else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) - { - //---------------------------------- - // Old IE - //---------------------------------- - - my_width = document.body.clientWidth; - my_height = document.body.clientHeight; - } - - //---------------------------------- - // Get div height && width - //---------------------------------- - - var divheight = parseInt( myass_main.style.Height ); - var divwidth = parseInt( myass_main.style.Width ); - - divheight = divheight ? divheight : 400; - divwidth = divwidth ? divwidth : 400; - - //---------------------------------- - // Got it stored in a cookie? - //---------------------------------- - - var divxy = my_getcookie( 'ipb-myass-div' ); - var co_ords; - - if ( divxy && divxy != null ) - { - co_ords = divxy.split( ',' ); - - //---------------------------------- - // Got co-ords? - //---------------------------------- - - if ( co_ords.length ) - { - var final_width = co_ords[0]; - var final_height = co_ords[1]; - - if ( co_ords[0] > my_width ) - { - //---------------------------------- - // Keep it on screen - //---------------------------------- - - final_width = my_width - divwidth; - } - - if ( co_ords[1] > my_height ) - { - //---------------------------------- - // Keep it on screen - //---------------------------------- - - final_height = my_height - divheight; - } - - myass_main.style.left = final_width + 'px'; - myass_main.style.top = final_height + 'px'; - } - } - else - { - //---------------------------------- - // Reposition DIV roughly centered - //---------------------------------- - - myass_main.style.left = my_width / 2 - (divwidth / 2) + 'px'; - myass_main.style.top = my_height / 2 - (divheight / 2 ) + 'px'; - } - - Drag.cookiename = 'ipb-myass-div'; - Drag.init( myass_drag, myass_main ); - - myass_loaded = 1; - } -} - -/*--------------------------------------------*/ -// Alter DST Retrieve XML document -/*--------------------------------------------*/ - -function xml_myassistant_search( url ) -{ - var keywords = document.getElementById('myass-search-input').value; - var msg_field = document.getElementById('myass-search-message'); - var url = ipb_var_base_url+'act=Search&CODE=01&forums=all&cat_forum=forum&joinname=1&search_in=posts&result_type=topics&xml=1&keywords='+escape(keywords); - - if ( keywords.length < 4 ) - { - msg_field.innerHTML = ipb_myass_chars_lang; - return false; - } - - //---------------------------------- - // Already cached? - //---------------------------------- - - if ( search_cache[ keywords ] ) - { - msg_field.innerHTML = search_cache[ keywords ]; - return; - } - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - xmlobj.show_loading(); - return; - } - - xmlobj.hide_loading(); - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - msg_field.innerHTML = html; - search_cache[ keywords ] = html; - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - - xmlobj.process( url ); -} - -/*--------------------------------------------*/ -// Alter DST Retrieve XML document -/*--------------------------------------------*/ - -function xml_dst_set( url ) -{ - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html == 'error' ) - { - window.location = url.replace( '&xml=1', '&xml=0'); - } - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - - xmlobj.process( url ); -} - - - - - +var gnp_div='get-new-posts_menu';var msg_div='get-new-msgs_menu';var mem_div='get-members';var divobj;var divopen=0;var xmlobj;var reg_img='';var myass_main;var myass_loaded=0;var pm_cycle_count=0;var search_cache={};var posts_st=0;function xml_show_new_posts(st){posts_st=st;xml_myassistant_init('posts');}function xml_myassistant_init(tab){myass_main=document.getElementById('get-myassistant');myass_drag=document.getElementById('myass-drag');myass_content=document.getElementById('myass-content');do_request_function=function(){if(!xmlobj_myass.readystate_ready_and_ok()){return;}var html=xmlobj_myass.xmlhandler.responseText;if(is_ie){html=""+html;}myass_content.innerHTML=html;if(is_ie){drag_html=myass_drag.innerHTML;main_drag_html=""+drag_html;myass_drag.innerHTML=main_drag_html;}if(is_ie){myass_shim=document.getElementById('myass-shim');myass_shim.style.width=myass_content.offsetWidth;myass_shim.style.height=myass_content.offsetHeight;myass_shim.style.zIndex=myass_content.style.zIndex-1;myass_shim.style.top=myass_content.style.top;myass_shim.style.left=myass_content.style.left;myass_shim.style.display="block";myass_shim_d=document.getElementById('myass-shim-two');myass_shim_d.style.width=myass_drag.offsetWidth;myass_shim_d.style.height=myass_drag.offsetHeight;myass_shim_d.style.zIndex=myass_drag.style.zIndex-1;myass_shim_d.style.top=myass_drag.style.top;myass_shim_d.style.left=myass_drag.style.left;myass_shim_d.style.display="block";}};xmlobj_myass=new ajax_request();xmlobj_myass.onreadystatechange(do_request_function);if(!tab){xmlobj_myass.process(ipb_var_base_url+'act=buddy&xml=1');}else if(tab=='newpms'){var limit_a=0;pm_cycle_count++;if(pm_cycle_count<=ipb_new_msgs){limit_a=pm_cycle_count-1;}else{pm_cycle_count=1;}xmlobj_myass.process(ipb_var_base_url+'act=buddy&xml=1&tab='+tab+'&limit='+limit_a);myass_content.style.width='398px';myass_content.style.overflow='auto';myass_content.style.overflowX='hidden';}else if(tab=='posts'){xmlobj_myass.process(ipb_var_base_url+'act=buddy&xml=1&tab='+tab+'&st='+posts_st);}else{xmlobj_myass.process(ipb_var_base_url+'act=buddy&xml=1&tab='+tab);}myass_main.style.position='absolute';myass_main.style.display='block';myass_main.style.zIndex=99;if(!myass_loaded){var my_width=0;var my_height=0;if(typeof(window.innerWidth)=='number'){my_width=window.innerWidth;my_height=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){my_width=document.documentElement.clientWidth;my_height=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){my_width=document.body.clientWidth;my_height=document.body.clientHeight;}var divheight=parseInt(myass_main.style.Height);var divwidth=parseInt(myass_main.style.Width);divheight=divheight?divheight:400;divwidth=divwidth?divwidth:400;var divxy=my_getcookie('ipb-myass-div');var co_ords;if(divxy&&divxy!=null){co_ords=divxy.split(',');if(co_ords.length){var final_width=co_ords[0];var final_height=co_ords[1];if(co_ords[0]>my_width){final_width=my_width-divwidth;}if(co_ords[1]>my_height){final_height=my_height-divheight;}myass_main.style.left=final_width+'px';myass_main.style.top=final_height+'px';}}else{myass_main.style.left=my_width/2-(divwidth/2)+'px';myass_main.style.top=my_height/2-(divheight/2)+'px';}Drag.cookiename='ipb-myass-div';Drag.init(myass_drag,myass_main);myass_loaded=1;}};function xml_myassistant_search(url){var keywords=document.getElementById('myass-search-input').value;var msg_field=document.getElementById('myass-search-message');var url=ipb_var_base_url+'act=Search&CODE=01&forums=all&cat_forum=forum&joinname=1&search_in=posts&result_type=topics&xml=1&keywords='+escape(keywords);if(keywords.length<4){msg_field.innerHTML=ipb_myass_chars_lang;return false;}if(search_cache[keywords]){msg_field.innerHTML=search_cache[keywords];return;}do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading();return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;msg_field.innerHTML=html;search_cache[keywords]=html;};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);};function xml_dst_set(url){do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;}var html=xmlobj.xmlhandler.responseText;if(html=='error'){window.location=url.replace('&xml=1','&xml=0');}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);};function init_gd_image(){reg_img=document.getElementById('gd-antispam');try{reg_img.style.cursor='pointer';}catch(e){reg_img.style.cursor='hand';};reg_img.onclick=do_change_img;};function do_change_img(){var rc='';var act='Reg';var code='image';var qparts=reg_img.src.split("?");if(qparts.length>1){var qvars=qparts[1].split("&");for(var i=0;(i maxid ) - { - maxid = parseInt(i); - } - } - - maxid = maxid + 1; - - poll_write_form_to_array(); - - poll_questions[ maxid ] = ''; - - poll_draw_main_box(); - - return false; -} - - -/*--------------------------------------------*/ -// ADD POLL CHOICE -/*--------------------------------------------*/ - -function poll_add_choice( qid ) -{ - var maxid = 0; - - //------------------------------- - // Get max choice ID - //------------------------------- - - for ( var c in poll_choices ) - { - //------------------------------- - // Is this a choice for this q? - //------------------------------- - - var id = c.replace( new RegExp( "^" + qid + "_(\\d+)$" ), "$1" ); - - if ( ! isNaN( id ) ) - { - if ( id > maxid ) - { - maxid = parseInt(id); - } - } - } - - maxid = maxid + 1; - - poll_write_form_to_array(); - - poll_choices[ qid +'_'+maxid ] = ''; - - if ( is_mod ) - { - poll_votes[ qid +'_'+maxid ] = 0; - } - - poll_draw_main_box(); - - return false; -} - -/*--------------------------------------------*/ -// REMOVE POLL CHOICE -/*--------------------------------------------*/ - -function poll_remove_choice( mainid ) -{ - if ( confirm( js_lang_confirm ) ) - { - delete( poll_choices[ mainid ] ); - - if ( is_mod ) - { - delete( poll_votes[ mainid ] ); - } - - poll_write_form_to_array(); - poll_draw_main_box(); - } - - return false; -} - -/*--------------------------------------------*/ -// REMOVE POLL QUESTION -/*--------------------------------------------*/ - -function poll_remove_question( mainid ) -{ - if ( confirm( js_lang_confirm ) ) - { - //------------------------------- - // Delete question - //------------------------------- - - delete( poll_questions[ mainid ] ); - - //------------------------------- - // Delete choices - //------------------------------- - - for ( var c in poll_choices ) - { - //------------------------------- - // Is this a choice for this q? - //------------------------------- - - var id = c.replace( new RegExp( "^" + mainid + "_(\\d+)$" ), "$1" ); - - if ( ! isNaN( id ) ) - { - delete( poll_choices[ c ] ); - - if ( is_mod ) - { - delete( poll_votes[ c ] ); - } - } - } - - poll_write_form_to_array(); - poll_draw_main_box(); - } - - return false; -} - -/*--------------------------------------------*/ -// UPDATE POLL STATE -/*--------------------------------------------*/ - -function poll_update_state() -{ - used = max_poll_questions - used_questions; - - var tmp_lang = lang_build_string( poll_stat_lang, used, max_poll_choices ); - statobj.innerHTML = lang_build_string( html_stat_wrap, tmp_lang ); -} - -/*--------------------------------------------*/ -// SHOW POLL FORM -/*--------------------------------------------*/ - -function show_poll_form() -{ - my_show_div( openobj ); - my_hide_div( closedobj ); -} - -/*--------------------------------------------*/ -// CLOSE POLL FORM -/*--------------------------------------------*/ - -function close_poll_form() -{ - my_show_div( closedobj ); - my_hide_div( openobj ); -} - -/*--------------------------------------------*/ -// FORM MAKE SAFE -/*--------------------------------------------*/ - -function _poll_make_form_safe( t ) -{ - t = t.replace( /'/g, ''' ); - t = t.replace( /"/g, '"' ); - - return t; -} - - - - - - - +var open_div='poll-box-open';var closed_div='poll-box-closed';var stat_div='poll-box-stat';var main_div='poll-box-main';var form_id='postingform';var openobj;var closedobj;var formobj;var statobj;var mainobj;var used_questions=0;function poll_init_state(){openobj=document.getElementById(open_div);closedobj=document.getElementById(closed_div);formobj=document.getElementById(form_id);statobj=document.getElementById(stat_div);mainobj=document.getElementById(main_div);if(showfullonload){my_show_div(openobj);my_hide_div(closedobj);}else{my_show_div(closedobj);my_hide_div(openobj);}poll_draw_main_box();}function poll_draw_main_box(){var html='';used_questions=0;for(var i in poll_questions){var qhtml='';used_questions++;var question=poll_questions[i];var this_poll_multi='';for(var x in poll_multi){if(x==i){if(poll_multi[x]==1){this_poll_multi="checked='checked'";}}}var inputhtml=lang_build_string(html_question_box,i,_poll_make_form_safe(question),this_poll_multi);qhtml+="\n"+inputhtml+"\n";var choices='';var choices_count=0;for(var c in poll_choices){var votes_box;var id=c.replace(new RegExp("^"+i+"_(\\d+)$"),"$1");if(!isNaN(id)){if(is_mod){votes_box=lang_build_string(html_votes_box,i,id,poll_votes[c]);}else{votes_box='';}choices_count++;choices+="\n"+lang_build_string(html_choice_box,i,id,_poll_make_form_safe(poll_choices[c]),votes_box);}}if(choices_countmaxid){maxid=parseInt(i);}}maxid=maxid+1;poll_write_form_to_array();poll_questions[maxid]='';poll_multi[maxid]='';poll_draw_main_box();return false;}function poll_add_choice(qid){var maxid=0;for(var c in poll_choices){var id=c.replace(new RegExp("^"+qid+"_(\\d+)$"),"$1");if(!isNaN(id)){if(id>maxid){maxid=parseInt(id);}}}maxid=maxid+1;poll_write_form_to_array();poll_choices[qid+'_'+maxid]='';if(is_mod){poll_votes[qid+'_'+maxid]=0;}poll_draw_main_box();return false;}function poll_remove_choice(mainid){if(confirm(js_lang_confirm)){delete(poll_choices[mainid]);if(is_mod){delete(poll_votes[mainid]);}poll_write_form_to_array();poll_draw_main_box();}return false;}function poll_remove_question(mainid){if(confirm(js_lang_confirm)){delete(poll_questions[mainid]);for(var c in poll_choices){var id=c.replace(new RegExp("^"+mainid+"_(\\d+)$"),"$1");if(!isNaN(id)){delete(poll_choices[c]);if(is_mod){delete(poll_votes[c]);}}}poll_write_form_to_array();poll_draw_main_box();}return false;}function poll_update_state(){used=max_poll_questions-used_questions;var tmp_lang=lang_build_string(poll_stat_lang,used,max_poll_choices);statobj.innerHTML=lang_build_string(html_stat_wrap,tmp_lang);}function show_poll_form(){my_show_div(openobj);my_hide_div(closedobj);}function close_poll_form(){my_show_div(closedobj);my_hide_div(openobj);}function _poll_make_form_safe(t){t=t.replace( /'/g,''');t=t.replace( /"/g,'"');return t;} diff --git a/upload/jscripts/ipb_profile.js b/upload/jscripts/ipb_profile.js index fda72a45..cd9069aa 100644 --- a/upload/jscripts/ipb_profile.js +++ b/upload/jscripts/ipb_profile.js @@ -1,36 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Profile JS File -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - - - -/*--------------------------------------------*/ -// Profile: Open pop-up window -/*--------------------------------------------*/ - -function profile_dname_history( mid ) -{ - //---------------------------------- - // Attempt to close the menu - //---------------------------------- - - try - { - menu_action_close(); - } - catch(e) - { - } - - //---------------------------------- - // Launch Pop Up - //---------------------------------- - - PopUp( ipb_var_base_url + 'act=profile&CODE=show-display-names&id=' + mid, 'DNAMETITLE', 400, 300 ); - - return false; -} \ No newline at end of file +function profile_dname_history(mid){try{menu_action_close();}catch(e){}PopUp(ipb_var_base_url+'act=profile&CODE=show-display-names&id='+mid,'DNAMETITLE',400,300);return false;} diff --git a/upload/jscripts/ipb_register.js b/upload/jscripts/ipb_register.js index d292ca40..42882248 100644 --- a/upload/jscripts/ipb_register.js +++ b/upload/jscripts/ipb_register.js @@ -1,863 +1,909 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Register JS File -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - -var reg_got_dname = 0; -var reg_oktogo = 0; -var reg_field_ids = new Array(); -var reg_img_ids = new Array(); -var reg_box_ids = new Array(); -var reg_msg_ids = new Array(); - -var ucp_dname_illegal_chars = new Array( '[', ']', '|', ',', ';' ); -var ucp_dname_illegal_regex = ''; - -for ( var i in ucp_dname_illegal_chars ) -{ - ucp_dname_illegal_regex += '\\' + ucp_dname_illegal_chars[i]; -} - -var error_email = 0; - -var in_member_id = 0; - -/*-------------------------------------------------------------------------*/ -// INIT Reg form -/*-------------------------------------------------------------------------*/ - -function init_reg_form( got_dname, register_method ) -{ - //------------------------------------------ - // INIT objects - //------------------------------------------ - - reg_got_dname = got_dname; - - //------------------------------------------ - // Fields... - //------------------------------------------ - - if( register_method == 'username' ) - { - reg_field_ids['name'] = document.getElementById( 'reg-name' ); - } - - reg_field_ids['password'] = document.getElementById( 'reg-password' ); - reg_field_ids['password-check'] = document.getElementById( 'reg-password-check' ); - reg_field_ids['emailaddress'] = document.getElementById( 'reg-emailaddress' ); - reg_field_ids['emailaddress-two'] = document.getElementById( 'reg-emailaddress-two' ); - - //------------------------------------------ - // Images - //------------------------------------------ - - if( register_method == 'username' ) - { - reg_img_ids['name'] = document.getElementById( 'img-name' ); - } - - reg_img_ids['password'] = document.getElementById( 'img-password' ); - reg_img_ids['emailaddress'] = document.getElementById( 'img-emailaddress' ); - - //------------------------------------------ - // Boxes - //------------------------------------------ - - if( register_method == 'username' ) - { - reg_box_ids['name'] = document.getElementById( 'box-name' ); - } - - reg_box_ids['password'] = document.getElementById( 'box-password' ); - reg_box_ids['emailaddress'] = document.getElementById( 'box-emailaddress' ); - - //------------------------------------------ - // Messages - //------------------------------------------ - - if( register_method == 'username' ) - { - reg_msg_ids['name'] = document.getElementById( 'msg-name' ); - } - - reg_msg_ids['password'] = document.getElementById( 'msg-password' ); - reg_msg_ids['emailaddress'] = document.getElementById( 'msg-emailaddress' ); - - //------------------------------------------ - // Set up onblur - //------------------------------------------ - - if( register_method == 'username' ) - { - reg_field_ids['name'].onblur = check_user_name; - } - - reg_field_ids['password-check'].onblur = check_passwords; - reg_field_ids['emailaddress'].onblur = check_email_addresses_one; - reg_field_ids['emailaddress-two'].onblur = check_email_addresses; - - //------------------------------------------ - // Already got error messages? - //------------------------------------------ - - if( register_method == 'username' ) - { - if ( ! reg_msg_ids['name'].innerHTML ) - { - reg_box_ids['name'].style.display = 'none'; - } - } - - if ( ! reg_msg_ids['password'].innerHTML ) - { - reg_box_ids['password'].style.display = 'none'; - } - - if ( ! reg_msg_ids['emailaddress'].innerHTML ) - { - reg_box_ids['emailaddress'].style.display = 'none'; - } - - //------------------------------------------ - // Display name... - //------------------------------------------ - - if ( reg_got_dname ) - { - reg_field_ids['dname'] = document.getElementById( 'reg-members-display-name' ); - reg_box_ids['dname'] = document.getElementById( 'box-dname' ); - reg_msg_ids['dname'] = document.getElementById( 'msg-dname' ); - reg_img_ids['dname'] = document.getElementById( 'img-members-display-name' ); - - if ( ! reg_msg_ids['dname'].innerHTML ) - { - reg_box_ids['dname'].style.display = 'none'; - } - - reg_field_ids['dname'].onblur = check_display_name; - } -} - -/*-------------------------------------------------------------------------*/ -// INIT Reg form -/*-------------------------------------------------------------------------*/ - -function init_complete_login_form() -{ - //------------------------------------------ - // INIT objects - //------------------------------------------ - - reg_got_dname = got_dname; - - //------------------------------------------ - // Fields... - //------------------------------------------ - - reg_field_ids['emailaddress'] = document.getElementById( 'reg-emailaddress' ); - reg_field_ids['emailaddress-two'] = document.getElementById( 'reg-emailaddress-two' ); - - //------------------------------------------ - // Images - //------------------------------------------ - - reg_img_ids['emailaddress'] = document.getElementById( 'img-emailaddress' ); - - //------------------------------------------ - // Boxes - //------------------------------------------ - - reg_box_ids['emailaddress'] = document.getElementById( 'box-emailaddress' ); - - //------------------------------------------ - // Messages - //------------------------------------------ - - reg_msg_ids['emailaddress'] = document.getElementById( 'msg-emailaddress' ); - - //------------------------------------------ - // Set up onblur - //------------------------------------------ - - reg_field_ids['emailaddress'].onblur = check_email_addresses_one; - reg_field_ids['emailaddress-two'].onblur = check_email_addresses; - - //------------------------------------------ - // Already got error messages? - //------------------------------------------ - - if ( ! reg_msg_ids['emailaddress'].innerHTML ) - { - reg_box_ids['emailaddress'].style.display = 'none'; - } - - //------------------------------------------ - // Display name... - //------------------------------------------ - - if ( reg_got_dname ) - { - reg_field_ids['dname'] = document.getElementById( 'reg-members-display-name' ); - reg_box_ids['dname'] = document.getElementById( 'box-dname' ); - reg_msg_ids['dname'] = document.getElementById( 'msg-dname' ); - reg_img_ids['dname'] = document.getElementById( 'img-members-display-name' ); - - if ( ! reg_msg_ids['dname'].innerHTML ) - { - reg_box_ids['dname'].style.display = 'none'; - } - - reg_field_ids['dname'].onblur = check_display_name; - } - - in_member_id = member_id; -} - -/*-------------------------------------------------------------------------*/ -// Check email address validity -/*-------------------------------------------------------------------------*/ - -function check_email_addresses_one( event ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - var error_found = ''; - - //---------------------------------- - // Ajax: check for existing email address - //---------------------------------- - - if ( use_enhanced_js && reg_field_ids['emailaddress'].value ) - { - var url = ipb_var_base_url+'act=xmlout&do=check-email-address&email='+escape( reg_field_ids['emailaddress'].value ); - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html == 'found' ) - { - error_found += reg_error_email_taken + "
    "; - } - if ( html == 'banned' ) - { - error_found += reg_error_email_ban + "
    "; - } - - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - reg_field_ids['emailaddress'].className = input_red; - reg_img_ids['emailaddress'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['emailaddress'].innerHTML = error_found; - reg_box_ids['emailaddress'].style.display = 'block'; - error_email = 1; - } - else - { - error_email = 0; - } - - error_found = ''; - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - xmlobj.process( url ); - } -} - -/*-------------------------------------------------------------------------*/ -// Check email addresses -/*-------------------------------------------------------------------------*/ - -function check_email_addresses( event ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - var error_found = ''; - - //---------------------------------- - // Check - //---------------------------------- - - if ( ! reg_field_ids['emailaddress'].value.match( /[@\.]/ ) ) - { - error_found += reg_error_email_missing + "
    "; - } - - if ( ! reg_field_ids['emailaddress'].value || ! reg_field_ids['emailaddress-two'].value ) - { - error_found += reg_error_email_missing + "
    "; - } - - if ( reg_field_ids['emailaddress'].value != reg_field_ids['emailaddress-two'].value ) - { - error_found += reg_error_email_nm + "
    "; - } - - if ( error_found ) - { - reg_field_ids['emailaddress'].className = input_red; - reg_field_ids['emailaddress-two'].className = input_red; - reg_img_ids['emailaddress'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['emailaddress'].innerHTML = error_found; - reg_box_ids['emailaddress'].style.display = 'block'; - error_email = 1; - } - else - { - error_email = 0; - } - - //---------------------------------- - // No error.... - //---------------------------------- - - if ( error_email == 0 ) - { - check_email_addresses_one(); - } - - //---------------------------------- - // Still no errors... - //---------------------------------- - - if ( error_email == 0 ) - { - reg_field_ids['emailaddress'].className = input_green; - reg_field_ids['emailaddress-two'].className = input_green; - reg_img_ids['emailaddress'].src = ipb_var_image_url + '/' + img_tick; - reg_box_ids['emailaddress'].style.display = 'none'; - reg_msg_ids['emailaddress'].innerHTML = ''; - } - - if( reg_field_ids['emailaddress'].className == input_red ) - { - reg_field_ids['emailaddress-two'].className = input_red; - } -} - - -/*-------------------------------------------------------------------------*/ -// Check passwords match -/*-------------------------------------------------------------------------*/ - -function check_passwords( event ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - var error_found = ''; - - //---------------------------------- - // Check - //---------------------------------- - - if ( ! reg_field_ids['password'].value || ! reg_field_ids['password-check'].value ) - { - error_found += reg_error_no_pass + "
    "; - } - - if ( reg_field_ids['password'].value != reg_field_ids['password-check'].value ) - { - error_found += reg_error_pass_nm + "
    "; - } - - if ( error_found ) - { - reg_field_ids['password'].className = input_red; - reg_field_ids['password-check'].className = input_red; - reg_img_ids['password'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['password'].innerHTML = error_found; - reg_box_ids['password'].style.display = 'block'; - } - else - { - reg_field_ids['password'].className = input_green; - reg_field_ids['password-check'].className = input_green; - reg_img_ids['password'].src = ipb_var_image_url + '/' + img_tick; - reg_box_ids['password'].style.display = 'none'; - reg_msg_ids['password'].innerHTML = ''; - } -} - -/*-------------------------------------------------------------------------*/ -// Check display name -/*-------------------------------------------------------------------------*/ - -function check_display_name( event ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - var error_found = ''; - - //---------------------------------- - // Make sure we have sommat - //---------------------------------- - - if ( ! reg_field_ids['dname'].value || reg_field_ids['dname'].value.length < 3 || reg_field_ids['dname'].value.length > 32 ) - { - error_found += reg_error_no_name + "
    "; - } - - //---------------------------------- - // Check for illegal chars - //---------------------------------- - - if ( reg_field_ids['dname'].value.match( new RegExp( "[" + ucp_dname_illegal_regex + "]" ) ) ) - { - error_found += reg_error_chars + "
    "; - } - - //---------------------------------- - // Ajax: check for existing member name - //---------------------------------- - - if ( use_enhanced_js && reg_field_ids['dname'].value ) - { - var url = ipb_var_base_url+'act=xmlout&do=check-display-name&name='+escape( reg_field_ids['dname'].value ); - - // Complete reg form? - - if ( in_member_id ) - { - url += '&id=' + in_member_id; - } - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html == 'found' ) - { - error_found += reg_error_taken + "
    "; - } - - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - reg_field_ids['dname'].className = input_red; - reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['dname'].innerHTML = error_found; - reg_box_ids['dname'].style.display = 'block'; - } - else - { - reg_field_ids['dname'].className = input_green; - reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_tick; - reg_box_ids['dname'].style.display = 'none'; - reg_msg_ids['dname'].innerHTML = ''; - } - - error_found = ''; - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - xmlobj.process( url ); - } - else - { - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - reg_field_ids['dname'].className = input_red; - reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['dname'].innerHTML = error_found; - reg_box_ids['dname'].style.display = 'block'; - } - else - { - reg_field_ids['dname'].className = input_green; - reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_tick; - reg_box_ids['dname'].style.display = 'none'; - reg_msg_ids['dname'].innerHTML = ''; - } - - error_found = ''; - } -} - - - -/*-------------------------------------------------------------------------*/ -// Check username -/*-------------------------------------------------------------------------*/ - -function check_user_name( event ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - var error_found = ''; - - //---------------------------------- - // Make sure we have sommat - //---------------------------------- - - if ( ! reg_field_ids['name'].value || reg_field_ids['name'].value.length < 3 || reg_field_ids['name'].value.length > 32 ) - { - error_found += reg_error_username_none + "
    "; - } - - //---------------------------------- - // Ajax: check for existing member name - //---------------------------------- - - if ( use_enhanced_js && reg_field_ids['name'].value ) - { - //---------------------------------- - // Get new xhttp obj - //---------------------------------- - - var url = ipb_var_base_url+'act=xmlout&do=check-user-name&name='+escape( reg_field_ids['name'].value ); - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html == 'found' ) - { - error_found += reg_error_username_taken + "
    "; - } - - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - reg_field_ids['name'].className = input_red; - reg_img_ids['name'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['name'].innerHTML = error_found; - reg_box_ids['name'].style.display = 'block'; - } - else - { - reg_field_ids['name'].className = input_green; - reg_img_ids['name'].src = ipb_var_image_url + '/' + img_tick; - reg_box_ids['name'].style.display = 'none'; - reg_msg_ids['name'].innerHTML = ''; - } - - error_found = ''; - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - xmlobj.process( url ); - } - else - { - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - reg_field_ids['name'].className = input_red; - reg_img_ids['name'].src = ipb_var_image_url + '/' + img_cross; - reg_msg_ids['name'].innerHTML = error_found; - reg_box_ids['name'].style.display = 'block'; - } - else - { - reg_field_ids['name'].className = input_green; - reg_img_ids['name'].src = ipb_var_image_url + '/' + img_tick; - reg_box_ids['name'].style.display = 'none'; - reg_msg_ids['name'].innerHTML = ''; - } - - error_found = ''; - } -} - -/*-------------------------------------------------------------------------*/ -// Validate the complete log in form -/*-------------------------------------------------------------------------*/ - -function validate_complete_login_form( event ) -{ - //------------------------------------------ - // Simply run the functions - //------------------------------------------ - - reg_oktogo = 1; - - check_email_addresses( event ); - - //------------------------------------------ - // Got error messages - //------------------------------------------ - - if ( reg_msg_ids['emailaddress'].innerHTML ) - { - reg_oktogo = 0; - } - - //------------------------------------------ - // Display name... - //------------------------------------------ - - if ( reg_got_dname ) - { - check_display_name( event ); - - if ( reg_msg_ids['dname'].innerHTML ) - { - reg_oktogo = 0; - } - } - - //------------------------------------------ - // Return - //------------------------------------------ - - return reg_oktogo ? true : false; -} - -/*-------------------------------------------------------------------------*/ -// Validate the registration form -/*-------------------------------------------------------------------------*/ - -function validate_reg_form( event ) -{ - //------------------------------------------ - // Simply run the functions - //------------------------------------------ - - reg_oktogo = 1; - - check_email_addresses( event ); - check_passwords( event ); - check_user_name( event ); - - //------------------------------------------ - // Got error messages - //------------------------------------------ - - if ( reg_msg_ids['name'].innerHTML ) - { - reg_oktogo = 0; - } - - if ( reg_msg_ids['password'].innerHTML ) - { - reg_oktogo = 0; - } - - if ( reg_msg_ids['emailaddress'].innerHTML ) - { - reg_oktogo = 0; - } - - //------------------------------------------ - // Display name... - //------------------------------------------ - - if ( reg_got_dname ) - { - check_display_name( event ); - - if ( reg_msg_ids['dname'].innerHTML ) - { - reg_oktogo = 0; - } - } - - //------------------------------------------ - // Return - //------------------------------------------ - - return reg_oktogo ? true : false; -} - -/*-------------------------------------------------------------------------*/ -// They are a COPPA :D -/*-------------------------------------------------------------------------*/ - -function coppa_save() -{ - //------------------------------------------ - // Set cookie - //------------------------------------------ - - my_setcookie( 'coppa', 'yes', 1 ); -} - -/*-------------------------------------------------------------------------*/ -// Run from the COPPA -/*-------------------------------------------------------------------------*/ - -function coppa_cancel() -{ - //------------------------------------------ - // Set cookie - //------------------------------------------ - - my_setcookie( 'coppa', '0', 1 ); - locationjump( '' ); -} - -/*-------------------------------------------------------------------------*/ -// Run from the COPPA -/*-------------------------------------------------------------------------*/ - -function coppa_check() -{ - //------------------------------------------ - // Set cookie - //------------------------------------------ - - var coppa_check = my_getcookie( 'coppa' ); - - if ( coppa_check == 'yes' ) - { - alert( coppa_bounce ); - - locationjump( 'act=reg&CODE=coppa_two' ); - } -} - -/*-------------------------------------------------------------------------*/ -// Show a more info button? -/*-------------------------------------------------------------------------*/ - - -function reg_get_more_check() -{ - var dropdown = document.getElementById( 'subspackage' ); - var chosenid = dropdown.options[dropdown.selectedIndex].value; - - if ( ! chosenid ) - { - chosenid = 0; - } - - if ( subdesc[chosenid] ) - { - document.getElementById( 'reg-get-more-info' ).style.display = ''; - } - else - { - document.getElementById( 'reg-get-more-info' ).style.display = 'none'; - } -} - - -/*-------------------------------------------------------------------------*/ -// Show subs more info form -/*-------------------------------------------------------------------------*/ - -function get_more_info() -{ - var dropdown = document.getElementById( 'subspackage' ); - var chosenid = dropdown.options[dropdown.selectedIndex].value; - - if ( ! chosenid ) - { - chosenid = 0; - } - - //------------------------------------------ - // Toggle view... - //------------------------------------------ - - if ( subdesc[chosenid] ) - { - document.getElementById('pkdesc').innerHTML = subdesc[chosenid]; - - toggleview('subspkdiv'); - } -} \ No newline at end of file +//------------------------------------------ +// Invision Power Board v2.1 +// Register JS File +// (c) 2005 Invision Power Services, Inc. +// +// http://www.invisionboard.com +//------------------------------------------ + +var user_display_name_max_length = 26; +var reg_got_dname = 0; +var reg_oktogo = 0; +var reg_field_ids = new Array(); +var reg_img_ids = new Array(); +var reg_box_ids = new Array(); +var reg_msg_ids = new Array(); + +var ucp_dname_illegal_chars = new Array( '[', ']', '|', ',', ';', '$' ); +var ucp_dname_illegal_regex = ''; + +for ( var i in ucp_dname_illegal_chars ) +{ + ucp_dname_illegal_regex += '\\' + ucp_dname_illegal_chars[i]; +} + +var error_email = 0; + +var in_member_id = 0; + +RegExp.escape = function(text) +{ + if (!arguments.callee.sRE) + { + var specials = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$' ]; + + arguments.callee.sRE = new RegExp( '(\\' + specials.join('|\\') + ')', 'g' ); + } + + return text.replace(arguments.callee.sRE, '\\$1'); +}; + +/*-------------------------------------------------------------------------*/ +// INIT Reg form +/*-------------------------------------------------------------------------*/ + +function init_reg_form( got_dname, register_method ) +{ + //------------------------------------------ + // INIT objects + //------------------------------------------ + + reg_got_dname = got_dname; + + //------------------------------------------ + // Fields... + //------------------------------------------ + + if( register_method == 'username' ) + { + reg_field_ids['name'] = document.getElementById( 'reg-name' ); + } + + reg_field_ids['password'] = document.getElementById( 'reg-password' ); + reg_field_ids['password-check'] = document.getElementById( 'reg-password-check' ); + reg_field_ids['emailaddress'] = document.getElementById( 'reg-emailaddress' ); + reg_field_ids['emailaddress-two'] = document.getElementById( 'reg-emailaddress-two' ); + + //------------------------------------------ + // Images + //------------------------------------------ + + if( register_method == 'username' ) + { + reg_img_ids['name'] = document.getElementById( 'img-name' ); + } + + reg_img_ids['password'] = document.getElementById( 'img-password' ); + reg_img_ids['emailaddress'] = document.getElementById( 'img-emailaddress' ); + + //------------------------------------------ + // Boxes + //------------------------------------------ + + if( register_method == 'username' ) + { + reg_box_ids['name'] = document.getElementById( 'box-name' ); + } + + reg_box_ids['password'] = document.getElementById( 'box-password' ); + reg_box_ids['emailaddress'] = document.getElementById( 'box-emailaddress' ); + + //------------------------------------------ + // Messages + //------------------------------------------ + + if ( register_method == 'username' ) + { + reg_msg_ids['name'] = document.getElementById( 'msg-name' ); + } + + reg_msg_ids['password'] = document.getElementById( 'msg-password' ); + reg_msg_ids['emailaddress'] = document.getElementById( 'msg-emailaddress' ); + + //------------------------------------------ + // Set up onblur + //------------------------------------------ + + if( register_method == 'username' ) + { + reg_field_ids['name'].onblur = check_user_name; + } + + reg_field_ids['password-check'].onblur = check_passwords; + reg_field_ids['emailaddress'].onblur = check_email_addresses_one; + reg_field_ids['emailaddress-two'].onblur = check_email_addresses; + + //------------------------------------------ + // Already got error messages? + //------------------------------------------ + + if ( register_method == 'username' ) + { + if ( ! reg_msg_ids['name'].innerHTML ) + { + reg_box_ids['name'].style.display = 'none'; + } + } + + if ( ! reg_msg_ids['password'].innerHTML ) + { + reg_box_ids['password'].style.display = 'none'; + } + + if ( ! reg_msg_ids['emailaddress'].innerHTML ) + { + reg_box_ids['emailaddress'].style.display = 'none'; + } + + //------------------------------------------ + // Display name. .. + //------------------------------------------ + + if ( reg_got_dname ) + { + reg_field_ids['dname'] = document.getElementById( 'reg-members-display-name' ); + reg_box_ids['dname'] = document.getElementById( 'box-dname' ); + reg_msg_ids['dname'] = document.getElementById( 'msg-dname' ); + reg_img_ids['dname'] = document.getElementById( 'img-members-display-name' ); + + if ( ! reg_msg_ids['dname'].innerHTML ) + { + reg_box_ids['dname'].style.display = 'none'; + } + + reg_field_ids['dname'].onblur = check_display_name; + } +}; + +/*-------------------------------------------------------------------------*/ +// INIT Reg form +/*-------------------------------------------------------------------------*/ + +function init_complete_login_form() +{ + //------------------------------------------ + // INIT objects + //------------------------------------------ + + reg_got_dname = got_dname; + + //------------------------------------------ + // Fields... + //------------------------------------------ + + reg_field_ids['emailaddress'] = document.getElementById( 'reg-emailaddress' ); + reg_field_ids['emailaddress-two'] = document.getElementById( 'reg-emailaddress-two' ); + + //------------------------------------------ + // Images + //------------------------------------------ + + reg_img_ids['emailaddress'] = document.getElementById( 'img-emailaddress' ); + + //------------------------------------------ + // Boxes + //------------------------------------------ + + reg_box_ids['emailaddress'] = document.getElementById( 'box-emailaddress' ); + + //------------------------------------------ + // Messages + //------------------------------------------ + + reg_msg_ids['emailaddress'] = document.getElementById( 'msg-emailaddress' ); + + //------------------------------------------ + // Set up onblur + //------------------------------------------ + + reg_field_ids['emailaddress'].onblur = check_email_addresses_one; + reg_field_ids['emailaddress-two'].onblur = check_email_addresses; + + //------------------------------------------ + // Already got error messages? + //------------------------------------------ + + if ( ! reg_msg_ids['emailaddress'].innerHTML ) + { + reg_box_ids['emailaddress'].style.display = 'none'; + } + + //------------------------------------------ + // Display name... + //------------------------------------------ + + if ( reg_got_dname ) + { + reg_field_ids['dname'] = document.getElementById( 'reg-members-display-name' ); + reg_box_ids['dname'] = document.getElementById( 'box-dname' ); + reg_msg_ids['dname'] = document.getElementById( 'msg-dname' ); + reg_img_ids['dname'] = document.getElementById( 'img-members-display-name' ); + + if ( ! reg_msg_ids['dname'].innerHTML ) + { + reg_box_ids['dname'].style.display = 'none'; + } + + reg_field_ids['dname'].onblur = check_display_name; + } + + in_member_id = member_id; +}; + +/*-------------------------------------------------------------------------*/ +// Check email address validity +/*-------------------------------------------------------------------------*/ + +function check_email_addresses_one( event ) +{ + //---------------------------------- + // INIT + //---------------------------------- + + var error_found = ''; + + //---------------------------------- + // Ajax: check for existing email address + //---------------------------------- + + if ( use_enhanced_js && reg_field_ids['emailaddress'].value ) + { + var url = ipb_var_base_url+'act=xmlout&do=check-email-address&email='+escape( reg_field_ids['emailaddress'].value ); + + /*--------------------------------------------*/ + // Main function to do on request + // Must be defined first!! + /*--------------------------------------------*/ + + do_request_function = function() + { + //---------------------------------- + // Ignore unless we're ready to go + //---------------------------------- + + if ( ! xmlobj.readystate_ready_and_ok() ) + { + // Could do a little loading graphic here? + return; + } + + //---------------------------------- + // INIT + //---------------------------------- + + var html = xmlobj.xmlhandler.responseText; + + if ( html == 'found' ) + { + error_found += reg_error_email_taken + "
    "; + } + if ( html == 'banned' ) + { + error_found += reg_error_email_ban + "
    "; + } + if ( html == 'invalid' ) + { + error_found += reg_error_email_invalid + "
    "; + } + + //---------------------------------- + // Show errors + //---------------------------------- + + if ( error_found ) + { + reg_field_ids['emailaddress'].className = input_red; + reg_img_ids['emailaddress'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['emailaddress'].innerHTML = error_found; + reg_box_ids['emailaddress'].style.display = 'block'; + error_email = 1; + } + else + { + error_email = 0; + } + + error_found = ''; + }; + + //---------------------------------- + // LOAD XML + //---------------------------------- + + xmlobj = new ajax_request(); + xmlobj.onreadystatechange( do_request_function ); + xmlobj.process( url ); + } +}; + +/*-------------------------------------------------------------------------*/ +// Check email addresses +/*-------------------------------------------------------------------------*/ + +function check_email_addresses( event ) +{ + //---------------------------------- + // INIT + //---------------------------------- + + var error_found = ''; + + //---------------------------------- + // Check + //---------------------------------- + + if ( ! reg_field_ids['emailaddress'].value.match( /[@\.]/ ) ) + { + error_found += reg_error_email_missing + "
    "; + } + + if ( ! reg_field_ids['emailaddress'].value || ! reg_field_ids['emailaddress-two'].value ) + { + error_found += reg_error_email_missing + "
    "; + } + + if ( reg_field_ids['emailaddress'].value != reg_field_ids['emailaddress-two'].value ) + { + error_found += reg_error_email_nm + "
    "; + } + + if ( error_found ) + { + reg_field_ids['emailaddress'].className = input_red; + reg_field_ids['emailaddress-two'].className = input_red; + reg_img_ids['emailaddress'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['emailaddress'].innerHTML = error_found; + reg_box_ids['emailaddress'].style.display = 'block'; + error_email = 1; + } + else + { + error_email = 0; + } + + //---------------------------------- + // No error.... + //---------------------------------- + + if ( error_email == 0 ) + { + check_email_addresses_one(); + } + + //---------------------------------- + // Still no errors... + //---------------------------------- + + if ( error_email == 0 ) + { + reg_field_ids['emailaddress'].className = input_green; + reg_field_ids['emailaddress-two'].className = input_green; + reg_img_ids['emailaddress'].src = ipb_var_image_url + '/' + img_tick; + reg_box_ids['emailaddress'].style.display = 'none'; + reg_msg_ids['emailaddress'].innerHTML = ''; + } + + if( reg_field_ids['emailaddress'].className == input_red ) + { + reg_field_ids['emailaddress-two'].className = input_red; + } +}; + + +/*-------------------------------------------------------------------------*/ +// Check passwords match +/*-------------------------------------------------------------------------*/ + +function check_passwords( event ) +{ + //---------------------------------- + // INIT + //---------------------------------- + + var error_found = ''; + + //---------------------------------- + // Check + //---------------------------------- + + if ( ! reg_field_ids['password'].value || ! reg_field_ids['password-check'].value ) + { + error_found += reg_error_no_pass + "
    "; + } + + if ( reg_field_ids['password'].value != reg_field_ids['password-check'].value ) + { + error_found += reg_error_pass_nm + "
    "; + } + + if ( error_found ) + { + reg_field_ids['password'].className = input_red; + reg_field_ids['password-check'].className = input_red; + reg_img_ids['password'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['password'].innerHTML = error_found; + reg_box_ids['password'].style.display = 'block'; + } + else + { + reg_field_ids['password'].className = input_green; + reg_field_ids['password-check'].className = input_green; + reg_img_ids['password'].src = ipb_var_image_url + '/' + img_tick; + reg_box_ids['password'].style.display = 'none'; + reg_msg_ids['password'].innerHTML = ''; + } +}; + +/*-------------------------------------------------------------------------*/ +// Check display name +/*-------------------------------------------------------------------------*/ + +function check_display_name( event ) +{ + //---------------------------------- + // INIT + //---------------------------------- + + var error_found = ''; + + //---------------------------------- + // Make sure we have sommat + //---------------------------------- + + if ( ! reg_field_ids['dname'].value || reg_field_ids['dname'].value.length < 3 || reg_field_ids['dname'].value.length > user_display_name_max_length ) + { + error_found += reg_error_no_name + "
    "; + } + + //---------------------------------- + // Check for illegal chars + //---------------------------------- + + if ( reg_field_ids['dname'].value.match( new RegExp( "[" + ucp_dname_illegal_regex + "]" ) ) ) + { + error_found += reg_error_chars + "
    "; + } + + if ( allowed_chars != "" ) + { + var test_regex = new RegExp(); + test_regex.compile( "^[" + RegExp.escape(allowed_chars) + "]+$" ); + + if ( !test_regex.test( reg_field_ids['dname'].value ) ) + { + error_found += allowed_error + "
    "; + } + } + + //---------------------------------- + // Ajax: check for existing member name + //---------------------------------- + + if ( use_enhanced_js && reg_field_ids['dname'].value ) + { + var url = ipb_var_base_url+'act=xmlout&do=check-display-name&name='+escape( reg_field_ids['dname'].value ); + + // Complete reg form? + + if ( in_member_id ) + { + url += '&id=' + in_member_id; + } + + /*--------------------------------------------*/ + // Main function to do on request + // Must be defined first!! + /*--------------------------------------------*/ + + do_request_function = function() + { + //---------------------------------- + // Ignore unless we're ready to go + //---------------------------------- + + if ( ! xmlobj.readystate_ready_and_ok() ) + { + // Could do a little loading graphic here? + return; + } + + //---------------------------------- + // INIT + //---------------------------------- + + var html = xmlobj.xmlhandler.responseText; + + if ( html == 'found' ) + { + error_found += reg_error_taken + "
    "; + } + + //---------------------------------- + // Show errors + //---------------------------------- + + if ( error_found ) + { + reg_field_ids['dname'].className = input_red; + reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['dname'].innerHTML = error_found; + reg_box_ids['dname'].style.display = 'block'; + } + else + { + reg_field_ids['dname'].className = input_green; + reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_tick; + reg_box_ids['dname'].style.display = 'none'; + reg_msg_ids['dname'].innerHTML = ''; + } + + error_found = ''; + }; + + //---------------------------------- + // LOAD XML + //---------------------------------- + + xmlobj = new ajax_request(); + xmlobj.onreadystatechange( do_request_function ); + xmlobj.process( url ); + } + else + { + //---------------------------------- + // Show errors + //---------------------------------- + + if ( error_found ) + { + reg_field_ids['dname'].className = input_red; + reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['dname'].innerHTML = error_found; + reg_box_ids['dname'].style.display = 'block'; + } + else + { + reg_field_ids['dname'].className = input_green; + reg_img_ids['dname'].src = ipb_var_image_url + '/' + img_tick; + reg_box_ids['dname'].style.display = 'none'; + reg_msg_ids['dname'].innerHTML = ''; + } + + error_found = ''; + } +}; + + +/*-------------------------------------------------------------------------*/ +// Check username +/*-------------------------------------------------------------------------*/ + +function check_user_name( event ) +{ + //---------------------------------- + // INIT + //---------------------------------- + + var error_found = ''; + + //---------------------------------- + // Make sure we have sommat + //---------------------------------- + + if ( ! reg_field_ids['name'].value || reg_field_ids['name'].value.length < 3 || reg_field_ids['name'].value.length > user_display_name_max_length ) + { + error_found += reg_error_username_none + "
    "; + } + + if ( allowed_chars != "" ) + { + var test_regex = new RegExp(); + test_regex.compile( "^[" + RegExp.escape(allowed_chars) + "]+$" ); + + if ( !test_regex.test( reg_field_ids['name'].value ) ) + { + error_found += allowed_error + "
    "; + } + } + + //---------------------------------- + // Ajax: check for existing member name + //---------------------------------- + + if ( use_enhanced_js && reg_field_ids['name'].value ) + { + // + symbols get stripped due to escape + reg_field_ids['name'].value = reg_field_ids['name'].value.replace("+", "+"); + + //---------------------------------- + // Get new xhttp obj + //---------------------------------- + + var url = ipb_var_base_url+'act=xmlout&do=check-user-name&name='+escape( reg_field_ids['name'].value ); + + /*--------------------------------------------*/ + // Main function to do on request + // Must be defined first!! + /*--------------------------------------------*/ + + do_request_function = function() + { + //---------------------------------- + // Ignore unless we're ready to go + //---------------------------------- + + if ( ! xmlobj.readystate_ready_and_ok() ) + { + // Could do a little loading graphic here? + return; + } + + //---------------------------------- + // INIT + //---------------------------------- + + var html = xmlobj.xmlhandler.responseText; + + if ( html == 'found' ) + { + error_found += reg_error_username_taken + "
    "; + } + + //---------------------------------- + // Show errors + //---------------------------------- + + if ( error_found ) + { + reg_field_ids['name'].className = input_red; + reg_img_ids['name'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['name'].innerHTML = error_found; + reg_box_ids['name'].style.display = 'block'; + } + else + { + reg_field_ids['name'].className = input_green; + reg_img_ids['name'].src = ipb_var_image_url + '/' + img_tick; + reg_box_ids['name'].style.display = 'none'; + reg_msg_ids['name'].innerHTML = ''; + } + + error_found = ''; + }; + + //---------------------------------- + // LOAD XML + //---------------------------------- + + xmlobj = new ajax_request(); + xmlobj.onreadystatechange( do_request_function ); + xmlobj.process( url ); + } + else + { + //---------------------------------- + // Show errors + //---------------------------------- + + if ( error_found ) + { + reg_field_ids['name'].className = input_red; + reg_img_ids['name'].src = ipb_var_image_url + '/' + img_cross; + reg_msg_ids['name'].innerHTML = error_found; + reg_box_ids['name'].style.display = 'block'; + } + else + { + reg_field_ids['name'].className = input_green; + reg_img_ids['name'].src = ipb_var_image_url + '/' + img_tick; + reg_box_ids['name'].style.display = 'none'; + reg_msg_ids['name'].innerHTML = ''; + } + + error_found = ''; + } + + reg_field_ids['name'].value = reg_field_ids['name'].value.replace("+", "+"); +}; + +/*-------------------------------------------------------------------------*/ +// Validate the complete log in form +/*-------------------------------------------------------------------------*/ + +function validate_complete_login_form( event ) +{ + //------------------------------------------ + // Simply run the functions + //------------------------------------------ + + reg_oktogo = 1; + + if ( ! email_ok ) + { + check_email_addresses( event ); + + //------------------------------------------ + // Got error messages + //------------------------------------------ + + if ( reg_msg_ids['emailaddress'].innerHTML ) + { + reg_oktogo = 0; + } + } + + //------------------------------------------ + // Display name... + //------------------------------------------ + + if ( reg_got_dname ) + { + check_display_name( event ); + + if ( reg_msg_ids['dname'].innerHTML ) + { + reg_oktogo = 0; + } + } + + //------------------------------------------ + // Return + //------------------------------------------ + + return reg_oktogo ? true : false; +}; + +/*-------------------------------------------------------------------------*/ +// Validate the registration form +/*-------------------------------------------------------------------------*/ + +function validate_reg_form( event ) +{ + //------------------------------------------ + // Simply run the functions + //------------------------------------------ + + reg_oktogo = 1; + + check_email_addresses( event ); + check_passwords( event ); + check_user_name( event ); + + //------------------------------------------ + // Got error messages + //------------------------------------------ + + if ( reg_msg_ids['name'].innerHTML ) + { + reg_oktogo = 0; + } + + if ( reg_msg_ids['password'].innerHTML ) + { + reg_oktogo = 0; + } + + if ( reg_msg_ids['emailaddress'].innerHTML ) + { + reg_oktogo = 0; + } + + //------------------------------------------ + // Display name... + //------------------------------------------ + + if ( reg_got_dname ) + { + check_display_name( event ); + + if ( reg_msg_ids['dname'].innerHTML ) + { + reg_oktogo = 0; + } + } + + //------------------------------------------ + // Return + //------------------------------------------ + + return reg_oktogo ? true : false; +}; + +/*-------------------------------------------------------------------------*/ +// They are a COPPA :D +/*-------------------------------------------------------------------------*/ + +function coppa_save() +{ + //------------------------------------------ + // Set cookie + //------------------------------------------ + + my_setcookie( 'coppa', 'yes', 1 ); +}; + +/*-------------------------------------------------------------------------*/ +// Run from the COPPA +/*-------------------------------------------------------------------------*/ + +function coppa_cancel() +{ + //------------------------------------------ + // Set cookie + //------------------------------------------ + + //my_setcookie( 'coppa', '0', 1 ); + locationjump( '' ); +}; + +/*-------------------------------------------------------------------------*/ +// Run from the COPPA +/*-------------------------------------------------------------------------*/ + +function coppa_check() +{ + //------------------------------------------ + // Set cookie + //------------------------------------------ + + var coppa_check = my_getcookie( 'coppa' ); + + if ( coppa_check == 'yes' ) + { + alert( coppa_bounce ); + + locationjump( 'act=reg&CODE=coppa_two' ); + } +}; + +/*-------------------------------------------------------------------------*/ +// Show a more info button? +/*-------------------------------------------------------------------------*/ + + +function reg_get_more_check() +{ + var dropdown = document.getElementById( 'subspackage' ); + var chosenid = dropdown.options[dropdown.selectedIndex].value; + + if ( ! chosenid ) + { + chosenid = 0; + } + + if ( subdesc[chosenid] ) + { + document.getElementById( 'reg-get-more-info' ).style.display = ''; + } + else + { + document.getElementById( 'reg-get-more-info' ).style.display = 'none'; + } +}; + + +/*-------------------------------------------------------------------------*/ +// Show subs more info form +/*-------------------------------------------------------------------------*/ + +function get_more_info() +{ + var dropdown = document.getElementById( 'subspackage' ); + var chosenid = dropdown.options[dropdown.selectedIndex].value; + + if ( ! chosenid ) + { + chosenid = 0; + } + + //------------------------------------------ + // Toggle view... + //------------------------------------------ + + if ( subdesc[chosenid] ) + { + document.getElementById('pkdesc').innerHTML = subdesc[chosenid]; + + toggleview('subspkdiv'); + } +}; \ No newline at end of file diff --git a/upload/jscripts/ipb_topic.js b/upload/jscripts/ipb_topic.js index f1425a6a..18a77998 100644 --- a/upload/jscripts/ipb_topic.js +++ b/upload/jscripts/ipb_topic.js @@ -1,616 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// Topics JS File -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - -var mystored_selection = ''; -var post_cache = new Array(); -var ajax_loaded = 1; -var ignore_cache = new Array(); - -/*--------------------------------------------*/ -// Fast reply stuff -/*--------------------------------------------*/ - -function emoticon( ecode, eobj, eurl ) -{ - ecode = ' ' + ecode + ' '; - var obj_ta = document.getElementById( 'fastreplyarea' ); - - if ( (ua_vers >= 4) && is_ie && is_win) - { - if (obj_ta.isTextEdit) - { - obj_ta.focus(); - var sel = document.selection; - var rng = sel.createRange(); - rng.colapse; - if((sel.type == "Text" || sel.type == "None") && rng != null) - { - if(ecode != "" && rng.text.length > 0) - ecode = rng.text + ecode ; - - rng.text = ecode; - } - } - else - { - obj_ta.value += ecode; - } - } - //---------------------------------------- - // It's MOZZY! - //---------------------------------------- - - else if ( obj_ta.selectionEnd ) - { - var ss = obj_ta.selectionStart; - var st = obj_ta.scrollTop; - var es = obj_ta.selectionEnd; - - if (es <= 2) - { - es = obj_ta.textLength; - } - - var start = (obj_ta.value).substring(0, ss); - var middle = (obj_ta.value).substring(ss, es); - var end = (obj_ta.value).substring(es, obj_ta.textLength); - - //----------------------------------- - // text range? - //----------------------------------- - - if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) - { - middle = ecode + middle; - } - else - { - middle = ecode + middle; - - } - - obj_ta.value = start + middle + end; - - var cpos = ss + (middle.length); - - obj_ta.selectionStart = cpos; - obj_ta.selectionEnd = cpos; - obj_ta.scrollTop = st; - } - //---------------------------------------- - // It's CRAPPY! - //---------------------------------------- - else - { - obj_ta.value += ecode; - } - - obj_ta.focus(); - - if ( (ua_vers >= 4) && is_ie && is_win && emowindow != 'undefined' ) - { - emowindow.focus(); - } - - //document.getElementById( 'fastreplyarea' ).value += ' ' + ecode + ' '; -} - -/*--------------------------------------------*/ -// Topic: Scroll to post: IE fix -/*--------------------------------------------*/ - -function topic_scroll_to_post( post_id ) -{ - //---------------------------------- - // Check for PID - //---------------------------------- - - if ( ! post_id ) - { - return false; - } - - try - { - var post_main_obj = document.getElementById( 'post-main-' + post_id ); - } - catch(error) - { - var post_main_obj; - } - - if ( post_main_obj ) - { - var post_box_top = _get_obj_toppos( post_main_obj ); - - if ( post_box_top ) - { - scroll( 0, post_box_top - 30 ); - } - } -} - -/*--------------------------------------------*/ -// Show hidden post -/*--------------------------------------------*/ - -function topic_show_ignored_post( pid ) -{ - try - { - // Set up - var post_main = document.getElementById( 'post-main-' + pid ); - var post_ignore = document.getElementById( 'post-ignore-' + pid ); - - // Show it - post_main.innerHTML = ignore_cache[ pid ]; - } - catch( e ) - { - //alert( e ); - } - - return false; -} - - -/*--------------------------------------------*/ -// Initiate topic hide -/*--------------------------------------------*/ - -function topic_init_ignored_post( pid ) -{ - try - { - // Set up - var post_main = document.getElementById( 'post-main-' + pid ); - var post_ignore = document.getElementById( 'post-ignore-' + pid ); - - // Cache it... - ignore_cache[ pid ] = post_main.innerHTML; - - // Display "ignored" msg - post_main.innerHTML = post_ignore.innerHTML; - } - catch( e ) - { - //alert( e ); - } -} - -/*--------------------------------------------*/ -// Window Resize -/*--------------------------------------------*/ - -function ajax_std_window_resize( pix, pid ) -{ - var box = document.getElementById( 'post-edit-'+pid ); - var cur_height = parseInt( box.style.height ) ? parseInt( box.style.height ) : 300; - var new_height = cur_height + pix; - - if ( new_height > 0 ) - { - box.style.height = new_height + "px"; - } - - return false; -} - -/*--------------------------------------------*/ -// Ajax: Cancel for edit -/*--------------------------------------------*/ - -function ajax_cancel_for_edit( post_id ) -{ - if ( post_cache[ post_id ] != "" ) - { - document.getElementById( 'post-'+post_id ).innerHTML = post_cache[ post_id ]; - } - - return false; -} - -/*--------------------------------------------*/ -// Ajax: Save for edit -/*--------------------------------------------*/ - -function ajax_save_for_edit( post_id ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - var url = ipb_var_base_url+'act=xmlout&do=post-edit-save&p='+post_id+'&t='+ipb_input_t+'&f='+ipb_input_f; - var fields = new Array(); - - //---------------------------------- - // Populate fields - //---------------------------------- - - fields['md5check'] = ipb_md5_check; - fields['t'] = ipb_input_t; - fields['f'] = ipb_input_f; - fields['p'] = post_id; - fields['act'] = 'xmlout'; - fields['do'] = 'post-edit-save'; - fields['Post'] = document.getElementById( 'post-edit-'+post_id ).value; - fields['std_used'] = 1; // Make sure STD BBCode parser is used - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - xmlobj.show_loading(); - return; - } - - xmlobj.hide_loading(); - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html != 'error' ) - { - document.getElementById( 'post-'+post_id ).innerHTML = html; - } - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - var xmlreturn = xmlobj.process( url, 'POST', xmlobj.format_for_post(fields) ); - - post_cache[ post_id ] = ''; - - return false; -} - -/*--------------------------------------------*/ -// Ajax: Prep for edit -/*--------------------------------------------*/ - -function ajax_prep_for_edit( post_id, event ) -{ - //---------------------------------- - // Cancel bubble (Prevent IE scroll...) - //---------------------------------- - - global_cancel_bubble( event, true ); - - var post_main_obj = document.getElementById( 'post-main-' + post_id ); - var post_box_top = _get_obj_toppos( post_main_obj ); - - //---------------------------------- - // INIT - //---------------------------------- - - var url = ipb_var_base_url+'act=xmlout&do=post-edit-show&p='+post_id+'&t='+ipb_input_t+'&f='+ipb_input_f; - - if ( ! post_cache[ post_id ] || post_cache[ post_id ] == '' ) - { - post_cache[ post_id ] = document.getElementById( 'post-'+post_id ).innerHTML; - } - - //---------------------------------- - // Attempt to close open menus - //---------------------------------- - - try - { - menu_action_close(); - } - catch(e) - { - //alert( e ); - } - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - xmlobj.show_loading(); - return; - } - - xmlobj.hide_loading(); - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html == 'nopermission' ) - { - alert( js_error_no_permission ); - } - else if ( html != 'error' ) - { - if ( post_box_top ) - { - scroll( 0, post_box_top - 30 ); - } - - document.getElementById( 'post-'+post_id ).innerHTML = html; - } - - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - - xmlobj.process( url ); - - return false; -} - -/*--------------------------------------------*/ -// check selection -/*--------------------------------------------*/ - -function checkselection() -{ - var myselection = ''; - - if ( window.getSelection ) - { - myselection = window.getSelection(); - } - else if ( document.selection ) - { - myselection = document.selection.createRange().text; - } - else if ( document.getSelection ) - { - myselection = document.getSelection(); - } - - if ( myselection != '' && myselection != null ) - { - if ( myselection != mystored_selection ) - { - document.getElementById('fastreply-pastesel').style.display = ''; - mystored_selection = (myselection.toString() != '') ? myselection.toString() : null; - } - } - else - { - mystored_selection = null; - } -} - -/*--------------------------------------------*/ -// Paste selection -/*--------------------------------------------*/ - -function pasteselection() -{ - if ( mystored_selection != '' && mystored_selection != null ) - { - var fr = document.getElementById('fastreplyarea'); - if (fr) - { - fr.value += '[quote]'+mystored_selection+'[/quote]\n'; - fr.focus(); - } - } - - return false; -} - -/*--------------------------------------------*/ -// Link to a post -/*--------------------------------------------*/ - -function link_to_post(pid) -{ - temp = prompt( ipb_lang_tt_prompt, ipb_var_base_url + "showtopic=" + ipb_input_t + "&view=findpost&p=" + pid ); - return false; -} - -/*--------------------------------------------*/ -// Delete post -/*--------------------------------------------*/ - -function delete_post(theURL) -{ - if (confirm( ipb_lang_js_del_1 )) - { - window.location.href=theURL; - } - else - { - alert ( ipb_lang_js_del_2 ); - } -} - -/*--------------------------------------------*/ -// Multi quote -/*--------------------------------------------*/ - -function multiquote_add(id) -{ - saved = new Array(); - clean = new Array(); - add = 1; - - //----------------------------------- - // Get any saved info - //----------------------------------- - - if ( tmp = my_getcookie('mqtids') ) - { - saved = tmp.split(","); - } - - //----------------------------------- - // Remove bit if exists - //----------------------------------- - - for( i = 0 ; i < saved.length; i++ ) - { - if ( saved[i] != "" ) - { - if ( saved[i] == id ) - { - add = 0; - } - else - { - clean[clean.length] = saved[i]; - } - } - } - - //----------------------------------- - // Add? - //----------------------------------- - - if ( add ) - { - clean[ clean.length ] = id; - eval("document.mad_"+id+".src=removequotebutton"); - } - else - { - eval(" document.mad_"+id+".src=addquotebutton"); - } - - my_setcookie( 'mqtids', clean.join(','), 0 ); - - return false; -} - -/*--------------------------------------------*/ -// Check delete -/*--------------------------------------------*/ - -function checkdelete() -{ - if ( ! document.modform.selectedpids.value ) - { - return false; - } - - isDelete = document.modform.tact.options[document.modform.tact.selectedIndex].value; - - if (isDelete == 'delete') - { - formCheck = confirm( lang_suredelete ); - - if (formCheck == true) - { - return true; - } - else - { - return false; - } - } -} - -/*--------------------------------------------*/ -// Toggle selection -//*--------------------------------------------*/ - -function topic_toggle_pid( pid ) -{ - //----------------------------------- - // Got a number? - //----------------------------------- - - if ( isNaN( pid ) ) - { - return false; - } - - saved = new Array(); - clean = new Array(); - add = 1; - - //----------------------------------- - // Get form info - //----------------------------------- - - tmp = document.modform.selectedpids.value; - - saved = tmp.split(","); - - //----------------------------------- - // Remove bit if exists - //----------------------------------- - - for( i = 0 ; i < saved.length; i++ ) - { - if ( saved[i] != "" ) - { - if ( saved[i] == pid ) - { - add = 0; - } - else - { - clean[clean.length] = saved[i]; - } - } - } - - //----------------------------------- - // Add? - //----------------------------------- - - if ( add ) - { - clean[ clean.length ] = pid; - eval("document.img"+pid+".src=selectedbutton"); - } - else - { - eval(" document.img"+pid+".src=unselectedbutton"); - } - - newvalue = clean.join(','); - - my_setcookie( 'modpids', newvalue, 0 ); - - document.modform.selectedpids.value = newvalue; - - newcount = stacksize(clean); - - document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ')'; - - return false; -} \ No newline at end of file +var mystored_selection='';var post_cache=new Array();var ajax_loaded=1;var ignore_cache=new Array();var rate_value=0;add_onload_event(fix_linked_image_sizes);function fix_linked_image_sizes_attach_thumb(attach_id,width,height,file_size){var _img='';var img_obj=document.getElementById('ipb-attach-img-'+attach_id);var div_obj=document.getElementById('ipb-attach-div-'+attach_id);var ct_obj=document.getElementById('ipb-attach-ct-'+attach_id);var cb_obj=document.getElementById('ipb-attach-cb-'+attach_id);var url_obj=document.getElementById('ipb-attach-url-'+attach_id);var tbl_obj=document.getElementById('ipb-attach-table-'+attach_id);var _width=parseInt(img_obj.width)?parseInt(img_obj.width):parseInt(img_obj.style.width);var _height=parseInt(img_obj.height)?parseInt(img_obj.height):parseInt(img_obj.style.height);var _padding=5;var _percent=0;if(is_ie){_width=parseInt(img_obj.currentStyle['width']);_height=parseInt(img_obj.currentStyle['height']);}if(is_safari){tbl_obj.style.display='inline-block';}if(width&&height){_percent=Math.ceil(100-parseInt(_width/width*100));}img_obj.className='ipb';img_obj.title=ipb_global_lang['click_to_view'];img_obj.onmouseover=fix_attach_images_mouseover;img_obj.onclick=function(event){ipsclass.pop_up_window(url_obj.href,width+20,height+20);ipsclass.cancel_bubble(event);};div_obj.style.width=(_width>140?_width:140)+'px';div_obj.style.height=_height+(_padding*2)+28+'px';div_obj.className='resized-linked-image';div_obj.style.paddingTop=_padding+"px";div_obj.style.paddingBottom=_padding+"px";div_obj.style.paddingLeft=_padding+3+"px";div_obj.style.paddingRight=_padding+3+"px";div_obj.style.textAlign='center';div_obj.title=ipb_global_lang['click_to_view'];ct_obj.style.fontSize='9px';cb_obj.style.fontSize='9px';cb_obj.style.textAlign='center';if(_percent>0){ct_obj.innerHTML=_img+' '+ipsclass.lang_build_string(ipb_global_lang['image_attach_percent'],_percent);}else{ct_obj.innerHTML=_img+' '+ipb_global_lang['image_attach_no_percent'];}cb_obj.innerHTML="";if(width&&height){cb_obj.innerHTML=ipsclass.lang_build_string(ipb_global_lang['image_attach_dims'],width,height);}cb_obj.innerHTML+=ipsclass.lang_build_string(ipb_global_lang['image_attach_size'],file_size);}function fix_linked_image_sizes(){if(ipsclass.settings['do_linked_resize']!=1){return true;}var images=document.getElementsByTagName('IMG');var _padding=4;var _count=0;var _img='';var _img2='';var _sw=screen.width*(parseInt(ipsclass.settings['resize_percent'])/100);for(var i=0;i_sw){var _width=images[i].width;var _height=images[i].height;var _percent=0;images[i].width=_sw;if(images[i].width<_width&&_width>0&&images[i].width>0){_percent=Math.ceil(parseInt(images[i].width/_width*100));}images[i].id='--ipb-img-resizer-'+_count;images[i]._resized=1;images[i]._width=_width;var div=document.createElement('div');div.innerHTML=_img+' '+ipsclass.lang_build_string(ipb_global_lang['image_resized'],_percent,_width,_height);div.style.width=images[i].width-(_padding*2)+'px';div.className='resized-linked-image';div.style.paddingTop=_padding+"px";div.style.paddingBottom=_padding+"px";div.style.paddingLeft=_padding+"px";div.style.paddingRight=_padding+"px";div._is_div=1;div._resize_id=_count;var _top=ipsclass.get_obj_toppos(images[i]);var _left=ipsclass.get_obj_leftpos(images[i]);var __height=parseInt(images[i].height);var __width=parseInt(images[i].width);var _div=document.createElement("DIV");_div.className='resized-linked-image-zoom';_div.onclick=fix_linked_images_onclick;_div._over=0;_div.style.display='block';images[i].parentNode.parentNode.appendChild(_div);var _w=_div.style.width?parseInt(_div.style.width):200;var _h=_div.style.height?parseInt(_div.style.height):30;var _l=(__width-_w)-5;var _t=(__height-_h)+27;if(is_safari){_t+=19;}_div.style.top=_top+_t+'px';_div.style.left=_left+_l+'px';_div.style.zIndex=100;_div.innerHTML=_img2+"View full size image";_div.onclick=fix_linked_images_onclick;_div.onmouseover=fix_linked_images_mouseover;_div.title=ipb_global_lang['click_to_view'];_div._src=images[i].src;if(is_ie&&!is_ie7){images[i].outerHTML=div.outerHTML+images[i].outerHTML;}else{images[i].parentNode.insertBefore(div,images[i]);}}}}}function fix_linked_images_onclick(e){PopUp(this._src,'popup',screen.width,screen.height,1,1,1);e=ipsclass.cancel_bubble_all(e);return false;};function fix_attach_images_mouseover(e){try{this.style.cursor='pointer';}catch(acold){}}function fix_linked_images_mouseover(e){try{this.style.cursor='pointer';}catch(acold){}}function emoticon(ecode,eobj,eurl){ecode=' '+ecode+' ';var obj_ta=document.getElementById('fastreplyarea');if((ua_vers>=4)&&is_ie&&is_win){if(obj_ta.isTextEdit){obj_ta.focus();var sel=document.selection;var rng=sel.createRange();rng.colapse;if((sel.type=="Text"||sel.type=="None")&&rng!=null){if(ecode!=""&&rng.text.length>0)ecode=rng.text+ecode;rng.text=ecode;}}else{obj_ta.value+=ecode;}}else if(obj_ta.selectionEnd){var ss=obj_ta.selectionStart;var st=obj_ta.scrollTop;var es=obj_ta.selectionEnd;if(es<=2){es=obj_ta.textLength;}var start=(obj_ta.value).substring(0,ss);var middle=(obj_ta.value).substring(ss,es);var end=(obj_ta.value).substring(es,obj_ta.textLength);if(obj_ta.selectionEnd-obj_ta.selectionStart>0){middle=ecode+middle;}else{middle=ecode+middle;}obj_ta.value=start+middle+end;var cpos=ss+(middle.length);obj_ta.selectionStart=cpos;obj_ta.selectionEnd=cpos;obj_ta.scrollTop=st;}else{obj_ta.value+=ecode;}obj_ta.focus();if((ua_vers>=4)&&is_ie&&is_win&&emowindow!='undefined'){emowindow.focus();}}function topic_scroll_to_post(post_id){if(!post_id){return false;}try{var post_main_obj=document.getElementById('post-main-'+post_id);}catch(error){var post_main_obj;}if(post_main_obj){var post_box_top=_get_obj_toppos(post_main_obj);if(post_box_top){scroll(0,post_box_top-30);}}}function topic_show_ignored_post(pid){try{var post_main=document.getElementById('post-main-'+pid);var post_ignore=document.getElementById('post-ignore-'+pid);post_main.innerHTML=ignore_cache[pid];}catch(e){}return false;}function topic_init_ignored_post(pid){try{var post_main=document.getElementById('post-main-'+pid);var post_ignore=document.getElementById('post-ignore-'+pid);ignore_cache[pid]=post_main.innerHTML;post_main.innerHTML=post_ignore.innerHTML;}catch(e){}}function ajax_cancel_for_edit(post_id){if(post_cache[post_id]!=""){document.getElementById('post-'+post_id).innerHTML=post_cache[post_id];}return false;}function ajax_save_for_edit(post_id){var url=ipb_var_base_url+'act=xmlout&do=post-edit-save&p='+post_id+'&t='+ipb_input_t+'&f='+ipb_input_f;var fields=new Array();fields['md5check']=ipb_md5_check;fields['t']=ipb_input_t;fields['f']=ipb_input_f;fields['p']=post_id;fields['act']='xmlout';fields['do']='post-edit-save';fields['Post']=document.getElementById(post_id+'_textarea').value;fields['std_used']=1;try{fields['post_edit_reason']=document.getElementById('post_edit_reason').value;}catch(err){}var post_check=fields['Post'];if(post_check.replace( /^\s*|\s*$/g,"")==""){alert(js_no_empty_post);return false;}do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading();return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='nopermission'){alert(js_error_no_permission);document.getElementById('post-'+post_id).innerHTML=post_cache[post_id];}else if(html!='error'){document.getElementById('post-'+post_id).innerHTML=html;xmlobj.execute_javascript(html);fix_linked_image_sizes();}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);var xmlreturn=xmlobj.process(url,'POST',xmlobj.format_for_post(fields));return false;}function ajax_prep_for_edit(post_id,event){global_cancel_bubble(event,true);var post_main_obj=document.getElementById('post-main-'+post_id);var post_box_top=_get_obj_toppos(post_main_obj);var url=ipb_var_base_url+'act=xmlout&do=post-edit-show&p='+post_id+'&t='+ipb_input_t+'&f='+ipb_input_f;post_cache[post_id]=document.getElementById('post-'+post_id).innerHTML;try{menu_action_close();}catch(e){}do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading();return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='nopermission'){alert(js_error_no_permission);}else if(html!='error'){if(post_box_top){scroll(0,post_box_top-30);}document.getElementById('post-'+post_id).innerHTML=html;IPS_Lite_Editor[post_id]=new ips_text_editor_lite(post_id);IPS_Lite_Editor[post_id].init();}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);return false;}function checkselection(){var myselection='';if(window.getSelection){myselection=window.getSelection();}else if(document.selection){myselection=document.selection.createRange().text;}else if(document.getSelection){myselection=document.getSelection();}if(myselection!=''&&myselection!=null){if(myselection!=mystored_selection){document.getElementById('fastreply-pastesel').style.display='';mystored_selection=(myselection.toString()!='')?myselection.toString():null;}}else{mystored_selection=null;}}function pasteselection(){if(mystored_selection!=''&&mystored_selection!=null){var fr=document.getElementById('fastreplyarea');if(fr){fr.value+='[quote]'+mystored_selection+'[/quote]\n';fr.focus();}}return false;}function link_to_post(pid){temp=prompt(ipb_lang_tt_prompt,ipb_var_base_url+"showtopic="+ipb_input_t+"&view=findpost&p="+pid);return false;}function delete_post(theURL){if(confirm(ipb_lang_js_del_1)){window.location.href=theURL;}else{alert(ipb_lang_js_del_2);}}function multiquote_add(id){saved=new Array();clean=new Array();add=1;if(tmp=my_getcookie('mqtids')){saved=tmp.split(",");}for(i=0;i";}document.getElementById(this.settings['div_rating_wrapper']).innerHTML=this.languages['rate_me']+' '+html;this.show_rating_images(this.settings['default_rating'],1);};this.send_rating=function(rating){rating=rating?rating:0;if(rating){var url=ipb_var_base_url+'act=xmlout&do=topic_rate&t='+ipb_input_t+'&rating='+rating;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading('');return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='no_permission'){alert(js_error_no_permission);}else if(html!='error'){var _result=html.split(',');var _new_value=_result[0];var _new_hits=_result[1];var _new_stars=_result[2];var _type=_result[3];topic_rate.settings['default_rating']=parseInt(_new_stars);topic_rate.show_rating_images(topic_rate.settings['default_rating'],1);menu_action_close();document.getElementById('topic-rating-hits').innerHTML=_new_hits;document.getElementById('topic-rating-my-rating').innerHTML=rating;show_inline_messages_instant('rating_updated');}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);return false;}};this.show_rating_images=function(rating,restore_default){rating=restore_default?this.settings['default_rating']:parseInt(rating);var star=restore_default?this.settings['img_star_on']:this.settings['img_star_selected'];for(var i=1;i<=5;i++){var _img=document.getElementById(this.settings['text_rating_image']+i);_img.src=this.settings['img_base_url']+'/'+this.settings['img_star_off'];}for(var i=1;i<=rating;i++){var _img=document.getElementById(this.settings['text_rating_image']+i);_img.src=this.settings['img_base_url']+'/'+star;}document.getElementById(this.settings['topic-rating-img-main']).src=this.settings['img_base_url']+'/'+this.settings['img_main_star_'+rating];};}; diff --git a/upload/jscripts/ipb_usercp.js b/upload/jscripts/ipb_usercp.js index ae2a9b1d..56ac3b6b 100644 --- a/upload/jscripts/ipb_usercp.js +++ b/upload/jscripts/ipb_usercp.js @@ -1,213 +1 @@ -//------------------------------------------ -// Invision Power Board 2.1.7 -// User CP JS File -// (c) 2005 Invision Power Services, Inc. -// -// http://www.invisionboard.com -//------------------------------------------ - -var ucp_dname_name; -var ucp_dname_pass; -var ucp_dname_name_img; -var ucp_dname_pass_img; -var ucp_dname_form; -var ucp_dname_warn; -var ucp_dname_warn_content; - -var ucp_dname_ok_to_go = 0; -var ucp_dname_illegal_chars = new Array( '[', ']', '|', ',', ';' ); -var ucp_dname_illegal_regex = ''; - -for ( var i in ucp_dname_illegal_chars ) -{ - ucp_dname_illegal_regex += '\\' + ucp_dname_illegal_chars[i]; -} - -var error_found = ''; - -/*-------------------------------------------------------------------------*/ -// INIT Display name change stuff -/*-------------------------------------------------------------------------*/ - -function ucp_dname_init( name, pass, form, wbox ) -{ - ucp_dname_name = document.getElementById( name ); - ucp_dname_pass = document.getElementById( pass ); - ucp_dname_form = document.getElementById( form ); - ucp_dname_warn = document.getElementById( wbox ); - - ucp_dname_warn_content = document.getElementById( wbox+'-content' ); - ucp_dname_name_img = document.getElementById( name+'-img' ); - ucp_dname_pass_img = document.getElementById( pass+'-img' ); - - ucp_dname_name.onblur = ucp_dname_check; - ucp_dname_form.onsubmit = ucp_dname_form_check; - - if ( ucp_dname_warn_content.innerHTML ) - { - ucp_dname_warn.style.display = 'block'; - } -} - -/*-------------------------------------------------------------------------*/ -// EVENT: Check display name -/*-------------------------------------------------------------------------*/ - -function ucp_dname_check( event ) -{ - //---------------------------------- - // INIT - //---------------------------------- - - //---------------------------------- - // Make sure we have sommat - //---------------------------------- - - if ( ! ucp_dname_name.value || ucp_dname_name.value.length < 3 || ucp_dname_name.value.length > 32 ) - { - error_found += dname_error_no_name + "
    "; - } - - //---------------------------------- - // Check for illegal chars - //---------------------------------- - - if ( ucp_dname_name.value.match( new RegExp( "[" + ucp_dname_illegal_regex + "]" ) ) ) - { - error_found += dname_error_chars + "
    "; - } - - //---------------------------------- - // Ajax: check for existing member name - //---------------------------------- - - if ( use_enhanced_js && ucp_dname_name.value ) - { - var url = ipb_var_base_url+'act=xmlout&do=check-display-name&name='+escape( ucp_dname_name.value ); - - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var html = xmlobj.xmlhandler.responseText; - - if ( html == 'found' ) - { - error_found += dname_error_taken + "
    "; - } - - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - ucp_dname_name.className = input_red; - ucp_dname_name_img.src = ipb_var_image_url + '/' + img_cross; - ucp_dname_warn_content.innerHTML = error_found; - ucp_dname_warn.style.display = 'block'; - } - else - { - ucp_dname_name.className = input_green; - ucp_dname_name_img.src = ipb_var_image_url + '/' + img_tick; - ucp_dname_warn.style.display = 'none'; - ucp_dname_warn_content.innerHTML = ''; - } - - error_found = ''; - } - - //---------------------------------- - // LOAD XML - //---------------------------------- - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - xmlobj.process( url ); - } - else - { - //---------------------------------- - // Show errors - //---------------------------------- - - if ( error_found ) - { - ucp_dname_name.className = input_red; - ucp_dname_name_img.src = ipb_var_image_url + '/' + img_cross; - ucp_dname_warn_content.innerHTML = error_found; - ucp_dname_warn.style.display = 'block'; - } - else - { - ucp_dname_name.className = input_green; - ucp_dname_name_img.src = ipb_var_image_url + '/' + img_tick; - ucp_dname_warn.style.display = 'none'; - ucp_dname_warn_content.innerHTML = ''; - } - - error_found = ''; - } -} - -/*-------------------------------------------------------------------------*/ -// EVENT: Check display name -/*-------------------------------------------------------------------------*/ - -function ucp_dname_form_check( event ) -{ - //---------------------------------- - // DO pass fields - //---------------------------------- - - if ( ! ucp_dname_pass.value ) - { - error_found += dname_error_no_pass + "
    "; - } - - //---------------------------------- - // Check name - //---------------------------------- - - ucp_dname_check( event ); - - if ( error_found ) - { - ucp_dname_ok_to_go = 0; - } - else - { - ucp_dname_ok_to_go = 1; - } - - //---------------------------------- - // Return - //---------------------------------- - - if ( ucp_dname_ok_to_go ) - { - return true; - } - else - { - return false; - } -} \ No newline at end of file +var ucp_dname_name;var ucp_dname_pass;var ucp_dname_name_img;var ucp_dname_pass_img;var ucp_dname_form;var ucp_dname_warn;var ucp_dname_warn_content;var dname_max_length=26;var ucp_dname_ok_to_go=0;var ucp_dname_illegal_chars=new Array('[',']','|',',',';','$');var ucp_dname_illegal_regex='';for(var i in ucp_dname_illegal_chars){ucp_dname_illegal_regex+='\\'+ucp_dname_illegal_chars[i];}var error_found='';function ucp_dname_init(name,pass,form,wbox){ucp_dname_name=document.getElementById(name);ucp_dname_pass=document.getElementById(pass);ucp_dname_form=document.getElementById(form);ucp_dname_warn=document.getElementById(wbox);ucp_dname_warn_content=document.getElementById(wbox+'-content');ucp_dname_name_img=document.getElementById(name+'-img');ucp_dname_pass_img=document.getElementById(pass+'-img');ucp_dname_name.onblur=ucp_dname_check;ucp_dname_form.onsubmit=ucp_dname_form_check;if(ucp_dname_warn_content.innerHTML){ucp_dname_warn.style.display='block';}}function ucp_dname_check(event){if(!ucp_dname_name.value||ucp_dname_name.value.length<3||ucp_dname_name.value.length>dname_max_length){error_found+=dname_error_no_name+"
    ";}if(ucp_dname_name.value.match(new RegExp("["+ucp_dname_illegal_regex+"]"))){error_found+=dname_error_chars+"
    ";}if(use_enhanced_js&&ucp_dname_name.value){var url=ipb_var_base_url+'act=xmlout&do=check-display-name&name='+escape(ucp_dname_name.value);do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;}var html=xmlobj.xmlhandler.responseText;if(html=='found'){error_found+=dname_error_taken+"
    ";}if(error_found){ucp_dname_name.className=input_red;ucp_dname_name_img.src=ipb_var_image_url+'/'+img_cross;ucp_dname_warn_content.innerHTML=error_found;ucp_dname_warn.style.display='block';}else{ucp_dname_name.className=input_green;ucp_dname_name_img.src=ipb_var_image_url+'/'+img_tick;ucp_dname_warn.style.display='none';ucp_dname_warn_content.innerHTML='';}error_found='';};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);}else{if(error_found){ucp_dname_name.className=input_red;ucp_dname_name_img.src=ipb_var_image_url+'/'+img_cross;ucp_dname_warn_content.innerHTML=error_found;ucp_dname_warn.style.display='block';}else{ucp_dname_name.className=input_green;ucp_dname_name_img.src=ipb_var_image_url+'/'+img_tick;ucp_dname_warn.style.display='none';ucp_dname_warn_content.innerHTML='';}error_found='';}}function ucp_dname_form_check(event){if(!ucp_dname_pass.value){error_found+=dname_error_no_pass+"
    ";}ucp_dname_check(event);if(error_found){ucp_dname_ok_to_go=0;}else{ucp_dname_ok_to_go=1;}if(ucp_dname_ok_to_go){return true;}else{return false;}} diff --git a/upload/jscripts/ipb_xhr_findnames.js b/upload/jscripts/ipb_xhr_findnames.js index b6bcb1b1..3d3ae6f2 100644 --- a/upload/jscripts/ipb_xhr_findnames.js +++ b/upload/jscripts/ipb_xhr_findnames.js @@ -1,720 +1 @@ -//------------------------------------------------------------------------------ -// IPS XML HTTP REQUEST:: GET NEW POSTS -//------------------------------------------------------------------------------ -// Supports Safari, Mozilla 1.3+ (Firefox, etc) and IE 5.5+ -// (c) 2005 Invision Power Services, Inc. -// http://www.invisionpower.com -//------------------------------------------------------------------------------ - -/*--------------------------------------------*/ -// INIT VARS -/*--------------------------------------------*/ - -var mem_div = 'ipb-get-members'; -var divobj; -var iframeobj; -var formobj; -var xmlobj; -var _result_cache = new Array(); -var _div_rows = 0; -var _cur_updown_pressed = 0; -var _last_key_code = 0; -var _event_key_code = 0; -var _cur_input_val = ''; -var _old_input_val = ''; -var _hiliteindex = -1; -var _hilite_sug_div; -var _complete_div_list; -var delay_action = false; -var _allow_update = true; -var _form_onsubmit_saved; -var _urllookup; -var _timemout_main = 0; -var _timeout_blur = 0; -var _in_focus = 0; - -/*--------------------------------------------*/ -// SHOW POSSIBLE MEMBER NAME MATCHES -/*--------------------------------------------*/ - -main_loop = function() -{ - if ( ( _old_input_val != _cur_input_val ) && ( _cur_input_val.length >= 3 ) && ( _in_focus == 1 ) ) - { - if ( ! delay_action && _allow_update ) - { - //---------------------------------- - // Try cache - //---------------------------------- - - var cached = _result_cache[ _cur_input_val ]; - - if ( cached ) - { - returnSearch( _cur_input_val, cached[0], cached[1] ); - } - else - { - /*--------------------------------------------*/ - // Main function to do on request - // Must be defined first!! - /*--------------------------------------------*/ - - do_request_function = function() - { - //---------------------------------- - // Ignore unless we're ready to go - //---------------------------------- - - if ( ! xmlobj.readystate_ready_and_ok() ) - { - // Could do a little loading graphic here? - return; - } - - //---------------------------------- - // INIT - //---------------------------------- - - var returned = xmlobj.xmlhandler.responseText; - - //---------------------------------- - // Did we get something? - //---------------------------------- - - if ( returned.charAt(0) == '<' ) - { - return false; - } - else - { - eval( returned ); - } - } - - xmlobj = new ajax_request(); - xmlobj.onreadystatechange( do_request_function ); - - xmlobj.process( ipb_var_base_url + 'act=xmlout&do='+_urllookup+'&name='+escape(inobj.value) ); - - inobj.focus(); - } - } - - delay_action = false; - } - - _old_input_val = _cur_input_val; - - _timemout_main = setTimeout( 'main_loop()', 10 ); - - return false; -} - -/*--------------------------------------------*/ -// Initalize... -/*--------------------------------------------*/ - -function init_js( formobjname, fieldobjname, urllookup ) -{ - //---------------------------------- - // Set up - //---------------------------------- - - if ( ! urllookup ) - { - _urllookup = 'get-member-names'; - } - else - { - _urllookup = urllookup; - } - - formobj = document.getElementById( formobjname ); - inobj = document.getElementById( fieldobjname ); - divobj = document.getElementById( mem_div ); - - inobj.autocomplete = "off"; - inobj.onfocus = function () { _in_focus = 1; } - inobj.onblur = onblurhandler; - inobj.onsubmit = submit_handler; - - //---------------------------------- - // Already got a submit handler? - //---------------------------------- - - if ( formobj.onsubmit ) - { - _form_onsubmit_saved = formobj.onsubmit; - } - - formobj.onsubmit = submit_handler; - - if ( inobj.createTextRange ) - { - inobj.onkeyup = new Function( "return onkeyuphandler(event);" ); - } - else - { - inobj.onkeyup = onkeyuphandler; - } - - cache_name_results("",new Array(),new Array()); - - _cur_input_val = inobj.value; - - document.onkeydown = keydownhandler; - - set_up_key_down(); -} - -/*--------------------------------------------*/ -// Set up key down -/*--------------------------------------------*/ - -function set_up_key_down() -{ - if ( document.createEventObject ) - { - var y = document.createEventObject(); - y.ctrlKey = true; - y.keyCode = 70; - document.fireEvent( "onkeydown", y ) - } -} - -/*--------------------------------------------*/ -// Key down handler -/*--------------------------------------------*/ - -function keydownhandler( event ) -{ - if( ! event && window.event ) - { - event = window.event; - } - if ( event ) - { - _last_key_code = event.keyCode; - } -} - -/*--------------------------------------------*/ -// On blur handler -/*--------------------------------------------*/ - -function onblurhandler( event ) -{ - if ( ! event && window.event ) - { - event = window.event; - } - - if ( ! _cur_updown_pressed ) - { - _in_focus = 0; - - my_xr_hide_div( divobj ); - _hiliteindex = -1; - - // Tab? - - if ( _last_key_code == 9 ) - { - _last_key_code = -1; - } - } - - _cur_updown_pressed = false; -} - -/*--------------------------------------------*/ -// On key up handler -/*--------------------------------------------*/ - -function key_handler_function() -{ - //---------------------------------- - // trap up/down cursor - //---------------------------------- - - if ( _event_key_code == 40 || _event_key_code == 38 ) - { - _allow_update = false; - blur_then_focus(); - } - else - { - _cur_updown_pressed = false; - _allow_update = true; - } - - _cur_input_val = inobj.value; - - handle_cursor_press( _event_key_code ); -} - -/*--------------------------------------------*/ -// Handle cursor press -/*--------------------------------------------*/ - -function handle_cursor_press( eventcode ) -{ - if ( eventcode == 40 ) - { - hilite_new_value( _hiliteindex + 1 ); - } - else if ( eventcode == 38 ) - { - hilite_new_value( _hiliteindex - 1 ); - } - else if ( eventcode == 13 || eventcode == 3 ) - { - //---------------------------------- - // Are we looking through the divs? - //---------------------------------- - - if ( _hiliteindex != -1 ) - { - my_xr_hide_div( divobj ); - _hiliteindex = -1; - } - - return false; - } - - return true; -} - -/*--------------------------------------------*/ -// Highlight new value (cursor keys pressed) -/*--------------------------------------------*/ - -function hilite_new_value( index ) -{ - if ( _div_rows <= 0 ) - { - return; - } - - my_show_div( divobj ); - - if ( index > _div_rows ) - { - index = _div_rows - 1; - } - - if ( _hiliteindex != -1 && index != _hiliteindex ) - { - set_style_for_element( _hilite_sug_div, 'wrapdiv' ); - } - - if ( index < 0 ) - { - _hiliteindex = -1; - inobj.focus(); - return; - } - - _hiliteindex = index; - _hilite_sug_div = divobj.getElementsByTagName('DIV').item( index ); - - set_style_for_element( _hilite_sug_div, 'spanhilite' ); - - newval = find_span_value_for_class( _hilite_sug_div, 'namespan' ); - - if ( newval && typeof(newval) != 'undefined' ) - { - inobj.value = find_span_value_for_class( _hilite_sug_div, 'namespan' ); - } -} - -/*--------------------------------------------*/ -// Blur then focus -/*--------------------------------------------*/ - -function blur_then_focus() -{ - _cur_updown_pressed = true; - - inobj.blur(); - - _timemout_blur = setTimeout( "set_input_field_focus();", 10 ); - return; -} - -/*--------------------------------------------*/ -// Set input field focus -/*--------------------------------------------*/ - -function set_input_field_focus() -{ - inobj.focus(); -} - -/*--------------------------------------------*/ -// Styles element -/*--------------------------------------------*/ - -function set_style_for_element( c, name ) -{ - try - { - if ( ! c ) - { - return; - } - } - catch(e) - { - return; - } - - c.className = name; - - switch( name ) - { - case 'wrapdiv': - c.style.backgroundColor = "white"; - c.style.color = "black"; - - if ( c.displaySpan ) - { - c.displaySpan.style.color = "green"; - } - - break; - case 'wrapspan': - c.style.display = "block"; - c.style.paddingLeft = "3"; - c.style.paddingRight = "3"; - c.style.height = "16px"; - c.style.overflow = "hidden"; - break; - case 'namespan': - c.style.cssFloat = "left"; - c.style.width = '100%'; - break; - case 'idspan': - c.style.cssFloat = "right"; - c.style.display = 'none'; - break; - case 'spanhilite': - c.style.backgroundColor = "#3366cc"; - c.style.color = "white"; - - if ( c.displaySpan ) - { - c.displaySpan.style.color = "white"; - } - - break; - } -} - -/*--------------------------------------------*/ -// Get value of named span -/*--------------------------------------------*/ - -function find_span_value_for_class( i, dc ) -{ - try - { - if ( ! i ) - { - return; - } - } - catch(e) - { - return; - } - - var ga = i.getElementsByTagName('span'); - - if ( ga ) - { - for( var f=0; f < ga.length; ++f ) - { - if ( ga[f].className == dc ) - { - var value = ga[f].innerHTML; - - if ( value == " " ) - { - return ""; - } - else - { - return value; - } - } - } - } - else - { - return ""; - } -} - - -/*--------------------------------------------*/ -// Displays the actual list -/*--------------------------------------------*/ - -function display_suggested_list( na, ia ) -{ - //---------------------------------- - // Clear div - //---------------------------------- - - while( divobj.childNodes.length > 0 ) - { - divobj.removeChild( divobj.childNodes[0] ); - } - - //---------------------------------- - // Write Div - //---------------------------------- - - _div_rows = 0; - - for( var f = 0 ; f < na.length; ++f ) - { - _div_rows++; - var od = document.createElement("DIV"); - set_style_for_element( od, 'wrapdiv' ); - od.onmousedown = sb_mdown; - od.onmouseover = sb_mover; - od.onmouseout = sb_mout; - - var span_wrap = document.createElement("SPAN"); - set_style_for_element( span_wrap, 'wrapspan' ); - - var span_name = document.createElement("SPAN"); - span_name.innerHTML = na[f]; - - var span_id = document.createElement("SPAN"); - - set_style_for_element( span_name, 'namespan' ); - set_style_for_element( span_id, 'idspan' ); - - od.displaySpan = span_id; - - span_id.innerHTML = ia[f]; - - span_wrap.appendChild( span_name ); - span_wrap.appendChild( span_id ); - od.appendChild( span_wrap ); - divobj.appendChild( od ); - } - - //---------------------------------- - // Calc pos. - //---------------------------------- - - var mid = inobj; - var left_px = _get_obj_leftpos(mid); - var top_px = _get_obj_toppos(mid) + mid.offsetHeight; - var width = parseInt( divobj.style.width ); - var height = parseInt( divobj.style.height ); - - //---------------------------------- - // Show menu DIV - //---------------------------------- - - divobj.style.position = "absolute"; - - //---------------------------------- - // Try and keep it on screen - //---------------------------------- - - if ( (left_px + width) >= document.body.clientWidth ) - { - left_px = left_px + mid.offsetWidth - width; - } - - //---------------------------------- - // Try and keep it on screen - //---------------------------------- - - if ( (top_px + height) >= document.body.clientHeight ) - { - top_px = top_px - height; - } - - //---------------------------------- - // Finalize menu position - //---------------------------------- - - divobj.style.left = left_px + "px"; - divobj.style.top = top_px + "px"; - divobj.style.display = "block"; - - _hiliteindex= -1; - - //---------------------------------- - // Workaround for IE bug which shows - // select boxes and other windows GUI - // over divs. SHOW IFRAME - //---------------------------------- - - if ( is_ie ) - { - try - { - if ( ! document.getElementById( 'if_xhr_' + mem_div ) ) - { - iframeobj = document.createElement('iframe'); - - iframeobj.src = 'javascript:;'; - iframeobj.id = 'if_xhr_' + mem_div - - document.getElementsByTagName('body')[0].appendChild( iframeobj ); - } - else - { - iframeobj = document.getElementById( 'if_xhr_' + mem_div ); - } - - iframeobj.scrolling = 'no'; - iframeobj.frameborder = 'no'; - iframeobj.className = 'iframeshim'; - iframeobj.style.position = 'absolute'; - - iframeobj.style.width = parseInt(divobj.offsetWidth) + 'px'; - iframeobj.style.height = parseInt(divobj.offsetHeight) + 'px'; - iframeobj.style.top = divobj.style.top; - iframeobj.style.left = divobj.style.left; - iframeobj.style.zIndex = divobj.style.zIndex - 1; - iframeobj.style.display = "block"; - - } - catch(error) - { - //alert(error); // Oh dear, someones stolen the iframe - } - } -} - -/*--------------------------------------------*/ -// Caches the results -/*--------------------------------------------*/ - -function cache_name_results( mstring, na, ia ) -{ - _result_cache[mstring] = new Array( na, ia ); -} - -/*--------------------------------------------*/ -// This is the function the response XML text gives -/*--------------------------------------------*/ - -returnSearch = function( mstring, namearray, idarray ) -{ - //---------------------------------- - // Cache.. - //---------------------------------- - - cache_name_results( mstring, namearray, idarray ); - - if ( _in_focus != 1 ) - { - return false; - } - - //---------------------------------- - // Display - //---------------------------------- - - display_suggested_list( namearray, idarray ); - - //---------------------------------- - // Resize or hide? - //---------------------------------- - - if ( _div_rows > 0 ) - { - divobj.style.height = 16 * _div_rows + 4; - } - else - { - my_xr_hide_div( divobj ); - _hiliteindex = -1; - } -} - -/*--------------------------------------------*/ -// Submit handler -/*--------------------------------------------*/ - -submit_handler = function ( event ) -{ - delay_action = true; - var retval = true; - - if ( _hiliteindex != -1 ) - { - return false; - } - else - { - if ( _form_onsubmit_saved ) - { - eval( 'tmpsubmit = ' + _form_onsubmit_saved ); - retval = tmpsubmit(); - } - - return retval; - } -} - -/*--------------------------------------------*/ -// On key up handler -/*--------------------------------------------*/ - -onkeyuphandler = function( event ) -{ - _event_key_code = event.keyCode; - key_handler_function(); -} - -/*--------------------------------------------*/ -// Div mouse events -/*--------------------------------------------*/ - -sb_mdown = function() -{ - delay_action = true; - inobj.value = find_span_value_for_class( this, 'namespan' ); -} - -sb_mover = function() -{ - set_style_for_element( this, 'spanhilite' ); -} - -sb_mout = function() -{ - set_style_for_element( this, 'wrapdiv' ); -} - -function my_xr_hide_div ( dobj ) -{ - dobj.style.display = "none"; - - if ( is_ie ) - { - try - { - document.getElementById( 'if_xhr_' + mem_div ).style.display = "none"; - } - catch(e) - { - //alert(e);// Oh dear, someones stolen the iframe - } - } -} - - - +var mem_div='ipb-get-members';var divobj;var iframeobj;var formobj;var xmlobj;var _result_cache=new Array();var _div_rows=0;var _cur_updown_pressed=0;var _last_key_code=0;var _event_key_code=0;var _cur_input_val='';var _old_input_val='';var _hiliteindex=-1;var _hilite_sug_div;var _complete_div_list;var delay_action=false;var _allow_update=true;var _form_onsubmit_saved;var _urllookup;var _timemout_main=0;var _timeout_blur=0;var _in_focus=0;main_loop=function(){if((_old_input_val!=_cur_input_val)&&(_cur_input_val.length>=3)&&(_in_focus==1)){if(!delay_action&&_allow_update){var cached=_result_cache[_cur_input_val];if(cached){returnSearch(_cur_input_val,cached[0],cached[1]);}else{do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;}var returned=xmlobj.xmlhandler.responseText;if(returned.charAt(0)=='<'){return false;}else{eval(returned);}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(ipb_var_base_url+'&act=xmlout&do='+_urllookup+'&name='+escape(inobj.value));inobj.focus();}}delay_action=false;}_old_input_val=_cur_input_val;_timemout_main=setTimeout('main_loop()',10);return false;};function init_js(formobjname,fieldobjname,urllookup){if(!urllookup){_urllookup='get-member-names';}else{_urllookup=urllookup;}formobj=document.getElementById(formobjname);inobj=document.getElementById(fieldobjname);divobj=document.getElementById(mem_div);inobj.autocomplete="off";inobj.onfocus=function(){_in_focus=1;};inobj.onblur=onblurhandler;inobj.onsubmit=submit_handler;if(formobj.onsubmit){_form_onsubmit_saved=formobj.onsubmit;}formobj.onsubmit=submit_handler;if(inobj.createTextRange){inobj.onkeyup=new Function("return onkeyuphandler(event);");}else{inobj.onkeyup=onkeyuphandler;}cache_name_results("",new Array(),new Array());_cur_input_val=inobj.value;document.onkeydown=keydownhandler;set_up_key_down();}function set_up_key_down(){if(document.createEventObject){var y=document.createEventObject();y.ctrlKey=true;y.keyCode=70;document.fireEvent("onkeydown",y)}}function keydownhandler(event){if(!event&&window.event){event=window.event;}if(event){_last_key_code=event.keyCode;}}function onblurhandler(event){if(!event&&window.event){event=window.event;}if(!_cur_updown_pressed){_in_focus=0;my_xr_hide_div(divobj);_hiliteindex=-1;if(_last_key_code==9){_last_key_code=-1;}}_cur_updown_pressed=false;}function key_handler_function(){if(_event_key_code==40||_event_key_code==38){_allow_update=false;blur_then_focus();}else{_cur_updown_pressed=false;_allow_update=true;}_cur_input_val=inobj.value;handle_cursor_press(_event_key_code);}function handle_cursor_press(eventcode){if(eventcode==40){hilite_new_value(_hiliteindex+1);}else if(eventcode==38){hilite_new_value(_hiliteindex-1);}else if(eventcode==13||eventcode==3){if(_hiliteindex!=-1){my_xr_hide_div(divobj);_hiliteindex=-1;}return false;}return true;}function hilite_new_value(index){if(_div_rows<=0){return;}my_show_div(divobj);if(index>_div_rows){index=_div_rows-1;}if(_hiliteindex!=-1&&index!=_hiliteindex){set_style_for_element(_hilite_sug_div,'wrapdiv');}if(index<0){_hiliteindex=-1;inobj.focus();return;}_hiliteindex=index;_hilite_sug_div=divobj.getElementsByTagName('DIV').item(index);set_style_for_element(_hilite_sug_div,'spanhilite');newval=find_span_value_for_class(_hilite_sug_div,'namespan');if(newval&&typeof(newval)!='undefined'){inobj.value=find_span_value_for_class(_hilite_sug_div,'namespan');}}function blur_then_focus(){_cur_updown_pressed=true;inobj.blur();_timemout_blur=setTimeout("set_input_field_focus();",10);return;}function set_input_field_focus(){inobj.focus();}function set_style_for_element(c,name){try{if(!c){return;}}catch(e){return;}c.className=name;switch(name){case 'wrapdiv':c.style.backgroundColor="white";c.style.color="black";if(c.displaySpan){c.displaySpan.style.color="green";}break;case 'wrapspan':c.style.display="block";c.style.paddingLeft="3";c.style.paddingRight="3";c.style.height="16px";c.style.overflow="hidden";break;case 'namespan':c.style.cssFloat="left";c.style.width='100%';break;case 'idspan':c.style.cssFloat="right";c.style.display='none';break;case 'spanhilite':c.style.backgroundColor="#3366cc";c.style.color="white";if(c.displaySpan){c.displaySpan.style.color="white";}break;}}function find_span_value_for_class(i,dc){try{if(!i){return;}}catch(e){return;}var ga=i.getElementsByTagName('span');if(ga){for(var f=0;f0){divobj.removeChild(divobj.childNodes[0]);}_div_rows=0;for(var f=0;f=document.body.clientWidth){left_px=left_px+mid.offsetWidth-width;}if((top_px+height)>=document.body.clientHeight){top_px=top_px-height;}divobj.style.left=left_px+"px";divobj.style.top=top_px+"px";divobj.style.display="block";_hiliteindex=-1;if(is_ie){try{if(!document.getElementById('if_xhr_'+mem_div)){iframeobj=document.createElement('iframe');iframeobj.src='javascript:;';iframeobj.id='if_xhr_'+mem_div;document.getElementsByTagName('body')[0].appendChild(iframeobj);}else{iframeobj=document.getElementById('if_xhr_'+mem_div);}iframeobj.scrolling='no';iframeobj.frameborder='no';iframeobj.className='iframeshim';iframeobj.style.position='absolute';iframeobj.style.width=parseInt(divobj.offsetWidth)+'px';iframeobj.style.height=parseInt(divobj.offsetHeight)+'px';iframeobj.style.top=divobj.style.top;iframeobj.style.left=divobj.style.left;iframeobj.style.zIndex=divobj.style.zIndex-1;iframeobj.style.display="block";}catch(error){}}}function cache_name_results(mstring,na,ia){_result_cache[mstring]=new Array(na,ia);}returnSearch=function(mstring,namearray,idarray){cache_name_results(mstring,namearray,idarray);if(_in_focus!=1){return false;}display_suggested_list(namearray,idarray);if(_div_rows>0){divobj.style.height=16*_div_rows+4;}else{my_xr_hide_div(divobj);_hiliteindex=-1;}};submit_handler=function(event){delay_action=true;var retval=true;if(_hiliteindex!=-1){return false;}else{if(_form_onsubmit_saved){eval('tmpsubmit = '+_form_onsubmit_saved);retval=tmpsubmit();}return retval;}};onkeyuphandler=function(event){_event_key_code=event.keyCode;key_handler_function();};sb_mdown=function(){delay_action=true;inobj.value=find_span_value_for_class(this,'namespan');};sb_mover=function(){set_style_for_element(this,'spanhilite');};sb_mout=function(){set_style_for_element(this,'wrapdiv');};function my_xr_hide_div(dobj){dobj.style.display="none";if(is_ie){try{document.getElementById('if_xhr_'+mem_div).style.display="none";}catch(e){}}} diff --git a/upload/jscripts/ips_attach.js b/upload/jscripts/ips_attach.js new file mode 100644 index 00000000..d50d5548 --- /dev/null +++ b/upload/jscripts/ips_attach.js @@ -0,0 +1 @@ +var ipsattach=new ips_attach();function ips_attach(){this.iframe_id='ips--iframe-obj-attach';this.iframe_obj=null;this.iframe_init_url='';this.iframe_remove_url='';this.iframe_add_to_div='ips-attach-div-iframe';this.iframe_add_to_div_obj=null;this.iframe_parent_div='ips-attach-div-parent';this.iframe_parent_div_obj=null;this.status_div='ips-attach-div-status';this.status_div_obj=null;this.dropdown_text='ips-attach-menu-text';this.dropdown_text_obj=null;this.iframe_height=300;this.iframe_classname='attach-iframe';this.message_div_id='ips-attach-message';this.message_div_obj=null;this.message_span_id='ips-attach-message-span';this.message_span_obj=null;this.status_msg='';this.status_is_error='';this.current_items=new Array();this.current_item_menu='ips-attach-menu';this.current_item_menu_obj=null;this.images_url=null;this.lang=new Array();this.css_menu_row='attach-menu-row';this.css_menu_row_over='attach-menu-row-over';this.show_attach_menu=1;this.onload_function='';this.has_upload_pending=0;this.init=function(){this.iframe_add_to_div_obj=document.getElementById(this.iframe_add_to_div);this.iframe_parent_div_obj=document.getElementById(this.iframe_parent_div);this.message_div_obj=document.getElementById(this.message_div_id);this.message_span_obj=document.getElementById(this.message_span_id);this.status_div_obj=document.getElementById(this.status_div);this.dropdown_text_obj=document.getElementById(this.dropdown_text);if(this.show_attach_menu){this.current_item_menu_obj=document.getElementById(this.current_item_menu);ipsmenu.register(this.current_item_menu);this.current_item_menu_obj._onclick=this.current_item_menu_obj.onclick;this.current_item_menu_obj.onmouseover=this.current_item_menu_obj.onmouseout=this.current_item_menu_obj.onclick=this.current_menu_mouseover;ipsmenu.menu_registered[this.current_item_menu]._open=ipsmenu.menu_registered[this.current_item_menu].open;ipsmenu.menu_registered[this.current_item_menu].open=this.current_menu_button_show;}};this.init_current_menu=function(obj){var menu='';try{menu=document.getElementById(ipsattach.current_item_menu+'_menu');menu.innerHTML='';}catch(error){menu=document.createElement('div');}var _items=0;menu.id=ipsattach.current_item_menu+'_menu';menu.className='attach-popupmenu';menu.style.display='none';menu.style.cursor='default';menu.style.padding='3px';menu.style.width='auto';menu.style.overflow='auto';for(var i in ipsattach.current_items){var option=document.createElement('div');option.innerHTML=ipsattach.current_items[i];option.style.width=ipsattach.current_item_menu_obj.style.width;option.className='attach-menu-row';option.onmouseover=option.onmouseout=ipsattach.menu_onmouse_event;menu.appendChild(option);_items++;}if(!_items){var option=document.createElement('div');option.innerHTML=ipsattach.lang['no_items'];option.style.width=ipsattach.current_item_menu_obj.style.width;option.className='attach-menu-row';option.onmouseover=option.onmouseout=ipsattach.menu_onmouse_event;menu.appendChild(option);}ipsattach.set_attach_count_status(_items);ipsattach.iframe_parent_div_obj.appendChild(menu);ipsclass.set_unselectable(menu);};this.set_attach_count_status=function(_items){if(!ipsattach.show_attach_menu){return;}if(typeof(_items)=='undefined'){_items=0;for(var i in ipsattach.current_items){_items++;}}try{ipsattach.dropdown_text_obj.innerHTML=" ("+_items+")";}catch(error){}};this.add_current_item=function(attach_id,attach_name,attach_size,attach_image){if(attach_name.length>22){var _ext=attach_name.replace( /^.*\.(\S+?)$/,"$1");var _main=attach_name.replace( /^(.*)\.\S+?$/,"$1");var _a=_main.substr(0,8);var _b=_main.substr(_main.length-8,_main.length);attach_name=_a+'...'+_b+'.'+_ext;}var html='';html+='  ';html+=' ';html+='  ';html+=''+attach_name+'';html+='  ('+attach_size+')';this.current_items[this.current_items.length]=html;};this.add_attachment_into_editor=function(id,name){var tag="[attachment="+id+":"+name+"]";ipsclass.add_editor_contents(tag);};this.remove_attachment=function(id){menu_action_close();if(confirm(ipsattach.lang['remove_warn']+' ['+id+']')){ipsattach.iframe_obj.src=ipsattach.iframe_remove_url+"&attach_id="+id;ipsattach.iframe_on_un_load('attach_removal');}};this.show_attach_box=function(){var iheight=parseInt(this.iframe_add_to_div_obj.style.height);var iwidth=this.iframe_add_to_div_obj.style.width;if(!this.iframe_obj){this.iframe_obj=document.createElement('IFRAME');this.iframe_obj.src=this.iframe_init_url;this.iframe_obj.id=this.iframe_id;this.iframe_obj.name=this.iframe_id;this.iframe_obj.scrolling='no';this.iframe_obj.frameBorder='no';this.iframe_obj.border='0';this.iframe_obj.className=this.iframe_classname;this.iframe_obj.style.width=iwidth?iwidth:'100%';this.iframe_obj.style.height=iheight?iheight-5+'px':this.iframe_height+'px';this.iframe_obj.style.overflow='hidden';this.iframe_obj.style.display='';this.iframe_obj.msg_open=1;this.iframe_obj.iframe_loaded=0;this.iframe_obj.iframe_init=0;this.iframe_add_to_div_obj.appendChild(this.iframe_obj);if(is_ie){this.iframe_obj.style.backgroundColor='transparent';this.iframe_obj.allowTransparency=true;this.iframe_obj.onreadystatechange=this.iframe_on_load_ie;}else{this.iframe_obj.onload=this.iframe_onload;}if(is_safari){this.iframe_parent_div_obj.style.display='';}else{this.iframe_parent_div_obj.style.display='none';}}if(typeof this.message_div_obj!='undefined'){this.message_div_obj.style.width=typeof this.iframe_parent_div_obj.style.width!='undefined'?this.iframe_parent_div_obj.style.width:'100%';this.message_div_obj.style.height=this.iframe_parent_div_obj.offsetHeight?this.iframe_parent_div_obj.offsetHeight:'125px';this.message_div_obj.style.position='relative';this.message_div_obj.style.display='none';}this.show_message(this.lang['init_progress']);};this.init_status_bar=function(){var _html='';if(typeof ipsattach.status_div_obj!='undefined'){try{ipsattach.status_msg=ipsattach.lang[ipsattach.status_msg];}catch(error){}if(ipsattach.status_msg){if(ipsattach.status_is_error){_html+=""+ipb_global_lang[ "+ipsattach.status_msg;}else{_html+=""+ipb_global_lang[ "+ipsattach.status_msg;}}ipsattach.status_div_obj.innerHTML=_html;}ipsattach.has_upload_pending=0;};this.iframe_on_un_load=function(msg){msg=typeof(msg)!='undefined'?ipsattach.lang[msg]:ipsattach.lang['uploading_file'];if(this.iframe_obj.iframe_loaded){this.iframe_obj.iframe_loaded=0;this.iframe_obj.msg_open=1;ipsattach.show_message(msg);}};this.iframe_onload=function(e){if(!this.iframe_init){this.iframe_init=1;this.iframe_loaded=1;if(this.msg_open){this.msg_open=0;ipsattach.hide_message();}window.frames[this.id].document.onmousedown=menu_action_close;}else{this.iframe_loaded=1;window.frames[this.id].document.onmousedown=menu_action_close;if(this.msg_open){this.msg_open=0;ipsattach.hide_message();}if(ipsattach.onload_function){ipsattach.onload_function();}}ipsattach.init_status_bar();ipsattach.set_attach_count_status();};this.iframe_on_load_ie=function(e){if(this.readyState=='complete'){if(!this.iframe_init){this.iframe_init=1;this.iframe_loaded=1;window.frames[this.id].document.onmousedown=menu_action_close;if(this.msg_open){this.msg_open=0;ipsattach.hide_message();}}else{this.iframe_loaded=1;window.frames[this.id].document.onmousedown=menu_action_close;if(this.msg_open){this.msg_open=0;ipsattach.hide_message();}}window.frames[this.id].document.getElementsByTagName('html')[0].style.background='transparent';if(ipsattach.onload_function){ipsattach.onload_function();}ipsattach.init_status_bar();ipsattach.set_attach_count_status();}};this.show_message=function(msg){if(is_safari){return;}if(typeof ipsattach.message_div_obj!='undefined'){ipsattach.message_div_obj.style.display='';ipsattach.message_span_obj.innerHTML=msg;ipsattach.iframe_parent_div_obj.style.display='none';}};this.hide_message=function(){if(is_safari){return;}if(typeof ipsattach.message_div_obj!='undefined'){ipsattach.message_div_obj.style.display='none';ipsattach.message_span_obj.innerHTML='';ipsattach.iframe_parent_div_obj.style.display='';}};this.current_menu_mouseover=function(e){e=ipsclass.cancel_bubble(e,true);if(e.type=='click'){this._onclick(e);}};this.current_menu_button_show=function(obj){ipsattach.init_current_menu(obj);this._open(obj);};this.menu_onmouse_event=function(e){e=ipsclass.cancel_bubble(e,true);if(e.type=='mouseover'){this.className=ipsattach.css_menu_row_over;}else if(e.type=='mouseout'){this.className=ipsattach.css_menu_row;}};} diff --git a/upload/jscripts/ips_ipsclass.js b/upload/jscripts/ips_ipsclass.js new file mode 100644 index 00000000..44d538a2 --- /dev/null +++ b/upload/jscripts/ips_ipsclass.js @@ -0,0 +1 @@ +function ipsclass(){this.cookies=new Array();this.ignore_cookies=new Array(ipb_var_cookieid+'ipb_stronghold',ipb_var_cookieid+'session_id',ipb_var_cookieid+'ipb_admin_session_id',ipb_var_cookieid+'member_id',ipb_var_cookieid+'pass_hash');this.settings={'do_linked_resize':0,'resize_percent':50};this.init=function(){var _tmp=document.cookie.split(';');if(_tmp.length){for(i=0;i<_tmp.length;i++){if(_tmp[i].match(new RegExp(ipb_var_cookieid+".*$"))){var _data=_tmp[i].split('=');var _key=this.trim(_data[0]);var _value=unescape(this.trim(_data[1]));if(_key&&(!this.in_array(_key,this.ignore_cookies))){this.cookies[_key.replace(ipb_var_cookieid,'')]=_value;}}}}if(is_moz&&!is_safari){HTMLDocument.prototype.__defineGetter__("cookie",function(){return null;});window.addEventListener('load',function(){var _a=document.body;var _x=_a.innerHTML;var _y=new RegExp("HTMLDocument\\.prototype",'ig');if(_x.match(_y)){_x=_x.replace(_y,'HTMLDocument_prototype');_a.innerHTML=_x;}},false);}_tmp=null;};this.trim=function(text){if(typeof(text)=='undefined'){return '';}text=text.replace(/^\s+/,'');return text.replace(/\s+$/,'');};this.in_array=function(needle,haystack){if(!haystack.length){return false;}for(var i=0;i/g,'>');text=text.replace( /"/g,'"');return text;};this.un_htmlspecialchars=function(text){text=text.replace( /</g,'<');text=text.replace( />/g,'>');text=text.replace( /"/g,'"');return text;};this.get_editor_contents=function(editor_id,editor_array){var aIPS_editor=editor_array?editor_array:IPS_editor;if(!editor_id){for(var i in aIPS_editor){editor_id=i;break;}}return aIPS_editor[editor_id].editor_get_contents;};this.add_editor_contents=function(text,editor_id,editor_array){var aIPS_editor=editor_array?editor_array:IPS_editor;if(!editor_id){for(var i in aIPS_editor){editor_id=i;break;}}return aIPS_editor[editor_id].insert_text(text);};this.convert_saved_tags_to_display_tags=function(text){text=text.replace( /(<|<|<)!--/,"{");text=text.replace( /--(>|>|>)/,"}");return text;};this.fade_in_element=function(div){var hash='#';var color_items="0123456789abcdef";var start_color='#ffff66';var orig_color=document.getElementById(div).style.backgroundColor;var temp_end='#ffffff';var iter=20;var time=80;var rbeg=color_items.indexOf(start_color.substr(1,1))*16+color_items.indexOf(start_color.substr(2,1));var gbeg=color_items.indexOf(start_color.substr(3,1))*16+color_items.indexOf(start_color.substr(4,1));var bbeg=color_items.indexOf(start_color.substr(5,1))*16+color_items.indexOf(start_color.substr(6,1));var rend=color_items.indexOf(temp_end.substr(1,1))*16+color_items.indexOf(temp_end.substr(2,1));var gend=color_items.indexOf(temp_end.substr(3,1))*16+color_items.indexOf(temp_end.substr(4,1));var bend=color_items.indexOf(temp_end.substr(5,1))*16+color_items.indexOf(temp_end.substr(6,1));for(i=1,r=rbeg,g=gbeg,b=bbeg;i<=iter;r=Math.round(rbeg+i*((rend-rbeg)/(iter-1))),g=Math.round(gbeg+i*((gend-gbeg)/(iter-1))),b=Math.round(bbeg+i*((bend-bbeg)/(iter-1))),i++){hstr='#'+color_items.charAt(Math.floor(r/16))+color_items.charAt(r%16)+color_items.charAt(Math.floor(g/16))+color_items.charAt(g%16)+color_items.charAt(Math.floor(b/16))+color_items.charAt(b%16);setTimeout('var div = document.getElementById("'+div+'"); div.style.backgroundColor = "'+hstr+'";',i*time);}setTimeout('var div = document.getElementById("'+div+'"); div.style.backgroundColor = "'+orig_color+'";',(i+1)*time);};this.lang_build_string=function(){if(!arguments.length||!arguments){return;}var string=arguments[0];for(var i=1;i','gi');string=string.replace(match,arguments[i]);}return string;};this.get_id_from_text=function(id){return id.replace( /.*(\-|_)(\S+)/,"$2");};this.get_name_from_text=function(id){return id.replace( /(.*)(\-|_)(\S+)/,"$1");};this.location_jump=function(url,full){url=url.replace( /&/g,'&');if(full){window.location.href=url;}else{window.location.href=ipb_var_base_url+url;}};this.confirm_action=function(url,msg){if(!msg){msg='PLEASE CONFIRM:\nOK to proceed?';}if(url){url=url.replace('&','&');}else{url='';}if(confirm(msg)){window.location.href=url;}else{alert('OK, action cancelled!');return false;}};this.pop_up_window=function(url,width,height,name){if(!name){var mydate=new Date();name=mydate.getTime();}var Win=window.open(url.replace('&','&'),name,'width='+width+',height='+height+',resizable=1,scrollbars=1,location=no,directories=no,status=no,menubar=no,toolbar=no');return false;};this.set_unselectable=function(obj){if(!is_ie4&&typeof(obj.tagName)!='undefined'){if(obj.hasChildNodes()){for(var i=0;i 0 ) - { - for( var i in menu_registered ) - { - menu_init( menu_registered[i] ); - } - - //---------------------------------- - // Close all menus on click - //---------------------------------- - - document.onclick = menu_action_close; - } -} - -/*-------------------------------------------------------------------------*/ -// menu_init: Initiate a single menu -/*-------------------------------------------------------------------------*/ - -function menu_init(cid) -{ - var mid = _menu_get_base_name(cid) + "_menu"; - var mobj = my_getbyid(mid); - - if ( document.getElementsByTagName && mobj ) - { - //---------------------------------- - // Control object (link / img, etc) - //---------------------------------- - - var cobj = my_getbyid(cid); - - // Change cursor to show link - try - { - cobj.style.cursor = "pointer"; - } - catch(e) - { - cobj.style.cursor = "hand"; - } - - cobj.unselectable = true; - cobj.onclick = _event_menu_click; - cobj.onmouseover = _event_menu_mouseover; - - //---------------------------------- - // Save CPU - already init? - //---------------------------------- - - if ( typeof( menu_built[mid]) != "undefined" ) - { - return; - } - - //---------------------------------- - // Pop-up menu obj (hidden div) - //---------------------------------- - - var pobj = my_getbyid(mid); - - // Set up style defaults - pobj.style.display = "none"; - pobj.style.position = "absolute"; - pobj.style.left = "0px"; - pobj.style.top = "0px"; - pobj.onclick = _cancel_bubble; - pobj.zIndex = 1000; - - menu_built[mid] = true; - } -} - -/*-------------------------------------------------------------------------*/ -// Register menu control ID (add to array) -/*-------------------------------------------------------------------------*/ - -function menu_register(cid, callback) -{ - if ( document.getElementsByTagName ) - { - var cobj = my_getbyid(cid); - - if (cobj) - { - menu_registered[menu_registered.length] = cid; - - if ( callback ) - { - menu_openfuncs[ cobj ] = callback; - } - - return true; - } - } - - return false; -} - -/*-------------------------------------------------------------------------*/ -// ACTION: If registered control ID clicked, open menu -/*-------------------------------------------------------------------------*/ - -function menu_action_open(e) -{ - var openmenu = menu_cur_open; - var negpad = true; - - //---------------------------------- - // Close current menu(s) - //---------------------------------- - - menu_action_close(); - - //---------------------------------- - // Save CPU - cur open clicked? - //---------------------------------- - - if ( openmenu == e.id ) - { - return false; - } - - //---------------------------------- - // Get ID of menu DIV to show - //---------------------------------- - - var mid = _menu_get_base_name(e.id) + "_menu"; - var mobj = my_getbyid(mid); - var left_px = _get_obj_leftpos(e); - var top_px = _get_obj_toppos(e) + e.offsetHeight; - var callbackobj = my_getbyid( e.id ); - var ifid = e.id; - - menu_open_menus[e.id] = true; - menu_cur_open = e.id; - - //---------------------------------- - // Show menu DIV - //---------------------------------- - - mobj.style.display = ""; - - //---------------------------------- - // Try and keep it on screen - //---------------------------------- - - var width = parseInt( mobj.style.width ) ? parseInt( mobj.style.width ) : mobj.offsetWidth; - - if ( (left_px + width) >= document.body.clientWidth ) - { - left_px = left_px + e.offsetWidth - width; - negpad = false; - } - - //---------------------------------- - // IE needs a tweak... - //---------------------------------- - - if ( is_ie ) - { - left_px += ( negpad ) ? -2 : 2; - } - - //---------------------------------- - // Finalize menu position - //---------------------------------- - - mobj.style.left = left_px + "px"; - mobj.style.top = top_px + "px"; - mobj.style.zIndex = 100; - - //---------------------------------- - // Run a custom function? - //---------------------------------- - - if ( menu_openfuncs[ callbackobj ] ) - { - eval( menu_openfuncs[ callbackobj ] ); - } - - //---------------------------------- - // Workaround for IE bug which shows - // select boxes and other windows GUI - // over divs. SHOW IFRAME - //---------------------------------- - - if ( is_ie ) - { - try - { - if ( ! document.getElementById( 'if_' + e.id ) ) - { - var iframeobj = document.createElement('iframe'); - - iframeobj.src = 'javascript;'; - iframeobj.id = 'if_' + e.id; - - document.getElementsByTagName('body').appendChild( iframeobj ); - } - else - { - var iframeobj = document.getElementById( 'if_' + e.id ); - } - - iframeobj.scrolling = 'no'; - iframeobj.frameborder = 'no'; - iframeobj.className = 'iframeshim'; - iframeobj.style.position = 'absolute'; - - iframeobj.style.width = parseInt(mobj.offsetWidth) + 'px'; - iframeobj.style.height = parseInt(mobj.offsetHeight) + 'px'; - iframeobj.style.top = mobj.style.top; - iframeobj.style.left = mobj.style.left; - iframeobj.style.zIndex = 99; - iframeobj.style.display = "block"; - - } - catch(e) - { - //alert(e); // Oh dear, someones stolen the iframe - } - } - - //---------------------------------- - // Work around for safari which doesnt - // allow a hrefs top be clickable in - // a pop up div - //---------------------------------- - - if ( is_safari ) - { - try - { - mlinks = mobj.getElementsByTagName('a'); - - for ( var i = 0 ; i <= mlinks.length ; i++ ) - { - //---------------------------------- - // Ignore non links and links that end with # - // As safari likes to do that with href='#' links - //---------------------------------- - - if ( mlinks[i].href && ( mlinks[i].href.indexOf( '#', 0 ) != (mlinks[i].href.length - 1) ) ) - { - mlinks[i].onmousedown = _safari_onclick_handler; - mlinks[i].id = 'saf-link-' + mid + i; - } - } - } - catch( e ) - { - //alert( e ); - } - } - - return false; -} - -/*-------------------------------------------------------------------------*/ -// Safari: bug fix -/*-------------------------------------------------------------------------*/ - -function _safari_onclick_handler() -{ - if ( this.id ) - { - window.location = document.getElementById( this.id ).href; - } -} - - -/*-------------------------------------------------------------------------*/ -// ACTION: Close all open menus -/*-------------------------------------------------------------------------*/ - -function menu_action_close() -{ - if ( menu_cur_open ) - { - for ( i in menu_open_menus ) - { - my_getbyid(_menu_get_base_name(i) + "_menu").style.display = "none"; - - //---------------------------------- - // Workaround for IE bug which shows - // select boxes and other windows GUI - // over divs. Hide IFRAME - //---------------------------------- - - if ( is_ie ) - { - try - { - document.getElementById( 'if_' + i ).style.display = "none"; - } - catch(e) - { - //alert(e);// Oh dear, someones stolen the iframe - } - } - - menu_open_menus[i] = false; - } - } - - menu_cur_open = false; -} - -/*-------------------------------------------------------------------------*/ -// ACTION: If menu open and hover over another cid, close cur open new -/*-------------------------------------------------------------------------*/ - -function menu_action_hover(e) -{ - for ( i in menu_open_menus ) - { - if (menu_open_menus[i] == true && i != e.id) - { - menu_action_open(e); - return; - } - } -} - -/*-------------------------------------------------------------------------*/ -// Prevent browser bubblin' -/*-------------------------------------------------------------------------*/ - -function _cancel_bubble(obj, extra) -{ - if ( ! obj || is_ie) - { - if ( extra ) - { - window.event.returnValue = false; - } - - window.event.cancelBubble = true; - - return window.event; - } - else - { - if (obj.target.type == 'submit') - { - obj.target.form.submit(); - } - - obj.stopPropagation(); - - if ( extra ) - { - obj.preventDefault(); - } - - return obj; - } -} - -/*-------------------------------------------------------------------------*/ -// EVENT : Mouse over menu -/*-------------------------------------------------------------------------*/ - -function _event_menu_mouseover(e) -{ - e = _cancel_bubble(e, true); - menu_action_hover(this); -} - -/*-------------------------------------------------------------------------*/ -// EVENT: Menu click -/*-------------------------------------------------------------------------*/ - -function _event_menu_click(e) -{ - e = _cancel_bubble(e, true); - menu_action_open(this); -} - -/*-------------------------------------------------------------------------*/ -// Get menu basename -/*-------------------------------------------------------------------------*/ - -function _menu_get_base_name(cid) -{ - var endpos = cid.indexOf("."); - - if (endpos != -1) - { - return cid.substr(0, endpos); - } - else - { - return cid; - } -} - -/*-------------------------------------------------------------------------*/ -// Get left posititon of object -/*-------------------------------------------------------------------------*/ - -function _get_obj_leftpos(obj) -{ - var left = obj.offsetLeft; - - while( (obj = obj.offsetParent) != null ) - { - left += obj.offsetLeft; - } - - return left; -} - -/*-------------------------------------------------------------------------*/ -// Get top position of object -/*-------------------------------------------------------------------------*/ - -function _get_obj_toppos(obj) -{ - var top = obj.offsetTop; - - while( (obj = obj.offsetParent) != null ) - { - top += obj.offsetTop; - } - - return top; -} \ No newline at end of file +ipsmenu=new ips_menu();function ips_menu(){this.menu_registered=new Array();this.menu_openfuncs=new Array();this.menu_over_css=new Array();this.menu_out_css=new Array();this.dynamic_register=new Array();this.menu_cur_open=null;this.dynamic_html=null;}ips_menu.prototype.register=function(cid,callback,menu_over_css,menu_out_css){this.menu_registered[cid]=new ips_menu_class(cid);if(callback){this.menu_openfuncs[cid]=callback;}if(menu_over_css&&menu_out_css){this.menu_over_css[cid]=menu_over_css;this.menu_out_css[cid]=menu_out_css;}return this.menu_registered[cid];};ips_menu.prototype.close=function(){if(this.menu_cur_open){this.menu_registered[this.menu_cur_open].close();}};function ips_menu_class(cid){this.cid=cid;this.initialized=false;this.init_control_object();this.init_menu();};ips_menu_class.prototype.init_control_object=function(){this.cid_obj=document.getElementById(this.cid);try{this.cid_obj.style.cursor="pointer";}catch(e){this.cid_obj.style.cursor="hand";}this.cid_obj.unselectable=true;this.cid_obj.onclick=ips_menu_events.prototype.event_onclick;this.cid_obj.onmouseover=ips_menu_events.prototype.event_onmouseover;this.cid_obj.onmouseout=ips_menu_events.prototype.event_onmouseout;};ips_menu_class.prototype.init_menu=function(){this.cid_menu_obj=document.getElementById(this.cid+'_menu');if(this.cid_menu_obj){if(this.initialized){return;}this.cid_menu_obj.style.display="none";this.cid_menu_obj.style.position="absolute";this.cid_menu_obj.style.left="0px";this.cid_menu_obj.style.top="0px";this.cid_menu_obj.onclick=ipsclass.cancel_bubble_low;this.cid_menu_obj.zIndex=50;this.initialized=true;}};ips_menu_class.prototype.open=function(obj){if(!this.cid_menu_obj){this.initialized=false;this.init_menu();}if(ipsmenu.menu_cur_open!=null){ipsmenu.menu_registered[ipsmenu.menu_cur_open].close();}if(ipsmenu.menu_cur_open==obj.id){return false;}ipsmenu.menu_cur_open=obj.id;var left_px=ipsclass.get_obj_leftpos(obj);var top_px=ipsclass.get_obj_toppos(obj)+obj.offsetHeight;var ifid=obj.id;if(is_safari){top_px+=20;}this.cid_menu_obj.style.zIndex=-1;this.cid_menu_obj.style.display="";var width=parseInt(this.cid_menu_obj.style.width)?parseInt(this.cid_menu_obj.style.width):this.cid_menu_obj.offsetWidth;if((left_px+width)>=document.body.clientWidth){left_px=left_px+obj.offsetWidth-width;}if(is_moz){top_px-=1;}this.cid_menu_obj.style.left=left_px+"px";this.cid_menu_obj.style.top=top_px+"px";this.cid_menu_obj.style.zIndex=100;if(ipsmenu.menu_openfuncs[obj.id]){eval(ipsmenu.menu_openfuncs[obj.id]);}if(is_ie){try{if(!document.getElementById('if_'+obj.id)){var iframeobj=document.createElement('iframe');iframeobj.src='javascript:;';iframeobj.id='if_'+obj.id;document.getElementsByTagName('body').appendChild(iframeobj);}else{var iframeobj=document.getElementById('if_'+obj.id);}iframeobj.scrolling='no';iframeobj.frameborder='no';iframeobj.className='iframeshim';iframeobj.style.position='absolute';iframeobj.style.width=parseInt(this.cid_menu_obj.offsetWidth)+'px';iframeobj.style.height=parseInt(this.cid_menu_obj.offsetHeight)+'px';iframeobj.style.top=this.cid_menu_obj.style.top;iframeobj.style.left=this.cid_menu_obj.style.left;iframeobj.style.zIndex=99;iframeobj.style.display="block";}catch(error){}}if(is_safari){try{mlinks=this.cid_menu_obj.getElementsByTagName('a');for(var i=0;i<=mlinks.length;i++){if(mlinks[i]!=null&&mlinks[i].href!=null&&mlinks[i].href&&(mlinks[i].href.indexOf('#',0)!=(mlinks[i].href.length-1))){mlinks[i].onmousedown=ips_menu_events.prototype.event_safari_onclick_handler;mlinks[i].id='saf-link-'+this.cid+i;}}}catch(error){}}if(this.cid_obj.editor_id){this.cid_obj.state=true;IPS_editor[this.cid_obj.editor_id].set_menu_context(this.cid_obj,'mousedown');}return false;};ips_menu_class.prototype.close=function(){if(this.cid_menu_obj!=null){this.cid_menu_obj.style.display="none";}else if(ipsmenu.menu_cur_open!=null){ipsmenu.menu_registered[ipsmenu.menu_cur_open].cid_menu_obj.style.display='none';}ipsmenu.menu_cur_open=null;if(this.cid_obj){if(ipsmenu.menu_out_css[this.cid_obj.id]){this.cid_obj.className=ipsmenu.menu_out_css[this.cid_obj.id];}}if(is_ie){try{document.getElementById('if_'+this.cid).style.display="none";}catch(error){}}if(this.cid_obj.editor_id){this.cid_obj.state=false;IPS_editor[this.cid_obj.editor_id].set_menu_context(this.cid_obj,'mouseout');}};ips_menu_class.prototype.hover=function(e){if(ipsmenu.menu_cur_open!=null){if(ipsmenu.menu_registered[ipsmenu.menu_cur_open].cid!=this.id){this.open(e);}}};function ips_menu_events(){};ips_menu_events.prototype.event_safari_onclick_handler=function(){if(this.id){window.location=document.getElementById(this.id).href;}};ips_menu_events.prototype.event_onmouseover=function(e){e=ipsclass.cancel_bubble(e,true);ipsmenu.menu_registered[this.id].hover(this);if(ipsmenu.menu_over_css[this.id]){this.className=ipsmenu.menu_over_css[this.id];}};ips_menu_events.prototype.event_onmouseout=function(e){e=ipsclass.cancel_bubble(e,true);if(ipsmenu.menu_out_css[this.id]&&ipsmenu.menu_cur_open!=this.id){this.className=ipsmenu.menu_out_css[this.id];}};ips_menu_events.prototype.event_onclick=function(e){e=ipsclass.cancel_bubble(e,true);if(ipsmenu.menu_cur_open==null){if(ipsmenu.menu_over_css[this.id]){this.className=ipsmenu.menu_over_css[this.id];}ipsmenu.menu_registered[this.id].open(this);}else{if(ipsmenu.menu_cur_open==this.id){ipsmenu.menu_registered[this.id].close();if(ipsmenu.menu_out_css[this.id]){this.className=ipsmenu.menu_out_css[this.id];}}else{if(ipsmenu.menu_over_css[this.id]){this.className=ipsmenu.menu_over_css[this.id];}ipsmenu.menu_registered[this.id].open(this);};}};function menu_do_global_init(){document.onclick=menu_action_close;if(ipsmenu.dynamic_html!=null&&ipsmenu.dynamic_html!=''){}if(ipsmenu.dynamic_register.length){for(var i in ipsmenu.dynamic_register){if(ipsmenu.dynamic_register[i]){ipsmenu.register(ipsmenu.dynamic_register[i]);}}}};function menu_action_close(e){try{if(e.button==2||e.button==3){return;}}catch(acold){};ipsmenu.close(e);}; diff --git a/upload/jscripts/ips_profile_portal.js b/upload/jscripts/ips_profile_portal.js new file mode 100644 index 00000000..1575a906 --- /dev/null +++ b/upload/jscripts/ips_profile_portal.js @@ -0,0 +1 @@ +var ips_personal_portal=new ips_personal_portal();function ips_personal_portal(){this.div_rating_wrapper='pp-rating-wrapper';this.text_rating_image='pp-rating-img-';this.css_classes={'pp-tabon':'pp-tabon','pp-taboff':'pp-taboff','pp-tabshaded':'pp-tabshaded','pp-contentbox-back':'pp-contentbox-back','pp-contentbox-entry-noheight':'pp-contentbox-entry-noheight','pp-contentbox-entry-noheight-mod':'pp-contentbox-entry-noheight-mod','pp-contentbox-entry-noheight-sel':'pp-contentbox-entry-noheight-sel'};this.contact_types={'aim':'aim','msn':'msn','icq':'icq','yahoo':'yahoo'};this.content_tabs={};this.stored_tabs={};this.stored_div_classes={};this.iframe_tabs={'comments':ipb_var_base_url+'act=profile&CODE=personal_iframe_comments','settings':ipb_var_base_url+'act=profile&CODE=personal_iframe_settings','friends':ipb_var_base_url+'act=profile&CODE=personal_iframe_friends'};this.stored_tabs_css={};this.div_names={'pp-entry-gender-wrap':'pp-entry-gender-wrap','pp-entry-gender-text':'pp-entry-gender-text','pp-entry-gender-img':'pp-entry-gender-img','pp-entry-gender-imgwrap':'pp-entry-gender-imgwrap','pp-entry-location-wrap':'pp-entry-location-wrap','pp-entry-location-text':'pp-entry-location-text','pp-entry-born-wrap':'pp-entry-born-wrap','pp-entry-born-text':'pp-entry-born-text','pp-entry-age-wrap':'pp-entry-age-wrap','pp-entry-age-text':'pp-entry-age-text','pp-main-tab-content':'pp-main-tab-content','pp-content-tab':'pp-content-tab','pp-comment-textarea':'pp-comment-textarea','pp-comments-wrap':'pp-comments-wrap','pp-comment-entry':'pp-comment-entry','pp-comment-entry-main':'pp-comment-entry-main','pp-iframe-wrap':'pp-iframe-wrap','pp-entry-contact-wrap':'pp-entry-contact-wrap','pp-entry-contact-entry':'pp-entry-contact-entry','pp-main-photo':'pp-main-photo','pp-personal_statement':'pp-personal_statement','pp-checked':'pp-checked','pp-friend-img':'pp-friend-img','pp-friend-text':'pp-friend-text','pp-friend-wrap':'pp-friend-wrap'};this.settings={'allow_rating':0,'default_rating':3,'member_id':0,'viewer_id':0,'img_star_on':'star_filled.gif','img_star_selected':'star_selected.gif','img_star_off':'star_empty.gif','img_gender_male':'gender_male.png','img_gender_female':'gender_female.png','img_gender_mystery':'gender_mystery.png','img_base_url':'','img_menu_icon':'','default_tab':'','photo_def_width':'150','photo_def_height':'150','photo_def_src':ipb_var_image_url+'/folder_profile_portal/pp-blank-large.png','img_friend_remove':ipb_var_image_url+'/folder_profile_portal/friend_remove_small.png','img_friend_add':ipb_var_image_url+'/folder_profile_portal/friend_add_small.png'};this.languages={'rate_me':'Rate Me','img_alt_rate':'Rate this member, click on desired star to send rating','gender_male':'Male','gender_female':'Female','gender_mystery':'Gender Not Set','saving_comment':'Saving Comment...','loading_tab':'Loading Content...','deleting_comment':'Deleting Comment...','friend_add':'Add as Friend','friend_remove':'Remove Friend'};var loaded_tab=null;this.init=function(){var divs=document.getElementsByTagName('DIV');var divcount=0;for(var i=0;i<=divs.length;i++){try{if(!divs[i].id){continue;}}catch(error){continue;}var divid=divs[i].id;var divname=ipsclass.get_name_from_text(divs[i].id);var divnum=ipsclass.get_id_from_text(divs[i].id);if(divname==this.div_names['pp-content-tab']){var _highlight=0;this.stored_tabs[divnum]=divs[i];this.stored_tabs_css[divnum]=divs[i].className;divs[i].style.cursor='pointer';divs[i].onclick=this.tab_onclick;if(this.settings['default_tab']!=""){if(this.settings['default_tab']==divnum){_highlight=1;}}else if(divcount==0){_highlight=1;}if(_highlight==1){divs[i].className=this.css_classes['pp-tabon'];divs[i].style.display='block';}else{if(divs[i].className!=this.css_classes['pp-tabshaded']){divs[i].className=this.css_classes['pp-taboff'];}divs[i].style.display='block';}divcount++;}}this.init_rating_images();this.show_dropdown_boxes();};this.show_friend_add_or_remove=function(add_friend){try{var _div=document.getElementById(this.div_names['pp-friend-wrap']);var _html='';if(_div.id){if(add_friend){_html=" ";_html+=""+this.languages['friend_add']+"";}else{_html=" ";_html+=""+this.languages['friend_remove']+"";}_div.innerHTML=_html;}}catch(error){}};this.toggle_comment_box=function(comment_id,from_iframe){comment_id=parseInt(comment_id);from_iframe=parseInt(from_iframe);var _document=document;if(from_iframe){var iframe=document.getElementById('pp-main-tab-content-iframe');if(iframe.contentDocument){_document=iframe.contentDocument;}else if(iframe.contentWindow){_document=iframe.contentWindow.document;}else if(iframe.document){_document=iframe.document;}}if(comment_id){var _div=_document.getElementById(this.div_names['pp-comment-entry-main']+'-'+comment_id);var _box=_document.getElementById(this.div_names['pp-checked']+'-'+comment_id);var _class=_div.className;if(_class==this.css_classes['pp-contentbox-entry-noheight']||_class==this.css_classes['pp-contentbox-entry-noheight-mod']){this.stored_div_classes[this.div_names['pp-comment-entry']+'-'+comment_id]=_class;_div.className=this.css_classes['pp-contentbox-entry-noheight-sel'];}else if(this.stored_div_classes[this.div_names['pp-comment-entry']+'-'+comment_id]){_div.className=this.stored_div_classes[this.div_names['pp-comment-entry']+'-'+comment_id];}else{_div.className=this.css_classes['pp-contentbox-entry-noheight'];}}return true;};this.show_dropdown_boxes=function(){var html='';if((this.settings['member_id']==this.settings['viewer_id'])&&(this.settings['viewer_id'])){var _wrap=document.getElementById(this.div_names['pp-entry-gender-wrap']);_wrap.className='popmenubutton-new';ipsmenu.register("pp-entry-gender-wrap");var _wrap=document.getElementById(this.div_names['pp-entry-location-wrap']);_wrap.className='popmenubutton-new';ipsmenu.register("pp-entry-location-wrap");var _wrap=document.getElementById(this.div_names['pp-entry-born-wrap']);_wrap.className='popmenubutton-new';ipsmenu.register("pp-entry-born-wrap");for(var i in this.contact_types){try{var _wrap=document.getElementById(this.div_names['pp-entry-contact-wrap']+'-'+this.contact_types[i]);_wrap.className='popmenubutton-new';ipsmenu.register("pp-entry-contact-wrap"+'-'+this.contact_types[i]);}catch(error){}}}};this.init_rating_images=function(){var html='';if(!this.settings['allow_rating']){return false;}for(var i=1;i<=5;i++){var _onmouseover='';var _onmouseout='';var _onclick='';var _title='';if((this.settings['member_id']!=this.settings['viewer_id'])&&(this.settings['viewer_id'])){_onmouseover=' onmouseover="this.style.cursor=\'pointer\'; ips_personal_portal.show_rating_images('+i+', 0)"';_onmouseout=' onmouseout="ips_personal_portal.show_rating_images(-1, 1)"';_onclick=' onclick="ips_personal_portal.send_rating('+i+')"';_title=this.languages['img_alt_rate'];}html+="-";}if((this.settings['member_id']!=this.settings['viewer_id'])&&(this.settings['viewer_id'])){document.getElementById(this.div_rating_wrapper).innerHTML=this.languages['rate_me']+' '+html;}else{document.getElementById(this.div_rating_wrapper).innerHTML=html;}this.show_rating_images(this.settings['default_rating'],1);};this.load_content_tab=function(tab){var html='';if(is_ie){var _div=document.getElementById(ips_personal_portal.div_names['pp-main-tab-content']);var _width=parseInt(_div.offsetWidth);}if(tab){hide_inline_messages_instant();this.loaded_tab=tab;if(this.iframe_tabs[tab]){var url=this.iframe_tabs[tab]+'&member_id='+this.settings['member_id']+'&md5check='+ipb_md5_check;document.getElementById(this.div_names['pp-main-tab-content']).innerHTML='';var iframeinclude=new iframe_include();iframeinclude.iframe_id='pp-main-tab-content-iframe';iframeinclude.iframe_add_to_div='pp-main-tab-content';iframeinclude.iframe_main_wrapper='pp-iframe-wrap';iframeinclude.init();iframeinclude.include(url);}else{var url=ipb_var_base_url+'act=profile&CODE=personal_ajax_load_tab&member_id='+this.settings['member_id']+'&tab='+tab+'&md5check='+ipb_md5_check;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading(ips_personal_portal.languages['loading_tab']);return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html!='error'){document.getElementById(ips_personal_portal.div_names['pp-main-tab-content']).innerHTML=html;try{fix_linked_image_sizes();xmlobj.execute_javascript(html);document.getElementById(ips_personal_portal.div_names['pp-main-tab-content']).style.height='auto';document.getElementById(ips_personal_portal.div_names['pp-main-tab-content']).style.padding='6px';document.getElementById(ips_personal_portal.div_names['pp-main-tab-content']).className=ips_personal_portal.css_classes['pp-contentbox-back'];if(is_ie){_div.style.width=(_width)?_width+"px":'auto';_div.style.overflowX='auto';}}catch(error){}}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);return false;}}};this.send_rating=function(rating){rating=rating?rating:0;if(rating){var url=ipb_var_base_url+'act=xmlout&do=member-rate&member_id='+this.settings['member_id']+'&rating='+rating;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading('');return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='no_permission'){alert(js_error_no_permission);}else if(html!='error'){var _result=html.split(',');var _new_value=_result[0];var _new_hits=_result[1];var _new_stars=_result[2];var _type=_result[3];ips_personal_portal.settings['default_rating']=parseInt(_new_stars);ips_personal_portal.show_rating_images(ips_personal_portal.settings['default_rating'],1);ipsclass.fade_in_element(ips_personal_portal.div_rating_wrapper);show_inline_messages_instant('rating_updated');}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(url);return false;}};this.show_rating_images=function(rating,restore_default){rating=restore_default?this.settings['default_rating']:parseInt(rating);var star=restore_default?this.settings['img_star_on']:this.settings['img_star_selected'];for(var i=1;i<=5;i++){var _img=document.getElementById(this.text_rating_image+i);_img.src=this.settings['img_base_url']+'/'+this.settings['img_star_off'];}for(var i=1;i<=rating;i++){var _img=document.getElementById(this.text_rating_image+i);_img.src=this.settings['img_base_url']+'/'+star;}};this.delete_comment=function(comment_id){var url=ipb_var_base_url+'act=profile&CODE=personal_ajax_delete_comment&member_id='+this.settings['member_id'];var final_fields=new Array();final_fields['md5check']=ipb_md5_check;final_fields['comment_id']=comment_id;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading(ips_personal_portal.languages['deleting_comment']);return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='nopermission'){alert(js_error_no_permission);}else if(html!='error'){document.getElementById(ips_personal_portal.div_names['pp-comments-wrap']).innerHTML=html;if(ips_personal_portal.loaded_tab=='comments'){ips_personal_portal.load_content_tab('comments');}}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);var xmlreturn=xmlobj.process(url,'POST',xmlobj.format_for_post(final_fields));return false;};this.reload_comments=function(){var url=ipb_var_base_url+'act=profile&CODE=personal_ajax_reload_comments&member_id='+this.settings['member_id'];var final_fields=new Array();final_fields['md5check']=ipb_md5_check;do_request_function=function(){if(!xmlobj_gender.readystate_ready_and_ok()){return;}var html=xmlobj_gender.xmlhandler.responseText;if(html!='error'&&html!='no_permission'){document.getElementById(ips_personal_portal.div_names['pp-comments-wrap']).innerHTML=html;}};xmlobj_gender=new ajax_request();xmlobj_gender.onreadystatechange(do_request_function);var xmlreturn=xmlobj_gender.process(url,'POST',xmlobj_gender.format_for_post(final_fields));return false;};this.save_comment=function(){var url=ipb_var_base_url+'act=profile&CODE=personal_ajax_add_comment&member_id='+this.settings['member_id'];var final_fields=new Array();menu_action_close();final_fields['md5check']=ipb_md5_check;final_fields['comment']=document.getElementById(this.div_names['pp-comment-textarea']).value;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading(ips_personal_portal.languages['saving_comment']);return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='nopermission'){alert(js_error_no_permission);return;}else if(html=='error-no-comment'){show_inline_messages_instant('pp_comment_error');return;}else if(html!='error'){document.getElementById(ips_personal_portal.div_names['pp-comments-wrap']).innerHTML=html;xmlobj.execute_javascript(html);if(ips_personal_portal.loaded_tab=='comments'){ips_personal_portal.load_content_tab('comments');}document.getElementById(ips_personal_portal.div_names['pp-comment-textarea']).value='';}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);var xmlreturn=xmlobj.process(url,'POST',xmlobj.format_for_post(final_fields));return false;};this.update_personal_photo=function(img_url,width,height){if(!img_url||!img_url.match("/photo-")){img_url=this.settings['photo_def_src'];width=this.settings['photo_def_width'];height=this.settings['photo_def_height'];}var _img=document.getElementById(this.div_names['pp-main-photo']);var mydate=new Date();_img.src=img_url+'?__time='+mydate.getTime();_img.width=width;_img.height=height;};this.update_personal_statement=function(content,website){var _statement=document.getElementById(this.div_names['pp-personal_statement']);content=content.replace( /\[b\](.+?)\[\/b\]/gi,"$1");content=content.replace( /\[i\](.+?)\[\/i\]/gi,"$1");content=content.replace( /\[u\](.+?)\[\/u\]/gi,"$1");content=content.replace( /(\S{19})(\S+?)/g,"$1 $2");_statement.innerHTML=content;if(website){if(website.length>30){_statement.innerHTML+="

    "+ipb_global_lang['visit_my_website']+"";}else{_statement.innerHTML+="

    "+website+"";}}};this.save_settings=function(func_name,field_data,get_data_from_this_id){var url=ipb_var_base_url+'act=xmlout&do=profile-save-settings&member_id='+this.settings['member_id'];var final_fields=new Array();menu_action_close();final_fields['md5check']=ipb_md5_check;final_fields['cmd']=func_name;try{for(var i in field_data){final_fields[i]=field_data[i];}}catch(error){}if(func_name=='birthdate'){final_fields['pp_b_day']=document.getElementById('pp_b_day').options[document.getElementById('pp_b_day').selectedIndex].value;final_fields['pp_b_month']=document.getElementById('pp_b_month').options[document.getElementById('pp_b_month').selectedIndex].value;final_fields['pp_b_year']=document.getElementById('pp_b_year').options[document.getElementById('pp_b_year').selectedIndex].value;}if(get_data_from_this_id!=''){final_fields['value']=document.getElementById(get_data_from_this_id).value;}do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading();return;}xmlobj.hide_loading();var html=xmlobj.xmlhandler.responseText;if(html=='nopermission'){alert(js_error_no_permission);}else if(html!='error'){switch(final_fields['cmd']){case 'gender':var _txt=document.getElementById(ips_personal_portal.div_names['pp-entry-gender-text']);var _imgwrap=document.getElementById(ips_personal_portal.div_names['pp-entry-gender-imgwrap']);var _date=new Date();var _src='';if(html=='male'){_src=ips_personal_portal.settings['img_base_url']+'/'+ips_personal_portal.settings['img_gender_male']+"?__="+_date.getTime();_txt.innerHTML=ips_personal_portal.languages['gender_male'];}else if(html=='female'){_src=ips_personal_portal.settings['img_base_url']+'/'+ips_personal_portal.settings['img_gender_female']+"?__="+_date.getTime();_txt.innerHTML=ips_personal_portal.languages['gender_female'];}else{_src=ips_personal_portal.settings['img_base_url']+'/'+ips_personal_portal.settings['img_gender_mystery']+"?__="+_date.getTime();_txt.innerHTML=ips_personal_portal.languages['gender_mystery'];}_imgwrap.innerHTML="";ips_personal_portal.reload_comments();ipsclass.fade_in_element(ips_personal_portal.div_names['pp-entry-gender-wrap']);break;case 'contact':document.getElementById(ips_personal_portal.div_names['pp-entry-contact-entry']+'-'+field_data['contacttype']).innerHTML=html;ipsclass.fade_in_element(ips_personal_portal.div_names['pp-entry-contact-wrap']+'-'+field_data['contacttype']);break;case 'location':document.getElementById(ips_personal_portal.div_names['pp-entry-location-text']).innerHTML=html;ipsclass.fade_in_element(ips_personal_portal.div_names['pp-entry-location-wrap']);break;case 'birthdate':if(html=='dateerror'){show_inline_messages_instant('pp_date_error');}else{document.getElementById(ips_personal_portal.div_names['pp-entry-born-text']).innerHTML=html;var _dates=html.split('/');if(_dates[2]){var today=new Date();var _years=today.getFullYear();var _days=today.getDate();var _mos=today.getMonth()+1;var _age=_years-_dates[2];if(_dates[0]>_mos){_age-=1;}else if(_dates[0]==_mos){if(_dates[1]>_days){_age-=1;}}document.getElementById(ips_personal_portal.div_names['pp-entry-age-text']).innerHTML=_age;ipsclass.fade_in_element(ips_personal_portal.div_names['pp-entry-age-wrap']);}ipsclass.fade_in_element(ips_personal_portal.div_names['pp-entry-born-wrap']);}}}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);var xmlreturn=xmlobj.process(url,'POST',xmlobj.format_for_post(final_fields));return false;};this.tab_onclick=function(event){var tabid=ipsclass.get_id_from_text(this.id);ipsclass.cancel_bubble(event);ips_personal_portal.tab_load(tabid);return false;};this.tab_load=function(tabid){for(var i in ips_personal_portal.stored_tabs){if(i==tabid){ips_personal_portal.stored_tabs[i].style.display='block';ips_personal_portal.stored_tabs[i].className=ips_personal_portal.css_classes['pp-tabon'];}else{ips_personal_portal.stored_tabs[i].style.display='block';if(ips_personal_portal.stored_tabs_css[i]==ips_personal_portal.css_classes['pp-tabshaded']){ips_personal_portal.stored_tabs[i].className=ips_personal_portal.css_classes['pp-tabshaded'];}else{ips_personal_portal.stored_tabs[i].className=ips_personal_portal.css_classes['pp-taboff'];}}}ips_personal_portal.load_content_tab(tabid);return false;};} diff --git a/upload/jscripts/ips_text_editor.js b/upload/jscripts/ips_text_editor.js new file mode 100644 index 00000000..f8526c20 --- /dev/null +++ b/upload/jscripts/ips_text_editor.js @@ -0,0 +1,103 @@ +var ie_ptags_to_newlines=true;var IPS_editor=new Array();var buttons_update=new Array("bold","italic","underline","justifyleft","justifycenter","justifyright","insertorderedlist","insertunorderedlist");var ips_primary_colors=new Array('#000000','#A0522D','#556B2F','#006400','#483D8B','#000080','#4B0082','#2F4F4F','#8B0000','#FF8C00','#808000','#008000','#008080','#0000FF','#708090','#696969','#FF0000','#F4A460','#9ACD32','#2E8B57','#48D1CC','#4169E1','#800080','#808080','#FF00FF','#FFA500','#FFFF00','#00FF00','#00FFFF','#00BFFF','#9932CC','#C0C0C0','#FFC0CB','#F5DEB3','#FFFACD','#98FB98','#AFEEEE','#ADD8E6','#DDA0DD','#FFFFFF');var ips_primary_fonts=new Array("Arial","Arial Black","Arial Narrow","Book Antiqua","Century Gothic","Comic Sans MS","Courier New","Franklin Gothic Medium","Garamond","Georgia","Impact","Lucida Console","Lucida Sans Unicode","Microsoft Sans Serif","Palatino Linotype","Tahoma","Times New Roman","Trebuchet MS","Verdana");var ips_primary_sizes=new Array(1,2,3,4,5,6,7);var ips_format_items={'cmd_subscript':'Sub-script','cmd_superscript':'Super-script','cmd_strikethrough':'Strikethrough'};var ips_format_item_images={'cmd_subscript':'rte-subscript.gif','cmd_superscript':'rte-superscript.gif','cmd_strikethrough':'rte-strike.gif'};ips_language_array={};function ips_text_editor(editor_id,mode,use_bbcode,file_path,initial_text){this.editor_id=editor_id;this.is_rte=mode;this.initialized=false;this.buttons=new Array();this.fonts=new Array();this.state=new Array();this.text_obj=document.getElementById(this.editor_id+'_textarea');this.control_obj=document.getElementById(this.editor_id+'_controls');this.font_obj=document.getElementById(this.editor_id+'_out_fontname');this.size_obj=document.getElementById(this.editor_id+'_out_fontsize');this.special_obj=document.getElementById(this.editor_id+'_out_special');this.format_obj=document.getElementById(this.editor_id+'_out_format');this.mainbar=document.getElementById(this.editor_id+'_main-bar');this.use_menus=(typeof(ipsmenu)=='undefined'?false:true);this.is_ie=is_ie;this.is_moz=is_moz;this.is_opera=is_opera;this.is_safari=is_safari;this.file_path=file_path?file_path:global_rte_includes_url;this.font_state=null;this.size_state=null;this.use_bbcode=use_bbcode;this.open_brace=this.use_bbcode?'[':'<';this.close_brace=this.use_bbcode?']':'>';this.allow_advanced=this.use_bbcode?0:1;this.ips_frame_html='';this.popups=new Array();this.char_set=global_rte_char_set?global_rte_char_set:'UTF-8';this.forum_fix_ie_newlines=0;this.emoticon_window_id='';this.is_loading=0;this.hidden_objects=new Array();this.history_pointer=-1;this.history_recordings=new Array();this._showing_html=0;this._ie_cache=null;this.current_bar_object=null;this.ips_special_items={};ips_format_items['cmd_subscript']=ips_language_array['js_rte_sub']?ips_language_array['js_rte_sub']:'Sub-script';ips_format_items['cmd_superscript']=ips_language_array['js_rte_sup']?ips_language_array['js_rte_sup']:'Super-script';ips_format_items['cmd_strikethrough']=ips_language_array['js_rte_strike']?ips_language_array['js_rte_strike']:'Strikethrough';this.init=function(){if(this.initialized){return;}this.control_obj.style.display='';try{document.getElementById(this.editor_id+'_wysiwyg_used').value=parseInt(this.is_rte);}catch(err){}this.ips_frame_html=this.get_frame_html();this.editor_set_content(initial_text);this.editor_set_functions();this.editor_set_controls();this.initialized=true;};this.get_frame_html=function(){var ips_frame_html="";ips_frame_html+="\n";ips_frame_html+="\n";ips_frame_html+="";ips_frame_html+="\n";ips_frame_html+="\n";ips_frame_html+="\n";ips_frame_html+="{:content:}\n";ips_frame_html+="\n";ips_frame_html+="";return ips_frame_html;};this.editor_check_focus=function(){if(!this.editor_window.has_focus){if(this.is_opera){this.editor_window.focus();}this.editor_window.focus();}};this.editor_set_controls=function(){var controls=new Array();var _c=0;if(!this.control_obj){return;}var items=this.control_obj.getElementsByTagName("DIV");for(var i=0;i'+ips_primary_sizes[i]+'';option.className='rte-menu-size';option.title=ips_primary_sizes[i];option.cmd=obj.cmd;option.editor_id=this.editor_id;option.onmouseover=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.menu_option_onmouseevent;option.onclick=ips_editor_events.prototype.font_format_option_onclick;menu.style.width=this.size_obj.style.width;menu.appendChild(option);}break;case 'fontname':for(var i in ips_primary_fonts){var option=document.createElement('div');option.innerHTML=''+ips_primary_fonts[i]+'';option.className='rte-menu-face';option.title=ips_primary_fonts[i];option.cmd=obj.cmd;option.editor_id=this.editor_id;option.onmouseover=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.menu_option_onmouseevent;option.onclick=ips_editor_events.prototype.font_format_option_onclick;menu.style.width=this.font_obj.style.width;menu.appendChild(option);}break;case 'special':for(var i in this.ips_special_items){var option=document.createElement('div');var img=(typeof this.ips_special_items[i][1]!='undefined')?' ':'';option.innerHTML=img+this.ips_special_items[i][0];option.className='rte-menu-face';option.cmd='module_load',option.loader_key=i.replace('cmd_loader_','');option.editor_id=this.editor_id;option.onmouseover=option.onclick=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.special_onmouse_event;menu.style.width=this.special_obj.style.width;menu.appendChild(option);}break;case 'format':for(var i in ips_format_items){var option=document.createElement('div');var img=(typeof ips_format_item_images[i]!='undefined')?' ':'';option.innerHTML=img+ips_format_items[i];option.className='rte-menu-face';option.cmd=i.replace('cmd_','');option.editor_id=this.editor_id;option.onmouseover=option.onclick=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.special_onmouse_event;menu.style.width='130px';menu.appendChild(option);}break;case 'emoticons':var table=document.createElement('table');table.cellPadding=0;table.cellSpacing=0;table.border=0;if(this.is_ie){table.style.paddingRight='15px';}var i=0;var perrow=3;var tr=table.insertRow(-1);var td=tr.insertCell(-1);td.colSpan=perrow;td.align='center';td.cellPadding=0;td.innerHTML='

    ';for(var emo in ips_smilie_items){if(i%perrow==0){var tr=table.insertRow(-1);}i++;var div=document.createElement('div');var _tmp=ips_smilie_items[emo].split(",");var img=' ';div.innerHTML=img;var option=tr.insertCell(-1);option.className='rte-menu-emo';option.appendChild(div);option.cmd=obj.cmd;option.editor_id=this.editor_id;option.id=this.editor_id+'_emoticon_'+_tmp[0];option.emo_id=_tmp[0];option.emo_image=_tmp[1];option.emo_code=emo;option.onmouseover=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.menu_option_onmouseevent;option.onclick=ips_editor_events.prototype.emoticon_onclick;}if(i>0){menu.style.width='auto';if(this.is_ie){menu.style.paddingRight='15px';}menu.style.height='200px';menu.style.overflow='auto';menu.style.overflowX='hidden';menu.appendChild(table);break;}else{menu.style.width='auto';menu.style.height='40px';menu.style.overflow='auto';menu.appendChild(table);break;}case 'forecolor':case 'backcolor':var table=document.createElement('table');table.cellPadding=0;table.cellSpacing=0;table.border=0;var i=0;for(var hex in ips_primary_colors){if(i%8==0){var tr=table.insertRow(-1);}i++;var div=document.createElement('div');div.style.backgroundColor=ips_primary_colors[hex];div.innerHTML=' ';var option=tr.insertCell(-1);option.className='rte-menu-color';option.appendChild(div);option.cmd=obj.cmd;option.editor_id=this.editor_id;option.colorname=ips_primary_colors[hex];option.id=this.editor_id+'_color_'+ips_primary_colors[hex];option.onmouseover=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.menu_option_onmouseevent;option.onclick=ips_editor_events.prototype.color_cell_onclick;}menu.style.overflow='visible';menu.appendChild(table);break;}this.popups[obj.cmd]=this.control_obj.appendChild(menu);ipsclass.set_unselectable(menu);};this.init_editor_button=function(obj){obj.cmd=obj.id.replace(new RegExp('^'+this.editor_id+'_cmd_(.+?)$'),'$1');obj.editor_id=this.editor_id;this.buttons[obj.cmd]=obj;obj.state=false;obj.mode='normal';obj.real_type='button';obj.onclick=ips_editor_events.prototype.button_onmouse_event;obj.onmousedown=ips_editor_events.prototype.button_onmouse_event;obj.onmouseover=ips_editor_events.prototype.button_onmouse_event;obj.onmouseout=ips_editor_events.prototype.button_onmouse_event;};this.set_menu_context=function(obj,state){if(this._showing_html){return false;}switch(obj.state){case true:{this.editor_set_ctl_style(obj,'menubutton','down');break;}default:{switch(state){case 'mouseout':{this.editor_set_ctl_style(obj,'menubutton','normal');break;}case 'mousedown':{this.editor_set_ctl_style(obj,'menubutton','down');break;}case 'mouseup':case 'mouseover':{this.editor_set_ctl_style(obj,'menubutton','hover');break;}}}}};this.set_button_context=function(obj,state,type){if(this._showing_html){return false;}if(typeof type=='undefined'){type='button';}if(state=='mousedown'&&(obj.cmd=='undo'||obj.cmd=='redo')){return false;}switch(obj.state){case true:{switch(state){case 'mouseout':{this.editor_set_ctl_style(obj,'button','selected');break;}case 'mouseover':case 'mousedown':case 'mouseup':{this.editor_set_ctl_style(obj,type,'down');break;}}break;}default:{switch(state){case 'mouseout':{this.editor_set_ctl_style(obj,type,'normal');break;}case 'mousedown':{this.editor_set_ctl_style(obj,type,'down');break;}case 'mouseover':case 'mouseup':{this.editor_set_ctl_style(obj,type,'hover');break;}}break;}}};this.editor_set_ctl_style=function(obj,type,mode){if(obj.mode!=mode){var extra='';if(type=='menu'){extra='-menu';}else if(type=='menubutton'){extra='-menubutton';}extra+=obj.colorname?'-color':'';extra+=obj.emo_id?'-emo':'';obj.mode=mode;try{switch(mode){case "normal":{obj.className='rte-normal'+extra;}break;case "hover":{obj.className='rte-hover'+extra;}break;case "selected":case "down":{obj.className='rte-selected'+extra;}break;}}catch(e){}}};this.format_text=function(e,command,arg){e=ipsclass.cancel_bubble(e,true);if(command.match( /resize_/)){this.resize_editorbox(command.replace( /resize_(up|down)/,"$1"));}if(command.match( /switcheditor/i)){switch_editor_mode(this.editor_id);}if(!this.is_rte){if(command!='redo'){this.history_record_state(this.editor_get_contents());}}this.editor_check_focus();if(this[command]){var return_val=this[command](e);}else{try{var return_val=this.apply_formatting(command,false,(typeof arg=='undefined'?true:arg));}catch(e){var return_val=false;}}if(!this.is_rte){if(command!='undo'){this.history_record_state(this.editor_get_contents());}}this.set_context(command);this.editor_check_focus();return return_val;};this.spellcheck=function(){if(this.is_moz||this.is_opera){return false;}try{var _obj=this.rte_mode?this.editor_document.body:this.editor_document;var tmpis=new ActiveXObject("ieSpell.ieSpellExtension").CheckDocumentNode(_obj);}catch(exception){if(exception.number==-2146827859){if(confirm(ips_language_array['js_rte_erroriespell']?ips_language_array['js_rte_erroriespell']:"ieSpell not detected. Click Ok to go to download page.")){window.open("http://www.iespell.com/download.php","DownLoad");}}else{alert(ips_language_array['js_rte_errorliespell']?ips_language_array['js_rte_errorliespell']:"Error Loading ieSpell: Exception "+exception.number);}}};this.module_remove_item=function(key){var tmp=this.ips_special_items;this.ips_special_items=new Array();for(var i in tmp){if(i!='cmd_loader_'+key){this.ips_special_items[i]=tmp[i];}}};this.module_add_item=function(key,text,image,evalcode){this.ips_special_items['cmd_loader_'+key]=new Array(text,image,evalcode);};this.module_load=function(obj,e,loader_key){if(!loader_key){return false;}e=ipsclass.cancel_bubble(e,true);this.editor_check_focus();this.preserve_ie_range();menu_action_close();var _m=loader_key.match( /\{(.+?)\}$/);var _args='';try{if(_m[1]){_args=_m[1];}}catch(internetexplorer){}if(typeof this.ips_special_items['cmd_loader_'+loader_key][2]!="undefined"){eval(this.ips_special_items['cmd_loader_'+loader_key][2]);return false}else{this.module_show_control_bar(loader_key,_args);}};this.module_show_control_bar=function(type,_args){if(!this.control_obj){return;}type=type.replace( /(\{.+?\})$/,'');_args=(typeof(_args)!='undefined')?_args:'';if(this.current_bar_object){this.module_remove_control_bar();}var newdiv=document.createElement('div');newdiv.id=this.editor_id+'_htmlblock_'+type+'_menu';newdiv.style.display='';newdiv.className='rte-buttonbar';newdiv.style.zIndex=parseInt(this.control_obj.style.zIndex)+1;newdiv.style.position='absolute';newdiv.style.width='220px';newdiv.style.height='400px';newdiv.style.top=ipsclass.get_obj_toppos(this.mainbar)+'px';var _left=ipsclass.get_obj_leftpos(this.mainbar)-(parseInt(newdiv.style.width)+10);if(_left<1){_left=ipsclass.get_obj_leftpos(this.mainbar);}newdiv.style.left=ipsclass.get_obj_leftpos(this.mainbar)-(parseInt(newdiv.style.width)+10)+'px';newdiv.style.left=_left+'px';var tmpheight=parseInt(newdiv.style.height)-16;newdiv.innerHTML=this.module_wrap_html_panel("");this.mainbar.appendChild(newdiv);if(is_ie){document.getElementById(this.editor_id+'_iframeblock_'+type+'_menu').style.backgroundColor='transparent';document.getElementById(this.editor_id+'_iframeblock_'+type+'_menu').allowTransparency=true;}ipsclass.set_unselectable(newdiv);Drag.init(document.getElementById(this.editor_id+'_pallete-handle'),newdiv);this.current_bar_object=newdiv;};this.module_remove_control_bar=function(){if(!this.current_bar_object){return;}this.mainbar.removeChild(this.current_bar_object);this.current_bar_object=null;};this.module_wrap_html_panel=function(html){var newhtml="";newhtml+="
    ";newhtml+="
    ";newhtml+="
    ";newhtml+="
    ";newhtml+="
    ";newhtml+="
    "+html+"
    ";newhtml+="
    ";newhtml+="
    ";return newhtml;};this.resize_editorbox=function(direction){var inc_value=100;var current_height=parseInt(this.editor_box.style.height);var new_height=0;current_height=current_height?current_height:300;if(current_height>=50){if(direction=='up'){new_height=current_height-inc_value;}else{new_height=current_height+inc_value;}if(new_height>249){this.editor_box.style.height=new_height+'px';ipsclass.my_setcookie('ips_rte_height',new_height,1);}}};this.htmlspecialchars=function(html){html=html.replace(/&/g,"&");html=html.replace(/"/g,""");html=html.replace(//g,">");return html;};this.unhtmlspecialchars=function(html){html=html.replace( /"/g,'"');html=html.replace( /</g,'<');html=html.replace( />/g,'>');html=html.replace( /&/g,'&');return html;};this.strip_html=function(html){html=html.replace( /<\/?([^>]+?)>/ig,"");return html;};this.strip_empty_html=function(html){html=html.replace('<([^>]+?)>]+?)>',"");return html;};this.clean_html=function(t){if(t==""||typeof t=='undefined'){return t;}t=t.replace( /
    /ig,"
    ");t=t.replace( /

    (\s+?)?<\/p>/ig,"");t=t.replace( /


    <\/p>/ig,"
    ");t=t.replace( /

     <\/p>


     <\/p>/ig,"


    ");t=t.replace( /<(p|div)([^&]*)>/ig,"\n<$1$2>\n");t=t.replace( /<\/(p|div)([^&]*)>/ig,"\n\n");t=t.replace( /
    (?!<\/td)/ig,"
    \n");t=t.replace( /<\/(td|tr|tbody|table)>/ig,"\n");t=t.replace( /<(tr|tbody|table(.+?)?)>/ig,"<$1>\n");t=t.replace( /<(td(.+?)?)>/ig,"\t<$1>");t=t.replace( /

     <\/p>/ig,"
    ");t=t.replace( /
    /ig,"
    \n");t=t.replace( /
    /ig,"
    \n");t=t.replace( /
    \n<\/td>/ig,"
    ");return t;};this.preserve_ie_range=function(){if(this.is_ie){this._ie_cache=this.is_rte?this.editor_document.selection.createRange():document.selection.createRange();}};this.wrap_tags_lite=function(start_text,close_text){selected_text=this.get_selection();selected_text=(selected_text===false)?'':new String(selected_text);this.insert_text(start_text+selected_text+close_text);return false;};this.destruct=function(){for(var i in this.buttons){var _type=(this.buttons[i].real_type=='button')?'button':'menubutton';this.editor_set_ctl_style(this.buttons[i],_type,'normal');}if(this.fontoptions){for(var i in this.fontoptions){if(i!=''){this.fontoptions[i].parentNode.removeChild(this.fontoptions[i]);}}this.fontoptions[''].style.display='';}if(this.sizeoptions){for(var i in this.sizeoptions){if(i!=''){this.sizeoptions[i].parentNode.removeChild(this.sizeoptions[i]);}}this.sizeoptions[''].style.display='';}for(var i in this.hidden_objects){try{document.getElementById(i).style.display='';}catch(me){}}};this.wrap_tags=function(tag_name,has_option,selected_text){var tag_close=tag_name;if(!this.use_bbcode){switch(tag_name){case 'url':tag_name='a href';tag_close='a';break;case'email':tag_name='a href';tag_close='a';has_option='mailto:'+has_option;break;case 'img':tag_name='img src';tag_close='';break;case 'font':tag_name='font face';tag_close='font';break;case 'size':tag_name='font size';tag_close='font';break;case 'color':tag_name='font color';tag_close='font';break;case 'background':tag_name='font bgcolor';tag_close='font';break;case 'indent':tag_name=tag_close='blockquote';break;case 'left':case 'right':case 'center':has_option=tag_name;tag_name='div align';tag_close='div';break;}}if(typeof selected_text=='undefined'){selected_text=this.get_selection();selected_text=(selected_text===false)?'':new String(selected_text);}if(has_option===true){var option=prompt(ips_language_arrayp['js_rte_optionals']?ips_language_arrayp['js_rte_optionals']:"Enter the optional arguments for this tag",'');if(option){var opentag=this.open_brace+tag_name+'="'+option+'"'+this.close_brace;}else{return false;}}else if(has_option!==false){var opentag=this.open_brace+tag_name+'="'+has_option+'"'+this.close_brace;}else{var opentag=this.open_brace+tag_name+this.close_brace;}var closetag=this.open_brace+'/'+tag_close+this.close_brace;var text=opentag+selected_text+closetag;this.insert_text(text);return false;};this.history_record_state=function(content){if(this.history_recordings[this.history_pointer]!=content){this.history_pointer++;this.history_recordings[this.history_pointer]=content;if(typeof this.history_recordings[this.history_pointer+1]!='undefined'){this.history_recordings[this.history_pointer+1]=null;}}};this.history_time_shift=function(inc){var i=this.history_pointer+inc;if(i>=0&&this.history_recordings[i]!=null&&typeof this.history_recordings[i]!='undefined'){this.history_pointer+=inc;}};this.history_fetch_recording=function(){if(typeof this.history_recordings[this.history_pointer]!='undefined'&&this.history_recordings[this.history_pointer]!=null){return this.history_recordings[this.history_pointer];}else{return false;}};if(this.is_rte){this.editor_write_contents=function(text,do_init){if(text==''&&this.is_moz){text='
    ';}if(this.editor_document&&this.editor_document.initialized){this.editor_document.body.innerHTML=text;}else{if(do_init){this.editor_document.designMode='on';}this.editor_document=this.editor_window.document;this.editor_document.open('text/html','replace');this.editor_document.write(this.ips_frame_html.replace('{:content:}',text));this.editor_document.close();if(do_init){this.editor_document.body.contentEditable=true;this.editor_document.initialized=true;}}};this.editor_set_content=function(init_text){var iframe_obj=null;try{iframe_obj=document.getElementById(this.editor_id+'_iframe');}catch(error){}if(iframe_obj){this.editor_box=iframe_obj;}else{var iframe=document.createElement('iframe');if(this.is_ie&&window.location.protocol=='https:'){iframe.src=this.file_path+'/index.html';}this.editor_box=this.text_obj.parentNode.appendChild(iframe);this.editor_box.id=this.editor_id+'_iframe';this.editor_box.tabIndex=3;}if(!this.is_ie){this.editor_box.style.border='2px inset';}var test_height=parseInt(ipsclass.my_getcookie('ips_rte_height'));if(!isNaN(test_height)&&test_height>50){this.text_obj.style.height=test_height+'px';}this.editor_box.style.width=this.text_obj.style.width;this.editor_box.style.height=this.text_obj.style.height;this.editor_box.className=this.text_obj.className;this.text_obj.style.display='none';this.editor_window=this.editor_box.contentWindow;this.editor_document=this.editor_window.document;this.editor_write_contents((typeof init_text=='undefined'||!init_text?this.text_obj.value:init_text),true);this.editor_document.editor_id=this.editor_id;this.editor_window.editor_id=this.editor_id;this.editor_window.has_focus=false;if(this.use_bbcode){document.getElementById(this.editor_id+'_cmd_justifyfull').style.display='none';}};this.editor_set_functions=function(){this.editor_document.onmouseup=ips_editor_events.prototype.editor_document_onmouseup;this.editor_document.onkeyup=ips_editor_events.prototype.editor_document_onkeyup;this.editor_document.onkeydown=function(){if(IPS_editor[this.editor_id].forum_fix_ie_newlines&&IPS_editor[this.editor_id].is_ie&&IPS_editor[this.editor_id].editor_window.event.keyCode==13){var _test=new Array('Indent','Outdent','JustifyLeft','JustifyCenter','JustifyRight','InsertOrderedList','InsertUnorderedList');for(var i in _test){if(IPS_editor[this.editor_id].editor_window.document.queryCommandState(_test[i])){return true;}}var sel=IPS_editor[this.editor_id].editor_document.selection;var ts=IPS_editor[this.editor_id].editor_document.selection.createRange();var t=ts.htmlText.replace(/]*)>(.*)<\/p>/i,'$2');if((sel.type=="Text"||sel.type=="None")){ts.pasteHTML("
    "+t+"\n");}else{IPS_editor[this.editor_id].editor_document.innerHTML+="
    \n";}IPS_editor[this.editor_id].editor_window.event.returnValue=false;ts.select();IPS_editor[this.editor_id].editor_check_focus();}};this.editor_window.onblur=ips_editor_events.prototype.editor_window_onblur;this.editor_window.onfocus=ips_editor_events.prototype.editor_window_onfocus;};this.set_context=function(cmd){if(this._showing_html){return false;}for(var i in buttons_update){var obj=document.getElementById(this.editor_id+'_cmd_'+buttons_update[i]);if(obj!=null){try{var state=this.editor_document.queryCommandState(buttons_update[i]);if(obj.state!=state){obj.state=state;this.set_button_context(obj,(obj.cmd==cmd?'mouseover':'mouseout'));}}catch(error){}}}this.button_set_font_context();this.button_set_size_context();};this.button_set_font_context=function(font_state){if(this._showing_html){return false;}if(this.buttons['fontname']){if(typeof font_state=='undefined'){font_state=this.editor_document.queryCommandValue('fontname');}switch(font_state){case '':{if(!this.is_ie&&window.getComputedStyle){font_state=this.editor_document.body.style.fontFamily;}}break;case null:{font_state='';}break;}if(font_state!=this.font_state){this.font_state=font_state;var fontword=font_state;var commapos=fontword.indexOf(",");if(commapos!=-1){fontword=fontword.substr(0,commapos);}fontword=fontword.toLowerCase();for(var i in this.fontoptions){this.fontoptions[i].style.display=(i.toLowerCase()==fontword?'':'none');}}}};this.button_set_size_context=function(size_state){if(this.buttons['fontsize']){if(typeof size_state=='undefined'){size_state=this.editor_document.queryCommandValue('fontsize');}switch(size_state){case null:case '':{if(this.is_moz){size_state=this.moz_convert_fontsize(this.editor_document.body.style.fontSize);if(!size_state){size_state='2';}}}break;}if(size_state!=this.size_state){this.size_state=size_state;for(var i in this.sizeoptions){this.sizeoptions[i].style.display=(i==this.size_state?'':'none');}}}};this.apply_formatting=function(cmd,dialog,argument){dialog=(typeof dialog=='undefined'?false:dialog);argument=(typeof argument=='undefined'?true:argument);if(this.is_ie&&this.forum_fix_ie_newlines){if(cmd=='justifyleft'||cmd=='justifycenter'||cmd=='justifyright'){var _a=cmd.replace("justify","");this.wrap_tags_lite("["+_a+"]","[/"+_a+"]");return true;}else if(cmd=='outdent'||cmd=='indent'||cmd=='insertorderedlist'||cmd=='insertunorderedlist'){this.editor_check_focus();var sel=this.editor_document.selection;var ts=this.editor_document.selection.createRange();var t=ts.htmlText.replace(/]*)>(.*)<\/p>/i,'$2');if((sel.type=="Text"||sel.type=="None")){ts.pasteHTML(t+"

    \n");}else{this.editor_document.body.innerHTML+="

    ";}}}this.editor_document.execCommand(cmd,dialog,argument);return false;};this.removeformat=function(e){this.apply_formatting('unlink',false,false);this.apply_formatting('removeformat',false,false);};this.editor_get_contents=function(){return this.editor_document.body.innerHTML;};this.get_selection=function(){var rng=this._ie_cache?this._ie_cache:this.editor_document.selection.createRange();if(rng.htmlText){return rng.htmlText;}else{var rtn='';for(var i=0;i';this.wrap_tags_lite(""+_emo_html,"");}catch(error){}if(IPS_editor[this.editor_id].emoticon_window_id!=''&&typeof(IPS_editor[this.editor_id].emoticon_window_id)!='undefined'){IPS_editor[this.editor_id].emoticon_window_id.focus();}};this.togglesource_cancel=function(){this.togglesource(true);};this.togglesource=function(no_replace){if(this._showing_html){var ta=document.getElementById(this.editor_id+'_htmlsource');var ba=document.getElementById(this.editor_id+'_html_control_bar');if(no_replace!==true){this.editor_document.body.innerHTML=ta.value;}this.editor_box.style.display='';this.control_obj.style.display='';ba.parentNode.removeChild(ba);ta.parentNode.removeChild(ta);this.togglesource_post_show_html();this._showing_html=0;}else{this._showing_html=1;this.togglesource_pre_show_html();var textarea=document.createElement('textarea');var new_ta=this.text_obj.parentNode.appendChild(textarea);new_ta.id=this.editor_id+'_htmlsource';new_ta.className=this.text_obj.className;new_ta.tabIndex=3;new_ta.style.width=this.text_obj.style.width;new_ta.style.height=this.text_obj.style.height;new_ta.value=this.clean_html(this.editor_get_contents());new_ta.focus();var new_div=document.createElement('DIV');new_div.id=this.editor_id+'_html_control_bar';new_div.className=this.control_obj.className;new_div.style.width=this.control_obj.style.width;new_div.style.height=this.control_obj.style.height;new_div.style.paddingBottom='8px';var savebutton=document.createElement('input');savebutton.className='rte-menu-button';savebutton.type='button';savebutton.value=' Save HTML ';savebutton.cmd='togglesource';savebutton.editor_id=this.editor_id;savebutton.onclick=ips_editor_events.prototype.button_onmouse_event;var cancelbutton=document.createElement('input');cancelbutton.className='rte-menu-button';cancelbutton.type='button';cancelbutton.value=' CANCEL ';cancelbutton.cmd='togglesource_cancel';cancelbutton.editor_id=this.editor_id;cancelbutton.onclick=ips_editor_events.prototype.button_onmouse_event;new_div.appendChild(savebutton);new_div.appendChild(cancelbutton);this.control_obj.parentNode.appendChild(new_div);this.control_obj.style.display='none';this.editor_box.style.display='none';this.buttons['togglesource'].state=false;this.buttons['togglesource'].className='rte-normal';this.editor_check_focus();this.set_context();}};this.togglesource_pre_show_html=function(){};this.togglesource_post_show_html=function(){};this.update_for_form_submit=function(){this.text_obj.value=this.editor_get_contents();return true;};this.___OPERA_FUNCTIONS=function(){};if(this.is_opera){this._ORIGINAL_editor_set_content=this.editor_set_content;this.editor_set_content=function(initial_text){this._ORIGINAL_editor_set_content(initial_text);this.editor_document.body.style.height='95%';this.editor_document.addEventListener('keypress',ips_editor_events.prototype.editor_document_onkeypress,true);document.getElementById(this.editor_id+'_cmd_spellcheck').style.display='none';this.hidden_objects[this.editor_id+'_cmd_spellcheck']=1;if(this.use_bbcode){document.getElementById(this.editor_id+'_cmd_justifyfull').style.display='none';this.hidden_objects[this.editor_id+'_cmd_justifyfull']=1;}try{var _y=parseInt(window.pageYOffset);this.editor_document.execCommand("inserthtml",false,"-");this.editor_document.execCommand("undo",false,null);scroll(0,_y);}catch(error){}};this.insert_text=function(str){this.editor_document.execCommand('insertHTML',false,str);};this.get_selection=function(){var selection=this.editor_window.getSelection();this.editor_check_focus();var range=selection?selection.getRangeAt(0):this.editor_document.createRange();var lsserializer=document.implementation.createLSSerializer();return lsserializer.writeToString(range.cloneContents());};this.insert_emoticon=function(emo_id,emo_image,emo_code,event){this.editor_check_focus();try{var _emo_url=global_rte_emoticons_url+"/"+emo_image;this.editor_document.execCommand('InsertImage',false,_emo_url);var images=this.editor_document.getElementsByTagName('img');if(images.length>0){for(var i=0;i<=images.length;i++){if(images[i].src.match(new RegExp(_emo_url+"$"))){if(!images[i].getAttribute('emoid')){images[i].setAttribute('emoid',this.unhtmlspecialchars(emo_code));images[i].setAttribute('border','0');images[i].style.verticalAlign='middle';}}}}}catch(error){}};this.editor_set_functions=function(){this.editor_document.addEventListener('mouseup',ips_editor_events.prototype.editor_document_onmouseup,true);this.editor_document.addEventListener('keyup',ips_editor_events.prototype.editor_document_onkeyup,true);this.editor_window.addEventListener('focus',ips_editor_events.prototype.editor_window_onfocus,true);this.editor_window.addEventListener('blur',ips_editor_events.prototype.editor_window_onblur,true);};}this.___MOZ_FUNCTIONS=function(){};if(this.is_moz){this.togglesource_pre_show_html=function(){this.editor_document.designMode='off';};this.togglesource_post_show_html=function(){this.editor_document.designMode='on';};this._ORIGINAL_editor_set_content=this.editor_set_content;this.editor_set_content=function(initial_text){this._ORIGINAL_editor_set_content(initial_text);this.editor_document.addEventListener('keypress',ips_editor_events.prototype.editor_document_onkeypress,true);document.getElementById(this.editor_id+'_cmd_spellcheck').style.display='none';this.hidden_objects[this.editor_id+'_cmd_spellcheck']=1;if(this.use_bbcode){document.getElementById(this.editor_id+'_cmd_justifyfull').style.display='none';this.hidden_objects[this.editor_id+'_cmd_justifyfull']=1;}try{var _y=parseInt(window.pageYOffset);this.editor_document.execCommand("inserthtml",false,"-");this.editor_document.execCommand("undo",false,null);scroll(0,_y);}catch(error){}};this.moz_convert_fontsize=function(in_size){switch(in_size){case '7.5pt':case '10px':return 1;case '10pt':return 2;case '12pt':return 3;case '14pt':return 4;case '18pt':return 5;case '24pt':return 6;case '36pt':return 7;default:return '';}};this._ORIGINAL_apply_formatting=this.apply_formatting;this.apply_formatting=function(cmd,dialog,arg){if(cmd!='redo'){this.editor_document.execCommand("inserthtml",false,"-");this.editor_document.execCommand("undo",false,null);}this.editor_document.execCommand('useCSS',false,true);return this._ORIGINAL_apply_formatting(cmd,dialog,arg);};this.get_selection=function(){var selection=this.editor_window.getSelection();this.editor_check_focus();var range=selection?selection.getRangeAt(0):this.editor_document.createRange();return this.moz_read_nodes(range.cloneContents(),false);};this.insert_text=function(str,len){fragment=this.editor_document.createDocumentFragment();holder=this.editor_document.createElement('span');holder.innerHTML=str;while(holder.firstChild){fragment.appendChild(holder.firstChild);}var my_length=parseInt(len)>0?len:0;this.moz_insert_node_at_selection(fragment,my_length);};this.insert_emoticon=function(emo_id,emo_image,emo_code,event){this.editor_check_focus();try{var _emo_url=global_rte_emoticons_url+"/"+emo_image;this.editor_document.execCommand('InsertImage',false,_emo_url);var images=this.editor_document.getElementsByTagName('img');if(images.length>0){for(var i=0;i<=images.length;i++){if(images[i].src.match(new RegExp(_emo_url+"$"))){if(!images[i].getAttribute('emoid')){images[i].setAttribute('emoid',this.unhtmlspecialchars(emo_code));images[i].setAttribute('border','0');images[i].style.verticalAlign='middle';}}}}}catch(error){}};this.editor_set_functions=function(){this.editor_document.addEventListener('mouseup',ips_editor_events.prototype.editor_document_onmouseup,true);this.editor_document.addEventListener('keyup',ips_editor_events.prototype.editor_document_onkeyup,true);this.editor_window.addEventListener('focus',ips_editor_events.prototype.editor_window_onfocus,true);this.editor_window.addEventListener('blur',ips_editor_events.prototype.editor_window_onblur,true);this.editor_document.addEventListener('keydown',ips_editor_events.prototype.editor_document_onkeydown,true);};this.moz_add_range=function(node,text_length){this.editor_check_focus();var sel=this.editor_window.getSelection();var range=this.editor_document.createRange();range.selectNodeContents(node);if(text_length){range.setEnd(node,text_length);range.setStart(node,text_length);}sel.removeAllRanges();sel.addRange(range);};this.moz_read_nodes=function(root,toptag){var html="";var moz_check= /_moz/i;switch(root.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:{var closed;if(toptag){closed=!root.hasChildNodes();html='<'+root.tagName.toLowerCase();var attr=root.attributes;for(var i=0;i":">";}for(var i=root.firstChild;i;i=i.nextSibling){html+=this.moz_read_nodes(i,true);}if(toptag&&!closed){html+="";}}break;case Node.TEXT_NODE:{html=this.htmlspecialchars(root.data);}break;}return html;};this.moz_goto_parent_then_body=function(n){var o=n;while(n.parentNode!=null&&n.parentNode.nodeName=='HTML'){n=n.parentNode;}if(n){for(var c=0;c|<\\/?ol|ul)(?=[^\r\n])', 'gi'); +open_tag = list_type == 'ol' ? '

      \n' : '
        \n'; +close_tag = list_type == 'ol' ? '
    \n' : '
\n'; +} +if ( text = this.get_selection() ) +{ +text = open_tag + text.replace( regex, "\n" + item_open_tag + '$1' + item_close_tag ) + '\n' + close_tag; +if ( this.use_bbcode ) +{ +text = text.replace( new RegExp( '\\[\\*\\][\r\n]', 'gi' ), item_open_tag ); +} +this.insert_text( text ); +} +else +{ +if ( this.is_moz ) +{ +this.insert_text( open_tag + close_tag ); +while ( val = prompt( ipb_global_lang['editor_enter_list'], '') ) +{ +this.insert_text( open_tag + all_add + item_open_tag + val + item_close_tag + '\n' + close_tag ); +all_add += item_open_tag + val + item_close_tag + '\n'; +} +} +else +{ +this.insert_text( open_tag ); +while ( val = prompt( ipb_global_lang['editor_enter_list'], '') ) +{ +this.insert_text( item_open_tag + val + item_close_tag + '\n' ); +} +this.insert_text( close_tag ); +} +} +}; +this.unlink = function() +{ +var text = this.get_selection(); +var link_regex = ''; +var link_text = ''; +if ( text !== false ) +{ +if ( text.match( link_regex ) ) +{ +text = ( this.use_bbcode ) ? text.replace( /\[url=([^\]]+?)\]([^\[]+?)\[\/url\]/ig, "$2" ) +: text.replace( /]+?)?>(.+?)<\/a>/ig,"$3");}this.insert_text(text);}};this.undo=function(){this.history_record_state(this.editor_get_contents());this.history_time_shift(-1);if((text=this.history_fetch_recording())!==false){this.editor_document.value=text;}};this.redo=function(){this.history_time_shift(1);if((text=this.history_fetch_recording())!==false){this.editor_document.value=text;}};this.update_for_form_submit=function(subjecttext,minchars){return true;};}this.___SAFARI_FUNCTIONS=function(){};if(this.is_safari){try{document.getElementById(this.editor_id+'_cmd_switcheditor').style.display='none';}catch(error){}}this.___IPB_FUNCTIONS=function(){};this.createlink=function(e){var _text=this.get_selection();_text=_text.replace( /\n|\r|
/g,'');if(_text.match( /(
/g,'');if(_text.match( /(/g,'');var _url=prompt(ipb_global_lang['editor_enter_image'],_text?_text:"http://");if(!_url||_url==null||_url=='http://'){return false;}if(!this.is_rte){this.wrap_tags('img',false,_url);}else{this.wrap_tags('img',_url,'');}};this.ipb_quote=function(){this.wrap_tags_lite('[quote]','[/quote]',0)};this.ipb_code=function(){this.wrap_tags_lite('[code]','[/code]',0)};this.init();}function ips_editor_events(){}ips_editor_events.prototype.button_onmouse_event=function(e){if(is_ie){e=ipsclass.cancel_bubble(e,true);}if(e.type=='click'){IPS_editor[this.editor_id].format_text(e,this.cmd,false,true);}IPS_editor[this.editor_id].set_button_context(this,e.type);};ips_editor_events.prototype.special_onmouse_event=function(e){e=ipsclass.cancel_bubble(e,true);if(e.type=='click'){if(!this.loader_key){IPS_editor[this.editor_id].format_text(e,this.cmd,false,true);ipsmenu.close();}else{IPS_editor[this.editor_id].module_load(this,e,this.loader_key);}}IPS_editor[this.editor_id].set_button_context(this,e.type,'menu');};ips_editor_events.prototype.editor_window_onfocus=function(e){this.has_focus=true;};ips_editor_events.prototype.editor_window_onblur=function(e){this.has_focus=false;};ips_editor_events.prototype.editor_document_onmouseup=function(e){try{if(typeof(this.editor_id=='undefined')&&is_moz){this.editor_id=e.view.editor_id;}}catch(me){}IPS_editor[this.editor_id].set_context();menu_action_close();};ips_editor_events.prototype.editor_document_onkeyup=function(e){IPS_editor[this.editor_id].set_context();};ips_editor_events.prototype.editor_document_onkeypress=function(e){if(e.ctrlKey){switch(String.fromCharCode(e.charCode).toLowerCase()){case 'b':cmd='bold';break;case 'i':cmd='italic';break;case 'u':cmd='underline';break;default:return;}e.preventDefault();IPS_editor[this.editor_id].apply_formatting(cmd,false,null);return false;}};ips_editor_events.prototype.popup_button_onmouseevent=function(e){e=ipsclass.cancel_bubble(e,true);if(e.type=='click'){this._onclick(e);IPS_editor[this.editor_id].set_menu_context(this,'mouseover');}else{IPS_editor[this.editor_id].set_menu_context(this,e.type);}};ips_editor_events.prototype.popup_button_show=function(obj){if(typeof IPS_editor[obj.editor_id].popups[obj.cmd]=='undefined'||IPS_editor[obj.editor_id].popups[obj.cmd]==null){IPS_editor[obj.editor_id].init_editor_menu(obj);}this._open(obj);};ips_editor_events.prototype.menu_option_onmouseevent=function(e){e=ipsclass.cancel_bubble(e,true);IPS_editor[this.editor_id].set_button_context(this,e.type,'menu');};ips_editor_events.prototype.font_format_option_onclick=function(e){IPS_editor[this.editor_id].format_text(e,this.cmd,this.firstChild.innerHTML);ipsmenu.close();};ips_editor_events.prototype.emoticon_onclick=function(e){e=ipsclass.cancel_bubble(e,true);IPS_editor[this.editor_id].insert_emoticon(this.emo_id,this.emo_image,this.emo_code,e);ipsmenu.close();};ips_editor_events.prototype.color_cell_onclick=function(e){IPS_editor[this.editor_id].format_text(e,this.cmd,this.colorname);ipsmenu.close();};ips_editor_events.prototype.editor_document_onkeydown=function(e){}; diff --git a/upload/jscripts/ips_text_editor_func.js b/upload/jscripts/ips_text_editor_func.js new file mode 100644 index 00000000..29dc0460 --- /dev/null +++ b/upload/jscripts/ips_text_editor_func.js @@ -0,0 +1 @@ +function check_side_panel(editor_id){if(global_rte_remove_side_panel){document.getElementById('rte-toggle-side-panel-button').style.display='none';return true;}var _open=global_rte_side_panel_open;var _cookie=ipsclass.my_getcookie('rte-sidepanel');if(_cookie=='open'||_cookie=='close'){_open=(_cookie=='open')?1:0;}if(_open){show_options_panel(editor_id,_open);}}function show_options_panel(editor_id,force,start_emo){if(global_rte_remove_side_panel){document.getElementById('rte-toggle-side-panel-button').style.display='none';return true;}if(typeof(start_emo)=='undefined'){start_emo=0;}var _editor=document.getElementById(editor_id+'_main-bar');var _options=document.getElementById(editor_id+'_options-bar');var _height=parseInt(_editor.offsetHeight);var _mode='open';var _more_less='';_options.innerHTML='';if(typeof(force)!='undefined'){_mode=(force==1)?'open':'close';}else{if(_options._panel_open){_mode='close';}}ipsclass.my_setcookie('rte-sidepanel',_mode,1);if(_mode=='open'){_editor.style.width='82%';_editor.parentNode.align='right';_options.style.width='17%';_options.style.height=_height?_height-2+'px':'auto';_options.style.display='block';_options._panel_open=1;var _main_div=document.createElement('div');_main_div.className='rte-option-emo-box';_main_div.style.width='90%';_main_div.innerHTML+='';var _div=document.createElement('div');_div.style.width='100%';_div.style.height='120px';_div.style.overflowY='auto';_div.style.overflowX='auto';var table=document.createElement('table');table.cellPadding=0;table.cellSpacing=0;table.border=0;table.width='99%';table.nowrap='nowrap';if(is_ie){table.style.paddingRight='15px';}var i=0;var perrow=3;var show_emos=12;var show_rows=show_emos/perrow;var max_emos=0;var _previous=0;var _next=0;for(var emo in ips_smilie_items){max_emos++;}for(var emo in ips_smilie_items){var _tmp=ips_smilie_items[emo].split(",");var _id=_tmp[0]-1;if(_id=(show_emos+start_emo)){continue;}if(i%perrow==0){var tr=table.insertRow(-1);}i++;var div=document.createElement('div');var img=' ';div.innerHTML=img;var td=tr.insertCell(-1);td.width='33%';td.align='center';td.className='rte-menu-emo-box';td.appendChild(div);td.cmd='emoticons';td.editor_id=editor_id;td.id=editor_id+'_emoticon_'+_tmp[0];td.emo_id=_tmp[0];td.emo_image=_tmp[1];td.emo_code=emo;td.onclick=ips_editor_events.prototype.emoticon_onclick;}_div.appendChild(table);_main_div.appendChild(_div);if(start_emo>0){if(start_emo+i'+ips_language_array['emos_show_prev']+'';}if(show_emos+start_emo'+ips_language_array['emos_show_next']+'';}if(_more_less){var _div=document.createElement('div');_div.className="rte-menu-emo-header";_div.style.height='17px';_div.innerHTML=_more_less;_main_div.appendChild(_div);}_options.appendChild(_main_div);var table=document.createElement('table');table.cellPadding=0;table.cellSpacing=0;table.border=0;table.width='90%';table.className='rte-option-emo-box';var i=0;var perrow=3;var tr=table.insertRow(-1);var td=tr.insertCell(-1);td.colSpan=perrow;td.align='center';td.cellPadding=0;td.innerHTML='
Quick Access
';for(var i in IPS_editor[editor_id].ips_special_items){var tr=table.insertRow(-1);var option=tr.insertCell(-1);var img=(typeof IPS_editor[editor_id].ips_special_items[i][1]!='undefined')?' ':'';option.innerHTML=img+IPS_editor[editor_id].ips_special_items[i][0];option.className='rte-menu-face';option.style.textAlign='left';option.style.paddingLeft='2px';option.cmd='module_load',option.loader_key=i.replace('cmd_loader_','');option.editor_id=editor_id;option.onmouseover=option.onclick=option.onmouseout=option.onmouseup=option.onmousedown=ips_editor_events.prototype.special_onmouse_event;}_options.appendChild(table);ipsclass.set_unselectable(_options);}else{_editor.style.width='100%';_editor.parentNode.align='center';_options.style.width='0%';_options.style.height=_height?_height-2+'px':'150px';_options.style.display='none';_options._panel_open=0;_options.innerHTML='';}return false;}function switch_editor_mode(editor_id){var url=ipb_var_base_url+'act=xmlout&do=post-editorswitch';var fields=new Array();if(use_enhanced_js){var new_mode=IPS_editor[editor_id].is_rte?0:1;if(IPS_editor[editor_id].is_loading){return;}else{IPS_editor[editor_id].is_loading=1;}if(typeof(ipsmenu)!='undefined'){ipsmenu.close();}var _file_path=IPS_editor[editor_id].file_path;var _is_ie=IPS_editor[editor_id].is_ie;var _is_moz=IPS_editor[editor_id].is_moz;fields['md5check']=ipb_md5_check;fields['act']='xmlout';fields['do']='post-editorswitch';fields['to_rte']=new_mode;fields['Post']=IPS_editor[editor_id].editor_get_contents();do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading();return;}xmlobj.hide_loading();IPS_editor[editor_id].destruct();var text=xmlobj.xmlhandler.responseText;var matches=text.match( /&#([0-9]+);/g);if(matches){for(var i=0;typeof(matches[i])!='undefined';i++){if(sm=matches[i].match( /^&#([0-9]+);$/)){text=text.replace(sm[0],String.fromCharCode(sm[1]));}}}text=text.replace( /&(lt|gt|quot);/ig,"&$1;");text=text.replace( /"/g,'"');if(!new_mode){text=text.replace( /(?:\n|\r){1,}(\[\/\w{1,}\])/g,"$1");text=text.replace( /(\S{1})\[\*\]/g,"$1\n[*]");}IPS_editor[editor_id]=null;IPS_editor[editor_id]=new ips_text_editor(editor_id,new_mode,new_mode==1?0:1,_file_path,text);IPS_editor[editor_id].allow_advanced=0;IPS_editor[editor_id].forum_fix_ie_newlines=1;for(var i in ips_bbcode_items){IPS_editor[editor_id].module_add_item('bbcodeloader{id='+i+'}',"Insert: "+ips_bbcode_items[i]['title'],'rte-ipd-tag.png');}IPS_editor[editor_id].editor_check_focus();document.getElementById(editor_id+'_wysiwyg_used').value=new_mode;};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);var xmlreturn=xmlobj.process(url,'POST',xmlobj.format_for_post(fields));}}function show_all_emoticons(editor_id){IPS_editor[editor_id].emoticon_window_id=window.open(ipb_var_base_url+"act=legends&CODE=emoticons&editor_id="+editor_id,"Legends","width=250,height=500,resizable=yes,scrollbars=yes");menu_action_close();return false;}function bbc_pop(){window.open(ipb_var_base_url+"act=legends&CODE=bbcode","Legends","width=700,height=500,resizable=yes,scrollbars=yes");}function ValidateForm(){return validate_form();}function validate_form(){try{if(ipsattach.has_upload_pending){if(confirm(ipb_global_lang['post_upload_not_empty'])){return true;}else{return false;}}}catch(e){}for(var i in IPS_editor){var return_var=IPS_editor[i].update_for_form_submit();if(return_var==false){return false;}}return true;} diff --git a/upload/jscripts/ips_text_editor_lite.js b/upload/jscripts/ips_text_editor_lite.js new file mode 100644 index 00000000..397d6ff1 --- /dev/null +++ b/upload/jscripts/ips_text_editor_lite.js @@ -0,0 +1,102 @@ +var IPS_Lite_Editor=new Array();function ips_text_editor_lite(editor_id){this.editor_id=editor_id;this.control_obj=document.getElementById(editor_id+'-controls');this.initialized=false;this.buttons=new Array();this.fonts=new Array();this.state=new Array();this.text_obj=document.getElementById(this.editor_id+'_textarea');this.open_brace='[';this.close_brace=']';this.editor_document=this.text_obj;this.editor_window=this.editor_document;this._ie_cache=null;this.is_ie=is_ie;this.is_moz=is_moz;this.is_opera=is_opera;this.has_focus=false;this.emoticon_window_id=null;this.init=function(){var controls=new Array();if(!this.control_obj){return;}var items=this.control_obj.getElementsByTagName("DIV");for(var i=0;i= 50 ) +{ +if ( direction == 'up' ) +{ +new_height = current_height - inc_value; +} +else +{ +new_height = current_height + inc_value; +} +if ( new_height > 149 ) +{ +this.text_obj.style.height = new_height + 'px'; +} +} +}; +}; +function ips_editor_events() +{ +} +ips_editor_events.prototype.button_onmouse_event = function(e) +{ +e = ipsclass.cancel_bubble(e, true); +if ( e.type == 'click' ) +{ +IPS_Lite_Editor[this.editor_id].format_text(e, this.cmd, false, true); +} +IPS_Lite_Editor[this.editor_id].set_button_context(this, e.type); +}; +ips_editor_events.prototype.editor_window_onfocus = function(e) +{ +this.has_focus = true; +}; +ips_editor_events.prototype.editor_window_onblur = function(e) +{ +this.has_focus = false; +}; +ips_editor_events.prototype.editor_document_onkeypress = function(e) +{ +if ( e.ctrlKey ) +{ +switch (String.fromCharCode(e.charCode).toLowerCase()) +{ +case 'b': cmd = 'bold'; break; +case 'i': cmd = 'italic'; break; +case 'u': cmd = 'underline'; break; +default: return; +} +e.preventDefault(); +IPS_Lite_Editor[this.editor_id].apply_formatting(cmd, false, null); +return false; +} +}; diff --git a/upload/jscripts/ips_xmlhttprequest.js b/upload/jscripts/ips_xmlhttprequest.js index d0f72fa7..9660134d 100644 --- a/upload/jscripts/ips_xmlhttprequest.js +++ b/upload/jscripts/ips_xmlhttprequest.js @@ -1,342 +1 @@ -//------------------------------------------------------------------------------ -// IPS XML HTTP REQUEST -//------------------------------------------------------------------------------ -// Supports Safari, Mozilla 1.3+ (Firefox, etc) and IE 5.5+ -// (c) 2005 Invision Power Services, Inc. -// http://www.invisionpower.com -//------------------------------------------------------------------------------ - -try -{ - if ( ! use_charset ) - { - var use_charset = ''; - } -} -catch( e ) { } - -/*--------------------------------------------*/ -// New object -/*--------------------------------------------*/ - -function ajax_request() -{ - this.isIE = false; - this.allow_use = use_enhanced_js ? true : false; - this.xmlhandler = null; - this.error_string = ''; - this.nocache = true; - this.do_request_functon = function() {} - this.loading_fired = 0; - this.centerdiv = null; -} - -/*--------------------------------------------*/ -// Initiate -/*--------------------------------------------*/ - -ajax_request.prototype.xml_init = function() -{ - try - { - //------------------------------------------------ - // Moz, Safari, Opera - //------------------------------------------------ - - this.xmlhandler = new XMLHttpRequest(); - this.ie = false; - this.allow_use = true; - return true; - } - catch(e) - { - try - { - //------------------------------------------------ - // IE - //------------------------------------------------ - - this.xmlhandler = new ActiveXObject('Microsoft.XMLHTTP'); - this.ie = true; - this.allow_use = true; - return true; - } - catch(e) - { - this.ie = true; - this.allow_use = false; - return false; - } - } -} - -/*--------------------------------------------*/ -// Actually send data -/*--------------------------------------------*/ - -ajax_request.prototype.process = function( url, type, post ) -{ - //------------------------------------------------ - // The 'post' variable needs to be in the following format: - // - // var=content&var2=content&var3=content - // - // All values need to be escaped with encodeURIComponent(); - //------------------------------------------------ - - type = type == "POST" ? "POST" : "GET"; - - //------------------------------------------------ - // Use nocache where possible... - //------------------------------------------------ - - if ( this.nocache == true && type == 'GET' ) - { - url = this.nocache_url( url ); - } - - //------------------------------------------------ - // Make sure we're initialized - //------------------------------------------------ - - if ( ! this.xmlhandler ) - { - this.xml_init(); - } - - //------------------------------------------------ - // Only go when ready - //------------------------------------------------ - - if ( ! this.readystate_not_ready() ) - { - this.xmlhandler.open(type, url, true); - - if ( type == "GET" ) - { - this.xmlhandler.send(null); - } - else - { - if ( typeof( this.xmlhandler.setRequestHeader ) != "undefined" ) - { - this.xmlhandler.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=' + use_charset); - } - - this.xmlhandler.send( post ); - } - - if ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) - { - return true; - } - } - - return false; -} - -/*--------------------------------------------*/ -// retrieve text of an XML document element, including -// elements using namespaces -/*--------------------------------------------*/ - -ajax_request.prototype.get_element_text_ns = function(prefix, local, parentElem, index) -{ - var result = ""; - - if ( prefix && this.isIE ) - { - //------------------------------- - // IE - //------------------------------- - - result = parentElem.getElementsByTagName(prefix + ":" + local)[index]; - } - else - { - //------------------------------- - // Safari, Gecko - //------------------------------- - - result = parentElem.getElementsByTagName(local)[index]; - } - - if ( result ) - { - if (result.childNodes.length > 1) - { - return result.childNodes[1].nodeValue; - } - else - { - return result.firstChild.nodeValue; - } - } - else - { - return "n/a"; - } -} - -/*--------------------------------------------*/ -// Make sure URL is not cached -/*--------------------------------------------*/ - -ajax_request.prototype.nocache_url = function (url) -{ - var sep = ( -1 < url.indexOf("?") ) ? "&" : "?"; - var mydate = new Date(); - var newurl = url + sep + "__=" + mydate.getTime(); - return newurl; -} - -/*--------------------------------------------*/ -// Takes an array of: -// array[ field ] = value -// and returns a nice encoded POST string -/*--------------------------------------------*/ - -ajax_request.prototype.format_for_post = function( arrayfields ) -{ - var str = ''; - - try - { - for( var i in arrayfields ) - { - str += i + '=' + this.encodeurl(arrayfields[i]) + '&'; - } - } - catch(e) - { - } - - return str; -} - -/*--------------------------------------------*/ -// Hand roll encode URL to UTF-8 -/*--------------------------------------------*/ - -ajax_request.prototype.encodeurl = function( url ) -{ - //------------------------------- - // Ensure we have a string - //------------------------------- - - url = url.toString(); - - var regcheck = url.match(/[\x90-\xFF]/g); - - if ( regcheck ) - { - for (var i = 0; i < i.length; i++) - { - url = url.replace(regcheck[i], '%u00' + (regcheck[i].charCodeAt(0) & 0xFF).toString(16).toUpperCase()); - } - } - - return escape(url).replace(/\+/g, "%2B"); -} - - -/*--------------------------------------------*/ -// Check to ensure ready state-ness -/*--------------------------------------------*/ - -ajax_request.prototype.readystate_not_ready = function() -{ - return ( this.xmlhandler.readyState && ( this.xmlhandler.readyState < 4 ) ); -} - -/*--------------------------------------------*/ -// Check to ensure ready state-ness -/*--------------------------------------------*/ - -ajax_request.prototype.readystate_ready_and_ok = function() -{ - return ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) ? true : false; -} - -/*--------------------------------------------*/ -// Onready state change event handler -/*--------------------------------------------*/ - -ajax_request.prototype.onreadystatechange = function( event ) -{ - //------------------------------------------------ - // Make sure we're initialized - //------------------------------------------------ - - if ( ! this.xmlhandler ) - { - this.xml_init(); - } - - //------------------------------------------------ - // Make sure its a function event - //------------------------------------------------ - - if ( typeof(event) == 'function' ) - { - this.xmlhandler.onreadystatechange = event; - } -} - -/*--------------------------------------------*/ -// Show loading layer -/*--------------------------------------------*/ - -ajax_request.prototype.show_loading = function( message ) -{ - if ( ! this.loading_fired ) - { - this.loading_fired = 1; - - //------------------------------------------------ - // Change text? - //------------------------------------------------ - - if ( message ) - { - document.getElementById( 'loading-layer-text' ).innerHTML = message; - } - - this.centerdiv = new center_div(); - this.centerdiv.divname = 'loading-layer'; - this.centerdiv.move_div(); - } - - return; -} - -/*--------------------------------------------*/ -// Hide loading layer -/*--------------------------------------------*/ - -ajax_request.prototype.hide_loading = function() -{ - try - { - if ( this.centerdiv && this.centerdiv.divobj ) - { - this.centerdiv.hide_div(); - } - } - catch(e) - { - } - - this.loading_fired = 0; - - return; -} - -/*--------------------------------------------*/ -// IPB thinks we can use fancy JS, lets see... -/*--------------------------------------------*/ - -if ( use_enhanced_js ) -{ - use_enhanced_js = ajax_request.prototype.xml_init() ? 1 : 0; -} \ No newline at end of file +function ajax_request(){this.isIE=false;this.allow_use=use_enhanced_js?true:false;this.xmlhandler=null;this.error_string='';this.nocache=true;this.do_request_functon=function(){};this.loading_fired=0;this.centerdiv=null;}ajax_request.prototype.xml_init=function(){try{this.xmlhandler=new XMLHttpRequest();this.ie=false;this.allow_use=true;return true;}catch(e){try{this.xmlhandler=new ActiveXObject('Microsoft.XMLHTTP');this.ie=true;this.allow_use=true;return true;}catch(e){this.ie=true;this.allow_use=false;return false;}}};ajax_request.prototype.process=function(url,type,post){type=type=="POST"?"POST":"GET";if(this.nocache==true&&type=='GET'){url=this.nocache_url(url);}if(!this.xmlhandler){this.xml_init();}if(!this.readystate_not_ready()){this.xmlhandler.open(type,url,true);if(type=="GET"){this.xmlhandler.send(null);}else{if(typeof(this.xmlhandler.setRequestHeader)!="undefined"){this.xmlhandler.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}this.xmlhandler.send(post);}if(this.xmlhandler.readyState==4&&this.xmlhandler.status==200){return true;}}return false;};ajax_request.prototype.get_element_text_ns=function(prefix,local,parentElem,index){var result="";if(prefix&&this.isIE){result=parentElem.getElementsByTagName(prefix+":"+local)[index];}else{result=parentElem.getElementsByTagName(local)[index];}if(result){if(result.childNodes.length>1){return result.childNodes[1].nodeValue;}else{return result.firstChild.nodeValue;}}else{return "n/a";}};ajax_request.prototype.nocache_url=function(url){var sep=(-1([^`]+?)","i"))){i++;if(i>=max_iteration){break;}else{text_blocks[text_blocks.length]=_match[1];source_code=source_code.replace(_match[0],'');}}try{if(text_blocks.length){for(i=0;i LO-FI VERSION! -| > Script written by Matt Mecham -| > Date started: 11th March 2004 -| > Interesting fact: Wrote this while listening to the Stereophonic's -| > 'Performance and Cocktails' CD. That was when they were good. -| > Lo-fi feature took about 1.5 days to write. That's a lot of CD -| > repeating... -+-------------------------------------------------------------------------- -*/ - -//----------------------------------------------- -// USER CONFIGURABLE ELEMENTS -//----------------------------------------------- - -define( 'LOFI_NAME' , 'lofiversion' ); - -if ( substr(PHP_OS, 0, 3) == 'WIN' OR strstr( php_sapi_name(), 'cgi') OR php_sapi_name() == 'apache2filter' ) -{ - define( 'THIS_PATH', str_replace( '\\', '/', dirname( __FILE__ ) ) .'/' ); - define( 'ROOT_PATH', str_replace( LOFI_NAME, '', THIS_PATH ) ); - define( 'SERVER' , 'WIN' ); -} -else -{ - define( 'THIS_PATH', './' ); - define( 'ROOT_PATH', '../' ); - define( 'SERVER' , 'UNX' ); -} - -define( 'KERNEL_PATH', ROOT_PATH.'ips_kernel/' ); - -//----------------------------------------------- -// NO USER EDITABLE SECTIONS BELOW -//----------------------------------------------- - -define ( 'IN_IPB', 1 ); -define ( 'IN_DEV', 0 ); - -error_reporting (E_ERROR | E_WARNING | E_PARSE); -set_magic_quotes_runtime(0); - -//=========================================================================== -// DEBUG CLASS -//=========================================================================== - -class Debug -{ - function startTimer() - { - global $starttime; - $mtime = microtime (); - $mtime = explode (' ', $mtime); - $mtime = $mtime[1] + $mtime[0]; - $starttime = $mtime; - } - function endTimer() - { - global $starttime; - $mtime = microtime (); - $mtime = explode (' ', $mtime); - $mtime = $mtime[1] + $mtime[0]; - $endtime = $mtime; - $totaltime = round (($endtime - $starttime), 5); - return $totaltime; - } -} - -//=========================================================================== -// MAIN PROGRAM -//=========================================================================== - -$INFO = array(); - -//-------------------------------- -// Load our classes -//-------------------------------- - -require ROOT_PATH . "sources/ipsclass.php"; -require ROOT_PATH . "sources/classes/class_display.php"; -require ROOT_PATH . "sources/classes/class_session.php"; -require ROOT_PATH . "sources/classes/class_forums.php"; -require KERNEL_PATH . "class_converge.php"; -require ROOT_PATH . "conf_global.php"; - -# Initiate super-class -$ipsclass = new ipsclass(); -$ipsclass->vars = $INFO; - -//-------------------------------- -// The clocks a' tickin' -//-------------------------------- - -$Debug = new Debug; -$Debug->startTimer(); - -//-------------------------------- -// Load the DB driver and such -//-------------------------------- - -$ipsclass->init_db_connection(); - -//-------------------------------- -// INIT other classes -//-------------------------------- - -$ipsclass->print = new display(); -$ipsclass->print->ipsclass =& $ipsclass; - -$ipsclass->sess = new session(); -$ipsclass->sess->ipsclass =& $ipsclass; - -$ipsclass->forums = new forum_functions(); -$ipsclass->forums->ipsclass =& $ipsclass; - -//-------------------------------- -// Set up our vars -//-------------------------------- - -$ipsclass->parse_incoming(); - -//-------------------------------- -// Set converge -//-------------------------------- - -$ipsclass->converge = new class_converge( $ipsclass->DB ); - -//=========================================================================== -// Get cache... -//=========================================================================== - -//-------------------------------- -// Start off the cache array -//-------------------------------- - -$ipsclass->cache_array = array('attachtypes','bbcode', 'multimod','ranks','profilefields','components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages'); - -$ipsclass->init_load_cache( $ipsclass->cache_array ); - -//-------------------------------- -// Initialize the FUNC -//-------------------------------- - -$ipsclass->initiate_ipsclass(); - -//-------------------------------- -// The rest :D -//-------------------------------- - -$ipsclass->member = $ipsclass->sess->authorise(); - -//-------------------------------- -// Load the skin -//-------------------------------- - -$ipsclass->load_skin(); - -$ipsclass->vars['display_max_topics'] = 150; -$ipsclass->vars['display_max_posts'] = 50; - -$ipsclass->load_language('lang_global'); - -//-------------------------------- -// Initialize the forums -//-------------------------------- - -$ipsclass->forums->strip_invisible = 1; -$ipsclass->forums->forums_init(); - -$ipsclass->session_id = ""; -$ipsclass->base_url = $ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'].'?'; - -//-------------------------------- -// Banned? -//-------------------------------- - -if ( is_array( $ipsclass->cache['banfilters'] ) and count( $ipsclass->cache['banfilters'] ) ) -{ - foreach ($ipsclass->cache['banfilters'] as $ip) - { - $ip = str_replace( '\*', '.*', preg_quote($ip, "/") ); - - if ( preg_match( "/^$ip$/", $ipsclass->input['IP_ADDRESS'] ) ) - { - fatal_error( $ipsclass->lang['lofi_noperm'] ); - } - } -} - -//-------------------------------- -// Do we have permission to view -// the board? -//-------------------------------- - -if ($ipsclass->member['g_view_board'] != 1) -{ - $ipsclass->boink_it( $ipsclass->base_url ); -} - -//-------------------------------- -// Is the board offline? -//-------------------------------- - -if ($ipsclass->vars['board_offline'] == 1) -{ - if ($ipsclass->member['g_access_offline'] != 1) - { - $ipsclass->boink_it( $ipsclass->base_url ); - } -} - -//-------------------------------- -// Is log in enforced? -//-------------------------------- - -if ( (! $ipsclass->member['id']) and ($ipsclass->vars['force_login'] == 1) ) -{ - $ipsclass->boink_it( $ipsclass->base_url ); - -} - -//=========================================================================== -// DO STUFF! -//=========================================================================== - -//-------------------------------- -// Require 'skin' -//-------------------------------- - -require_once( THIS_PATH.'lofi_skin.php' ); - -//-------------------------------- -// Not index.php/ ? Redirect -// We do this so we can use relative -// links... -//-------------------------------- - -$main_string = $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : $_SERVER['PHP_SELF']; - -if ( SERVER == 'WIN' ) -{ - $winpath = $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php?'; - $main_string = $_SERVER['QUERY_STRING']; -} -else -{ - if ( strpos( $main_string, '/'.LOFI_NAME.'/index.php/' ) === FALSE ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php/' ); - } - - if ( strstr( $main_string, "/" ) ) - { - $main_string = str_replace( "/", "", strrchr( $main_string, "/" ) ); - } -} - -$main_string = str_replace( ".html", "", $main_string ); - -$action = 'index'; -$id = 0; -$st = 0; - -//-------------------------------- -// Pages? -//-------------------------------- - -if ( strstr( $main_string, "-" ) ) -{ - list( $main, $start ) = explode( "-", $main_string ); - - $main_string = $main; - $st = $start; -} - -$st = intval($st); - -//-------------------------------- -// What we doing? -//-------------------------------- - -if ( preg_match( "#t\d#", $main_string ) ) -{ - $action = 'topic'; - $id = intval( preg_replace( "#t(\d+)#", "\\1", $main_string ) ); -} -if ( preg_match( "#f\d#", $main_string ) ) -{ - $action = 'forum'; - $id = intval( preg_replace( "#f(\d+)#", "\\1", $main_string ) ); -} - - -//-------------------------------- -// Do it! -//-------------------------------- - -$output = ""; - -switch ( $action ) -{ - case 'forum': - $ipsclass->real_link = $ipsclass->base_url.'showforum='.$id; - $output = get_forum_page($id, $st); - break; - case 'topic': - $ipsclass->real_link = $ipsclass->base_url.'showtopic='.$id; - $output = get_topic_page($id, $st); - break; - default: - $ipsclass->real_link = $ipsclass->base_url; - $output = get_index_page(); - break; -} - -print_it($output); - - -//-------------------------------- -// Board index -//-------------------------------- - -function get_index_page() -{ - global $ipsclass, $std, $DB, $forums, $LOFISKIN; - - return LOFISKIN_forums( _get_forums() ); -} - -//-------------------------------- -// Forums index -//-------------------------------- - -function get_forum_page($id, $st) -{ - global $ipsclass, $std, $DB, $forums, $LOFISKIN, $navarray, $winpath; - - $output = ""; - - if ( $ipsclass->check_perms($ipsclass->forums->forum_by_id[$id]['read_perms']) != TRUE and ( ! $ipsclass->forums->forum_by_id[$id]['permission_showtopic'] ) ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - //-------------------------------- - // Passy? - //-------------------------------- - - if ( $ipsclass->forums->forum_by_id[$id]['password'] != '' ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - //-------------------------------- - // Nav array... - //-------------------------------- - - $navarray = _get_nav_array($id); - - $ipsclass->title = $ipsclass->forums->forum_by_id[ $id ]['name']; - - if ( ! $ipsclass->forums->forum_by_id[ $id ]['sub_can_post'] ) - { - //-------------------------------- - // Show forums? - //-------------------------------- - - if ( is_array($ipsclass->forums->forum_cache[ $id ]) and count($ipsclass->forums->forum_cache[ $id ]) ) - { - $html_string .= LOFISKIN_forums_entry_first($ipsclass->forums->forum_by_id[ $id ], $winpath); - - $depth_guide = ""; - - foreach( $ipsclass->forums->forum_cache[ $id ] as $cid => $forum_data ) - { - $forum_data['total_posts'] = intval( $forum_data['topics'] + $forum_data['posts'] ); - - $html_string .= LOFISKIN_forums_entry($depth_guide, $forum_data, $winpath ); - - $html_string = _get_forums_internal( $forum_data['id'], $html_string, " ".$depth_guide ); - } - - $html_string .= LOFISKIN_forums_entry_end($depth_guide); - } - - $output = $html_string; - - //-------------------------------- - // Return.. - //-------------------------------- - - return LOFISKIN_forums($output); - } - else - { - //-------------------------------- - // Show topics... - //-------------------------------- - - $ipsclass->pages = _get_pages( $ipsclass->forums->forum_by_id[ $id ]['topics'], $ipsclass->vars['display_max_topics'], 'f'.$id ); - - if ( ! $ipsclass->member['g_other_topics']) - { - $query = " and starter_id=".$ipsclass->member['id']; - } - - //-------------------------------- - // Topics... - //-------------------------------- - - $ipsclass->DB->simple_construct( array( 'select' => '*', - 'from' => 'topics', - 'where' => "approved=1 and forum_id=$id".$query, - 'order' => 'pinned desc, last_post desc', - 'limit' => array( $st, $ipsclass->vars['display_max_topics'] ) - ) ); - $ipsclass->DB->simple_exec(); - - while( $r = $ipsclass->DB->fetch_row() ) - { - if ( $r['pinned'] ) - { - $r['_prefix'] = $ipsclass->lang['lofi_pinned']; - } - else - { - $r['_prefix'] = ""; - } - - if ($r['state'] == 'link') - { - $t_array = explode("&", $r['moved_to']); - $r['tid'] = $t_array[0]; - $r['forum_id'] = $t_array[1]; - $r['title'] = $r['title']; - $r['posts'] = '--'; - $r['_prefix'] = $ipsclass->lang['lofi_moved']; - } - - $output .= LOFISKIN_topics_entry($r, $winpath); - } - - //-------------------------------- - // Return.. - //-------------------------------- - - return LOFISKIN_topics($output); - } -} - -//-------------------------------- -// Topics index -//-------------------------------- - -function get_topic_page($id, $st) -{ - global $ipsclass, $std, $DB, $forums, $LOFISKIN, $navarray, $winpath; - - $output = ""; - - //-------------------------------- - // Get post_parser - //-------------------------------- - - require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); - $parser = new parse_bbcode(); - $parser->ipsclass =& $ipsclass; - $parser->allow_update_caches = 1; - - $parser->bypass_badwords = intval($ipsclass->member['g_bypass_badwords']); - - //-------------------------------- - // get topic - //-------------------------------- - - $topic = $ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'topics', 'where' => "tid=".$id." and approved=1" ) ); - - if ( ! $ipsclass->member['g_other_topics'] AND $topic['starter_id'] != $ipsclass->member['id'] ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - if ( ! $topic['tid'] ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - if ( ! $ipsclass->forums->forum_by_id[ $topic['forum_id'] ] ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - if ( $ipsclass->forums->forums_check_access( $topic['forum_id'], 0 ) ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - if ( $ipsclass->forums->read_topic_only ) - { - $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); - } - - $ipsclass->pages = _get_pages( $topic['posts'] + 1, $ipsclass->vars['display_max_posts'], 't'.$id ); - - $ipsclass->title = $topic['title']; - - //-------------------------------- - // get posts... - //-------------------------------- - - $ipsclass->DB->build_query( array( 'select' => 'p.*', - 'from' => array( 'posts' => 'p' ), - 'where' => "p.topic_id={$id} AND p.queued=0", - 'add_join' => array( 0 => array( 'select' => 'm.members_display_name, m.mgroup', - 'from' => array( 'members' => 'm' ), - 'where' => 'm.id=p.author_id', - 'type' => 'left' ) ), - 'order' => 'pid', - 'limit' => array( $st, $ipsclass->vars['display_max_posts'] ) - ) ); - - $ipsclass->DB->simple_exec(); - - while( $r = $ipsclass->DB->fetch_row() ) - { - $r['post_date'] = $ipsclass->get_date( $r['post_date'], 'LONG', 1 ); - - $r['author_name'] = $r['members_display_name'] ? $r['members_display_name'] : $r['author_name']; - - $parser->parse_html = ( $ipsclass->forums->forum_by_id[ $topic['forum_id'] ]['use_html'] and $ipsclass->cache['group_cache'][ $r['mgroup'] ]['g_dohtml'] and $r['post_htmlstate'] ) ? 1 : 0; - $parser->parse_nl2br = $r['post_htmlstate'] == 2 ? 1 : 0; - - $r['post'] = $parser->pre_display_parse( $r['post'] ); - - //-------------------------------- - // Manage POST / TOPIC tags index.php?act=findpost&pid=415 - // - //-------------------------------- - - $r['post'] = preg_replace( "#([\"'])index\.{$ipsclass->vars['php_ext']}\?showtopic=#i" , "\\1".$ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'].'?showtopic=' , $r['post'] ); - $r['post'] = preg_replace( "#([\"'])index\.{$ipsclass->vars['php_ext']}\?act=findpost&(amp;)?pid=#is", "\\1".$ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'].'?act=findpost&pid=', $r['post'] ); - - //-------------------------------- - // Convert attach links - //-------------------------------- - - $r['post'] = preg_replace( "#\[attachmentid=(\d+?)\]#is", ''.$ipsclass->lang['lofi_attach'].'', $r['post'] ); - - $output .= LOFISKIN_posts_entry($r, $winpath); - } - - //-------------------------------- - // Nav array... - //-------------------------------- - - $navarray = _get_nav_array( $topic['forum_id'] ); - - return $output; -} - -//-------------------------------- -// Print it -//-------------------------------- - -function print_it($content, $title='') -{ - global $ipsclass, $std, $DB, $forums, $LOFISKIN, $navarray, $print; - - $fullurl = $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/'; - - $copyright = "Русская версия Invision Power Board © 2001-".date("Y")." Invision Power Services, Inc."; - - if ( $ipsclass->vars['ipb_copy_number'] ) - { - $copyright = ""; - } - - //-------------------------------- - // Nav - //-------------------------------- - - $nav = "".$ipsclass->vars['board_name'].""; - - if ( count($navarray) ) - { - $nav .= " > " . implode( " > ", $navarray ); - } - - $title = $ipsclass->title ? $ipsclass->vars['board_name'].' > '.$ipsclass->title : $ipsclass->vars['board_name']; - - $pages = ""; - - if ( $ipsclass->pages ) - { - $pages = LOFISKIN_pages( $ipsclass->pages ); - } - - $output = str_replace( '<% TITLE %>' , $title , $LOFISKIN['wrapper'] ); - $output = str_replace( '<% CONTENT %>' , $content , $output ); - $output = str_replace( '<% FULL_URL %>' , $fullurl , $output ); - $output = str_replace( '<% COPYRIGHT %>', $copyright, $output ); - $output = str_replace( '<% NAV %>' , $nav , $output ); - $output = str_replace( '<% LINK %>' , $ipsclass->real_link, $output ); - $output = str_replace( '<% LARGE_TITLE %>', $ipsclass->title ? $ipsclass->title : $ipsclass->vars['board_name'], $output ); - $output = str_replace( '<% PAGES %>' , $pages, $output ); - $output = str_replace( "<% CHARSET %>" , $ipsclass->vars['gb_char_set'], $output); - - //----------------------------------------- - // Macros - //----------------------------------------- - - $ipsclass->print->_unpack_macros(); - - if ( is_array( $ipsclass->print->macros ) ) - { - foreach( $ipsclass->print->macros as $i => $row ) - { - if ( $row['macro_value'] != "" ) - { - $output = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $output ); - } - } - } - - $output = preg_replace( "#([^/])style_images/(<\#IMG_DIR\#>|".preg_quote($ipsclass->skin['_imagedir'], '/').")#is", "\\1".$ipsclass->vars['board_url']."/style_images/\\2", $output ); - $output = preg_replace( "#([\"'])style_emoticons/#is", "\\1".$ipsclass->vars['board_url']."/style_emoticons/", $output ); - - $output = str_replace( "<#IMG_DIR#>", $ipsclass->skin['_imagedir'], $output ); - $output = str_replace( "<#EMO_DIR#>", $ipsclass->skin['_emodir'] , $output ); - - - - print $output; -} - - - - - - -//-------------------------------- -// Recursively get forums -//-------------------------------- - -function _get_forums() -{ - global $ipsclass, $forums, $LOFISKIN, $winpath; - - foreach( $ipsclass->forums->forum_cache['root'] as $id => $forum_data ) - { - if ( is_array($ipsclass->forums->forum_cache[ $forum_data['id'] ]) and count($ipsclass->forums->forum_cache[ $forum_data['id'] ]) ) - { - $html_string .= LOFISKIN_forums_entry_first($forum_data, $winpath); - - $depth_guide = ""; - - if ( is_array( $ipsclass->forums->forum_cache[ $forum_data['id'] ] ) ) - { - foreach( $ipsclass->forums->forum_cache[ $forum_data['id'] ] as $id => $forum_data ) - { - if ( ! $forum_data['redirect_on'] ) - { - $forum_data['total_posts'] = intval( $forum_data['topics'] + $forum_data['posts'] ); - - $html_string .= LOFISKIN_forums_entry($depth_guide, $forum_data, $winpath ); - - $html_string = _get_forums_internal( $forum_data['id'], $html_string, " ".$depth_guide ); - } - } - } - - $html_string .= LOFISKIN_forums_entry_end($depth_guide); - } - } - - return $html_string; -} - -function _get_forums_internal($root_id, $html_string="", $depth_guide="") -{ - global $ipsclass, $forums, $LOFISKIN, $winpath; - - if ( is_array( $ipsclass->forums->forum_cache[ $root_id ] ) ) - { - $html_string .= LOFISKIN_forums_entry_start($depth_guide); - - foreach( $ipsclass->forums->forum_cache[ $root_id ] as $id => $forum_data ) - { - if ( ! $forum_data['redirect_on'] ) - { - $forum_data['total_posts'] = intval( $forum_data['topics'] + $forum_data['posts'] ); - - $html_string .= LOFISKIN_forums_entry($depth_guide, $forum_data, $winpath ); - - $html_string = _get_forums_internal( $forum_data['id'], $html_string, " ".$depth_guide ); - } - } - - $html_string .= LOFISKIN_forums_entry_end($depth_guide); - } - - return $html_string; -} - - - -function _get_nav_array($id) -{ - global $ipsclass, $forums, $LOFISKIN, $winpath; - - $navarray[] = "{$ipsclass->forums->forum_by_id[$id]['name']}"; - - $ids = $ipsclass->forums->forums_get_parents( $id ); - - if ( is_array($ids) and count($ids) ) - { - foreach( $ids as $id ) - { - $data = $ipsclass->forums->forum_by_id[$id]; - - $navarray[] = "{$data['name']}"; - } - } - - return array_reverse($navarray); -} - - -function _get_pages( $total, $pp, $id ) -{ - global $ipsclass, $forums, $LOFISKIN, $navarray, $winpath; - - $page_array = array(); - - //----------------------------------------------- - // Get the number of pages - //----------------------------------------------- - - $pages = ceil( $total / $pp ); - - $pages = $pages ? $pages : 1; - - if ( $pages < 2 ) - { - return ""; - } - - //----------------------------------------------- - // Loppy loo - //----------------------------------------------- - - if ($pages > 1) - { - for( $i = 0; $i <= $pages - 1; ++$i ) - { - $RealNo = $i * $pp; - $PageNo = $i+1; - - $page_array[] = "{$PageNo}"; - } - - } - - return implode( ", ", $page_array ); -} - -//+------------------------------------------------- -// GLOBAL ROUTINES -//+------------------------------------------------- - -function fatal_error($message="", $help="") -{ - echo("$message

$help"); - exit; -} - - - - + LO-FI VERSION! +| > Script written by Matt Mecham +| > Date started: 11th March 2004 +| > Interesting fact: Wrote this while listening to the Stereophonic's +| > 'Performance and Cocktails' CD. That was when they were good. +| > Lo-fi feature took about 1.5 days to write. That's a lot of CD +| > repeating... ++-------------------------------------------------------------------------- +*/ + +//----------------------------------------------- +// USER CONFIGURABLE ELEMENTS +//----------------------------------------------- + +define( 'LOFI_NAME' , 'lofiversion' ); + +if ( substr(PHP_OS, 0, 3) == 'WIN' OR strstr( php_sapi_name(), 'cgi') OR php_sapi_name() == 'apache2filter' ) +{ + define( 'THIS_PATH', str_replace( '\\', '/', dirname( __FILE__ ) ) .'/' ); + define( 'ROOT_PATH', str_replace( LOFI_NAME, '', THIS_PATH ) ); + define( 'SERVER' , 'WIN' ); +} +else +{ + define( 'THIS_PATH', str_replace( '\\', '/', dirname( __FILE__ ) ) .'/' ); + define( 'ROOT_PATH', str_replace( LOFI_NAME, '', THIS_PATH ) ); + define( 'SERVER' , 'UNX' ); +} + +define( 'KERNEL_PATH', ROOT_PATH.'ips_kernel/' ); + +//----------------------------------------------- +// NO USER EDITABLE SECTIONS BELOW +//----------------------------------------------- + +define ( 'IN_IPB', 1 ); +define ( 'IN_DEV', 0 ); + +error_reporting (E_ERROR | E_WARNING | E_PARSE); +set_magic_quotes_runtime(0); + +define ( 'USE_SHUTDOWN', 1 ); + +//=========================================================================== +// DEBUG CLASS +//=========================================================================== + +class Debug +{ + function startTimer() + { + global $starttime; + $mtime = microtime (); + $mtime = explode (' ', $mtime); + $mtime = $mtime[1] + $mtime[0]; + $starttime = $mtime; + } + function endTimer() + { + global $starttime; + $mtime = microtime (); + $mtime = explode (' ', $mtime); + $mtime = $mtime[1] + $mtime[0]; + $endtime = $mtime; + $totaltime = round (($endtime - $starttime), 5); + return $totaltime; + } +} + +//=========================================================================== +// MAIN PROGRAM +//=========================================================================== + +$INFO = array(); + +//-------------------------------- +// Load our classes +//-------------------------------- + +require ROOT_PATH . "sources/ipsclass.php"; +require ROOT_PATH . "sources/classes/class_display.php"; +require ROOT_PATH . "sources/classes/class_session.php"; +require ROOT_PATH . "sources/classes/class_forums.php"; +require KERNEL_PATH . "class_converge.php"; +require ROOT_PATH . "conf_global.php"; + +# Initiate super-class +$ipsclass = new ipsclass(); +$ipsclass->vars = $INFO; + +//-------------------------------- +// The clocks a' tickin' +//-------------------------------- + +$Debug = new Debug; +$Debug->startTimer(); + +//-------------------------------- +// Load the DB driver and such +//-------------------------------- + +$ipsclass->init_db_connection(); + +//-------------------------------- +// INIT other classes +//-------------------------------- + +$ipsclass->print = new display(); +$ipsclass->print->ipsclass =& $ipsclass; + +$ipsclass->sess = new session(); +$ipsclass->sess->ipsclass =& $ipsclass; + +$ipsclass->forums = new forum_functions(); +$ipsclass->forums->ipsclass =& $ipsclass; + +//-------------------------------- +// Set up our vars +//-------------------------------- + +$ipsclass->parse_incoming(); + +//-------------------------------- +// Set converge +//-------------------------------- + +$ipsclass->converge = new class_converge( $ipsclass->DB ); + +//=========================================================================== +// Get cache... +//=========================================================================== + +//-------------------------------- +// Start off the cache array +//-------------------------------- + +$ipsclass->cache_array = array('attachtypes','bbcode', 'multimod','ranks','profilefields','components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages'); + +$ipsclass->init_load_cache( $ipsclass->cache_array ); + +//-------------------------------- +// Initialize the FUNC +//-------------------------------- + +$ipsclass->initiate_ipsclass(); + +//-------------------------------- +// Register Shutdown Function +//-------------------------------- + +if ( USE_SHUTDOWN ) +{ + @chdir( ROOT_PATH ); + $ROOT_PATH = getcwd(); + + register_shutdown_function( array( &$ipsclass, 'my_deconstructor') ); +} + +//-------------------------------- +// The rest :D +//-------------------------------- + +$ipsclass->member = $ipsclass->sess->authorise(); + +//-------------------------------- +// Load the skin +//-------------------------------- + +$ipsclass->load_skin(); + +$ipsclass->vars['display_max_topics'] = 150; +$ipsclass->vars['display_max_posts'] = 50; + +$ipsclass->load_language('lang_global'); + +//-------------------------------- +// Initialize the forums +//-------------------------------- + +$ipsclass->forums->strip_invisible = 1; +$ipsclass->forums->forums_init(); + +$ipsclass->session_id = ""; +$ipsclass->base_url = $ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'].'?'; + +//-------------------------------- +// Banned? +//-------------------------------- + +if ( is_array( $ipsclass->cache['banfilters'] ) and count( $ipsclass->cache['banfilters'] ) ) +{ + foreach ($ipsclass->cache['banfilters'] as $ip) + { + $ip = str_replace( '\*', '.*', preg_quote($ip, "/") ); + + if ( preg_match( "/^$ip$/", $ipsclass->input['IP_ADDRESS'] ) ) + { + fatal_error( $ipsclass->lang['lofi_noperm'] ); + } + } +} + +//-------------------------------- +// Do we have permission to view +// the board? +//-------------------------------- + +if ($ipsclass->member['g_view_board'] != 1) +{ + $ipsclass->boink_it( $ipsclass->base_url ); +} + +//-------------------------------- +// Is the board offline? +//-------------------------------- + +if ($ipsclass->vars['board_offline'] == 1) +{ + if ($ipsclass->member['g_access_offline'] != 1) + { + $ipsclass->boink_it( $ipsclass->base_url ); + } +} + +//-------------------------------- +// Is log in enforced? +//-------------------------------- + +if ( (! $ipsclass->member['id']) and ($ipsclass->vars['force_login'] == 1) ) +{ + $ipsclass->boink_it( $ipsclass->base_url ); + +} + +//=========================================================================== +// DO STUFF! +//=========================================================================== + +//-------------------------------- +// Require 'skin' +//-------------------------------- + +require_once( THIS_PATH.'lofi_skin.php' ); + +//-------------------------------- +// Not index.php/ ? Redirect +// We do this so we can use relative +// links... +//-------------------------------- + +$main_string = $ipsclass->my_getenv('REQUEST_URI') ? $ipsclass->my_getenv('REQUEST_URI') : $ipsclass->my_getenv('PHP_SELF'); + +if ( SERVER == 'WIN' ) +{ + $winpath = $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php?'; + $main_string = $ipsclass->my_getenv('QUERY_STRING'); +} +else +{ + if ( strpos( $main_string, '/'.LOFI_NAME.'/index.php/' ) === FALSE ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php/' ); + } + + if ( strstr( $main_string, "/" ) ) + { + $main_string = str_replace( "/", "", strrchr( $main_string, "/" ) ); + } +} + +$main_string = str_replace( ".html", "", $main_string ); + +$action = 'index'; +$id = 0; +$st = 0; + +//-------------------------------- +// Pages? +//-------------------------------- + +if ( strstr( $main_string, "-" ) ) +{ + list( $main, $start ) = explode( "-", $main_string ); + + $main_string = $main; + $st = $start; +} + +$st = intval($st); + +//-------------------------------- +// What we doing? +//-------------------------------- + +if ( preg_match( "#t\d#", $main_string ) ) +{ + $action = 'topic'; + $id = intval( preg_replace( "#t(\d+)#", "\\1", $main_string ) ); +} +if ( preg_match( "#f\d#", $main_string ) ) +{ + $action = 'forum'; + $id = intval( preg_replace( "#f(\d+)#", "\\1", $main_string ) ); +} + + +//-------------------------------- +// Do it! +//-------------------------------- + +$output = ""; + +switch ( $action ) +{ + case 'forum': + $ipsclass->real_link = $ipsclass->base_url.'showforum='.$id; + $output = get_forum_page($id, $st); + break; + case 'topic': + $ipsclass->real_link = $ipsclass->base_url.'showtopic='.$id; + $output = get_topic_page($id, $st); + break; + default: + $ipsclass->real_link = $ipsclass->base_url; + $output = get_index_page(); + break; +} + +print_it($output); + + +//-------------------------------- +// Board index +//-------------------------------- + +function get_index_page() +{ + global $ipsclass, $std, $DB, $forums, $LOFISKIN; + + return LOFISKIN_forums( _get_forums() ); +} + +//-------------------------------- +// Forums index +//-------------------------------- + +function get_forum_page($id, $st) +{ + global $ipsclass, $std, $DB, $forums, $LOFISKIN, $navarray, $winpath; + + $output = ""; + + if ( $ipsclass->check_perms($ipsclass->forums->forum_by_id[$id]['read_perms']) != TRUE and ( ! $ipsclass->forums->forum_by_id[$id]['permission_showtopic'] ) ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + //-------------------------------- + // Passy? + //-------------------------------- + + if ( $ipsclass->forums->forum_by_id[$id]['password'] != '' ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + //-------------------------------- + // Nav array... + //-------------------------------- + + $navarray = _get_nav_array($id); + + $ipsclass->title = $ipsclass->forums->forum_by_id[ $id ]['name']; + + if ( ! $ipsclass->forums->forum_by_id[ $id ]['sub_can_post'] ) + { + //-------------------------------- + // Show forums? + //-------------------------------- + + if ( is_array($ipsclass->forums->forum_cache[ $id ]) and count($ipsclass->forums->forum_cache[ $id ]) ) + { + $html_string .= LOFISKIN_forums_entry_first($ipsclass->forums->forum_by_id[ $id ], $winpath); + + $depth_guide = ""; + + foreach( $ipsclass->forums->forum_cache[ $id ] as $forum_data ) + { + if( $forum_data['redirect_on'] ) + { + continue; + } + + $forum_data['total_posts'] = intval( $forum_data['topics'] + $forum_data['posts'] ); + + $html_string .= LOFISKIN_forums_entry($depth_guide, $forum_data, $winpath ); + + $html_string = _get_forums_internal( $forum_data['id'], $html_string, " ".$depth_guide ); + } + + $html_string .= LOFISKIN_forums_entry_end($depth_guide); + } + + $output = $html_string; + + //-------------------------------- + // Return.. + //-------------------------------- + + return LOFISKIN_forums($output); + } + else + { + //-------------------------------- + // Show topics... + //-------------------------------- + + $ipsclass->pages = _get_pages( $ipsclass->forums->forum_by_id[ $id ]['topics'], $ipsclass->vars['display_max_topics'], 'f'.$id ); + + if ( ! $ipsclass->member['g_other_topics']) + { + $query = " and starter_id=".$ipsclass->member['id']; + } + + //-------------------------------- + // Topics... + //-------------------------------- + + $ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'topics', + 'where' => "approved=1 and forum_id=$id".$query, + 'order' => 'pinned desc, last_post desc', + 'limit' => array( $st, $ipsclass->vars['display_max_topics'] ) + ) ); + $ipsclass->DB->simple_exec(); + + while( $r = $ipsclass->DB->fetch_row() ) + { + if ( $r['pinned'] ) + { + $r['_prefix'] = $ipsclass->lang['lofi_pinned']; + } + else + { + $r['_prefix'] = ""; + } + + if ($r['state'] == 'link') + { + $t_array = explode("&", $r['moved_to']); + $r['tid'] = $t_array[0]; + $r['forum_id'] = $t_array[1]; + $r['title'] = $r['title']; + $r['posts'] = '--'; + $r['_prefix'] = $ipsclass->lang['lofi_moved']; + } + + $r['lang_key'] = ($r['posts'] > 1 OR $r['posts'] == 0) ? 'lofi_replies' : 'lofi_reply'; + + $output .= LOFISKIN_topics_entry($r, $winpath); + } + + //-------------------------------- + // Return.. + //-------------------------------- + + if( $output ) + { + return LOFISKIN_topics($output); + } + } +} + +//-------------------------------- +// Topics index +//-------------------------------- + +function get_topic_page($id, $st) +{ + global $ipsclass, $std, $DB, $forums, $LOFISKIN, $navarray, $winpath; + + $output = ""; + + //-------------------------------- + // Get post_parser + //-------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $parser = new parse_bbcode(); + $parser->ipsclass =& $ipsclass; + $parser->allow_update_caches = 1; + + $parser->bypass_badwords = intval($ipsclass->member['g_bypass_badwords']); + + //-------------------------------- + // get topic + //-------------------------------- + + $topic = $ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'topics', 'where' => "tid=".$id." and approved=1" ) ); + + if ( ! $ipsclass->member['g_other_topics'] AND $topic['starter_id'] != $ipsclass->member['id'] ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + if ( ! $topic['tid'] ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + if ( ! $ipsclass->forums->forum_by_id[ $topic['forum_id'] ] ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + if ( !$ipsclass->forums->forums_check_access( $topic['forum_id'], 0, 'forum', 1 ) ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + if ( $ipsclass->forums->read_topic_only ) + { + $ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' ); + } + + $ipsclass->pages = _get_pages( $topic['posts'] + 1, $ipsclass->vars['display_max_posts'], 't'.$id ); + + $ipsclass->title = $topic['title']; + + //-------------------------------- + // get posts... + //-------------------------------- + + $ipsclass->DB->build_query( array( 'select' => 'p.*', + 'from' => array( 'posts' => 'p' ), + 'where' => "p.topic_id={$id} AND p.queued=0", + 'add_join' => array( 0 => array( 'select' => 'm.members_display_name, m.mgroup', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.id=p.author_id', + 'type' => 'left' ) ), + 'order' => 'pid', + 'limit' => array( $st, $ipsclass->vars['display_max_posts'] ) + ) ); + + $ipsclass->DB->simple_exec(); + + while( $r = $ipsclass->DB->fetch_row() ) + { + $r['post_date'] = $ipsclass->get_date( $r['post_date'], 'LONG', 1 ); + + $r['author_name'] = $r['members_display_name'] ? $r['members_display_name'] : $r['author_name']; + + $parser->parse_html = ( $ipsclass->forums->forum_by_id[ $topic['forum_id'] ]['use_html'] and $ipsclass->cache['group_cache'][ $r['mgroup'] ]['g_dohtml'] and $r['post_htmlstate'] ) ? 1 : 0; + $parser->parse_nl2br = $r['post_htmlstate'] == 2 ? 1 : 0; + + $r['post'] = $parser->pre_display_parse( $r['post'] ); + + //-------------------------------- + // Manage POST / TOPIC tags index.php?act=findpost&pid=415 + // + //-------------------------------- + + $r['post'] = preg_replace( "#([\"'])index\.{$ipsclass->vars['php_ext']}\?showtopic=#i" , "\\1".$ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'].'?showtopic=' , $r['post'] ); + $r['post'] = preg_replace( "#([\"'])index\.{$ipsclass->vars['php_ext']}\?act=findpost&(amp;)?pid=#is", "\\1".$ipsclass->vars['board_url'].'/index.'.$ipsclass->vars['php_ext'].'?act=findpost&pid=', $r['post'] ); + + //-------------------------------- + // Convert attach links + //-------------------------------- + + $r['post'] = preg_replace( "#\[attachmentid=(\d+?)\]#is", ''.$ipsclass->lang['lofi_attach'].'', $r['post'] ); + + $output .= LOFISKIN_posts_entry($r, $winpath); + } + + //-------------------------------- + // Nav array... + //-------------------------------- + + $navarray = _get_nav_array( $topic['forum_id'] ); + + return $output; +} + +//-------------------------------- +// Print it +//-------------------------------- + +function print_it($content, $title='') +{ + global $ipsclass, $std, $DB, $forums, $LOFISKIN, $navarray, $print; + + $fullurl = $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/'; + + $copyright = "Invision Power Board © 2001-".date("Y")." Invision Power Services, Inc."; + + if ( $ipsclass->vars['ipb_copy_number'] ) + { + $copyright = ""; + } + + //-------------------------------- + // Nav + //-------------------------------- + + $nav = "".$ipsclass->vars['board_name'].""; + + if ( count($navarray) ) + { + $nav .= " > " . implode( " > ", $navarray ); + } + + $title = $ipsclass->title ? $ipsclass->vars['board_name'].' > '.$ipsclass->title : $ipsclass->vars['board_name']; + + $pages = ""; + + if ( $ipsclass->pages ) + { + $pages = LOFISKIN_pages( $ipsclass->pages ); + } + + $output = str_replace( '<% TITLE %>' , $title , $LOFISKIN['wrapper'] ); + $output = str_replace( '<% CONTENT %>' , $content , $output ); + $output = str_replace( '<% FULL_URL %>' , $fullurl , $output ); + $output = str_replace( '<% COPYRIGHT %>', $copyright, $output ); + $output = str_replace( '<% NAV %>' , $nav , $output ); + $output = str_replace( '<% LINK %>' , $ipsclass->real_link, $output ); + $output = str_replace( '<% LARGE_TITLE %>', $ipsclass->title ? $ipsclass->title : $ipsclass->vars['board_name'], $output ); + $output = str_replace( '<% PAGES %>' , $pages, $output ); + $output = str_replace( "<% CHARSET %>" , $ipsclass->vars['gb_char_set'], $output); + + //----------------------------------------- + // Macros + //----------------------------------------- + + $ipsclass->print->_unpack_macros(); + + if ( is_array( $ipsclass->print->macros ) ) + { + foreach( $ipsclass->print->macros as $row ) + { + if ( $row['macro_value'] != "" ) + { + $output = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $output ); + } + } + } + + $output = preg_replace( "#([^/])style_images/(<\#IMG_DIR\#>|".preg_quote($ipsclass->skin['_imagedir'], '/').")#is", "\\1".$ipsclass->vars['board_url']."/style_images/\\2", $output ); + $output = preg_replace( "#([\"'])style_emoticons/#is", "\\1".$ipsclass->vars['board_url']."/style_emoticons/", $output ); + + $output = str_replace( "<#IMG_DIR#>", $ipsclass->skin['_imagedir'], $output ); + $output = str_replace( "<#EMO_DIR#>", $ipsclass->skin['_emodir'] , $output ); + + + + print $output; +} + + + + + + +//-------------------------------- +// Recursively get forums +//-------------------------------- + +function _get_forums() +{ + global $ipsclass, $forums, $LOFISKIN, $winpath; + + foreach( $ipsclass->forums->forum_cache['root'] as $forum_data ) + { + if ( is_array($ipsclass->forums->forum_cache[ $forum_data['id'] ]) and count($ipsclass->forums->forum_cache[ $forum_data['id'] ]) ) + { + $html_string .= LOFISKIN_forums_entry_first($forum_data, $winpath); + + $depth_guide = ""; + + if ( is_array( $ipsclass->forums->forum_cache[ $forum_data['id'] ] ) ) + { + foreach( $ipsclass->forums->forum_cache[ $forum_data['id'] ] as $forum_data ) + { + if ( ! $forum_data['redirect_on'] ) + { + $forum_data['total_posts'] = intval( $forum_data['topics'] + $forum_data['posts'] ); + + $html_string .= LOFISKIN_forums_entry($depth_guide, $forum_data, $winpath ); + + $html_string = _get_forums_internal( $forum_data['id'], $html_string, " ".$depth_guide ); + } + } + } + + $html_string .= LOFISKIN_forums_entry_end($depth_guide); + } + } + + return $html_string; +} + +function _get_forums_internal($root_id, $html_string="", $depth_guide="") +{ + global $ipsclass, $forums, $LOFISKIN, $winpath; + + if ( is_array( $ipsclass->forums->forum_cache[ $root_id ] ) ) + { + $html_string .= LOFISKIN_forums_entry_start($depth_guide); + + foreach( $ipsclass->forums->forum_cache[ $root_id ] as $forum_data ) + { + if ( ! $forum_data['redirect_on'] ) + { + $forum_data['total_posts'] = intval( $forum_data['topics'] + $forum_data['posts'] ); + + $html_string .= LOFISKIN_forums_entry($depth_guide, $forum_data, $winpath ); + + $html_string = _get_forums_internal( $forum_data['id'], $html_string, " ".$depth_guide ); + } + } + + $html_string .= LOFISKIN_forums_entry_end($depth_guide); + } + + return $html_string; +} + + + +function _get_nav_array($id) +{ + global $ipsclass, $forums, $LOFISKIN, $winpath; + + $navarray[] = "{$ipsclass->forums->forum_by_id[$id]['name']}"; + + $ids = $ipsclass->forums->forums_get_parents( $id ); + + if ( is_array($ids) and count($ids) ) + { + foreach( $ids as $id ) + { + $data = $ipsclass->forums->forum_by_id[$id]; + + $navarray[] = "{$data['name']}"; + } + } + + return array_reverse($navarray); +} + + +function _get_pages( $total, $pp, $id ) +{ + global $ipsclass, $forums, $LOFISKIN, $navarray, $winpath; + + $page_array = array(); + + //----------------------------------------------- + // Get the number of pages + //----------------------------------------------- + + $pages = ceil( $total / $pp ); + + $pages = $pages ? $pages : 1; + + if ( $pages < 2 ) + { + return ""; + } + + //----------------------------------------------- + // Loppy loo + //----------------------------------------------- + + if ($pages > 1) + { + for( $i = 0; $i <= $pages - 1; ++$i ) + { + $RealNo = $i * $pp; + $PageNo = $i+1; + + $page_array[] = "{$PageNo}"; + } + + } + + return implode( ", ", $page_array ); +} + +//+------------------------------------------------- +// GLOBAL ROUTINES +//+------------------------------------------------- + +function fatal_error($message="", $help="") +{ + echo("$message

$help"); + exit; +} + + + + ?> \ No newline at end of file diff --git a/upload/lofiversion/lofi_skin.php b/upload/lofiversion/lofi_skin.php index 02dfbb39..3e5db161 100644 --- a/upload/lofiversion/lofi_skin.php +++ b/upload/lofiversion/lofi_skin.php @@ -1,5 +1,22 @@ $Date: 2006-03-23 07:34:25 -0500 (Thu, 23 Mar 2006) $ +| > $Revision: 177 $ +| > $Author: brandon $ ++-------------------------------------------------------------------------- +*/ + global $ipsclass; $LOFISKIN['wrapper'] = <<{$r['_prefix']}{$r['title']} ({$r['posts']} {$ipsclass->lang['lofi_replies']}) +\n
  • {$r['_prefix']}{$r['title']} ({$r['posts']} {$ipsclass->lang[$r['lang_key']]})
  • EOF; } diff --git a/upload/modules/index.html b/upload/modules/index.html index 787531db..52a588b2 100644 --- a/upload/modules/index.html +++ b/upload/modules/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/modules/ipb_member_sync.php b/upload/modules/ipb_member_sync.php index 896fdebf..037af246 100644 --- a/upload/modules/ipb_member_sync.php +++ b/upload/modules/ipb_member_sync.php @@ -1,7 +1,7 @@ $Date: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ diff --git a/upload/modules/module_loader.php b/upload/modules/module_loader.php index 8441dbaa..e7751686 100644 --- a/upload/modules/module_loader.php +++ b/upload/modules/module_loader.php @@ -1,24 +1,14 @@ $Date: 2005-10-10 14:03:20 +0100 (Mon, 10 Oct 2005) $ | > $Revision: 22 $ @@ -87,9 +77,7 @@ class module_loader function _return_dead() { - global $ibforums; - - header("Location: ".$ibforums->base_url); + header("Location: ".$this->ipsclass->base_url); exit(); } diff --git a/upload/resources/acpperms.xml b/upload/resources/acpperms.xml new file mode 100644 index 00000000..4daf23d1 --- /dev/null +++ b/upload/resources/acpperms.xml @@ -0,0 +1,857 @@ + + + + + recache + tools + admin + + + + splash + admin + splash + + + + remove + admin + adminlog + + + + add + content + attach + + + + edit + content + attach + + + + remove + content + attach + + + + export + content + attach + + + + import + content + attach + + + + stats + content + attach + + + + search + content + attach + + + + bw-add + content + babw + + + + bw-remove + content + babw + + + + bw-edit + content + babw + + + + bw-export + content + babw + + + + bw-import + content + babw + + + + ban-view + content + babw + + + + ban-add + content + babw + + + + ban-remove + content + babw + + + + add + content + bbcode + + + + edit + content + bbcode + + + + remove + content + bbcode + + + + export + content + bbcode + + + + import + content + bbcode + + + + remove + content + calendars + + + + add + content + calendars + + + + edit + content + calendars + + + + recache + content + calendars + + + + add + admin + components + + + + edit + admin + components + + + + export + admin + components + + + + import + admin + components + + + + remove + admin + emailerror + + + + remove + admin + emaillog + + + + export + lookandfeel + emoticons + + + + import + lookandfeel + emoticons + + + + edit + lookandfeel + emoticons + + + + add + lookandfeel + emoticons + + + + remove + lookandfeel + emoticons + + + + upload + lookandfeel + emoticons + + + + add + content + forum + + + + edit + content + forum + + + + permedit + content + forum + + + + reorder + content + forum + + + + remove + content + forum + + + + recount + content + forum + + + + empty + content + forum + + + + rules + content + forum + + + + skin + content + forum + + + + add + content + group + + + + edit + content + group + + + + remove + content + group + + + + perms + content + group + + + + edit + tools + help + + + + add + tools + help + + + + remove + tools + help + + + + add + lookandfeel + lang + + + + edit + lookandfeel + lang + + + + remove + lookandfeel + lang + + + + export + lookandfeel + lang + + + + import + lookandfeel + lang + + + + add + tools + loginauth + + + + edit + tools + loginauth + + + + diagnostics + tools + loginauth + + + + export + tools + loginauth + + + + import + tools + loginauth + + + + edit + content + mem + + + + suspend + content + mem + + + + add + content + mem + + + + remove + content + mem + + + + title-view + content + mem + + + + title-edit + content + mem + + + + title-add + content + mem + + + + title-remove + content + mem + + + + mod + content + mtools + + + + ban + content + mem + + + + view + content + mtools + + + + add + content + mod + + + + edit + content + mod + + + + remove + content + mod + + + + remove + admin + modlog + + + + add + content + multimod + + + + edit + content + multimod + + + + remove + content + multimod + + + + install + content + msubs + + + + edit + content + msubs + + + + remove + content + msubs + + + + add + content + msubs + + + + search + content + msubs + + + + edit + tools + portal + + + + add + tools + postoffice + + + + edit + tools + postoffice + + + + send + tools + postoffice + + + + remove + tools + postoffice + + + + add + content + field + + + + edit + content + field + + + + remove + content + field + + + + recount + tools + rebuild + + + + rebuild + tools + rebuild + + + + add + content + rssexport + + + + edit + content + rssexport + + + + recache + content + rssexport + + + + remove + content + rssexport + + + + add + content + rssimport + + + + edit + content + rssimport + + + + recache + content + rssimport + + + + remove + content + rssimport + + + + edit + tools + op + + + + remove + tools + op + + + + add + tools + op + + + + export + tools + op + + + + search + tools + op + + + + import + tools + op + + + + edit + lookandfeel + style + + + + rundiff + lookandfeel + skindiff + + + + export + lookandfeel + skindiff + + + + remove + lookandfeel + skindiff + + + + export + lookandfeel + import + + + + import + lookandfeel + import + + + + edit + lookandfeel + image + + + + remove + lookandfeel + image + + + + add + lookandfeel + image + + + + add + lookandfeel + sets + + + + edit + lookandfeel + sets + + + + remove + lookandfeel + sets + + + + rebuild + lookandfeel + sets + + + + edit + lookandfeel + templ + + + + remove + lookandfeel + templ + + + + add + lookandfeel + templ + + + + edit + lookandfeel + wrap + + + + recache + lookandfeel + skintools + + + + changemember + lookandfeel + skintools + + + + search + lookandfeel + skintools + + + + remove + admin + spiderlog + + + + show + admin + stats + + + + edit + tools + task + + + + add + tools + task + + + + remove + tools + task + + + + runnow + tools + task + + + + log + tools + task + + + + view + admin + warnlog + + + + remove + admin + warnlog + + + + view + help + support + + + + \ No newline at end of file diff --git a/upload/resources/bbcode.xml b/upload/resources/bbcode.xml new file mode 100644 index 00000000..4aa799c1 --- /dev/null +++ b/upload/resources/bbcode.xml @@ -0,0 +1,89 @@ + + + + + 1 + Post Snap Back + This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default. + snapback + <{POST_SNAPBACK}>]]> + 0 + + 0 + 0 + + + + + + 2 + CODEBOX + Use this BBCode tag to show a scrolling codebox. Useful for long sections of code. + codebox + CODE
    {content}
    ]]>
    + 0 + + 0 + 1 + + Enter your code +
    + + + 3 + Topic Link + This tag provides an easy way to link to a topic + topic + {content}]]> + 1 + + 0 + 1 + Enter the topic ID + Enter the title for this link + + + + 4 + Post Link + This tag provides an easy way to link to a post. + post + {content}]]> + 1 + + 0 + 1 + Enter the Post ID + Enter the title for this link + + + + 5 + SPOILER + Spoiler tag + spoiler + {content}]]> + 0 + + 0 + 1 + + Enter the text to be masked + + + + 6 + Acronym + Whatever + acronym + {option}]]> + 1 + + 1 + 1 + Enter the description for this acronym (EG: Laugh Out Loud) + Enter the acronym (EG: lol) + +
    + +
    \ No newline at end of file diff --git a/upload/resources/components.xml b/upload/resources/components.xml new file mode 100644 index 00000000..947d7967 --- /dev/null +++ b/upload/resources/components.xml @@ -0,0 +1,95 @@ + + + + + 1 + Invision Gallery + Invision Power Services + http://www.invisiongallery.com + 1.3.0 + 1113309894 + + 0 + 1 + gallery + gallery + Complete gallery system for your members + + + 1 + + + + 2 + Invision Community Blog + Invision Power Services + http://www.invisionblog.com + 1.1.2 + 1113310263 + + 0 + 1 + blog + blog + Blogging addition for your members + + {ipb.base_url}automodule=blog + 2 + + + + 3 + Invision Chat (ParaChat) + Invision Power Services + http://chat.invisionsitetools.com + 2.1 + 1113313895 + + 0 + 1 + chatpara + chatpara + Full real-time chat system for your members + + {ipb.base_url}autocom=chatpara + 5 + + + + 4 + Invision Copyright Removal + Invision Power Services + http://www.invisionboard.com + 2.1 + 1113314009 + + 0 + 1 + copyright + copyright + + + + 3 + + + + 5 + SigmaChat + Invision Power Services + http://www.invisionpower.com + 2.1 + 1113313895 + + 0 + 1 + chatsigma + chatsigma + Full real-time chat system for your members + + {ipb.base_url}autocom=chatsigma + 4 + + + + \ No newline at end of file diff --git a/upload/resources/faq.xml b/upload/resources/faq.xml new file mode 100644 index 00000000..9a554a43 --- /dev/null +++ b/upload/resources/faq.xml @@ -0,0 +1,133 @@ + + + + + 1 + Registration benefits +
    During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail.

    In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.

    Once you have registered and logged in, you will have access to your personal messenger and your control panel.

    For more information on these items, please see the relevant sections in this documentation.


    ]]>
    + How to register and the added benefits of being a registered member. + 1 +
    + + + 2 + Cookies and cookie usage +
    If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.


    Clearing Cookies

    You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.

    Internet Explorer 7:
    • Click the "Tools" menu at the top of the browser.
    • Choose "Internet Options" item.
    • Under the "Browsing History" section, click the "Delete" button.
    • Choose the option to delete your cookies.
    Internet Explorer 6:
    • Click the "Tools" menu at the top of the browser.
    • Choose "Internet Options" item.
    • Under the "Temporary Internet Files" section, click the "Delete Cookies" button.
    Firefox:
    • Click the "Edit" menu at the top of the browser.
    • Choose the "Preferences" item.
    • Click the "Privacy" tab, then the "Cookies" tab.
    • Click the button labeled "Clear Cookies Now".
    Opera:
    • Choose the "Tools" menu at the top of the browser.
    • Choose the "Preferences" item.
    • Choose the "Advanced" option.
    • Select the "Cookies" option.
    • Choose "Manage Cookies".
    • Select the website that you wisht o clear the cookies for.
    • Choose the "Delete" option.
    Safari:
    • From the "Safari" menu, choose the "Preferences" item.
    • From the Security dialog box, choose "Bookmarks".
    • Click "Show Cookies".
    • Choose a cookie (or cookies) to delete, or click the "Remove All" button.
    ]]>
    + The benefits of using cookies and how to remove cookies set by this board. + 2 +
    + + + 3 + Recovering lost or forgotten passwords + This means that we cannot email your password to you as we hold no record of your 'uncrypted' password. You can however, apply to have your password reset.

    To do this, click on the Lost Password link found on the log in page.

    Further instruction is available from there.]]>
    + + 4 +
    + + + 4 + Your Control Panel (My Controls) +
    Messenger
    The messenger section is covered in the help file titled 'Your Personal Messenger'.

    Subscriptions

    View Topics:
    View topics that you have subscribed to here, or change the way you are notified for each topic. You can also remove topic subscriptions from here.

    View Forums:
    View forums that you have subscribed to, or change the way you are notified for each forum. You can also remove forum subscriptions from here.

    Personal Profile

    Edit Profile Information:
    Here you can specify your own personal information, such as your birthdate and contact information.

    Edit Personal Portal Information:
    You can change your personal statement, notification and moderation options from this section.

    Edit Signature:
    You can view and manage your signature from here. You may use BBcode to format your signature (to link to images, etc.) or even HTML if the board administrator has allowed it.

    Edit Avatar Settings:
    You can view and manage your personal avatar from here. You may choose an avatar from the board's gallery, link to an offsite image (the image will be resized if it is larger than the dimensions allowed by the board administrator) or upload an image from your computer to use as your avatar.

    Change Personal Photo:
    If the board administrator has enabled personal photos for your user group you can upload an image that will be displayed on your profile.

    Change Display Name:
    If Display Names are allowed on your board, you can change how your name appears on the board from here.

    Options:

    Purchase Paid Subscriptions:
    If there are subscription packages available on the board they will be displayed here. You can choose a subscription package and purchase it, or upgrade your existing subscription (depending on board-specific settings).

    Manage Your Attachments:
    You can view and manage your file attachments from here.

    Manage Friends List:
    You can approve pending friend requests from here (if you have set your profile up to require approval) as well as view and manage your existing friends from this page.

    Manage Ignored Users:
    You may view, add and remove ignored users from this page.

    Email Settings:
    There are several email-specific settings available on this page.
    • Privacy Settings
      • Hide my email address from other members - You can choose to not display your e-mail address to members of the board.
      • Send me updates sent by the board administrator - Your board administrator may want to periodically send newsletters to members of the board, check this to make sure you receive these updates.
    • Board Preferences
      • Include a copy of the post when emailing me from a subscribed topic - If you opt to receive notifications of new posts/topics, a copy of the post/topic body will be sent in the notification e-mail.
      • Send a confirmation email when I receive a new private message - Enabling this will allow the board to send you an e-mail when you receive a new PM.
      • Enable 'Email Notification' by default? - Enabling this will automatically subscribe you to any topic/post you reply to or create. Use the drop-down box to select how you would like to be notified.
    Board Settings:
    You can manage settings related to how the board is displayed/operates from this page. You can choose your timezone and various view options here, such as which text editor you would like to use.

    Change Email Address:
    You can update the email address associated with your account from here.

    Change Password:
    Here you can update the password you use to log in to the board.]]>
    + Editing contact information, personal information, avatars, signatures, board settings, languages and style choices. + 10 +
    + + + 5 + Email Notification of new messages +
    There are three ways to subscribe to a topic:
    • Click the 'Options' menu at the top of a topic, and go to 'Track this topic'
    • On the posting screen when replying to or creating a topic, check the 'Enable email notification of replies?' checkbox.
    • From the 'Email Settings' section of your User CP (My Controls) check the 'Enable Email Notification by default?' option, this will automatically subscribe you to any topic that you make a reply to.
    Please note that there are four different types of subscriptions:

    Immediate Email Notification
    This option will send out a notification immediately after a new topic or reply has been made regardless of your activity.

    Delayed Emailed Notification
    This option will send out a notification if a new topic or reply has been made and you're not active on the board.

    Daily Email Digest
    This option will send out a daily digest showing all new replies or topics for that day.

    Weekly Email Digest
    This option will send out a weekly digest showing all new replies or topics for that week.


    You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click 'Forum Options' menu at the top forum you wish to subscribe to, and click the 'Subscribe to this forum' link.

    To unsubscribe from any forums or topics that you are subscribed to - just go to the 'Subscriptions' section of 'My Controls' and you can do this from there.]]>
    + How to get emailed when a new reply is added to a topic. + 9 +
    + + + 6 + Your Personal Messenger +
    Send a new PM
    This will allow you to send a message to another member. If you have names in your friends list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a 'PM' button on the board (from the member list or a post).
    There is also a 'type-ahead' feature which automatically pulls users from the database as you start typing their name.

    If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line. You may also make this a BCC by clicking the box 'Hide CC recipients from others?'.

    If the administrator allows, you may use BBCode and HTML in your personal message. If you choose to check the 'Add a copy of this message to you sent items folder' box, a copy of the message will be saved for you for later reference. If you tick the 'Track this message?' box, then the details of the message will be available in your 'Message Tracker' where you will be able to see if/when it has been read.

    Finally, if enabled, you can also include attachments to your PMs, such as images or other files.

    Inbox
    Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.

    Sent Items
    This folder is where any sent PMs go to, if selected when sending the message.

    Saved (Unsent) PMs
    This area will allow you to go back to any PM's that you have chosen to save to be sent later.

    Empty PM Folders
    This option provides you with a quick and easy way to clear out all of your PM folders.

    Edit Storage Folders
    You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove 'Sent Items' or 'Inbox'.

    PM Block List
    You may add in users names in this section, or edit any saved entries. This section is used as a ban list, denying the named member the ability to message you.

    Archive Messages
    If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft Excel format. This page is then emailed to your registered email address for your convenience.

    Message Tracker
    This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.
    ]]>
    + How to send personal messages, track them, edit your messenger folders and archive stored messages. + 11 +
    + + + 7 + <![CDATA[Contacting the moderating team & reporting posts]]> + Contacting the moderating team

    If you need to contact a moderator or simply wish to view the complete administration team, you can click the link 'The moderating team' found at the bottom of the main board page (the first page you see when visiting the board), or from 'My Assistant'.

    This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.

    If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.

    Reporting a post

    If the administrator has enabled this function on the board, you'll see a 'Report' button in a post, next to the 'Quote' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn't a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.]]>
    + Where to find a list of the board moderators and administrators. + 16 +
    + + + 8 + Viewing members profile information +
    In the main profile view, there are two semi-static areas, then a tabbed area in the middle.

    Personal Information
    This area, to the left, contains a variety of the user's profile information. This includes the personal photo (if they have uploaded one), the user's rating, a variety of options (such as finding their posts), the user's personal statement, along with some more details about the individual, such as their age, gender, and location. Further down the left, you'll see their statistics and post count, along with their personal messenger information.

    In the center of the profile are a series of tabs. Here, you can find their recent posts, a listing of their comments, and a listing of their friends (you can view the friend's profile information by clicking on their name). Also, if the board has the Invision Power Gallery or Blog components installed, you will see two additional tabs. The Gallery tab will show the last six uploaded images, while the Blog tab will show the last five blog entries.

    To the far right, you'll be able to see who recently visited the person's profile, any recent comments left, and a listing of the users recent friends.

    Adding Comments
    You are able to leave comments about other users. When you bring up their profile, on the far right you will notice a section of recent comments. If you click on the "Add a Comment" button, you will then be able to leave a comment.

    Moderating Comments
    If a rude or otherwise offensive comment is left to you by another member, you can delete the comment in two ways.

    First, you can click on the "Comments" tab, scroll to their comment, place a check in the box, then choose "Delete Selected Comments" from the dropdown list at the bottom. Secondly, you can click on the small "X" button next to the users comment in the Recent Comments area.

    You can also approve and un-approve comments in a similar method. Unapproved comments will not be displayed, while approved comments are displayed to the public. Instead of choosing "Delete Selected Comments", choose Approve or Un-Approve selected comments.

    Rating a User
    The profile supports a user rating system. This will let other users rate down users that cause problems, or value the rating of good users. To edit the rating, bring up the member's profile, then click on the stars to choose the rating.

    Editing Your Profile Settings
    When viewing your own profile while logged in, you'll see an additional tab in the middle called "Settings". Choosing this tab, you'll see some more information to help edit the settings for your profile. Here, you can upload a personal photo (like you would any other attachment) or choose to remove it. If the remove box is checked, the photo will be removed when you click on Save Settings. Also, you edit your personal statement. This is very similar to your signature, but is tied directly into your profile rather than to your posts. A little bit further down, you can choose how you'd like to be notified of people adding you as a friend or leaving comments. You can choose not to be notified, or notify by email or Personal Message (PM). At the bottom, you can choose to approve comments before they're posted to your profile, and also choose to approve a user adding you as a friend.

    On the left hand side of the profile screen, you can edit your personal information. You can set your gender, birth date, location, and also edit your Personal Messenger information.
    ]]>
    + How to view members contact information. + 15 +
    + + + 9 + Viewing active topics and new posts +
    The 'View New Posts' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.]]>
    + How to view all the topics which have a new reply today and the new posts made since your last visit. + 8 +
    + + + 10 + Searching Topics and Posts +
    There are two types of search form available, simple search and advanced search. You may switch between the two using the 'More Options' and 'Simple Mode' buttons.

    Simple Mode

    All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.

    Advanced Mode

    The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.

    If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.

    There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.]]>
    + How to use the search feature. + 7 +
    + + + 11 + Logging in and out +
    When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.

    You can also choose to hide - this will keep your name from appearing in the active users list - if the board administrator allows anonymous logins.

    Logging out is simply a matter of clicking on the 'Log Out' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the 'Cookies' help file for more information.]]>
    + How to log in and out from the board and how to remain anonymous and not be shown on the active users list. + 3 +
    + + + 12 + My Assistant +
    My Assistant has four seperate feature tabs:
    • Information - this tabs offers links to the overall and daily Top Ten posters, as well as your last ten posts on the board. You can also click to view the Moderation Team.
    • New Posts - will show you a link to any new posts made since your last visit, and how long ago they were posted.
    • Search - using this, you can search the forum basically the same way the standard search function works. This box will show you the number of results, and allow you to click to view them
    • Recent PMs - on this tab, you can view your 5 most recent PMs and when they were received.
    The My Assistant is also used when a new PM arrives. If you have selected to be notified when a new PM is received, the My Assistant box will appear on your screen displaying your new PM.
    ]]>
    + A comprehensive guide to use this handy little feature. + 12 +
    + + + 13 + Posting +
    Posting new topics and replying

    When making a post, you will most likely have the option to use IBF/BB Code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the 'BB Code Help' link under the emoticon box to launch the help window.

    Rich Text Editor
    The Rich Text Editor (RTE) is a WYSIWYG editor, similar to WordPad. Instead of seeing the bits of BB Code, you'll see how the post will look when it's finally posted, like a live preview. You can take advantage of the RTE if you have Internet Explorer 6 or higher, or Firefox 1.5 or higher.

    The Toolbar
    From left to right, top to bottom:
    • Remove Formatting: This will remove all formatting from the post.
    • Insert Special Item: This box will allow you to insert items such as links, images, email addresses, and wrappers for code and quotes. See the BB Code Help for further information on what these objects will look like.
    • Fonts: This will allow you to choose a font for your text. If you have the RTE enabled, the chosen font(s) will be displayed within your post.
    • Sizes: In this box, you can choose from seven different sizes for your fonts.
    • Undo and Redo: These two arrows will undo or redo your last action.
    • Entry box size buttons: Here, you can increase or decrease the size of the post box, giving you more or less room to work.
    • Standard Editor/RTE Toggle: This button will switch between the Standard Editor and the RTE. You can also change this setting via "My Controls"
    • Styling Buttons: Bold, italic, and underline respectively, which will apply said styling to your selected text.
    • Text Formatting: This button will let you choose to superscript, subscript, or strikethrough your text.
    • Text Color: This box will display a list of several colors in which to apply to your text.
    • Emoticons: The button with the smiley icon will display a listing of all the emoticons for the board, and allow you to insert them into the post.
    • Outdent/Indent: These two buttons will let you indent your text to the right, or outdent it back to the left.
    • Text Alignment Buttons: These buttons will let you choose left, center, right, or justified alignment for the selected text.
    • Lists: These two buttons will let you create ordered (ie. numbered) or unordered (ie. bulleted) lists.
    Attachments
    If your Admin has permitted adding attachments to your posts, you will see an attachment box. This box will display the current attachments in a dropdown list, let you add attachments from your computer (by clicking on the Browse button), and display how much a single upload can be. Once you've selected the file to upload, click on the "Upload" button. An "uploading" display will take the place of the attachments box while the upload is in progress.

    Toggle Options
    There are three options available when making a post or a reply. 'Enable emoticons?' if this is unchecked, then any text that would normally be converted into an emoticon will not be. 'Enable signature?' allows you to choose whether or not you would like your signature to appear on that individual post. 'Enable email notification of replies?' ticking this box will mean that you will receive e-mail updates to the topic, see the 'Email Notification of new messages' help topic for more information on this. If the Admin has allowed it, you can also choose to enable HTML parsing for this post.

    You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic.

    Poll Options

    If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left.

    Quoting Posts

    Displayed below each post in a topic, there is a 'Quote' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted.

    Editing Posts

    Above any posts that you have made, you may see an 'Edit' button. Pressing this will allow you to edit the post that you had previously made.

    When editing you may see an option to 'Add the 'Edit by' line in this post?'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post.

    If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired.

    Fast Reply

    Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the 'More Options' button will take you to the normal posting screen.]]>
    + A guide to the features avaliable when posting on the boards. + 5 +
    + + + 14 + Member List +
    Basic Search
    If you'd like to search for a particular member by name, you can type in the name of the member in the far left field. 'Begin With' will search for members beginning with the letters typed in the search, while 'Contain' will search for names containing the characters.

    If you'd like to only search for members that have a photo in their profile, check the "Must have a photo" box. You can also narrow your search down to a user's gender and their minimum rating.

    Advanced Search
    By clicking on the "Toggle More Options..." button, you can display more fields in order to search for members.

    Home Page Contains: This field will search for the entered text within the contents of a user's home page fields.

    Signature Contains: Similar to Home Page Contains, this will search the signatures of users instead.

    Messengers: In this area, you can search for particular screen names for the dominant instant messaging clients.

    Post & Date Ranges: This area will allow you to narrow down your search to particular posting and other date information, such as users that have joined after a certain date, or users that have more than a certain number of posts.

    Sorting
    Just below the search area is a set of fields to sort your results. You can choose a particular group (or All Members) in the first field, then sort those by Name, Posts, Joined Date, or Rating (if enabled) in either Ascending (A-Z) or Descending (Z-A) order. The final field will control how many users are displayed per page.

    Member Listing
    At the bottom are the profile cards for members matching your search. These will display a basic summary of the user, as well as their photo if they have one. By clicking on the user's photo or name, you can choose to view their full profile, add them as a friend, send them a message, or find their posts.
    ]]>
    + Explaining the different ways to sort and search through the list of members. + 14 +
    + + + 15 + Topic Options +
    From this menu, you can select from the following options:
    • Track this topic - this option will allow you to receive e-mail updates for the topic, see the 'Email Notification of new messages' help file for more information on this
    • Email this topic - from here you can email a link of this topic to someone by entering their name, email, and desired language.
    • Print this topic - this will present the current topic you are viewing a printer friendly format, removing most images and using a standard layout.
    • Download this topic - will show the topic in a number of different formats. 'Printer Friendly Version' will display a version of the topic that is suitable for printing out. 'Download HTML Version' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. 'Download Microsoft Word Version' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.
    • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages' help file for more information on this
    You can also select one of three topic display modes:

    • Outline - shows you one post with a list of the remaining posts at the below it, in tree format.
    • Standard - this display mode shows the topic in the standard layout of one post above another, in the order selected by the administrator.
    • Linear+ - is similiar to standard with the added benefit of having the first post of the topic always shown at the top, no matter what page of the topic you are on.
    ]]>
    + A guide to the options avaliable when viewing a topic. + 6 +
    + + + 16 + Calendar +
    You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the 'Add New Event' button to be taken to the event posting screen. There are three types of events that you can now add:

    • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.

    • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.

    • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.

    If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.

    Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.]]>
    + More information on the boards calendar feature. + 13 +
    +
    + +
    \ No newline at end of file diff --git a/upload/resources/ipb_templates.xml b/upload/resources/ipb_templates.xml new file mode 100644 index 00000000..8153ec11 --- /dev/null +++ b/upload/resources/ipb_templates.xml @@ -0,0 +1,13615 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/upload/resources/macro.xml b/upload/resources/macro.xml new file mode 100644 index 00000000..d68c75d5 --- /dev/null +++ b/upload/resources/macro.xml @@ -0,0 +1,470 @@ + + + + + A_LOCKED_B + /t_closed.gif' border='0' alt='Closed Topic' />]]> + + + + A_MOVED_B + /t_moved.gif' border='0' alt='Moved Topic'>]]> + + + + A_POLLONLY_B + /t_closed.gif' border='0' alt='Poll Only' />]]> + + + + A_POST + /t_new.gif' border='0' alt='Start new topic' />]]> + + + + A_REPLY + /t_reply.gif' border='0' alt='Reply to this topic' />]]> + + + + A_POLL + /t_poll.gif' border='0' alt='Start Poll' />]]> + + + + A_STAR + /pip.gif' border='0' alt='*' />]]> + + + + B_HOT + /f_hot.gif' border='0' alt='Hot topic' />]]> + + + + B_HOT_NN + /f_hot_no.gif' border='0' alt='No new' />]]> + + + + B_LOCKED + /f_closed.gif' border='0' alt='Closed' />]]> + + + + B_MOVED + /f_moved.gif' border='0' alt='Moved' />]]> + + + + B_NEW + /f_norm.gif' border='0' alt='New Posts' />]]> + + + + B_NORM + /f_norm_no.gif' border='0' alt='No New Posts' />]]> + + + + B_PIN + /f_pinned.gif' border='0' alt='Pinned' />]]> + + + + B_POLL + /f_poll.gif' border='0' alt='Poll' />]]> + + + + B_POLL_NN + /f_poll_no.gif' border='0' alt='No new votes' />]]> + + + + B_HOT_DOT + /f_hot_dot.gif' border='0' alt='New Posts' />]]> + + + + B_NEW_DOT + /f_norm_dot.gif' border='0' alt='No New Posts' />]]> + + + + B_HOT_NN_DOT + /f_hot_no_dot.gif' border='0' alt='No New Posts*' />]]> + + + + B_NORM_DOT + /f_norm_no_dot.gif' border='0' alt='No New Posts*' />]]> + + + + B_POLL_DOT + /f_poll_dot.gif' border='0' alt='Poll*' />]]> + + + + B_POLL_NN_DOT + /f_poll_no_dot.gif' border='0' alt='No New Votes*' />]]> + + + + C_LOCKED + /bf_readonly.gif' border='0' alt='Read Only Forum' />]]> + + + + C_OFF + /bf_nonew.gif' border='0' alt='No New Posts' />]]> + + + + C_OFF_CAT + /bc_nonew.gif' border='0' alt='No New Posts' />]]> + + + + C_OFF_RES + /br_nonew.gif' border='0' alt='No New Posts' />]]> + + + + C_ON + /bf_new.gif' border='0' alt='New Posts' />]]> + + + + C_ON_CAT + /bc_new.gif' border='0' alt='New Posts' />]]> + + + + C_ON_RES + /br_new.gif' border='0' alt='New Posts' />]]> + + + + F_ACTIVE + /user.gif' border='0' alt='Active Users' />]]> + + + + F_NAV_SEP +  ]]> + + + + F_NAV + /nav.gif' border='0' alt='>' />]]> + + + + F_STATS + /stats.gif' border='0' alt='Board Stats' />]]> + + + + NO_PHOTO + /nophoto.gif' border='0' alt='No Photo' />]]> + + + + CAMERA + /camera.gif' border='0' alt='Photo' />]]> + + + + M_READ + /f_norm_no.gif' border='0' alt='Read Msg' />]]> + + + + M_UNREAD + /f_norm.gif' border='0' alt='Unread Msg' />]]> + + + + P_AOL + /p_aim.gif' border='0' alt='AOL' />]]> + + + + P_DELETE + /p_delete.gif' border='0' alt='Delete Post' />]]> + + + + P_EDIT + /p_edit.gif' border='0' alt='Edit Post' />]]> + + + + P_EMAIL + /p_email.gif' border='0' alt='Email Poster' />]]> + + + + P_ICQ + /p_icq.gif' border='0' alt='ICQ' />]]> + + + + P_MSG + /p_pm.gif' border='0' alt='PM' />]]> + + + + P_QUOTE + /p_quote.gif' border='0' alt='Quote Post' />]]> + + + + P_WEBSITE + /p_www.gif' border='0' alt='Users Website' />]]> + + + + P_YIM + /p_yim.gif' border='0' alt='Yahoo' />]]> + + + + P_REPORT + /p_report.gif' border='0' alt='Report Post' />]]> + + + + P_MSN + /p_msn.gif' border='0' alt='MSN' />]]> + + + + CAT_IMG + /nav_m.gif' border='0' alt='>' width='8' height='8' />]]> + + + + NEW_POST + /newpost.gif' border='0' alt='Goto first unread' title='Goto first unread' hspace=2 />]]> + + + + LAST_POST + /lastpost.gif' border='0' alt='Last Post' />]]> + + + + BR_REDIRECT + /br_redirect.gif' border='0' alt='Redirect' />]]> + + + + INTEGRITY_MSGR + /p_im.gif' border='0' alt='Integrity Messenger IM' />]]> + + + + ADDRESS_CARD + /addresscard.gif' border='0' alt='Mini Profile' />]]> + + + + T_QREPLY + /t_qr.gif' border='0' alt='Fast Reply' />]]> + + + + T_OPTS + /t_options.gif' border='0' alt='Topic Options' />]]> + + + + CAL_NEWEVENT + /cal_newevent.gif' border='0' alt='Add New Event' />]]> + + + + F_RULES + /forum_rules.gif' border='0' alt='Forum Rules' />]]> + + + + WARN_0 + /warn0.gif' border='0' alt='-----' />]]> + + + + WARN_1 + /warn1.gif' border='0' alt='X----' />]]> + + + + WARN_2 + /warn2.gif' border='0' alt='XX---' />]]> + + + + WARN_3 + /warn3.gif' border='0' alt='XXX--' />]]> + + + + WARN_4 + /warn4.gif' border='0' alt='XXXX-' />]]> + + + + WARN_5 + /warn5.gif' border='0' alt='XXXXX' />]]> + + + + WARN_ADD + /warn_add.gif' border='0' alt='+' />]]> + + + + WARN_MINUS + /warn_minus.gif' border='0' alt='-' />]]> + + + + PB_USER_ONLINE + /p_online.gif' border='0' alt='User is online!' />]]> + + + + PB_USER_OFFLINE + /p_offline.gif' border='0' alt='User is offline' />]]> + + + + ATTACH_ICON + /attachicon.gif' border='0' alt='Topic has attachments' />]]> + + + + MSG_FOLDER + /msg_folder.gif' border='0' alt='-' />]]> + + + + ITEM_START + /nav_m_dark.gif' border='0' alt='.' />]]> + + + + ACTIVE_LIST_SEP + , + + + + BC_QUEUED_POSTS + /bc_queued.gif' alt='*' border='0' />]]> + + + + A_APOLL + /t_addpoll.gif' border='0' alt='Add Poll' />]]> + + + + F_CALEN + /calen.gif' border='0' alt='calendar' />]]> + + + + E_PLUS + /exp_plus.gif' border='0' alt='Expand' />]]> + + + + E_MINUS + /exp_minus.gif' border='0' alt='Collapse' />]]> + + + + test + test + + + + P_UP + /p_up.gif' border='0' alt='Go to the top of the page' />]]> + + + + POST_SNAPBACK + /post_snapback.gif' alt='*' border='0' />]]> + + + + P_CARD + /p_card.gif' border='0' alt='Profile Card' />]]> + + + + PRO_AIM + /profile_aim.gif' border='0' alt='AIM' />]]> + + + + PRO_ITEM + /profile_item.gif' border='0' alt='Profile Item' />]]> + + + + PRO_MSN + /profile_msn.gif' border='0' alt='MSN' />]]> + + + + PRO_ICQ + /profile_icq.gif' border='0' alt='ICQ' />]]> + + + + PRO_YIM + /profile_yahoo.gif' border='0' alt='Yahoo' />]]> + + + + PRO_CONTACT + /icon_msg_nonew.gif' border='0' alt='Contact' />]]> + + + + BAR_LEFT + /bar_left.gif' border='0' alt='*' />]]> + + + + BAR_RIGHT + /bar_right.gif' border='0' alt='*' />]]> + + + + CAL_GOTO + /cal_goto.gif' border='0' alt='Goto Month' />]]> + + + + F_NORM_HOT + f_hot_no.gif + + + + F_CLOSED + f_closed.gif + + + + F_NORM + f_norm_no.gif + + + + \ No newline at end of file diff --git a/upload/resources/settings.xml b/upload/resources/settings.xml new file mode 100644 index 00000000..9ed274f8 --- /dev/null +++ b/upload/resources/settings.xml @@ -0,0 +1,6767 @@ + + + + + 1 + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. + 0 + + + + + 1 + Show link in header to guidelines? + + 1 + yes_no + gl_show + + 0 + + + 1 + 1 + + 0 + + 1 + boardguidelines + 0 + + + + 2 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 1 + input + gl_link + + + + + 1 + 2 + + 0 + + 1 + boardguidelines + 0 + + + + 3 + Title to use in header? + + 1 + input + gl_title + + + + + 1 + 3 + + 0 + + 1 + boardguidelines + 0 + + + + 4 + If not using external link; guidelines/rules text + HTML Enabled + 1 + editor + gl_guidelines + + + + + 1 + 4 + + 0 + + 0 + boardguidelines + 0 + + + + 5 + + HTML ENABLED]]> + 1 + editor + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 5 + + 1 + + 0 + boardguidelines + 0 + + + + 1 + boardoffline + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. + 0 + + + + + 6 + Turn the board offline? + + 2 + yes_no + board_offline + + 0 + + + 1 + 1 + + 0 + + 1 + boardoffline + 0 + + + + 7 + The offline message to display + + 2 + editor + offline_msg + + + + + 1 + 2 + + 0 + + 0 + boardoffline + 0 + + + + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + 0 + + + + + 8 + Show birthdays on the main calendar view? + + 3 + yes_no + show_bday_calendar + + 1 + + + 1 + 1 + + 0 + + 1 + calendar + 0 + + + + 9 + + + 3 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 10 + Auto hide when no birthdays to show? + + 3 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 11 + Show forthcoming calendar events? + + 3 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 12 + Auto hide when no events to show? + + 3 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 13 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 3 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 14 + + This applies to view calendar / post event. + 3 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 15 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 3 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 278 + Start Calendar on Monday? + The default behavior for the calendar is to start the week on Sunday. By setting this to yes, you will start the week on Monday instead. + 3 + yes_no + ipb_calendar_mon + + 0 + + + 1 + 9 + + 0 + + 1 + calendar + 0 + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + + 16 + + + 32 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + 0 + + + + 17 + Prohibit Display Names from selecting Log In names + + 32 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + 0 + + + + 293 + Log in with user name or email address? + Which identifiable piece of information do you wish to require your members to use when logging in? + 32 + dropdown + converge_login_method + + username + username=User Name +email=Email Address + + 1 + 5 + + 0 + + 1 + converge + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + + 19 + Cookie Domain + .your-domain.com for global cookie]]> + 5 + input + cookie_domain + + + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 20 + Cookie Name Prefix + Allows multiple boards on one host. + 5 + input + cookie_id + + + + + 1 + 2 + + 0 + + 1 + cookies + 0 + + + + 21 + Cookie Path + Relative path from domain to root IBF dir + 5 + input + cookie_path + + + + + 1 + 3 + + 0 + + 1 + cookies + 0 + + + + 282 + Create a stronghold auto-log in cookie? + If enabled, when a member logs in, an additional cookie is set which contains geographic information in a crypt to make cookie stealing almost impossible. Only turn off if users cannot stay logged in + 5 + yes_no + cookie_stronghold + + 1 + + + 1 + 4 + Advanced Options + 1 + + 1 + cookies + 0 + + + + 1 + coppa + COPPA Set-up + COPPA.]]> + 0 + + + + + 22 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 6 + yes_no + use_coppa + + 0 + + + 1 + 1 + + 0 + + 1 + coppa + 0 + + + + 23 + Fax number to receive COPPA forms + + 6 + input + coppa_fax + + + + + 1 + 2 + + 0 + + 1 + coppa + 0 + + + + 24 + Mail address to receive COPPA forms + + 6 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + + 25 + Allow custom profile field info be used in TopicView? + + 7 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 26 + Cache calendar and birthdays? + + 7 + yes_no + cache_calendar + + 1 + + + 1 + 2 + + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + + 7 + input + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 28 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 7 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 29 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 7 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 30 + Mark topics a user has posted when displaying a forum? + + 7 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 31 + + This save 1 query per forum view + 7 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 32 + + (This save 1 query per topic view) + 7 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show Active Users + + 7 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 34 + Allow users (where allowed) to use search? + + 7 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 35 + Show Board Totals? + Show the board totals at the footer of the board index page. + 7 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 36 + Server Load Limit + Can be left blank for no limit]]> + 7 + input + load_limit + + + + + 1 + 10 + + 0 + 0 + 1 + cpusaving + 0 + + + + 37 + Print HTTP no-cache headers? + Note: The setting 'Print HTTP Headers?' found under General Configuration needs to be enabled for this setting to have any effect.]]> + 7 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 38 + + Leave blank to return full post with proper formatting]]> + 7 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 292 + Disable Sub-forums on Board Index + Do you wish to disable subforums from displaying on the board index? + 7 + yes_no + disable_subforum_show + + 0 + + + 1 + 15 + + 0 + + 1 + cpusaving + 0 + + + + 39 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 7 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + + 40 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 8 + dropdown + time_offset + + 0 + + ipsclass->load_language( 'lang_ucp' ); + + foreach( $this->ipsclass->lang as $off => $words ) + { + if (preg_match("/^time_([\\.\\-\\d]+?)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 41 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 8 + input + time_adjust + + 0 + + ipsclass->get_date(time(), 'LONG',1); +$r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ); +}]]> + 1 + 2 + + 1 + 0 + 1 + date + 0 + + + + 42 + Short time format + PHP Date]]> + 8 + input + clock_short + + jS F Y - h:i A + + + 1 + 3 + + 0 + 0 + 1 + date + 0 + + + + 43 + Join date time format + PHP Date]]> + 8 + input + clock_joined + + j-F y + + + 1 + 4 + + 0 + 0 + 1 + date + 0 + + + + 44 + Long time format + PHP Date]]> + 8 + input + clock_long + + M j Y, h:i A + + + 1 + 5 + + 0 + 0 + 1 + date + 0 + + + + 45 + Use relative dates? + + 8 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 46 + Relative time format + + 8 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 47 + DST Auto Detection + + 8 + yes_no + time_dst_auto_correction + + 1 + + + 1 + 8 + DST Correction + 1 + + 1 + date + 0 + + + + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + + 48 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 9 + input + email_in + + + + + 1 + 1 + Email Addresses + 0 + + 1 + email + 0 + + + + 49 + Board outgoing email address + This is the email address that all mail appears to come from. + 9 + input + email_out + + + + + 1 + 2 + + 1 + + 1 + email + 0 + + + + 50 + Mail Delivery Method + + 9 + dropdown + mail_method + + mail + mail=PHP Mail() +smtp=SMTP + + 1 + 3 + + 0 + + 1 + email + 0 + + + + 51 + Over-ride SMTP Host? + + 9 + input + smtp_host + + localhost + + + 1 + 4 + SMTP Set-up + 0 + + 1 + email + 0 + + + + 52 + Over-ride SMTP Port? + Default is 25 + 9 + input + smtp_port + + 25 + + + 1 + 5 + + 0 + + 1 + email + 0 + + + + 53 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 9 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 54 + SMTP UserName + + 9 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 55 + SMTP Password + + 9 + input + smtp_pass + + + + + 1 + 7 + + 1 + + 1 + email + 0 + + + + 56 + PHP Mail Extra Options + + 9 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 + + + + 1 + general + General Configuration + These settings control the basics of the board such as URLs and paths. + 0 + + + + + 57 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 10 + input + board_name + + Invision Power Board + + + 1 + 1 + + 0 + 0 + 1 + general + 0 + + + + 58 + Website Name + + 10 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 59 + Website Address + + 10 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 60 + Upload URL + ]]> + 10 + input + upload_url + + + + ipsclass->my_getenv( 'SERVER_NAME' ); + $this_script = $this->ipsclass->my_getenv( 'SCRIPT_NAME' ); + + if( $this_host AND $this_script ) + { + $this_script = str_replace( '/'.IPB_ACP_DIRECTORY.'/index.php', '/uploads', $this_script ); + + $r['conf_description'] = str_replace( "", "
    IPB has detected your uploads url as:
    http://".$this_host.$this_script, $r['conf_description'] ); + } +}]]>
    + 1 + 5 + Other URLs and Paths + 0 + 0 + 1 + general + 0 +
    + + + 61 + + ]]> + 10 + input + upload_dir + + + upload_dir + ipsclass->my_getenv( 'SCRIPT_FILENAME' ); + + if( $this_script ) + { + $this_script = str_replace( '/'.IPB_ACP_DIRECTORY.'/index.php', '/uploads', $this_script ); + + $r['conf_description'] = str_replace( "", "
    IPB has detected your uploads path as:
    ".$this_script, $r['conf_description'] ); + } +}]]>
    + 1 + 7 + + 0 + 0 + 1 + general + 0 +
    + + + 62 + Caching PATH + This can be left blank +
    This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
    + 10 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
    + + + 63 + Document character set + Enter the document character set for all HTML pages. + 10 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 64 + Image URL + This can be left blank +
    This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
    + 10 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
    + + + 65 + Print HTTP Headers? + + 10 + yes_no + print_headers + + 0 + + + 1 + 9 + + 1 + 0 + 1 + general + 0 + + + + 66 + Type of auto-redirect + + 10 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection + 0 + 0 + 1 + general + 0 + + + + 67 + + + 10 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 + + 1 + general + 0 + + + + 68 + Debug level + This controls the debug information shown at the footer of your board. + 10 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 69 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 10 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 70 + Enable SQL Debug Mode + + 10 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 71 + Use Safe Mode Skins? + + 10 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 + + + + 72 + Number Formatting + (EG: USA & UK use a comma)]]> + 10 + dropdown + number_format + + , + + + 1 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 73 + Decimal Seperator + Character used to seperate decimals in numbers. + 10 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 74 + GD Version + + 10 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 + + 0 + + 1 + general + 0 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + + 75 + Chat Site ID / Account No. + If you are using Parachat v7 or greater, enter your site ID (1234, for example). If you are using an older version of Parachat please enter your group number (ip0000, for example) + 11 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + 0 + + + + 253 + Custom Applet Codebase URL + This should be left blank unless you have a local +ParaChat Server installation or hosted ParaChat Enterprise solution.]]> + 11 + input + parachat_codebase_url + + + + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 254 + Chat Room Version + + 11 + dropdown + parachat_version + + 6 + 6=Parachat v6 or below +7=Parachat v7 or greater + + 1 + 3 + + 1 + + 1 + chat04 + 0 + + + + 78 + + + 11 + yes_no + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + chat04 + 0 + + + + 79 + + + 11 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 5 + + 1 + + 1 + chat04 + 0 + + + + 80 + Chat Room Dimensions (WIDTH)? + + 11 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat04 + 0 + + + + 81 + Chat Room Dimensions (HEIGHT)? + + 11 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat04 + 0 + + + + 84 + Load the chat room in...? + + 11 + dropdown + chat04_display + + self + self=Normal IPB Page + + 1 + 12 + + 0 + + 1 + chat04 + 0 + + + + 90 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
    <param name="cmd.BeepLeave" value="true"> +
    Please refer to the Invision Chat documentation for more info.]]>
    + 11 + textarea + chat04_customparams + + + + + 1 + 13 + + 0 + + 0 + chat04 + 0 +
    + + + 85 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 11 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 92 + Allow chat access to these groups + You may select more than one + 11 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 82 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) + 11 + dropdown + chat04_default_lang + + english.conf + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German + + 1 + 99 + Version 6 Settings (Not required for v7) + 0 + + 0 + chat04 + 0 + + + + 76 + Chat Room Type + This is the type of chat service you purchased + 11 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 100 + + 0 + + 1 + chat04 + 0 + + + + 77 + Default Chat Room + This is the room that your chat users will be logged into first + 11 + input + chat04_default_room + + + + + 1 + 101 + + 0 + + 1 + chat04 + 0 + + + + 83 + + + 11 + yes_no + chat04_plainmode + + 0 + + + 1 + 102 + + 0 + + 0 + chat04 + 0 + + + + 86 + Applet: Background Color + To change your chat applet background color select any RGB value. + 11 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 130 + + 0 + + 0 + chat04 + 0 + + + + 87 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 11 + input + chat04_style_applet_fg + + #345487 + + + 1 + 131 + + 0 + + 0 + chat04 + 0 + + + + 88 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 11 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 132 + + 0 + + 0 + chat04 + 0 + + + + 89 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 11 + input + chat04_style_window_fg + + #345487 + + + 1 + 133 + + 0 + + 0 + chat04 + 0 + + + + 91 + Chat Room Font Size + + 11 + input + chat04_style_font_size + + 10 + + + 1 + 135 + + 1 + + 0 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + + 93 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 12 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat + 0 + + + + 94 + Chat Room Server? + ]]> + 12 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 95 + + + 12 + yes_no + chat_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + chat + 0 + + + + 96 + + + 12 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + chat + 0 + + + + 97 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 12 + dropdown + chat_refresh_list + + 15 + 5=5 +10=10 +15=15 +30=30 + + 1 + 5 + + 1 + + 1 + chat + 0 + + + + 98 + Changed your IPChat control panel password? + + 12 + input + chat_pass_md5 + + + + + 1 + 6 + + 0 + + 1 + chat + 0 + + + + 99 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 12 + input + chat_pass_md5_new + + + + + 1 + 7 + + 0 + + 1 + chat + 0 + + + + 100 + Chat Room Dimensions (WIDTH)? + + 12 + input + chat_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat + 0 + + + + 101 + Chat Room Dimensions (HEIGHT)? + + 12 + input + chat_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 102 + Load the chat room in...? + + 12 + dropdown + chat_display + + self + self=Normal IPB Page + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 103 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 12 + input + chat_poppad + + 50 + + + 1 + 10 + + 0 + + 1 + chat + 0 + + + + 104 + Default Chat Room Interface Language? + + 12 + dropdown + chat_language + + en + en=English +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese + + 1 + 11 + + 1 + + 1 + chat + 0 + + + + 105 + Allow chat access to these groups + You may select more than one + 12 + multi + chat_access_groups + + + #show_groups# + + 1 + 13 + Access Permissions + 0 + + 1 + chat + 0 + + + + 106 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 12 + multi + chat_admin_groups + + + #show_groups# + + 1 + 14 + + 1 + + 1 + chat + 0 + + + + 1 + ipconverge + IP.Converge Settings + Hidden settings + 1 + + + + + 255 + IP.Converge Enabled? + + 29 + yes_no + ipconverge_enabled + + 0 + + + 1 + 1 + + 0 + + 1 + ipconverge + 0 + + + + 256 + IP.Converge URL + The root URL of the converge application. + 29 + input + ipconverge_url + + + + + 1 + 2 + + 0 + + 1 + ipconverge + 0 + + + + 257 + IP.Converge Product ID + The product ID assigned from the IP.Converge server + 29 + input + ipconverge_pid + + + + + 1 + 3 + + 0 + + 1 + ipconverge + 0 + + + + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + + 107 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 13 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 108 + Turn off copyright? + + 13 + yes_no + ips_cp_purchase + + 0 + + + 1 + 2 + + 0 + + 1 + ipbcopyright + 0 + + + + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + + 1 + ipbreg + IPB License Settings + This section will allow you to edit your IPB registered license settings. + 0 + + + + + 109 + IPB Registered License Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 15 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + ipbreg + 0 + + + + 110 + Display registered to line? + + 15 + yes_no + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + ipbreg + 0 + + + + 111 + Show as licensed to... + Matthew Mecham, IPS, Inc.]]> + 15 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + ipbreg + 0 + + + + 1 + ipbloginhandler + IPB Log in Handler + Hidden settings, so there. + 1 + + + + + 258 + Log in Method Key + + 30 + input + ipbli_key + + internal + + + 1 + 1 + + 0 + + 1 + ipbloginhandler + 0 + + + + 259 + Log In User Name Type + + 30 + input + ipbli_usertype + + username + + + 1 + 2 + + 0 + + 1 + ipbloginhandler + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + + 112 + ENABLE IPB Portal? + + 16 + yes_no + csite_on + + 1 + + + 1 + 1 + + 0 + + 1 + ipbportal + 0 + + + + 113 + IPB Portal Page Title? + This will appear inbetween the title elements on the page + 16 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 1 + ipbportal + 0 + + + + 114 + Date format for articles + Same as PHP's date function]]> + 16 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + ipbportal + 0 + + + + 115 + Show User / Guest Info box? + + 16 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + ipbportal + 0 + + + + 116 + Show search box? + + 16 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + ipbportal + 0 + + + + 117 + Enable skin selection choice dropdown? + + 16 + yes_no + csite_skinchange_show + + 1 + + + 1 + 15 + + 0 + + 0 + ipbportal + 0 + + + + 118 + Show Site Navigation Menu? + + 16 + yes_no + csite_nav_show + + 1 + + + 1 + 18 + + 0 + + 0 + ipbportal + 0 + + + + 119 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

    {board_url} will convert into your board]]>
    + 16 + textarea + csite_nav_contents + + + + + 1 + 19 + + 0 + + 0 + ipbportal + 0 +
    + + + 120 + Show Affiliates / Favoured Sites box? + + 16 + yes_no + csite_fav_show + + 0 + + + 1 + 20 + + 0 + + 0 + ipbportal + 0 + + + + 121 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 16 + textarea + csite_fav_contents + + + + + 1 + 21 + + 1 + + 0 + ipbportal + 0 + + + + 1 + log_prune + Log Pruning + Controls to determine which (if any) logs you wish to regularly prune. + 0 + + + + + 272 + Prune Spider Logs? + Do you wish to prune spider logs regularly (default every 30 days)? + 31 + yes_no + ipb_prune_spider + + 0 + + + 1 + 10 + Prune Options + 0 + + 1 + log_prune + 0 + + + + 273 + Prune Task Logs? + Do you wish to prune task logs regularly (default every 30 days)? + 31 + yes_no + ipb_prune_task + + 0 + + + 1 + 20 + + 0 + + 1 + log_prune + 0 + + + + 274 + Prune Admin Logs? + Do you wish to prune admin logs regularly (default every 30 days)? + 31 + yes_no + ipb_prune_admin + + 0 + + + 1 + 30 + + 0 + + 1 + log_prune + 0 + + + + 275 + Prune Moderator Logs? + Do you wish to prune moderator logs regularly (default every 30 days)? + 31 + yes_no + ipb_prune_mod + + 0 + + + 1 + 40 + + 0 + + 1 + log_prune + 0 + + + + 276 + Prune Email Logs? + Do you wish to prune email logs regularly (default every 30 days)? + 31 + yes_no + ipb_prune_email + + 0 + + + 1 + 50 + + 0 + + 1 + log_prune + 0 + + + + 277 + Prune Email Error Logs + Do you wish to prune email error logs regularly (default every 30 days)? + 31 + yes_no + ipb_prune_emailerror + + 0 + + + 1 + 60 + + 1 + + 1 + log_prune + 0 + + + + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + + 122 + Export news topics from which forum? + + 17 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 123 + + + 17 + yes_no + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + + 124 + Allow BBCode in messages? + + 18 + yes_no + msg_allow_code + + 1 + + + 1 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 125 + Allow HTML in messages? + + 18 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 126 + Max. number of messages to show per page when viewing message list + The default is 50. + 18 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 262 + Unblockable PM Groups + Members will not be able to block private messages from members in the selected groups. You may select more than one. + 18 + multi + unblockable_pm_groups + + + #show_groups# + + 1 + 4 + + 0 + + 1 + personalmessagesetup + 0 + + + + 263 + + + 18 + multi + override_inbox_full + + + #show_groups# + + 1 + 5 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + + 127 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 19 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + + 128 + Forums to export articles from + You may select more than one. + 20 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 129 + Number of articles to show + + 20 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 130 + Number of topics to show + + 20 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + + 131 + Enable the search engine spider recognition? + + 21 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 132 + Log all spider visits? + + 21 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 133 + Treat spider/bot as part of which group? + + 21 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 134 + Force spider/bot to use skin + + 21 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 135 + Show spider/bot in the active users list? + + 21 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 136 + Show spider as anonymous + + 21 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 137 + Spider Bot User-Agent + bot=Human Name format.(one per line)
    Example: googlebot=Google.com]]>
    + 21 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
    + + + 1 + searchsetup + Search Set-Up + + 0 + + + + + 138 + Type of search to use? + +
    +]]>
    + 22 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
    + + + 139 + Default Search Mode? + This setting will only take effect if using full text searching + 22 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 140 + Minimum search word length + + 22 + input + min_search_word + + 4 + min_search_word + + 1 + 13 + + 0 + 0 + 1 + searchsetup + 0 + + + + 141 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 22 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + + 142 + Enable Script/Bot Flood Control? + + 23 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 1 + + 0 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 264 + Guest Posting Bot Control + Do you wish to require guests who post (where allowed) to input a code to confirm their post? + 23 + dropdown + guest_captcha + + 0 + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 6 + + 1 + + 1 + securityandprivacy + 0 + + + + 143 + Allow dynamic images? + + 23 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 144 + Enable X_FORWARDED_FOR IP matching? + + 23 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 283 + Lost Password: Password Method + + 23 + dropdown + lp_method + + random + random=Email Random Password +choose=Allow User to Enter New Password + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 288 + + + 23 + dropdown + login_key_expire + + 7 + 0=Do not expire (not recommended) +3=Expire after 3 days +7=Expire after 7 days +30=Expire after 30 days + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 145 + + + 23 + yes_no + login_change_key + + 0 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 146 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 23 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 147 + + + 23 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 148 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 23 + yes_no + match_browser + + 0 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 279 + Lock user account after how many failed login attempts + +Tip: Set to 0 to disable]]> + 23 + input + ipb_bruteforce_attempts + + 3 + + + 1 + 20 + Brute-force Account Locking + 0 + + 1 + securityandprivacy + 0 + + + + 280 + Reset failed login attempts after how many minutes + +Tip: Set to 0 to not reset failed login attempts until a succesful login occurs]]> + 23 + input + ipb_bruteforce_period + + 15 + + + 1 + 21 + + 0 + + 1 + securityandprivacy + 0 + + + + 281 + Automatically unlock account? + +Tip: Setting this to no will require you to manually unlock accounts under the Management tab]]> + 23 + yes_no + ipb_bruteforce_unlock + + 1 + + + 1 + 22 + + 1 + + 1 + securityandprivacy + 0 + + + + 149 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 23 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 150 + Allow images to be posted? + Advanced programmers can force images to run as scripts. IBF limits damage by this method however. This should only be disabled as an extreme measure. + 23 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 151 + Allow flash movies in posts and avatars? + + 23 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 284 + Remove the ACP link from the board + + 23 + yes_no + security_remove_acp_link + + 0 + + + 1 + 33 + + 0 + + 1 + securityandprivacy + 0 + + + + 261 + Characters allowed in usernames +
    +To allow only alphanumeric usernames, use: a-zA-Z0-9]]>
    + 23 + input + username_characters + + + + + 1 + 37 + + 0 + + 1 + securityandprivacy + 0 +
    + + + 287 + Error Message to Display + Tip:You can use {chars} to show the characters allowed]]> + 23 + input + username_errormsg + + The name can only contain these characters: {chars} + + + 1 + 38 + + 0 + + 1 + securityandprivacy + 0 + + + + 152 + New registration email validation? + + 23 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 153 + + + 23 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 154 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 23 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 155 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 23 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 156 + Disable new registrations? + + 23 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 157 + Remove chr(0xCA) from input? + + 23 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 158 + + Removes the ability for your members to report a post. + 23 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 159 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 23 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 160 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 23 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 161 + Allow users to browse the Active Users list? + + 23 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 260 + Disable Anonymous Login + + 23 + yes_no + disable_anonymous + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 162 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 23 + yes_no + disable_admin_anon + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 265 + Display IPB version on your site? + Do you wish to display the version of Invision Power Board you are running in your copyright footer? + 23 + yes_no + ipb_display_version + + 1 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 163 + Disable root admin group viewing online users IP address in online user list? + + 23 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + + 164 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 24 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 165 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 24 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 166 + Member group to use after registration but before package purchase? + + 24 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + + 167 + Number of topics per forum page + + 25 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 168 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 25 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 169 + Number of rating votes required to show + + 25 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 170 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 25 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 171 + + + 25 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 172 + Topic prefix for PINNED topics + + 25 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 173 + Topic prefix for MOVED topics + + 25 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 174 + Topic prefix for POLLS + + 25 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 175 + Topic Title Max Length + Maximum topic title length allowed. + 25 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 176 + Number of posts per topic page + + 25 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 296 + Automatic Image Resize Percentage + Please enter the percentage to reduce the image by. + 25 + input + resize_img_percent + + 50 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 295 + + + 25 + yes_no + resize_linked_img + + 1 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 177 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 25 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 178 + Default Topic View Mode + + 25 + dropdown + topicmode_default + + linear + linear=Standard +threaded=Outline +linearplus=Linear Plus + + 1 + 22 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 179 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 25 + multi + cannot_ignore_groups + + 4 + #show_groups# + + 1 + 23 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 180 + Order posts within a topic by + + 25 + dropdown + post_order_column + + pid + pid=Post ID +post_date=Post Date + + 1 + 24 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 181 + Order posts within a topic by + + 25 + dropdown + post_order_sort + + asc + asc=Ascending (0-9) +desc=Descending (9-0) + + 1 + 25 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 182 + Max. no. emoticons per post + + 25 + input + max_emos + + 10 + + + 1 + 40 + Making a Post + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 183 + Max. no. images per post + + 25 + input + max_images + + 10 + + + 1 + 41 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 184 + + + 25 + input + max_post_length + + 100 + + + 1 + 42 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 185 + Max. height of posted Flash movies (in pixels) + + 25 + input + max_h_flash + + 199 + + + 1 + 43 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 186 + Max. width of posted Flash movies (in pixels) + + 25 + input + max_w_flash + + 199 + + + 1 + 43 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 187 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 25 + input + post_wordwrap + + 80 + + + 1 + 45 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 188 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 25 + input + emo_per_row + + 3 + + + 1 + 46 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 189 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 25 + input + max_quotes_per_post + + 10 + + + 1 + 48 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 190 + + n
    minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 25 + input + post_merge_conc + + 0 + + + 1 + 49 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 191 + Stop Quote Embedding? + ..]]> + 25 + yes_no + strip_quotes + + 1 + + + 1 + 49 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 192 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 25 + input + img_ext + + gif,jpeg,jpg,png + + + 1 + 50 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 267 + Use URL Filtering? + If you would like to filter urls based on your blacklist or whitelist settings, enable this. URL filtering allows you to explicitely allow (whitelist) or deny (blacklist) links in topic posts (images and urls). + 25 + yes_no + ipb_use_url_filter + + 0 + + + 1 + 53 + URL Filtering Options + 0 + + 1 + topicspostsandpolls + 0 + + + + 268 + Which filter do you wish to use? + If you have enabled the url filtering, do you wish to use your blacklist or whitelist? You may only use one or the other. + 25 + dropdown + ipb_url_filter_option + + black + white=Whitelist +black=Blacklist + + 1 + 54 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 269 + Whitelist Settings +
    +i.e.: http://www.yourdomain.com*
    +http://*.google.com/*]]>
    + 25 + textarea + ipb_url_whitelist + + + + + 1 + 55 + + 0 + + 1 + topicspostsandpolls + 0 +
    + + + 270 + Blacklist Options +
    +i.e.: http://*.somedomain.com*
    +http://competitor_domain.com*]]>
    + 25 + textarea + ipb_url_blacklist + + + + + 1 + 56 + + 1 + + 1 + topicspostsandpolls + 0 +
    + + + 193 + Show uploaded images in post as images? + + 25 + yes_no + show_img_upload + + 1 + + + 1 + 60 + Attached Image Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 194 + Show thumbnail of attached image? + + 25 + yes_no + siu_thumb + + 1 + siu_thumb + + 1 + 61 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 195 + + + 25 + input + siu_width + + 100 + + + 1 + 62 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 196 + + + 25 + input + siu_height + + 100 + + + 1 + 63 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 197 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 25 + input + guest_name_pre + + Guest_ + + + 1 + 70 + Guest Username + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 198 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 25 + input + guest_name_suf + + _* + + + 1 + 71 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 199 + + + 25 + yes_no + poll_tags + + 1 + + + 1 + 80 + Poll Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 200 + Max. Poll Questions Per Poll + Enter the maximum number of questions you wish to allow your members to create in a single poll. + 25 + input + max_poll_questions + + 3 + + + 1 + 81 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 201 + Maximum number of poll choices allowed? + + 25 + input + max_poll_choices + + 20 + + + 1 + 81 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 202 + Allow members to view the results of a poll without losing their vote? + + 25 + yes_no + allow_result_view + + 1 + + + 1 + 82 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 203 + Allow poll creator to vote in own poll? + + 25 + yes_no + allow_creator_vote + + 1 + + + 1 + 83 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 271 + + Do you wish to allow posters who create polls to be able to disallow replies to the poll? + 25 + yes_no + ipb_poll_only + + 0 + + + 1 + 84 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 204 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 25 + input + startpoll_cutoff + + 24 + + + 1 + 84 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 205 + Allow members to use Rich Text Editing? + + 25 + yes_no + posting_allow_rte + + 1 + + + 1 + 100 + Editor Settings + 0 + + 1 + topicspostsandpolls + 0 + + + + 206 + + + 25 + input + rte_width + + 650px + + + 1 + 101 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 207 + + + 25 + input + rte_pm_width + + 500px + + + 1 + 102 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 294 + Make the side-panel open by default + + 25 + yes_no + rte_side_panel_open + + 1 + + + 1 + 103 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + trashcan.php + + + + 208 + Enable the trashcan? + + 26 + yes_no + forum_trash_can_enable + + 0 + + + 1 + 1 + + 0 + + 1 + trashcansetup + 0 + + + + 209 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 26 + dropdown + forum_trash_can_id + + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 210 + Use trashcan for ROOT administrators? + + 26 + yes_no + forum_trash_can_use_radmin + + 1 + + + 1 + 3 + + 0 + + 1 + trashcansetup + 0 + + + + 211 + Use trashcan for normal administrators? + + 26 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 + + + + 212 + Use trashcan for global moderators? + + 26 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 + + + + 213 + Use trashcan for forum moderators? + + 26 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 + + + + 1 + userprofiles + User Profiles + + 0 + + + + + 214 + Allow members to choose skins? + + 27 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 266 + Disable group prefix/suffix formatting + This will allow you to globally disable the group prefix and suffix from formatting member names + 27 + yes_no + ipb_disable_group_psformat + + 0 + + + 1 + 2 + + 0 + + 1 + userprofiles + 0 + + + + 215 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 27 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 216 + Maximum length (in bytes) for the location field entry + + 27 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 217 + Maximum length (in bytes) for the interests field entry + + 27 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 218 + Maximum length (in bytes) for user signatures + + 27 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 219 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 27 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 220 + Allow BBCode in signatures? + + 27 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 286 + Default editor type for members + + 27 + dropdown + ips_default_editor + + std + std=Standard Editor +rte=Rich-Text Editor + + 1 + 7 + + 0 + + 1 + userprofiles + 0 + + + + 221 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 27 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 222 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 27 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 223 + + Leave blank or enter 0 for no auto prune limit + 27 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 224 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
    Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
    + 27 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
    + + + 225 + Allow the use of avatars? + + 27 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 252 + Allowed avatar image URL extensions + Seperate with comma (gif,png,jpeg) etc + 27 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 227 + Allow users to use remote URL avatars? + + 27 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 228 + Max. file size for avatar uploads? (K) + + 27 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 229 + Maximum avatar dimensions + xHEIGHT)]]> + 27 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 230 + Default sizes for gallery avatars? + xHEIGHT)]]> + 27 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 231 + Number of columns for the avatar gallery? + + 27 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 232 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 27 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 233 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 27 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 234 + Allow GUESTS to view signatures? + + 27 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 235 + Allow GUESTS to view posted images? + + 27 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 236 + Allow GUESTS to view user avatars? + + 27 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + + + 291 + Maximum Display Name Length + The maxiumum number of characters that a display name can be. + 27 + input + max_user_name_length + + 26 + + + 1 + 30 + + 0 + + 1 + userprofiles + 0 + + + + 289 + + + 27 + yes_no + pp_show_classic + + 0 + + + 1 + 32 + Personal Portal + 0 + + 1 + userprofiles + 0 + + + + 290 + Allow members to rate each other? + + 27 + yes_no + pp_allow_member_rate + + 1 + + + 1 + 33 + + 1 + + 1 + userprofiles + 0 + + + + 1 + warnsetup + Warn Set-up + This section will allow you to set up the warning system. + 0 + + + + + 237 + Enable the warning system? + + 28 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 238 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 28 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 239 + Maximum Warn Level + + 28 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 240 + Protected Groups + You may choose more than one.]]> + 28 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 241 + Allow all other non-protected groups to see their own warn level and reasons? + + 28 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 242 + Allow warnings to continue once the minimum or maximum has been reached? + + 28 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 243 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 28 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 244 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 28 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 245 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 28 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 246 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 28 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 247 + Number of times per day moderators can warn a single member + + 28 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 248 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 28 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 28 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 28 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day a global moderator can warn a single member + + 28 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 + +
    + +
    \ No newline at end of file diff --git a/upload/resources/skinsets.xml b/upload/resources/skinsets.xml new file mode 100644 index 00000000..55f668cb --- /dev/null +++ b/upload/resources/skinsets.xml @@ -0,0 +1,4067 @@ + + + + + 1 + IPB Master Skin Set + 1 + 0 + 0 + external + -1 + + + + 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(style_images/<#IMG_DIR#>/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap +{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(style_images/<#IMG_DIR#>/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.rowhighlight{ + background-color: #FFF9BA; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.celltodayshaded, +.celldateshaded, +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.celltodayshaded, +.celldateshaded +{ + background: #E3DFE7; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.celltodayshaded, +.mcelltoday{ + border: 2px solid #8B0000; +} + +.calranged +{ + border: 2px outset #C2CFDF; + background: #C2CFDF; + padding:4px; +} + +.calitem +{ + border-bottom: 1px dotted #C2CFDF; + padding:4px; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +.input-warn, +.input-green, +.input-checkbox, +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +select +{ + margin: 0px; +} + +.input-checkbox +{ + border: none; +} + +.input-warn, +.input-warn-content +{ + border: 1px solid #C00; +} + +.input-ok, +.input-ok-content +{ + border: 1px solid #0C0; +} + +.input-warn-content +{ + padding: 4px; + margin: 4px; + background-color: #FCC; +} + +.input-ok-content +{ + padding: 4px; + margin: 4px; + background-color: #CFC; +} + + +.input-text +{ + color: #900; +} + +input.button{ + margin: 0; + width: auto; + cursor: hand; + cursor: pointer; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; + background: transparent; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0px; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(style_images/<#IMG_DIR#>/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 0 auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(style_images/<#IMG_DIR#>/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0px; + margin: 0px; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: url(style_images/<#IMG_DIR#>/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.maintitle td { + color: #FFF; + font-size: 12px; + font-weight: bold; +} + + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(style_images/<#IMG_DIR#>/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + + +td.formbuttonrow, +.pformstrip, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap { + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + + +.errorwrap h4 { + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p { + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(style_images/<#IMG_DIR#>/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#logographic{ + background: transparent url(style_images/<#IMG_DIR#>/logo4.gif) no-repeat left; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(style_images/<#IMG_DIR#>/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; + height: 28px; + text-align: right; +} + +.ipb-top-left-link, +.ipb-top-right-link +{ + background: transparent url(style_images/<#IMG_DIR#>/tile_sub-lite.gif); + float: right; + font-size: 10px; + font-weight: bold; + letter-spacing: 0.5px; + margin: 0px; + padding: 7px 0 7px 0; + width: auto; + border-left: 1px solid #dce3ee; +} + +.ipb-top-left-link +{ + float: left; + border-left: 0px; + border-right: 1px solid #dce3ee; +} + +.ipb-top-left-link a:link, +.ipb-top-left-link a:visited, +.ipb-top-right-link a:link, +.ipb-top-right-link a:visited +{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +.ipb-top-left-link a:hover, +.ipb-top-left-link a:active, +.ipb-top-right-link a:hover, +.ipb-top-right-link a:active +{ + background: transparent; + color: #5176B5; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 14px 0px 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +.dny-edit-title +{ + border:0px; + padding:3px; + margin:0px; + background: #D1DCEB; + color: #3A4F6C; +} + + +/* ======================================== */ +/* TABS +/* ======================================== */ + +.tabon +{ + border-top:1px solid #999; + border-left:1px solid #999; + border-right:1px solid #999; + background-color:#FFF; + padding:8px; + padding-bottom:9px; + font-size:10px; + float:left; + width:auto; + margin-top:3px; +} + +.taboff +{ + border-top: 1px solid #777; + border-left: 1px solid #777; + border-right: 1px solid #777; + background-color: #B5C3D9; + color: #333; + padding: 8px; + font-size:10px; + float: left; + width: auto; + margin-top:3px; +} + +.tabon a:link, +.tabon a:visited, +.tabon a:active +{ + text-decoration:none; + color: #000; +} + +.taboff a:link, +.taboff a:visited, +.taboff a:active +{ + text-decoration:none; + color: #333; +} + +.mya-back +{ + background: #072A66; + margin:1px; + padding: 1px; +} + +.mya-content +{ + background: #FFF; + padding:8px; + margin: 1px; + border: 1px solid #777; +} + +.mya-content-tbl +{ + background: #F0F5FA; + border: 1px solid #777; + text-align:left; + font-size:10px; + white-space:nowrap; + margin:1px; +} + +.mya-fieldwrap +{ + background: transparent; + margin-top: 2px; + margin-bottom: 2px; + padding: 4px; + border: 1px solid #C5C7CD; + -moz-border-radius: 5px; + width: auto; + display: block; +} + +/* -------------------------------- */ +/* Create PM box defaults */ +/* -------------------------------- */ + +.iframeshim +{ + position:absolute; + display:none; + background: #FFF; + filter:alpha(opacity=0); + border:0px; + width:auto; + height:auto; +} + + + +/* -------------------------------- */ +/* Experimental */ +/* -------------------------------- */ + +.popupmenu, +.popupmenu-new +{ + background: #F0F5FA; + border: 1px solid #3A4F6C; + text-align:left; + font-size:10px; + white-space:nowrap; + /*padding:3px 5px 3px 3px;*/ + /*width:300px;*/ +} + +.popupmenu-item +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + border-bottom: 1px solid #C2CFDF; + color: #000000; + font-weight: normal; +} + +.popupmenu-item-last +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + color: #000000; + font-weight: normal; +} + +.popmenubutton-new, +.popmenubutton +{ + width:120px; + white-space:nowrap; + background-color: #C2CFDF; + border:1px solid #3A4F6C; + color: #3A4F6C; + font-weight:bold; + float:right; + height:18px; + text-align:center; + margin:0px; + font-size:11px; + padding:3px; +} + +.popmenubutton-new +{ + float:none; + width:auto; + text-align:left; + height:auto; + padding:3px; + font-weight:normal; + background-color:#EEF2F7; + background-image: url(style_images/<#IMG_DIR#>/menu_action_down-padded.gif); + background-repeat: no-repeat; + background-position: right; +} + +.popmenubutton-new-out +{ + padding:4px; +} + +.popupmenu-new +{ + background-color: #DFE6EF; +} + + +.popmenubutton a:link, +.popmenubutton a:visited, +.popmenubutton-new a:link, +.popmenubutton-new a:visited, +.popupmenu-item a:link, +.popupmenu-item a:visited, +.popupmenu-item-last a:link, +.popupmenu-item-last a:visited +{ + color: #3A4F6C; + text-decoration: none; +} + +.popmenubutton a:hover, +.popmenubutton-new a:hover, +.popupmenu-item a:hover, +.popupmenu-item-last a:hover +{ + color: #5176B5; + text-decoration: none; +} + +.popupmenu-category +{ + background: transparent url(style_images/<#IMG_DIR#>/tile_sub.gif); + border-top: 1px solid #5176B5; + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +/* -------------------------------- */ +/* Loading box +/* -------------------------------- */ + +#loading-layer-inner +{ + width:220px; + height:28px; + padding:18px 10px 10px 10px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#CCC #666 #666 #CCC; + background-color: #FCF8C7; +} + +/* -------------------------------- */ +/* Message in a bo(x|ttle) +/* -------------------------------- */ + +#ipd-msg-wrapper +{ + display: none; + width: 220px; +} + +#ipd-msg-inner +{ + width:100%; + height:45px; + padding: 6px 4px 4px 4px; + margin: 0px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#ccc #666 #666 #ccc; + background-color: #FCF8C7; + filter:alpha(opacity=75); + opacity:.75 +} + +#ipd-msg-title +{ + width: 100%; + height:20px; + margin: 0px; + padding: 6px 4px 4px 4px; + background: transparent url(style_images/<#IMG_DIR#>/css_pp_header.gif); + border: 1px solid #3A4F6C; + border-bottom: 0px; + color: #3A4F6C; + color: #FFF; +} + +.linked-image +{ + margin: 0px; + padding: 0px; + border: 0px; +} + +.resized-linked-image +{ + margin: 4px 0px 0px 0px; + padding: 0px; + background-color: #000; + border: 0px; + color: #FFF; + width: auto; +} + +.resized-linked-image-zoom +{ + width: 200px; + height: 30px; + filter:alpha(opacity=85); + opacity:.85; + background-color: #FFF; + padding-top: 6px; + padding-left: 5px; + top: 0px; + left: 0px; + position: absolute; + display: none; +} + +/* -------------------------------- */ +/* Edit post reason +/* -------------------------------- */ + +.post-edit-reason +{ + background: #E7EAEF; + margin-top: 9px; + margin-bottom: 0px; + padding: 4px; + color: #333; + font-size: 10px; + border: 1px solid #C5C7CD; + -moz-border-radius: 5px; + width: auto; + display: block; +} + +/* -------------------------------- */ +/* Personal Profile +/* -------------------------------- */ + +.pp-name +{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0px; + padding: 10px; +} + +.pp-name h3 +{ + margin:0px; + padding:0px 0px 5px 0px; + font-size:24px; +} + +.pp-header +{ + background: transparent url(style_images/<#IMG_DIR#>/tile_sub.gif); + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + margin: 0px 0px 1px 0px; + padding: 5px; +} + +.pp-title +{ + background: url(style_images/<#IMG_DIR#>/css_pp_header.gif); + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-datebox +{ + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-left: 4px; + margin-bottom: 4px; + font-size:24px; + font-weight:bold; + line-height: 100%; + letter-spacing: -1px; + float:right; + width: 80px; +} + +.pp-datebox em +{ + font-size: 10px; + font-weight: normal; + font-style: normal; +} + +.pp-contentbox-back +{ + background-image: url(style_images/<#IMG_DIR#>/folder_profile_portal/pp-css-contentblock.gif); + background-repeat: repeat-x; + background-color: #ACBFD9; + padding: 6px; +} + +.pp-contentbox-entry, +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + background-color: #EEF2F7; + border: 1px solid #888888; + line-height: 140%; + padding: 12px; + margin-bottom: 6px; + height: 200px; + overflow: auto; + overflow-x: auto; +} + +.pp-contentbox-entry-noheight-sel +{ + background-color:#FCECCD; +} + +.pp-contentbox-entry-noheight-mod +{ + background-color:#FDF1DA; +} + +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + height: auto; + margin-bottom: 1px; +} + +.pp-image-thumb-wrap, +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 52px; + height: 52px; + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 27px; + height: 27px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap-floatright +{ + float:right; +} + +.pp-tiny-text +{ + color: gray; + font-size: 10px; +} + +.pp-mini-content-entry, +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + background-color: #F5F9FD; + padding: 6px; + border-bottom: 1px dotted #555555; + clear:both; + width: auto; + height: 60px; +} + +.pp-mini-entry-noheight-shaded +{ + background-color: #E3DFE7; +} + +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + height: auto; +} + +.pp-tabclear, +.pp-maintitle +{ + background: url(style_images/<#IMG_DIR#>/css_pp_header.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-tabclear +{ + border:0px; + border-right: 1px solid #072A66; + border-left: 1px solid #072A66; +} + +.pp-tabon +{ + border-top:1px solid #3363A1; + border-left:1px solid #072A66; + border-right:1px solid #072A66; + background-color:#6696D6; + color:#FFFFFF; + padding:8px; + float:left; + width:auto; + background-image: url(style_images/<#IMG_DIR#>/css_pp_tab_on.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-taboff, +.pp-tabshaded +{ + border-top: 1px solid #759BC7; + border-left: 1px solid #759BC7; + border-right: 1px solid #759BC7; + background-color: #3363A1; + color: #3363A1; + padding:8px; + float: left; + width: auto; + background-image: url(style_images/<#IMG_DIR#>/css_pp_tab_off.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-tabshaded +{ + background-image: url(style_images/<#IMG_DIR#>/css_pp_tab_shaded.gif); + background-repeat: repeat-x; + background-position: left bottom; + color: #516795; + border-top: 1px solid #7f9BBC; + border-left: 1px solid #7f9BBC; + border-right: 1px solid #7f9BBC; +} + +.pp-tabon a:link, +.pp-tabon a:visited, +.pp-tabon a:active +{ + text-decoration:none; + color: #FFFFFF; +} + +.pp-taboff a:link, +.pp-taboff a:visited, +.pp-taboff a:active, +.pp-tabshaded a:link, +.pp-tabshaded a:visited, +.pp-tabshaded a:active +{ + text-decoration:none; + color: #3363A1; +} + +.pp-tabwrap +{ + height: 34px; + margin:0px; + padding:0px; +}]]> + /t_addpoll.gif' border='0' alt='Add Poll' />";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"a_locked_b";a:6:{s:8:"macro_id";s:3:"164";s:11:"macro_value";s:10:"A_LOCKED_B";s:13:"macro_replace";s:82:"Closed Topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"a_moved_b";a:6:{s:8:"macro_id";s:3:"165";s:11:"macro_value";s:9:"A_MOVED_B";s:13:"macro_replace";s:78:"Moved Topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"a_poll";a:6:{s:8:"macro_id";s:3:"169";s:11:"macro_value";s:6:"A_POLL";s:13:"macro_replace";s:78:"Start Poll";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"a_pollonly_b";a:6:{s:8:"macro_id";s:3:"166";s:11:"macro_value";s:12:"A_POLLONLY_B";s:13:"macro_replace";s:79:"Poll Only";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"a_post";a:6:{s:8:"macro_id";s:3:"167";s:11:"macro_value";s:6:"A_POST";s:13:"macro_replace";s:82:"Start new topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"a_reply";a:6:{s:8:"macro_id";s:3:"168";s:11:"macro_value";s:7:"A_REPLY";s:13:"macro_replace";s:88:"Reply to this topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"a_star";a:6:{s:8:"macro_id";s:3:"170";s:11:"macro_value";s:6:"A_STAR";s:13:"macro_replace";s:66:"*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:15:"active_list_sep";a:6:{s:8:"macro_id";s:3:"235";s:11:"macro_value";s:15:"ACTIVE_LIST_SEP";s:13:"macro_replace";s:1:",";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"address_card";a:6:{s:8:"macro_id";s:3:"217";s:11:"macro_value";s:12:"ADDRESS_CARD";s:13:"macro_replace";s:85:"Mini Profile";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:11:"attach_icon";a:6:{s:8:"macro_id";s:3:"232";s:11:"macro_value";s:11:"ATTACH_ICON";s:13:"macro_replace";s:93:"Topic has attachments";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"b_hot";a:6:{s:8:"macro_id";s:3:"171";s:11:"macro_value";s:5:"B_HOT";s:13:"macro_replace";s:76:"Hot topic";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"b_hot_dot";a:6:{s:8:"macro_id";s:3:"180";s:11:"macro_value";s:9:"B_HOT_DOT";s:13:"macro_replace";s:79:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"b_hot_nn";a:6:{s:8:"macro_id";s:3:"172";s:11:"macro_value";s:8:"B_HOT_NN";s:13:"macro_replace";s:76:"No new";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"b_hot_nn_dot";a:6:{s:8:"macro_id";s:3:"182";s:11:"macro_value";s:12:"B_HOT_NN_DOT";s:13:"macro_replace";s:86:"No New Posts*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"b_locked";a:6:{s:8:"macro_id";s:3:"173";s:11:"macro_value";s:8:"B_LOCKED";s:13:"macro_replace";s:76:"Closed";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"b_moved";a:6:{s:8:"macro_id";s:3:"174";s:11:"macro_value";s:7:"B_MOVED";s:13:"macro_replace";s:74:"Moved";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"b_new";a:6:{s:8:"macro_id";s:3:"175";s:11:"macro_value";s:5:"B_NEW";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"b_new_dot";a:6:{s:8:"macro_id";s:3:"181";s:11:"macro_value";s:9:"B_NEW_DOT";s:13:"macro_replace";s:83:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"b_norm";a:6:{s:8:"macro_id";s:3:"176";s:11:"macro_value";s:6:"B_NORM";s:13:"macro_replace";s:83:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"b_norm_dot";a:6:{s:8:"macro_id";s:3:"183";s:11:"macro_value";s:10:"B_NORM_DOT";s:13:"macro_replace";s:87:"No New Posts*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"b_pin";a:6:{s:8:"macro_id";s:3:"177";s:11:"macro_value";s:5:"B_PIN";s:13:"macro_replace";s:76:"Pinned";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"b_poll";a:6:{s:8:"macro_id";s:3:"178";s:11:"macro_value";s:6:"B_POLL";s:13:"macro_replace";s:72:"Poll";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"b_poll_dot";a:6:{s:8:"macro_id";s:3:"184";s:11:"macro_value";s:10:"B_POLL_DOT";s:13:"macro_replace";s:76:"Poll*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"b_poll_nn";a:6:{s:8:"macro_id";s:3:"179";s:11:"macro_value";s:9:"B_POLL_NN";s:13:"macro_replace";s:83:"No new votes";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:13:"b_poll_nn_dot";a:6:{s:8:"macro_id";s:3:"185";s:11:"macro_value";s:13:"B_POLL_NN_DOT";s:13:"macro_replace";s:87:"No New Votes*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"bar_left";a:6:{s:8:"macro_id";s:3:"273";s:11:"macro_value";s:8:"BAR_LEFT";s:13:"macro_replace";s:71:"*";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"bar_right";a:6:{s:8:"macro_id";s:3:"274";s:11:"macro_value";s:9:"BAR_RIGHT";s:13:"macro_replace";s:72:"*";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:15:"bc_queued_posts";a:6:{s:8:"macro_id";s:3:"236";s:11:"macro_value";s:15:"BC_QUEUED_POSTS";s:13:"macro_replace";s:71:"*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:11:"br_redirect";a:6:{s:8:"macro_id";s:3:"215";s:11:"macro_value";s:11:"BR_REDIRECT";s:13:"macro_replace";s:81:"Redirect";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"c_locked";a:6:{s:8:"macro_id";s:3:"186";s:11:"macro_value";s:8:"C_LOCKED";s:13:"macro_replace";s:88:"Read Only Forum";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"c_off";a:6:{s:8:"macro_id";s:3:"187";s:11:"macro_value";s:5:"C_OFF";s:13:"macro_replace";s:82:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"c_off_cat";a:6:{s:8:"macro_id";s:3:"188";s:11:"macro_value";s:9:"C_OFF_CAT";s:13:"macro_replace";s:82:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"c_off_res";a:6:{s:8:"macro_id";s:3:"189";s:11:"macro_value";s:9:"C_OFF_RES";s:13:"macro_replace";s:82:"No New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:4:"c_on";a:6:{s:8:"macro_id";s:3:"190";s:11:"macro_value";s:4:"C_ON";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"c_on_cat";a:6:{s:8:"macro_id";s:3:"191";s:11:"macro_value";s:8:"C_ON_CAT";s:13:"macro_replace";s:77:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"c_on_res";a:6:{s:8:"macro_id";s:3:"192";s:11:"macro_value";s:8:"C_ON_RES";s:13:"macro_replace";s:78:"New Posts";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"cal_goto";a:6:{s:8:"macro_id";s:3:"275";s:11:"macro_value";s:8:"CAL_GOTO";s:13:"macro_replace";s:80:"Goto Month";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:12:"cal_newevent";a:6:{s:8:"macro_id";s:3:"220";s:11:"macro_value";s:12:"CAL_NEWEVENT";s:13:"macro_replace";s:87:"Add New Event";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"camera";a:6:{s:8:"macro_id";s:3:"198";s:11:"macro_value";s:6:"CAMERA";s:13:"macro_replace";s:73:"Photo";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"cat_img";a:6:{s:8:"macro_id";s:3:"212";s:11:"macro_value";s:7:"CAT_IMG";s:13:"macro_replace";s:92:">";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"e_minus";a:6:{s:8:"macro_id";s:3:"240";s:11:"macro_value";s:7:"E_MINUS";s:13:"macro_replace";s:79:"Collapse";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"e_plus";a:6:{s:8:"macro_id";s:3:"239";s:11:"macro_value";s:6:"E_PLUS";s:13:"macro_replace";s:76:"Expand";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"f_active";a:6:{s:8:"macro_id";s:3:"193";s:11:"macro_value";s:8:"F_ACTIVE";s:13:"macro_replace";s:78:"Active Users";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"f_calen";a:6:{s:8:"macro_id";s:3:"238";s:11:"macro_value";s:7:"F_CALEN";s:13:"macro_replace";s:75:"calendar";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"f_closed";a:6:{s:8:"macro_id";s:3:"291";s:11:"macro_value";s:8:"F_CLOSED";s:13:"macro_replace";s:12:"f_closed.gif";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"f_nav";a:6:{s:8:"macro_id";s:3:"195";s:11:"macro_value";s:5:"F_NAV";s:13:"macro_replace";s:69:">";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"f_nav_sep";a:6:{s:8:"macro_id";s:3:"194";s:11:"macro_value";s:9:"F_NAV_SEP";s:13:"macro_replace";s:13:" > ";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"f_norm";a:6:{s:8:"macro_id";s:3:"292";s:11:"macro_value";s:6:"F_NORM";s:13:"macro_replace";s:13:"f_norm_no.gif";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"f_norm_hot";a:6:{s:8:"macro_id";s:3:"290";s:11:"macro_value";s:10:"F_NORM_HOT";s:13:"macro_replace";s:12:"f_hot_no.gif";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"f_rules";a:6:{s:8:"macro_id";s:3:"221";s:11:"macro_value";s:7:"F_RULES";s:13:"macro_replace";s:84:"Forum Rules";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"f_stats";a:6:{s:8:"macro_id";s:3:"196";s:11:"macro_value";s:7:"F_STATS";s:13:"macro_replace";s:78:"Board Stats";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:14:"integrity_msgr";a:6:{s:8:"macro_id";s:3:"216";s:11:"macro_value";s:14:"INTEGRITY_MSGR";s:13:"macro_replace";s:88:"Integrity Messenger IM";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"item_start";a:6:{s:8:"macro_id";s:3:"234";s:11:"macro_value";s:10:"ITEM_START";s:13:"macro_replace";s:73:".";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"last_post";a:6:{s:8:"macro_id";s:3:"214";s:11:"macro_value";s:9:"LAST_POST";s:13:"macro_replace";s:79:"Last Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"m_read";a:6:{s:8:"macro_id";s:3:"199";s:11:"macro_value";s:6:"M_READ";s:13:"macro_replace";s:79:"Read Msg";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"m_unread";a:6:{s:8:"macro_id";s:3:"200";s:11:"macro_value";s:8:"M_UNREAD";s:13:"macro_replace";s:78:"Unread Msg";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"msg_folder";a:6:{s:8:"macro_id";s:3:"233";s:11:"macro_value";s:10:"MSG_FOLDER";s:13:"macro_replace";s:73:"-";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"new_post";a:6:{s:8:"macro_id";s:3:"213";s:11:"macro_value";s:8:"NEW_POST";s:13:"macro_replace";s:121:"Goto first unread";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"no_photo";a:6:{s:8:"macro_id";s:3:"197";s:11:"macro_value";s:8:"NO_PHOTO";s:13:"macro_replace";s:77:"No Photo";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_aol";a:6:{s:8:"macro_id";s:3:"201";s:11:"macro_value";s:5:"P_AOL";s:13:"macro_replace";s:70:"AOL";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"p_card";a:6:{s:8:"macro_id";s:3:"266";s:11:"macro_value";s:6:"P_CARD";s:13:"macro_replace";s:80:"Profile Card";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"p_delete";a:6:{s:8:"macro_id";s:3:"202";s:11:"macro_value";s:8:"P_DELETE";s:13:"macro_replace";s:81:"Delete Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"p_edit";a:6:{s:8:"macro_id";s:3:"203";s:11:"macro_value";s:6:"P_EDIT";s:13:"macro_replace";s:77:"Edit Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"p_email";a:6:{s:8:"macro_id";s:3:"204";s:11:"macro_value";s:7:"P_EMAIL";s:13:"macro_replace";s:81:"Email Poster";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_icq";a:6:{s:8:"macro_id";s:3:"205";s:11:"macro_value";s:5:"P_ICQ";s:13:"macro_replace";s:70:"ICQ";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_msg";a:6:{s:8:"macro_id";s:3:"206";s:11:"macro_value";s:5:"P_MSG";s:13:"macro_replace";s:68:"PM";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_msn";a:6:{s:8:"macro_id";s:3:"211";s:11:"macro_value";s:5:"P_MSN";s:13:"macro_replace";s:69:"MSN";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"p_quote";a:6:{s:8:"macro_id";s:3:"207";s:11:"macro_value";s:7:"P_QUOTE";s:13:"macro_replace";s:79:"Quote Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"p_report";a:6:{s:8:"macro_id";s:3:"210";s:11:"macro_value";s:8:"P_REPORT";s:13:"macro_replace";s:81:"Report Post";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:4:"p_up";a:6:{s:8:"macro_id";s:3:"265";s:11:"macro_value";s:4:"P_UP";s:13:"macro_replace";s:91:"Go to the top of the page";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:9:"p_website";a:6:{s:8:"macro_id";s:3:"208";s:11:"macro_value";s:9:"P_WEBSITE";s:13:"macro_replace";s:80:"Users Website";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:5:"p_yim";a:6:{s:8:"macro_id";s:3:"209";s:11:"macro_value";s:5:"P_YIM";s:13:"macro_replace";s:71:"Yahoo";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:15:"pb_user_offline";a:6:{s:8:"macro_id";s:3:"231";s:11:"macro_value";s:15:"PB_USER_OFFLINE";s:13:"macro_replace";s:86:"User is offline";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:14:"pb_user_online";a:6:{s:8:"macro_id";s:3:"230";s:11:"macro_value";s:14:"PB_USER_ONLINE";s:13:"macro_replace";s:85:"User is online!";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:13:"post_snapback";a:6:{s:8:"macro_id";s:3:"243";s:11:"macro_value";s:13:"POST_SNAPBACK";s:13:"macro_replace";s:75:"*";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_aim";a:6:{s:8:"macro_id";s:3:"267";s:11:"macro_value";s:7:"PRO_AIM";s:13:"macro_replace";s:76:"AIM";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:11:"pro_contact";a:6:{s:8:"macro_id";s:3:"272";s:11:"macro_value";s:11:"PRO_CONTACT";s:13:"macro_replace";s:83:"Contact";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_icq";a:6:{s:8:"macro_id";s:3:"276";s:11:"macro_value";s:7:"PRO_ICQ";s:13:"macro_replace";s:76:"ICQ";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"pro_item";a:6:{s:8:"macro_id";s:3:"268";s:11:"macro_value";s:8:"PRO_ITEM";s:13:"macro_replace";s:86:"Profile Item";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_msn";a:6:{s:8:"macro_id";s:3:"269";s:11:"macro_value";s:7:"PRO_MSN";s:13:"macro_replace";s:76:"MSN";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:7:"pro_yim";a:6:{s:8:"macro_id";s:3:"271";s:11:"macro_value";s:7:"PRO_YIM";s:13:"macro_replace";s:80:"Yahoo";s:16:"macro_can_remove";s:1:"1";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"t_opts";a:6:{s:8:"macro_id";s:3:"219";s:11:"macro_value";s:6:"T_OPTS";s:13:"macro_replace";s:84:"Topic Options";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"t_qreply";a:6:{s:8:"macro_id";s:3:"218";s:11:"macro_value";s:8:"T_QREPLY";s:13:"macro_replace";s:76:"Fast Reply";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:4:"test";a:6:{s:8:"macro_id";s:3:"241";s:11:"macro_value";s:4:"test";s:13:"macro_replace";s:4:"test";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_0";a:6:{s:8:"macro_id";s:3:"222";s:11:"macro_value";s:6:"WARN_0";s:13:"macro_replace";s:72:"-----";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_1";a:6:{s:8:"macro_id";s:3:"223";s:11:"macro_value";s:6:"WARN_1";s:13:"macro_replace";s:72:"X----";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_2";a:6:{s:8:"macro_id";s:3:"224";s:11:"macro_value";s:6:"WARN_2";s:13:"macro_replace";s:72:"XX---";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_3";a:6:{s:8:"macro_id";s:3:"225";s:11:"macro_value";s:6:"WARN_3";s:13:"macro_replace";s:72:"XXX--";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_4";a:6:{s:8:"macro_id";s:3:"226";s:11:"macro_value";s:6:"WARN_4";s:13:"macro_replace";s:72:"XXXX-";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:6:"warn_5";a:6:{s:8:"macro_id";s:3:"227";s:11:"macro_value";s:6:"WARN_5";s:13:"macro_replace";s:72:"XXXXX";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:8:"warn_add";a:6:{s:8:"macro_id";s:3:"228";s:11:"macro_value";s:8:"WARN_ADD";s:13:"macro_replace";s:71:"+";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}s:10:"warn_minus";a:6:{s:8:"macro_id";s:3:"229";s:11:"macro_value";s:10:"WARN_MINUS";s:13:"macro_replace";s:73:"-";s:16:"macro_can_remove";s:1:"0";s:9:"macro_set";s:1:"1";s:8:"theorder";s:1:"1";}}]]> + + + + + +<% TITLE %> +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
    +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
    + +]]>
    + 1160732138 + 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(style_images/1/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap +{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(style_images/1/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.rowhighlight{ + background-color: #FFF9BA; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.celltodayshaded, +.celldateshaded, +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.celltodayshaded, +.celldateshaded +{ + background: #E3DFE7; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.celltodayshaded, +.mcelltoday{ + border: 2px solid #8B0000; +} + +.calranged +{ + border: 2px outset #C2CFDF; + background: #C2CFDF; + padding:4px; +} + +.calitem +{ + border-bottom: 1px dotted #C2CFDF; + padding:4px; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +.input-warn, +.input-green, +.input-checkbox, +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +select +{ + margin: 0px; +} + +.input-checkbox +{ + border: none; +} + +.input-warn, +.input-warn-content +{ + border: 1px solid #C00; +} + +.input-ok, +.input-ok-content +{ + border: 1px solid #0C0; +} + +.input-warn-content +{ + padding: 4px; + margin: 4px; + background-color: #FCC; +} + +.input-ok-content +{ + padding: 4px; + margin: 4px; + background-color: #CFC; +} + + +.input-text +{ + color: #900; +} + +input.button{ + margin: 0; + width: auto; + cursor: hand; + cursor: pointer; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; + background: transparent; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0px; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(style_images/1/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 0 auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(style_images/1/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0px; + margin: 0px; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: url(style_images/1/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.maintitle td { + color: #FFF; + font-size: 12px; + font-weight: bold; +} + + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(style_images/1/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + + +td.formbuttonrow, +.pformstrip, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap { + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + + +.errorwrap h4 { + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p { + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(style_images/1/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#logographic{ + background: transparent url(style_images/1/logo4.gif) no-repeat left; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(style_images/1/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; + height: 28px; + text-align: right; +} + +.ipb-top-left-link, +.ipb-top-right-link +{ + background: transparent url(style_images/1/tile_sub-lite.gif); + float: right; + font-size: 10px; + font-weight: bold; + letter-spacing: 0.5px; + margin: 0px; + padding: 7px 0 7px 0; + width: auto; + border-left: 1px solid #dce3ee; +} + +.ipb-top-left-link +{ + float: left; + border-left: 0px; + border-right: 1px solid #dce3ee; +} + +.ipb-top-left-link a:link, +.ipb-top-left-link a:visited, +.ipb-top-right-link a:link, +.ipb-top-right-link a:visited +{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +.ipb-top-left-link a:hover, +.ipb-top-left-link a:active, +.ipb-top-right-link a:hover, +.ipb-top-right-link a:active +{ + background: transparent; + color: #5176B5; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 14px 0px 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +.dny-edit-title +{ + border:0px; + padding:3px; + margin:0px; + background: #D1DCEB; + color: #3A4F6C; +} + + +/* ======================================== */ +/* TABS +/* ======================================== */ + +.tabon +{ + border-top:1px solid #999; + border-left:1px solid #999; + border-right:1px solid #999; + background-color:#FFF; + padding:8px; + padding-bottom:9px; + font-size:10px; + float:left; + width:auto; + margin-top:3px; +} + +.taboff +{ + border-top: 1px solid #777; + border-left: 1px solid #777; + border-right: 1px solid #777; + background-color: #B5C3D9; + color: #333; + padding: 8px; + font-size:10px; + float: left; + width: auto; + margin-top:3px; +} + +.tabon a:link, +.tabon a:visited, +.tabon a:active +{ + text-decoration:none; + color: #000; +} + +.taboff a:link, +.taboff a:visited, +.taboff a:active +{ + text-decoration:none; + color: #333; +} + +.mya-back +{ + background: #072A66; + margin:1px; + padding: 1px; +} + +.mya-content +{ + background: #FFF; + padding:8px; + margin: 1px; + border: 1px solid #777; +} + +.mya-content-tbl +{ + background: #F0F5FA; + border: 1px solid #777; + text-align:left; + font-size:10px; + white-space:nowrap; + margin:1px; +} + +.mya-fieldwrap +{ + background: transparent; + margin-top: 2px; + margin-bottom: 2px; + padding: 4px; + border: 1px solid #C5C7CD; + -moz-border-radius: 5px; + width: auto; + display: block; +} + +/* -------------------------------- */ +/* Create PM box defaults */ +/* -------------------------------- */ + +.iframeshim +{ + position:absolute; + display:none; + background: #FFF; + filter:alpha(opacity=0); + border:0px; + width:auto; + height:auto; +} + + + +/* -------------------------------- */ +/* Experimental */ +/* -------------------------------- */ + +.popupmenu, +.popupmenu-new +{ + background: #F0F5FA; + border: 1px solid #3A4F6C; + text-align:left; + font-size:10px; + white-space:nowrap; + /*padding:3px 5px 3px 3px;*/ + /*width:300px;*/ +} + +.popupmenu-item +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + border-bottom: 1px solid #C2CFDF; + color: #000000; + font-weight: normal; +} + +.popupmenu-item-last +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + color: #000000; + font-weight: normal; +} + +.popmenubutton-new, +.popmenubutton +{ + width:120px; + white-space:nowrap; + background-color: #C2CFDF; + border:1px solid #3A4F6C; + color: #3A4F6C; + font-weight:bold; + float:right; + height:18px; + text-align:center; + margin:0px; + font-size:11px; + padding:3px; +} + +.popmenubutton-new +{ + float:none; + width:auto; + text-align:left; + height:auto; + padding:3px; + font-weight:normal; + background-color:#EEF2F7; + background-image: url(style_images/1/menu_action_down-padded.gif); + background-repeat: no-repeat; + background-position: right; +} + +.popmenubutton-new-out +{ + padding:4px; +} + +.popupmenu-new +{ + background-color: #DFE6EF; +} + + +.popmenubutton a:link, +.popmenubutton a:visited, +.popmenubutton-new a:link, +.popmenubutton-new a:visited, +.popupmenu-item a:link, +.popupmenu-item a:visited, +.popupmenu-item-last a:link, +.popupmenu-item-last a:visited +{ + color: #3A4F6C; + text-decoration: none; +} + +.popmenubutton a:hover, +.popmenubutton-new a:hover, +.popupmenu-item a:hover, +.popupmenu-item-last a:hover +{ + color: #5176B5; + text-decoration: none; +} + +.popupmenu-category +{ + background: transparent url(style_images/1/tile_sub.gif); + border-top: 1px solid #5176B5; + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +/* -------------------------------- */ +/* Loading box +/* -------------------------------- */ + +#loading-layer-inner +{ + width:220px; + height:28px; + padding:18px 10px 10px 10px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#CCC #666 #666 #CCC; + background-color: #FCF8C7; +} + +/* -------------------------------- */ +/* Message in a bo(x|ttle) +/* -------------------------------- */ + +#ipd-msg-wrapper +{ + display: none; + width: 220px; +} + +#ipd-msg-inner +{ + width:100%; + height:45px; + padding: 6px 4px 4px 4px; + margin: 0px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#ccc #666 #666 #ccc; + background-color: #FCF8C7; + filter:alpha(opacity=75); + opacity:.75 +} + +#ipd-msg-title +{ + width: 100%; + height:20px; + margin: 0px; + padding: 6px 4px 4px 4px; + background: transparent url(style_images/1/css_pp_header.gif); + border: 1px solid #3A4F6C; + border-bottom: 0px; + color: #3A4F6C; + color: #FFF; +} + +.linked-image +{ + margin: 0px; + padding: 0px; + border: 0px; +} + +.resized-linked-image +{ + margin: 4px 0px 0px 0px; + padding: 0px; + background-color: #000; + border: 0px; + color: #FFF; + width: auto; +} + +.resized-linked-image-zoom +{ + width: 200px; + height: 30px; + filter:alpha(opacity=85); + opacity:.85; + background-color: #FFF; + padding-top: 6px; + padding-left: 5px; + top: 0px; + left: 0px; + position: absolute; + display: none; +} + +/* -------------------------------- */ +/* Edit post reason +/* -------------------------------- */ + +.post-edit-reason +{ + background: #E7EAEF; + margin-top: 9px; + margin-bottom: 0px; + padding: 4px; + color: #333; + font-size: 10px; + border: 1px solid #C5C7CD; + -moz-border-radius: 5px; + width: auto; + display: block; +} + +/* -------------------------------- */ +/* Personal Profile +/* -------------------------------- */ + +.pp-name +{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0px; + padding: 10px; +} + +.pp-name h3 +{ + margin:0px; + padding:0px 0px 5px 0px; + font-size:24px; +} + +.pp-header +{ + background: transparent url(style_images/1/tile_sub.gif); + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + margin: 0px 0px 1px 0px; + padding: 5px; +} + +.pp-title +{ + background: url(style_images/1/css_pp_header.gif); + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-datebox +{ + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-left: 4px; + margin-bottom: 4px; + font-size:24px; + font-weight:bold; + line-height: 100%; + letter-spacing: -1px; + float:right; + width: 80px; +} + +.pp-datebox em +{ + font-size: 10px; + font-weight: normal; + font-style: normal; +} + +.pp-contentbox-back +{ + background-image: url(style_images/1/folder_profile_portal/pp-css-contentblock.gif); + background-repeat: repeat-x; + background-color: #ACBFD9; + padding: 6px; +} + +.pp-contentbox-entry, +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + background-color: #EEF2F7; + border: 1px solid #888888; + line-height: 140%; + padding: 12px; + margin-bottom: 6px; + height: 200px; + overflow: auto; + overflow-x: auto; +} + +.pp-contentbox-entry-noheight-sel +{ + background-color:#FCECCD; +} + +.pp-contentbox-entry-noheight-mod +{ + background-color:#FDF1DA; +} + +.pp-contentbox-entry-noheight, +.pp-contentbox-entry-noheight-mod, +.pp-contentbox-entry-noheight-sel +{ + height: auto; + margin-bottom: 1px; +} + +.pp-image-thumb-wrap, +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 52px; + height: 52px; + text-align: center; + background: #FFFFFF; + border: 1px solid #555555; + padding: 4px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-mini-wrap, +.pp-image-mini-wrap-floatright +{ + width: 27px; + height: 27px; + margin-top: auto; + margin-bottom: auto; +} + +.pp-image-thumb-wrap-floatright, +.pp-image-mini-wrap-floatright +{ + float:right; +} + +.pp-tiny-text +{ + color: gray; + font-size: 10px; +} + +.pp-mini-content-entry, +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + background-color: #F5F9FD; + padding: 6px; + border-bottom: 1px dotted #555555; + clear:both; + width: auto; + height: 60px; +} + +.pp-mini-entry-noheight-shaded +{ + background-color: #E3DFE7; +} + +.pp-mini-content-entry-noheight, +.pp-mini-entry-noheight-shaded +{ + height: auto; +} + +.pp-tabclear, +.pp-maintitle +{ + background: url(style_images/1/css_pp_header.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.pp-tabclear +{ + border:0px; + border-right: 1px solid #072A66; + border-left: 1px solid #072A66; +} + +.pp-tabon +{ + border-top:1px solid #3363A1; + border-left:1px solid #072A66; + border-right:1px solid #072A66; + background-color:#6696D6; + color:#FFFFFF; + padding:8px; + float:left; + width:auto; + background-image: url(style_images/1/css_pp_tab_on.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-taboff, +.pp-tabshaded +{ + border-top: 1px solid #759BC7; + border-left: 1px solid #759BC7; + border-right: 1px solid #759BC7; + background-color: #3363A1; + color: #3363A1; + padding:8px; + float: left; + width: auto; + background-image: url(style_images/1/css_pp_tab_off.gif); + background-repeat: repeat-x; + background-position: left bottom; + margin-top:3px; + font-size:10px; +} + +.pp-tabshaded +{ + background-image: url(style_images/1/css_pp_tab_shaded.gif); + background-repeat: repeat-x; + background-position: left bottom; + color: #516795; + border-top: 1px solid #7f9BBC; + border-left: 1px solid #7f9BBC; + border-right: 1px solid #7f9BBC; +} + +.pp-tabon a:link, +.pp-tabon a:visited, +.pp-tabon a:active +{ + text-decoration:none; + color: #FFFFFF; +} + +.pp-taboff a:link, +.pp-taboff a:visited, +.pp-taboff a:active, +.pp-tabshaded a:link, +.pp-tabshaded a:visited, +.pp-tabshaded a:active +{ + text-decoration:none; + color: #3363A1; +} + +.pp-tabwrap +{ + height: 34px; + margin:0px; + padding:0px; +}]]> + + + + + +<% TITLE %> +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
    +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
    + +]]>
    + default +
    + + + 2 + IPB Default Skin + 1 + 0 + 1 + 1 + -1 + ipbauto@invisionboard.com + Invision Power Services + www.invisionboard.com + + + + 0 + + + default + +
    + +
    \ No newline at end of file diff --git a/upload/resources/tasks.xml b/upload/resources/tasks.xml new file mode 100644 index 00000000..7e9a3711 --- /dev/null +++ b/upload/resources/tasks.xml @@ -0,0 +1,275 @@ + + + + + 1 + Hourly Clean Out + cleanout.php + 1158935280 + -1 + -1 + -1 + 59 + 87a432443398942e7536028f9b0e4296 + 1 + Kill old sessions, reg images, searches + 1 + cleanout + 0 + 0 + + + + 2 + Daily Stats Rebuild + rebuildstats.php + 1158969600 + -1 + -1 + 0 + 0 + ac88319151330882c4a0eaa3d9016a1b + 1 + Rebuilds board statistics + 1 + rebuildstats + 0 + 0 + + + + 3 + Daily Clean Out + dailycleanout.php + 1158980400 + -1 + -1 + 3 + 0 + 43f41348f6d31e86884a6431f29ef52f + 1 + Prunes topic subscriptions and old read topic entries + 1 + dailycleanout + 0 + 0 + + + + 4 + Birthday and Events Cache + calendarevents.php + 1158961980 + -1 + -1 + 12 + -1 + f0bd66a5f14ad72e76c9636c84325a2a + 1 + + 1 + calendarevents + 0 + 0 + + + + 5 + Announcements Update + announcements.php + 1158933060 + -1 + -1 + 4 + -1 + 82584951232335eed1d53027f3046694 + 1 + Rebuilds cache and expires out of date announcements + 1 + announcements + 0 + 0 + + + + 6 + Send Bulk Mail + bulkmail.php + 1158846544 + -1 + -1 + -1 + -1 + 39b03a6e8a22c6a9ee419d31a47cea33 + 0 + Dynamically assigned, no need to edit or change + 0 + bulkmail + 1 + 0 + + + + 7 + + dailydigest.php + 1158970200 + -1 + -1 + 0 + 10 + b905a89a00d6ba8acd30092cb9a3f8b2 + 1 + + 1 + dailydigest + 0 + 0 + + + + 8 + + weeklydigest.php + 1159067400 + 0 + -1 + 3 + 10 + 5df642c53fda5d889546f21bfbac92ba + 1 + + 1 + weeklydigest + 0 + 0 + + + + 9 + Expire Paid Subscriptions + doexpiresubs.php + 1158969600 + -1 + -1 + 0 + 0 + 57fddf99f58d4c5393c2eb3408047267 + 1 + Unsubscribes members from their subscribed packages + 1 + doexpiresubs + 1 + 0 + + + + 10 + Update Topic Views Counter + updateviews.php + 1158942600 + -1 + -1 + 3 + -1 + 4faf64b98e9c57c483b82ba6074d1b0f + 0 + Used when topic views are not incremented immediately + 1 + updateviews + 0 + 0 + + + + 11 + Subscription Expiration Notification + expiresubs.php + 1158973200 + -1 + -1 + 1 + 0 + 521640eb417f07e634604daae56ca485 + 1 + Sends out an email to all members who have a subscription due to expire + 1 + expiresubs + 0 + 0 + + + + 12 + RSS Import Update + rssimport.php + 1158933480 + -1 + -1 + -1 + 30 + a102c550761e0074251496e5d3afea60 + 1 + Imports any new RSS articles + 1 + rssimport + 1 + 0 + + + + 13 + Remove Old Validating Members + removevalidating.php + 1158976800 + -1 + -1 + 2 + 0 + 0460686136ae8c6d4db59824afe59748 + 1 + + 1 + validating + 1 + 0 + + + + 14 + Prune Logs + logprune.php + 1159336800 + -1 + 27 + 6 + 0 + 8337aca64493804858fbcc2c4fc5759b + 1 + This task will prune logs based on your log pruning settings + 1 + logprune + 0 + 0 + + + + 15 + Update Profile Views + update_profile_views.php + 1158936240 + -1 + -1 + 1 + -1 + 3077b04aeaebb5e758c1b5bcd1e48816 + 0 + Rebuilds the profile view counters + 1 + update_profile_views + 1 + 0 + + + + \ No newline at end of file diff --git a/upload/resources/version_history.php b/upload/resources/version_history.php new file mode 100644 index 00000000..8b2cc6d3 --- /dev/null +++ b/upload/resources/version_history.php @@ -0,0 +1,38 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + '21008' => '2.1.2', + '21009' => '2.1.3', + '21010' => '2.1.4', + '21011' => '2.1.5', + '21012' => '2.1.6', + '21013' => '2.1.7', + '22005' => '2.2.0 Public Beta 2', + '22006' => '2.2.0 RC 1', + ); + + +?> \ No newline at end of file diff --git a/upload/retail/chatauth.php b/upload/retail/chatauth.php index 312af7f9..4b59dec6 100644 --- a/upload/retail/chatauth.php +++ b/upload/retail/chatauth.php @@ -2,24 +2,15 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2005 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Email: matt@invisionpower.com | 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) +--------------------------------------------------------------------------- | | > IPB CHAT 2004 INTEGRATION @@ -96,7 +87,7 @@ $ipsclass->converge = new class_converge( $ipsclass->DB ); // Start off the cache array //-------------------------------- -$ipsclass->cache_array = array_merge( array(), array('rss_calendar', 'rss_export','components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages') ); +$ipsclass->cache_array = array('rss_calendar', 'rss_export','components','banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages'); //=========================================================================== @@ -167,10 +158,17 @@ if ( $in_user and $in_pass ) // Attempt to get member... //------------------------------------------ - $ipsclass->DB->query("SELECT m.mgroup, m.name, m.id, c.* FROM ibf_members m - LEFT JOIN ibf_members_converge c ON (m.id=c.converge_id) - WHERE $query"); - + $ipsclass->DB->build_query( array( 'select' => 'm.mgroup, m.name, m.id, c.*', + 'from' => array( 'members' => 'm' ), + 'where' => $query, + 'limit' => array( 0, 1 ), + 'add_join' => array( 1 => array( 'type' => 'left', + 'from' => array( 'members_converge' => 'c' ), + 'where' => 'c.converge_email=m.email', + ) ) + ) ); + $ipsclass->DB->exec_query(); + $member = $ipsclass->DB->fetch_row(); if ( ! $member['id'] ) @@ -259,6 +257,4 @@ function show_message($msg="Result=Error") } - - ?> \ No newline at end of file diff --git a/upload/retail/chatservice.php b/upload/retail/chatservice.php index 456446b8..2591e960 100644 --- a/upload/retail/chatservice.php +++ b/upload/retail/chatservice.php @@ -2,24 +2,15 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2003 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Email: matt@invisionpower.com | 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) +--------------------------------------------------------------------------- | | > IPB CHAT 2004 INTEGRATION diff --git a/upload/retail/index.html b/upload/retail/index.html index 787531db..52a588b2 100644 --- a/upload/retail/index.html +++ b/upload/retail/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/retail/regkey.php b/upload/retail/regkey.php index b6a325b7..e3110f28 100644 --- a/upload/retail/regkey.php +++ b/upload/retail/regkey.php @@ -1,28 +1,4 @@ \ No newline at end of file diff --git a/upload/skin_acp/._index.html b/upload/skin_acp/._index.html new file mode 100644 index 00000000..0f63958b Binary files /dev/null and b/upload/skin_acp/._index.html differ diff --git a/upload/skin_acp/IPB2_Standard/acp_components.js b/upload/skin_acp/IPB2_Standard/acp_components.js index 5b4687af..2bd55cc5 100644 --- a/upload/skin_acp/IPB2_Standard/acp_components.js +++ b/upload/skin_acp/IPB2_Standard/acp_components.js @@ -1,5 +1,5 @@ //------------------------------------------ -// Invision Power Board v2.1.7 +// Invision Power Board v2.1 // ACP Specific JS File // (c) 2005 Invision Power Services, Inc. // @@ -136,7 +136,8 @@ components.prototype.add_menu_row = function() } } - maxid += 1; + maxid = parseInt(maxid); + maxid = parseInt( maxid + 1 ); this.update_form_array(); @@ -159,7 +160,7 @@ function bbedit_components_remove_menu_row() {} components.prototype.remove_menu_row = function( id ) { - if ( confirm( "Вы уверены, что желаете удалить этот пункт меню?" ) ) + if ( confirm( "Are you sure you wish to remove this menu row?" ) ) { //------------------------------- // Delete All bits diff --git a/upload/skin_acp/IPB2_Standard/acp_css.css b/upload/skin_acp/IPB2_Standard/acp_css.css index 75e49d97..ac0b2b21 100644 --- a/upload/skin_acp/IPB2_Standard/acp_css.css +++ b/upload/skin_acp/IPB2_Standard/acp_css.css @@ -1 +1,1519 @@ -/*===============================================*/ /* New Styles */ /*===============================================*/ del, .diffred { background-color: #D7BBC8; text-decoration:none; } ins, .diffgreen { background-color: #BBD0C8; text-decoration:none; } .perms-red { background-color: #D7BBC8; } .perms-green { background-color: #BBD0C8; } .perms-gray { background-color: #CCC; } .input-warn, .input-warn-content { border: 1px solid #C00; } .input-ok, .input-ok-content { border: 1px solid #0C0; } .input-warn-content { padding: 4px; margin: 4px; background-color: #FCC; } .input-ok-content { padding: 4px; margin: 4px; background-color: #CFC; } .img-boxed { border:2px inset #345487; background-color:#E4EAF2; padding:2px; } .img-boxed-off { border:1px outset #E4EAF2; background-color:transparent; padding:3px; } .tablesubheader, .tablefooter { background-color: #D1DCEB; color:#3A4F6C; font-weight:bold; padding:6px; margin-top:1px } .tablerow1 { background-color:#E4EAF2; padding:6px; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB ; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tablerow2 { background-color:#F5F9FD; padding:6px; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tablerow3 { background-color:#D1DCEB; padding:6px; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tablerow4 { background-color:#C0CBDA; padding:6px; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB; border-top:1px solid #FFF; border-left:1px solid #FFF; } .popupmenu { background-color: #E4EAF2; border:1px solid #345487; text-align:left; font-size:10px; padding:3px 5px 3px 3px; /*width:300px;*/ } .menusep { white-space: nowrap; /* stop menu collapsing in IE */ padding-top:1px; padding-bottom:1px; border-bottom:1px solid #DDD; } .menuseplast { white-space: nowrap; /* stop menu collapsing in IE */ padding-top:1px; padding-bottom:1px; } .menusep a:link, .menusep a:visited, .menusep a:active, .menuseplast a:link, .menuseplast a:visited, .menuseplast a:active { text-decoration:none; font-weight:bold; } /* ======================================== */ /* GLOBAL ELEMENTS */ /* ======================================== */ html { overflow-x: auto; /* fixes MSIE scrollbar bug DO NOT REMOVE */ } body, .body-bg { color: #000; font-family: Verdana, Tahoma, Arial, Trebuchet MS, Sans-Serif, Georgia, Courier, Times New Roman, Serif; font-size: 10px; margin: 0px; padding: 0px; text-align: center; /* centers board in MSIE known bug workaround */ background-repeat: repeat-x; background-image: url(images/acp_logo_strip_bg.gif); background-color: #D4D9E1; } table, tr, td { color: #000; font-family: Verdana, Tahoma, Arial, Trebuchet MS, Sans-Serif, Georgia, Courier, Times New Roman, Serif; font-size: 10px; } a:link, a:visited, a:active { color:#000055; } a:hover { color:#333377; text-decoration:underline } form { display:inline } input { vertical-align:middle } img { vertical-align:middle } /* ======================================== */ /* MAIN WRAPPER ID */ /* ======================================== */ /* Adjust main width here. Leave margins alone to auto-center content */ #ipdwrapper { text-align: left; /* re_aligns text to left second part of two part MSIE centering workaround */ padding: 6px; } /* ======================================== */ /* MAIN BLOCKS /* ======================================== */ #leftblock { border: 1px solid #555; background-color:#FFF; padding:10px; } #rightblock { padding:10px; border: 1px solid #555; background-color:#FFF; } #tablewrap { height:100%; } /* ======================================== */ /* TABS /* ======================================== */ .tabon { border-top:1px solid #999; border-left:1px solid #999; border-right:1px solid #999; background-color:#FFF; padding:8px; font-size:11px; float:left; width:auto; margin-top:3px; } .taboff { border-top: 1px solid #777; border-left: 1px solid #777; border-right: 1px solid #777; background-color: #B5C3D9; color: #333; padding: 8px; font-size:11px; float: left; width: auto; background-image: url(images/taboffshade2.gif); background-repeat: no-repeat; background-position: left bottom; margin-top:3px; } .topbutton { border-top: 1px solid #345487; border-left: 1px solid #345487; border-right: 1px solid #345487; background-color: #E4EAF2; color: #555; padding: 6px; font-size: 10px; white-space: nowrap; position: relative; text-align: center; float: left; background-image: url(images/acp_topbutton_shadow.gif); background-repeat: repeat-x; background-position: left bottom; } .topbuttonnext { border-top: 1px solid #345487; border-right: 1px solid #345487; background-color: #E4EAF2; color: #555; padding: 6px; font-size:10px; white-space:nowrap; position:relative; text-align:center; float:left; background-image: url(images/acp_topbutton_shadow.gif); background-repeat: repeat-x; background-position: left bottom; } .tabon a:link, .tabon a:visited, .tabon a:active { text-decoration:none; color: #000; } .topbuttonnext a:link, .topbuttonnext a:visited, .topbuttonnext a:active, .topbutton a:link, .topbutton a:visited, .topbutton a:active, .taboff a:link, .taboff a:visited, .taboff a:active { text-decoration:none; color: #333; } .logoright { width:auto; float:right; position:absolute; top:0px; right:4px; } /* ======================================== */ /* OUTER BORDER / DIV /* ======================================== */ .outerdiv { border: 1px solid #999; padding: 4px; background-color: #EBEBEB; background-image: url(images/mainbggradient.gif); background-repeat: repeat-x; } /* ======================================== */ /* Page links /* ======================================== */ .pagelink { background-color: #F0F5FA; border: 1px solid #072A66; padding:1px 3px 1px 3px; color: #000; font-weight:normal; } .pagelinklast { background-color: #DFE6EF; border: 1px solid #072A66; padding:1px 3px 1px 3px; color: #000; font-weight:normal; } .pagecurrent { background-color: #FFC9A5; border: 1px solid #072A66; padding:1px 3px 1px 3px; color: #000; font-weight:normal; } .pagelink a:active, .pagelink a:visited, .pagelink a:link, .pagelinklast a:active, .pagelinklast a:visited, .pagelinklast a:link, .pagecurrent a:active, .pagecurrent a:visited, .pagecurrent a:link { text-decoration:none; color: #000; font-weight:normal; } /* ======================================== */ /* MENU STYLES */ /* ======================================== */ .menulinkwrap { font-size:9px; background-color:#EEF2F7; padding:2px 0px 2px 0px; /*line-height:170%;*/ } .menulinkwrap a:link, .menulinkwrap a:visited, .menulinkwrap a:active { color: #000; border-left:2px solid #EEF2F7; } .menulinkon { background-color:#DFE6EF; border-right:2px solid #3860BB; border-left:2px solid #3860BB; padding:2px 0px 2px 0px; } .menulinkoff { border-left:2px solid #EEF2F7; background-color:#EEF2F7; padding:2px 0px 2px 0px; } .descbox { padding:4px; border:1px solid #CCC; position:absolute; background-color:#FAFFAF; font-size:10px; font-weight:normal; color: #000; width: 120px; } .menumaintopon { font-size:10px; vertical-align:middle; font-weight:bold; color:#FFF; padding:6px; background-image: url(images/tile_cat.gif); background-color:#5176B5; } .menumaintopoff { font-size:10px; vertical-align:middle; font-weight:bold; color:#FFF; padding:5px 0px 8px 5px; background-image: url(images/menu_collapsed.gif); background-color:#5176B5; } .menumaintopon a:link, .menumaintopon a:visited, .menumaintopon a:active, .menumaintopoff a:link, .menumaintopoff a:visited, .menumaintopoff a:active { text-decoration: none; color: #FFF } .menumaintopon a:hover, .menumaintopoff a:hover { text-decoration: underline } /* ======================================== */ /* BOARD NAVIGATION STYLES */ /* ======================================== */ .navstrip { background-color: #F5F9FD; color: #999; font-size: 12px; font-weight: bold; padding: 6px; } .navstrip a:link, .navstrip a:visited, .navstrip a:active { background-color: transparent; color: #222; text-decoration: none; } .navstrip a:hover { background-color: transparent; color: #5176B5; text-decoration: none; } #logostrip { background-color: #3860BB; background-image: url(images/tile_back.gif); border-bottom: 5px solid #072A66; border-left: 1px solid #072A66; border-right: 1px solid #072A66; border-top: 1px solid #072A66; height: 52px; margin: 0px; padding: 0px; } #logostripinner { background-color: transparent; background-image: url(images/logobg.gif); background-position: right; background-repeat: no-repeat; height: 52px; margin: 0px; padding: 0px; } #submenu { border:1px solid #BCD0ED; background-color: #DFE6EF; font-size:10px; margin:3px 0px 3px 0px; color:#3A4F6C; font-weight:bold; } #submenu a:link, #submenu a:visited, #submenu a:active { font-weight:bold; font-size:10px; text-decoration: none; color: #3A4F6C; } .offdiv { font-size:12px; font-weight:bold } /* ======================================== */ /* TITLE ELEMENTS */ /* ======================================== */ .alttitle { background-repeat: repeat-x; background-image: url(images/acp_logo_strip_bg.gif); background-color: #D4D9E1; height:42px; color: #FFF; font-weight:bold; padding:0px; margin:0px; } .maintitle, .tableheaderalt { font-size:12px; vertical-align:middle; font-weight:bold; color:#FFF; padding:8px; background-image: url(images/tile_cat.gif); background-color:#345487; } .maintitle a:link, .maintitle a:visited, .maintitle a:active { text-decoration: none; color: #FFF } .maintitle a:hover { text-decoration: underline } .titlemedium { border:1px solid #FFF; font-weight:bold; color:#3A4F6C; padding:5px 0px 8px 2px; background-image: url(images/tile_sub.gif) } .titlemedium a:link, .titlemedium a:visited, .titlemedium a:active { text-decoration: underline; color: #3A4F6C } #maintop { font-size:14px; color:#FFF; font-weight:bold; letter-spacing:-1px; padding:5px 5px 8px 5px; border:1px solid #345487; background-image: url(images/tile_cat.gif); background-color:#5176B5; } .pformstrip { background-color: #D1DCEB; color:#3A4F6C; font-weight:bold; padding:5px; margin-top:1px } #normal { font: 10px Verdana; color:#333333 } #detail { font-family: Arial; font-size:11px; color: #333333 } #subtitle { font-family: Arial,Verdana; font-size:16px; color:#FF9900; font-weight:bold } #smalltitle { font-family: Arial,Verdana; font-size:11px; color:#FF9900; font-weight:bold } /* ======================================== */ /* TABLE AND TD ELEMENTS */ /* ======================================== */ .tdfset { background-color:#EEF2F7; } .tableborder { border:1px solid #345487; background-color:#FFF; } #table1 { background-color:#FFFFFF; width:100%; border:1px solid black } .tdrow1shaded { background-color:#EFE6EA; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB ; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tdrow2shaded { background-color:#F6ECF0; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tdrow1 { background-color:#EEF2F7; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB ; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tdrow2 { background-color:#F5F9FD; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tdrow3 { background-color:#E4EAF2; border-bottom:1px solid #D1DCEB; border-right:1px solid #D1DCEB ; border-top:1px solid #FFF; border-left:1px solid #FFF; } .tablepad { background-color:#F5F9FD; padding:3px; } .subforum { background-color:#DFE6EF } .catrow { font-weight:bold; height:24px; line-height:150%; color:#4C77B6; background-image: url(images/tile_sub.gif); } .catrow2 { font-size:11px; font-weight:bold; line-height:150%; color:#4C77B6; background-color:#D3DFEF; } .copy { color:#000; font-size:10px; border-top:1px solid #000; margin-bottom:10px; padding:6px; margin-left:auto; margin-right:auto; text-align:center; } #nav { color:#000000; font-size:9px } #description { color:#434951; font-size:10px } #memgroup { border:1px solid #777777 } #mgred { border:1px solid #777777; background-color: #f5cdcd } #mggreen { border:1px solid #777777; background-color: #caf2d9 } #mgblue { border:1px solid #777777; background-color: #DFE6EF } #mgyellow { border:1px solid #777777; background-color: #FFF7E8 } #green { background-color: #caf2d9 } #red { background-color: #f5cdcd } #button { border:1px solid #4C77B6; background-color: #DFE6EF; font-family:Verdana, Arial; font-size:11px } #editbutton { background-color: #DDDDDD; color: #000; font-family:Verdana, Arial; font-size:9px } .fauxbutton { border:1px solid #4C77B6; background-color: #DFE6EF; font-family:Verdana, Arial; font-size:10px; font-weight:bold; padding:3px; margin:6px; } .realbutton { border:1px solid #4C77B6; background-color: #DFE6EF; font-family:Verdana, Arial; font-size:10px; font-weight:bold; padding:2px; } .realwhitebutton { border:1px solid #4C77B6; background-color: #FFF; font-family:Verdana, Arial; font-size:10px; font-weight:bold; padding:3px; } .realdarkbutton { border:1px solid #4C77B6; background-color: #B1BECE; font-family:Verdana, Arial; font-size:10px; font-weight:bold; padding:2px; } .realredbutton { border:1px solid #C00; background-color: #F63; font-family:Verdana, Arial; font-size:10px; font-weight:bold; padding:2px; } .darkbg { background-color:#5176B5; } .darksep { background-color: #B1BECE; color:#4C77B6; height:5px } .fauxbutton a:link, .fauxbutton a:visited, .fauxbutton a:active { font-size:10px; font-weight:bold; text-decoration: none; } .textinput { background-color: #FFF; color:#000; font-size:10px; font-family: Verdana,Arial, Sans-Serif; padding:2px; border:2px inset #BCD0ED; } .dropdown { background-color: #FFF; color:#000; font-size:10px; font-family: Verdana,Arial, Sans-Serif; padding:2px; border:2px inset #BCD0ED; } .smalldropdown { background-color: #FFF; color:#000; font-size:9px; font-family: Verdana,Arial, Sans-Serif; border:1px inset #BCD0ED; } .multitext { background-color: #FFF; color:#000; font-size:10px; font-family: Verdana,Arial, Sans-Serif; padding:2px; border:2px inset #BCD0ED; } .jmenu, .jmenubutton { vertical-align:middle; background-color: #FFF; border:1px solid #345487; font-size:11px; } #jwrap { border:1px solid #BCD0ED; background-color: #DFE6EF; font-size:10px; margin:3px 0px 3px 0px; color:#3A4F6C; font-weight:bold; padding:8px } .desctext, .graytext { color: gray; } .graytext a:link, .graytext a:active, .graytext a:visited, .desctext a:link, .desctext a:active, .desctext a:visited { color: gray; } .skineditortopstrip { height:21px; background-image: url(images/skineditor_slice.gif); background-repeat: repeat-x; background-position: left bottom; padding:2px; } legend { font-size:11px; color: #345487; } fieldset { background-color: #DFE6EF; } /* -------------------------------- */ /* Create semi-transparent layer /* -------------------------------- */ .dyn-opacity-ie { background:#000; filter:alpha(opacity=40); height: 250px; width: 250px; } .dyn-opacity-moz { background:transparent; background-image: url(images/40opacity-black.png); background-repeat: repeat; height: 250px; width: 250px; } \ No newline at end of file +/* -------------------------------- */ +/* Drop shadows +/* -------------------------------- */ + +.shadow-moz +{ + padding:0 6px 6px 0; + background: url(images/folder_css_images/dropshadow-alpha.png) no-repeat bottom right; +} + +.shadow-ie +{ + filter: shadow(color:gray,direction:135,strength:3); +} + +/* -------------------------------- */ +/* Loading box +/* -------------------------------- */ + +#loading-layer-inner +{ + width:220px; + height:28px; + padding:18px 10px 10px 10px; + text-align:center; + color: #000; + border: 1px solid; + border-color:#ccc #666 #666 #ccc; + background-color: #FCF8C7; +} + +/* -------------------------------- */ +/* Create semi-transparent layer +/* -------------------------------- */ + +.dragmove-hide-ie +{ + background:#FFF; + filter:alpha(opacity=50); + height: 250px; + width: 250px; +} + +.dragmove-hide-moz +{ + background:transparent; + background-image: url('images/folder_css_images/50opacity-white.png'); + background-repeat: repeat; + height: 250px; + width: 250px; +} + +/* -------------------------------- */ +/* Used: Alert boxes and stuff (used in JS) +/* -------------------------------- */ + +.alert-box, +.alert-box-js, +.alert-box-noimg +{ + background-image: url(images/folder_css_images/js_alert.gif); + background-repeat: no-repeat; + color: #000; + border: 1px solid #000; + background-color: #FFDC3B; + padding: 3px 3px 3px 25px; +} + +.alert-box-js +{ + width: auto; + position: absolute; +} + +.alert-box-noimg +{ + background-image: url(images/spacer.gif); + background-repeat: no-repeat; +} +/** +* Information box +**/ + +.bad-box +{ + color: #000; + border: 1px solid #000; + -moz-border-radius: 5px; + background-color: #FFCCCC; + padding: 6px; + text-align:left; +} + +.good-box +{ + color: #000; + border: 1px solid #000; + -moz-border-radius: 5px; + background-color: #d9eac8; + padding: 6px; + text-align:left; +} + +.ok-box +{ + color: #000; + border: 1px solid #000; + -moz-border-radius: 5px; + background-color: #EBE7B6; + padding: 6px; + text-align:left; +} + +.warning-box, +.information-box +{ + color: #000; + border: 1px solid #000; + -moz-border-radius: 5px; + background-color: #FCF8C7; + padding: 6px; + text-align:left; +} + +.warning-box img, +.information-box img +{ + float:left; + margin-top: 10px; + margin-right: 5px; + vertical-align:middle; + border: 0px; +} + +.warning-box h2, +.warning-box p, +.information-box h2, +.information-box p +{ + padding: 0px; + margin: 0px; + margin-left: 60px; +} + +.warning-box h2, +.information-box h2 +{ + padding-bottom: 4px; + font-size: 14px; + border-bottom: 1px solid #000; +} + +.warning-box +{ + background-color: #FFCCCC; +} + +.warning-box ul +{ + margin-left: 30px; +} + + + + +/** +* Used: Content -> pages & dirs overview +* when not a folder, so we show a diff +* link underline +*/ + +.content-page-links, +.content-page-links a:active, +.content-page-links a:visited, +.content-page-links a:link +{ + text-decoration:none; +} + +.dny-edit-title +{ + border:0px; + padding:3px; + margin:0px; + background: #D1DCEB; + color: #3A4F6C; +} + + +.input-warn, +.input-warn-content +{ + border: 1px solid #C00; +} + +.input-ok, +.input-ok-content +{ + border: 1px solid #0C0; +} + +.input-warn-content +{ + padding: 4px; + margin: 4px; + background-color: #FCC; +} + +.input-ok-content +{ + padding: 4px; + margin: 4px; + background-color: #CFC; +} + +/* ======================================== */ +/* General Styles */ +/* ======================================== */ + +html +{ + overflow-x: auto; /* fixes MSIE scrollbar bug DO NOT REMOVE */ +} + +body, +.body-bg +{ + /*background-repeat: repeat-x; + background-image: url(images/acp_logo_strip.gif);*/ + background-color: #F3F3F3; + color: #000; + font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Arial, Verdana, "Trebuchet MS"; + font-size: 11px; + margin: 0px; + padding: 0px; + text-align: center; /* centers board in MSIE known bug workaround */ +} + +table, tr, td +{ + color: #000; + font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Arial, Verdana, "Trebuchet MS"; + font-size: 11px; +} + +form +{ + border: 0px solid #000; + display: inline; + margin: 0px; + padding: 0px; +} + +textarea, +input, +select +{ + border: 1px solid #999999; + color: #555; + font-size: 11px; + padding: 2px +} + +input:focus, +select:focus +{ + background: #e9f6fd; + border: 1px solid black; +} + +.minisubmit +{ + font-size: 10px; + border: 1px solid #999; +} + +.inputtext, +.inputtextgreen, +.inputtextred, +.inputtextmini +{ + font-size: 11px; + border: 1px solid #999; +} + +.inputtextmini +{ + font-size:10px; +} + +.inputtextgreen +{ + border: 1px solid #006600; +} + +.inputtextred +{ + border: 1px solid #990000; +} + +.textareaeditor +{ + width:99%; + height: 300px; + padding:4px; + border: 1px solid #999; +} + + +.formsubmit +{ + font-size:11px; + font-weight: bold; +} + +a:link, +a:visited, +a:active +{ + background-color: transparent; + color: #000; + text-decoration: underline; +} + +a:hover +{ + background-color: transparent; + color: #465584; + text-decoration: underline; +} + +.global-copyright +{ + font-size:10px; + font-weight:bold; + color: #3363A1; + padding:15px; + text-align:center; +} + +.global-copyright a:link, +.global-copyright a:visited, +.global-copyright a:active +{ + color: #3363A1; + text-decoration: underline; +} + +img.ipd +{ + vertical-align:middle; + border:0px; + padding:0px; + margin:0px; + float:none; +} + +img.ipd-alt +{ + vertical-align:middle; + border:0px; + padding:0px; + margin:0px; + float:none; + padding-bottom:2px +} + +img.calendar +{ + vertical-align:top; + border:0px; + width:16px; + height:16px; +} + +.img-boxed +{ + border: 2px inset #345487; + background-color: #E4EAF2; + padding: 2px; +} + +.img-boxed-off +{ + border: 1px outset #E4EAF2; + background-color: transparent; + padding: 3px; +} + +/* ======================================== */ +/* PAGINATION */ +/* ======================================== */ + +.pagelink, +.pagelinklast, +.pagecurrent +{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast +{ + background: #DFE6EF; +} + + +.pagecurrent +{ + background: #FFC9A5; +} + + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link +{ + text-decoration: none; +} + +/* ======================================== */ +/* MAIN BLOCKS +/* ======================================== */ + +#leftblock +{ + /*border: 1px solid #555; + background-color:#FFF; + padding:10px;*/ +} + +#rightblock +{ + padding:10px; + border: 1px solid #5D789C; + -moz-border-radius: 5px; + background-color:#FFF; +} + + +#tablewrap +{ + height:100%; +} + +/* ======================================== */ +/* OUTER BORDER / DIV +/* ======================================== */ + +.outerdiv +{ + border: 1px solid #5D789C; + border-top:1px solid #578DCA; + padding: 0px 4px 4px 4px; + background-image: url('images/folder_css_images/content_bar_bg.gif'); + background-repeat: repeat-x; + background-color: #ACBFD9; +} + +.sub-tab-strip +{ + background-image: url( 'images/folder_css_images/main_menu_bg.gif' ); + background-repeat: repeat-x; + border-bottom: 4px solid #385985; + border-left: 1px solid #5D789C; + border-right: 1px solid #5D789C; + color: #FFF; + font-size: 11px; + font-weight: bold; + padding: 8px 15px 8px 15px; + margin:0px; + height:14px; +} + +.global-memberbar +{ + vertical-align:middle; + color: #FFF; + font-size: 11px; + padding-left:5px; + width:auto; + float:right; +} + +.global-memberbar a:active, +.global-memberbar a:visited, +.global-memberbar a:link +{ + color:#FFF; + text-decoration:none; +} + +.global-memberbar a:hover +{ + text-decoration:underline; +} + +.navwrap +{ + vertical-align:middle; + color: #FFF; + font-size: 11px; + padding-left:5px; + float:left; +} + +.navwrap a:active, +.navwrap a:visited, +.navwrap a:link +{ + color:#FFF; + font-weight:bold; + text-decoration:none; +} + +/* ======================================== */ +/* MENU STYLES */ +/* ======================================== */ + +.menuouterwrap +{ + border: 1px solid #5D789C; + -moz-border-radius: 5px; + background-color: #EFF3F7; + margin: 0px 4px 0px 4px; +} + +.menucatwrap +{ + font-size: 12px; + font-weight:bold; + color: #20476D; + margin: 4px; + padding-bottom: 4px; + border-bottom: 1px solid #C7C7C7; +} + +.menulinkwrap +{ + margin: 2px; + padding-bottom: 3px; + border-bottom: 1px solid #E3E3E3; +} + +.menulinkwrap a:link, +.menulinkwrap a:visited, +.menulinkwrap a:active +{ + color: #000; +} + +.menulinkwrap a:hover +{ + color: #E69F06; +} + +.menutext +{ + font-size:10px; +} + +/* ======================================== */ +/* TABS +/* ======================================== */ + +.tabwrap-main +{ + height:37px; + background-image: url( 'images/folder_css_images/tab_background.gif' ); + background-repeat: repeat-x; + background-position: left bottom; +} + +.tabon-main, +.tabon +{ + border-top:1px solid #3363A1; + border-left:1px solid #3363A1; + border-right:1px solid #3363A1; + background-color:#6696D6; + color:#FFFFFF; + padding:8px; + float:left; + width:auto; + background-image: url('images/folder_css_images/tab-on-bg.gif'); + background-repeat: repeat-x; + background-position: left top; + margin-top:3px; +} + +.taboff-main, +.taboff +{ + border-top: 1px solid #759BC7; + border-left: 1px solid #759BC7; + border-right: 1px solid #759BC7; + background-color: #3363A1; + color: #3363A1; + padding:8px; + float: left; + width: auto; + background-image: url('images/folder_css_images/tab-off-bg.gif'); + background-repeat: repeat-x; + background-position: left top; + margin-top:3px; +} + +.tabon-main, +.taboff-main +{ + padding: 4px 8px 4px 8px; +} + +.tabon-main a:link, +.tabon-main a:visited, +.tabon-main a:active, +.tabon a:link, +.tabon a:visited, +.tabon a:active +{ + text-decoration:none; + color: #FFFFFF; +} + +.taboff-main a:link, +.taboff-main a:visited, +.taboff-main a:active, +.taboff a:link, +.taboff a:visited, +.taboff a:active +{ + text-decoration:none; + color: #3363A1; +} + +.tabwrap +{ + height: 33px; + margin:0px; + padding:0px; +} + +.tabclear +{ + clear:both; + background-image: url( 'images/folder_css_images/main_menu_bg.gif' ); + background-repeat: repeat-x; + border-left: 1px solid #5D789C; + border-right: 1px solid #5D789C; + color: #FFF; + font-size: 12px; + font-weight: bold; + padding: 8px 15px 8px 8px; + margin:0px; + height:14px; +} + +.logoright +{ + width:auto; + float:right; + position:absolute; + top:0px; + right:4px; +} + +/* ======================================== */ +/* MAIN WRAPPER ID */ +/* ======================================== */ +/* Adjust main width here. Leave margins alone to auto-center content */ +#ipdwrapper +{ + text-align: left; /* re_aligns text to left second part of two part MSIE centering workaround */ + padding: 6px; +} + + +/* ======================================== */ +/* GENERAL SYTLES */ +/* ======================================== */ + +.tablepad +{ + padding:6px; +} + +.tableborder +{ + border: 1px solid #5D789C; +} + +/* MIGHT WANT TO CHANGE THIS AT SOME POINT */ + +.tableheader, +.tableheaderalt +{ + font-size:12px; + vertical-align:middle; + font-weight:bold; + color:#FFF; + padding:8px 0px 8px 5px; + background-image: url(images/folder_css_images/table_title_gradient.gif); + background-repeat: repeat-x; + background-color:#3363A1; +} + +.tableheaderalt a:link, +.tableheaderalt a:visited, +.tableheaderalt a:active +{ + text-decoration:none; + color: #FFF; +} + +.tablefooter, +.tablesubheader +{ + background-color:#ACBFD9; + font-size:10px; + color: #3363A1; + font-weight:bold; + padding:5px; +} + + +.tablerowmedium +{ + background-color:#999; +} + +.tablerow1 img, +.tablerow2 img, +.tablerow3 img +{ + vertical-align:middle; + border:0px; +} + +.formmain-background +{ + background-image: url(images/folder_css_images/css-form-background.gif); + background-repeat: repeat-x; + background-color:#EAEDF0; + border-top:1px solid #769BC7; + padding:6px; +} + +.formmain-fieldset +{ + border:1px solid #769BC7; + padding:6px 6px 10px 6px; + margin-bottom: 3px; +} + +.formbutton-wrap +{ + padding-top:2px; + height: 32px; +} + +.formbutton-on, +.formbutton-off +{ + padding:6px; + font-size:10px; + font-weight:bold; + width:auto; + float:left; + color: #3363A1; +} + +.formbutton-on +{ + background-color:#D1DCEB; + border-bottom:1px solid #769BC7; + border-right:1px solid #769BC7; + border-top:1px solid #FFF; + border-left:1px solid #FFF; + cursor: pointer; +} + +.formbutton-off +{ + background-color:#F1F1F1; + border-bottom:1px solid #769BC7; + border-right:1px solid #769BC7; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow1 +{ + background-color:#EAEDF0; + padding:6px; + border-bottom:1px solid #C1BEBE; + border-right:1px solid #C1BEBE; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow2 +{ + background-color:#F1F1F1; + padding:6px; + + border-bottom:1px solid #C1BEBE; + border-right:1px solid #C1BEBE; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow3 +{ + background-color:#D1DCEB; + padding:6px; + + border-bottom:1px solid #D1DCEB; + border-right:1px solid #D1DCEB; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow4 +{ + background-color:#C0CBDA; + padding:6px; + + border-bottom:1px solid #D1DCEB; + border-right:1px solid #D1DCEB; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} +.tablerow2highlight +{ + background-color:#FCECCD; + padding:6px; + + border-bottom:1px solid #C1BEBE; + border-right:1px solid #C1BEBE; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow2queued +{ + background-color:#FCECCD; + padding:6px; + + border-bottom:1px solid #C1BEBE; + border-right:1px solid #C1BEBE; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow1shaded +{ + background-color:#EFE6EA; + padding:6px; + border-bottom:1px solid #C1BEBE; + border-right:1px solid #C1BEBE; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +.tablerow2shaded +{ + background-color:#F6ECF0; + padding:6px; + + border-bottom:1px solid #C1BEBE; + border-right:1px solid #C1BEBE; + border-top:1px solid #FFF; + border-left:1px solid #FFF; +} + +/* ======================================== */ +/* BUTTONS / FORMS */ +/* ======================================== */ + +.fauxredbutton +{ + border:1px solid #999; + background-color: #FED4D4; + font-family:Verdana, Arial; + font-size:10px; + font-weight:bold; + padding:6px; + margin:0px; +} + +.fauxbutton +{ + border:1px solid #999; + background-color: #E7E7E7; + font-family:Verdana, Arial; + font-size:10px; + font-weight:bold; + padding: 4px; + cursor: pointer; + cursor: hand; +} + +.fauxbutton-wrapper +{ + padding: 5px; +} + +.popupmenu +{ + background-color: #EFF3F7; + border: 1px solid #999; + text-align: left; + font-size: 10px; + padding: 3px 5px 3px 3px; + background-image: url(images/icons_menu/menu-icon-bg.gif); + background-repeat: repeat-y; +} + +.menusep +{ + white-space: nowrap; /* stop menu collapsing in IE */ + padding-top:4px; + padding-bottom:3px; + border-bottom:1px solid #DDD; +} + +.menuseplast +{ + white-space: nowrap; /* stop menu collapsing in IE */ + padding-top:4px; + padding-bottom:3px; +} + +.menusep a:link, +.menusep a:visited, +.menusep a:active, +.menuseplast a:link, +.menuseplast a:visited, +.menuseplast a:active +{ + text-decoration:none; + font-weight:bold; +} + +.fauxdropdown +{ + border:1px solid #777; + background-color: #CCC; + font-family:Verdana, Arial; + font-size:10px; + font-weight:bold; + padding:6px; + margin:0px; +} + +.fauxdropdown a:link, +.fauxdropdown a:visited, +.fauxdropdown a:active, +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active, +.fauxredbutton a:link, +.fauxredbutton a:visited, +.fauxredbutton a:active +{ + text-decoration:none; + color:#333; +} + +.fauxredbutton a:hover, +.fauxbutton a:hover +{ + margin:0px; +} + +.realbutton +{ + border:1px solid #999; + background-color: #E7E7E7; + font-family:Verdana, Arial; + font-size:10px; + font-weight:bold; + padding:2px; + cursor: pointer; + cursor: hand; +} + +.realdarkbutton +{ + border:1px solid #999; + background-color: #CCC; + font-family:Verdana, Arial; + font-size:10px; + font-weight:bold; + padding:2px; + cursor: pointer; + cursor: hand; +} + +input[type="text"] +{ + cursor: text; +} + +.desctext +{ + color:gray; +} + +.mininav +{ + font-size:11px; + color:#3363A1; +} + +.mininav a:link, +.mininav a:visited, +.mininav a:active +{ + text-decoration:none; + font-weight:bold; + color:#3363A1; +} + +.datedropdown +{ + font-size:10px; +} + +.datedropdownleave +{ + font-size:10px; + background-color:#FED4D4; +} + +/* ============================================================== */ +/* PALETTE STYLES +/* ============================================================== */ + +/* Main pop up wrapper */ + +#palettewrapper +{ + text-align: left; /* re_aligns text to left second part of two part MSIE centering workaround */ +} + +.paletteheader +{ + font-weight:bold; + font-size:12px; + color:#FFFFFF; + height:25px; + background-image: url(images/folder_css_images/main_menu_bg.gif); + background-repeat: repeat-x; + padding-top:7px; + padding-left:6px; +} + +.palettewrap +{ + padding:10px; + background-color: #FFFFFF; + background-image: url(images/folder_css_images/mainblock_bg.gif); + background-repeat: repeat-x; +} + +.iframestyle +{ + border:1px solid #777; + background-color:#FFF; +} + +.iframebuttonsoff +{ + font-size:10px; + border:1px solid #777; + border-bottom:0px; + padding:5px; + background-color: #BBB; +} + +.iframebuttons +{ + font-size:10px; + border:1px solid #777; + border-bottom:0px; + padding:5px; + background-color: #EBEBEB; +} + +/* ============================================================== */ +/* DIFF STYLES +/* ============================================================== */ + +del, +.diffred +{ + background-color: #D7BBC8; + text-decoration:none; +} + +ins, +.diffgreen +{ + background-color: #BBD0C8; + text-decoration:none; +} + +.diffwrap +{ + background:#FFF; + color:black; + border:1px solid #000; + white-space:pre; + font-family:monaco,courier,fixed; + overflow:auto; + width:100%; +} + +/* ============================================================== */ +/* RTE STYLES +/* ============================================================== */ + +.attach-menubutton +{ + border: 1px solid #7585B8; + -moz-border-radius: 3px; + padding: 2px 1px 2px 4px; + margin:0px; + font-size: 11px; + overflow: hidden; + background-color: #FFFFFF; + background-image: url('images/folder_rte_images/rte-dd-bg.gif'); + background-repeat: no-repeat; + width:auto; +} + +.attach-parentdiv +{ + background-color: #E5E6F1; + background-image: url('images/folder_rte_images/rte_tile.gif'); + background-repeat: repeat-x; + border: 1px solid #555; + letter-spacing: 0; + padding:6px; + text-align:left; +} + +.attach-messagediv +{ + background: #FFF; + color: #000000; + text-align:center; + border: 1px solid #555; +} +.attach-msg-span +{ + padding-top: 3px; + font-size:20px; + font-weight:bold; +} + +.attach-iframe +{ + border: 0px; + background-color:transparent; +} + +.attach-popupmenu +{ + background-color: #EFF3F7; + border: 1px solid #999; + text-align: left; + font-size: 11px; + padding: 3px 5px 3px 3px; + background-image: url('images/icon_components/articles/articles-menu-icon-bg.gif'); + background-repeat: repeat-y; +} + +.attach-menu-row-over, +.attach-menu-row +{ + padding:1px 1px 4px 1px; + width:100%; + cursor: pointer; + cursor: hand; +} + +.attach-menu-row-over +{ + background: #D3D3D3; +} + +/* ============================================================== */ +/* RTE STYLES +/* ============================================================== */ + +.rte-cb-bg +{ + background-color: #E5E6F1; + background-image: url('images/folder_rte_images/rte-cb-top-bg.gif'); + background-repeat: repeat-x; + border-bottom: 1px solid #555; + letter-spacing: 0; + height:11px; + text-align: left; + padding:0px; + margin:0px; +} +.rte-buttonbar +{ + background-color: #E5E6F1; + background-image: url('images/folder_rte_images/rte_tile.gif'); + background-repeat: repeat-x; + border: 1px solid #555; + letter-spacing: 0; +} + +.rte-buttonbar tbody tr td, +.rte-buttonbar tr td, +.rteBack tbody tr td, +.rteBack tr td +{ + padding: 0; +} + +.rte-iframe +{ + border:2px inset solid #777; + background-color:#FFF; + margin-top:4px; +} + +.rte-menu-button, +.rte-selected-menubutton, +.rte-hover-menubutton, +.rte-normal-menubutton +{ + border: 1px solid #7585B8; + -moz-border-radius: 3px; + padding: 2px 1px 2px 4px; + margin:0px; + font-size: 11px; + overflow: hidden; + background-color: #FFFFFF; + background-image: url('images/folder_rte_images/rte-dd-bg.gif'); + background-repeat: no-repeat; + width:auto; +} + +.rte-selected-menubutton, +.rte-hover-menubutton +{ + border: 1px solid #95C4F7; + background-color: #FFFFFF; +} + +.rte-menu-face, +.rte-menu-size, +.rte-selected-menu, +.rte-hover-menu, +.rte-normal-menu +{ + background-color: #EFF3F7; + border-bottom:1px dotted #999; + padding:1px 1px 4px 1px; + width:100%; + cursor: pointer; + cursor: hand; +} + +.rte-selected-menu-color, +.rte-hover-menu-color, +.rte-normal-menu-color, +.rte-menu-color +{ + width: 10px; + border: 1px solid #FFFFFF; + cursor: pointer; + cursor: hand; +} + +.rte-hover-menu-color +{ + border:1px solid black; +} + +.rte-popupmenu +{ + background-color: #EFF3F7; + border: 1px solid #999; + text-align: left; + font-size: 11px; + padding: 3px 5px 3px 3px; +} + +.rte-selected, +.rte-hover, +.rte-normal +{ + cursor: pointer; + cursor: hand; + padding:1px; +} + +.rte-selected-menu, +.rte-hover-menu +{ + background: #D3D3D3; +} + +.rte-selected +{ + border: 1px outset; + padding:0px; +} + +.rte-hover +{ + background: #EBEBEB; +} + +/* ============================================================== */ +/* RTE STYLES +/* ============================================================== */ + +.rteimage { + /*background: #D3D3D3;*/ + /*border: 1px outset transparent*/; + cursor: pointer; + cursor: hand; + padding:1px; +} + +.rteImageRaised { + /*background: #D3D3D3;*/ + border: 1px outset; + cursor: pointer; + cursor: hand; + padding:0px; +} + +.rteImageLowered { + /*background: #D3D3D3;*/ + border: 1px inset; + cursor: pointer; + cursor: hand; + padding:0px; +} + +.rteimage:hover { + background: #EBEBEB; + cursor: pointer; + cursor: hand; +} + +.rteVertSep { + margin: 0 4px 0 4px; +} + +.rteBack { + background: #D3D3D3; + border: 1px outset; + letter-spacing: 0; + padding: 2px; +} + +/* used in ips_rte.js - do not remove */ +.rtebottombutton +{ + font-size:10px; + border:1px solid #777; + border-top:0px; + padding:3px; + margin:0px; + background-color: #EBEBEB; +} + +/* used in ips_rte.js - do not remove */ +.rtebottombuttonon +{ + font-size:10px; + border:1px solid #777; + border-top:0px; + padding:3px; + margin:0px; + background-color: #D3D3D3; +} + +.rtebuttonbar1 { + /*background: #D3D3D3;*/ + background-image: url(<#IMG_DIR#>/folder_rte_images/rte_tile.gif); + border: 1px solid gray; + border-bottom:0px; + letter-spacing: 0; + padding: 2px; + height:26px; +} + +.rtebuttonbar2 { + /*background: #D3D3D3;*/ + background-image: url(<#IMG_DIR#>/folder_rte_images/rte_tile.gif); + border: 1px solid gray; + border-top:1px solid gray; + letter-spacing: 0; + padding: 2px; + height:26px; +} + +.rtebuttonbar1 tbody tr td, +.rtebuttonbar1 tr td, +.rtebuttonbar2 tbody tr td, +.rtebuttonbar2 tr td, +.rteBack tbody tr td, +.rteBack tr td +{ + /*background: #D3D3D3;*/ + padding: 0; +} + +.rteDiv { + display: block; + position: relative; + padding:0px; + margin:0px; +} + +.rteiframe +{ + border:1px solid #777; + background-color:#FFF; +} + +.rteselectbox +{ + font-size:11px; +} + +.rss-feed-valid +{ + font-weight: bold; + color: green; +} + +.rss-feed-invalid +{ + font-weight: bold; + color: red; +} + +.rss-feed-msg +{ + font-weight: bold; + color: gray; +} + +.rss-feed-url +{ + font-weight: bold; + color: blue; +} + +.perms-red +{ + background-color: #D7BBC8; +} + +.perms-green +{ + background-color: #BBD0C8; +} + +.perms-gray +{ + background-color: #CCC; +} + +.red-perm +{ + color: red; + font-weight: bold; +} + +.green-perm +{ + color: darkgreen; + font-weight: bold; +} + +.yellow-perm +{ + color: teal; + font-weight: bold; +} + +.blue-perm +{ + color: blue; + font-weight: bold; +} + +.orange-perm +{ + color: orange; + font-weight: bold; +} + +.purple-perm +{ + color: purple; + font-weight: bold; +} \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/acp_js.js b/upload/skin_acp/IPB2_Standard/acp_js.js index d0b30dd3..0ccdeaec 100644 --- a/upload/skin_acp/IPB2_Standard/acp_js.js +++ b/upload/skin_acp/IPB2_Standard/acp_js.js @@ -1,5 +1,5 @@ //------------------------------------------ -// Invision Power Board v2.1.7 +// Invision Power Board v2.0 // ACP Specific JS File // (c) 2003 Invision Power Services, Inc. // @@ -10,7 +10,6 @@ // IE TWEAKS /*--------------------------------------------*/ - //========================================== // AJAX REFRESH //========================================== @@ -291,31 +290,31 @@ function no_specialchars(type) if (type == 'sets') { var field = document.theAdminForm.sname; - name = 'Название стиля'; + name = 'Skin Set Title'; } if (type == 'wrapper') { var field = document.theAdminForm.name; - name = 'Название общего шаблона'; + name = 'Wrapper Title'; } if (type == 'csssheet') { var field = document.theAdminForm.name; - name = 'Название CSS'; + name = 'StyleSheet Title'; } if (type == 'templates') { var field = document.theAdminForm.skname; - name = 'Название набора шаблонов'; + name = 'Template Set Name'; } if (type == 'images') { var field = document.theAdminForm.setname; - name = 'Название макросов'; + name = 'Image & Macro Set Title'; } var valid = 'abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.()[]:;~+-_'; @@ -334,7 +333,7 @@ function no_specialchars(type) if (ok == 0) { - alert('Некорректная запись: ' + name + ', вы можете использовать только числа и следующие специальные символы.\n. ( ) : ; ~ + - _'); + alert('Invalid entry for: ' + name + ', you can only use alphanumerics and the following special characters.\n. ( ) : ; ~ + - _'); return false; } else @@ -369,7 +368,7 @@ function maincheckdelete(url, msg) { if ( ! msg ) { - msg = 'Пожалуйста подтвердите удаление.'; + msg = 'PLEASE CONFIRM:\nOK to proceed?'; } if (confirm( msg )) @@ -378,7 +377,7 @@ function maincheckdelete(url, msg) } else { - alert ( 'Действие отменено!' ); + alert ( 'OK, action cancelled!' ); } } diff --git a/upload/skin_acp/IPB2_Standard/acp_js_skin/ips_menu_html.js b/upload/skin_acp/IPB2_Standard/acp_js_skin/ips_menu_html.js index f30c463a..d978e465 100644 --- a/upload/skin_acp/IPB2_Standard/acp_js_skin/ips_menu_html.js +++ b/upload/skin_acp/IPB2_Standard/acp_js_skin/ips_menu_html.js @@ -16,8 +16,16 @@ var css_menusep_last = 'menuseplast'; // INIT some images //---------------------------------- -var img_item = "V"; -var img_action = "V"; +var img_add = "V "; +var img_edit = "V "; +var img_view = "V "; +var img_delete = "V "; +var img_info = "V "; +var img_action = "V "; +var img_item = "V "; +var img_newfolder = "V "; +var img_password = "V "; +var img_export = "V "; /*-------------------------------------------------------------------------*/ // Return formed image @@ -25,7 +33,7 @@ var img_action = "-"; + return "-"; } /*-------------------------------------------------------------------------*/ @@ -37,7 +45,7 @@ function make_image( img ) function menu_build_menu(cid, menuinput, complexmenu) { - var html = "\n +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Information box... +//=========================================================================== +function warning_box($title="", $content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + information +

    $title

    +

    +
    + $content +

    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Information box... +//=========================================================================== +function global_memberbar() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + Welcome {$this->ipsclass->member['members_display_name']} [ + View IPB · + Log Out + ] + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Global in-line message +//=========================================================================== +function global_help_block($title, $msg) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= <<$title

    $msg

    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Global in-line message +//=========================================================================== +function global_message() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + information +

    Invision Power Board Message

    +

    +
    + {$this->ipsclass->main_msg} +

    + +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Main Frames +//=========================================================================== +function global_frame_wrapper() { + +$year = date( 'Y' ); + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    +<%TABS%> +
    IPDynamic
    +
    + + +
    + <%MEMBERBAR%> + <%NAV%> +
    +
    + + + + + + + + +
    +
    + + <%MENU%> + +
    +
    +
    + <%HELP%> + <%MSG%> + <%SECTIONCONTENT%> +
    +
    +
    +
    +<%QUERIES%> +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Top TABS +//=========================================================================== +function global_tabs($onoff="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << MANAGEMENT + + + + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Query HTML +//=========================================================================== +function global_query_output($queries="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= <<
    +
    +
    +
    Queries
    +
    $queries
    +
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + + + +//=========================================================================== +// Log in form +//=========================================================================== +function log_in_form($query_string="", $message="", $name="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << 

    +

     

    +

     

    +

     

    +

     

    +

     

    +
    +
    +
    + + + + +
    +
    +
    + + + + + + +
    +
    + IPB +
    +
    +
    +
    Welcome to IP.Board
    +
    +
    © Invision Power Services, Inc. + This program is protected by international copyright laws as described in the license agreement.
    +
    +
    + + + + + +EOF; +if ( $this->ipsclass->vars['ipbli_usertype'] == 'username' ) +{ +$IPBHTML .= <<User Name +EOF; +} +else +{ +$IPBHTML .= <<Email +EOF; +} +$IPBHTML .= << + + + + + + + + + + + +
    +
    IPB +
    $message
    +
    Password

    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Log in redirect +//=========================================================================== +function global_redirect_hit($url, $text="", $time=1) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +

     

    +

     

    +

     

    + +
    +
    +
    +
    IPB
    +
    Redirecting....
    +
    + +
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Log in redirect +//=========================================================================== +function global_redirect_done($text='Complete!') { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +

     

    +

     

    +

     

    +
    +
    +
    +
    IPB
    +
    Function Complete
    +
    +
    + {$text} +
    +
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + + + +//=========================================================================== +// Log in redirect +//=========================================================================== +function global_redirect($url, $time=2, $text="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << 

    +

     

    +

     

    +

     

    +

     

    +

     

    + +
    +
    +
    + + + + +
    +
    + + + + + +
    +
    + IPB +
    +
    +
    +
    Page Redirecting...
    +
    +
    Please stand-by as we redirect you.
    +
    +
    + + + + +
    +
    IPDynamic +
    +
    + {$text} +
    +
    + ( Click here if you do not wish to wait ) +
    +
    +
    +
    +
    +
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Mini header +//=========================================================================== + +function global_mini_header( $extra="style='background-color:#D6D6D6' onload='passfocus()'") +{ +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + +<%TITLE%> + + + + + + + + + + + + + + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Mini header +//=========================================================================== + +function global_mini_footer() +{ +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// GLOBAL MENU CAT LINK +//=========================================================================== + +function global_menu_cat_link( $cid, $pid, $icon, $theurl, $url, $extra_css, $name ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << {$icon} $name +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// GLOBAL WRAP NAV +//=========================================================================== + +function global_menu_cat_wrap($name="", $links="", $id = "", $desc) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + $links + +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// GLOBAL WRAP NAV +//=========================================================================== + +function global_wrap_nav($links="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= <<$links +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// GLOBAL FRAMESET +//=========================================================================== + +/*function global_frame_set($extra_query="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + Invision Power Board Administration Center + + + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// GLOBAL MAIN ACP HEADER +//=========================================================================== + +function global_menu_header() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + Menu + + + + + + + + + + + + +
    + +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// GLOBAL MAIN ACP MENU FOOTER +//=========================================================================== + +function global_menu_footer() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +EOF; + +//--endhtml--// +return $IPBHTML; +}*/ + +//=========================================================================== +// GLOBAL MAIN ACP FOOTER +//=========================================================================== + +function global_footer($date="") { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Quick Jump
    +
    Invision Power Board © $date IPS, Inc.
    + + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// GLOBAL MAIN ACP HEADER +//=========================================================================== + +function global_header() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + +<%TITLE%> + + + + + + + + + + + + + + + + + +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Pagination Wrapper +//=========================================================================== +function pagination_compile($start="",$previous_link="",$start_dots="",$pages="",$end_dots="",$next_link="",$total_pages="",$per_page="",$base_link="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= << +//{$this->ipsclass->lang['global_page_jump']}
    ", + " " ) ); +//]]> + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: Current Page +//=========================================================================== +function pagination_current_page($page="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<{$page} +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: End Dots +//=========================================================================== +function pagination_end_dots($url="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<»  +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: Make jump menu +//=========================================================================== +function pagination_make_jump($pages=1) { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<$pages {$this->ipsclass->lang['tpl_pages']} V  +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: Next Link +//=========================================================================== +function pagination_next_link($url="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<> +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: Regular Link +//=========================================================================== +function pagination_page_link($url="",$page="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<$page +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: Previous Link +//=========================================================================== +function pagination_previous_link($url="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<< +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Pagination: Start Dots +//=========================================================================== +function pagination_start_dots($url="") { +$IPBHTML = ""; +//--starthtml--// + + +$IPBHTML .= <<«  +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +} + ?> \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_groups.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_groups.php index b3c8c897..4acb7a3c 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_groups.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_groups.php @@ -14,29 +14,30 @@ $IPBHTML = ""; $IPBHTML .= << -
    Управление пользовательскими группами
    +
    User Group Management
    - - - - - + + + + + {$content}
    НазваниеДоступ в админцентрСупермодераторПользователей Group TitleCan Access ACPIs Super ModMembers 

    +
    -
    Создать группу пользователей
    +
    Create a User Group
    - + - +
    Основанную на...Base new group on... {$form['_new_dd']}
    @@ -56,12 +57,12 @@ $IPBHTML = ""; $IPBHTML .= << - + EOF; -if ( $r['g_id'] != 1 and $r['g_id'] != 2 ) +if ( $r['g_id'] != $this->ipsclass->vars['auth_group'] and $r['g_id'] != $this->ipsclass->vars['guest_group'] ) { $IPBHTML .= <<ipsclass->vars['php_ext']}?act=Members&max_results=30&filter={$r['g_id']}&sort_order=asc&sort_key=members_display_name&st=0' target='_blank' title='Список пользователей'>{$r['_title']} + ipsclass->vars['php_ext']}?act=Members&max_results=30&showall=1&filter={$r['g_id']}&sort_order=asc&sort_key=members_display_name&st=0' target='_blank' title='List Users'>{$r['_title']} EOF; } else @@ -72,26 +73,26 @@ EOF; } $IPBHTML .= << - - - - - {$r['count']} - Опции + - + - + {$r['count']} + Options + +EOF; + +return $IPBHTML; +} + + + } ?> \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.php index 77a85acb..7dd0d02d 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.php @@ -1,580 +1,768 @@ - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_licensed() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    Русская версия Invision Power Board
    -
    - -
    -
    Посетите клиент-центр для получения помощи, новостей и обновлений. -
    - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_unlicensed() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    Незарегистрированная версия Invision Power Board
    -
    - -
    Данная версия Invision Power Board не зарегистрирована. -
    Узнать подробнее о регистрации можно здесь! -
    - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_ips_news($news_url) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    Последние новости BestWarez.Ru
    -
    -
    - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_notes($notes) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -

    - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_board_offline() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -
    -
    Форум Отключен
    -
    Ваш форум в данный момент выключен

    » Включить форум
    -
    - - - -   - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_quick_clicks() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -//ipsclass->adskin->base_url}' + '§ion=content&act=mem&code=searchresults&searchtype=normal&members_display_name=' + escape(document.forms[1].username.value); - } - } - - function new_forum() { - - if (document.forms[1].forum_name.value == "") { - alert("Необходимо ввести название форума!"); - } else { - window.location = '{$this->ipsclass->adskin->base_url}' + '§ion=content&act=forum&code=new&name=' + escape(document.forms[1].forum_name.value); - } - } - - function phplookup() { - - if (document.forms[1].phpfunc.value == "") { - alert("Необходимо ввести имя PHP функции!"); - } else { - window.location = 'http://www.php.net/' + escape(document.forms[1].phpfunc.value); - } - } -//]]> - -
    -
    -
    Быстрые Действия
    - - - - - - - - - - - - - -
    Редактирование пользователя
    Создание форума
    Помощь по PHP-функциям
    -
    -
    -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_version_history_row( $r ) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - {$r['upgrade_version_human']} ({$r['upgrade_version_id']}) - {$r['_date']} - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_version_history_wrapper($content) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    История Обновлений
    - - $content -
    - - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_onlineadmin_row( $r ) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - {$r['members_display_name']} - - {$r['session_ip_address']} - {$r['_log_in']} - {$r['_click']} - {$r['session_location']} - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_onlineadmin_wrapper($content) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    Активные в админцентре
    - - - - - - - - - $content -
    ИмяIP-адресВход былПоследнее действиеСтраница
    - - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_lastactions_row( $rowb ) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - {$rowb['members_display_name']} - {$rowb['note']} - {$rowb['_ctime']} - {$rowb['ip_address']} - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_lastactions_wrapper($content) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    Последние Администраторские Действия
    - - - - - - - - $content -
    АдминистраторДействиеДатаIP адрес
    - - -EOF; - -//--endhtml--// -return $IPBHTML; -} - - -//=========================================================================== -// Index -//=========================================================================== -function acp_stats_wrapper($content) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << -
    Информация о Системе
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    Версия IPB{$content['ipb_version']} (ID: {$content['ipb_id']})
    Версия SQL{$content['sql_driver']} ({$content['sql_version']})
    Версия PHP{$content['php_version']} ({$content['php_sapi']}) ( PHP INFO )
    Статистика форумаТем: {$content['topics']}
    Сообщений: {$content['replies']}
    ПользователейЗарегистрированных: {$content['members']} -
    Неактивированных: {$content['validate']} -
    Размер папки /uploads/{$content['uploads']}
    - - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function acp_php_version_warning( $phpversion ) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -
    - ВНИМАНИЕ: Версия PHP на сервере ($phpversion) не соответствует требованиям. -

    Для работы Invision Power Board требуется как минимум PHP версии 4.3.0.
    Некоторые разделы Админцентра могут не работать или работать не верно, пока Вы не обновите PHP на новую версию.
    - - - -   - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function warning_unlocked_installer() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -
    - ВНИМАНИЕ: Обнаружен незаблокированный скрипт установщика форума -

    Удалите файл install/index.php с Вашего сервера! -
    Оставление этого файла на сервере МОЖЕТ поставить под угрозу безопасность Ваших форумов.
    - - - -   - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function warning_installer() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -
    - ВНИМАНИЕ: Скрипт установки форума все еще не удален! -

    Скрипт установки форума заблокирован (пока файл install.lock не будет удален — установка форума невозможна), но присутствует на сервере, мы рекомендуем удалить его для повышения безопасности вашего форума! -
    Для удаления скрипта установки достаточно удалить файл /install/index.php, и этого предупреждения вы больше не увидете.
    - - - -   - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function warning_rebuild_emergency() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -
    - Внимание: Ошибка стиля -

    - У одного/несколько из ваших пользователей появилась проблема со стилями. Это могло произойти автоматически по следующим причинам: -
      -
    • Они пробовали очистить настройки стиля.
    • -
    • Они попытались получить доступ к админцентру форума.
    • -
    • Админцентр пропустил ошибку стиля и обновил стиль с этой ошибкой и, возможно, именно это включило безопасный режим стилей.
    • -
    - Что теперь можно и нужно сделать: -
      -
    • Если вы не хотите использовать безопасный режим стилей, проверьте права доступа (CHMOD) к директории /skin_cache/, чтобы убедиться в возможности записи туда файлов с шаблонами.
    • -
    • Если права доступа правильные, проверьте ваши Системные настройки -> Все настройки форума, чтобы убедиться в том, что «Безопасный режим стилей» отключен.
    • -
    • И попробуйте обновить все кеши стилей, пройдя по ссылке ниже.
    • -
    - >> ОБНОВИТЬ ВСЕ КЕШИ ШАБЛОНОВ И УДАЛИТЬ ЭТО ПРЕДУПРЕЖДЕНИЕ << -
    - - - -   - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index -//=========================================================================== -function warning_rebuild_upgrade() { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - -
    - Система определила, что было выполнено обновление форума -

    - Вам необходимо обновить все кеши стилей форума для проверки того, что все новые записи в шаблонах добавлены правильно. -

    >> ОБНОВИТЬ ВСЕ КЕШИ ШАБЛОНОВ И УДАЛИТЬ ЭТО ПРЕДУПРЕЖДЕНИЕ << -
    - - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -//=========================================================================== -// Index http://www.invisionboard.com/acp-ipb/getnews.php -//=========================================================================== -function acp_main_template($content) { - -$IPBHTML = ""; -//--starthtml--// - -$IPBHTML .= << - - {$content['reg_html']} -   - {$content['latest_news']} - - -   - - - {$content['stats']} -   -
    Администраторские Заметки

    {$content['ad_notes']} - - -   - - - - - - - {$content['quick_clicks']} -   - {$content['version_history']} - - -   - - -{$content['acp_online']} -
    - -EOF; - -//--endhtml--// -return $IPBHTML; -} - -} - + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_licensed() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Invision Power Board
    +
    + +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_unlicensed() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Unlicensed Invision Power Board
    +
    + +
    This copy of Invision Power Board is unlicensed. +
    Why purchase? click here to find out! +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_ips_news($news_url) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    IPS Latest News
    +
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_notes($notes) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + +

    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_board_offline() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    +
    Board Offline
    +
    Your board is currently offline

    » Turn Board Online
    +
    + + + +   + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_quick_clicks() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +//ipsclass->adskin->base_url}' + '§ion=content&act=forum&code=new&name=' + escape(document.getElementById('DOIT1').forum_name.value); + } + } + + function phplookup() + { + if (document.getElementById('DOIT2').phpfunc.value == "") + { + alert("You must enter a PHP function!"); + return false; + } + else + { + window.location = 'http://www.php.net/' + escape(document.getElementById('DOIT2').phpfunc.value); + } + } +//]]> + + + +
    +
    Quick Clicks
    + + + + + + + + + + + + + +
    Edit Member (Enter name here)
    Add New Forum
    PHP Function
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_version_history_row( $r ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + {$r['upgrade_version_human']} ({$r['upgrade_version_id']}) + {$r['_date']} + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_version_history_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Version History (Last 5)
    + + $content +
    + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_last_logins_row( $r ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + - + + + {$r['admin_username']} +
    IP: {$r['admin_ip_address']}
    + + {$r['_admin_time']} + - + + - + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_last_logins_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Last 5 ACP Log in Attempts
    + + + + + + + + + $content +
     NameDateStatusLog
    +
    + MORE » +
    + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Index +//=========================================================================== +function acp_onlineadmin_row( $r ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + {$r['members_display_name']} + {$r['session_ip_address']} + {$r['_log_in']} + {$r['_click']} + {$r['session_location']} + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_onlineadmin_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Administrators Using ACP
    + + + + + + + + + $content +
    NameIP AddressLogged InLast ClickLocation
    + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_lastactions_row( $rowb ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + - + + + {$rowb['members_display_name']} +
    IP: {$rowb['ip_address']}
    + + {$rowb['_ctime']} + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_lastactions_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Last 5 ACP Actions
    + + + + + + + $content +
     Member NameTime of action
    +
    + MORE » +
    + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Index +//=========================================================================== +function acp_stats_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IPB Version{$content['ipb_version']} (ID: {$content['ipb_id']})
    SQL Version{$content['sql_driver']} ({$content['sql_version']})
    PHP Version{$content['php_version']} ({$content['php_sapi']}) ( PHP INFO )
    Content{$content['topics']} Topics
    {$content['replies']} Replies
    Members{$content['members']} Members +
    {$content['validate']} Awaiting validation +
    {$content['coppa']} COPPA Pending +
    Uploads
    Loading...
    + + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function acp_php_version_warning( $phpversion ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + Warning: Your PHP Version ($phpversion) is insufficient. +

    Invision Power Board requires at least PHP 4.3.0 to operate fully.
    Some sections of the ACP may not operate until you upgrade.
    + + + +   + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function warning_unlocked_installer() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + Warning: Unlocked Installer Still Present +

    Remove install/index.php from your server at once! +
    Leaving it on your server WILL compromise the security of your system.
    + + + +   + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Index +//=========================================================================== +function warning_upgrade() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + Warning: Unfinished Upgrade Detected +

    IPB has detected that an upgrade has not been completed. Click here to complete.
    + + + +   + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function warning_installer() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + Warning: Installer Still Present +

    Although the installer appears to be locked, we recommend you remove it + from your server for security. +
    Simply remove install/index.php from your installation to remove this message.
    + + + +   + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function warning_rebuild_emergency() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + Warning: A Skin error occured +

    + Either you or one of your members encountered a skin error. The following took place + automatically: +
      +
    • They were asked to clear their skin settings
    • +
    • They were asked to click a link to attempt access in the ACP
    • +
    • The ACP picked up the skin error and rebuilt the skin ID cache, the default skin and it may have turned on safe mode skins
    • +
    + What to do now +
      +
    • Firstly, if you don't wish to use safe mode skins, check the CHMOD value of the 'skin_cache' directory to make sure IPB can write into that directory
    • +
    • If the permissions are correct, check your 'System Settings -> General Configuration' settings to check the value of 'Safe Mode Skins' - disable if not required
    • +
    • As a precaution, rebuild all your skins by following the link below
    • +
    + >> REBUILD ALL SKIN CACHES & REMOVE THIS WARNING << +
    + + + +   + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function warning_rebuild_upgrade() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + An upgrade has been performed +

    + You'll need to update all your skin caches to ensure the new template bits have been added correctly. +

    >> REBUILD ALL SKIN CACHES & REMOVE THIS WARNING << +
    + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index http://www.invisionboard.com/acp-ipb/getnews.php +//=========================================================================== +function acp_main_template($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + {$content['reg_html']} +   + {$content['latest_news']} + + +   + + + {$content['stats']} +   +
    ACP Notes

    {$content['ad_notes']} + + +   + + + + + + + + + {$content['quick_clicks']} +   + {$content['version_history']} + + +   + + +{$content['acp_online']} +
    + + + + + + +
    + +   + +
    +EOF; + +if ( IN_DEV ) +{ +$IPBHTML .= << +
    +
    DEV Installer XML Exports
    +
    + Components + · Log In Modules + · Groups + · Attachments + · Skins + · Tasks + · FAQ + · BBCode +
    +
    +EOF; +} + +//--endhtml--// +return $IPBHTML; +} + +} + ?> \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_lookandfeel.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_lookandfeel.php index d9e6e5ac..ef494e3e 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_lookandfeel.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_lookandfeel.php @@ -14,7 +14,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -35,8 +35,8 @@ $IPBHTML .= <<
    - Template Group - {$folder_blob} {$group['easy_name']} + Template Group + {$folder_blob} {$group['easy_name']}
    @@ -55,16 +55,16 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << +
    $remove_button - Предпросмотр в виде текста - Предпросмотр в виде HTML  + Text Preview + HTML Preview 
    - Шаблон + Template {$altered_image} - {$sec['easy_name']} + {$sec['easy_name']} {$custom_bit}
    @@ -86,8 +86,8 @@ $IPBHTML .= <<
    {$group['easy_name']}
    - Закрыть  - + Close  +
    @@ -96,7 +96,7 @@ $IPBHTML .= <<
    $add_button
    -
    ipsclass->input['p']}&group_name={$group['group_name']}&type=multiple")' class='realbutton' value='Изменить выбранное' />
    +
    ipsclass->input['p']}&group_name={$group['group_name']}&type=multiple")' class='realbutton' value='Edit Selected' />
    - - + +
    @@ -135,7 +135,7 @@ $javascript @@ -153,16 +153,16 @@ $javascript


    -
    Информация:
    -+ Изменен от начального варианта шаблона. -
    - Не изменен от начального варианта шаблона. -
    | Унаследованный от начального варианта шаблона. +
    Child skin set pop-up menu legend:
    ++ This item has been customized for this skin set. +
    - This item has not been customized from the master skin set. +
    | This item has inherited customizations from the parent skin set.
    EOF; @@ -250,11 +250,11 @@ $IPBHTML = ""; $IPBHTML .= << - {$line_image}Стиль + {$line_image}Skin {$r['set_name']} {$forums} {$hidden} {$default} - Опции + Options +
    - +
    Отчет сравнения стилейSkin Differences Reports
    - - + $content @@ -337,23 +337,24 @@ $IPBHTML .= <<
    +
    -
    Создать новый отчет сравнения стилей
    +
    Create New Skin Difference Report
    НазваниеСоздано + Difference TitleCreated  
    - + - + - +
    Введите название
    Это название будет использовано в списке выше, когда сравнение будет завершено
    Enter a new skin difference title
    This title can be anything and will be used in the list above when the comparison is completed
    Пропускать все новые/ошибочные шаблоны?
    Если вы сравниваете старый ipb_templates.xml из более старого IPB, вы можете отключить этот пункт. Если вы сравниваете с XML файлом из измененного стиля, вы должны включить этот пункт.
    Skip all new/missing template bits?
    If you are comparing an old ipb_templates.xml file from an older IPB release, then you may wish to disable this. If you are comparing an XML file from a customized skin set, you should enable this.
    Выберите корректный файл ipb_templates.xml.
    Будет произведено сравнение с HTML шаблонами главного стиля
    Select a valid ipb_templates.xml file from your computer.
    This will be compared against your master HTML templates - so make sure they're up-to-date before running this tool
    -
    +
    EOF; @@ -374,15 +375,15 @@ $IPBHTML .= << {$data['diff_session_title']} {$data['_date']} - Опции + Options EOF; @@ -401,12 +402,12 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << +
    - + @@ -415,14 +416,14 @@ $IPBHTML .= <<
    Сравнение стилейSkin Differences  
    - - + $content
    Название шаблонаРазличия - Размер + Template Bit NameDifference + Size  
    -
    $missing новых шаблонов и $changed измененных
    +
    $missing new template bits and $changed changed template bits
    EOF; @@ -464,13 +465,13 @@ $IPBHTML .= << {$diff_is} {$template_bit_size} - Опции + Options EOF; @@ -492,12 +493,10 @@ $IPBHTML .= <<$template_group > $template_bit_name
    -
     $content
    -
    - Удален HTML код · Добавлен HTML код + Removed HTML · Added HTML
    EOF; @@ -518,9 +517,7 @@ $IPBHTML .= <<

    $func_group > $func_name


    -
     $content
    -
    EOF; @@ -577,14 +574,14 @@ $IPBHTML .= <<
    -

    $title (экспортировано: $date)

    - $missing новых шаблонов и $changed измененных +

    $title (Exported: $date)

    + $missing new template bits $changed changed template bits

    $content
    - Удален HTML код · Добавлен HTML код + Removed HTML · Added HTML
    @@ -594,6 +591,197 @@ EOF; return $IPBHTML; } + +function emoticon_overview_wrapper_addform( ) +{ + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +function addfolder() +{ + document.macroform.emoset.value = ''; + document.macroform.code.value = 'emo_setadd'; + document.macroform.submitbutton.value = 'Add Folder'; + scroll(0,0); + togglediv( 'popbox', 1 ); + return false; +} + +function editfolder(id) +{ + document.macroform.submitbutton.value = 'Edit Folder Name'; + document.macroform.id.value = id; + document.macroform.code.value = 'emo_setedit'; + document.macroform.emoset.value = id; + scroll(0,0); + togglediv( 'popbox', 1 ); + return false; +} + + + +EOF; + +return $IPBHTML; +} + + +function emoticon_overview_wrapper( $content ) +{ + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + + + +
    +
    + + + + + +
    Current Emoticon Folders + Options   +
    +
    + + + + + + + + + + +{$content} + +
    Emoticon FolderUpload# Disk Folder# Emo. GroupOptions
    +
    +
    + +EOF; + +if( SAFE_MODE_ON ) +{ +$IPBHTML .= << +EOF; +} +else +{ +$IPBHTML .= << +
    Upload Emoticons
    + + + + + + + + + + +
    +
    +
    +EOF; +} + +$IPBHTML .= << + menu_build_menu( + "menumainone", + new Array( + img_add + " Create New Folder" + ) ); + +EOF; + +return $IPBHTML; +} + + +function emoticon_overview_row( $data=array() ) +{ + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + +
    {$data[
    + {$data['line_image']} {$data['dir']} + + +
    {$data['checkbox']}
    +
    {$data['count']}
    +
    {$data['dir_count']}
    +
    Options + + + + +EOF; + +return $IPBHTML; +} + } diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_management.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_management.php index 60cc0ddb..2ab53e15 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_management.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_management.php @@ -14,7 +14,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -30,7 +30,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -46,7 +46,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -106,44 +106,45 @@ function perm_check_all( obj ) //]]>
    +
    $title
    - + - + - + - + - + EOF; @@ -262,9 +263,9 @@ $IPBHTML = ""; $IPBHTML .= <<{$event['event_content']}


    -

    Повторяющееся событие -
    От: {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']} -
    До: {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}

    +

    Recurring Event +
    From: {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']} +
    To: {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}

    EOF; //--endhtml--// @@ -282,9 +283,9 @@ $IPBHTML = ""; $IPBHTML .= <<{$event['event_content']}


    -

    Многодневное событие -
    От: {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']} -
    До: {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}

    +

    Ranged Event +
    From: {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']} +
    To: {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}

    EOF; //--endhtml--// @@ -302,7 +303,7 @@ $IPBHTML = ""; $IPBHTML .= <<{$event['event_content']}


    -

    Однодневное событие с датой: {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}

    +

    Single Day Event On: {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}

    EOF; //--endhtml--// diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_member.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_member.php index 605fdcc0..31934605 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_member.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_member.php @@ -4,6 +4,348 @@ class cp_skin_member { var $ipsclass; +//=========================================================================== +// MEMBER FORM +//=========================================================================== +function member_form($mem, $form) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + + + + +{$form['_custom_hidden_fields']} +
    +
    General Settings
    +
    Posting & Access Restrictions
    +
    Board & Profile Information
    +
    Signature
    +
    Custom Fields
    +
    +
    Editing: {$mem['members_display_name']} (ID: {$mem['id']})
    +
    +
    +
    Календарь: ЗаголовокCalendar: Title {$form['cal_title']}
    Календарь: Включить модерацию
    Если включено, события от всех групп пользователей не будут попадать на проверку событий модераторами перед публикацией...
    Calendar: Enable Moderation
    If enabled, all groups which are not included in the 'Avoid Moderation Queue' will have their events entered into the moderation queue for approval.
    {$form['cal_moderate']}
    Календарь: Лимит событий
    Число показываемых событий за день, если событий будет больше, то будет отображаться ссылка на все события дня
    Calendar: Event Limit
    This is the number of events listed per day before they are replaced by a single link to the day's events
    {$form['cal_event_limit']}
    Календарь: Лимит именинников
    Число показываемых именинников за день, если их будет больше, то будет отображаться ссылка на всех именинников
    Введите 0, чтобы не показывать именинников вообще
    Calendar: Birthday Limit
    This is the number of birthdays listed per day before they are replaced by a single link
    Enter 0 to not show birthdays at all
    {$form['cal_bday_limit']}
    - RSS Опции + RSS Options - + - + - + - +
    RSS: Включить
    Если включено, то все n будущих событий (GMT время), которые имеют маску доступа для чтения гостями будут экспортированы в RSS
    RSS: Enable
    If enabled, all n forthcoming events (based on GMT time) that have guest read permission will be exported
    {$form['cal_rss_export']}
    RSS: Будущие события
    За сколько дней до события выводить его?
    RSS: Forthcoming Days {$form['cal_rss_export_days']}
    RSS: Количество событий
    Максимальное количество экспортируемых событий
    RSS: Export Maximum Events
    The maximum number of events exported
    {$form['cal_rss_export_max']}
    RSS: Частота обновления
    Количество минут между перестройкой кеша RSS
    RSS: Update Frequency
    The number of minutes between RSS cache rebuilding
    {$form['cal_rss_update']}
    @@ -153,26 +154,26 @@ function perm_check_all( obj )
    - Доступ к календарям + Calendar Permissions - + - + - + @@ -199,12 +200,12 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << -
    Календари
    +
    Calendars
    Доступ: Чтение событий
    Выберите группы, которым будет разрешено читать этот календарь.
    Не забудьте выбрать маску гостей, если вы хотите экспортировать календарь в RSS.
    Permission: Read Events
    Simply select which permission masks you wish to allow read permissions for this calendar.
    Remember to select 'Guest' access if you wish to export this calendar as an RSS feed.
    - Выберите все текущие и желаемые маски + Select All Current and Future Masks
    Доступ: Создание событий
    Выберите группы, которым будет разрешено создавать события в этот календарь
    Permission: Start Events
    Simply select which permission masks you wish to be able to start events for this calendar
    - Выберите все текущие и желаемые маски + Select All Current and Future Masks
    Доступ: Публикация без проверки
    Выберите группы, создаваемые события которых будут публиковаться в этот календарь без проверки модератором
    Permission: Avoid Moderation Queue
    Simply select which permission masks you wish to be able to bypass moderation for this calendar
    - Выберите все текущие и желаемые маски + Select All Current and Future Masks
    - - - + + + $content
    НазваниеПозицияОпцииNamePositionOptions
    @@ -213,8 +214,8 @@ $IPBHTML .= << menu_build_menu( "menumainone", - new Array( img_item + " Добавить новый календарь...", - img_item + " Перестройка кеша календарных событий..." ) ); + new Array( img_add + " Add New Calendar...", + img_item + " Recache Calendar Events..." ) ); EOF; @@ -234,15 +235,15 @@ $IPBHTML .= <<
    {$data['cal_title']} {$data['_pos_up']}   {$data['_pos_down']}ОпцииOptions
    + + + + + + + + + +
    +
    + {$mem['members_display_name']} + + + + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Registration IP Address + {$mem['ip_address']} + [ Show all IP addresses ] +
    Email Address{$form['email']}
    Post Count{$form['posts']}
    Remove Member's Photo{$form['remove_photo']}
    Remove Member's Avatar{$form['remove_avatar']}
    Warn Level + {$form['warn_level']} + [ View User Notes ] + [ Add New Note ] +
    Member Title{$form['member_title']}
    + +
    + + +
    + +
    + +
    + Member Group Options +EOF; +if ( $form['_show_fixed'] != TRUE ) +{ +$IPBHTML .= << +
    Primary Member Group
    Member will appear to be a member of this group to others
    {$form['mgroup']}
    Secondary Member Groups
    You can select more than one other group.
    Member will inherit 'better' permissions of all secondary groups and will inherit permission sets of all secondary groups in positive favor.
    {$form['mgroup_others']}
    +EOF; +} +else +{ +$IPBHTML .= << + + Primary Member Group + {$form['_mgroup']}Root Admin or Administrator (Can't Change) + + +EOF; +} + + +$IPBHTML .= << + + + +
    +
    + + + + +
    +
    + Posting and Access Restrictions + + + + + + + + + + + + + +
    Override group forum permissions with...
    You may choose more than one.
    This will override all permission settings for the primary group and any secondary groups.
    + Force member to use selected permission sets...
    + {$form['permid']} +
    +
    Require moderator preview of all posts by this member?
    If yes, all posts by this member will be put into the moderation queue. Untick box and clear number box to remove.
    + Moderator Preview indefinitely +
    + Or for + {$form['mod_timespan']} {$form['mod_units']} {$form['_mod_extra']} +
    Restrict {$mem['members_display_name']} from posting?
    Untick box and clear number box to remove restriction.
    + Restrict posting indefinitely +
    + Or for + {$form['post_timespan']} {$form['post_units']} {$form['_post_extra']} +
    +
    +
    +
    +
    + + + + + +
    +
    + Board Settings + + + + + + + + + + + + + + + + + + + + + +
    Language Choice{$form['language']}
    Skin Choice
    Hide this members email address?{$form['hide_email']}
    Email a PM reminder?{$form['email_pm']}
    {$this->ipsclass->acp_lang['mem_edit_pm_title']}{$form['members_disable_pm']}
    +
    + +
    + +
    + Contact Information + + + + + + + + + + + + + + + + + + + + + +
    Messenger: AIM{$form['aim_name']}
    Messenger: MSN{$form['msnname']}
    Messenger: Yahoo!{$form['yahoo']}
    Messenger: ICQ{$form['icq_number']}
    Website Address{$form['website']}
    +
    + +
    + +
    + Profile Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Avatar Location{$form['avatar']}
    Avatar Type{$form['avatar_type']}
    Avatar Size{$form['avatar_size']}
    Location{$form['location']}
    Interests{$form['interests']}
    Gender{$form['pp_gender']}
    Personal Statement{$form['pp_bio_content']}
    +
    + +
    +
    +
    +
    + Member's Signature + {$form['signature']} +
    +
    +
    +
    + Custom Profile Fields + + {$form['_custom_fields']} +
    +
    +
    +
    +
    +
    Save Save Member
    +
    +
    + +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + //=========================================================================== // Member: delete stuff start //=========================================================================== @@ -14,20 +356,25 @@ $IPBHTML = ""; $IPBHTML .= << +
    {$this->ipsclass->acp_lang['mem_delete_posts_title']} {$member['members_display_name']}
    - + - + + + + + - +
    {$this->ipsclass->acp_lang['mem_delete_delete_posts']}
    {$this->ipsclass->acp_lang['mem_delete_delete_posts_desc']}
    {$this->ipsclass->acp_lang['mem_delete_delete_topics']}
    {$this->ipsclass->acp_lang['mem_delete_delete_topics_desc']}
    {$this->ipsclass->acp_lang['mem_delete_posts_trash']}
    {$this->ipsclass->acp_lang['mem_delete_posts_trash_desc']}
    {$this->ipsclass->acp_lang['mem_delete_delete_pergo']}
    {$this->ipsclass->acp_lang['mem_delete_delete_pergo_desc']}
    @@ -79,37 +426,39 @@ $IPBHTML .= << - +
    Управление неактивированнымиMember Validation Queue
    + - +
    + - - - - - - + + + + + + {$content} - - +
    Отображаемое имяE-mailEmail отправл.СообщенийЗарегистрированMember's Display NameEmail AddressEmail SentPostsReg. On
    {$links} - - + {$links} + +
    @@ -132,12 +481,126 @@ $IPBHTML = ""; $IPBHTML .= << - {$r['members_display_name']}{$r['_coppa']}
    IP: {$r['ip_address']}
    - {$r['email']} - {$r['_where']}
    {$r['_entry']}
    {$r['_days']} дней и {$r['_rhours']} часов назад
    - {$r['posts']} - {$r['_joined']} - + {$r['members_display_name']}{$r['_coppa']} + {$r['email']} + {$r['_where']}
    {$r['_entry']}
    {$r['_days']} days and {$r['_rhours']} hours ago
    + {$r['posts']} + {$r['_joined']} + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Member: locked account +//=========================================================================== +function member_locked_wrapper($content, $st, $links) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +// + +
    +
    + + + + +
    Member Locked Account Queue
    +
    + + + + + + + + + + + + {$content} + + + + +
    Member's Display NameEmail AddressFailed LoginsPostsJoined
    {$links} + + +
    + +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Member: No rows/ setting disabled +//=========================================================================== +function member_locked_no_rows( $lang ) { +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + {$lang} + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// Member: Locked account row +//=========================================================================== +function member_locked_row( $r="" ) { +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + {$r['members_display_name']}
    Group: {$r['group_title']}
    {$r['ip_addresses']}
    + {$r['email']} + Oldest Failure: {$r['oldest_fail']}
    Most Recent Failure: {$r['newest_fail']}
    Total Failures: {$r['failed_login_count']} + {$r['posts']} + {$r['_joined']} + EOF; diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_paysubs.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_paysubs.php index c3c98c76..e42b0a18 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_paysubs.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_paysubs.php @@ -15,7 +15,7 @@ $IPBHTML = ""; $IPBHTML .= << -
    Installing New Payment Gateways
    +
    Installing New Payment Gateways
    To install a new payment gateway module, simply upload the file 'class_gw_{name}.php' into '/sources/classes/paymentgateways' and then click on the 'install' link. Modules showing as 'installed' are active and can be set up from within the 'Manage Payment Gateways' link. @@ -26,8 +26,8 @@ $IPBHTML .= <<Install a New Payment Gateway
    - - + + {$content}
    Gateway Name Gateway Name 
    @@ -80,7 +80,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<Edit Gateways Methods For: {$row['sub_title']}...", +img_edit + " Edit Gateways Methods For: {$row['sub_title']}...", EOF; //--endhtml--// @@ -97,6 +97,7 @@ $IPBHTML = ""; $IPBHTML .= << +
    Find / Edit Transactions
    @@ -117,11 +118,12 @@ $IPBHTML .= <<{$form['expiredays']}
    -
    +

    +
    Search Transaction Logs
    @@ -130,7 +132,7 @@ $IPBHTML .= <<{$form['searchtype2']} contains... {$form['search2']}
    -
    +
    EOF; @@ -153,17 +155,17 @@ $IPBHTML .= <<{$row['_duration']} {$row['_active']} {$row['_expired']} - Options + Options @@ -186,16 +188,16 @@ $IPBHTML .= <<Subscription Packages - - - - - - + + + + + + {$content}
    Subscription PlanCostDurationActive MembersExpired Members Subscription PlanCostDurationActive MembersExpired Members 
    - + EOF; @@ -218,17 +220,17 @@ $IPBHTML .= <<{$row['_duration']} {$row['_active']} {$row['_expired']} - Options + Options @@ -252,13 +254,13 @@ $IPBHTML .= <<Available Payment Gateways - - - - - - - + + + + + + + {$content} @@ -294,13 +296,13 @@ $IPBHTML .= <<{$row['_trans']} - + diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_rss.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_rss.php index ed1076aa..fbf20ca3 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_rss.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_rss.php @@ -15,12 +15,12 @@ $IPBHTML = ""; $IPBHTML .= << -
    RSS Экпортные потоки
    +
    RSS Export Streams
    Payment GatewayActiveTransactionsCurrentPendingFailed Payment GatewayActiveTransactionsCurrentPendingFailed 
    {$row['_pending']} {$row['_dead']}OptionsOptions
    - - - + + + $content
    RSS ЗаголовокСтатусОпцииRSS TitleEnabledOptions
    @@ -29,8 +29,8 @@ $IPBHTML .= << menu_build_menu( "menumainone", - new Array( img_item + " Создать новый поток RSS Экспорта...", - img_item + " Обновить все кеши RSS Экспорта..." + new Array( img_add + " Create New RSS Export Stream...", + img_item + " Update All RSS Export Caches..." ) ); EOF; @@ -50,19 +50,19 @@ $IPBHTML = ""; $IPBHTML .= << - RSS + RSS {$data['rss_export_title']} - YN - Опции + YN + Options EOF; @@ -81,48 +81,49 @@ $IPBHTML = ""; $IPBHTML .= << +
    $title
    - + - + - - + + - + - + - + - + - + - + - - + +
    Заголовок потока RSS Экспорта (канал)RSS Export Stream (Channel) Title {$form['rss_export_title']}
    Описание потока RSS Экспорта (канал)RSS Export Stream (Channel) Description {$form['rss_export_desc']}
    Изображение потока RSS Экспорта (канал)
    Для отображения изображения в программах для чтения RSS
    {$form['rss_export_image']} * ОпциональноRSS Export Stream Image
    Used to show an image in RSS readers
    {$form['rss_export_image']} * Optional
    RSS Экспорт включенRSS Export Enabled {$form['rss_export_enabled']}
    В RSS Экспорт включать первое сообщение темы?RSS Export Includes First Post of Topic {$form['rss_export_include_post']}
    Количество тем RSS Экспорта
    Количество экспортируемых тем
    RSS Export No. Items
    Exports n number of topics
    {$form['rss_export_count']}
    Сортировать RSS ЭкспортRSS Export Order By Field {$form['rss_export_order']}
    Сортировать RSS ЭкспортRSS Export Sort By {$form['rss_export_sort']}
    Экспортировать темы из форумов
    ВАЖНО: Маски доступа не работают здесь. Темы будут экспортированы из выбранных форум, независимо от масок доступа к форумам.
    Export Topics From Forum(s)
    IMPORTANT: No permission checks are done. Topics will be exported from chosen forums regardless of the viewer's permissions.
    {$form['rss_export_forums']}
    RSS Экспорт: Частота обновления кеша
    Обновлять RSS кеш каждые n минут
    {$form['rss_export_cache_time']} минутRSS Export Cache Frequency
    Updates the RSS cache every n minutes
    {$form['rss_export_cache_time']} minutes
    @@ -144,18 +145,19 @@ $IPBHTML = ""; $IPBHTML .= << +
    -
    Удалить темы из потока: {$rssstream['rss_import_title']}
    +
    Remove Posted Topics From Stream: {$rssstream['rss_import_title']}
    - + - +
    Вы можете удалить темы, которые были опубликованы, из потока RSS Импорта. Этот поток был создан с {$article_count} темами.You may remove topics that have been posted from an RSS import stream. This stream has created {$article_count} topic(s).
    Удалить последние n импортированных тем
    Оставьте поле пустым для удаления всех
    Remove the last n imported topics
    Leave blank to remove them all
    -
    +
    EOF; @@ -174,6 +176,7 @@ $IPBHTML = ""; $IPBHTML .= << -
    + + +
    $title
    - - + - - + + EOF; diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_security.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_security.php new file mode 100644 index 00000000..81ff2d2d --- /dev/null +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_security.php @@ -0,0 +1,598 @@ + +
    Members With ACP Access
    +
    - RSS Импорт + RSS Import Basics - + - + - + - +
    Заголовок потока RSS ИмпортаRSS Import Stream Title {$form['rss_import_title']}
    URL потока RSS Импорта
    Это должно быть RDF или RSS поток
    RSS Import Stream URL
    This must be an RDF or RSS feed
    {$form['rss_import_url']}
    Кодировка потока RSS Импорта
    Например: WINDOWS-1251, UTF-8.
    RSS Import Stream Character Set
    Examples: ISO-8859-1, UTF-8. Use UTF-8 if in doubt.
    {$form['rss_import_charset']}
    Включить RSS Импорт?RSS Import Enabled {$form['rss_import_enabled']}
    +
    - htaccess аутентификация RSS Импорта + RSS Import htaccess Authentication - +
    Этот поток требует .htaccess аутентификацию?
    Большинство потоков не требует это
    Does this stream require .htaccess Authentication?
    Most streams do not require authentication
    {$form['rss_import_auth']}
    - + - +
    Имя пользователя потока RSS ИмпортаRSS Import Stream Username {$form['rss_import_auth_user']}
    Пароль потока RSS ИмпортаRSS Import Stream Password {$form['rss_import_auth_pass']}
    @@ -248,39 +261,40 @@ function enable_auth_boxes()
    +
    - Контент RSS Импорта + RSS Import Content - + - + - + - + - - + + - + - + - +
    RSS Импорт в форум
    Выберите форум, в который импортировать каждую RSS запись, как новую тему
    RSS Import Into Forum
    Choose a forum to import each RSS item as a new topic
    {$form['rss_import_forum_id']}
    Сохранить HTML в RSS Импорте
    Если да, HTML будет сохранен - вы обязаны включить HTML на форуме, чтобы была возможность редактировать импортируемые записи. Если нет, HTML будет конвертироваться по возможности в BB-код.
    RSS Import Preserve HTML
    If yes, raw HTML is preserved along with any 'badwords' - you MUST have HTML enabled when editing imported posts or HTML will be removed upon edit. If no, HTML is converted to BBCode where possible.
    {$form['rss_import_allow_html']}
    Имя пользователя RSS Импорта
    От этого имени будет публиковаться тема с RSS записью (отображаeмое имя)
    RSS Import Poster's Name
    This will post the RSS topic under this person's account (member display name)
    {$form['rss_import_mid']}
    Увеличивать счетчик сообщений при RSS Импорте
    При публикации новой темы от пользователя из RSS Импорта, у него будет увеличен счетчик сообщений в форумах, где этот счетчик включен.
    RSS Import Increment Poster's Post Count
    This will increment this poster's post count in forums where post counts are enabled
    {$form['rss_import_inc_pcount']}
    Добавлять ссылку на запись RSS Импорта
    BB-код разрешен: {url} = URL к записи
    Если это поле заполнено, то к сообщению будет добавлена ссылка на источник, откуда взята RSS запись
    {$form['rss_import_showlink']}
    *Оставьте поле пустым, чтобы не включать ссылку в сообщение
    RSS Import Add Link To Post
    BBCode allowed: {url} = URL to article
    If completed, this will add a link to the article source (if available) to the post body
    {$form['rss_import_showlink']}
    *Leave blank to not include a link in the post
    Открытость тем RSS Импорта
    Если 'Да', то тема будет создана открытая. 'Нет' - тема будет закрыта
    RSS Import Topic Open
    If 'yes' the topic will be posted as open. 'No', topic will be closed
    {$form['rss_import_topic_open']}
    Невидимость тем RSS Импорта
    Если 'Да', то будет создана невидимая тема. 'Нет' - тема видимая
    RSS Import Topic Hidden
    If 'yes' the topic will be posted as invisible. 'No', topic will be visible
    {$form['rss_import_topic_hide']}
    Префикс тем RSS Импорта
    Префикс, который будет добавлен перед заголовком RSS записи
    RSS Import Topic Prefix
    This prefix will be added to the beginning of the RSS item's title
    {$form['rss_import_topic_pre']}
    @@ -290,14 +304,14 @@ function enable_auth_boxes()
    - Настройки RSS Импорта + RSS Import Settings - + - +
    Количество импортируемых записей за обновление
    Импортировать n записей за обновление. Импортирование довольно тяжелый процесс.
    RSS Import Per Go
    Imports n articles per update. Importing is moderately resource intensive.
    {$form['rss_import_pergo']}
    Обновление RSS Импорта
    Проверять новые RSS записи каждые n минут. Минимум 30 минут.
    RSS Import Refresh
    Checks for new articles every n minutes. Minimum of 30 minutes, regardless of input.
    {$form['rss_import_time']}
    @@ -305,9 +319,16 @@ function enable_auth_boxes()
    -
    +
        +
    + EOF; //--endhtml--// @@ -324,12 +345,22 @@ $IPBHTML = ""; $IPBHTML .= << -
    Потоки RSS Импорта
    +
    Quick-Validate an RSS Stream?
    - - - + + + +
    RSS ЗаголовокСтатусОпцииEnter the URL:
    + +
    +
    +
    RSS Import Streams
    + + + + + $content
    RSS TitleEnabledOptions
    @@ -338,8 +369,8 @@ $IPBHTML .= << menu_build_menu( "menumainone", - new Array( img_item + " Создать новый поток RSS Импорта...", - img_item + " Обновить все кеши RSS Импорта..." + new Array( img_add + " Create New RSS Import Stream...", + img_item + " Update All RSS Imports..." ) ); EOF; @@ -348,6 +379,24 @@ EOF; return $IPBHTML; } + +//=========================================================================== +// RSS +//=========================================================================== +function rss_validate_msg( $info ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= <<{$info['msg']} +EOF; + +//--endhtml--// +return $IPBHTML; +} + + //=========================================================================== // RSS //=========================================================================== @@ -359,20 +408,21 @@ $IPBHTML = ""; $IPBHTML .= <<
    - RSS + RSS {$data['rss_import_title']} YNОпцииYNOptions
    + + + + + + + + + + $content +
    NamePrimary GroupSecondary GroupsIP AddressEmail AddressPosts 
    +
     
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function list_admin_row( $member ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + {$member['members_display_name']} +
    {$member['_joined']}
    + + + {$member['_mgroup']} + + + {$member['_mgroup_others']}  + + +
    {$member['ip_address']}
    + + + {$member['email']} + + + {$member['posts']} + + + Edit + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function deep_scan_bad_files_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    Show: + + +
    + +
    +
    Executable Files
    +
    +
    + (File Size)   Last Modified +
    +
    + + $content +
    +
     
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function deep_scan_bad_files_row( $file_path, $file_name, $data ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    +
    ({$data['human']}k)   {$data['mtime']}
    +
    + - + + + + + + +   [ {$data['score']} ] $file_name + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function anti_virus_checked_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    +
    Uauthorized File Checked Folders
    + + $content +
    +
     
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function anti_virus_checked_row( $file_path ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + - + $file_path + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function anti_virus_bad_files_wrapper($content) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Suspicious Files
    +
    +
    + (File Size)   Last Modified +
    +
    + + $content +
    +
     
    +
    +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// DIAGNOSTICS +//=========================================================================== +function anti_virus_bad_files_row( $file_path, $file_name, $data ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    +
    ({$data['human']}k)   {$data['mtime']}
    +
    + - + + + + + + +   [ {$data['score']} ] $file_name + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +//=========================================================================== +// OVERVIEW +//=========================================================================== +function security_overview( $content ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    +
    + + + + + +
    + information + +

    Invision Power Board Security Center

    +

    +
    + The Invision Power Board Security Center is a centralized repository of security tools and settings. +
    + Your IPB installation is checked and suggestions are made on how to improve the security of your board. +
    +
    + {$content['bad']} + {$content['ok']} + {$content['good']} +

    +
    +
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// BAD +//=========================================================================== +function security_item_bad( $title, $desc, $button, $url, $key ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + + + + +
    + information + +
    {$title}
    +
    $desc
    +
    +
    + +
    +
    + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// GOOD +//=========================================================================== +function security_item_good( $title, $desc, $button, $url, $key ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + + + + +
    + information + +
    {$title}
    +
    $desc
    +
    +
    + +
    +
    + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// OK +//=========================================================================== +function security_item_ok( $title, $desc, $button, $url, $key ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + + + + + + +
    + information + +
    {$title}
    +
    $desc
    +
    +
    + +
    +
    + + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// HTaccess form +//=========================================================================== +function htaccess_form() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << + +
    + + + + + +
    + information + +

    ACP .htaccess protection

    +

    +
    + Invision Power Board can write .htaccess protection into your admin directory. +
    +
    + Please note +
    + Using this tool will overwrite any current protection in your admin directory. You will also be required to enter the username and password immediately after saving. +
    +
    +

    + Username + +
    +
    +
    + Password + +
    +
    + +

    +
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// HTaccess data +//=========================================================================== +function htaccess_data( $htaccess_pw, $htaccess_auth ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    + + + + + +
    + information + +

    ACP .htaccess protection

    +

    +
    + Invision Power Board is unable to write into your admin directory +
    +
    + Please create a file called ".htpasswd" and copy the contents below into it. Once saved, upload this new file into your 'admin' folder. +
    + +
    +
    + Please create a file called ".htaccess" and copy the contents below into it. Once saved, upload this new file into your 'admin' folder. +
    + +

    +
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Rename the admin directory +//=========================================================================== +function rename_admin_dir() { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    + + + + + +
    + information + +

    Renaming the ACP directory

    +

    +
    + Invision Power Board has a dedicated directory for the administration center. To further enhance security, you can rename this ACP directory. +
    +
    + Step 1: +
    + First, you'll need to physically rename the directory. Connect to your server via FTP and then browse to your IPB directory (this is the one that has your + index.php file in it). +
    + Locate the 'admin' directory. It has just one file inside called 'index.php'. Choose 'rename' from your FTP client menu and rename it. For the purposes of this + tutorial, we'll rename it 'admin_secret'. +
    +
    + Step 2: + Locate the 'init.php' file. This is in your IPB root directory. Download it and open it in a text editor. +
    Near the top of this file, you'll see: +
    +

    //-----------------------------------------------
    +// USER CONFIGURABLE ELEMENTS
    +//-----------------------------------------------
    +/**
    +* ROOT PATH
    +*
    +* If __FILE__ is not supported, try ./ and
    +* turn off "USE_SHUTDOWN" or manually add in
    +* the full path
    +* @since 2.0.0.2005-01-01
    +*/
    +define( 'ROOT_PATH', dirname( __FILE__ ) ."/" );
    +
    +/**
    +* Directory name for the admin folder
    +* @since 2.2.0.2006-06-30
    +*/
    +define( 'IPB_ACP_DIRECTORY', 'admin' );
    + +
    + Change the line:
    define( 'IPB_ACP_DIRECTORY', 'admin' );
    to
    define( 'IPB_ACP_DIRECTORY', 'admin_secret' );
    +
    +
    + Your ACP directory has now been renamed. +
    Remember to remove the ACP link from your board using the Security Center. +

    +
    +
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +} + + +?> \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_settings.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_settings.php new file mode 100644 index 00000000..9987a4a0 --- /dev/null +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_settings.php @@ -0,0 +1,99 @@ + + + - + + {$r['admin_username']} +
    IP: {$r['admin_ip_address']}
    + {$r['_admin_time']} + - + + - + + +EOF; + +//--endhtml--// +return $IPBHTML; +} + +//=========================================================================== +// Index +//=========================================================================== +function settings_check_differences( $original_missing, $original_new ) { + +$IPBHTML = ""; +//--starthtml--// + +$IPBHTML .= << +
    Setting XML Differences
    + + + - + EOF; diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_tools.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_tools.php index 2a69fca9..31c38e5d 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_tools.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_tools.php @@ -14,7 +14,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -30,7 +30,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -46,7 +46,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + EOF; //--endhtml--// @@ -62,7 +62,7 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << + +
    $title
    +
    Settings not in the DB Settings
    + +EOF; +if ( is_array( $original_missing ) ) +{ + foreach( $original_missing as $key => $data ) + { +$IPBHTML .= << + + +EOF; + } +} + +$IPBHTML .= << + +
    {$data['conf_key']}
    +
    Settings not in the uploaded XML file
    + +EOF; +if ( is_array( $original_new ) ) +{ + foreach( $original_new as $key => $data ) + { +$IPBHTML .= << + + +EOF; + } +} + +$IPBHTML .= << + +
    {$data['conf_key']}
    + +EOF; + +//--endhtml--// +return $IPBHTML; +} + + +} + + +?> \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_taskmanager.php b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_taskmanager.php index bc7b0817..2aaedbc3 100644 --- a/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_taskmanager.php +++ b/upload/skin_acp/IPB2_Standard/acp_skin_html/cp_skin_taskmanager.php @@ -15,12 +15,12 @@ $IPBHTML = ""; $IPBHTML .= << -
    :Журнал выполненных задач
    +
    Task Manager Logs
    - - - + + + $last5
    ЗадачаВремя запускаИнформацияTask RunDate RunLog Info
    @@ -55,6 +55,7 @@ $IPBHTML .= <<
    +
    View Task Manager Logs
    @@ -67,7 +68,7 @@ $IPBHTML .= <<{$form['task_count']} - +
    @@ -76,6 +77,7 @@ $IPBHTML .= << +
    Delete Task Manager Logs
    @@ -88,7 +90,7 @@ $IPBHTML .= <<{$form['task_prune']} - +
    @@ -135,13 +137,13 @@ function updatepreview() var formobj = document.adminform; var dd_wday = new Array(); - dd_wday[0] = 'Воскресенье'; - dd_wday[1] = 'Понедельник'; - dd_wday[2] = 'Вторник'; - dd_wday[3] = 'Среда'; - dd_wday[4] = 'Четверг'; - dd_wday[5] = 'Пятница'; - dd_wday[6] = 'Суббота'; + dd_wday[0] = 'Sunday'; + dd_wday[1] = 'Monday'; + dd_wday[2] = 'Tuesday'; + dd_wday[3] = 'Wednesday'; + dd_wday[4] = 'Thursday'; + dd_wday[5] = 'Friday'; + dd_wday[6] = 'Saturday'; var output = ''; @@ -162,17 +164,17 @@ function updatepreview() if ( chosen_mday != -1 ) { - output_day = +chosen_mday+' числа.'; + output_day = 'On day '+chosen_mday+'.'; } if ( chosen_mday == -1 && chosen_wday != -1 ) { - output_day = 'В ' + dd_wday[ chosen_wday ]+'.'; + output_day = 'On ' + dd_wday[ chosen_wday ]+'.'; } if ( chosen_hour != -1 && chosen_min != -1 ) { - output_hour = 'В '+chosen_hour+':'+formatnumber(chosen_min)+'.'; + output_hour = 'At '+chosen_hour+':'+formatnumber(chosen_min)+'.'; } else { @@ -180,7 +182,7 @@ function updatepreview() { if ( chosen_min == 0 ) { - output_hour = 'Каждый час'; + output_hour = 'On every hour'; } else { @@ -188,16 +190,16 @@ function updatepreview() { if ( chosen_min == -1 ) { - output_min = 'Каждую минуту'; + output_min = 'Every minute'; } else { - output_min = 'Каждые '+chosen_min+' минут.'; + output_min = 'Every '+chosen_min+' minutes.'; } } else { - output_min = 'В '+formatnumber(chosen_min)+' минут каждого часа'; + output_min = 'At '+formatnumber(chosen_min)+' minutes past the first available hour'; } } } @@ -205,11 +207,11 @@ function updatepreview() { if ( output_day != '' ) { - output_hour = 'В ' + chosen_hour + ':00'; + output_hour = 'At ' + chosen_hour + ':00'; } else { - output_hour = 'Каждые ' + chosen_hour + ' часов'; + output_hour = 'Every ' + chosen_hour + ' hours'; } } } @@ -236,6 +238,7 @@ function formatnumber(num) } +
    @@ -244,36 +247,36 @@ function formatnumber(num)
    - + - + - + - + - + EOF; @@ -294,11 +297,11 @@ if ( $form['task_key'] != "" ) { $IPBHTML .= << - + - + EOF; @@ -324,25 +327,26 @@ $IPBHTML = ""; $IPBHTML .= << -
    Установленные задачи
    +
    Scheduled Tasks
    Название задачиTask Title {$form['task_title']}
    Краткое описание задачиTask Short Description {$form['task_description']}
    PHP файл задачи для запуска
    Это PHP файл, который будет запускаться при запуске задачи.
    Task PHP File To Run
    This is the PHP file that is run when the task is run.
    ./sources/tasks/ {$form['task_file']}
    - Опции времени + Time Options - + - + - + - +
    Время задачи: минуты
    Выберите 'Каждую минуту' для запуска каждую минуту или точное значение минуты в часу
    Task Time: Minutes
    Choose 'Every Minute' to run each minute or a number for a specific minute of an hour
    {$form['task_minute']}
    Время задачи: часы
    Выберите 'Каждый час' для запуска каждый час или точное значение часа в день
    Task Time: Hours
    Choose 'Every Hour' to run each hour or a number for a specific hour of a day
    {$form['task_hour']}
    Время задачи: день недели
    Выберите 'Каждый день недели' для запуска каждый день недели или просто укажите день недели
    Task Time: Week Day
    Choose 'Every Day' to run each day or a week day for a specific week day of a month
    {$form['task_week_day']}
    Время задачи: день месяца
    Выберите 'Каждый день месяца' для запуска каждый день или точное число
    Task Time: Month Day
    Choose 'Every Day' to run each day or a month day for a specific month day of a month
    {$form['task_month_day']}
    @@ -281,11 +284,11 @@ function formatnumber(num)
    Включить запись журнала действий
    При включенной опции все выполнения задач будут записаны в базу данных, не рекомендуется для основных задач, выполняемых каждые 5-10 минут.
    Enable Task Logging
    Will write to the task log each time the task is run, not recommended for regular tasks run every few minutes.
    {$form['task_log']}
    Включить задачу?
    Если вы используете CRON, вы должны отключить вызов этой задачи здесь.
    Enable Task?
    If you are using CRON, you might wish to disable this task from the internal manager.
    {$form['task_enabled']}
    Ключ задачи
    Эта опция используется для вызова задачи только при указании ID
    Task Key
    This is used to call a task where the ID of the task might change
    {$form['task_key']}
    Безопасный режим
    Если выбрана данная опция, эта задача не сможет быть изменена администраторами
    Task Safe Mode
    If set to 'yes', this will not be editable by admins
    {$form['task_safemode']}
    - - - - - - - + + + + + + + $content
    НазваниеСледующий запускМинутаЧасДень месяцаДень неделиДействияTitleNext RunMinHourMDayWDayOptions
    - +

    -
    Все время в GMT. GMT время сейчас: $date
    + +
    +
    All times GMT. GMT time now is: $date
    EOF; - //--endhtml--// return $IPBHTML; } @@ -367,7 +371,7 @@ EOF; if ( $row['task_locked'] > 0 ) { $IPBHTML .= <<Разблокировать + Unlock EOF; }//endif $IPBHTML .= <<
    - Cron - Запустить + Cron + Run
    @@ -389,14 +393,14 @@ $IPBHTML .= <<{$row['task_hour']}
    {$row['task_month_day']} {$row['task_week_day']}ОпцииOptions
    - + - + - + - + - + - - + - + - + - + EOF; @@ -165,7 +166,7 @@ if ( $form['com_safemode'] != '' ) { $IPBHTML .= << - + EOF; @@ -193,14 +194,14 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << -
    Зарегистрированные компоненты
    +
    Registered Components
    Название компонентаComponent Title {$form['com_title']}
    Версия компонентаComponent Version {$form['com_version']}
    Описание компонентаComponent Brief Description {$form['com_description']}
    Автор компонентаComponent Author {$form['com_author']}
    URL разработчика компонентаComponent Home URL {$form['com_url']}
    Данные меню компонента + Component ACP Menu Data @@ -140,23 +141,23 @@ $IPBHTML .= <<
    URL компонента на страницах форума
    {ipb.base_url} - будет заменено на URL форума (включая ID сессии, если есть)
    Component Board Header URL
    {ipb.base_url} will be converted to the board's base URL (complete with session ID, etc)
    {$form['com_url_uri']}
    Заголовок компонента на страницах форума
    {ipb.lang['some_words']} - будет заменено на текст из лэнгов из переменной "some_words"
    Component Board Header Title
    {ipb.lang['some_words']} will be converted to the lang_global's "some_words" entry
    {$form['com_url_title']}
    Включить компонент?Component Enabled {$form['com_enabled']}
    Секция кода компонента
    Эта секция кода, которая загружает соответствующий файл. Код каждого компонента должен быть уникальным и название файла должно быть - component_* (не включая .php).
    Component Section Code
    This is the section code which loads the appropriate file. Each component code must be unique and be exactly the same as the filename of the component_* files (minus .php).
    {$form['com_section']}
    Включить безопасный режим? (Будет невозможно удалить или редактировать...)Enable Safemode? (Cannot be deleted or edited by user) {$form['com_safemode']}
    - - - - - + + + + + $content
    НазваниеАвторПозицияСтатусОпцииNameAuthorPositionEnabledOptions
    @@ -208,27 +209,28 @@ $IPBHTML .= <<
    +
    -
    Импортирование XML файла компонента
    +
    Import XML Component File
    - + - +
    Загрузить XML файл компонентов с вашего компьютера
    Одинаковые записи не будут перезаписаны, но настройки по умолчанию будут обновлены. Файл обязан начинаться с 'ipd_' и заканчиваться на '.xml' или '.xml.gz'
    Upload XML components file from your computer
    Duplicate entries will not be overwritten but the default setting and other options will be updated. The file must begin with 'ipd_' and end with either '.xml' or '.xml.gz'
    ИЛИ введите имя файла с XML настройками
    Файл должен быть загружен в корневую папку форума
    OR enter the filename of the XML settings file
    The file must be uploaded into the root folder
    -
    +
    EOF; @@ -250,9 +252,9 @@ $IPBHTML .= <<{$data['_fullauthor']} {$data['_pos_up']}   {$data['_pos_down']} - ipsclass->base_url}&{$this->ipsclass->form_code}&code=component_toggle_enabled&com_id={$data['com_id']}' title='Включить/Выключить'>YN + ipsclass->base_url}&{$this->ipsclass->form_code}&code=component_toggle_enabled&com_id={$data['com_id']}' title='Toggle Enabled/Disabled'>YN - Опции + Options EOF; @@ -285,13 +288,13 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << -
    Содержание кеша
    +
    Cache Contents
    - Размер    - Опции + Size    + Options
    -
    Тип кеша
    +
    Cache Type
    $content @@ -301,7 +304,7 @@ $IPBHTML .= << menu_build_menu( "menumainone", - new Array( img_item + " Обновить все кеши..." ) ); + new Array( img_item + " Update all caches..." ) ); EOF; @@ -321,18 +324,18 @@ $IPBHTML .= << @@ -351,14 +354,14 @@ $IPBHTML = ""; //--starthtml--// $IPBHTML .= << -
    Зарегистрированные методы авторизации
    +
    Registered Log In Authentication Methods
    - {$data['cs_key']}
    {$data['_desc']}
    + {$data['cs_key']}
    {$data['_desc']}
    {$data['_size']}kb   - Опции + Options
    - - - - + + + + $content
     ЗаголовокУстановлено?Включено?ОпцииTitleInstalledEnabledOptions
    @@ -368,7 +371,7 @@ $IPBHTML .= << menu_build_menu( "menumainone", - new Array( img_item + " Зарегистрировать новый метод..." ) ); + new Array( img_add + " Register New Log In Method..." ) ); EOF; @@ -396,15 +399,15 @@ $IPBHTML .= << Log In Enabled - * + * Log In Installed - * + * Log In Has Settings - * + *
     
    @@ -419,18 +422,18 @@ $IPBHTML .= << ./sources/loginauth/{$login['login_folder_name']}/auth.php - * + * - ./sources/loginauth/{$login['login_folder_name']}/acp.php - * + * - ./sources/loginauth/{$login['login_folder_name']}/conf.php - * - * + * + *
     
    @@ -454,51 +457,60 @@ $IPBHTML = ""; $IPBHTML .= << +
    $title
    - + - + - + - - + + - - + + - + - + - - + + + + + + + + - + - - + + EOF; @@ -507,11 +519,11 @@ if ( $form['login_safemode'] != '' ) { $IPBHTML .= << - + - + EOF; @@ -537,11 +549,11 @@ $IPBHTML = ""; $IPBHTML .= << - + - - - + + + EOF; @@ -663,9 +675,9 @@ $IPBHTML = ""; $IPBHTML .= << - + - + EOF; diff --git a/upload/skin_acp/IPB2_Standard/acp_template.js b/upload/skin_acp/IPB2_Standard/acp_template.js index ea1804b1..9c80a7cc 100644 --- a/upload/skin_acp/IPB2_Standard/acp_template.js +++ b/upload/skin_acp/IPB2_Standard/acp_template.js @@ -1,5 +1,5 @@ //------------------------------------------ -// Invision Power Board v2.1.7 +// Invision Power Board v2.1 // ACP Specific JS File // (c) 2005 Invision Power Services, Inc. // @@ -117,7 +117,7 @@ function template_init() // IE FIX... grrr //------------------------------------------ - if ( is_ie ) + if ( is_ie && !is_ie7 ) { div_template_sections.style.position = 'absolute'; document.getElementById('template-main-wrap').style.height = parseInt( div_template_sections.style.height ) + 'px'; @@ -268,7 +268,7 @@ function template_find_bits(event) } catch(e) { - alert( "Невозможно найти шаблон с названием: " + search_box.value + "\nПожалуйста ищите в формате:\ntemplate_name (template_group)" ); + alert( "Could not locate a template bit called: " + search_box.value + "\nPlease search in the format:\ntemplate_name (template_group)" ); } } @@ -289,7 +289,7 @@ function template_bit_restore( tid ) if ( editor_contents[ 't'+tid ] ) { - if ( confirm("Вы уверены, что хотите обратить шаблон?\nВСЕ НЕСОХРАНЕННЫЕ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ!") ) + if ( confirm("Are you sure you want to restore the template?\nALL UNSAVED CHANGES WILL BE LOST!") ) { edit_box_obj.value = editor_contents[ 't'+tid ]; editor_contents[ 't'+tid ] = ''; @@ -309,7 +309,7 @@ function template_edit_close( tid ) if ( editor_contents[ 't'+tid ] ) { - if ( ! confirm('ВНИМАНИЕ: НАЖМИТЕ "OK" ДЛЯ ПОТЕРИ ВСЕХ НЕСОХРАНЕННЫХ ИЗМЕНЕНИЙ' ) ) + if ( ! confirm('WARNING: CLICK "OK" TO LOSE ANY UNSAVED CHANGES' ) ) { return false; } @@ -321,7 +321,7 @@ function template_edit_close( tid ) editor_contents[ 't'+tid ] = ''; div_template_edit.style.display = 'none'; - iframe_template_edit.src = 'javascript:;'; + iframe_template_edit.src = ipb_skin_url + '/iframe.html'; } /*-------------------------------------------------------------------------*/ @@ -467,7 +467,7 @@ function template_revert_clicked(event) var bitname = clicked_href.replace( /.*bitname=(.+?)&.*/ , "$1" ); var custombit = clicked_href.replace( /.*custombit=(.+?)/, "$1" ); - if ( confirm( "ВНИМАНИЕ: Вы не можете вернуть это действие!\Нажмите OK для продолжения или ОТМЕНА для отмены этого действия..." ) ) + if ( confirm( "WARNING: You cannot undo this action!\nPress OK to continue or CANCEL to cancel this action..." ) ) { if ( use_enhanced_js && parseInt(custombit) != 1 ) { @@ -561,7 +561,7 @@ function template_close_bits() if ( template_bit_loaded.length ) { div_template_edit.style.display = 'none'; - iframe_template_edit.src = 'javascript:;'; + iframe_template_edit.src = ipb_skin_url + '/iframe.html'; } //------------------------------------------ @@ -601,7 +601,7 @@ function template_add_bit( add_url, event ) if ( editor_unload_set ) { - if ( ! confirm('ВНИМАНИЕ: НАЖМИТЕ "OK" ДЛЯ ПОТЕРИ ВСЕХ НЕСОХРАНЕННЫХ ИЗМЕНЕНИЙ' ) ) + if ( ! confirm('WARNING: CLICK "OK" TO LOSE ANY UNSAVED CHANGES' ) ) { return false; } @@ -681,7 +681,7 @@ function template_load_editor( bit_name, event, bit_url ) if ( editor_unload_set ) { - if ( ! confirm('ВНИМАНИЕ: НАЖМИТЕ "OK" ДЛЯ ПОТЕРИ ВСЕХ НЕСОХРАНЕННЫХ ИЗМЕНЕНИЙ' ) ) + if ( ! confirm('WARNING: CLICK "OK" TO LOSE ANY UNSAVED CHANGES' ) ) { return false; } diff --git a/upload/skin_acp/IPB2_Standard/blank.gif b/upload/skin_acp/IPB2_Standard/blank.gif new file mode 100644 index 00000000..75b945d2 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/blank.gif differ diff --git a/upload/skin_acp/IPB2_Standard/colours.html b/upload/skin_acp/IPB2_Standard/colours.html index 541fffd0..90741ac0 100644 --- a/upload/skin_acp/IPB2_Standard/colours.html +++ b/upload/skin_acp/IPB2_Standard/colours.html @@ -1 +1 @@ -Invision Power Board — работа с цветами
    Invision Power Board — работа с цветами

    Просто наведите курсор «мышки» на нужный цвет и вы получите шестнадцатеричный HEX код и предварительный просмотр цвета.




    Шестнадцатеричный HEX код

    [   ]

    Нажмите на выбранный цвет, чтобы добавить сюда шестнадцатеричный HEX код

    \ No newline at end of file + Invision Power Board Colour Picker
    Invision Power Board Color Picker

    Simply roll your mouse over the desired colour to get the Hex value and a colour preview




    The Hexidecimal Value

    [   ]

    Click a swatch to add the hex here

    \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/css.html b/upload/skin_acp/IPB2_Standard/css.html index 97471aa1..bb7e4138 100644 --- a/upload/skin_acp/IPB2_Standard/css.html +++ b/upload/skin_acp/IPB2_Standard/css.html @@ -1 +1 @@ - Генератор CSS
    Название методаLog In Title {$form['login_title']}
    Описание
    Краткое описание метода авторизации
    Log In Description
    A short description for this log in method
    {$form['login_description']}
    Имя папки
    Основная директория с PHP файлами.
    Пример: Если ./sources/loginauth/internal/auth.php тогда вводите: internal
    Log In Files Folder Name
    The main folder the PHP files reside.
    E.G: If ./sources/loginauth/internal/auth.php then enter: internal
    {$form['login_folder_name']}
    Служебный URL для пользователей
    URL места, где пользователи смогут изменить их пароль и e-mail.
    {$form['login_maintain_url']}
    (Опционально для совместного типа)
    Log In User Maintenance URL
    The URL for the place they can edit their password and/or email address.
    {$form['login_maintain_url']}
    (Optional for On-Fail authentication)
    URL регистрации
    URL места, где будет расположена регистрация пользователей.
    {$form['login_register_url']}
    (Опционально для совместного типа)
    Log In User Register URL
    The URL for the place to register a new account.
    {$form['login_register_url']}
    (Optional for On-Fail authentication)
    Тип авторизации?
    Удаленный: Этот метот всегда использует запросы к удаленной базе для авторизации пользователя. Все учетные записи должны быть сделаны удаленно.
    Совместный: Если данные о пользователе не представлены в базе данных IPB, форум будет запрашивать удаленную базу.
    Log In Authentication Type?
    Pass-Through: This method always queries the remote DB for user authentication. All accounts must be made by remote.
    On-Fail: If there isn't a member present in the IPB DB, IPB will query the remote DB.
    {$form['login_type']}
    HTML форма авторизации
    Введите HTML код формы авторизации для ее использования при входе.
    Log In Form HTML
    Enter the HTML to add or replace the log in form.
    {$form['login_alt_login_html']}
    Заменить HTML формой выше?
    Если 'Да', то введенный выше HTML код заменит обычную форму авторизации. Если 'Нет', код будет добавлен рядом с обычной формой авторизации.
    Log In User Log In URL
    The URL for the place to log in.
    {$form['login_login_url']}
    Log In User Log Out URL
    The URL for the place to log out.
    {$form['login_logout_url']}
    Включить метод?
    Если 'Да', этот метод авторизации будет включен, а любой текущий отключится автоматически.
    Log In Enabled
    If 'yes', this log in will be enabled and any current one disabled.
    {$form['login_enabled']}
    Разрешить создание пользователя?
    Если 'Да', авторизованный пользователь, которого нет в базе данных IPB, будет туда внесен автоматически.
    {$form['login_allow_create']}Log In User Name Type
    Choose the type of user name required for the log in form. This may be fixed in some log in modules.
    {$form['login_user_id']}
    Включить Safemode?
    Невозможно удаление или редактирование
    Enable Safemode?
    Cannot be deleted or edited by user
    {$form['login_safemode']}
    Флаг установлен?
    Невозможно удаление или редактирование
    Flag as installed?
    Cannot be deleted or edited by user
    {$form['login_installed']}
    ** {$data['login_title']}
    {$data['login_description']}
    YNYNОпцииYNYNOptions
    ОпцииOptions {$data['pc_title']}
    {$data['pc_desc']}
    ОпцииOptions
    Простой генератор CSS

    Этот генератор позволяет легко настраивать и создавать пункты CSS таблиц стилей. Он не содержит все CSS пункты — только самые часто используемые.

    Название пункта CSS?
    Названиe шрифта (несколько шрифтов разделяйте запятой)
    Размер шрифта  
    Вес шрифта
    Цвет
    Цвет фона
    Граница... Вес (в пикселях, или оставьте пустым)  Цвет 
    Межстрочный интервал  
    Расстояние между буквами  пунктов



    Ваш CSS пункт будет показан ниже, когда сгенерируется.
    \ No newline at end of file + CSS Generator
    Simple CSS Generator

    This is designed to generate a simple CSS definition. It does not contain all the CSS attributes, just the most commonly used ones.

    CSS ID Definition name?
    Font name (separate many with a comma)
    Font size  
    Font Weight
    Font Colour
    Background Colour
    Border... Weight (in pixels or leave blank)  Colour
    Line Spacing  
    Letter Spacing  point



    Your CSS will appear below once generated.
    \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/iframe.html b/upload/skin_acp/IPB2_Standard/iframe.html index 89052a6d..f46dd0b9 100644 --- a/upload/skin_acp/IPB2_Standard/iframe.html +++ b/upload/skin_acp/IPB2_Standard/iframe.html @@ -1,5 +1 @@ - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/images/40opacity-black.png b/upload/skin_acp/IPB2_Standard/images/40opacity-black.png new file mode 100644 index 00000000..64ecf577 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/40opacity-black.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/75opacity-black.png b/upload/skin_acp/IPB2_Standard/images/75opacity-black.png new file mode 100644 index 00000000..45db412b Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/75opacity-black.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/75opacity-white.png b/upload/skin_acp/IPB2_Standard/images/75opacity-white.png new file mode 100644 index 00000000..b34eb703 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/75opacity-white.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/Thumbs.db b/upload/skin_acp/IPB2_Standard/images/Thumbs.db deleted file mode 100644 index 97506f75..00000000 Binary files a/upload/skin_acp/IPB2_Standard/images/Thumbs.db and /dev/null differ diff --git a/upload/skin_acp/IPB2_Standard/images/acp-information.gif b/upload/skin_acp/IPB2_Standard/images/acp-information.gif new file mode 100644 index 00000000..b80d154a Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/acp-information.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/acp-login-lock.gif b/upload/skin_acp/IPB2_Standard/images/acp-login-lock.gif new file mode 100644 index 00000000..8145468f Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/acp-login-lock.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/acp-login-logo.gif b/upload/skin_acp/IPB2_Standard/images/acp-login-logo.gif new file mode 100644 index 00000000..cec06bcc Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/acp-login-logo.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/acp-logo.gif b/upload/skin_acp/IPB2_Standard/images/acp-logo.gif new file mode 100644 index 00000000..333773b0 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/acp-logo.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/acp-redirect.gif b/upload/skin_acp/IPB2_Standard/images/acp-redirect.gif new file mode 100644 index 00000000..715c328c Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/acp-redirect.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/acp_resync.gif b/upload/skin_acp/IPB2_Standard/images/acp_resync.gif index 86c3c03f..64c2dede 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/acp_resync.gif and b/upload/skin_acp/IPB2_Standard/images/acp_resync.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/editor_closed.gif b/upload/skin_acp/IPB2_Standard/images/editor_closed.gif index b37ca8d3..44813995 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/editor_closed.gif and b/upload/skin_acp/IPB2_Standard/images/editor_closed.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/editor_open.gif b/upload/skin_acp/IPB2_Standard/images/editor_open.gif index 8acfcbf0..eab44ed5 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/editor_open.gif and b/upload/skin_acp/IPB2_Standard/images/editor_open.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/emo_delete.gif b/upload/skin_acp/IPB2_Standard/images/emo_delete.gif index 9107f53c..bb8e372d 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/emo_delete.gif and b/upload/skin_acp/IPB2_Standard/images/emo_delete.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/index/user.png b/upload/skin_acp/IPB2_Standard/images/folder_components/index/user.png new file mode 100644 index 00000000..a1d1bac8 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/index/user.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/index/view.png b/upload/skin_acp/IPB2_Standard/images/folder_components/index/view.png new file mode 100644 index 00000000..15f056ca Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/index/view.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/bad_file.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/bad_file.png new file mode 100644 index 00000000..1f4d0ac8 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/bad_file.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/checked_folder.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/checked_folder.png new file mode 100644 index 00000000..6dbf0445 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/checked_folder.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/id_card_ok.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/id_card_ok.png new file mode 100644 index 00000000..32aee9fa Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/id_card_ok.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_error.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_error.png new file mode 100644 index 00000000..0d46c72e Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_error.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_information.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_information.png new file mode 100644 index 00000000..3410b471 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_information.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_ok.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_ok.png new file mode 100644 index 00000000..5895b5c1 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/lock_ok.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_components/security/run_tool.png b/upload/skin_acp/IPB2_Standard/images/folder_components/security/run_tool.png new file mode 100644 index 00000000..c4fc5bda Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_components/security/run_tool.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/50opacity-white.png b/upload/skin_acp/IPB2_Standard/images/folder_css_images/50opacity-white.png new file mode 100644 index 00000000..44635c7d Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/50opacity-white.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/content_bar_bg.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/content_bar_bg.gif new file mode 100644 index 00000000..0290fe14 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/content_bar_bg.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/css-form-background.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/css-form-background.gif new file mode 100644 index 00000000..c9cdafc4 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/css-form-background.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/dropshadow-alpha.png b/upload/skin_acp/IPB2_Standard/images/folder_css_images/dropshadow-alpha.png new file mode 100644 index 00000000..845ad745 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/dropshadow-alpha.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/js_alert.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/js_alert.gif new file mode 100644 index 00000000..15ba374c Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/js_alert.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/main_menu_bg.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/main_menu_bg.gif new file mode 100644 index 00000000..efde042a Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/main_menu_bg.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/mainblock_bg.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/mainblock_bg.gif new file mode 100644 index 00000000..70c2997c Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/mainblock_bg.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/palette_tile.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/palette_tile.gif new file mode 100644 index 00000000..f69947d5 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/palette_tile.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/rte_tile.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/rte_tile.gif new file mode 100644 index 00000000..4de0397d Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/rte_tile.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab-off-bg.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab-off-bg.gif new file mode 100644 index 00000000..8f12bd51 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab-off-bg.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab-on-bg.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab-on-bg.gif new file mode 100644 index 00000000..5f279116 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab-on-bg.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab_background.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab_background.gif new file mode 100644 index 00000000..d063b430 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/tab_background.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_css_images/table_title_gradient.gif b/upload/skin_acp/IPB2_Standard/images/folder_css_images/table_title_gradient.gif new file mode 100644 index 00000000..efde042a Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/folder_css_images/table_title_gradient.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/folder_xx_spacer.gif b/upload/skin_acp/IPB2_Standard/images/folder_xx_spacer.gif index 8ff329f9..903b50d1 100644 --- a/upload/skin_acp/IPB2_Standard/images/folder_xx_spacer.gif +++ b/upload/skin_acp/IPB2_Standard/images/folder_xx_spacer.gif @@ -1 +1 @@ -R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA 2d174325a5cb8288,///+/v79,fdab03b953f0e659 R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA \ No newline at end of file +R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA <{%dyn.down.var.md5p1%}>,///+/v79,<{%dyn.down.var.md5p2%}> R0lGODlhhgAfAMQAAAAAAP///+/v79/f38/Pz7+/v6+vr5+fn4+Pj4CAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAA \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/images/global-infoicon.gif b/upload/skin_acp/IPB2_Standard/images/global-infoicon.gif new file mode 100644 index 00000000..2f9fb9fc Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/global-infoicon.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icon_information.png b/upload/skin_acp/IPB2_Standard/images/icon_information.png new file mode 100644 index 00000000..9c85561c Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icon_information.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/icon_warning.png b/upload/skin_acp/IPB2_Standard/images/icon_warning.png new file mode 100644 index 00000000..d0b7bb50 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icon_warning.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/cancel.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/cancel.gif new file mode 100644 index 00000000..cd2b8007 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/cancel.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/insert-special.png b/upload/skin_acp/IPB2_Standard/images/icons_form/insert-special.png new file mode 100644 index 00000000..a808dbc5 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/insert-special.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/save-and-queue.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/save-and-queue.gif new file mode 100644 index 00000000..e4cd2aca Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/save-and-queue.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/save-and-reload.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/save-and-reload.gif new file mode 100644 index 00000000..815d3494 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/save-and-reload.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/save.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/save.gif new file mode 100644 index 00000000..4824b9b6 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/save.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/search-test.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/search-test.gif new file mode 100644 index 00000000..b238ebb1 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/search-test.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/search.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/search.gif new file mode 100644 index 00000000..045c4775 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/search.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_form/view-changes.gif b/upload/skin_acp/IPB2_Standard/images/icons_form/view-changes.gif new file mode 100644 index 00000000..a09868b4 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_form/view-changes.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/add.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/add.gif new file mode 100644 index 00000000..9ee7a715 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/add.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/delete.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/delete.gif new file mode 100644 index 00000000..6c8b85a7 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/delete.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/edit.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/edit.gif new file mode 100644 index 00000000..b7cede41 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/edit.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/export.png b/upload/skin_acp/IPB2_Standard/images/icons_menu/export.png new file mode 100644 index 00000000..eb1b398c Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/export.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/info.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/info.gif new file mode 100644 index 00000000..bee42bbc Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/info.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/manage.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/manage.gif new file mode 100644 index 00000000..9b8d6ca0 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/manage.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/menu-icon-bg.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/menu-icon-bg.gif new file mode 100644 index 00000000..01445bce Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/menu-icon-bg.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/new-folder.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/new-folder.gif new file mode 100644 index 00000000..a44a0da0 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/new-folder.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/password.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/password.gif new file mode 100644 index 00000000..473faea2 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/password.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/icons_menu/view.gif b/upload/skin_acp/IPB2_Standard/images/icons_menu/view.gif new file mode 100644 index 00000000..a09868b4 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/icons_menu/view.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/index.html b/upload/skin_acp/IPB2_Standard/images/index.html index 787531db..52a588b2 100644 --- a/upload/skin_acp/IPB2_Standard/images/index.html +++ b/upload/skin_acp/IPB2_Standard/images/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/images/item_bullet.gif b/upload/skin_acp/IPB2_Standard/images/item_bullet.gif new file mode 100644 index 00000000..f3f6ff15 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/item_bullet.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/loading_anim.gif b/upload/skin_acp/IPB2_Standard/images/loading_anim.gif new file mode 100644 index 00000000..e6d98b79 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/loading_anim.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/menu_action_down.gif b/upload/skin_acp/IPB2_Standard/images/menu_action_down.gif new file mode 100644 index 00000000..49ac1403 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/menu_action_down.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/menu_title_bullet.gif b/upload/skin_acp/IPB2_Standard/images/menu_title_bullet.gif new file mode 100644 index 00000000..2200b670 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/menu_title_bullet.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/rss.png b/upload/skin_acp/IPB2_Standard/images/rss.png index 4e371306..b3c949d2 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/rss.png and b/upload/skin_acp/IPB2_Standard/images/rss.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/admin.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/admin.png new file mode 100644 index 00000000..bc0b00d5 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/admin.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/components.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/components.png new file mode 100644 index 00000000..2958c82c Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/components.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/content.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/content.png new file mode 100644 index 00000000..6cb173eb Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/content.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/help.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/help.png new file mode 100644 index 00000000..a146576f Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/help.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/lookfeel.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/lookfeel.png new file mode 100644 index 00000000..03f02bf4 Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/lookfeel.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/system.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/system.png new file mode 100644 index 00000000..e25ab14f Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/system.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/tabs_main/tools.png b/upload/skin_acp/IPB2_Standard/images/tabs_main/tools.png new file mode 100644 index 00000000..9fb732ee Binary files /dev/null and b/upload/skin_acp/IPB2_Standard/images/tabs_main/tools.png differ diff --git a/upload/skin_acp/IPB2_Standard/images/te_remove.gif b/upload/skin_acp/IPB2_Standard/images/te_remove.gif index 837886a8..0875d021 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/te_remove.gif and b/upload/skin_acp/IPB2_Standard/images/te_remove.gif differ diff --git a/upload/skin_acp/IPB2_Standard/images/te_revert.gif b/upload/skin_acp/IPB2_Standard/images/te_revert.gif index 9c1e3911..700c8a28 100644 Binary files a/upload/skin_acp/IPB2_Standard/images/te_revert.gif and b/upload/skin_acp/IPB2_Standard/images/te_revert.gif differ diff --git a/upload/skin_acp/IPB2_Standard/index.html b/upload/skin_acp/IPB2_Standard/index.html index 787531db..52a588b2 100644 --- a/upload/skin_acp/IPB2_Standard/index.html +++ b/upload/skin_acp/IPB2_Standard/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/skin_acp/IPB2_Standard/zip.gif b/upload/skin_acp/IPB2_Standard/zip.gif deleted file mode 100644 index bc71391f..00000000 Binary files a/upload/skin_acp/IPB2_Standard/zip.gif and /dev/null differ diff --git a/upload/skin_acp/clientscripts/ipd_cell_select.js b/upload/skin_acp/clientscripts/ipd_cell_select.js new file mode 100644 index 00000000..ee8ab9e9 --- /dev/null +++ b/upload/skin_acp/clientscripts/ipd_cell_select.js @@ -0,0 +1 @@ +var _cell_select;function cell_select(){this.css_row_off='tablerow1';this.css_row_on='tablerow2selected';this.row_tr_id='arow';this.row_checkbox_id='acid';this.toggle_all_name='cellselect-cball';this.toggle_all_id='';this.toggle_all_flag=0;this.selected_ids=new Array();this.total_ids=0;this.store_css_row=new Array();};cell_select.prototype.init=function(){try{this.toggle_all_id=document.getElementById(this.toggle_all_name);this.toggle_all_flag=1;this.toggle_all_id.checked=false;}catch(error){this.toggle_all_flag=0;}var checkboxes=document.getElementsByTagName('INPUT');_cell_select=this;for(var i=0;i=drag_move.dims[i]['x1']&&x<=drag_move.dims[i]['x2']&&y>=drag_move.dims[i]['y1']&&y<=drag_move.dims[i]['y2']){bingo=1;this.id=i;dragmove_events.prototype.event_TARGET_mouseover();break;}}}if(!bingo){dragmove_events.prototype.event_TARGET_mouseout();}}};dragmove_events.prototype.event_drag_start=function(x,y){if(drag_move.current_id){var drag_main_obj=document.getElementById(drag_move.var_drag_draggable_id_text+'-'+drag_move.current_id);var drag_root_obj=document.getElementById(drag_move.var_drag_object_id_text+'-'+drag_move.current_id);var drag_orig_obj=document.getElementById(drag_move.var_original_row_text+'-'+drag_move.current_id);if(is_safari){drag_root_obj.style.position='relative';}drag_main_obj.style.top=ipsclass.get_obj_toppos(drag_root_obj)+'px';drag_main_obj.style.left=ipsclass.get_obj_leftpos(drag_root_obj)+'px';drag_main_obj.style.position='absolute';drag_main_obj.style.display='block';drag_main_obj.style.zIndex=1000;if(drag_move.var_target_ids.length){for(var i in drag_move.var_target_ids){var main_obj=document.getElementById(drag_move.var_original_row_text+'-'+i);if(is_safari){main_obj.style.position='relative';}if(is_ie){drag_move.dims[i]=new Array();drag_move.dims[i]['x1']=ipsclass.get_obj_leftpos(main_obj);drag_move.dims[i]['x2']=drag_move.dims[i]['x1']+main_obj.offsetWidth;drag_move.dims[i]['y1']=ipsclass.get_obj_toppos(main_obj)-20;drag_move.dims[i]['y2']=drag_move.dims[i]['y1']+main_obj.offsetHeight-5;}else{var targetobj=document.createElement('div');targetobj.id=drag_move.var_original_row_text+'-TARGET-'+i;targetobj.style.background='transparent';targetobj.style.position='absolute';targetobj.style.left=ipsclass.get_obj_leftpos(main_obj)+'px';targetobj.style.top=ipsclass.get_obj_toppos(main_obj)+'px';targetobj.style.width=main_obj.offsetWidth+'px';targetobj.style.height=main_obj.offsetHeight+'px';targetobj.style.zIndex=1000;document.body.appendChild(targetobj);drag_move._TARGETS[drag_move._TARGETS.length]=targetobj;targetobj.onmouseover=dragmove_events.prototype.event_TARGET_mouseover;targetobj.onmouseout=dragmove_events.prototype.event_TARGET_mouseout;}}}if(!document.getElementById(drag_move.var_original_row_text+'-HIDDEN-'+drag_move.current_id)){var newdiv=document.createElement('DIV');newdiv.id=drag_move.var_original_row_text+'-HIDDEN-'+drag_move.current_id;newdiv.className=(is_ie)?drag_move.var_hide_row_classname+'-ie':drag_move.var_hide_row_classname+'-moz';newdiv.style.position='absolute';newdiv.style.top=ipsclass.get_obj_toppos(drag_root_obj)+'px';newdiv.style.left=ipsclass.get_obj_leftpos(drag_root_obj)+'px';newdiv.style.width=drag_orig_obj.offsetWidth+'px';newdiv.style.height=drag_orig_obj.offsetHeight+'px';document.body.appendChild(newdiv);}else{var newdiv=document.getElementById(drag_move.var_original_row_text+'-HIDDEN-'+drag_move.current_id);newdiv.style.display='';}drag_move._drag_in_progress=1;}};dragmove_events.prototype.event_drag_end=function(x,y){if(drag_move.current_id){var drag_main_obj=document.getElementById(drag_move.var_drag_draggable_id_text+'-'+drag_move.current_id);var drag_root_obj=document.getElementById(drag_move.var_drag_object_id_text+'-'+drag_move.current_id);var drag_orig_obj=document.getElementById(drag_move.var_original_row_text+'-'+drag_move.current_id);drag_main_obj.style.display='none';if(document.getElementById(drag_move.var_original_row_text+'-HIDDEN-'+drag_move.current_id)){document.getElementById(drag_move.var_original_row_text+'-HIDDEN-'+drag_move.current_id).style.display='none';}}if(drag_move._TARGETS){for(var i in drag_move._TARGETS){document.body.removeChild(drag_move._TARGETS[i]);}drag_move._TARGETS=new Array();}if(drag_move.var_target_over_id){var new_parent_id=drag_move.var_target_over_id;var page_id=drag_move.current_id;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading("Move in progress...");return;}xmlobj.hide_loading();var returned=xmlobj.xmlhandler.responseText;if(returned.match( /(0|-|\=)<\/null>/)){alert("Error occured, move not completed "+returned);}else{window.location=drag_move.var_bounce_url;}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(drag_move.var_ajax_url+'&pid='+page_id+'&new_parent_id='+new_parent_id);}drag_move.current_id=null;drag_move._drag_in_progress=null;if(drag_move.var_target_over_id){var target_obj=document.getElementById(drag_move.var_original_row_text+'-'+drag_move.var_target_over_id);target_obj.className=drag_move.var_target_out_classname;}drag_move.var_target_over_id=null;}; diff --git a/upload/skin_acp/clientscripts/ipd_form_functions.js b/upload/skin_acp/clientscripts/ipd_form_functions.js new file mode 100644 index 00000000..7e22a72a --- /dev/null +++ b/upload/skin_acp/clientscripts/ipd_form_functions.js @@ -0,0 +1 @@ +var _form_functions=null;function form_functions(){this.name_form='mainform';this.obj_form=null;this.form_edited=1;this.name_edit_hold='page-edit-hold';this.id_edit_hold=null;this.form_onsubmit_saved=null;this.form_button_divs=new Array();this.form_link_divs=new Array();this.form_eval_divs=new Array();this.css_formbutton_off='formbutton-off';this.css_formbutton_on='formbutton-on';}form_functions.prototype.init=function(){this.obj_form=document.getElementById(this.name_form);if(this.obj_form.onsubmit){this.form_onsubmit_saved=this.obj_form.onsubmit;}try{this.id_edit_hold=document.getElementById(this.name_edit_hold);}catch(error){}var inputs=this.obj_form.getElementsByTagName('INPUT');_form_functions=this;for(var i=0;i<=inputs.length;i++){try{if(inputs[i].type=='hidden'){continue;}}catch(error){continue;}inputs[i].onchange=this.form_event_edited;}this.obj_form.onsubmit=this.form_submit;};form_functions.prototype.add_submit_event=function(div_id,field_name,init_value,onsubmit_value){var div_obj=null;try{div_obj=document.getElementById(div_id);}catch(error){alert("Could not initialize field: "+div_id);return false;}if(field_name){var field=document.createElement('input');field.type='hidden';field.value=init_value;field.name=field_name;field.id='field--x--'+div_id;this.obj_form.appendChild(field);this.form_button_divs[div_id]=onsubmit_value;}div_obj.onmouseover=this.form_button_mouseover;div_obj.onmouseout=this.form_button_mouseout;div_obj.onclick=this.form_button_submit;div_obj.className=this.css_formbutton_off;};form_functions.prototype.add_eval_event=function(div_id,eval_code){var div_obj=null;try{div_obj=document.getElementById(div_id);}catch(error){alert("Could not initialize event: "+div_id);return false;}this.form_eval_divs[div_id]=eval_code;div_obj.onmouseover=this.form_button_mouseover;div_obj.onmouseout=this.form_button_mouseout;div_obj.onclick=this.form_button_eval_click;div_obj.className=this.css_formbutton_off;};form_functions.prototype.add_link_event=function(div_id,link_url){var div_obj=null;try{div_obj=document.getElementById(div_id);}catch(error){alert("Could not initialize event: "+div_id);return false;}this.form_link_divs[div_id]=link_url;div_obj.onmouseover=this.form_button_mouseover;div_obj.onmouseout=this.form_button_mouseout;div_obj.onclick=this.form_button_link_click;div_obj.className=this.css_formbutton_off;};form_functions.prototype.form_button_eval_click=function(){try{eval(_form_functions.form_eval_divs[this.id]);}catch(error){}};form_functions.prototype.form_button_link_click=function(){try{window.location=_form_functions.form_link_divs[this.id];}catch(error){}};form_functions.prototype.form_button_submit=function(){try{var field_obj=document.getElementById('field--x--'+this.id);field_obj.value=_form_functions.form_button_divs[this.id];}catch(error){}_form_functions.form_submit();_form_functions.obj_form.submit();};form_functions.prototype.form_button_mouseover=function(){this.className=_form_functions.css_formbutton_on;};form_functions.prototype.form_button_mouseout=function(){this.className=_form_functions.css_formbutton_off;};form_functions.prototype.form_event_edited=function(){_form_functions.form_edited=1;};form_functions.prototype.form_submit=function(){var retval=true;if(_form_functions.form_edited){}if(_form_functions.form_onsubmit_saved){eval('tmpsubmit = '+_form_functions.form_onsubmit_saved);retval=tmpsubmit();}return retval;};form_functions.prototype.document_onblur=function(){if(_form_functions.form_edited){}}; diff --git a/upload/skin_acp/clientscripts/ipd_tab_factory.js b/upload/skin_acp/clientscripts/ipd_tab_factory.js new file mode 100644 index 00000000..5efa8fa1 --- /dev/null +++ b/upload/skin_acp/clientscripts/ipd_tab_factory.js @@ -0,0 +1 @@ +var _tab_factory;function tab_factory(){this.css_tab_off='taboff';this.css_tab_on='tabon';this.string_tab_id='tabtab';this.string_tab_pane='tabpane';this.stored_tabs=new Array();this.stored_panes=new Array();}function tab_factory_init_tabs(){}tab_factory.prototype.init_tabs=function(){var divs=document.getElementsByTagName('DIV');var divcount=0;_tab_factory=this;for(var i=0;i<=divs.length;i++){try{if(!divs[i].id){continue;}}catch(error){continue;}var divid=divs[i].id;var divname=divid.replace( /^(.*)-(\d+)$/,"$1");var divnum=this.get_id_from_text(divs[i].id);if(divname==this.string_tab_id){this.stored_tabs[divnum]=divs[i];divs[i].style.cursor='pointer';divs[i].onclick=this.toggle_tabs;this.stored_panes[divnum]=document.getElementById(this.string_tab_pane+'-'+divnum);if(divcount==0){divs[i].className=this.css_tab_on;divs[i].style.display='block';this.stored_panes[divnum].style.display='block';}else{divs[i].className=this.css_tab_off;divs[i].style.display='block';this.stored_panes[divnum].style.display='none';}divcount++;}}};tab_factory.prototype.toggle_tabs=function(event){var tabid=_tab_factory.get_id_from_text(this.id);for(var i in _tab_factory.stored_tabs){if(i==tabid){_tab_factory.stored_tabs[i].style.display='block';_tab_factory.stored_tabs[i].className=_tab_factory.css_tab_on;_tab_factory.stored_panes[i].style.display='block';}else{_tab_factory.stored_tabs[i].style.display='block';_tab_factory.stored_tabs[i].className=_tab_factory.css_tab_off;_tab_factory.stored_panes[i].style.display='none';}}ipsclass.cancel_bubble(event);return false;};tab_factory.prototype.get_id_from_text=function(id){return id.replace( /.*\-(\d+)/,"$1");}; diff --git a/upload/skin_acp/clientscripts/ipd_titleedit.js b/upload/skin_acp/clientscripts/ipd_titleedit.js new file mode 100644 index 00000000..f74391e8 --- /dev/null +++ b/upload/skin_acp/clientscripts/ipd_titleedit.js @@ -0,0 +1 @@ +var _this;function titleedit(){this.var_ajax_url=null;this.var_click_delay=1200;this.var_link_id_text='pages-link';this.var_span_id_text='pages-page';this.var_div_main='pages-main';this.lang_click_and_hold=null;this._tid_timeout=null;this._new_text=null;this._tid_links_init=0;this._tid_date=new Array();this._span_contents=new Array();this._link_contents=new Array();this.UNEDITABLES=new Array();this.uneditable_id_text='titleedit-uneditable';this.div_main_wrap=document.getElementById(this.var_div_main);this.edit_box='text';this.edit_box_ta_rows=5;this.edit_box_ta_cols=45;this.var_real_id_text='';}titleedit.prototype.init=function(){var pagelinks=document.getElementsByTagName('*');_this=this;for(var i=0;i<=pagelinks.length;i++){try{if(!pagelinks[i].id){continue;}}catch(e){continue;}var linkid=pagelinks[i].id;var linkname=linkid.replace( /^(.*)-(\d+)$/,"$1");var linknum=linkid.replace( /^(.*)-(\d+)$/,"$2");if(linkname==this.var_link_id_text){if(this.UNEDITABLES[linknum]){pagelinks[i].onmouseover=this.title_mouseover;pagelinks[i].onmouseout=this.title_mouseout;}else{pagelinks[i].onmousedown=this.title_mousedown;pagelinks[i].onmouseup=this.title_mouseup;if(!this._tid_links_init){pagelinks[i].title=pagelinks[i].title?pagelinks[i].title+". "+this.lang_click_and_hold:this.lang_click_and_hold;}}}}this._tid_links_init=1;};titleedit.prototype.title_mouseover=function(event){event=ipsclass.cancel_bubble(event,true);var tid=_this.get_tid_from_id(this.id);var check_for_id=_this.UNEDITABLES[tid];if(check_for_id){var alert_object=null;try{alert_object=document.getElementById(_this.uneditable_id_text);}catch(error){}if(alert_object){var root_obj=document.getElementById(_this.var_link_id_text+'-'+check_for_id);if(is_safari){root_obj.style.position='relative';}alert_object.style.top=ipsclass.get_obj_toppos(root_obj)-4+'px';alert_object.style.left=ipsclass.get_obj_leftpos(root_obj)+5+root_obj.offsetWidth+'px';alert_object.style.position='absolute';alert_object.style.display='';}return false;}};titleedit.prototype.title_mouseout=function(event){event=ipsclass.cancel_bubble(event,true);var tid=_this.get_tid_from_id(this.id);var check_for_id=_this.UNEDITABLES[tid];if(check_for_id){var alert_object=null;try{alert_object=document.getElementById(_this.uneditable_id_text);}catch(error){}if(alert_object){alert_object.style.display='none';}return false;}};titleedit.prototype.title_mousedown=function(event){event=ipsclass.cancel_bubble(event,true);var tid=_this.get_tid_from_id(this.id);_this._tid_date[tid]=_this.get_time_now();_this._tid_timeout=setTimeout("_this.link_event_timer("+tid+")",5);};titleedit.prototype.link_event_timer=function(tid){var timenow=this.get_time_now();if(timenow>0&&this._tid_date[tid]>0&&((timenow-this._tid_date[tid])>this.var_click_delay)){this._tid_date[tid]=0;this.span_to_input(tid);return false;}if(this._tid_date[tid]>0){this._tid_timeout=setTimeout("_this.link_event_timer("+tid+")",5);}else{return false;}};titleedit.prototype.span_to_input=function(tid){if(!use_enhanced_js){return false;}this._span_contents[tid]=document.getElementById(this.var_span_id_text+'-'+tid).innerHTML;this._link_contents[tid]=document.getElementById(this.var_link_id_text+'-'+tid).innerHTML;var value='';if(this.var_real_id_text){value=document.getElementById(this.var_real_id_text+'-'+tid).innerHTML;}else{value=this._link_contents[tid];}if(this.edit_box=='text'){value=value.replace( /"/g,'"');document.getElementById(this.var_span_id_text+'-'+tid).innerHTML='';}else{value=value.replace( /<\/textarea>/g,'</textarea>');document.getElementById(this.var_span_id_text+'-'+tid).innerHTML='';}document.getElementById('edit-'+tid).focus();return false;};titleedit.prototype.title_mouseup=function(event){event=ipsclass.cancel_bubble(event,true);var tid=_this.get_tid_from_id(this.id);_this._tid_date[tid]=0;};titleedit.prototype.edit_blur=function(tid,type){_this._new_text=document.getElementById('edit-'+tid).value;if(_this._new_text!=""){_this.title_save(tid,_this._new_text,type);}};titleedit.prototype.edit_keypress=function(evt,tid,type){evt=(evt)?evt:window.event;_this._new_text=document.getElementById('edit-'+tid).value;if(_this.edit_box=='text'){if((evt.keyCode==13||evt.keyCode==3)&&_this._new_text!=""){_this.title_save(tid,_this._new_text,type);}}};titleedit.prototype.title_save=function(tid,new_text,type){var donotedit=0;if(new_text==_this._span_contents[tid]){donotedit=1;}document.getElementById(_this.var_span_id_text+'-'+tid).innerHTML=_this._span_contents[tid];document.getElementById(_this.var_link_id_text+'-'+tid).innerHTML=new_text;if(_this.var_real_id_text){document.getElementById(_this.var_real_id_text+'-'+tid).innerHTML=new_text;}_this.init();if(donotedit){return false;}var fields=new Array();fields['tid']=tid;fields['name']=new_text;fields['md5check']=ipb_md5_check;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){xmlobj.show_loading("Saving...");return;}xmlobj.hide_loading();var returned=xmlobj.xmlhandler.responseText;if(returned.match( /(0|-|\=)<\/null>/)){alert("Error occured, not saved");}};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(_this.var_ajax_url,'POST',xmlobj.format_for_post(fields));return false;};titleedit.prototype.get_time_now=function(){var mydate=new Date();return mydate.getTime();};titleedit.prototype.get_tid_from_id=function(id){return id.replace( /.*\-(\d+)/,"$1");};titleedit.prototype.add_id_to_uneditables=function(tid){this.UNEDITABLES[tid]=tid;}; diff --git a/upload/skin_acp/clientscripts/ips_calendar_us.js b/upload/skin_acp/clientscripts/ips_calendar_us.js new file mode 100644 index 00000000..8307893d --- /dev/null +++ b/upload/skin_acp/clientscripts/ips_calendar_us.js @@ -0,0 +1 @@ +var NUM_CENTYEAR=30;var BUL_TIMECOMPONENT=false;var BUL_YEARSCROLL=true;var calendars=[];var RE_NUM= /^\-?\d+$/;function calendar_us(obj_target){this.gen_date=cal_gen_date2;this.gen_time=cal_gen_time2;this.gen_tsmp=cal_gen_tsmp2;this.prs_date=cal_prs_date2;this.prs_time=cal_prs_time2;this.prs_tsmp=cal_prs_tsmp2;this.popup=cal_popup2;if(!obj_target){return cal_error("Error calling the calendar: no target control specified");}if(obj_target.value==null){return cal_error("Error calling the calendar: parameter specified is not valid target control");}this.target=obj_target;this.time_comp=BUL_TIMECOMPONENT;this.year_scroll=BUL_YEARSCROLL;this.id=calendars.length;calendars[this.id]=this;}function cal_popup2(str_datetime,already_opened){this.dt_current=this.prs_tsmp(str_datetime?str_datetime:this.target.value);if(!this.dt_current){return;}if(already_opened){calendar_url='calendar.html';}else{calendar_url=ipb_skin_url+'/calendar.html';}var obj_calwindow=window.open(calendar_url+'?datetime='+this.dt_current.valueOf()+'&id='+this.id,'Calendar','width=200,height='+(this.time_comp?215:190)+',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes');obj_calwindow.opener=window;obj_calwindow.focus();}function cal_gen_tsmp2(dt_datetime){return(this.gen_date(dt_datetime)+' '+this.gen_time(dt_datetime));}function cal_gen_date2(dt_datetime){return((dt_datetime.getMonth()<9?'0':'')+(dt_datetime.getMonth()+1)+"/"+(dt_datetime.getDate()<10?'0':'')+dt_datetime.getDate()+"/"+dt_datetime.getFullYear());}function cal_gen_time2(dt_datetime){return((dt_datetime.getHours()<10?'0':'')+dt_datetime.getHours()+":"+(dt_datetime.getMinutes()<10?'0':'')+(dt_datetime.getMinutes())+":"+(dt_datetime.getSeconds()<10?'0':'')+(dt_datetime.getSeconds()));}function cal_prs_tsmp2(str_datetime){if(!str_datetime){return(new Date());}if(RE_NUM.exec(str_datetime)){return new Date(str_datetime);}var arr_datetime=str_datetime.split(' ');return this.prs_time(arr_datetime[1],this.prs_date(arr_datetime[0]));}function cal_prs_date2(str_date){var arr_date=str_date.split('/');if(arr_date.length!=3)return alert("Invalid date format: '"+str_date+"'.\nFormat accepted is dd-mm-yyyy.");if(!arr_date[1])return alert("Invalid date format: '"+str_date+"'.\nNo day of month value can be found.");if(!RE_NUM.exec(arr_date[1]))return alert("Invalid day of month value: '"+arr_date[1]+"'.\nAllowed values are unsigned integers.");if(!arr_date[0])return alert("Invalid date format: '"+str_date+"'.\nNo month value can be found.");if(!RE_NUM.exec(arr_date[0]))return alert("Invalid month value: '"+arr_date[0]+"'.\nAllowed values are unsigned integers.");if(!arr_date[2])return alert("Invalid date format: '"+str_date+"'.\nNo year value can be found.");if(!RE_NUM.exec(arr_date[2]))return alert("Invalid year value: '"+arr_date[2]+"'.\nAllowed values are unsigned integers.");var dt_date=new Date();dt_date.setDate(1);if(arr_date[0]<1||arr_date[0]>12)return alert("Invalid month value: '"+arr_date[0]+"'.\nAllowed range is 01-12.");dt_date.setMonth(arr_date[0]-1);if(arr_date[2]<100)arr_date[2]=Number(arr_date[2])+(arr_date[2] -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/acp_loaders/acp_admin.php b/upload/sources/acp_loaders/acp_admin.php index dfe06325..b9b11d75 100644 --- a/upload/sources/acp_loaders/acp_admin.php +++ b/upload/sources/acp_loaders/acp_admin.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CP "MYCP" PAGE CLASS @@ -30,7 +22,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -52,7 +44,7 @@ class acp_admin * * @var string */ - var $section_title = "Администрирование"; + var $section_title = "Admin"; /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -69,7 +61,7 @@ class acp_admin function auto_run() { - $this->ipsclass->html_title = "IPB: Администрирование"; + $this->ipsclass->html_title = "IPB: Administration"; $another_choice = array( 'idx' => 'index', @@ -83,10 +75,12 @@ class acp_admin 'emailerror'=> 'emailerror', 'components'=> 'components', 'acpperms' => 'acppermissions', + 'diag' => 'diagnostics', + 'loginlog' => 'logs_login', 'security' => 'security', ); - if ( ! $another_choice[ $this->ipsclass->input['act'] ] ) + if ( !isset($this->ipsclass->input['act']) OR !isset($another_choice[ $this->ipsclass->input['act'] ]) OR !$another_choice[ $this->ipsclass->input['act'] ] ) { $this->ipsclass->input['act'] = 'idx'; } @@ -114,11 +108,6 @@ class acp_admin $runmeagain->ipsclass =& $this->ipsclass; $runmeagain->auto_run(); } - - - - - } diff --git a/upload/sources/acp_loaders/acp_components.php b/upload/sources/acp_loaders/acp_components.php index e820a8c9..6dc6c600 100644 --- a/upload/sources/acp_loaders/acp_components.php +++ b/upload/sources/acp_loaders/acp_components.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CP "MYCP" PAGE CLASS @@ -30,7 +22,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -54,7 +46,7 @@ class acp_components function auto_run() { - $this->ipsclass->html_title = "IPB: Компоненты"; + $this->ipsclass->html_title = "IPB: Components"; //-------------------------------- // Get info from DB (Special case) @@ -130,9 +122,11 @@ class acp_components if ( $this->ipsclass->input['code'] ) { + $this->ipsclass->input['code'] = $this->ipsclass->txt_alphanumerical_clean( $this->ipsclass->input['code'] ); + if ( is_array( $menu_data[ $this->ipsclass->input['act'] ] ) and count( $menu_data[ $this->ipsclass->input['act'] ] ) ) { - foreach( $menu_data[ $this->ipsclass->input['act'] ] as $oompaloopma => $menu_array ) + foreach( $menu_data[ $this->ipsclass->input['act'] ] as $menu_array ) { if ( preg_match( "/code={$this->ipsclass->input['code']}(&|$)/i", $menu_array['menu_url'] ) ) { diff --git a/upload/sources/acp_loaders/acp_content.php b/upload/sources/acp_loaders/acp_content.php index fc4dd954..97b57bfb 100644 --- a/upload/sources/acp_loaders/acp_content.php +++ b/upload/sources/acp_loaders/acp_content.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CP "MYCP" PAGE CLASS @@ -30,7 +22,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -54,7 +46,7 @@ class acp_content function auto_run() { - $this->ipsclass->html_title = "IPB: Управление контентом"; + $this->ipsclass->html_title = "IPB: Content Management"; $another_choice = array( 'forum' => 'forums', diff --git a/upload/sources/acp_loaders/acp_help.php b/upload/sources/acp_loaders/acp_help.php new file mode 100644 index 00000000..835b1a95 --- /dev/null +++ b/upload/sources/acp_loaders/acp_help.php @@ -0,0 +1,89 @@ + CP "MYCP" PAGE CLASS +| > Script written by Matt Mecham +| > Date started: Wed. 18th August 2004 +| ++--------------------------------------------------------------------------- +*/ + +if ( ! defined( 'IN_ACP' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + + +class acp_help +{ + # Globals + var $ipsclass; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function acp_content() + { + } + + /*-------------------------------------------------------------------------*/ + // AUTO RUN + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + $this->ipsclass->html_title = "IPB: Content Management"; + + $another_choice = array( + 'diag' => 'diagnostics', + 'support' => 'support', + ); + + if ( ! isset( $another_choice[ $this->ipsclass->input['act'] ] ) ) + { + $this->ipsclass->input['act'] = 'support'; + } + + $this->ipsclass->form_code = 'section=help&act=' . $this->ipsclass->input['act']; + $this->ipsclass->form_code_js = 'section=help&act=' . $this->ipsclass->input['act']; + $this->ipsclass->section_code = 'help'; + + //----------------------------------------- + // Quick perm check + //----------------------------------------- + + $this->ipsclass->admin->cp_permission_check( $this->ipsclass->section_code.'|' ); + + //----------------------------------------- + // Require and run (again) + //----------------------------------------- + + require_once( ROOT_PATH.'sources/action_admin/'.$another_choice[ $this->ipsclass->input['act'] ].'.php' ); + $constructor = 'ad_'.$another_choice[ $this->ipsclass->input['act'] ]; + $runmeagain = new $constructor; + $runmeagain->ipsclass =& $this->ipsclass; + $runmeagain->auto_run(); + } + + + + + +} + + +?> \ No newline at end of file diff --git a/upload/sources/acp_loaders/acp_lookandfeel.php b/upload/sources/acp_loaders/acp_lookandfeel.php index d90cd91f..db6b581f 100644 --- a/upload/sources/acp_loaders/acp_lookandfeel.php +++ b/upload/sources/acp_loaders/acp_lookandfeel.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CP "MYCP" PAGE CLASS @@ -30,7 +22,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -54,7 +46,7 @@ class acp_lookandfeel function auto_run() { - $this->ipsclass->html_title = "IPB: Внешний вид"; + $this->ipsclass->html_title = "IPB: Look & Feel"; $another_choice = array( 'wrap' => 'skin_wrappers', diff --git a/upload/sources/acp_loaders/acp_pages_admin.php b/upload/sources/acp_loaders/acp_pages_admin.php index a9c981e9..43eba1d3 100644 --- a/upload/sources/acp_loaders/acp_pages_admin.php +++ b/upload/sources/acp_loaders/acp_pages_admin.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CONTROL PANEL PAGES FILE @@ -40,56 +32,57 @@ // $PAGES[ $cat_id ][$page_id][3] = URL type: 1 = Board URL 0 = ACP URL // $PAGES[ $cat_id ][$page_id][4] = Item icon: 1= redirect 0 = Normal -$CATS[] = array( 'Центр безопасности' ); +$CATS[] = array( 'Security Center' ); $PAGES[] = array( - 1 => array( 'Проверка антивирусом' , 'section=admin&act=security&code=virus_check'), - 2 => array( 'Глубокое сканирование' , 'section=admin&act=security&code=deep_scan' ), - 3 => array( 'Список всех администраторов', 'section=admin&act=security&code=list_admins' ), + 1 => array( 'Security Center' , 'section=admin&act=security' ), + 2 => array( 'List All Administrators', 'section=admin&act=security&code=list_admins' ), ); -$CATS[] = array( 'Компоненты' ); +$CATS[] = array( 'Components' ); $PAGES[] = array( - 1 => array( 'Управление компонентами' , 'section=admin&act=components' ), - 2 => array( 'Новый компонент' , 'section=admin&act=components&code=component_add' ), + 1 => array( 'Manage Components' , 'section=admin&act=components' ), + 2 => array( 'Register New Component' , 'section=admin&act=components&code=component_add' ), ); -$CATS[] = array( 'Центр статистики' ); +$CATS[] = array( 'Statistic Center' ); $PAGES[] = array( - 1 => array( 'Статистика регистраций' , 'section=admin&act=stats&code=reg' ), - 2 => array( 'Статистика новых тем' , 'section=admin&act=stats&code=topic' ), - 3 => array( 'Статистика сообщений' , 'section=admin&act=stats&code=post' ), - 4 => array( 'Статистика личн. сообщ.' , 'section=admin&act=stats&code=msg' ), - 5 => array( 'Статистика просмотров тем' , 'section=admin&act=stats&code=views' ), + 1 => array( 'Registration Stats' , 'section=admin&act=stats&code=reg' ), + 2 => array( 'New Topic Stats' , 'section=admin&act=stats&code=topic' ), + 3 => array( 'Post Stats' , 'section=admin&act=stats&code=post' ), + 4 => array( 'Personal Message' , 'section=admin&act=stats&code=msg' ), + 5 => array( 'Topic Views' , 'section=admin&act=stats&code=views' ), ); -$CATS[] = array( 'Ограничения доступа в админцентр' ); +$CATS[] = array( 'ACP Restrictions' ); $PAGES[] = array( - 1 => array( 'Управление ограничениями' , 'section=admin&act=acpperms&code=acpp_list' ), + 1 => array( 'Manage Restrictions' , 'section=admin&act=acpperms&code=acpp_list' ), ); -$CATS[] = array( 'Управление SQL' ); + +$CATS[] = array( 'SQL Management' ); $PAGES[] = array( - 1 => array( 'Утилита' , 'section=admin&act=sql' ), - 2 => array( 'Резервная копия' , 'section=admin&act=sql&code=backup' ), - 3 => array( 'Информация', 'section=admin&act=sql&code=runtime' ), - 4 => array( 'Системные переменные' , 'section=admin&act=sql&code=system' ), - 5 => array( 'Процессы' , 'section=admin&act=sql&code=processes' ), + 1 => array( 'SQL Toolbox' , 'section=admin&act=sql' ), + 2 => array( 'SQL Back Up' , 'section=admin&act=sql&code=backup' ), + 3 => array( 'SQL Runtime Info', 'section=admin&act=sql&code=runtime' ), + 4 => array( 'SQL System Vars' , 'section=admin&act=sql&code=system' ), + 5 => array( 'SQL Processes' , 'section=admin&act=sql&code=processes' ), ); -$CATS[] = array( 'Журналы операций' ); +$CATS[] = array( 'Board Logs' ); $PAGES[] = array( - 1 => array( 'Действия модераторов' , 'section=admin&act=modlog' ), - 2 => array( 'Действия администраторов' , 'section=admin&act=adminlog' ), - 3 => array( 'E-mail отправления' , 'section=admin&act=emaillog' ), - 4 => array( 'Журнал e-mail ошибок', 'section=admin&act=emailerror' ), - 5 => array( 'Действия поисковых ботов' , 'section=admin&act=spiderlog' ), - 6 => array( 'Журнал предупреждений' , 'section=admin&act=warnlog' ), + 1 => array( 'View Moderator Logs' , 'section=admin&act=modlog' ), + 2 => array( 'View Admin Logs' , 'section=admin&act=adminlog' ), + 3 => array( 'View Email Logs' , 'section=admin&act=emaillog' ), + 4 => array( 'View Email Error Logs', 'section=admin&act=emailerror' ), + 5 => array( 'View Bot Logs' , 'section=admin&act=spiderlog' ), + 6 => array( 'View Warn Logs' , 'section=admin&act=warnlog' ), + 7 => array( 'View ACP Log In Logs' , 'section=admin&act=loginlog' ), ); diff --git a/upload/sources/acp_loaders/acp_pages_components.php b/upload/sources/acp_loaders/acp_pages_components.php index ac94fdd3..148203d8 100644 --- a/upload/sources/acp_loaders/acp_pages_components.php +++ b/upload/sources/acp_loaders/acp_pages_components.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CONTROL PANEL (COMPONENTS) PAGES FILE @@ -33,6 +25,11 @@ // THIS PAGE CLASS: Generate menu from DB //=========================================================================== +if ( ! defined( 'IN_ACP' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} global $ipsclass; @@ -43,7 +40,7 @@ $PAGES = array(); // Get info from DB //-------------------------------- -foreach( $ipsclass->menu_components as $ix => $r ) +foreach( $ipsclass->menu_components as $r ) { //-------------------------------- // Process data @@ -53,18 +50,18 @@ foreach( $ipsclass->menu_components as $ix => $r ) $tmp_pages = array(); //-------------------------------- - // First item is title... - //-------------------------------- - - $CATS[] = array( $r['com_title'] ); - - //-------------------------------- - // Work through rest + // Do we have any menu links? //-------------------------------- if ( is_array( $menu_data ) and count( $menu_data ) ) { - foreach( $menu_data as $id => $menu ) + //-------------------------------- + // First item is title... + //-------------------------------- + + $CATS[] = array( $r['com_title'] ); + + foreach( $menu_data as $menu ) { if ( $menu['menu_text'] AND $menu['menu_url'] ) { @@ -78,9 +75,9 @@ foreach( $ipsclass->menu_components as $ix => $r ) } } } + + $PAGES[] = $tmp_pages; } - - $PAGES[] = $tmp_pages; } ?> \ No newline at end of file diff --git a/upload/sources/acp_loaders/acp_pages_content.php b/upload/sources/acp_loaders/acp_pages_content.php index 17f610f3..ff8c2592 100644 --- a/upload/sources/acp_loaders/acp_pages_content.php +++ b/upload/sources/acp_loaders/acp_pages_content.php @@ -1,117 +1,111 @@ - CONTROL PANEL PAGES FILE -| > Script written by Matt Mecham -| > Date started: Fri 8th April 2005 (12:07) -| -+--------------------------------------------------------------------------- -*/ - -//=========================================================================== -// Simple library that holds all the links for the admin cp -//=========================================================================== - -// CAT_ID => array( PAGE_ID => (PAGE_NAME, URL ) ) - -// $PAGES[ $cat_id ][$page_id][0] = Page name -// $PAGES[ $cat_id ][$page_id][1] = Url -// $PAGES[ $cat_id ][$page_id][2] = Look for folder before showing -// $PAGES[ $cat_id ][$page_id][3] = URL type: 1 = Board URL 0 = ACP URL -// $PAGES[ $cat_id ][$page_id][4] = Item icon: 1= redirect 0 = Normal - -$CATS[] = array( 'Управление форумами' ); - -$PAGES[] = array( - // 1 => array( 'Создать новый форум' , 'section=content&act=forum&code=new' ), - 2 => array( 'Управление форумами' , 'section=content&act=forum' ), - 3 => array( 'Маски доступа' , 'section=content&act=group&code=permsplash'), - // 6 => array( 'Модераторы' , 'section=content&act=mod' ), - 7 => array( 'Мульти-модерация тем', 'section=content&act=multimod' ), - 8 => array( 'Настройки корзины' , 'section=tools&act=op&code=findsetting&conf_title_keyword=trashcansetup', '', 0, 1 ), - ); - -$CATS[] = array( 'Пользователи и группы' ); - -$PAGES[] = array( - 1 => array ( 'Управление пользовател.' , 'section=content&act=mem&code=search' ), - 2 => array ( 'Создать пользователя' , 'section=content&act=mem&code=add' ), - 6 => array ( 'Управление званиями' , 'section=content&act=mem&code=title'), - 7 => array ( 'Управление группами' , 'section=content&act=group' ), - 8 => array ( 'Управление неактивиров.' , 'section=content&act=mem&code=mod' ), - 9 => array ( 'Доп. поля профиля' , 'section=content&act=field' ), - 11 => array ( 'IP утилиты' , 'section=content&act=mtools' ), - 12 => array ( 'Профили пользователей' , 'section=tools&act=op&code=findsetting&conf_title_keyword=userprofiles', '', 0, 1 ), - ); - -$CATS[] = array( 'Подписки' ); - -$PAGES[] = array( - 1 => array( 'Manage Payment Gateways' , 'section=content&act=msubs&code=index-gateways' ), - 2 => array( 'Manage Packages' , 'section=content&act=msubs&code=index-packages' ), - 3 => array( 'Manage Transactions' , 'section=content&act=msubs&code=index-tools' ), - 4 => array( 'Manage Currencies' , 'section=content&act=msubs&code=currency' , ), - 5 => array( 'Manually Add Transaction' , 'section=content&act=msubs&code=addtransaction' ), - 6 => array( 'Install Payment Gateways' , 'section=content&act=msubs&code=install-index' ), - 9 => array( 'Subscription Settings' , 'section=tools&act=op&code=findsetting&key='.urlencode('subscriptionsmanager'), '', 0, 1 ), - - ); - -$CATS[] = array( 'Календари' ); - -$PAGES[] = array( - 1 => array( 'Менеджер календарей' , 'section=content&act=calendars&code=calendar_list' ), - 2 => array( 'Добавить новый календарь' , 'section=content&act=calendars&code=calendar_add' ), - ); - -$CATS[] = array( 'Управление RSS' ); - -$PAGES[] = array( - 1 => array( 'RSS Экспорт' , 'section=content&act=rssexport&code=rssexport_overview' ), - 2 => array( 'RSS Импорт' , 'section=content&act=rssimport&code=rssimport_overview' ), - ); - -$CATS[] = array( 'Дополнительные BB-коды' ); - -$PAGES[] = array( - 1 => array( 'Дополнительные BB-коды' , 'section=content&act=bbcode&code=bbcode' ), - 2 => array( 'Добавить новый BB-код' , 'section=content&act=bbcode&code=bbcode_add' ), - ); - -$CATS[] = array( 'Фильтры' ); - -$PAGES[] = array( - 1 => array( 'Нецензурные слова', 'section=content&act=babw&code=badword' ), - 2 => array( 'Блокировка (ban)' , 'section=content&act=babw&code=ban' ), - ); - -$CATS[] = array( 'Прикрепляемые файлы' ); - -$PAGES[] = array( - 1 => array( 'Типы прикр. файлов' , 'section=content&act=attach&code=types' ), - 2 => array( 'Статистика прикр. файлов' , 'section=content&act=attach&code=stats' ), - 3 => array( 'Поиск прикр. файлов' , 'section=content&act=attach&code=search' ), - ); - - + CONTROL PANEL PAGES FILE +| > Script written by Matt Mecham +| > Date started: Fri 8th April 2005 (12:07) +| ++--------------------------------------------------------------------------- +*/ + +//=========================================================================== +// Simple library that holds all the links for the admin cp +//=========================================================================== + +// CAT_ID => array( PAGE_ID => (PAGE_NAME, URL ) ) + +// $PAGES[ $cat_id ][$page_id][0] = Page name +// $PAGES[ $cat_id ][$page_id][1] = Url +// $PAGES[ $cat_id ][$page_id][2] = Look for folder before showing +// $PAGES[ $cat_id ][$page_id][3] = URL type: 1 = Board URL 0 = ACP URL +// $PAGES[ $cat_id ][$page_id][4] = Item icon: 1= redirect 0 = Normal + +$CATS[] = array( 'Forum Control' ); + +$PAGES[] = array( + 1 => array( 'Manage Forums' , 'section=content&act=forum' ), + 2 => array( 'Add New Category' , 'section=content&act=forum&code=new&type=category' ), + 3 => array( 'Add New Forum' , 'section=content&act=forum&code=new&type=forum' ), + 4 => array( 'Manage Permissions' , 'section=content&act=group&code=permsplash'), + // 6 => array( 'Moderators' , 'section=content&act=mod' ), + 7 => array( 'Topic Multi-Moderation' , 'section=content&act=multimod' ), + 8 => array( 'Trash Can Set-Up' , 'section=tools&act=op&code=findsetting&key=trashcanset-up', '', 0, 1 ), + ); + +$CATS[] = array( 'Users and Groups' ); + +$PAGES[] = array( + 1 => array ( 'Manage Members' , 'section=content&act=mem&code=search' ), + 2 => array ( 'Add New Member' , 'section=content&act=mem&code=add' ), + 3 => array ( 'Manage Ranks' , 'section=content&act=mem&code=title'), + 4 => array ( 'Manage User Groups' , 'section=content&act=group' ), + 5 => array ( 'Manage Validating' , 'section=content&act=mtools&code=mod' ), + 6 => array ( 'Manage Locked' , 'section=content&act=mtools&code=lock' ), + 9 => array ( 'Custom Profile Fields' , 'section=content&act=field' ), + 11 => array ( 'IP Member Tools' , 'section=content&act=mtools' ), + 12 => array ( 'Member Settings' , 'section=tools&act=op&code=findsetting&key=userprofiles', '', 0, 1 ), + ); + +$CATS[] = array( 'Subscriptions' ); + +$PAGES[] = array( + 1 => array( 'Manage Payment Gateways' , 'section=content&act=msubs&code=index-gateways' ), + 2 => array( 'Manage Packages' , 'section=content&act=msubs&code=index-packages' ), + 3 => array( 'Manage Transactions' , 'section=content&act=msubs&code=index-tools' ), + 4 => array( 'Manage Currencies' , 'section=content&act=msubs&code=currency' , ), + 5 => array( 'Manually Add Transaction' , 'section=content&act=msubs&code=addtransaction' ), + 6 => array( 'Install Payment Gateways' , 'section=content&act=msubs&code=install-index' ), + 9 => array( 'Subscription Settings' , 'section=tools&act=op&code=findsetting&key='.urlencode('subscriptionsmanager'), '', 0, 1 ), + + ); + +$CATS[] = array( 'Calendars' ); + +$PAGES[] = array( + 1 => array( 'Calendar Manager' , 'section=content&act=calendars&code=calendar_list' ), + 2 => array( 'Add New Calendar' , 'section=content&act=calendars&code=calendar_add' ), + ); + +$CATS[] = array( 'RSS Management' ); + +$PAGES[] = array( + 1 => array( 'RSS Export Manager' , 'section=content&act=rssexport&code=rssexport_overview' ), + 2 => array( 'RSS Import Manager' , 'section=content&act=rssimport&code=rssimport_overview' ), + ); + +$CATS[] = array( 'Custom BBCode' ); + +$PAGES[] = array( + 1 => array( 'Custom BBCode Manager' , 'section=content&act=bbcode&code=bbcode' ), + 2 => array( 'Add New BBCode' , 'section=content&act=bbcode&code=bbcode_add' ), + ); + +$CATS[] = array( 'Word & Ban Filters' ); + +$PAGES[] = array( + 1 => array( 'Manage Badword Filters', 'section=content&act=babw&code=badword' ), + 2 => array( 'Manage Ban Filters' , 'section=content&act=babw&code=ban' ), + ); + +$CATS[] = array( 'Attachments' ); + +$PAGES[] = array( + 1 => array( 'Attachment Types' , 'section=content&act=attach&code=types' ), + 2 => array( 'Attachment Stats' , 'section=content&act=attach&code=stats' ), + 3 => array( 'Attachment Search' , 'section=content&act=attach&code=search' ), + ); + + ?> \ No newline at end of file diff --git a/upload/sources/acp_loaders/acp_pages_help.php b/upload/sources/acp_loaders/acp_pages_help.php new file mode 100644 index 00000000..8bbac59f --- /dev/null +++ b/upload/sources/acp_loaders/acp_pages_help.php @@ -0,0 +1,65 @@ + CONTROL PANEL (COMPONENTS) PAGES FILE +| > Script written by Matt Mecham +| > Date started: Tue. 15th February 2005 +| ++--------------------------------------------------------------------------- +*/ + +//=========================================================================== +// Simple library that holds all the links for the admin cp +// THIS PAGE CLASS: Generate menu from DB +//=========================================================================== + +// CAT_ID => array( PAGE_ID => (PAGE_NAME, URL ) ) + +// $PAGES[ $cat_id ][$page_id][0] = Page name +// $PAGES[ $cat_id ][$page_id][1] = Url +// $PAGES[ $cat_id ][$page_id][2] = Look for folder before showing +// $PAGES[ $cat_id ][$page_id][3] = URL type: 1 = Board URL 0 = ACP URL +// $PAGES[ $cat_id ][$page_id][4] = Item icon: 1= redirect 0 = Normal +// $PAGES[ $cat_id ][$page_id][5] = Regular link - open exact link in new window + +global $ipsclass; + +$CATS = array(); +$PAGES = array(); + +$CATS[] = array( 'Help & Support' ); + +$PAGES[] = array( + 0 => array( 'Submit Support Ticket' , 'section=help&act=support&code=support' ), + 1 => array( 'IPB Knowledgebase' , 'section=help&act=support&code=kb' ), + 2 => array( 'IPS Beyond - Resource Center' , 'section=help&act=support&code=ipsbeyond' ), + 3 => array( 'Contact IPS' , 'section=help&act=support&code=contact' ), + 4 => array( 'Feature Suggestions' , 'section=help&act=support&code=features' ), + 5 => array( 'Bug Reports' , 'section=help&act=support&code=bugs' ), + ); + +$CATS[] = array( 'Diagnostics' ); + +$PAGES[] = array( + 0 => array( 'System Overview' , "section=help&act=diag' onclick='xmlobj = new ajax_request();xmlobj.show_loading()'" ), + //2 => array( 'Version Checker' , "section=help&act=diag&code=fileversions' onclick='xmlobj = new ajax_request();xmlobj.show_loading()'" ), + 3 => array( 'Database Checker' , "section=help&act=diag&code=dbchecker' onclick='xmlobj = new ajax_request();xmlobj.show_loading()'" ), + 4 => array( 'Database Index Checker' , "section=help&act=diag&code=dbindex' onclick='xmlobj = new ajax_request();xmlobj.show_loading()'" ), + 5 => array( 'File Permissions Checker' , "section=help&act=diag&code=filepermissions' onclick='xmlobj = new ajax_request();xmlobj.show_loading()'" ), + 6 => array( 'Whitespace Checker' , "section=help&act=diag&code=whitespace' onclick='xmlobj = new ajax_request();xmlobj.show_loading()'" ), + 7 => array( 'Security Center' , "section=admin&act=security", 0, 0, 1 ), + ); + +?> \ No newline at end of file diff --git a/upload/sources/acp_loaders/acp_pages_lookandfeel.php b/upload/sources/acp_loaders/acp_pages_lookandfeel.php index d9d294d5..e16e5964 100644 --- a/upload/sources/acp_loaders/acp_pages_lookandfeel.php +++ b/upload/sources/acp_loaders/acp_pages_lookandfeel.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CONTROL PANEL PAGES FILE @@ -40,29 +32,29 @@ // $PAGES[ $cat_id ][$page_id][3] = URL type: 1 = Board URL 0 = ACP URL // $PAGES[ $cat_id ][$page_id][4] = Item icon: 1= redirect 0 = Normal -$CATS[] = array( 'Стили' ); +$CATS[] = array( 'Skins & Templates' ); $PAGES[] = array( - 1 => array( 'Менеджер стилей' , 'section=lookandfeel&act=sets' ), - 2 => array( 'Утилиты для стилей' , 'section=lookandfeel&act=skintools' ), - 3 => array( 'Поиск и замена в стилях' , 'section=lookandfeel&act=skintools&code=searchsplash' ), - 4 => array( 'Импорт/экспорт стилей' , 'section=lookandfeel&act=import' ), - 5 => array( 'Сравнение стилей' , 'section=lookandfeel&act=skindiff' ), - 6 => array( 'Простая смена логотипа' , 'section=lookandfeel&act=skintools&code=easylogo' ), + 1 => array( 'Skin Manager' , 'section=lookandfeel&act=sets' ), + 2 => array( 'Skin Tools' , 'section=lookandfeel&act=skintools' ), + 3 => array( 'Skin Search & Replace' , 'section=lookandfeel&act=skintools&code=searchsplash' ), + 4 => array( 'Skin Import/Export' , 'section=lookandfeel&act=import' ), + 5 => array( 'Skin Differences' , 'section=lookandfeel&act=skindiff' ), + 6 => array( 'Easy Logo Changer' , 'section=lookandfeel&act=skintools&code=easylogo' ), ); -$CATS[] = array( 'Языки' ); +$CATS[] = array( 'Languages' ); $PAGES[] = array( - 1 => array( 'Управление языками' , 'section=lookandfeel&act=lang' ), - 2 => array( 'Импортирование языка' , 'section=lookandfeel&act=lang&code=import' ), + 1 => array( 'Manage Languages' , 'section=lookandfeel&act=lang' ), + 2 => array( 'Import a Language' , 'section=lookandfeel&act=lang&code=import' ), ); -$CATS[] = array( 'Смайлики' ); +$CATS[] = array( 'Emoticons' ); $PAGES[] = array( - 1 => array( 'Менеджер смайликов' , 'section=lookandfeel&act=emoticons&code=emo' ), - 2 => array( 'Импорт/экспорт смайликов' , 'section=lookandfeel&act=emoticons&code=emo_packsplash' ), + 1 => array( 'Emoticon Manager' , 'section=lookandfeel&act=emoticons&code=emo' ), + 2 => array( 'Import/Export Packs' , 'section=lookandfeel&act=emoticons&code=emo_packsplash' ), ); diff --git a/upload/sources/acp_loaders/acp_pages_tools.php b/upload/sources/acp_loaders/acp_pages_tools.php index 559109d0..e7bd8d5d 100644 --- a/upload/sources/acp_loaders/acp_pages_tools.php +++ b/upload/sources/acp_loaders/acp_pages_tools.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CONTROL PANEL PAGES FILE @@ -40,57 +32,57 @@ // $PAGES[ $cat_id ][$page_id][3] = URL type: 1 = Board URL 0 = ACP URL // $PAGES[ $cat_id ][$page_id][4] = Item icon: 1= redirect 0 = Normal -$CATS[] = array( 'Системные настройки' ); +$CATS[] = array( 'System Settings' ); $PAGES[] = array( - 1 => array( 'Все основные настройки', 'section=tools&act=op' ), - 2 => array( 'Добавить новый параметр' , 'section=tools&act=op&code=settingnew' ), - 7 => array( 'Включение/Выключение' , 'section=tools&act=op&code=findsetting&conf_title_keyword=boardoffline', '', 0, 1 ), - 8 => array( 'Правила форума' , 'section=tools&act=op&code=findsetting&conf_title_keyword=boardguidelines', '', 0, 1 ), - 9 => array( 'Глобальные настройки' , 'section=tools&act=op&code=findsetting&conf_title_keyword=general', '', 0, 1 ), - 10 => array( 'Настройки быстродействия' , 'section=tools&act=op&code=findsetting&conf_title_keyword=cpusaving', '', 0, 1 ), + 1 => array( 'View All General Settings', 'section=tools&act=op' ), + 2 => array( 'Add New General Setting' , 'section=tools&act=op&code=settingnew' ), + 7 => array( 'Turn Board On / Off' , 'section=tools&act=op&code=findsetting&key='.urlencode('boardoffline/online'), '', 0, 1 ), + 8 => array( 'Board Guidelines' , 'section=tools&act=op&code=findsetting&key='.urlencode('boardguidelines'), '', 0, 1 ), + 9 => array( 'General Configuration' , 'section=tools&act=op&code=findsetting&key='.urlencode('generalconfiguration'), '', 0, 1 ), + 10 => array( 'CPU Saving' , 'section=tools&act=op&code=findsetting&key='.urlencode('cpusaving'), '', 0, 1 ), // 11 => array( 'IP Chat' , 'section=tools&act=pin&code=ipchat' ), //12 => array( 'IPB License' , 'section=tools&act=pin&code=reg' ), //14 => array( 'IPB Copyright Removal' , 'section=tools&act=pin&code=copy' ), ); -$CATS[] = array( 'Дополнительно' ); +$CATS[] = array( 'Maintenance' ); $PAGES[] = array( - 1 => array( 'Файлы помощи' , 'section=tools&act=help' ), - 2 => array( 'Управление кешем' , 'section=tools&act=admin&code=cache' ), - 3 => array( 'Пересчет и обновление' , 'section=tools&act=rebuild' ), - 4 => array( 'Утилиты очистки' , 'section=tools&act=rebuild&code=tools' ), + 1 => array( 'Manage Help Files' , 'section=tools&act=help' ), + 2 => array( 'Cache Control' , 'section=tools&act=admin&code=cache' ), + 3 => array( 'Recount & Rebuild' , 'section=tools&act=rebuild' ), + 4 => array( 'Clean-up Tools' , 'section=tools&act=rebuild&code=tools' ), ); -$CATS[] = array( 'Работа с e-mail' ); +$CATS[] = array( 'Post Office' ); $PAGES[] = array( - 1 => array( 'Управление рассылками' , 'section=tools&act=postoffice' ), - 2 => array( 'Создать рассылку' , 'section=tools&act=postoffice&code=mail_new' ), - 3 => array( 'Журнал e-mail отправлений' , 'section=admin&act=emaillog', '', 0, 1 ), - 4 => array( 'Журнал e-mail ошибок' , 'section=admin&act=emailerror', '', 0, 1 ), - 5 => array( 'E-mail настройки' , 'section=tools&act=op&code=findsetting&conf_title_keyword=email', '', 0, 1 ), + 1 => array( 'Manage Bulk Mail' , 'section=tools&act=postoffice' ), + 2 => array( 'Create New Email' , 'section=tools&act=postoffice&code=mail_new' ), + 3 => array( 'View Email Logs' , 'section=admin&act=emaillog', '', 0, 1 ), + 4 => array( 'View Email Error Logs' , 'section=admin&act=emailerror', '', 0, 1 ), + 5 => array( 'Email Settings' , 'section=tools&act=op&code=findsetting&key=emailset-up', '', 0, 1 ), ); -$CATS[] = array( 'Управление порталом' ); +$CATS[] = array( 'Portal Manager' ); $PAGES[] = array( - 1 => array( 'Управление дополнениями', 'section=tools&act=portal' ), + 1 => array( 'Manage Portal Plug-ins', 'section=tools&act=portal' ), ); -$CATS[] = array( 'Системы авторизации' ); +$CATS[] = array( 'Log In Manager' ); $PAGES[] = array( - 1 => array( 'Управление' , 'section=tools&act=loginauth' ), - 2 => array( 'Создать новый метод' , 'section=tools&act=loginauth&code=login_add' ), + 1 => array( 'Log In Manager' , 'section=tools&act=loginauth' ), + 2 => array( 'Create New Log In' , 'section=tools&act=loginauth&code=login_add' ), ); -$CATS[] = array( 'Менеджер задач' ); +$CATS[] = array( 'Task Manager' ); $PAGES[] = array( - 1 => array( 'Менеджер задач' , 'section=tools&act=task' ), - 2 => array( 'Журнал выполненных задач' , 'section=tools&act=task&code=log' ), + 1 => array( 'Task Manager' , 'section=tools&act=task' ), + 2 => array( 'View Task Logs' , 'section=tools&act=task&code=log' ), ); diff --git a/upload/sources/acp_loaders/acp_tools.php b/upload/sources/acp_loaders/acp_tools.php index e0b5637b..a584721a 100644 --- a/upload/sources/acp_loaders/acp_tools.php +++ b/upload/sources/acp_loaders/acp_tools.php @@ -2,23 +2,15 @@ /* +--------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= -| Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae -| 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 +| INVISION POWER BOARD IS NOT FREE SOFTWARE! +| http://www.invisionboard.com +--------------------------------------------------------------------------- | | > CP "MYCP" PAGE CLASS @@ -30,7 +22,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -54,7 +46,7 @@ class acp_tools function auto_run() { - $this->ipsclass->html_title = "IPB: Утилиты и настройки"; + $this->ipsclass->html_title = "IPB: Tools & Settings"; $another_choice = array( diff --git a/upload/sources/acp_loaders/index.html b/upload/sources/acp_loaders/index.html index 787531db..52a588b2 100644 --- a/upload/sources/acp_loaders/index.html +++ b/upload/sources/acp_loaders/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/action_admin/acppermissions.php b/upload/sources/action_admin/acppermissions.php index efaa00d0..099432d8 100644 --- a/upload/sources/action_admin/acppermissions.php +++ b/upload/sources/action_admin/acppermissions.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-06 10:09:22 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 611 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -52,7 +42,7 @@ */ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -82,24 +72,13 @@ class ad_acppermissions function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // Make sure we're a root admin, or else! //----------------------------------------- if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { - $this->ipsclass->admin->error("Извините, но эти функции только для главных администраторов"); + $this->ipsclass->admin->error("Sorry, these functions are for the root admin group only"); } $this->html = $this->ipsclass->acp_load_template('cp_skin_admin'); @@ -186,7 +165,7 @@ class ad_acppermissions if ( ! $member_id ) { - $this->ipsclass->main_msg = "ID пользователя не выбран!"; + $this->ipsclass->main_msg = "No member ID passed"; } //------------------------------- @@ -199,7 +178,7 @@ class ad_acppermissions // Print //------------------------------- - $this->ipsclass->main_msg = "Ограничения доступа удалены"; + $this->ipsclass->main_msg = "Member's restrictions lifted"; $this->acpperms_list(); } @@ -362,7 +341,7 @@ class ad_acppermissions // Get lang: NEEDS SORTIN' //------------------------------- - require_once( ROOT_PATH."cache/lang_cache/ru/acp_lang_acpperms.php" ); + require_once( ROOT_PATH."cache/lang_cache/en/acp_lang_acpperms.php" ); $this->lang = $lang; //------------------------------- @@ -398,6 +377,7 @@ class ad_acppermissions $onoff['tools'] = 'taboff'; $onoff['components'] = 'taboff'; $onoff['admin'] = 'taboff'; + $onoff['help'] = 'taboff'; $onoff[ $this->tab ] = 'tabon'; @@ -406,8 +386,12 @@ class ad_acppermissions $tabinit[ $t ] = intval($this->member_info['_perm_cache'][ $t ]); } + //echo "
    ";print_r($tabinit);echo "
    "; + $tab_html = $this->html->acp_xml_tabs( $onoff, $this->member_id, $tabinit ); + //print $tab_html;exit; + //------------------------------- // What to do? //------------------------------- @@ -442,7 +426,6 @@ class ad_acppermissions // Print //------------------------------- - @header( "Content-type: text/plain;charset=WINDOWS-1251" ); print $this->html->acp_xml_wrap( $tab_html, $content ); exit(); } @@ -471,19 +454,20 @@ class ad_acppermissions $main = ''; $main_content = ''; $main_img_classes = array( 'tick' => 'img-boxed-off', 'cross' => 'img-boxed-off' ); - $lang_map = array( 'add' => 'Разрешить ДОБАВЛЯТЬ права доступа', - 'edit' => 'Разрешить РЕДАКТИРОВАТЬ права доступа', - 'remove' => 'Разрешить УДАЛЯТЬ права доступа', - 'import' => 'Разрешить ИМПОРТИРОВАТЬ права доступа', - 'export' => 'Разрешить ЭКСПОРТИРОВАТЬ права доступа', - 'rebuild' => 'Разрешить ПЕРЕСТРАИВАТЬ права доступа', - 'recount' => 'Разрешить ПЕРЕСЧИТЫВАТЬ права доступа', - 'recache' => 'Разрешить КЕШИРОВАТЬ права доступа', - 'view' => 'Разрешить ПРОСМАТРИВАТЬ права доступа', - 'search' => 'Разрешить осуществлять ПОИСК по правам доступа', - 'log' => 'Разрешить УПРАВЛЯТЬ ЛОГАМИ прав доступа', - 'show' => 'Разрешить ПРОСМАТРИВАТЬ ОСНОВЫНЫЕ права доступа', - 'upload' => "Разрешить ЗАГРУЖАТЬ права доступа", + $lang_map = array( 'add' => 'Allow ADD permission', + 'edit' => 'Allow EDIT permission', + 'remove' => 'Allow DELETE permission', + 'import' => 'Allow IMPORT permission', + 'export' => 'Allow EXPORT permission', + 'rebuild' => 'Allow REBUILD permission', + 'recount' => 'Allow RECOUNT permission', + 'recache' => 'Allow RECACHE permission', + 'view' => 'Allow VIEW permission', + 'search' => 'Allow SEARCH permission', + 'log' => 'Allow MANAGE LOGS permission', + 'show' => 'Allow BASIC VIEW permission', + 'upload' => "Allow UPLOAD permission", + 'do' => "Allow PERFORM permission", ); //------------------------------- @@ -516,6 +500,7 @@ class ad_acppermissions $this->perm_child = $r['perm_child']; } } + } else { @@ -597,17 +582,20 @@ class ad_acppermissions //------------------------------- else { - foreach( $menu_data[ $this->perm_child ] as $idx => $menu_array ) + if( count($menu_data[ $this->perm_child ]) ) { - if ( $menu_array['menu_permbit'] ) + foreach( $menu_data[ $this->perm_child ] as $menu_array ) { - $bits[] = array( 'perm_main' => 'components', - 'perm_child' => $this->perm_child, - 'perm_bit' => $menu_array['menu_permbit'] ); - - if ( $menu_array['menu_permlang'] ) + if ( $menu_array['menu_permbit'] ) { - $this->lang[ 'components:'.$this->perm_child.':'.$menu_array['menu_permbit'] ] = $menu_array['menu_permlang']; + $bits[] = array( 'perm_main' => 'components', + 'perm_child' => $this->perm_child, + 'perm_bit' => $menu_array['menu_permbit'] ); + + if ( $menu_array['menu_permlang'] ) + { + $this->lang[ 'components:'.$this->perm_child.':'.$menu_array['menu_permbit'] ] = $menu_array['menu_permlang']; + } } } } @@ -616,8 +604,8 @@ class ad_acppermissions //------------------------------- // Loop and print //------------------------------- - - foreach( $bits as $hehe => $bit ) + + foreach( $bits as $bit ) { $img_classes = array( 'tick' => 'img-boxed-off', 'cross' => 'img-boxed-off' ); @@ -649,7 +637,14 @@ class ad_acppermissions # Img classes - cross or ticked? $main_value ? $main_img_classes['tick'] = 'img-boxed' : $main_img_classes['cross'] = 'img-boxed'; - $main = $this->html->acp_xml_global_main_wrap( $main_content, $main_class, $main_value, $main_img_classes ); + if( $main_content ) + { + $main = $this->html->acp_xml_global_main_wrap( $main_content, $main_class, $main_value, $main_img_classes ); + } + else + { + $main = $this->html->acp_xml_global_main_nocomponents( 'perm-gray' ); + } //------------------------------- // Print it @@ -708,7 +703,7 @@ class ad_acppermissions if ( ! $name ) { - $this->ipsclass->main_msg = "Вы должны ввести имя, перед тем, как подтвердите форму."; + $this->ipsclass->main_msg = "You must enter a name before submitting the form."; $this->acpperms_member_add(); } @@ -727,7 +722,7 @@ class ad_acppermissions if ( ! $member['id'] ) { - $this->ipsclass->main_msg = "{$name} не был найден."; + $this->ipsclass->main_msg = "{$name} cannot be found."; $this->acpperms_member_add(); } @@ -739,7 +734,7 @@ class ad_acppermissions if ( $test['row_member_id'] ) { - $this->ipsclass->main_msg = "{$name} уже ограчичен."; + $this->ipsclass->main_msg = "{$name} already has restrictions in place."; $this->acpperms_member_add(); } @@ -749,7 +744,7 @@ class ad_acppermissions if ( $this->ipsclass->vars['admin_group'] == $member['mgroup'] ) { - $this->ipsclass->main_msg = "{$name}'s находится в основной группе администраторов и не может быть ограничен в правах."; + $this->ipsclass->main_msg = "{$name}'s primary group is the Root Admin group and cannot be restricted."; $this->acpperms_member_add(); } @@ -782,7 +777,7 @@ class ad_acppermissions if ( ! $isok ) { - $this->ipsclass->main_msg = "{$member['members_display_name']} не имеет доступа в админцентр и не может быть добавлен."; + $this->ipsclass->main_msg = "{$member['members_display_name']} does not have access to the ACP and cannot be added."; $this->acpperms_member_add(); } @@ -796,7 +791,7 @@ class ad_acppermissions 'row_perm_cache' => serialize( array() ), 'row_updated' => time() ) ); - $this->ipsclass->main_msg = "{$member['members_display_name']} успешно добавлен и сейчас не имеет доступа к админцентр, но вы можете дать ему права через управление ограничениями."; + $this->ipsclass->main_msg = "{$member['members_display_name']} successfully added and now has no ACP access until you allow it by managing his/her restrictions."; $this->acpperms_list(); } @@ -813,8 +808,8 @@ class ad_acppermissions */ function acpperms_member_add() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление ограничениями' ); - $this->ipsclass->admin->nav[] = array( '' , 'Добавить администратора' ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'ACP Restrictions' ); + $this->ipsclass->admin->nav[] = array( '' , 'Add an administrator' ); //------------------------------- // INIT @@ -826,8 +821,8 @@ class ad_acppermissions $this->ipsclass->html .= $this->html->acp_perms_add_admin_form(); - $this->ipsclass->admin->page_title = "Ограничение администратора"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять ограничением прав администраторов."; + $this->ipsclass->admin->page_title = "Admin Restrictions"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your admin restriction permissions."; $this->ipsclass->admin->output(); } @@ -864,13 +859,13 @@ class ad_acppermissions if ( ! $this->ipsclass->input['file_location'] ) { - $this->ipsclass->main_msg = "Файл не был найден."; + $this->ipsclass->main_msg = "No upload file was found and no filename was specified."; $this->acpperms_list(); } if ( ! file_exists( ROOT_PATH . $this->ipsclass->input['file_location'] ) ) { - $this->ipsclass->main_msg = "Нельзя найти файлы, чтобы открыть: " . ROOT_PATH . $this->ipsclass->input['file_location']; + $this->ipsclass->main_msg = "Could not find the file to open at: " . ROOT_PATH . $this->ipsclass->input['file_location']; $this->acpperms_list(); } @@ -956,7 +951,7 @@ class ad_acppermissions // Loop through and sort out settings... //----------------------------------------- - foreach( $xml->xml_array['permsexport']['permsgroup']['perm'] as $id => $entry ) + foreach( $xml->xml_array['permsexport']['permsgroup']['perm'] as $entry ) { //----------------------------------------- // Do we have a row matching this already? @@ -979,7 +974,7 @@ class ad_acppermissions } } - $this->ipsclass->main_msg = "$inserted ключи прав доступа вставлены"; + $this->ipsclass->main_msg = "$inserted permissions keys inserted"; if ( ! $noreturn ) { @@ -1000,7 +995,7 @@ class ad_acppermissions */ function acpperms_dev_report_language() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Права доступа в админцентр: Разработчик инструментов' ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'ACP Permissions: Developer Tools' ); //------------------------------- // INIT @@ -1049,7 +1044,7 @@ class ad_acppermissions // Implode //------------------------------- - foreach( $temp as $main => $data ) + foreach( $temp as $data ) { foreach( $data as $line ) { @@ -1061,15 +1056,15 @@ class ad_acppermissions // Add in single entries //------------------------------- - foreach( array( 'admin', 'content', 'lookandfeel', 'components', 'tools' ) as $bitkey ) + foreach( array( 'admin', 'content', 'lookandfeel', 'components', 'tools', 'help' ) as $bitkey ) { $content .= str_pad("'".$bitkey."'", 45, " " ) . "=>\t" . '"'. $this->lang[ $bitkey ]. '",'."\n"; } - $this->ipsclass->html .= ""; + $this->ipsclass->html .= ""; - $this->ipsclass->admin->page_title = "Права доступа администраторов"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять правами доступа администраторов."; + $this->ipsclass->admin->page_title = "Admin Permissions"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your admin permissions."; $this->ipsclass->admin->output(); } @@ -1086,7 +1081,7 @@ class ad_acppermissions */ function acpperms_dev_report_missing() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Права доступа в админцентр: Разработчик инструментов' ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'ACP Permissions: Developer Tools' ); //------------------------------- // INIT @@ -1112,18 +1107,18 @@ class ad_acppermissions if ( ! count($master[ $_name ]['perm_bits']) ) { - $content .= "{$_name}.php нет информации о правах доступа....
    "; + $content .= "{$_name}.php has no permission information....
    "; } else { - $content .= "{$_name}.php есть информация о правах доступа....
    "; + $content .= "{$_name}.php has permission information....
    "; } } $this->ipsclass->html .= $content; - $this->ipsclass->admin->page_title = "Права доступа администраторов"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять правами доступа администраторов."; + $this->ipsclass->admin->page_title = "Admin Permissions"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your admin permissions."; $this->ipsclass->admin->output(); } @@ -1156,7 +1151,7 @@ class ad_acppermissions // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -1235,7 +1230,7 @@ class ad_acppermissions // Load lang file... //------------------------------- - require_once( ROOT_PATH . 'cache/lang_cache/ru/acp_lang_acpperms.php' ); + require_once( ROOT_PATH . 'cache/lang_cache/en/acp_lang_acpperms.php' ); $this->lang = $lang; @@ -1312,7 +1307,7 @@ class ad_acppermissions */ function acpperms_list() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление ограничениями' ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'ACP Restrictions' ); //------------------------------- // INIT @@ -1351,8 +1346,8 @@ class ad_acppermissions $this->ipsclass->html .= $this->html->acp_perms_overview( $content ); - $this->ipsclass->admin->page_title = "Управление ограничениями"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять ограничением прав администраторов."; + $this->ipsclass->admin->page_title = "Admin Restrictions"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your admin restriction permissions."; $this->ipsclass->admin->output(); } diff --git a/upload/sources/action_admin/administration.php b/upload/sources/action_admin/administration.php index 2c9dac83..fdea48b2 100644 --- a/upload/sources/action_admin/administration.php +++ b/upload/sources/action_admin/administration.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -37,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -67,8 +57,9 @@ class ad_administration // Require and RUN !! THERES A BOMB //----------------------------------------- - $this->ipsclass->admin->page_detail = "Управление кешем позволяет вам просматривать содержимое вашего кеша, а также и обновлять его."; - $this->ipsclass->admin->page_title = "Управление кешем"; + $this->ipsclass->admin->page_detail = "The cache manager allows you to view the contents of your cache and update them."; + $this->ipsclass->admin->page_title = "Cache Manager"; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Cache Manager' ); //----------------------------------------- // Load skin @@ -76,41 +67,31 @@ class ad_administration $this->html = $this->ipsclass->acp_load_template('cp_skin_tools'); - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // Map //----------------------------------------- - $this->map = array( 'forum_cache' => 'Информация и данные о всех форумах', - 'group_cache' => 'Информация и данные о всех пользовательских групп', - 'systemvars' => 'Рабочее время системы', - 'skin_id_cache' => 'Информация и данные и стилях', - 'moderators' => 'Информация и данныех о всех модераторх', - 'stats' => 'Статистика форума, общее кол-во сообщений и т.д.', - 'ranks' => 'Информация об учетных записях пользователей и их статусах', - 'profilefields' => 'Информация о дополнительных полях в профиле', - 'birthdays' => 'Дни рождения пользователей', - 'calendar' => 'Приближающиеся календарные события', - 'multimod' => 'Информация и данные о мульти-модерации', - 'bbcode' => "Информация и данные о специальных ББ кодах", - 'settings' => "Настройки форума и переменных", - 'emoticons' => 'Информация и данные о смайликах', - 'badwords' => 'Информация и данные о фильтре нецензурных слов', - 'languages' => 'Информация о языковых настройках', - 'banfilters' => 'Забаненные IP адреса', - 'attachtypes' => 'Информация о типах прикрепляемых файлов', - 'announcements' => 'Кеш сообщений', - 'components' => 'Включенные компоненты в вашем IPB', + $this->map = array( 'forum_cache' => 'All forum information and data', + 'group_cache' => 'All member group infomation and data', + 'systemvars' => 'System runtime variables', + 'skin_id_cache' => 'Skin set information and data', + 'moderators' => 'All moderator information and data', + 'stats' => 'Board stats, such as total posts, etc', + 'ranks' => 'Member titles and rank information', + 'profilefields' => 'Custom profile field information', + 'birthdays' => 'Members birthdays', + 'calendar' => 'Forthcoming calendar events', + 'calendars' => 'Calendars you have created in the calendar manager', + 'multimod' => 'Multi-moderation information and data', + 'bbcode' => "Custom BBCode information and data", + 'settings' => "Board settings and variables", + 'emoticons' => 'Emoticon information and data', + 'badwords' => 'Bad Word Filters information and data', + 'languages' => 'Language Set information', + 'banfilters' => 'Banned IP addresses', + 'attachtypes' => 'Attachment Types information', + 'announcements' => 'Announcements cache', + 'components' => 'Components enabled on your IPB', ); //----------------------------------------- @@ -159,7 +140,7 @@ class ad_administration $id = intval( $this->ipsclass->input['id'] ); $cache_name = ''; $count = 0; - $img = '- '; + $img = '- '; //----------------------------------------- // Get cache name @@ -202,7 +183,7 @@ class ad_administration { if ( ! $this->ipsclass->input['cache'] ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->cache_start(); } @@ -247,7 +228,7 @@ class ad_administration $this->ipsclass->update_forum_cache(); - $this->ipsclass->main_msg = 'Кеш форума обновлен'; + $this->ipsclass->main_msg = 'Forum Cache Updated'; break; //----------------------------------------- @@ -270,7 +251,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Кеш групп обновлен'; + $this->ipsclass->main_msg = 'Group Cache Updated'; break; //----------------------------------------- @@ -284,6 +265,62 @@ class ad_administration $this->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); + if ($this->ipsclass->vars['load_limit'] > 0) + { + # @ supressor fixes warning in >4.3.2 with open_basedir restrictions + + if ( @file_exists('/proc/loadavg') ) + { + if ( $fh = @fopen( '/proc/loadavg', 'r' ) ) + { + $data = @fread( $fh, 6 ); + @fclose( $fh ); + + $load_avg = explode( " ", $data ); + + $this->ipsclass->server_load = trim($load_avg[0]); + } + } + else if( strstr( strtolower(PHP_OS), 'win' ) ) + { + /*--------------------------------------------------------------- + | typeperf is an exe program that is included with Win NT, + | XP Pro, and 2K3 Server. It can be installed on 2K from the + | 2K Resource kit. It will return the real time processor + | Percentage, but will take 1 second processing time to do so. + | This is why we shall cache it, and check only every 2 mins. + | + | Can also be obtained from COM, but it's extremely slow... + ---------------------------------------------------------------*/ + + $serverstats = @shell_exec("typeperf \"Processor(_Total)\% Processor Time\" -sc 1"); + + if( $serverstats ) + { + $server_reply = explode( "\n", str_replace( "\r", "", $serverstats ) ); + $serverstats = array_slice( $server_reply, 2, 1 ); + + $statline = explode( ",", str_replace( '"', '', $serverstats[0] ) ); + + $this->ipsclass->server_load = round( $statline[1], 4 ); + } + } + else + { + if ( $serverstats = @exec("uptime") ) + { + preg_match( "/(?:averages)?\: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/", $serverstats, $load ); + + $this->ipsclass->server_load = $load[1]; + } + } + + if( $this->ipsclass->server_load ) + { + $this->ipsclass->cache['systemvars']['loadlimit'] = $this->ipsclass->server_load."-".time(); + } + } + $this->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); require_once( ROOT_PATH.'sources/lib/func_taskmanager.php' ); @@ -291,7 +328,7 @@ class ad_administration $task->ipsclass =& $this->ipsclass; $task->save_next_run_stamp(); - $this->ipsclass->main_msg = 'Переменные системы обновлены'; + $this->ipsclass->main_msg = 'System Variables Updated'; break; //----------------------------------------- @@ -304,7 +341,7 @@ class ad_administration $admin->ipsclass =& $this->ipsclass; $admin->_rebuild_skin_id_cache(); - $this->ipsclass->main_msg = 'Кеш стиля обновлен'; + $this->ipsclass->main_msg = 'Skin ID Cache Updated'; break; //----------------------------------------- @@ -321,7 +358,7 @@ class ad_administration $this->mod->rebuild_moderator_cache(); - $this->ipsclass->main_msg = 'Модераторы обновлены'; + $this->ipsclass->main_msg = 'Moderators Updated'; break; //----------------------------------------- @@ -333,7 +370,7 @@ class ad_administration - $this->ipsclass->main_msg = 'Статистика обновлена'; + $this->ipsclass->main_msg = 'Statistics Updated'; break; //----------------------------------------- @@ -362,7 +399,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Статусы обновлены'; + $this->ipsclass->main_msg = 'Ranks Updated'; break; //----------------------------------------- @@ -384,7 +421,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'profilefields', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Доп. поля в профиле обновлены'; + $this->ipsclass->main_msg = 'Profile Fields Updated'; break; //----------------------------------------- @@ -404,9 +441,19 @@ class ad_administration $task->restrict_log = 1; $task->run_task(); - $this->ipsclass->main_msg = 'Календарные события обновлены'; + $this->ipsclass->main_msg = 'Calendar Events Updated'; break; + case 'calendars': + + require_once( ROOT_PATH.'sources/action_admin/calendars.php' ); + $cal = new ad_calendars(); + $cal->ipsclass =& $this->ipsclass; + $cal->calendars_rebuildcache(); + + $this->ipsclass->main_msg = 'Calendars Updated'; + break; + //----------------------------------------- // Birthdays //----------------------------------------- @@ -424,7 +471,7 @@ class ad_administration $task->restrict_log = 1; $task->run_task(); - $this->ipsclass->main_msg = 'Дни рождения обновлены'; + $this->ipsclass->main_msg = 'Birthdays Updated'; break; //----------------------------------------- @@ -450,7 +497,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'multimod', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Мульти-модерация обновлена'; + $this->ipsclass->main_msg = 'Multi-Moderation Updated'; break; //----------------------------------------- @@ -465,7 +512,7 @@ class ad_administration $this->bbcode->bbcode_rebuildcache(); - $this->ipsclass->main_msg = 'ББ коды обновлены'; + $this->ipsclass->main_msg = 'BBCode Updated'; break; //----------------------------------------- @@ -493,7 +540,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'settings', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Настройки обновлены'; + $this->ipsclass->main_msg = 'Settings Updated'; break; //----------------------------------------- @@ -508,7 +555,7 @@ class ad_administration $this->emoticons->emoticon_rebuildcache(); - $this->ipsclass->main_msg = 'Смайлики обновлены'; + $this->ipsclass->main_msg = 'Emoticons Updated'; break; //----------------------------------------- @@ -523,7 +570,7 @@ class ad_administration $this->banandbadword->badword_rebuildcache(); - $this->ipsclass->main_msg = 'Фильтр нецензурных слов обновлен'; + $this->ipsclass->main_msg = 'Badwords Updated'; break; //----------------------------------------- @@ -544,7 +591,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'languages', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Языки обновлены'; + $this->ipsclass->main_msg = 'Languages Updated'; break; //----------------------------------------- @@ -559,7 +606,7 @@ class ad_administration $this->banandbadword->ban_rebuildcache(); - $this->ipsclass->main_msg = 'Фильтр бана обновлен'; + $this->ipsclass->main_msg = 'Banfilters Updated'; break; //----------------------------------------- @@ -579,7 +626,7 @@ class ad_administration $this->ipsclass->update_cache( array( 'name' => 'attachtypes', 'array' => 1, 'deletefirst' => 1 ) ); - $this->ipsclass->main_msg = 'Типы присоединяемых файлов обновлены'; + $this->ipsclass->main_msg = 'Attachment Types Updated'; break; //----------------------------------------- @@ -593,7 +640,7 @@ class ad_administration $announcements->ipsclass =& $this->ipsclass; $announcements->announce_recache(); - $this->ipsclass->main_msg = 'Сообщений обновлены'; + $this->ipsclass->main_msg = 'Announcements Updated'; break; //----------------------------------------- @@ -608,11 +655,11 @@ class ad_administration $this->components->components_rebuildcache(); - $this->ipsclass->main_msg = 'Компоненты обновлены'; + $this->ipsclass->main_msg = 'Components Updated'; break; default: - $this->ipsclass->main_msg = 'Нечего обновлять'; + $this->ipsclass->main_msg = 'No valid cache was specified to update'; break; } diff --git a/upload/sources/action_admin/adminlogs.php b/upload/sources/action_admin/adminlogs.php index acb38f4f..d5648c08 100644 --- a/upload/sources/action_admin/adminlogs.php +++ b/upload/sources/action_admin/adminlogs.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -38,7 +28,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -64,16 +54,7 @@ class ad_adminlogs function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Admin Logs' ); //----------------------------------------- // Make sure we're a root admin, or else! @@ -123,19 +104,19 @@ class ad_adminlogs function view() { - $start = $this->ipsclass->input['st'] ? $this->ipsclass->input['st'] : 0; + $start = intval($this->ipsclass->input['st']) >=0 ? intval($this->ipsclass->input['st']) : 0; - $this->ipsclass->admin->page_detail = "Просмотр всех действий, произведенных Администраторами"; - $this->ipsclass->admin->page_title = "Управление логами администрирования"; + $this->ipsclass->admin->page_detail = "Viewing all actions by a administrator"; + $this->ipsclass->admin->page_title = "Administration Logs Manager"; - if ( ! $this->ipsclass->input['search_string'] AND ! $this->ipsclass->input['mid'] ) + if ( ( !isset($this->ipsclass->input['search_string']) OR !$this->ipsclass->input['search_string'] ) AND ( !isset($this->ipsclass->input['mid']) OR !$this->ipsclass->input['mid'] ) ) { - $this->ipsclass->main_msg = "Вы должны ввести что-нибудь в поисковую строку"; + $this->ipsclass->main_msg = "You must enter a search string"; $this->list_current(); return; } - if ( ! $this->ipsclass->input['search_string'] ) + if ( !isset($this->ipsclass->input['search_string']) OR !$this->ipsclass->input['search_string'] ) { $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as count', 'from' => 'admin_logs', 'where' => "member_id=".intval($this->ipsclass->input['mid']) ) ); $this->ipsclass->DB->simple_exec(); @@ -146,7 +127,7 @@ class ad_adminlogs $query = "&{$this->ipsclass->form_code}&mid={$this->ipsclass->input['mid']}&code=view"; - $this->ipsclass->DB->cache_add_query( 'adminlogs_view_one', array( 'mid' => $this->ipsclass->input['mid'], 'limit_a' => $start ) ); + $this->ipsclass->DB->cache_add_query( 'adminlogs_view_one', array( 'mid' => intval($this->ipsclass->input['mid']), 'limit_a' => $start ) ); $this->ipsclass->DB->cache_exec_query(); } @@ -166,35 +147,36 @@ class ad_adminlogs $this->ipsclass->DB->cache_exec_query(); } - $links = $this->ipsclass->build_pagelinks( array( 'TOTAL_POSS' => $row_count, + $links = $this->ipsclass->adskin->build_pagelinks( array( 'TOTAL_POSS' => $row_count, 'PER_PAGE' => 20, 'CUR_ST_VAL' => $start, - 'L_SINGLE' => "Одна страница", - 'L_MULTI' => "Страницы: ", + 'L_SINGLE' => "Single Page", + 'L_MULTI' => "Pages: ", 'BASE_URL' => $this->ipsclass->base_url.$query, ) ); - $this->ipsclass->admin->page_detail = "Вы можете просматривать и удалять действия Администраторов"; - $this->ipsclass->admin->page_title = "Управление логами администрирования"; + $this->ipsclass->admin->page_detail = "You may view and remove actions performed by your administrators"; + $this->ipsclass->admin->page_title = "Administrator Logs Manager"; //----------------------------------------- - $this->ipsclass->adskin->td_header[] = array( "Администратор" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Действие" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Время действия" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "IP адрес" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Member Name" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Action Perfomed" , "40%" ); + $this->ipsclass->adskin->td_header[] = array( "Time of action" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "IP address" , "20%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Сохраненные логи администрирования" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic($links, 'center', 'pformstrip'); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Saved Admin Logs" ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic($links, 'center', 'tablesubheader'); if ( $this->ipsclass->DB->get_num_rows() ) { while ( $row = $this->ipsclass->DB->fetch_row() ) { - $row['ctime'] = $this->ipsclass->admin->get_date( $row['ctime'], 'LONG' ); + $this->colours[$row['act']] = isset($this->colours[$row['act']]) ? $this->colours[$row['act']] : 'black'; + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "{$row['members_display_name']}", "{$row['note']}", "{$row['ctime']}", @@ -206,10 +188,10 @@ class ad_adminlogs } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    Нет записей
    "); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    No results
    "); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic($links, 'center', 'pformstrip'); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic($links, 'center', 'tablesubheader'); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -229,10 +211,10 @@ class ad_adminlogs { if ($this->ipsclass->input['mid'] == "") { - $this->ipsclass->admin->error("Вы должны выбрать ID Администратора"); + $this->ipsclass->admin->error("You did not select a member ID to remove by!"); } - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'admin_logs', 'where' => "member_id=".$this->ipsclass->input['mid'] ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'admin_logs', 'where' => "member_id=".intval($this->ipsclass->input['mid']) ) ); $this->ipsclass->boink_it($this->ipsclass->base_url."&{$this->ipsclass->form_code}"); } @@ -246,8 +228,8 @@ class ad_adminlogs { $form_array = array(); - $this->ipsclass->admin->page_detail = "Вы можете просматривать и удалять действия Администраторов (такие как: логи управления форумом, управление пользователями, управление группами, файлы помощи и логи модераций)."; - $this->ipsclass->admin->page_title = "Управление логами администрирования"; + $this->ipsclass->admin->page_detail = "You may view and remove actions performed by your administrators in mission critical areas of the administration CP (such as forum control, member control, group control, help files and moderator log management)."; + $this->ipsclass->admin->page_title = "Administration Logs Manager"; //----------------------------------------- // LAST FIVE ACTIONS @@ -256,12 +238,12 @@ class ad_adminlogs $this->ipsclass->DB->cache_add_query( 'adminlogs_view_list_current', array() ); $this->ipsclass->DB->cache_exec_query(); - $this->ipsclass->adskin->td_header[] = array( "Администратор" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Действие" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Время" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "IP адрес" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Member Name" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Action Perfomed" , "40%" ); + $this->ipsclass->adskin->td_header[] = array( "Time of action" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "IP address" , "20%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "5 последних действий администратора" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Last 5 Admin Actions" ); if ( $this->ipsclass->DB->get_num_rows() ) { @@ -281,7 +263,7 @@ class ad_adminlogs } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    Нет записей
    "); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    No results
    "); } $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -289,12 +271,12 @@ class ad_adminlogs //----------------------------------------- - $this->ipsclass->adskin->td_header[] = array( "Администратор" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Действий совершено" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Просмотр всех действий Адинистратора" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Удаление всех действий Адинистратора" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "Member Name" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "Actions Perfomed" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "View all by member" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Remove all by member" , "30%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Сохраненные логи администрирования" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Saved Admininstration Logs" ); $this->ipsclass->DB->cache_add_query( 'adminlogs_view_list_current_two', array() ); $this->ipsclass->DB->cache_exec_query(); @@ -304,8 +286,8 @@ class ad_adminlogs $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "{$r['name']}", "
    {$r['act_count']}
    ", - "
    Просмотр
    ", - "
    Удаление
    ", + "
    View
    ", + "
    Remove
    ", ) ); } @@ -325,27 +307,27 @@ class ad_adminlogs $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Поиск логов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Search Admin Logs" ); $form_array = array( - 0 => array( 'note' , 'Действие' ), - 1 => array( 'ip_address', 'IP адрес' ), - 2 => array( 'member_id' , 'ID Администратора' ), - 3 => array( 'act' , 'Настройки ACT' ), - 4 => array( 'code' , 'Настройки CODE' ), + 0 => array( 'note' , 'Action Performed' ), + 1 => array( 'ip_address', 'IP Address' ), + 2 => array( 'member_id' , 'Member ID' ), + 3 => array( 'act' , 'ACT Setting' ), + 4 => array( 'code' , 'CODE Setting' ), ); //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Искать..." , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Search for..." , $this->ipsclass->adskin->form_input( "search_string") ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Искать в..." , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Search in..." , $this->ipsclass->adskin->form_dropdown( "search_type", $form_array) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Искать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Search"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); diff --git a/upload/sources/action_admin/attachments.php b/upload/sources/action_admin/attachments.php index 3c8c46eb..15645f2c 100644 --- a/upload/sources/action_admin/attachments.php +++ b/upload/sources/action_admin/attachments.php @@ -2,24 +2,15 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. -| http://www.invisionpower.com -| ============================================= +| (c) 2004 Invision Power Services +| http://www.invisionboard.com +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Email: matt@invisionpower.com | 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) +--------------------------------------------------------------------------- | | > Admin: Attachment Functions @@ -35,7 +26,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -43,6 +34,9 @@ if ( ! defined( 'IN_ACP' ) ) class ad_attachments { var $base_url; + var $ipsclass; + var $html; + var $image_dir; /** * Section title name @@ -60,21 +54,18 @@ class ad_attachments { function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- + $this->html = $this->ipsclass->acp_load_template('cp_skin_attachments'); - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Attachments Manager' ); - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->ipsclass->admin->page_detail = "This section will allow you to manage your member's attachments and attachment permissions"; + $this->ipsclass->admin->page_title = "Attachments Manager"; - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление прикрепляемыми файлами' ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'set_image_dir', 'from' => 'skin_sets', 'where' => 'set_default=1' ) ); + $this->ipsclass->DB->simple_exec(); - $this->ipsclass->admin->page_detail = "Эта секция позволяет вам управлять прикрепленными пользователями файлами и устанавливать разрешения для различных типов файлов"; - $this->ipsclass->admin->page_title = "Управление прикрепляемыми файлами"; + $image_set = $this->ipsclass->DB->fetch_row(); + $this->image_dir = $image_set['set_image_dir']; //----------------------------------------- // StRT! @@ -139,6 +130,9 @@ class ad_attachments { $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':search' ); $this->attach_search_complete(); break; + case 'master_xml_export': + $this->master_xml_export(); + break; //----------------------------------------- // Default: //----------------------------------------- @@ -149,6 +143,74 @@ class ad_attachments { } } + /*-------------------------------------------------------------------------*/ + // Export Master XML + /*-------------------------------------------------------------------------*/ + + function master_xml_export() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $entry = array(); + + //----------------------------------------- + // Get XML class + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + + $xml = new class_xml(); + + $xml->doc_type = $this->ipsclass->vars['gb_char_set']; + + $xml->xml_set_root( 'export', array( 'exported' => time() ) ); + + //----------------------------------------- + // Set group + //----------------------------------------- + + $xml->xml_add_group( 'group' ); + + //----------------------------------------- + // Get templates... + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'attachments_type' ) ); + + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $content = array(); + + //----------------------------------------- + // Sort the fields... + //----------------------------------------- + + foreach( $r as $k => $v ) + { + $content[] = $xml->xml_build_simple_tag( $k, $v ); + } + + $entry[] = $xml->xml_build_entry( 'row', $content ); + } + + $xml->xml_add_entry_to_group( 'group', $entry ); + + $xml->xml_format_document(); + + $doc = $xml->xml_document; + + //----------------------------------------- + // Print to browser + //----------------------------------------- + + $this->ipsclass->admin->show_download( $doc, 'attachments.xml', '', 0 ); + } + //----------------------------------------- // // SEARCH: Complete @@ -221,7 +283,7 @@ class ad_attachments { { $gt = $this->ipsclass->input['hits_gt'] == 'gt' ? '>=' : '<'; - $query[] = "a.attach_hits $gt ".$this->ipsclass->input['hits']; + $query[] = "a.attach_hits $gt ".intval($this->ipsclass->input['hits']); } if ( $this->ipsclass->input['filename'] ) @@ -246,12 +308,12 @@ class ad_attachments { $this->ipsclass->DB->build_query( array( 'select' => 'a.*', 'from' => array( 'attachments' => 'a' ), - 'where' => 'attach_pid != 0 '.$queryfinal, + 'where' => "attach_rel_module='post'".$queryfinal, 'add_join' => array( # POST TABLE JOIN 1 => array( 'select' => 'p.author_id, p.author_name, p.post_date', 'from' => array( 'posts' => 'p' ), - 'where' => 'p.pid=a.attach_pid', + 'where' => 'p.pid=a.attach_rel_id', 'type' => 'left' ), # TOPIC TABLE JOIN 0 => array( 'select' => 't.tid, t.forum_id, t.title', @@ -277,32 +339,32 @@ class ad_attachments { ) ); $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Файл", "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Размер" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Автор" , "15%" ); - $this->ipsclass->adskin->td_header[] = array( "Тема" , "25%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата ", "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Attachment", "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Size" , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Author" , "15%" ); + $this->ipsclass->adskin->td_header[] = array( "Topic" , "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Posted ", "25%" ); $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепляемые файлы: Результаты поиска" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Attachments: Search Results" ); while ( $r = $this->ipsclass->DB->fetch_row() ) { $r['stitle'] = $this->ipsclass->txt_truncate($r['title'], 30); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , - "{$r['attach_file']}", + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "image_dir}/{$this->ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , + "ipsclass->form_code}&type=post&id={$r['attach_id']}' target='_blank'>{$r['attach_file']}", $this->ipsclass->size_format($r['attach_filesize']), $r['members_display_name'], - "{$r['stitle']}", + "{$r['stitle']}", $this->ipsclass->get_date( $r['post_date'], 'SHORT', 1 ), "
    ", ) ); } - $removebutton = ""; + $removebutton = ""; - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $removebutton, "right", "pformstrip"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $removebutton, "right", "tablesubheader"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -326,76 +388,86 @@ class ad_attachments { // HEADER //----------------------------------------- + $this->ipsclass->html .= " + "; + $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Поиск прикрепленных файлов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Search Attachments" ); $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'attach_search_complete' ), 2 => array( 'act' , 'attach' ), 3 => array( 'section', $this->ipsclass->section_code ), ) ); - $gt_array = array( 0 => array( 'gt', 'Больше чем' ), 1 => array( 'lt', 'Меньше чем' ) ); + $gt_array = array( 0 => array( 'gt', 'More Than' ), 1 => array( 'lt', 'Less Than' ) ); //----------------------------------------- // FORM //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Расширение файла
    Оставьте пустым, чтобы пропустить при поиске
    ", - $this->ipsclass->adskin->form_simple_input( 'extension', $_POST['extension'], 10 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match File Extension
    Leave blank to omit
    ", + $this->ipsclass->adskin->form_simple_input( 'extension', isset($_POST['extension']) ? $_POST['extension'] : '', 10 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Размер файла (в Kb)
    Оставьте пустым, чтобы пропустить при поиске
    ", - $this->ipsclass->adskin->form_dropdown( 'filesize_gt', $gt_array, $_POST['filesize_gt'] ).' '. - $this->ipsclass->adskin->form_simple_input( 'filesize', $_POST['filesize'], 10 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match File Size (in kb)
    Leave blank to omit
    ", + $this->ipsclass->adskin->form_dropdown( 'filesize_gt', $gt_array, isset($_POST['filesize_gt']) ? $_POST['filesize_gt'] : '' ).' '. + $this->ipsclass->adskin->form_simple_input( 'filesize', isset($_POST['filesize']) ? $_POST['filesize'] : '', 10 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Добавлен n дней
    Оставьте пустым, чтобы пропустить при поиске
    ", - $this->ipsclass->adskin->form_dropdown( 'days_gt', $gt_array, $_POST['days_gt'] ).' '. - $this->ipsclass->adskin->form_simple_input( 'days', $_POST['days'], 10 ).' дней назад', + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match Posted n Days
    Leave blank to omit
    ", + $this->ipsclass->adskin->form_dropdown( 'days_gt', $gt_array, isset($_POST['days_gt']) ? $_POST['days_gt'] : '' ).' '. + $this->ipsclass->adskin->form_simple_input( 'days', isset($_POST['days']) ? $_POST['days'] : '', 10 ).' ago', ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Просмотрен n дней
    Оставьте пустым, чтобы пропустить при поиске
    ", - $this->ipsclass->adskin->form_dropdown( 'hits_gt', $gt_array, $_POST['hits_gt'] ).' '. - $this->ipsclass->adskin->form_simple_input( 'hits', $_POST['hits'], 10 ).' раз', + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match Viewed n Times
    Leave blank to omit
    ", + $this->ipsclass->adskin->form_dropdown( 'hits_gt', $gt_array, isset($_POST['hits_gt']) ? $_POST['hits_gt'] : '' ).' '. + $this->ipsclass->adskin->form_simple_input( 'hits', isset($_POST['hits']) ? $_POST['hits'] : '', 10 ).' times', ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Имя файла
    Оставьте пустым, чтобы пропустить при поиске
    ", - $this->ipsclass->adskin->form_simple_input( 'filename', $_POST['filename'], 30 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match File Name
    Leave blank to omit
    ", + $this->ipsclass->adskin->form_simple_input( 'filename', isset($_POST['filename']) ? $_POST['filename'] : '', 30 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Автор
    Оставьте пустым, чтобы пропустить при поиске
    ", - $this->ipsclass->adskin->form_simple_input( 'authorname', $_POST['authorname'], 30 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match Post Author Name
    Leave blank to omit
    ", + $this->ipsclass->adskin->form_input( 'authorname', isset($_POST['authorname']) ? $_POST['authorname'] : '', 'text', "id='authorname'" ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Искать только изображения?
    Если выбрано 'Да', в результатах поиска будут только изображения.
    ", - $this->ipsclass->adskin->form_yes_no( 'onlyimage', $_POST['onlyimage'], 30 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Match Only Images?
    If 'yes', this search will only return image attachments.
    ", + $this->ipsclass->adskin->form_yes_no( 'onlyimage', isset($_POST['onlyimage']) ? $_POST['onlyimage'] : '', 30 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Сортировать по", - $this->ipsclass->adskin->form_dropdown( 'orderby', array( 0 => array( 'date' , 'дате прикрепления' ), - 1 => array( 'hits' , 'количеству просмотров' ), - 2 => array( 'filesize', 'размеру файла' ), - 3 => array( 'file' , 'имени файла' ), - ), $_POST['orderby'] ).' '. - $this->ipsclass->adskin->form_dropdown( 'sort' , array( 0 => array( 'desc' , 'от большего к меньшему [9-0]' ), - 1 => array( 'asc' , 'от меньшего к большему [0-9]' ), - ), $_POST['sort'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Order Results By", + $this->ipsclass->adskin->form_dropdown( 'orderby', array( 0 => array( 'date' , 'Attach Date' ), + 1 => array( 'hits' , 'Attach Views' ), + 2 => array( 'filesize', 'Attach File Size' ), + 3 => array( 'file' , 'Attach File Name' ), + ), isset($_POST['orderby']) ? $_POST['orderby'] : '' ).' '. + $this->ipsclass->adskin->form_dropdown( 'sort' , array( 0 => array( 'desc' , 'Descending [9-0]' ), + 1 => array( 'asc' , 'Ascending [0-9]' ), + ), isset($_POST['sort']) ? $_POST['sort'] : '' ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Показать n результатов
    Не более 100 за раз
    ", - $this->ipsclass->adskin->form_simple_input( 'show', $_POST['show'] ? $_POST['show'] : 25, 10 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Show n Results
    Maximum is 100 regardless of your entry
    ", + $this->ipsclass->adskin->form_simple_input( 'show', isset($_POST['show']) ? $_POST['show'] : 25, 10 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Искать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Search"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + $this->ipsclass->html .= ""; + //----------------------------------------- //------------------------------- @@ -421,6 +493,8 @@ class ad_attachments { } } + $ids = $this->ipsclass->clean_int_array( $ids ); + $attach_tid = array(); if ( count( $ids ) ) @@ -459,13 +533,13 @@ class ad_attachments { $postlib = new class_post(); $postlib->ipsclass =& $this->ipsclass; - foreach( $attach_tid as $apid => $tid ) + foreach( $attach_tid as $tid ) { $postlib->pf_recount_topic_attachments($tid); } } - $this->ipsclass->main_msg = "Удаленные прикрепленные файлы"; + $this->ipsclass->main_msg = "Attachments Removed"; if ( $this->ipsclass->input['return'] == 'stats' ) { @@ -518,13 +592,13 @@ class ad_attachments { // Get quick stats //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепленные файлы: Обзор" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Attachments: Overview" ); $stats = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count, sum(attach_filesize) as sum', 'from' => 'attachments' ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Количество файлов" , $this->ipsclass->do_number_format($stats['count']), - "Занятое место на диске", $this->ipsclass->size_format($stats['sum']), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Number of Attachments" , $this->ipsclass->do_number_format($stats['count']), + "Attachments Disk Usage", $this->ipsclass->size_format($stats['sum']), ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -540,23 +614,23 @@ class ad_attachments { //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Файл", "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Размерe" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Автор" , "15%" ); - $this->ipsclass->adskin->td_header[] = array( "Тема" , "25%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата ", "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Attachment", "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Size" , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Author" , "15%" ); + $this->ipsclass->adskin->td_header[] = array( "Topic" , "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Posted ", "25%" ); $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепленные файлы: Последние 5" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Attachments: Last 5 Attached" ); $this->ipsclass->DB->build_query( array( 'select' => 'a.*', 'from' => array( 'attachments' => 'a' ), - 'where' => 'attach_pid != 0', + 'where' => "attach_rel_module='post'", 'add_join' => array( # POST TABLE JOIN 1 => array( 'select' => 'p.author_id, p.author_name, p.post_date', 'from' => array( 'posts' => 'p' ), - 'where' => 'p.pid=a.attach_pid', + 'where' => 'p.pid=a.attach_rel_id', 'type' => 'left' ), # TOPIC TABLE JOIN 0 => array( 'select' => 't.tid, t.forum_id, t.title', @@ -578,11 +652,11 @@ class ad_attachments { { $r['stitle'] = $this->ipsclass->txt_truncate($r['title'], 30); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , - "{$r['attach_file']}", + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "image_dir}/{$this->ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , + "{$r['attach_file']}", $this->ipsclass->size_format($r['attach_filesize']), $r['members_display_name'], - "{$r['stitle']}", + "{$r['stitle']}", $this->ipsclass->get_date( $r['post_date'], 'SHORT', 1 ), "
    ", ) ); @@ -595,23 +669,23 @@ class ad_attachments { //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Файл", "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Размер" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Автор" , "15%" ); - $this->ipsclass->adskin->td_header[] = array( "Тема" , "25%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата ", "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Attachment", "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Size" , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Author" , "15%" ); + $this->ipsclass->adskin->td_header[] = array( "Topic" , "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Posted ", "25%" ); $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепленные файлы: 5 наибольших" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Attachments: Largest 5 Topic Attachments" ); $this->ipsclass->DB->build_query( array( 'select' => 'a.*', 'from' => array( 'attachments' => 'a' ), - 'where' => 'attach_pid != 0', + 'where' => "attach_rel_module='post'", 'add_join' => array( # POST TABLE JOIN 1 => array( 'select' => 'p.author_id, p.author_name, p.post_date', 'from' => array( 'posts' => 'p' ), - 'where' => 'p.pid=a.attach_pid', + 'where' => 'p.pid=a.attach_rel_id', 'type' => 'left' ), # TOPIC TABLE JOIN 0 => array( 'select' => 't.tid, t.forum_id, t.title', @@ -633,11 +707,11 @@ class ad_attachments { { $r['stitle'] = $this->ipsclass->txt_truncate($r['title'], 30); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , - "{$r['attach_file']}", + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "image_dir}/{$this->ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , + "{$r['attach_file']}", $this->ipsclass->size_format($r['attach_filesize']), $r['members_display_name'], - "{$r['stitle']}", + "{$r['stitle']}", $this->ipsclass->get_date( $r['post_date'], 'SHORT', 1 ), "
    ", ) ); @@ -650,23 +724,23 @@ class ad_attachments { //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Файл", "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Просмотров" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Автор" , "15%" ); - $this->ipsclass->adskin->td_header[] = array( "Тема" , "25%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата ", "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Attachment", "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Viewed" , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Author" , "15%" ); + $this->ipsclass->adskin->td_header[] = array( "Topic" , "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Posted ", "25%" ); $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепленные файлы: 5 с наибольшим количеством просмотров" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Attachments: Top 5 Most Viewed" ); $this->ipsclass->DB->build_query( array( 'select' => 'a.*', 'from' => array( 'attachments' => 'a' ), - 'where' => 'attach_pid != 0', + 'where' => "attach_rel_module='post'", 'add_join' => array( # POST TABLE JOIN 1 => array( 'select' => 'p.author_id, p.author_name, p.post_date', 'from' => array( 'posts' => 'p' ), - 'where' => 'p.pid=a.attach_pid', + 'where' => 'p.pid=a.attach_rel_id', 'type' => 'left' ), # TOPIC TABLE JOIN 0 => array( 'select' => 't.tid, t.forum_id, t.title', @@ -690,19 +764,19 @@ class ad_attachments { $size = $this->ipsclass->size_format($r['attach_filesize']); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , - "{$r['attach_file']}", + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "image_dir}/{$this->ipsclass->cache['attachtypes'][ $r['attach_ext'] ]['atype_img']}' border='0' />" , + "{$r['attach_file']}", $r['attach_hits'], $r['members_display_name'], - "{$r['stitle']}", + "{$r['stitle']}", $this->ipsclass->get_date( $r['post_date'], 'SHORT', 1 ), "
    ", ) ); } - $removebutton = ""; + $removebutton = ""; - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $removebutton, "right", "pformstrip"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $removebutton, "right", "tablesubheader"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -729,7 +803,7 @@ class ad_attachments { if ( ! $content ) { - $this->ipsclass->main_msg = "Неудачная загрузка, в файле ipb_attachtypes.xml что-то пропущено или файл пуст"; + $this->ipsclass->main_msg = "Upload failed, ipb_attachtypes.xml was either missing or empty"; $this->attach_type_start(); } @@ -737,7 +811,7 @@ class ad_attachments { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -748,7 +822,7 @@ class ad_attachments { $xml->xml_parse_document( $content ); //----------------------------------------- - // Get current badwords + // Get current attachment types //----------------------------------------- $types = array(); @@ -765,7 +839,7 @@ class ad_attachments { // pArse //----------------------------------------- - foreach( $xml->xml_array['attachtypesexport']['attachtypesgroup']['attachtype'] as $idx => $entry ) + foreach( $xml->xml_array['attachtypesexport']['attachtypesgroup']['attachtype'] as $entry ) { $insert_array = array( 'atype_extension' => $entry['atype_extension']['VALUE'], 'atype_mimetype' => $entry['atype_mimetype']['VALUE'], @@ -787,7 +861,7 @@ class ad_attachments { $this->attach_type_rebuildcache(); - $this->ipsclass->main_msg = "Импортирование типов прикрепляемых файлов успешно завершено"; + $this->ipsclass->main_msg = "Attachment Types XML file import completed"; $this->attach_type_start(); @@ -805,7 +879,7 @@ class ad_attachments { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -863,7 +937,7 @@ class ad_attachments { $this->attach_type_rebuildcache(); - $this->ipsclass->main_msg = "Тип прикрепляемого файла удален"; + $this->ipsclass->main_msg = "Attachment type deleted"; $this->attach_type_start(); } @@ -884,7 +958,7 @@ class ad_attachments { if ( ! $this->ipsclass->input['atype_extension'] or ! $this->ipsclass->input['atype_mimetype'] ) { - $this->ipsclass->main_msg = "Вы должны ввести расширение и MIME-тип файла для продолжения."; + $this->ipsclass->main_msg = "You must enter at least an extension and mime-type before continuing."; $this->attach_type_form( $type ); } @@ -905,20 +979,20 @@ class ad_attachments { if ( $attach['atype_id'] ) { - $this->ipsclass->main_msg = "Расширение файла '{$save_array['atype_extension']}' уже существует, выберите другое расширение файла."; + $this->ipsclass->main_msg = "The extension '{$save_array['atype_extension']}' already exists, please choose another extension."; $this->attach_type_form($type); } $this->ipsclass->DB->do_insert( 'attachments_type', $save_array ); - $this->ipsclass->main_msg = "Тип прикрепляемого файла добавлен"; + $this->ipsclass->main_msg = "Attachment type added"; } else { $this->ipsclass->DB->do_update( 'attachments_type', $save_array, 'atype_id='.$this->ipsclass->input['id'] ); - $this->ipsclass->main_msg = "Тип прикрепляемого файла изменен"; + $this->ipsclass->main_msg = "Attachment type edited"; } $this->attach_type_rebuildcache(); @@ -935,13 +1009,15 @@ class ad_attachments { function attach_type_form( $type='add' ) { - $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); - $this->ipsclass->input['baseon'] = intval($this->ipsclass->input['baseon']); + $this->ipsclass->input['id'] = isset($this->ipsclass->input['id']) ? intval($this->ipsclass->input['id']) : 0; + $this->ipsclass->input['baseon'] = isset($this->ipsclass->input['baseon']) ? intval($this->ipsclass->input['baseon']) : 0; + + $this->ipsclass->admin->nav[] = array( '', 'Add/Edit Attachment Type' ); if ( $type == 'add' ) { $code = 'attach_doadd'; - $button = 'Добавить новый тип файла'; + $button = 'Add New Attachment Type'; if ( $this->ipsclass->input['baseon'] ) { @@ -949,7 +1025,11 @@ class ad_attachments { } else { - $attach = array(); + $attach = array( 'atype_extension' => '', + 'atype_mimetype' => '', + 'atype_post' => '', + 'atype_photo' => '', + 'atype_img' => '' ); } //----------------------------------------- @@ -963,13 +1043,14 @@ class ad_attachments { while( $r = $this->ipsclass->DB->fetch_row() ) { - $dd .= "\n"; + $dd .= "\n"; } $title = "
    -   + +  
    {$button}
    "; @@ -977,13 +1058,13 @@ class ad_attachments { else { $code = 'attach_doedit'; - $button = 'Изменить тип файла'; + $button = 'Edit Attachment Type'; $title = $button; $attach = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'attachments_type', 'where' => 'atype_id='.$this->ipsclass->input['id'] ) ); if ( ! $attach['atype_id'] ) { - $this->ipsclass->main_msg = "Не выбран не один ID."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->attach_type_start(); } } @@ -1007,24 +1088,24 @@ class ad_attachments { // FORM //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Расширение прикрепляемого файла
    Обычно состоит из трех символов, является суффиксом файла.
    Не требуется вводить точку '.' до расширения файла.
    ", - $this->ipsclass->adskin->form_simple_input( 'atype_extension', $_POST['atype_extension'] ? $_POST['atype_extension'] : $attach['atype_extension'], 10 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Attachment File Extension
    This is the (usually) three character filename suffix.
    You don't need to add the '.' before the extension
    ", + $this->ipsclass->adskin->form_simple_input( 'atype_extension', ( isset($_POST['atype_extension']) AND $_POST['atype_extension'] ) ? $_POST['atype_extension'] : $attach['atype_extension'], 10 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "MIME-тип файла
    Не уверены какой MIME-тип у выбранного файла?..
    Попробуйте найти здесь
    ", - $this->ipsclass->adskin->form_simple_input( 'atype_mimetype', $_POST['atype_mimetype'] ? $_POST['atype_mimetype'] : $attach['atype_mimetype'], 40 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Attachment Mime-Type
    Unsure what the correct mime-type is?. Try looking here
    ", + $this->ipsclass->adskin->form_simple_input( 'atype_mimetype', ( isset($_POST['atype_mimetype']) AND $_POST['atype_mimetype'] ) ? $_POST['atype_mimetype'] : $attach['atype_mimetype'], 40 ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Разрешить прикреплять этот тип файла к сообщениям?", - $this->ipsclass->adskin->form_yes_no( 'atype_post', $_POST['atype_post'] ? $_POST['atype_post'] : $attach['atype_post'] ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Allow this attachment in posts?", + $this->ipsclass->adskin->form_yes_no( 'atype_post', ( isset($_POST['atype_post']) AND $_POST['atype_post'] ) ? $_POST['atype_post'] : $attach['atype_post'] ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Разрешить использовать этот тип файла как аватару / фотографию?", - $this->ipsclass->adskin->form_yes_no( 'atype_photo', $_POST['atype_photo'] ? $_POST['atype_photo'] : $attach['atype_photo'] ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Allow this attachment in avatars / personal photos?", + $this->ipsclass->adskin->form_yes_no( 'atype_photo', ( isset($_POST['atype_photo']) AND $_POST['atype_photo'] ) ? $_POST['atype_photo'] : $attach['atype_photo'] ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Миниизображение файла
    Маленькая иконка указывающая тип файла в сообщении.
    ", - $this->ipsclass->adskin->form_simple_input( 'atype_img', $_POST['atype_img'] ? $_POST['atype_img'] : $attach['atype_img'], 40 ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Attachment Mini-Image
    This is the little icon that represents the attachment type in a post.
    ", + $this->ipsclass->adskin->form_simple_input( 'atype_img', ( isset($_POST['atype_img']) AND $_POST['atype_img'] ) ? $_POST['atype_img'] : $attach['atype_img'], 40 ), ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form($button); @@ -1046,24 +1127,6 @@ class ad_attachments { function attach_type_start() { - $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Расширение" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "MIME-тип" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Использование в сообщениях" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Использование в аватарах" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Действия" , "20%" ); - - $export_button = $this->ipsclass->adskin->js_make_button("Экспортировать типы прикрепляемых файлов", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=attach_export"); - - $table = " - - - - -
    Типы прикрепляемых файлов{$export_button}
    "; - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $table ); - //----------------------------------------- // Get 'em //----------------------------------------- @@ -1071,29 +1134,20 @@ class ad_attachments { $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'attachments_type', 'order' => 'atype_extension' ) ); $this->ipsclass->DB->simple_exec(); + $attach_html = ""; + while( $r = $this->ipsclass->DB->fetch_row() ) { - $checked_img = "X"; - $apost_checked = $r['atype_post'] ? $checked_img : ' '; - $aphoto_checked = $r['atype_photo'] ? $checked_img : ' '; + $r['_imagedir'] = $this->image_dir; - $edit = $this->ipsclass->adskin->js_make_button("Изменить", "{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=attach_edit&id={$r['atype_id']}" ); - $delete = $this->ipsclass->adskin->js_make_button("Удалить", "{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=attach_delete&id={$r['atype_id']}", 'realdarkbutton' ); + $checked_img = "X"; + $r['apost_checked'] = $r['atype_post'] ? $checked_img : ' '; + $r['aphoto_checked'] = $r['atype_photo'] ? $checked_img : ' '; - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "", - ".{$r['atype_extension']}", - $r['atype_mimetype'], - "
    {$apost_checked}
    ", - "
    {$aphoto_checked}
    ", - "
    {$edit}     {$delete}
    ", - ) ); + $attach_html .= $this->html->attach_row( $r ); } - $add_new = $this->ipsclass->adskin->js_make_button("Добавить новый тип прикрепляемого файла", "{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=attach_add" ); - - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $add_new, "center", "pformstrip"); - - $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + $this->ipsclass->html .= $this->html->attach_wrapper( $attach_html ); //----------------------------------------- // IMPORT: Start output @@ -1106,14 +1160,14 @@ class ad_attachments { ) , "uploadform", " enctype='multipart/form-data'" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Импортирование списка прикреплеяемых файлов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Import an Attachment Types List" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Загрузка XML-архива со списком прикрепляемых файлов
    Выберите файл для загрузки с вашего компьютера 'ipb_attachtypes.xml' или 'ipb_attachtypes.xml.gz'. Двойные записи импортированы не будут.
    ", + "Upload XML Attachment Types List
    Browse your computer for 'ipb_attachtypes.xml' or 'ipb_attachtypes.xml.gz'. Duplicate entries will not be imported.
    ", $this->ipsclass->adskin->form_upload( ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Импортировать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Import"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); diff --git a/upload/sources/action_admin/banandbadword.php b/upload/sources/action_admin/banandbadword.php index aa7c1ade..f1d32ae4 100644 --- a/upload/sources/action_admin/banandbadword.php +++ b/upload/sources/action_admin/banandbadword.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-06 10:09:22 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 611 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -37,13 +27,15 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } class ad_banandbadword { var $functions = ""; + var $ipsclass; + var $html; /** * Section title name @@ -61,24 +53,15 @@ class ad_banandbadword { function auto_run() { + $this->html = $this->ipsclass->acp_load_template('cp_skin_bbcode_badword'); + //----------------------------------------- // Require and RUN !! THERES A BOMB //----------------------------------------- $this->ipsclass->admin->page_detail = ""; - $this->ipsclass->admin->page_title = "Фильтры блокировки (ban)"; + $this->ipsclass->admin->page_title = "Ban Manager"; - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // What to do... //----------------------------------------- @@ -149,6 +132,8 @@ class ad_banandbadword { function ban_rebuildcache() { + require_once ROOT_PATH.'sources/classes/bbcode/class_bbcode_core.php'; + $this->ipsclass->cache['banfilters'] = array(); $this->ipsclass->DB->simple_construct( array( 'select' => 'ban_content', 'from' => 'banfilters', 'where' => "ban_type='ip'" ) ); @@ -159,6 +144,8 @@ class ad_banandbadword { $this->ipsclass->cache['banfilters'][] = $r['ban_content']; } + usort( $this->ipsclass->cache['badwords'] , array( 'class_bbcode_core', 'word_length_sort' ) ); + $this->ipsclass->update_cache( array( 'name' => 'banfilters', 'array' => 1, 'deletefirst' => 1 ) ); } @@ -181,6 +168,8 @@ class ad_banandbadword { } } + $ids = $this->ipsclass->clean_int_array( $ids ); + if ( count( $ids ) ) { $this->ipsclass->DB->simple_construct( array( 'delete' => 'banfilters', 'where' => 'ban_id IN('.implode( ",",$ids ).')' ) ); @@ -189,7 +178,7 @@ class ad_banandbadword { $this->ban_rebuildcache(); - $this->ipsclass->main_msg = "Бан удален"; + $this->ipsclass->main_msg = "Ban filters removed"; $this->ban_start(); } @@ -201,7 +190,7 @@ class ad_banandbadword { { if ( ! $this->ipsclass->input['bantext'] ) { - $this->ipsclass->main_msg = "Вы должны ввести заменяемое слово!"; + $this->ipsclass->main_msg = "You must enter something to add to the ban filters!"; $this->ban_start(); } @@ -213,7 +202,7 @@ class ad_banandbadword { if ( $result['ban_id'] ) { - $this->ipsclass->main_msg = "Такое значение уже есть."; + $this->ipsclass->main_msg = "Duplicate entry, entry not added to the ban filters database."; $this->ban_start(); } @@ -221,7 +210,7 @@ class ad_banandbadword { $this->ban_rebuildcache(); - $this->ipsclass->main_msg = "Добавлен новый бан фильтр"; + $this->ipsclass->main_msg = "Ban filter added"; $this->ban_start(); @@ -233,10 +222,11 @@ class ad_banandbadword { function ban_start() { - $this->ipsclass->admin->page_title = "Управление фильтрами блокировки"; + $this->ipsclass->admin->page_title = "Ban Control"; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=ban', 'Ban Filters' ); - $this->ipsclass->admin->page_detail = "Эта секция позволяет вам изменять, удалять и добавлять ip-адреса, e-mail и зарезервированные имена в фильтр для блокировки. -
    Вы можете использовать «символ звездочки» — * , для любого(ых) символа(ов) ip-адреса или e-mail. (например: 127.0.*, *@mail.ru)"; + $this->ipsclass->admin->page_detail = "This section allows you to modify, delete or add IP addresses, email addresses and reserved names to the ban filters. +
    You can use * as a wildcard in any Username, IP or email filter. (Example: 127.0.*, *@yahoo.com, bannedname*)"; //----------------------------------------- // Get things @@ -262,22 +252,22 @@ class ad_banandbadword { ) ); $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Запись" , "80%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата добавления" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Entry" , "80%" ); + $this->ipsclass->adskin->td_header[] = array( "Date Added" , "20%" ); //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Управление фильтрами блокировки" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Ban Control" ); //----------------------------------------- // Banned IP Addresses //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Заблокированные ip-адреса", "left", "pformstrip"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Banned IP Addresses", "left", "tablesubheader"); - if ( is_array( $ban['ip'] ) and count( $ban['ip'] ) ) + if ( isset($ban['ip']) AND is_array( $ban['ip'] ) AND count( $ban['ip'] ) ) { - foreach ( $ban['ip'] as $id => $entry ) + foreach ( $ban['ip'] as $entry ) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "", $entry['ban_content'], @@ -287,18 +277,18 @@ class ad_banandbadword { } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Заблокированных IP-адресов нет", "left", "tdrow1"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("No Entered Banned IP Addresses", "left", "tablerow1"); } //----------------------------------------- // Banned Email Addresses //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Заблокированные e-mail адреса", "left", "pformstrip"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Banned Email Addresses", "left", "tablesubheader"); - if ( is_array( $ban['email'] ) and count( $ban['email'] ) ) + if ( isset($ban['email']) AND is_array( $ban['email'] ) AND count( $ban['email'] ) ) { - foreach ( $ban['email'] as $id => $entry ) + foreach ( $ban['email'] as $entry ) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "", $entry['ban_content'], @@ -308,18 +298,18 @@ class ad_banandbadword { } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Заблокированных e-mail адресов нет", "left", "tdrow1"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("No Entered Banned Email Addresses", "left", "tablerow1"); } //----------------------------------------- // Banned Names //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Запрещенные к регистрации имена пользователей", "left", "pformstrip"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Non-Registerable Names", "left", "tablesubheader"); - if ( is_array( $ban['name'] ) and count( $ban['name'] ) ) + if ( isset($ban['name']) AND is_array( $ban['name'] ) AND count( $ban['name'] ) ) { - foreach ( $ban['name'] as $id => $entry ) + foreach ( $ban['name'] as $entry ) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "", $entry['ban_content'], @@ -329,17 +319,17 @@ class ad_banandbadword { } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Запрещенных к регистрации имен пользователей нет", "left", "tdrow1"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("No Entered Names", "left", "tablerow1"); } $end_it_now = "
    - +
    -
    - -
    "; +
    + +
    "; - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $end_it_now, "center", "pformstrip"); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $end_it_now, "center", "tablesubheader"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -362,15 +352,16 @@ class ad_banandbadword { if ( ! $content ) { - $this->ipsclass->main_msg = "Закачка не совершена, ipb_badwords.xml некорректный или пуст"; + $this->ipsclass->main_msg = "Upload failed, ipb_badwords.xml was either missing or empty"; $this->badword_start(); + return; } //----------------------------------------- // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -380,6 +371,13 @@ class ad_banandbadword { $xml->xml_parse_document( $content ); + if( !is_array($xml->xml_array['badwordexport']['badwordgroup']['badword']) OR !count($xml->xml_array['badwordexport']['badwordgroup']['badword']) ) + { + $this->ipsclass->main_msg = "XML Import failed: ipb_badwords.xml is either empty or in the wrong format"; + $this->badword_start(); + return; + } + //----------------------------------------- // Get current badwords //----------------------------------------- @@ -398,7 +396,7 @@ class ad_banandbadword { // pArse //----------------------------------------- - foreach( $xml->xml_array['badwordexport']['badwordgroup']['badword'] as $idx => $entry ) + foreach( $xml->xml_array['badwordexport']['badwordgroup']['badword'] as $entry ) { $type = $entry['type']['VALUE']; $swop = $entry['swop']['VALUE']; @@ -417,7 +415,7 @@ class ad_banandbadword { $this->badword_rebuildcache(); - $this->ipsclass->main_msg = "Импорт XML файла прошел успешно"; + $this->ipsclass->main_msg = "Badword XML file import completed"; $this->badword_start(); @@ -433,7 +431,7 @@ class ad_banandbadword { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -481,40 +479,24 @@ class ad_banandbadword { function badword_start() { - $this->ipsclass->admin->page_detail = "В этой секции вы можете добавлять, изменять и удалять фильтры нецензурных слов.
    Фильтр нецензурных слов позволяет вам заменять нецензурные слова в сообщениях пользователей, в подписях и в названиях тем.

    Совпадение по маске: при выборе способа 'Маска', введенное вами слово будет изменяться даже в словах, содержащих в себе это слово. Например, если вы введете в фильтр слово 'коза', то это слово будет изменено на указанный вами заменитель и в слове 'стрекоза'. Если вы не введете заменитель, то нецензурное слово будет изменено на шесть символов «решетки» — # -

    Точное совпадение:: При выборе способа 'Точный', введенное вами слово будет изменяться на заменитель только при точном совпадении этого слова. Например, если вы введете в фильтр слово 'коза', то это слово будет изменено на указанный вами заменитель, только в слове 'коза'. Если вы не введете заменитель, то нецензурное слово будет изменено на шесть символов «решетки» — #. -Данная опция чувствительна к регистру."; - $this->ipsclass->admin->page_title = "Фильтр нецензурных слов"; + //----------------------------------------- + // INIT + //----------------------------------------- + + $badword_html = ""; + + $this->ipsclass->admin->page_detail = "You can add/edit and remove bad word filters in this section.
    The badword filter allows you to globally replace words from a members post, signature and topic title.

    Loose matching: If you entered 'hell' as a bad word, it will replace 'hell' and 'hello' with either your replacement if entered or 6 hashes (case insensitive)

    Exact matching: If you entered 'hell' as a bad word, it will replace 'hell' only with either your replacement if entered or 6 hashes (case insensitive)"; + $this->ipsclass->admin->page_title = "Bad Word Filter"; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=badword', 'Bad Word Filters' ); //----------------------------------------- // Start form //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'badword_add' ), - 2 => array( 'act' , 'babw' ), - 4 => array( 'section', $this->ipsclass->section_code ), - ) ); - - $this->ipsclass->adskin->td_header[] = array( "Слово" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Замена" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Метод" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Изменить" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Удалить" , "10%" ); - - //----------------------------------------- - // Start table - //----------------------------------------- - - $export_button = $this->ipsclass->adskin->js_make_button("Импортирование файла с фильтрами нецензурных слов", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=badword_export"); - - $table = " - - - - -
    Текущие фильтры{$export_button}
    "; - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $table ); + 2 => array( 'act' , 'babw' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'badwords', 'order' => 'type' ) ); $this->ipsclass->DB->simple_exec(); @@ -526,46 +508,18 @@ class ad_banandbadword { $words[] = $r; } - //usort($words, array( 'ad_settings', 'perly_word_sort' ) ); - - foreach($words as $idx => $r) + foreach($words as $r) { - - $replace = $r['swop'] ? stripslashes($r['swop']) : '######'; + $r['replace'] = $r['swop'] ? stripslashes($r['swop']) : '######'; + $r['method'] = $r['m_exact'] ? 'Exact' : 'Loose'; + $r['type'] = stripslashes($r['type']); - $method = $r['m_exact'] ? 'Точный' : 'Маска'; - - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( stripslashes($r['type']), - $replace, - $method, - "
    Изменить
    ", - "
    Удалить
    ", - ) ); + $badword_html .= $this->html->badword_row( $r ); } } - $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); - - - $this->ipsclass->adskin->td_header[] = array( "Слово" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Замена" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Метод" , "20%" ); - - //----------------------------------------- - // Add new filter - //----------------------------------------- - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Добавление нового фильтра" ); - - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $this->ipsclass->adskin->form_input('before'), - $this->ipsclass->adskin->form_input('after'), - $this->ipsclass->adskin->form_dropdown( 'match', array( 0 => array( 1, 'Точный' ), 1 => array( 0, 'Маска' ) ) ) - ) ); - - $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Добавить новый фильтр'); - - $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + $this->ipsclass->html .= $this->html->badword_wrapper( $badword_html ); //----------------------------------------- // IMPORT: Start table @@ -585,19 +539,18 @@ class ad_banandbadword { ) , "uploadform", " enctype='multipart/form-data'" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Импортирование файла с фильтрами нецензурных слов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Import a Badword List" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Загрузка XML-файла с фильтрами
    Выберите файл для загрузки с вашего компьютера 'ipb_badwords.xml' или 'ipb_badwords.xml.gz'. Двойные записи импортированы не будут.
    ", + "Upload XML Badword List
    Browse your computer for 'ipb_badwords.xml' or 'ipb_badwords.xml.gz'. Duplicate entries will not be imported.
    ", $this->ipsclass->adskin->form_upload( ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Импортировать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Import"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); - } //----------------------------------------- @@ -608,7 +561,7 @@ class ad_banandbadword { { if ($this->ipsclass->input['before'] == "") { - $this->ipsclass->admin->error("Вы должны ввести заменяемое слово!"); + $this->ipsclass->admin->error("You must enter a word to replace, silly!"); } if ($this->ipsclass->input['id'] == "") @@ -627,7 +580,7 @@ class ad_banandbadword { $this->badword_rebuildcache(); - $this->ipsclass->main_msg = "Фильтр изменен"; + $this->ipsclass->main_msg = "Filter edited"; $this->badword_start(); } @@ -638,14 +591,16 @@ class ad_banandbadword { function badword_edit() { - $this->ipsclass->admin->page_detail = "Выможете изменить выбранный фильтр в форме ниже"; - $this->ipsclass->admin->page_title = "Фильтр нецензурных слов"; + $this->ipsclass->admin->page_detail = "You may edit the chosen filter below"; + $this->ipsclass->admin->page_title = "Bad Word Filter"; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=badword', 'Bad Word Filters' ); + $this->ipsclass->admin->nav[] = array( '', 'Edit Bad Word Filter' ); //----------------------------------------- if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Фильтр с таким id не найден!"); + $this->ipsclass->admin->error("You must pass a valid filter id, silly!"); } //----------------------------------------- @@ -655,7 +610,7 @@ class ad_banandbadword { if ( ! $r = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Мы не можем найти этот фильтр в базе данных"); + $this->ipsclass->admin->error("We could not find that filter in the database"); } //----------------------------------------- @@ -668,20 +623,20 @@ class ad_banandbadword { - $this->ipsclass->adskin->td_header[] = array( "Слово" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Замена" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Метод" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Before" , "40%" ); + $this->ipsclass->adskin->td_header[] = array( "After" , "40%" ); + $this->ipsclass->adskin->td_header[] = array( "Method" , "20%" ); //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Редактирование фильтра" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Edit a filter" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $this->ipsclass->adskin->form_input('before', stripslashes($r['type']) ), $this->ipsclass->adskin->form_input('after' , stripslashes($r['swop']) ), - $this->ipsclass->adskin->form_dropdown( 'match', array( 0 => array( 1, 'Точный' ), 1 => array( 0, 'Маска' ) ), $r['m_exact'] ) + $this->ipsclass->adskin->form_dropdown( 'match', array( 0 => array( 1, 'Exact' ), 1 => array( 0, 'Loose' ) ), $r['m_exact'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Редактировать фильтр'); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Edit Filter'); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -704,9 +659,10 @@ class ad_banandbadword { $this->badword_rebuildcache(); - $this->ipsclass->main_msg = "Фильтр удален"; + $this->ipsclass->main_msg = "Filter removed"; $this->badword_start(); + return; } //----------------------------------------- @@ -717,7 +673,7 @@ class ad_banandbadword { { if ($this->ipsclass->input['before'] == "") { - $this->ipsclass->admin->error("Вы должны ввести слово для замены"); + $this->ipsclass->admin->error("You must enter a word to replace, silly!"); } $this->ipsclass->input['match'] = $this->ipsclass->input['match'] ? 1 : 0; @@ -731,7 +687,7 @@ class ad_banandbadword { $this->badword_rebuildcache(); - $this->ipsclass->main_msg = "Фильтр пуст"; + $this->ipsclass->main_msg = "New filter added"; $this->badword_start(); } diff --git a/upload/sources/action_admin/bbcode.php b/upload/sources/action_admin/bbcode.php index e240fc5a..d76a4d4b 100644 --- a/upload/sources/action_admin/bbcode.php +++ b/upload/sources/action_admin/bbcode.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-06 12:18:32 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 614 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -37,13 +27,15 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } class ad_bbcode { var $functions = ""; + var $ipsclass; + var $html; /** * Section title name @@ -61,24 +53,16 @@ class ad_bbcode { function auto_run() { + $this->html = $this->ipsclass->acp_load_template('cp_skin_bbcode_badword'); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'BBCode Manager' ); + //----------------------------------------- // Require and RUN !! THERES A BOMB //----------------------------------------- - $this->ipsclass->admin->page_detail = "Эта секция позволяет вам добавлять новые BB-тэги."; - $this->ipsclass->admin->page_title = "Менеджер настройки BB-кодов"; + $this->ipsclass->admin->page_detail = "The BBCode manager allows you to create and manage your BBCodes."; + $this->ipsclass->admin->page_title = "BBCode Manager"; - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // What to do... //----------------------------------------- @@ -143,7 +127,7 @@ class ad_bbcode { function bbcode_import() { - $content = $this->ipsclass->admin->import_xml( 'ipb_bbcode.xml' ); + $content = $this->ipsclass->admin->import_xml( 'bbcode.xml' ); //----------------------------------------- // Got anything? @@ -151,7 +135,7 @@ class ad_bbcode { if ( ! $content ) { - $this->ipsclass->main_msg = "Невозможно загрузить, ipb_bbcode.xml был не найдет или оказался путым"; + $this->ipsclass->main_msg = "Upload failed, ipb_bbcode.xml was either missing or empty"; $this->bbcode_start(); } @@ -159,7 +143,7 @@ class ad_bbcode { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -170,7 +154,7 @@ class ad_bbcode { $xml->xml_parse_document( $content ); //----------------------------------------- - // Get current badwords + // Get current custom bbcodes //----------------------------------------- $tags = array(); @@ -192,29 +176,52 @@ class ad_bbcode { $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'][0] = $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode']; } - foreach( $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'] as $idx => $entry ) + foreach( $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'] as $entry ) { - $bbcode_title = $entry['bbcode_title']['VALUE']; - $bbcode_desc = $entry['bbcode_desc']['VALUE']; - $bbcode_tag = $entry['bbcode_tag']['VALUE']; - $bbcode_replace = $entry['bbcode_replace']['VALUE']; - $bbcode_useoption = $entry['bbcode_useoption']['VALUE']; - $bbcode_example = $entry['bbcode_example']['VALUE']; + $bbcode_title = $entry['bbcode_title']['VALUE']; + $bbcode_desc = $entry['bbcode_desc']['VALUE']; + $bbcode_tag = $entry['bbcode_tag']['VALUE']; + $bbcode_replace = $entry['bbcode_replace']['VALUE']; + $bbcode_useoption = $entry['bbcode_useoption']['VALUE']; + $bbcode_example = $entry['bbcode_example']['VALUE']; + $bbcode_switch_option = $entry['bbcode_switch_option']['VALUE']; + $bbcode_add_into_menu = $entry['bbcode_add_into_menu']['VALUE']; + $bbcode_menu_option_text = $entry['bbcode_menu_option_text']['VALUE']; + $bbcode_menu_content_text = $entry['bbcode_menu_content_text']['VALUE']; if ( $tags[ $bbcode_tag ] ) { + $bbarray = array( + 'bbcode_title' => $bbcode_title, + 'bbcode_desc' => $bbcode_desc, + 'bbcode_tag' => $bbcode_tag, + 'bbcode_replace' => $this->ipsclass->txt_safeslashes($bbcode_replace), + 'bbcode_useoption' => $bbcode_useoption, + 'bbcode_example' => $bbcode_example, + 'bbcode_switch_option' => $bbcode_switch_option, + 'bbcode_add_into_menu' => $bbcode_add_into_menu, + 'bbcode_menu_option_text' => $bbcode_menu_option_text, + 'bbcode_menu_content_text' => $bbcode_menu_content_text, + ); + + $this->ipsclass->DB->do_update( 'custom_bbcode', $bbarray, "bbcode_tag='".$bbcode_tag."'" ); + continue; } if ( $bbcode_tag ) { $bbarray = array( - 'bbcode_title' => $bbcode_title, - 'bbcode_desc' => $bbcode_desc, - 'bbcode_tag' => $bbcode_tag, - 'bbcode_replace' => $this->ipsclass->txt_safeslashes($bbcode_replace), - 'bbcode_useoption' => $bbcode_useoption, - 'bbcode_example' => $bbcode_example, + 'bbcode_title' => $bbcode_title, + 'bbcode_desc' => $bbcode_desc, + 'bbcode_tag' => $bbcode_tag, + 'bbcode_replace' => $this->ipsclass->txt_safeslashes($bbcode_replace), + 'bbcode_useoption' => $bbcode_useoption, + 'bbcode_example' => $bbcode_example, + 'bbcode_switch_option' => $bbcode_switch_option, + 'bbcode_add_into_menu' => $bbcode_add_into_menu, + 'bbcode_menu_option_text' => $bbcode_menu_option_text, + 'bbcode_menu_content_text' => $bbcode_menu_content_text, ); $this->ipsclass->DB->do_insert( 'custom_bbcode', $bbarray ); @@ -223,7 +230,7 @@ class ad_bbcode { $this->bbcode_rebuildcache(); - $this->ipsclass->main_msg = "XML файл BB-кодов был успешно импортирован"; + $this->ipsclass->main_msg = "BBCode XML file import completed"; $this->bbcode_start(); @@ -239,7 +246,7 @@ class ad_bbcode { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); @@ -278,7 +285,7 @@ class ad_bbcode { // Send to browser. //----------------------------------------- - $this->ipsclass->admin->show_download( $xml->xml_document, 'ipb_bbcode.xml' ); + $this->ipsclass->admin->show_download( $xml->xml_document, 'bbcode.xml', '', 0 ); } //----------------------------------------- @@ -289,11 +296,11 @@ class ad_bbcode { { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Нет пригодного ID, попытайтесь заново."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->bbcode_start(); } - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'custom_bbcode', 'where' => 'bbcode_id='.$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'custom_bbcode', 'where' => 'bbcode_id='.intval($this->ipsclass->input['id']) ) ); $this->bbcode_rebuildcache(); @@ -332,7 +339,9 @@ class ad_bbcode { while ( $row = $this->ipsclass->DB->fetch_row() ) { - if ( substr_count( $row['bbcode_replace'], '{content}' ) > 1 ) + $preg_tag = preg_quote($row['bbcode_tag'], '#' ); + + if ( substr_count( $row['bbcode_replace'], '{content}' ) >= 1 ) { //----------------------------------------- // Slightly slower @@ -340,20 +349,43 @@ class ad_bbcode { if ( $row['bbcode_useoption'] ) { - preg_match_all( "#(\[".$row['bbcode_tag']."=(?:"|&\#39;)?(.+?)(?:"|&\#39;)?\])(.+?)(\[/".$row['bbcode_tag']."\])#si", $t, $match ); + preg_match_all( "#(\[".preg_quote($row['bbcode_tag'], '#' )."=(?:"|&\#39;)?(.+?)(?:"|&\#39;)?\])(.+?)(\[/".preg_quote($row['bbcode_tag'], '#' )."\])#si", $t, $match ); for ($i=0; $i < count($match[0]); $i++) { + # XSS Check: Bug ID: 980 + if ( $row['bbcode_tag'] == 'post' OR $row['bbcode_tag'] == 'topic' ) + { + $match[2][$i] = intval( $match[2][$i] ); + } + + //----------------------------------------- + // Does the option tag come first? + //----------------------------------------- + + $_option = 2; + $_content = 3; + + $_o = strpos( $row['bbcode_replace'], '{option}' ); + $_c = strpos( $row['bbcode_replace'], '{content}' ); + + if ( $_c < $_o ) + { + $_option = 3; + $_content = 2; + } + $tmp = $row['bbcode_replace']; - $tmp = str_replace( '{option}' , $match[2][$i], $tmp ); - $tmp = str_replace( '{content}', $match[3][$i], $tmp ); + $tmp = str_replace( '{option}' , $match[ $_option ][$i], $tmp ); + $tmp = str_replace( '{content}', $match[ $_content ][$i], $tmp ); $t = str_replace( $match[0][$i], $tmp, $t ); } } else { - preg_match_all( "#(\[".$row['bbcode_tag']."\])(.+?)(\[/".$row['bbcode_tag']."\])#si", $t, $match ); - + # Tricky.. match anything that's not a closing tag, or nothing + preg_match_all( "#(\[$preg_tag\])((?!\[/$preg_tag\]).+?)?(\[/$preg_tag\])#si", $t, $match ); + for ($i=0; $i < count($match[0]); $i++) { $tmp = $row['bbcode_replace']; @@ -394,7 +426,7 @@ class ad_bbcode { { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Нет пригодного ID, попытайтесь заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->bbcode_form($type); } } @@ -405,38 +437,43 @@ class ad_bbcode { if ( ! $this->ipsclass->input['bbcode_title'] or ! $this->ipsclass->input['bbcode_tag'] or ! $this->ipsclass->input['bbcode_replace'] ) { - $this->ipsclass->main_msg = "Вы должны заполнить все поля."; + $this->ipsclass->main_msg = "You must complete the form fully."; $this->bbcode_form($type); } if ( ! strstr( $this->ipsclass->input['bbcode_replace'], '{content}' ) ) { - $this->ipsclass->main_msg = "Вы должны использовать {content}, в тех местах, где происходит замена BB-кодов."; + $this->ipsclass->main_msg = "You must use {content} somewhere in the BBCode replacement section."; $this->bbcode_form($type); } if ( ! strstr( $this->ipsclass->input['bbcode_replace'], '{option}' ) AND $this->ipsclass->input['bbcode_useoption'] ) { - $this->ipsclass->main_msg = "Вы должны использовать {content}, в тех местах, где происходит замена BB-кодов или в меню 'Использовать настройки в тегах' поставить 'нет'."; + $this->ipsclass->main_msg = "You must use {option} somewhere in the BBCode replacement section or set 'Use Option in tag?' to 'no'."; $this->bbcode_form($type); } - $array = array( 'bbcode_title' => $this->ipsclass->input['bbcode_title'], - 'bbcode_desc' => $this->ipsclass->txt_safeslashes( $_POST['bbcode_desc'] ), - 'bbcode_tag' => $this->ipsclass->input['bbcode_tag'], - 'bbcode_replace' => $this->ipsclass->txt_safeslashes( $_POST['bbcode_replace'] ), - 'bbcode_example' => $this->ipsclass->txt_safeslashes( $_POST['bbcode_example'] ), - 'bbcode_useoption' => $this->ipsclass->input['bbcode_useoption'] ); + $array = array( 'bbcode_title' => $this->ipsclass->input['bbcode_title'], + 'bbcode_desc' => $this->ipsclass->txt_safeslashes( $_POST['bbcode_desc'] ), + 'bbcode_tag' => $this->ipsclass->input['bbcode_tag'], + 'bbcode_replace' => $this->ipsclass->txt_safeslashes( $_POST['bbcode_replace'] ), + 'bbcode_example' => $this->ipsclass->txt_safeslashes( $_POST['bbcode_example'] ), + 'bbcode_useoption' => $this->ipsclass->input['bbcode_useoption'], + 'bbcode_switch_option' => intval( $this->ipsclass->input['bbcode_switch_option'] ), + 'bbcode_add_into_menu' => intval( $this->ipsclass->input['bbcode_add_into_menu'] ), + 'bbcode_menu_option_text' => trim( $this->ipsclass->input['bbcode_menu_option_text'] ), + 'bbcode_menu_content_text' => trim( $this->ipsclass->input['bbcode_menu_content_text'] ) + ); if ( $type == 'add' ) { $this->ipsclass->DB->do_insert( 'custom_bbcode', $array ); - $this->ipsclass->main_msg = 'Новый BB-код был добавлен'; + $this->ipsclass->main_msg = 'New BBCode Added'; } else { - $this->ipsclass->DB->do_update( 'custom_bbcode', $array, 'bbcode_id='.$this->ipsclass->input['id'] ); - $this->ipsclass->main_msg = 'BB-код отредактирован'; + $this->ipsclass->DB->do_update( 'custom_bbcode', $array, 'bbcode_id='.intval($this->ipsclass->input['id']) ); + $this->ipsclass->main_msg = 'Custom BBCode Edited'; } $this->bbcode_rebuildcache(); @@ -452,29 +489,35 @@ class ad_bbcode { function bbcode_form($type='add') { - $this->ipsclass->admin->page_detail = "Менеджер BB-кодов поможет Вам создать и настроить их деятельность. "; - $this->ipsclass->admin->page_title = "Менеджер настройки BB-кодов"; + $this->ipsclass->admin->page_detail = "The BBCode manager allows you to add new custom BBCode."; + $this->ipsclass->admin->page_title = "BBCode Manager"; + $this->ipsclass->admin->nav[] = array( '', 'Add/Edit BBCode' ); if ( $type == 'edit' ) { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Нет пригодного ID, попытайтесь заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->bbcode_start(); } - $bbcode = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'custom_bbcode', 'where' => 'bbcode_id='.$this->ipsclass->input['id'] ) ); + $bbcode = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'custom_bbcode', 'where' => 'bbcode_id='.intval($this->ipsclass->input['id']) ) ); - $button = "Отредактировать"; + $button = "Edit BBCode"; $code = 'bbcode_doedit'; - $title = "Редактирование BB-кода: ".$bbcode['bbcode_title']; + $title = "Editing BBCode: ".$bbcode['bbcode_title']; } else { - $bbcode = array(); + $bbcode = array( 'bbcode_title' => '', + 'bbcode_desc' => '', + 'bbcode_example' => '', + 'bbcode_tag' => '', + 'bbcode_useoption' => '', + 'bbcode_replace' => '' ); $code = 'bbcode_doadd'; - $title = "Добавление нового BB-кода"; - $button = "Добавить"; + $title = "Adding a new custom BBCode"; + $button = "Add BBCode"; } //----------------------------------------- @@ -492,37 +535,55 @@ class ad_bbcode { $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $title ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название BB-кода
    Используется во всплывающей подсказке BB-кода
    ", - $this->ipsclass->adskin->form_input( 'bbcode_title', $this->ipsclass->input['bbcode_title'] ? $this->ipsclass->input['bbcode_title'] : $bbcode['bbcode_title'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Custom BBCode Title
    Used on the BBCode pop-up legend
    ", + $this->ipsclass->adskin->form_input( 'bbcode_title', ( isset($this->ipsclass->input['bbcode_title']) AND $this->ipsclass->input['bbcode_title'] ) ? $this->ipsclass->input['bbcode_title'] : $bbcode['bbcode_title'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Полное описание этого BB-кода
    Используется во всплывающей подсказке BB-код
    ", - $this->ipsclass->adskin->form_textarea( 'bbcode_desc', $this->ipsclass->input['bbcode_desc'] ? $this->ipsclass->input['bbcode_desc'] : $bbcode['bbcode_desc'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Custom BBCode Description
    Used on the BBCode pop-up legend
    ", + $this->ipsclass->adskin->form_textarea( 'bbcode_desc', ( isset($this->ipsclass->input['bbcode_desc']) AND $this->ipsclass->input['bbcode_desc'] ) ? $this->ipsclass->input['bbcode_desc'] : $bbcode['bbcode_desc'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Пример этого BB-кода
    Используется во всплывающей подсказке BB-код
    Тэг для примера: [tag]Здесь Ваш пример![/tag]
    ", - $this->ipsclass->adskin->form_textarea( 'bbcode_example', $this->ipsclass->input['bbcode_example'] ? $this->ipsclass->input['bbcode_example'] : $bbcode['bbcode_example'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Custom BBCode Example
    Used on the BBCode pop-up legend
    Use the tag in the example: [tag]This is an example![/tag]
    ", + $this->ipsclass->adskin->form_textarea( 'bbcode_example', ( isset($this->ipsclass->input['bbcode_example']) AND $this->ipsclass->input['bbcode_example'] ) ? $this->ipsclass->input['bbcode_example'] : $bbcode['bbcode_example'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Тэг этого BB-кода
    Пример: Для [tag] введите tag
    ", - '[ '.$this->ipsclass->adskin->form_simple_input( 'bbcode_tag', $this->ipsclass->input['bbcode_tag'] ? $this->ipsclass->input['bbcode_tag'] : $bbcode['bbcode_tag'], 10).' ]' + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Custom BBCode Tag
    Example: For [tag] enter tag
    ", + '[ '.$this->ipsclass->adskin->form_simple_input( 'bbcode_tag', ( isset($this->ipsclass->input['bbcode_tag']) AND $this->ipsclass->input['bbcode_tag'] ) ? $this->ipsclass->input['bbcode_tag'] : $bbcode['bbcode_tag'], 10).' ]' ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Использовать опции в теге?
    Используется для создания BB-кода с опциями: [tag=option]
    ", - $this->ipsclass->adskin->form_yes_no( 'bbcode_useoption', $this->ipsclass->input['bbcode_useoption'] ? $this->ipsclass->input['bbcode_useoption'] : $bbcode['bbcode_useoption'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Use Option in tag?
    Use to create [tag=option] style tags
    ", + $this->ipsclass->adskin->form_yes_no( 'bbcode_useoption', ( isset($this->ipsclass->input['bbcode_useoption']) AND $this->ipsclass->input['bbcode_useoption'] ) ? $this->ipsclass->input['bbcode_useoption'] : $bbcode['bbcode_useoption'] ) ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Switch option around?
    Use this if you wish to swap the {content} for {option} (IE when using tags like [tag={content}]{option}[/tag]
    ", + $this->ipsclass->adskin->form_yes_no( 'bbcode_switch_option', ( isset($this->ipsclass->input['bbcode_switch_option']) AND $this->ipsclass->input['bbcode_switch_option'] ) ? $this->ipsclass->input['bbcode_switch_option'] : $bbcode['bbcode_switch_option'] ) + ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Замена BB-кода
    <tag>{content}</tag>
    <tag thing='{option}'>{content}</tag>
    ", - $this->ipsclass->adskin->form_textarea( 'bbcode_replace', $this->ipsclass->input['bbcode_replace'] ? $this->ipsclass->input['bbcode_replace'] : $bbcode['bbcode_replace'] ) - ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Custom BBCode Replacement
    <tag>{content}</tag>
    <tag thing='{option}'>{content}</tag>
    ", + $this->ipsclass->adskin->form_textarea( 'bbcode_replace', ( isset($this->ipsclass->input['bbcode_replace']) AND $this->ipsclass->input['bbcode_replace'] ) ? $this->ipsclass->input['bbcode_replace'] : $bbcode['bbcode_replace'] ) + ) ); + //----------------------------------------- + // Insert Special Options + //----------------------------------------- + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Insert into the editor's 'Insert Special' menu?", + $this->ipsclass->adskin->form_yes_no( 'bbcode_add_into_menu', ( isset($this->ipsclass->input['bbcode_add_into_menu']) AND $this->ipsclass->input['bbcode_add_into_menu'] ) ? $this->ipsclass->input['bbcode_add_into_menu'] : $bbcode['bbcode_add_into_menu'] ) + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Enter 'option' dialogue text
    Help text to use above the 'Option' text field. This will appear when the tag is chosen from the 'Insert Special' menu.
    ", + $this->ipsclass->adskin->form_simple_input( 'bbcode_menu_option_text', ( isset($this->ipsclass->input['bbcode_menu_option_text']) AND $this->ipsclass->input['bbcode_menu_option_text'] ) ? $this->ipsclass->input['bbcode_menu_option_text'] : $bbcode['bbcode_menu_option_text'], 50) + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Enter 'content' dialogue text
    Help text to use above the 'Content' text field. This will appear when the tag is chosen from the 'Insert Special' menu.
    ", + $this->ipsclass->adskin->form_simple_input( 'bbcode_menu_content_text', ( isset($this->ipsclass->input['bbcode_menu_content_text']) AND $this->ipsclass->input['bbcode_menu_content_text'] ) ? $this->ipsclass->input['bbcode_menu_content_text'] : $bbcode['bbcode_menu_content_text'], 50) + ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form( $button ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); - $this->ipsclass->html .= "
    Дополнительная информация
    Во время добавления замены BB-кода, не забудьте добавить блок {content} там, где это требуется.
    - Если вы используете опцию BB-кода [tag=option][/tag], не забудьте добавить блок {option} там, где это требуется в замене BB-кода.
    "; + $this->ipsclass->html .= "
    More Information
    When adding the BBCode replacement, don't forget to add the {content} block where you wish the tag content to go when parsed.
    + If you are using an option [tag=option][/tag] tag, don't forget to add in {option} in the BBCode replacement where you want the option to go.
    "; //----------------------------------------- @@ -536,31 +597,18 @@ class ad_bbcode { function bbcode_start() { - $this->ipsclass->admin->page_detail = "Менеджер BB-кодов позволит Вам добавить новый BB-код. "; - $this->ipsclass->admin->page_title = "Менеджер настроек BB-кода"; + $this->ipsclass->admin->page_detail = "The BBCode manager allows you to add new custom BBCode."; + $this->ipsclass->admin->page_title = "BBCode Manager"; //----------------------------------------- // Show the codes mahn! //----------------------------------------- - - $this->ipsclass->adskin->td_header[] = array( "Заголовок" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Тег" , "40%" ); - $this->ipsclass->adskin->td_header[] = array( "Опции" , "30%" ); - - $export_button = $this->ipsclass->adskin->js_make_button("Экспорт BB-кода", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=bbcode_export"); - - $table = " - - - - -
    Ваши BB-коды{$export_button}
    "; - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $table ); $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'custom_bbcode', 'order' => 'bbcode_title' ) ); $this->ipsclass->DB->simple_exec(); + $bbcode_rows = ""; + while ( $row = $this->ipsclass->DB->fetch_row() ) { if ( $row['bbcode_useoption'] ) @@ -572,20 +620,12 @@ class ad_bbcode { $option = ''; } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "".$row['bbcode_title']."", - '['.$row['bbcode_tag'].$option.']{content}[/'.$row['bbcode_tag'].']', - "
    ". - $this->ipsclass->adskin->js_make_button("Редактировать" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=bbcode_edit&id={$row['bbcode_id']}").' '. - $this->ipsclass->adskin->js_make_button("Удалить", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=bbcode_delete&id={$row['bbcode_id']}") - ."
    ", - ) ); + $row['bbcode_fulltag'] = '['.$row['bbcode_tag'].$option.']{content}[/'.$row['bbcode_tag'].']'; + + $bbcode_rows .= $this->html->bbcode_row( $row ); } - $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); - - $this->ipsclass->html .= "
    ".$this->ipsclass->adskin->js_make_button("Создать новый BB-код" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=bbcode_add")."
    "; - - $this->ipsclass->html .= "
    "; + $this->ipsclass->html .= $this->html->bbcode_wrapper( $bbcode_rows ); $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'act' , 'bbcode' ), 2 => array( 'code' , 'bbcode_test' ), @@ -595,13 +635,13 @@ class ad_bbcode { $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Проверить Ваш BB-код" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Test your custom BBCode" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Проверить Ваш BB-кодe", - $this->ipsclass->adskin->form_textarea( 'bbtest', $_POST['bbtest'] ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Test your BBCode", + $this->ipsclass->adskin->form_textarea( 'bbtest', isset($_POST['bbtest']) ? $_POST['bbtest'] : '' ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Начать проверку"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Run Test"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -623,14 +663,14 @@ class ad_bbcode { ) , "uploadform", " enctype='multipart/form-data'" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Импорт список BB-кода" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Import a BBCode List" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Загрузить XML список BB-кода
    Выберите на Вашем компьютере 'ipb_bbcode.xml'. Дублирование [tag] невозможно, импортировать не удастся.
    ", + "Upload XML BBCode List
    Browse your computer for 'bbcode.xml' or 'bbcode.xml.gz'. Duplicate [tag] entries will not be imported.
    ", $this->ipsclass->adskin->form_upload( ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Импорт"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Import"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); diff --git a/upload/sources/action_admin/calendars.php b/upload/sources/action_admin/calendars.php index 769550c6..7f0741aa 100644 --- a/upload/sources/action_admin/calendars.php +++ b/upload/sources/action_admin/calendars.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-01-31 22:47:20 +0000 (Tue, 31 Jan 2006) $ -| > $Revision: 131 $ +| > $Date: 2006-10-06 23:00:51 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 617 $ | > $Author: bfarber $ +--------------------------------------------------------------------------- | @@ -54,6 +44,7 @@ class ad_calendars function auto_run() { + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage Calendars' ); $this->html = $this->ipsclass->acp_load_template('cp_skin_management'); switch($this->ipsclass->input['code']) @@ -125,7 +116,7 @@ class ad_calendars if ( ! $cal_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->components_list(); return; } @@ -149,7 +140,7 @@ class ad_calendars $this->calendar_rebuildcache(); $this->calendar_rss_cache(); - $this->ipsclass->main_msg = "Календарь удален"; + $this->ipsclass->main_msg = "Calendar Removed"; $this->calendar_list(); } @@ -172,7 +163,7 @@ class ad_calendars if ( ! $cal_id OR ! $move ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново"; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->calendar_list(); return; } @@ -187,7 +178,7 @@ class ad_calendars $this->ipsclass->DB->do_update( 'cal_calendars', array( 'cal_position' => $new_position ), 'cal_id='.$cal_id ); - $this->ipsclass->main_msg = "Календарь перестроен"; + $this->ipsclass->main_msg = "Calendar repositioned"; $this->calendar_list(); } @@ -325,7 +316,7 @@ class ad_calendars $eventcache = $calendar->get_day_events( $month, $day, $year ); - foreach( $eventcache as $idx => $event ) + foreach( $eventcache as $event ) { if ( ! in_array( $event['event_id'], $seenids ) ) { @@ -391,6 +382,8 @@ class ad_calendars { $event['event_content'] = $this->html->calendar_rss_range( $event ); } + + $event['event_unix_from'] = $event['event_tz'] ? $event['event_unix_from'] : $event['event_unix_from'] + ( $this->ipsclass->vars['time_offset'] * 3600 ); $class_rss->create_add_item( $channel_id, array( 'title' => $event['event_title'], 'link' => $this->ipsclass->vars['board_url'].'/index.php?act=calendar&code=showevent&calendar_id='.$row['cal_id'].'&event_id='.$event['event_id'], @@ -436,7 +429,7 @@ class ad_calendars if ( $return ) { - $this->ipsclass->main_msg = "RSS события календаря были перекешованы"; + $this->ipsclass->main_msg = "Calendar Events RSS Recached"; $this->calendar_list(); } else @@ -555,7 +548,7 @@ class ad_calendars $eventcache = $calendar->get_day_events( $_month, $tday, $year ); - foreach( $eventcache as $idx => $event ) + foreach( $eventcache as $event ) { if ( ! in_array( $event['event_id'], $seenids ) ) { @@ -583,11 +576,21 @@ class ad_calendars // Grab birthdays //----------------------------------------- + $append_string = ""; + + if( !date("L") ) + { + if( $month == "2" AND ( $day == "28" OR $day == "27" ) ) + { + $append_string = " or( bday_month=2 AND bday_day=29 )"; + } + } + $this->ipsclass->DB->simple_construct( array( 'select' => 'id, members_display_name, mgroup, bday_day, bday_month, bday_year', 'from' => 'members', 'where' => "( bday_day=$last_day AND bday_month=$last_month ) or ( bday_day=$day AND bday_month=$month ) - or ( bday_day=$next_day AND bday_month=$next_month )" + or ( bday_day=$next_day AND bday_month=$next_month ) {$append_string}" ) ); $this->ipsclass->DB->simple_exec(); @@ -601,14 +604,15 @@ class ad_calendars // Update calendar array //-------------------------------------------- - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'cache_store', 'where' => "cs_key IN ('birthdays', 'calendar')" ) ); - - $this->ipsclass->DB->do_insert( 'cache_store', array( 'cs_array' => 1, 'cs_key' => 'birthdays', 'cs_value' => serialize($birthdays) ) ); - $this->ipsclass->DB->do_insert( 'cache_store', array( 'cs_array' => 1, 'cs_key' => 'calendar' , 'cs_value' => serialize($calevents) ) ); + $this->ipsclass->cache['birthdays'] =& $birthdays; + $this->ipsclass->cache['calendar'] =& $calevents; + $this->ipsclass->update_cache( array( 'name' => 'calendar', 'array' => 1, 'deletefirst' => 1 ) ); + $this->ipsclass->update_cache( array( 'name' => 'birthdays', 'array' => 1, 'deletefirst' => 1 ) ); + if ( $return ) { - $this->ipsclass->main_msg = "RSS события календаря были перекешованы"; + $this->ipsclass->main_msg = "Calendar Events Recached"; $this->calendar_list(); } } @@ -625,7 +629,7 @@ class ad_calendars //-------------------------------------------- $cal_id = intval($this->ipsclass->input['cal_id']); - $cal_title = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_UNhtmlspecialchars($_POST['cal_title'])) ); + $cal_title = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_htmlspecialchars($_POST['cal_title'])) ); $cal_moderate = intval($this->ipsclass->input['cal_moderate']); $cal_event_limit = intval($this->ipsclass->input['cal_event_limit']); $cal_bday_limit = intval($this->ipsclass->input['cal_bday_limit']); @@ -652,7 +656,7 @@ class ad_calendars { if ( ! $cal_title ) { - $this->ipsclass->main_msg = "Вы должны заполнить все поля."; + $this->ipsclass->main_msg = "You must complete the entire form."; $this->calendar_form( $type ); return; } @@ -717,15 +721,16 @@ class ad_calendars $this->ipsclass->DB->do_insert( 'cal_calendars', $array ); $cal_id = $this->ipsclass->DB->get_insert_id(); - $this->ipsclass->main_msg = 'Новый календарь добавлен'; + $this->ipsclass->main_msg = 'New Calendar Added'; } else { $this->ipsclass->DB->do_update( 'cal_calendars', $array, 'cal_id='.$cal_id ); - $this->ipsclass->main_msg = 'Календарь изменен'; + $this->ipsclass->main_msg = 'Calendar Edited'; } + $this->calendars_rebuildcache(); $this->calendar_rebuildcache( $cal_id, 0 ); $this->calendar_rss_cache( $cal_id, 0 ); $this->calendar_list(); @@ -741,11 +746,14 @@ class ad_calendars // Init Vars //----------------------------------------- - $cal_id = intval($this->ipsclass->input['cal_id']); - $form = array(); - $form['perm_read'] = ""; - $form['perm_post'] = ""; - $form['perm_nomod'] = ""; + $cal_id = isset($this->ipsclass->input['cal_id']) ? intval($this->ipsclass->input['cal_id']) : 0; + $form = array(); + $form['perm_read'] = ""; + $form['perm_post'] = ""; + $form['perm_nomod'] = ""; + $form['perm_read_all'] = ""; + $form['perm_post_all'] = ""; + $form['perm_nomod_all'] = ""; //----------------------------------------- // Check (please?) @@ -754,8 +762,21 @@ class ad_calendars if ( $type == 'add' ) { $formcode = 'calendar_add_do'; - $title = "Добавить новый календарь"; - $button = "Добавить"; + $title = "Add New Calendar"; + $button = "Add New Calendar"; + + $calendar = array( 'perm_read' => '', + 'perm_post' => '', + 'perm_nomod' => '', + 'cal_title' => '', + 'cal_moderate' => '', + 'cal_event_limit' => '', + 'cal_bday_limit' => '', + 'cal_rss_export' => '', + 'cal_rss_update' => '', + 'cal_rss_export_days' => '', + 'cal_rss_export_max' => '', + 'cal_id' => 0 ); } else { @@ -764,40 +785,40 @@ class ad_calendars if ( ! $calendar['cal_id'] ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->components_list(); return; } $formcode = 'calendar_edit_do'; - $title = "Редактирование: ".$calendar['cal_title']; - $button = "Сохранить изменения"; + $title = "Edit Calendar ".$calendar['cal_title']; + $button = "Save Changes"; } //----------------------------------------- // Build Groups //----------------------------------------- - $perm_read_array = is_array( $_POST['perm_read'] ) ? $_POST['perm_read'] : explode( ',', $calendar['perm_read'] ); - $perm_post_array = is_array( $_POST['perm_post'] ) ? $_POST['perm_post'] : explode( ',', $calendar['perm_post'] ); - $perm_nomod_array = is_array( $_POST['perm_nomod'] ) ? $_POST['perm_nomod'] : explode( ',', $calendar['perm_nomod'] ); + $perm_read_array = ( isset($_POST['perm_read']) AND is_array( $_POST['perm_read'] ) ) ? $_POST['perm_read'] : explode( ',', $calendar['perm_read'] ); + $perm_post_array = ( isset($_POST['perm_post']) AND is_array( $_POST['perm_post'] ) ) ? $_POST['perm_post'] : explode( ',', $calendar['perm_post'] ); + $perm_nomod_array = ( isset($_POST['perm_nomod']) AND is_array( $_POST['perm_nomod'] ) ) ? $_POST['perm_nomod'] : explode( ',', $calendar['perm_nomod'] ); $perm_read_all = FALSE; $perm_post_all = FALSE; $perm_nomod_all = FALSE; - if ( in_array( '*', $perm_read_array ) OR $_POST['perm_read_all'] ) + if ( in_array( '*', $perm_read_array ) OR ( isset($_POST['perm_read_all']) AND $_POST['perm_read_all'] ) ) { $perm_read_all = TRUE; $form['perm_read_all'] = ' checked="checked"'; } - if ( in_array( '*', $perm_post_array ) OR $_POST['perm_post_all'] ) + if ( in_array( '*', $perm_post_array ) OR ( isset($_POST['perm_post_all']) AND $_POST['perm_post_all'] ) ) { $perm_post_all = TRUE; $form['perm_post_all'] = ' checked="checked"'; } - if ( in_array( '*', $perm_nomod_array ) OR $_POST['perm_nomod_all'] ) + if ( in_array( '*', $perm_nomod_array ) OR ( isset($_POST['perm_nomod_all']) AND $_POST['perm_nomod_all'] ) ) { $perm_nomod_all = TRUE; $form['perm_nomod_all'] = ' checked="checked"'; @@ -856,32 +877,30 @@ class ad_calendars // Form elements //----------------------------------------- - $form['cal_title'] = $this->ipsclass->adskin->form_input( 'cal_title' , $this->ipsclass->txt_htmlspecialchars( $_POST['cal_title'] ? $_POST['cal_title'] : $calendar['cal_title'] ) ); - $form['cal_moderate'] = $this->ipsclass->adskin->form_yes_no( 'cal_moderate' , $_POST['cal_moderate'] ? $_POST['cal_moderate'] : $calendar['cal_moderate'] ); - $form['cal_event_limit'] = $this->ipsclass->adskin->form_simple_input( 'cal_event_limit' , $_POST['cal_event_limit'] ? $_POST['cal_event_limit'] : $calendar['cal_event_limit'], 5 ); - $form['cal_bday_limit'] = $this->ipsclass->adskin->form_simple_input( 'cal_bday_limit' , $_POST['cal_bday_limit'] ? $_POST['cal_bday_limit'] : $calendar['cal_bday_limit'], 5 ); - $form['cal_rss_export'] = $this->ipsclass->adskin->form_yes_no( 'cal_rss_export' , $_POST['cal_rss_export'] ? $_POST['cal_rss_export'] : $calendar['cal_rss_export'] ); - $form['cal_rss_update'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_update' , $_POST['cal_rss_update'] ? $_POST['cal_rss_update'] : $calendar['cal_rss_update'], 5 ); - $form['cal_rss_export_days'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_export_days' , $_POST['cal_rss_export_days'] ? $_POST['cal_rss_export_days'] : $calendar['cal_rss_export_days'], 5 ); - $form['cal_rss_export_max'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_export_max' , $_POST['cal_rss_export_max'] ? $_POST['cal_rss_export_max'] : $calendar['cal_rss_export_max'], 5 ); + $form['cal_title'] = $this->ipsclass->adskin->form_input( 'cal_title' , $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['cal_title']) AND $_POST['cal_title'] ) ? $_POST['cal_title'] : $calendar['cal_title'] ) ); + $form['cal_moderate'] = $this->ipsclass->adskin->form_yes_no( 'cal_moderate' , ( isset($_POST['cal_moderate']) AND $_POST['cal_moderate'] ) ? $_POST['cal_moderate'] : $calendar['cal_moderate'] ); + $form['cal_event_limit'] = $this->ipsclass->adskin->form_simple_input( 'cal_event_limit' , ( isset($_POST['cal_event_limit']) AND $_POST['cal_event_limit'] ) ? $_POST['cal_event_limit'] : $calendar['cal_event_limit'], 5 ); + $form['cal_bday_limit'] = $this->ipsclass->adskin->form_simple_input( 'cal_bday_limit' , ( isset($_POST['cal_bday_limit']) AND $_POST['cal_bday_limit'] ) ? $_POST['cal_bday_limit'] : $calendar['cal_bday_limit'], 5 ); + $form['cal_rss_export'] = $this->ipsclass->adskin->form_yes_no( 'cal_rss_export' , ( isset($_POST['cal_rss_export']) AND $_POST['cal_rss_export'] ) ? $_POST['cal_rss_export'] : $calendar['cal_rss_export'] ); + $form['cal_rss_update'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_update' , ( isset($_POST['cal_rss_update']) AND $_POST['cal_rss_update'] ) ? $_POST['cal_rss_update'] : $calendar['cal_rss_update'], 5 ); + $form['cal_rss_export_days'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_export_days' , ( isset($_POST['cal_rss_export_days']) AND $_POST['cal_rss_export_days'] ) ? $_POST['cal_rss_export_days'] : $calendar['cal_rss_export_days'], 5 ); + $form['cal_rss_export_max'] = $this->ipsclass->adskin->form_simple_input( 'cal_rss_export_max' , ( isset($_POST['cal_rss_export_max']) AND $_POST['cal_rss_export_max'] ) ? $_POST['cal_rss_export_max'] : $calendar['cal_rss_export_max'], 5 ); $this->ipsclass->html .= $this->html->calendar_form( $form, $title, $formcode, $button, $calendar ); - $this->ipsclass->html_help_title = "Управление календарем"; - $this->ipsclass->html_help_msg = "Эта секция позволит вам управлять календарем."; + $this->ipsclass->html_help_title = "Calendar Manager"; + $this->ipsclass->html_help_msg = "This section will allow you to manage your calendars."; - $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}", "Календарь" ); + $this->ipsclass->admin->nav[] = array( '', "Add/Edit Calendar" ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ - // List current filetypes + // List current calendars /*-------------------------------------------------------------------------*/ function calendar_list() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление календарем' ); - //------------------------------- // INIT //------------------------------- @@ -904,7 +923,7 @@ class ad_calendars $rows[] = $r; } - foreach( $rows as $i => $r ) + foreach( $rows as $r ) { //------------------------------- // Work out position images @@ -944,15 +963,33 @@ class ad_calendars $this->ipsclass->html .= $this->html->calendar_overview( $content ); - $this->ipsclass->admin->page_title = "Управление календарем"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять календарем."; + $this->ipsclass->admin->page_title = "Calendar Manager"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your calendars."; $this->ipsclass->admin->output(); } - - - + /*-------------------------------------------------------------------------*/ + // Builds a cache of the current calendars + /*-------------------------------------------------------------------------*/ + + function calendars_rebuildcache() + { + $this->ipsclass->cache['calendars'] = array(); + + $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'cal_calendars', 'order' => 'cal_position ASC' ) ); + + $this->ipsclass->DB->exec_query(); + + while( $r = $this->ipsclass->DB->fetch_row() ) + { + $this->ipsclass->cache['calendars'][ $r['cal_id'] ] = $r; + } + + $this->ipsclass->update_cache( array( 'name' => 'calendars', 'deletefirst' => 1, 'donow' => 1, 'array' => 1 ) ); + + return TRUE; + } } diff --git a/upload/sources/action_admin/components.php b/upload/sources/action_admin/components.php index ab17135c..994f9d46 100644 --- a/upload/sources/action_admin/components.php +++ b/upload/sources/action_admin/components.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-06 10:09:22 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 611 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -34,7 +24,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -42,6 +32,7 @@ class ad_components { # Globals var $ipsclass; + var $html; var $perm_main = 'admin'; var $perm_child = 'components'; @@ -56,6 +47,10 @@ class ad_components switch($this->ipsclass->input['code']) { + case 'master_xml_export': + $this->master_xml_export(); + break; + case 'manage': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->components_list(); @@ -78,6 +73,11 @@ class ad_components $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' ); $this->components_save('edit'); break; + + case 'component_delete': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' ); + $this->components_delete(); + break; case 'component_export': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':export' ); @@ -103,6 +103,75 @@ class ad_components } } + /*-------------------------------------------------------------------------*/ + // Export Master XML + /*-------------------------------------------------------------------------*/ + + function master_xml_export() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $entry = array(); + + //----------------------------------------- + // Get XML class + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + + $xml = new class_xml(); + + $xml->doc_type = $this->ipsclass->vars['gb_char_set']; + + $xml->xml_set_root( 'export', array( 'exported' => time() ) ); + + //----------------------------------------- + // Set group + //----------------------------------------- + + $xml->xml_add_group( 'group' ); + + //----------------------------------------- + // Get templates... + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'components', + 'where' => "com_section != 'bugtracker'" ) ); + + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $content = array(); + + //----------------------------------------- + // Sort the fields... + //----------------------------------------- + + foreach( $r as $k => $v ) + { + $content[] = $xml->xml_build_simple_tag( $k, $v ); + } + + $entry[] = $xml->xml_build_entry( 'row', $content ); + } + + $xml->xml_add_entry_to_group( 'group', $entry ); + + $xml->xml_format_document(); + + $doc = $xml->xml_document; + + //----------------------------------------- + // Print to browser + //----------------------------------------- + + $this->ipsclass->admin->show_download( $doc, 'components.xml', '', 0 ); + } + /*-------------------------------------------------------------------------*/ // Components: Toggle enabled /*-------------------------------------------------------------------------*/ @@ -121,7 +190,7 @@ class ad_components if ( ! $com_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->components_list(); return; } @@ -138,7 +207,7 @@ class ad_components $this->components_rebuildcache(); - $this->ipsclass->main_msg = "Переключатель компонентов"; + $this->ipsclass->main_msg = "Component Toggled"; $this->components_list(); } @@ -152,8 +221,12 @@ class ad_components // INIT //-------------------------------------------- - $com_id = intval($this->ipsclass->input['com_id']); - $move = trim($this->ipsclass->input['move']); + $com_id = intval($this->ipsclass->input['com_id']); + $move = trim($this->ipsclass->input['move']); + $components = array(); + $final_coms = array(); + $used_pos = array(); + $max_pos = 0; //-------------------------------------------- // Checks... @@ -161,24 +234,97 @@ class ad_components if ( ! $com_id OR ! $move ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->components_list(); return; } //-------------------------------------------- - // Get from database + // Get components from database //-------------------------------------------- - $component = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'components', 'where' => 'com_id='.$com_id ) ); + $this->ipsclass->DB->build_query( array( 'select' => '*', + 'from' => 'components', + 'order' => 'com_position ASC' ) ); + $this->ipsclass->DB->exec_query(); - $new_position = ( $move == 'up' ) ? intval($component['com_position']) - 1 : intval($component['com_position']) + 1; + while( $c = $this->ipsclass->DB->fetch_row() ) + { + $max_pos += 1; + + if ( in_array( $c['com_position'], $used_pos ) ) + { + + $c['com_position'] = $max_pos; + } + else + { + $used_pos[] = $c['com_position']; + } + + $components[ $c['com_id'] ] = $c['com_position']; + } - $this->ipsclass->DB->do_update( 'components', array( 'com_position' => $new_position ), 'com_id='.$com_id ); + asort($components); + + $i = 0; + $did_move = 0; + + foreach( $components as $k => $v ) + { + $i++; + + if( $k == $com_id ) + { + if( $move == 'up' ) + { + // Move up (lower #) + $last = array_pop( $final_coms ); + $final_coms[ $k ] = $i - 1; + + foreach( $components as $k2 => $v2 ) + { + if ( $v2 == $last ) + { + $final_coms[ $k2 ] = $i; + break; + } + } + } + else + { + // Move down (higher #) + + $final_coms[ $k ] = $i + 1; + $did_move = 1; + } + } + else + { + if ( $did_move == 1 ) + { + $final_coms[ $k ] = $i - 1; + $did_move = 0; + } + else + { + $final_coms[ $k ] = $i; + } + } + } + + /*echo "
    ";
    +		print_r($final_coms);
    +		exit;*/
    +		
    +		foreach( $final_coms as $k => $v )
    +		{
    +			$this->ipsclass->DB->do_update( 'components', array( 'com_position' => $v ), 'com_id='.$k );
    +		}
     		
     		$this->components_rebuildcache();
     		
    -		$this->ipsclass->main_msg = "Формирование пунктов компонента";
    +		$this->ipsclass->main_msg = "Component item repositioned";
     		$this->components_list();
     	}
     	
    @@ -226,14 +372,14 @@ class ad_components
     			
     			if ( ! $this->ipsclass->input['file_location'] )
     			{
    -				$this->ipsclass->main_msg = "Загружаемый файл не найден!.";
    +				$this->ipsclass->main_msg = "No upload file was found and no filename was specified.";
     				$this->components_list();
     				return;
     			}
     			
     			if ( ! file_exists( ROOT_PATH . $this->ipsclass->input['file_location'] ) )
     			{
    -				$this->ipsclass->main_msg = "Нельзя найти файл для открытия:: " . ROOT_PATH . $this->ipsclass->input['file_location'];
    +				$this->ipsclass->main_msg = "Could not find the file to open at: " . ROOT_PATH . $this->ipsclass->input['file_location'];
     				$this->components_list();
     				return;
     			}
    @@ -269,6 +415,13 @@ class ad_components
     			$tmp_name = preg_replace( "#\.gz$#", "", $tmp_name );
     			
     			$content  = $this->ipsclass->admin->import_xml( $tmp_name );
    +			
    +			if ( ! $content )
    +			{
    +				$this->ipsclass->main_msg = "Could not read the uploaded file.";
    +				$this->components_list();
    +				return;
    +			}			
     		}
     		
     		//-----------------------------------------
    @@ -290,7 +443,7 @@ class ad_components
     		// Get xml mah-do-dah
     		//-----------------------------------------
     		
    -		require( KERNEL_PATH.'class_xml.php' );
    +		require_once( KERNEL_PATH.'class_xml.php' );
     
     		$xml = new class_xml();
     		
    @@ -320,7 +473,7 @@ class ad_components
     			$xml->xml_array['componentexport']['componentgroup']['component'][0] = $tmp;
     		}
     		
    -		foreach( $xml->xml_array['componentexport']['componentgroup']['component'] as $id => $entry )
    +		foreach( $xml->xml_array['componentexport']['componentgroup']['component'] as $entry )
     		{
     			$newrow = array();
     				
    @@ -359,7 +512,7 @@ class ad_components
     		
     		$this->components_rebuildcache();
     		
    -		$this->ipsclass->main_msg = "$updated компонентов обновлено $inserted компонентов вставлено";
    +		$this->ipsclass->main_msg = "$updated components updated $inserted components inserted";
     		
     		$this->components_list();
     	}
    @@ -385,7 +538,7 @@ class ad_components
     		{
     			if ( ! $com_id )
     			{
    -				$this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново ";
    +				$this->ipsclass->main_msg = "No ID was passed, please try again";
     				$this->components_list();
     				return;
     			}
    @@ -435,7 +588,7 @@ class ad_components
     		
     		$entry = array();
     		
    -		foreach( $rows as $idx => $r )
    +		foreach( $rows as $r )
     		{
     			$content = array();
     			
    @@ -471,15 +624,15 @@ class ad_components
     		//--------------------------------------------
     		
     		$com_id          = intval($this->ipsclass->input['com_id']);
    -		$com_title       = trim( $this->ipsclass->input['com_title'] );
    -		$com_version     = trim( $this->ipsclass->input['com_version'] );
    -		$com_description = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_UNhtmlspecialchars($_POST['com_description'])) );
    -		$com_author      = trim( $this->ipsclass->input['com_author'] );
    -		$com_url         = trim( $this->ipsclass->input['com_url'] );
    +		$com_title       = trim( $this->ipsclass->txt_stripslashes($this->ipsclass->input['com_title']) );
    +		$com_version     = trim( $this->ipsclass->txt_stripslashes($this->ipsclass->input['com_version']) );
    +		$com_description = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_htmlspecialchars($_POST['com_description'])) );
    +		$com_author      = trim( $this->ipsclass->txt_stripslashes($this->ipsclass->input['com_author']) );
    +		$com_url         = trim( $this->ipsclass->txt_stripslashes($this->ipsclass->input['com_url']) );
     		//$com_menu_data   = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_windowstounix($_POST['com_menu_data']) ) );
     		$com_enabled     = intval($this->ipsclass->input['com_enabled']);
    -		$com_section     = trim( $this->ipsclass->input['com_section'] );
    -		$com_filename    = trim( $this->ipsclass->input['com_section'] );
    +		$com_section     = trim( $this->ipsclass->txt_stripslashes($this->ipsclass->input['com_section']) );
    +		$com_filename    = trim( $this->ipsclass->txt_stripslashes($this->ipsclass->input['com_section']) );
     		$com_safemode    = intval($this->ipsclass->input['com_safemode']);
     		$com_url_title   = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_windowstounix($_POST['com_url_title']) ) );
     		$com_url_uri     = trim( $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_windowstounix($_POST['com_url_uri']) ) );
    @@ -492,7 +645,7 @@ class ad_components
     		{
     			if ( ! $com_id )
     			{
    -				$this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново ";
    +				$this->ipsclass->main_msg = "No ID was passed, please try again";
     				$this->components_list();
     				return;
     			}
    @@ -500,7 +653,7 @@ class ad_components
     		
     		if ( ! $com_title OR ! $com_section OR ! $com_filename )
     		{
    -			$this->ipsclass->main_msg = "Вы должны заполнить все поля.";
    +			$this->ipsclass->main_msg = "You must complete the entire form.";
     			$this->components_form( $type );
     			return;
     		}
    @@ -558,7 +711,7 @@ class ad_components
     			
     			if ( $test['com_id'] )
     			{
    -				$this->ipsclass->main_msg = "Убедитесь в том, что оба раздела кода и имя файла одинаковы для этого компонента.";
    +				$this->ipsclass->main_msg = "You must ensure that both the section code and the filename are unique to this component.";
     				$this->components_form( $type );
     				return;
     			}
    @@ -566,13 +719,13 @@ class ad_components
     			$array['com_date_added'] = time();
     			
     			$this->ipsclass->DB->do_insert( 'components', $array );
    -			$this->ipsclass->main_msg = 'Новый компонент добавлен';
    +			$this->ipsclass->main_msg = 'New Component Added';
     		}
     		else
     		{
     			
     			$this->ipsclass->DB->do_update( 'components', $array, 'com_id='.$com_id );
    -			$this->ipsclass->main_msg = 'Компонент изменен';
    +			$this->ipsclass->main_msg = 'Component Edited';
     		}
     		
     		$this->components_rebuildcache();
    @@ -605,8 +758,8 @@ class ad_components
     		if ( $type == 'add' )
     		{
     			$formcode = 'component_add_do';
    -			$title    = "Регистрация нового компонента";
    -			$button   = "Регистрация";
    +			$title    = "Register New Component";
    +			$button   = "Register New Component";
     		}
     		else
     		{
    @@ -614,14 +767,14 @@ class ad_components
     			
     			if ( ! $component['com_id'] )
     			{
    -				$this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново.";
    +				$this->ipsclass->main_msg = "No ID was passed, please try again.";
     				$this->components_list();
     				return;
     			}
     			
     			$formcode = 'component_edit_do';
    -			$title    = "Редактирование компонента ".$component['com_title'];
    -			$button   = "Сохранить изменения";
    +			$title    = "Edit Component ".$component['com_title'];
    +			$button   = "Save Changes";
     		}
     				
     		//--------------------------------------------
    @@ -695,28 +848,29 @@ class ad_components
     		
     		$form = array();
     		
    -		$form['com_title']       = $this->ipsclass->adskin->form_input(        'com_title'      , $_POST['com_title']       ? $_POST['com_title']       : $component['com_title'] );
    -		$form['com_description'] = $this->ipsclass->adskin->form_input(        'com_description', $this->ipsclass->txt_htmlspecialchars( $_POST['com_description'] ? $_POST['com_description'] : $component['com_description'] ) );
    -		$form['com_author']      = $this->ipsclass->adskin->form_input(        'com_author'     , $_POST['com_author']      ? $_POST['com_author']      : $component['com_author'] );
    -		$form['com_url']         = $this->ipsclass->adskin->form_input(        'com_url'        , $_POST['com_url']         ? $_POST['com_url']         : $component['com_url'] );
    -		$form['com_version']     = $this->ipsclass->adskin->form_simple_input( 'com_version'    , $_POST['com_version']     ? $_POST['com_version']     : $component['com_version'], 10 );
    -		$form['com_enabled']     = $this->ipsclass->adskin->form_yes_no(       'com_enabled'    , $_POST['com_enabled']     ? $_POST['com_enabled']     : $component['com_enabled'] );
    -		$form['com_section']     = $this->ipsclass->adskin->form_simple_input( 'com_section'    , $_POST['com_section']     ? $_POST['com_section']     : $component['com_section'], 20 );
    -		$form['com_filename']    = $this->ipsclass->adskin->form_simple_input( 'com_filename'   , $_POST['com_filename']    ? $_POST['com_filename']    : $component['com_filename'], 20 );
    -		$form['com_url_title']   = $this->ipsclass->adskin->form_input(        'com_url_title'  , $this->ipsclass->txt_htmlspecialchars( $_POST['com_url_title'] ? $_POST['com_url_title'] : $component['com_url_title'] ) );
    -		$form['com_url_uri']     = $this->ipsclass->adskin->form_input(        'com_url_uri'    , $this->ipsclass->txt_htmlspecialchars( $_POST['com_url_uri']   ? $_POST['com_url_uri']   : $component['com_url_uri']   ) );
    +		$form['com_title']       = $this->ipsclass->adskin->form_input(        'com_title'      , $this->ipsclass->input['com_title']       ? stripslashes($this->ipsclass->input['com_title'])       : $component['com_title'] );
    +		$form['com_description'] = $this->ipsclass->adskin->form_input(        'com_description', $this->ipsclass->input['com_description'] ? stripslashes($this->ipsclass->input['com_description']) : $component['com_description'] );
    +		$form['com_author']      = $this->ipsclass->adskin->form_input(        'com_author'     , $this->ipsclass->input['com_author']      ? stripslashes($this->ipsclass->input['com_author'])      : $component['com_author'] );
    +		$form['com_url']         = $this->ipsclass->adskin->form_input(        'com_url'        , $this->ipsclass->input['com_url']         ? stripslashes($this->ipsclass->input['com_url'])         : $component['com_url'] );
    +		$form['com_version']     = $this->ipsclass->adskin->form_simple_input( 'com_version'    , $this->ipsclass->input['com_version']     ? stripslashes($this->ipsclass->input['com_version'])     : $component['com_version'], 10 );
    +		$form['com_enabled']     = $this->ipsclass->adskin->form_yes_no(       'com_enabled'    , $this->ipsclass->input['com_enabled']     ? stripslashes($this->ipsclass->input['com_enabled'])     : $component['com_enabled'] );
    +		$form['com_section']     = $this->ipsclass->adskin->form_simple_input( 'com_section'    , $this->ipsclass->input['com_section']     ? stripslashes($this->ipsclass->input['com_section'])     : $component['com_section'], 20 );
    +		$form['com_filename']    = $this->ipsclass->adskin->form_simple_input( 'com_filename'   , $this->ipsclass->input['com_filename']    ? stripslashes($this->ipsclass->input['com_filename'])    : $component['com_filename'], 20 );
    +		$form['com_url_title']   = $this->ipsclass->adskin->form_input(        'com_url_title'  , $this->ipsclass->input['com_url_title'] ? stripslashes($this->ipsclass->input['com_url_title']) : $component['com_url_title'] );
    +		$form['com_url_uri']     = $this->ipsclass->adskin->form_input(        'com_url_uri'    , $this->ipsclass->input['com_url_uri']   ? stripslashes($this->ipsclass->input['com_url_uri'])   : $component['com_url_uri']   );
     		
     		if ( IN_DEV )
     		{
    -			$form['com_safemode'] = $this->ipsclass->adskin->form_yes_no( 'com_safemode', $_POST['com_safemode'] ? $_POST['com_safemode']: $component['com_safemode'] );
    +			$form['com_safemode'] = $this->ipsclass->adskin->form_yes_no( 'com_safemode', $this->ipsclass->input['com_safemode'] ? $this->ipsclass->input['com_safemode']: $component['com_safemode'] );
     		}
     		
     		$this->ipsclass->html .= $this->html->components_form( $form, $title, $formcode, $button, $component, $menu_text, $menu_url, $menu_redirect, $menu_permbit, $menu_permlang );
     		
    -		$this->ipsclass->html_help_title = "Управление компонентами";
    -		$this->ipsclass->html_help_msg   = "Эта секция позволит вам управлять компонентами форума.";
    +		$this->ipsclass->html_help_title = "Components Manager";
    +		$this->ipsclass->html_help_msg   = "This section will allow you to manage your components.";
     		
    -		$this->ipsclass->admin->nav[]    = array( "{$this->ipsclass->form_code}", "Компоненты" );
    +		$this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage Components' );
    +		$this->ipsclass->admin->nav[] = array( '', 'Add/Edit Components' );
     		$this->ipsclass->admin->output();
     	}
     	
    @@ -726,7 +880,9 @@ class ad_components
     	
     	function components_list()
     	{
    -		$this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление компонентами' );
    +		$this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage Components' );
    +		$this->ipsclass->admin->page_title  = "Components Manager";
    +		$this->ipsclass->admin->page_detail = "This section will allow you to manage your components.";
     		
     		//-------------------------------
     		// INIT
    @@ -750,7 +906,7 @@ class ad_components
     			$rows[] = $r;
     		}
     		
    -		foreach( $rows as $i => $r )
    +		foreach( $rows as $r )
     		{
     			//-------------------------------
     			// Version...
    @@ -815,13 +971,47 @@ class ad_components
     		
     		$this->ipsclass->html .= $this->html->component_overview( $content );
     		
    -		$this->ipsclass->admin->page_title  = "Управление компонентами";
    -		$this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять компонентами форума.";
     		$this->ipsclass->admin->output();
     	}
     	
     	
    -	
    +	function components_delete( )
    +	{
    +		//-----------------------------------------
    +		// Init Vars
    +		//-----------------------------------------
    +		
    +		$com_id    = intval($this->ipsclass->input['com_id']);
    +		
    +		if( !$com_id )
    +		{
    +			$this->ipsclass->main_msg = "No ID was passed, please try again.";
    +			$this->components_list();
    +			return;
    +		}		
    +			
    +		$component = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'components', 'where' => 'com_id='.$com_id ) );
    +		
    +		if ( ! $component['com_id'] )
    +		{
    +			$this->ipsclass->main_msg = "No ID was passed, please try again.";
    +			$this->components_list();
    +			return;
    +		}
    +		
    +		if( $component['com_safemode'] && !IN_DEV )
    +		{
    +			$this->ipsclass->main_msg = "This component cannot be edited or deleted.";
    +			$this->components_list();
    +			return;
    +		}
    +		
    +		$this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'components', 'where' => 'com_id='.$com_id ) );
    +
    +		$this->components_rebuildcache();
    +		$this->ipsclass->main_msg = "The component has been deleted.";
    +		$this->components_list();
    +	}		
     	
     
     }
    diff --git a/upload/sources/action_admin/diagnostics.php b/upload/sources/action_admin/diagnostics.php
    new file mode 100644
    index 00000000..af1d28c1
    --- /dev/null
    +++ b/upload/sources/action_admin/diagnostics.php
    @@ -0,0 +1,917 @@
    + $Date: 2006-03-23 07:34:25 -0500 (Thu, 23 Mar 2006) $
    +|   > $Revision: 177 $
    +|   > $Author: brandon $
    ++---------------------------------------------------------------------------
    +|
    +|   > Diagnostics Center
    +|   > Module written by Brandon Farber
    +|   > Date started: 19th April 2006
    +|
    +|	> Module Version Number: 1.0.0
    ++--------------------------------------------------------------------------
    +*/
    +
    +if ( ! defined( 'IN_ACP' ) )
    +{
    +	print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + + +class ad_diagnostics +{ + var $base_url; + var $dir_split = "/"; + + /** + * Section title name + * + * @var string + */ + var $perm_main = "help"; + + /** + * Section title name + * + * @var string + */ + var $perm_child = "diag"; + + function auto_run() + { + //----------------------------------------- + // Load skin + //----------------------------------------- + + $this->html = $this->ipsclass->acp_load_template( 'cp_skin_diagnostics' ); + + //----------------------------------------- + // Set default nav + //----------------------------------------- + + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Diagnostics' ); + + if ( strtoupper( substr(PHP_OS, 0, 3) ) === 'WIN' ) + { + $this->dir_split = "\\"; + } + + //----------------------------------------- + + switch($this->ipsclass->input['code']) + { + case 'dbindex': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':do' ); + $this->db_index_check(); + break; + + case 'dbchecker': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':do' ); + $this->db_check(); + break; + + case 'whitespace': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':do' ); + $this->whitespace_check(); + break; + + case 'filepermissions': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':do' ); + $this->permissions_check(); + break; + + case 'fileversions': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':do' ); + $this->version_check(); + break; + + //----------------------------------------- + default: + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':do' ); + $this->list_functions(); + break; + } + } + + /*-------------------------------------------------------------------------*/ + // Version Check + /*-------------------------------------------------------------------------*/ + + function version_check() + { + $this->ipsclass->admin->page_detail = "Running different version files can produce unexpected results. For example, a version 2.1 file is not compatible with a verison 2.0 file. If any files are listed below in red, it is recommended you upload fresh copies of those files."; + $this->ipsclass->admin->page_title = "IPB Diagnostics"; + + $this->ipsclass->admin->nav[] = array( '', 'Version Check Results' ); + set_time_limit(0); + + $dir = preg_replace( "#^(.+?)\/$#", "\\1", ROOT_PATH ); + + $file_versions = array(); + $upgrade_history = array(); + $latest_version = array( 'upgrade_version_id' => '' ); + $file_versions = $this->version_recur_dir( $dir ); + + $this->ipsclass->adskin->td_header[] = array( "" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "" , "70%" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Version Information" ); + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'upgrade_history', 'order' => 'upgrade_version_id DESC', 'limit' => array(0, 5) ) ); + $this->ipsclass->DB->simple_exec(); + + while( $r = $this->ipsclass->DB->fetch_row() ) + { + if ( $r['upgrade_version_id'] > $latest_version['upgrade_version_id'] ) + { + $latest_version = $r; + } + + $upgrade_history[] = $r; + } + + //----------------------------------------- + // Got real version number? + //----------------------------------------- + + 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']; + } + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "IPB Version", $this->ipsclass->version.' (ID: '.$this->ipsclass->acpversion.')' ) ); + + if( !count($upgrade_history) ) + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Upgrade History", 'None Available' ) ); + } + else + { + foreach( $upgrade_history as $history_row ) + { + $history_row['_date'] = $this->ipsclass->get_date( $history_row['upgrade_date'], 'SHORT' ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Upgrade {$history_row['_date']}", "{$history_row['upgrade_version_human']} ({$history_row['upgrade_version_id']})" ) ); + } + } + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->adskin->td_header[] = array( "File" , "70%" ); + $this->ipsclass->adskin->td_header[] = array( "Version" , "30%" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Version Check Results" ); + + if( is_array($file_versions) && count($file_versions) ) + { + foreach( $file_versions as $file => $version ) + { + if( 'v'.$version == $this->ipsclass->version ) + { + $version = "{$version}"; + } + else + { + $version = "{$version}"; + } + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $file, $version ) ); + } + } + else + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( " There was a processing error - we could not read the files" ) ); + } + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->admin->output(); + } + + /*-------------------------------------------------------------------------*/ + // Version check, recursive + /*-------------------------------------------------------------------------*/ + + function version_recur_dir($dir) + { + $skip_dirs = array( 'jscripts', 'cache', 'ssi_templates', 'style_avatars', 'style_emoticons', 'style_images', 'upgrade', 'uploads', 'images', 'i18n', 'PEAR', 'components_acp', + 'components_init', 'components_location', 'components_ucp', 'components_public' ); + $skip_files = array( 'conf_global.php', 'conf.php', $this->ipsclass->vars['sql_driver'].'_fulltext.php', $this->ipsclass->vars['sql_driver'].'_tables.php', + $this->ipsclass->vars['sql_driver'].'_inserts.php', $this->ipsclass->vars['sql_driver'].'_install.php' ); + + $files = array(); + $dh = opendir($dir); + + while (false !== ($file = readdir($dh))) + { + if ( preg_match( "#^[_\.]#", $file ) ) + { + continue; + } + + if ( $file != '.' && $file != '..' ) + { + $newpath = $dir.$this->dir_split.$file; + $level = explode( $this->dir_split, $newpath ); + + if ( is_dir($newpath) && !in_array( $file, $skip_dirs ) && ($newpath.'../' != 'modules') ) + { + $files = array_merge( $files, $this->version_recur_dir($newpath) ); + } + else + { + if ( strpos( $file, ".php" ) !== false && !is_dir( $newpath ) && !in_array( $file, $skip_files ) ) + { + $file = file_get_contents($newpath); + + preg_match( "#Invision Power Board v(.+?)\s+?#i", $file, $matches); + + $files[$newpath] = isset($matches[1]) ? $matches[1] : ''; + } + } + } + } + + closedir($dh); + return $files; + } + + /*-------------------------------------------------------------------------*/ + // Permission Checks + /*-------------------------------------------------------------------------*/ + + function permissions_check() + { + $this->ipsclass->admin->page_detail = "Certain files and directories must have the proper permissions set on them in order for IPB to properly write data to your disk. On Windows, you should ensure the files have \"Read/Write\" permissions, while on Unix/Linux you should ensure the files are \"CHMOD 777\"."; + $this->ipsclass->admin->page_title = "IPB Diagnostics"; + + $this->ipsclass->admin->nav[] = array( '', 'Permission Check Results' ); + + $checkdirs = array( 'style_images', 'style_emoticons', 'cache', 'cache'.$this->dir_split.'skin_cache', 'cache'.$this->dir_split.'lang_cache', 'uploads' ); + $langfiles = array( 'lang_boards', 'lang_buddy', 'lang_calendar', 'lang_emails', 'lang_email_content', 'lang_error', + 'lang_forum', 'lang_global', 'lang_help', 'lang_legends', 'lang_login', 'lang_mlist', + 'lang_mod', 'lang_msg', 'lang_online', 'lang_portal', 'lang_post', 'lang_printpage', + 'lang_profile', 'lang_register', 'lang_search', 'lang_stats', 'lang_subscriptions', + 'lang_topic', 'lang_ucp', 'lang_chatpara' , 'lang_editors', 'lang_chatsigma', + 'acp_lang_acpperms', 'acp_lang_member', 'acp_lang_portal', 'lang_tar' + ); + + $root_dir = preg_replace( "#^(.+?)\/$#", "\\1".$this->dir_split, ROOT_PATH ); + + //----------------------------------------- + // Get language directories + //----------------------------------------- + + $this->ipsclass->init_load_cache( array( 'languages' ) ); + + if( is_array( $this->ipsclass->cache['languages'] ) && count( $this->ipsclass->cache['languages'] ) ) + { + foreach( $this->ipsclass->cache['languages'] as $v ) + { + $checkdirs[] = 'cache'.$this->dir_split.'lang_cache'.$this->dir_split.$v['ldir']; + + foreach( $langfiles as $filename ) + { + $checkdirs[] = 'cache'.$this->dir_split.'lang_cache'.$this->dir_split.$v['ldir'].$this->dir_split.$filename.'.php'; + } + } + } + else + { + $this->ipsclass->DB->build_query( array( 'select' => 'ldir', 'from' => 'languages' ) ); + $this->ipsclass->DB->exec_query(); + + while( $v = $this->ipsclass->DB->fetch_row() ) + { + $checkdirs[] = 'cache'.$this->dir_split.'lang_cache'.$this->dir_split.$v['ldir']; + + foreach( $langfiles as $filename ) + { + $checkdirs[] = 'cache'.$this->dir_split.'lang_cache'.$this->dir_split.$v['ldir'].$this->dir_split.$filename.'.php'; + } + } + } + + //----------------------------------------- + // Get emoticon directories + //----------------------------------------- + + if( is_array( $this->ipsclass->cache['emoticons'] ) && count( $this->ipsclass->cache['emoticons'] ) ) + { + foreach( $this->ipsclass->cache['emoticons'] as $v ) + { + $checkdirs[] = 'style_emoticons'.$this->dir_split.$v['emo_set']; + } + } + else + { + $this->ipsclass->DB->build_query( array( 'select' => 'emo_set', 'from' => 'emoticons' ) ); + $this->ipsclass->DB->exec_query(); + + while( $v = $this->ipsclass->DB->fetch_row() ) + { + $checkdirs[] = 'style_emoticons'.$this->dir_split.$v['emo_set']; + } + } + + //----------------------------------------- + // Get skin directories + //----------------------------------------- + + $skin_dirs = array(); + + if( is_array( $this->ipsclass->cache['skin_id_cache'] ) && count( $this->ipsclass->cache['skin_id_cache'] ) ) + { + foreach( $this->ipsclass->cache['skin_id_cache'] as $k => $v ) + { + if( $k == 1 && !IN_DEV ) + { + continue; + } + + $checkdirs[] = 'cache'.$this->dir_split.'skin_cache'.$this->dir_split.'cacheid_'.$v['set_skin_set_id']; + $skin_dirs[] = $v['set_skin_set_id']; + } + } + else + { + $this->ipsclass->DB->build_query( array( 'select' => 'set_skin_set_id', 'from' => 'skin_sets' ) ); + $this->ipsclass->DB->exec_query(); + + while( $v = $this->ipsclass->DB->fetch_row() ) + { + $checkdirs[] = 'cache'.$this->dir_split.'skin_cache'.$this->dir_split.'cacheid_'.$v['set_skin_set_id ']; + $skin_dirs[] = $v['set_skin_set_id']; + } + } + + //----------------------------------------- + // Get skin files + //----------------------------------------- + + $this->ipsclass->DB->load_cache_file( ROOT_PATH.'sources/sql/'.SQL_DRIVER.'_extra_queries.php', 'sql_extra_queries' ); + + $this->ipsclass->DB->cache_add_query( 'diag_distinct_skins', array(), 'sql_extra_queries' ); + $this->ipsclass->DB->cache_exec_query(); + + while( $v = $this->ipsclass->DB->fetch_row() ) + { + foreach( $skin_dirs as $dir ) + { + $checkdirs[] = 'cache'.$this->dir_split.'skin_cache'.$this->dir_split.'cacheid_'.$dir.$this->dir_split.$v['group_name'].'.php'; + } + } + + set_time_limit(0); + + $checkdirs = array_unique($checkdirs); + $output = array(); + + foreach( $checkdirs as $dir_to_check ) + { + if( !file_exists( $root_dir.$dir_to_check ) ) + { + $output[] = "We could not find the file or folder ".$root_dir.$dir_to_check.""; + } + else if( !is_writeable( $root_dir.$dir_to_check ) ) + { + $output[] = "The following file or folder is not writeable ".$root_dir.$dir_to_check.""; + } + else if( is_writeable( $root_dir.$dir_to_check ) ) + { + $output[] = "".$root_dir.$dir_to_check." is writeable"; + } + } + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Permissions Check Results" ); + + if( is_array($output) && count($output) ) + { + foreach( $output as $html_row ) + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $html_row ) ); + } + } + else + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "We did not find any files or folders to check. Oooops." ) ); + } + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->admin->output(); + } + + + /*-------------------------------------------------------------------------*/ + // WHITE SPACE CHECK + /*-------------------------------------------------------------------------*/ + + function whitespace_check() + { + $this->ipsclass->admin->page_detail = "If there is any whitespace before or after the php tags in files used by IPB, it can result in blank pages or malformed html. If any results are returned you should open those files and delete the extra spaces or line breaks at the beginning and/or end of the file."; + $this->ipsclass->admin->page_title = "IPB Diagnostics"; + + $this->ipsclass->admin->nav[] = array( '', 'Whitespace Check Results' ); + + set_time_limit(0); + + $dir = preg_replace( "#^(.+?)\/$#", "\\1", ROOT_PATH ); + + $files_with_junk = array(); + $files_with_junk = $this->recur_dir( $dir ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Whitespace Check Results" ); + + if( is_array($files_with_junk) && count($files_with_junk) ) + { + foreach( $files_with_junk as $html_row ) + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $html_row." has whitespace at the beginning or end of the file" ) ); + } + } + else + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( " All files appear to be in good order" ) ); + } + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->admin->output(); + } + + + function recur_dir($dir) + { + $skip_dirs = array( 'uploads', 'style_images', 'gallery_setup', 'blog_setup', 'style_emoticons', 'style_avatars', + 'jscripts', 'clientscripts', 'images', 'acp_js_skin' ); + + $files = array(); + $dh = opendir($dir); + + while (false !== ($file = readdir($dh))) + { + if ( preg_match( "#^[_\.]#", $file ) ) + { + continue; + } + + if ( $file != '.' && $file != '..' ) + { + $newpath = $dir.$this->dir_split.$file; + $level = explode( $this->dir_split, $newpath ); + + if ( is_dir($newpath) && !in_array( $file, $skip_dirs ) ) + { + $files = array_merge( $files, $this->recur_dir($newpath) ); + } + else + { + if ( strpos( $file, ".php" ) !== false && !is_dir( $newpath ) ) + { + $file = file_get_contents($newpath); + + $current_length = strlen($file); + + $file = trim($file); + + $actual_length = strlen($file); + + if ( $current_length != $actual_length ) + { + $files[] = $newpath; + } + } + } + } + } + + closedir($dh); + return $files; + } + + /*-------------------------------------------------------------------------*/ + // CHECK DB INDEXES + /*-------------------------------------------------------------------------*/ + + function db_index_check() + { + $this->ipsclass->admin->page_detail = "Database indexes help your database engine work more efficiently with the data it hosts. If any of the indexes are missing, it can cause your site to run slower than it should. Please use the appropriate links or queries to fix any indexes reported missing below."; + $this->ipsclass->admin->page_title = "IPB Diagnostics"; + + $this->ipsclass->admin->nav[] = array( '', 'Database Index Results' ); + + //----------------------------------------- + // Get current table definitions + //----------------------------------------- + + if( !file_exists( ROOT_PATH."/install/sql/{$this->ipsclass->vars['sql_driver']}_tables.php" ) ) + { + $this->ipsclass->admin->error( "You must upload /install/sql/{$this->ipsclass->vars['sql_driver']}_tables.php from the IPB installation package for your current version to run this tool" ); + } + + require ROOT_PATH."sources/action_admin/sql_{$this->ipsclass->vars['sql_driver']}.php"; + + $this->sql_driver = new ad_sql_module(); + $this->sql_driver->ipsclass =& $this->ipsclass; + + $output = array(); + $output = $this->sql_driver->db_index_diag(); + + $this->ipsclass->adskin->td_header[] = array( "Table" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Index Name" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Fix" , "60%" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Database Index Results" ); + + foreach( $output as $html_row ) + { + $this->ipsclass->html .= $html_row; + } + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->admin->output(); + } + + /*-------------------------------------------------------------------------*/ + // DB TABLES + /*-------------------------------------------------------------------------*/ + + function db_check() + { + $this->ipsclass->admin->page_detail = "If you are missing necessary database tables, or columns in those database tables, you will see database errors (or missing data) when browsing IPB. Please use the links or queries provided below to remedy any missing columns or tables."; + $this->ipsclass->admin->page_title = "IPB Diagnostics"; + + $this->ipsclass->admin->nav[] = array( '', 'Database Schema Results' ); + + //----------------------------------------- + // Get current table definitions + //----------------------------------------- + + if( !file_exists( ROOT_PATH."/install/sql/{$this->ipsclass->vars['sql_driver']}_tables.php" ) ) + { + $this->ipsclass->admin->error( "You must upload /install/sql/{$this->ipsclass->vars['sql_driver']}_tables.php from the IPB installation package for your current version to run this tool" ); + } + + require ROOT_PATH."sources/action_admin/sql_{$this->ipsclass->vars['sql_driver']}.php"; + + $this->sql_driver = new ad_sql_module(); + $this->sql_driver->ipsclass =& $this->ipsclass; + + $output = array(); + $output = $this->sql_driver->db_table_diag(); + + if( $this->sql_driver->db_has_issues ) + { + $this->ipsclass->adskin->td_header[] = array( "{none}" , "50%" ); + $this->ipsclass->adskin->td_header[] = array( "{none}" , "50%" ); + + $this->ipsclass->html .= $this->html->dbchecker_javascript(); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "WARNING: ERRORS FOUND" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( array( "There were errors found with your database. Please review them below, or click here to correct these errors.", 2 ) ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + } + else + { + $this->ipsclass->adskin->td_header[] = array( "{none}" , "50%" ); + $this->ipsclass->adskin->td_header[] = array( "{none}" , "50%" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "No Errors Found" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( array( "There were no errors found with your database.", 2 ) ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + } + + $this->ipsclass->adskin->td_header[] = array( "Table" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "Status" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Fix" , "50%" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Database Table Results" ); + + foreach( $output as $html_row ) + { + $this->ipsclass->html .= $html_row; + } + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->admin->output(); + } + + /*-------------------------------------------------------------------------*/ + // SHOW FUNCTIONS + /*-------------------------------------------------------------------------*/ + + function list_functions() + { + $this->ipsclass->admin->page_detail = "You may run diagnostics on your IPB installation from this page. Please select a tool to run.

    Please note that these tools are moderately resource intensive - allow some time for them to run"; + $this->ipsclass->admin->page_title = "IPB Diagnostics"; + + $this->ipsclass->DB->sql_get_version(); + $sql_version = strtoupper(SQL_DRIVER)." ".$this->ipsclass->DB->true_version; + + $php_version = phpversion()." (".@php_sapi_name().") ( PHP INFO )"; + $server_software = php_uname(); + + $load_limit = "--"; + $server_load_found = 0; + + //----------------------------------------- + // Check cache first... + //----------------------------------------- + + if( $this->ipsclass->cache['systemvars']['loadlimit'] ) + { + $loadinfo = explode( "-", $this->ipsclass->cache['systemvars']['loadlimit'] ); + + if ( intval($loadinfo[1]) > (time() - 10) ) + { + //----------------------------------------- + // Cache is less than 2 minutes old, use it + //----------------------------------------- + + $server_load_found = 1; + + $load_limit = $loadinfo[0]; + } + } + + //----------------------------------------- + // No cache or it's old, check real time + //----------------------------------------- + + if( !$server_load_found ) + { + # @ supressor fixes warning in >4.3.2 with open_basedir restrictions + + if ( @file_exists('/proc/loadavg') ) + { + if ( $fh = @fopen( '/proc/loadavg', 'r' ) ) + { + $data = @fread( $fh, 6 ); + @fclose( $fh ); + + $load_avg = explode( " ", $data ); + + $load_limit = trim($load_avg[0]); + } + } + else if( strstr( strtolower(PHP_OS), 'win' ) ) + { + /*--------------------------------------------------------------- + | typeperf is an exe program that is included with Win NT, + | XP Pro, and 2K3 Server. It can be installed on 2K from the + | 2K Resource kit. It will return the real time processor + | Percentage, but will take 1 second processing time to do so. + | This is why we shall cache it, and check only every 2 mins. + | + | Can also be obtained from COM, but it's extremely slow... + ---------------------------------------------------------------*/ + + $serverstats = @shell_exec("typeperf \"Processor(_Total)\% Processor Time\" -sc 1"); + + if( $serverstats ) + { + $server_reply = explode( "\n", str_replace( "\r", "", $serverstats ) ); + $serverstats = array_slice( $server_reply, 2, 1 ); + + $statline = explode( ",", str_replace( '"', '', $serverstats[0] ) ); + + $load_limit = round( $statline[1], 4 ); + } + } + else + { + if ( $serverstats = @exec("uptime") ) + { + preg_match( "/(?:averages)?\: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/", $serverstats, $load ); + + $load_limit = $load[1]; + } + } + + if( $load_limit ) + { + $this->ipsclass->cache['systemvars']['loadlimit'] = $load_limit."-".time(); + + $this->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 0 ) ); + } + } + + $total_memory = $avail_memory = "--"; + + if( strstr( strtolower(PHP_OS), 'win' ) ) + { + $mem = @shell_exec('systeminfo'); + + if( $mem ) + { + $server_reply = explode( "\n", str_replace( "\r", "", $mem ) ); + + if( count($server_reply) ) + { + foreach( $server_reply as $info ) + { + if( strstr( $info, "Total Physical Memory" ) ) + { + $total_memory = trim( str_replace( ":", "", strrchr( $info, ":" ) ) ); + } + + if( strstr( $info, "Available Physical Memory" ) ) + { + $avail_memory = trim( str_replace( ":", "", strrchr( $info, ":" ) ) ); + } + } + } + } + } + else + { + $mem = @shell_exec("free -m"); + $server_reply = explode( "\n", str_replace( "\r", "", $mem ) ); + $mem = array_slice( $server_reply, 1, 1 ); + $mem = preg_split( "#\s+#", $mem[0] ); + + $total_memory = $mem[1].' MB'; + $avail_memory = $mem[3].' MB'; + } + + $disabled_functions = @ini_get('disable_functions') ? @ini_get('disable_functions') : "no information"; + + $this->ipsclass->adskin->td_header[] = array( "" , "40%" ); + $this->ipsclass->adskin->td_header[] = array( "" , "60%" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "System Overview" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "IPB Version", + $this->ipsclass->version." (ID:".$this->ipsclass->acpversion.")" ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( strtoupper(SQL_DRIVER)." Version", + $sql_version ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "PHP Version", + $php_version ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Disabled PHP Functions", + $disabled_functions ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Safe Mode", + SAFE_MODE_ON == 1 ? "ON" : "OFF" ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Server Software", + $server_software ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Current Server Load", + $load_limit ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Total Server Memory", + $total_memory ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Available Physical Memory", + $avail_memory ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "System Processes" ); + + if( strstr( strtolower(PHP_OS), 'win' ) ) + { + $tasks = @shell_exec( "tasklist" ); + $tasks = str_replace( " ", " ", $tasks ); + } + else + { + $tasks = @shell_exec( "top -b -n 1" ); + $tasks = str_replace( " ", " ", $tasks ); + } + + if( !$tasks ) + { + $tasks = "Unable to obtain process information"; + } + else + { + $tasks = "
    ".$tasks."
    "; + } + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $tasks ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + //----------------------------------------- + // File Version Checker + //----------------------------------------- + + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'fileversions' ), + 2 => array( 'act' , 'diag' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "File Version Checker" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "This tool will check your file versions to verify they match. Running different versions of core files can result in unexpected behavior." ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Run Tool'); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + //----------------------------------------- + // Whitespace Checker + //----------------------------------------- + + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'whitespace' ), + 2 => array( 'act' , 'diag' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Whitespace Checker" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "If your php files have whitespace at the beginning or end of the file, it can cause certain issues with IPB. This tool will check for any files that have this problem." ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Run Tool'); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + //----------------------------------------- + // File Permissions Checker + //----------------------------------------- + + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'filepermissions' ), + 2 => array( 'act' , 'diag' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "File Permissions Checker" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "This tool will check your file and folder permissions to verify those that need to be writeable are. If permissions are not set properly your skins, languages and other board elements may not be saved correctly." ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Run Tool'); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + //----------------------------------------- + // DB Table/Column Checker + //----------------------------------------- + + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'dbchecker' ), + 2 => array( 'act' , 'diag' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Database Table/Column Checker" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "This tool will check your database tables to verify they are up to date and accurate." ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Run Tool'); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + //----------------------------------------- + // DB Index Checker + //----------------------------------------- + + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'dbindex' ), + 2 => array( 'act' , 'diag' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Database Index Checker" ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "This tool will check your database indexes to ensure they are correct. If databases indexes are not set properly, your database may not run as fast or as efficient as it should." ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Run Tool'); + + $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + + //----------------------------------------- + + $this->ipsclass->admin->output(); + + } + + +} + + +?> \ No newline at end of file diff --git a/upload/sources/action_admin/emailerror.php b/upload/sources/action_admin/emailerror.php index ff10f6d1..b1c547e5 100644 --- a/upload/sources/action_admin/emailerror.php +++ b/upload/sources/action_admin/emailerror.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -38,7 +28,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -61,16 +51,7 @@ class ad_emailerror function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Email Error Logs' ); //----------------------------------------- // Make sure we're a root admin, or else! @@ -78,7 +59,7 @@ class ad_emailerror if ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group']) { - //$this->ipsclass->admin->error("Извините, эта функция доступна только основным Администраторам"); + //$this->ipsclass->admin->error("Sorry, these functions are for the root admin group only"); } switch($this->ipsclass->input['code']) @@ -116,7 +97,7 @@ class ad_emailerror { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID адреса email, вернитесь и попробуйте еще раз"); + $this->ipsclass->admin->error("Could not resolve the email ID, please try again"); } $id = intval($this->ipsclass->input['id']); @@ -126,7 +107,7 @@ class ad_emailerror if ( ! $row = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Невозможно определить ID адреса email, вернитесь и попробуйте еще раз ($id)"); + $this->ipsclass->admin->error("Could not resolve the email ID, please try again ($id)"); } $this->ipsclass->adskin->td_header[] = array( " " , "100%" ); @@ -136,21 +117,21 @@ class ad_emailerror $row['mlog_date'] = $this->ipsclass->admin->get_date( $row['mlog_date'], 'LONG' ); $row['mlog_content'] = nl2br($row['mlog_content']); - $row['mlog_msg'] = $row['mlog_msg'] ? $row['mlog_msg'] : 'Нет информации'; - $row['mlog_code'] = $row['mlog_code'] ? $row['mlog_code'] : 'Нет информации'; - $row['mlog_smtp_error'] = $row['mlog_smtp_error'] ? $row['mlog_smtp_error'] : 'Нет информации'; + $row['mlog_msg'] = $row['mlog_msg'] ? $row['mlog_msg'] : 'No Info'; + $row['mlog_code'] = $row['mlog_code'] ? $row['mlog_code'] : 'No Info'; + $row['mlog_smtp_error'] = $row['mlog_smtp_error'] ? $row['mlog_smtp_error'] : 'No Info'; $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "От: <{$row['mlog_from']}> -
    Кому: <{$row['mlog_to']}> -
    Отправлено: {$row['mlog_date']} -
    Тема: {$row['mlog_subject']} + "From: <{$row['mlog_from']}> +
    To: <{$row['mlog_to']}> +
    Sent: {$row['mlog_date']} +
    Subject: {$row['mlog_subject']}

    {$row['mlog_content']}....
    -
    IPB ОШИБКА: {$row['mlog_msg']} -
    SMTP КОД: {$row['mlog_code']} -
    SMTP ОШИБКА: {$row['mlog_smtp_error']} +
    IPB ERROR: {$row['mlog_msg']} +
    SMTP CODE: {$row['mlog_code']} +
    SMTP ERROR: {$row['mlog_smtp_error']} " ) ); @@ -184,17 +165,19 @@ class ad_emailerror } } + $ids = $this->ipsclass->clean_int_array( $ids ); + //----------------------------------------- if ( count($ids) < 1 ) { - $this->ipsclass->admin->error("Вы должны выбрать хоть одну запись лога для удаления"); + $this->ipsclass->admin->error("You did not select any email log entries to approve or delete"); } $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'mail_error_logs', 'where' => "mlog_id IN (".implode(',', $ids ).")" ) ); } - $this->ipsclass->admin->save_log("Журнал e-mail ошибок очищен"); + $this->ipsclass->admin->save_log("Removed email error log entries"); $this->ipsclass->boink_it($this->ipsclass->base_url."&{$this->ipsclass->form_code}"); } @@ -209,10 +192,10 @@ class ad_emailerror $form_array = array(); - $start = intval($this->ipsclass->input['st']); + $start = intval($this->ipsclass->input['st']) >=0 ? intval($this->ipsclass->input['st']) : 0; - $this->ipsclass->admin->page_detail = "Журнал сохраненных e-mail ошибок"; - $this->ipsclass->admin->page_title = "Управление логами ошибок почты"; + $this->ipsclass->admin->page_detail = "Stored email error logs"; + $this->ipsclass->admin->page_title = "Email Error Logs Manager"; //----------------------------------------- // Check URL parameters @@ -221,9 +204,9 @@ class ad_emailerror $url_query = array(); $db_query = array(); - if ( $this->ipsclass->input['type'] != "" ) + if ( isset($this->ipsclass->input['type']) AND $this->ipsclass->input['type'] != "" ) { - $this->ipsclass->admin->page_title .= " (Результаты поиска)"; + $this->ipsclass->admin->page_title .= " (Search Results)"; switch( $this->ipsclass->input['type'] ) { @@ -231,7 +214,7 @@ class ad_emailerror $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -241,7 +224,7 @@ class ad_emailerror $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -251,7 +234,7 @@ class ad_emailerror $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -261,7 +244,7 @@ class ad_emailerror $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -296,30 +279,58 @@ class ad_emailerror $count = $this->ipsclass->DB->fetch_row(); - $links = $this->ipsclass->build_pagelinks( array( 'TOTAL_POSS' => $count['cnt'], + $links = $this->ipsclass->adskin->build_pagelinks( array( 'TOTAL_POSS' => $count['cnt'], 'PER_PAGE' => 25, 'CUR_ST_VAL' => $start, - 'L_SINGLE' => "Одна страница", - 'L_MULTI' => "Страницы: ", + 'L_SINGLE' => "Single Page", + 'L_MULTI' => "Pages: ", 'BASE_URL' => $this->ipsclass->base_url."&{$this->ipsclass->form_code}".$url, ) ); $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'mail_error_logs', 'where' => $dbe, 'order' => 'mlog_date DESC', 'limit' => array( $start, 25 ) ) ); $this->ipsclass->DB->simple_exec(); + + $this->ipsclass->html .= ""; $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'remove' ), 2 => array( 'act' , 'emailerror' ), 3 => array( 'section', $this->ipsclass->section_code ), ) ); - $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Кому" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Тема" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Ошибка" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата Время" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "" , "1%" ); + $this->ipsclass->adskin->td_header[] = array( "To" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Subject" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Error MSG" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "Date" , "20%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Сохраненные неотправленные письма" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Logged Emails Errors" ); if ( $this->ipsclass->DB->get_num_rows() ) { @@ -330,7 +341,7 @@ class ad_emailerror $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
    ", ''.$row['mlog_to'].'', - "".$row['mlog_subject']."", + "".$row['mlog_subject']."", $row['mlog_msg'].'
    '.$row['mlog_code']. ' '.$row['mlog_smtp_msg'], $row['mlog_date'], ) ); @@ -340,10 +351,10 @@ class ad_emailerror } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    Результатов нет
    "); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    No results
    "); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic('
      Удалить все?
    '.$links.'
    ', 'left', 'pformstrip'); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic('
      Remove all?
    '.$links.'
    ', 'left', 'tablesubheader'); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -358,39 +369,35 @@ class ad_emailerror 3 => array( 'section', $this->ipsclass->section_code ), ) ); - $this->ipsclass->adskin->td_header[] = array( " " , "100%" ); - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Поиск в логах ошибок почты" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Search Email Error Logs" ); $form_array = array( - 0 => array( 'subject' , 'Тема письма' ), - 2 => array( 'email_from' , 'От (адрес email)' ), - 3 => array( 'email_to' , 'Кому (адрес email)' ), - 4 => array( 'error' , 'Сообщение об ошибке' ), + 0 => array( 'subject' , 'Email Subject' ), + 2 => array( 'email_from' , 'From Email Address' ), + 3 => array( 'email_to' , 'To Email Address' ), + 4 => array( 'error' , 'Error Message' ), ); $type_array = array( - 0 => array( 'exact' , 'совпадение' ), - 1 => array( 'loose' , 'содержит' ), + 0 => array( 'exact' , 'is exactly' ), + 1 => array( 'loose' , 'contains' ), ); //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Где искать  " - . $this->ipsclass->adskin->form_dropdown( "type" , $form_array, $_POST['type']) ." " - . $this->ipsclass->adskin->form_dropdown( "match", $type_array, $_POST['match']) ." " - . $this->ipsclass->adskin->form_input( "string", $_POST['string']), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Search where  " + . $this->ipsclass->adskin->form_dropdown( "type" , $form_array, isset($_POST['type']) ? $_POST['type'] : '' ) ." " + . $this->ipsclass->adskin->form_dropdown( "match", $type_array, isset($_POST['match']) ? $_POST['match'] : '') ." " + . $this->ipsclass->adskin->form_input( "string", isset($_POST['string']) ? $_POST['string'] : '' ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Искать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Search"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- //------------------------------- - $this->ipsclass->admin->nav[] = array( 'section=admin&act=emailerror', 'Журнал e-mail ошибок' ); - $this->ipsclass->admin->output(); } diff --git a/upload/sources/action_admin/emaillogs.php b/upload/sources/action_admin/emaillogs.php index d6c7242c..b323bdc5 100644 --- a/upload/sources/action_admin/emaillogs.php +++ b/upload/sources/action_admin/emaillogs.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-28 22:59:40 +0100 (Fri, 28 Oct 2005) $ -| > $Revision: 71 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Email Logs Stuff @@ -38,7 +28,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -64,18 +54,7 @@ class ad_emaillogs function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - - //----------------------------------------- + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Email Logs' ); // Make sure we're a root admin, or else! @@ -118,7 +97,7 @@ class ad_emaillogs { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID адреса email, вернитесь и попробуйте еще раз"); + $this->ipsclass->admin->error("Could not resolve the email ID, please try again"); } $id = intval($this->ipsclass->input['id']); @@ -128,7 +107,7 @@ class ad_emaillogs if ( ! $row = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Невозможно определить ID адреса email, вернитесь и попробуйте еще раз ($id)"); + $this->ipsclass->admin->error("Could not resolve the email ID, please try again ($id)"); } $this->ipsclass->adskin->td_header[] = array( " " , "100%" ); @@ -140,11 +119,11 @@ class ad_emaillogs $row['email_date'] = $this->ipsclass->admin->get_date( $row['email_date'], 'LONG' ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "От: {$row['name']} <{$row['from_email_address']}> -
    Кому: {$row['to_name']} <{$row['to_email_address']}> -
    Отправлено: {$row['email_date']} -
    IP-адрес: {$row['from_ip_address']} -
    Тема: {$row['email_subject']} + "From: {$row['name']} <{$row['from_email_address']}> +
    To: {$row['to_name']} <{$row['to_email_address']}> +
    Sent: {$row['email_date']} +
    From IP: {$row['from_ip_address']} +
    Subject: {$row['email_subject']}

    {$row['email_content']} " @@ -182,17 +161,19 @@ class ad_emaillogs } } + $ids = $this->ipsclass->clean_int_array( $ids ); + //----------------------------------------- if ( count($ids) < 1 ) { - $this->ipsclass->admin->error("Вы должны выбрать хоть одну запись из журнала для удаления"); + $this->ipsclass->admin->error("You did not select any email log entries to approve or delete"); } $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'email_logs', 'where' => " email_id IN (".implode(',', $ids ).")" ) ); } - $this->ipsclass->admin->save_log("Удалены записи из журнала e-mail отправлений"); + $this->ipsclass->admin->save_log("Removed email log entries"); $this->ipsclass->boink_it($this->ipsclass->base_url."&act=emaillog"); exit(); @@ -214,10 +195,10 @@ class ad_emaillogs $form_array = array(); - $start = intval($this->ipsclass->input['st']); + $start = intval($this->ipsclass->input['st']) >=0 ? intval($this->ipsclass->input['st']) : 0; - $this->ipsclass->admin->page_detail = "Сохраненные записи журнала e-mail отправлений"; - $this->ipsclass->admin->page_title = "Управление журналом e-mail отправлений"; + $this->ipsclass->admin->page_detail = "Stored email logs"; + $this->ipsclass->admin->page_title = "Email Logs Manager"; //----------------------------------------- // Check URL parameters @@ -226,9 +207,9 @@ class ad_emaillogs $url_query = array(); $db_query = array(); - if ( $this->ipsclass->input['type'] != "" ) + if ( isset($this->ipsclass->input['type']) AND $this->ipsclass->input['type'] != "" ) { - $this->ipsclass->admin->page_title .= " (Результаты поиска)"; + $this->ipsclass->admin->page_title .= " (Search Results)"; switch( $this->ipsclass->input['type'] ) { @@ -246,7 +227,7 @@ class ad_emaillogs $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -256,7 +237,7 @@ class ad_emaillogs $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -266,7 +247,7 @@ class ad_emaillogs $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -276,7 +257,7 @@ class ad_emaillogs $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } $url_query[] = 'type='.$this->ipsclass->input['type']; $url_query[] = 'string='.urlencode($string); @@ -286,7 +267,7 @@ class ad_emaillogs $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } if ( $this->ipsclass->input['match'] == 'loose' ) @@ -296,7 +277,7 @@ class ad_emaillogs if ( ! $this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->admin->error("Не найдено никаких записей, соответствующих запросу в журнале e-mail отправлений"); + $this->ipsclass->admin->error("No matches found in the email logs"); } $ids = array(); @@ -315,7 +296,7 @@ class ad_emaillogs if ( ! $this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->admin->error("Не найдено никаких записей, соответствующих запросу в журнале e-mail отправлений"); + $this->ipsclass->admin->error("No matches found in the email logs"); } $r = $this->ipsclass->DB->fetch_row(); @@ -330,7 +311,7 @@ class ad_emaillogs $string = urldecode($this->ipsclass->input['string']); if ( $string == "" ) { - $this->ipsclass->admin->error("Вы должны ввести хоть что-нибудь"); + $this->ipsclass->admin->error("You must enter something to search by"); } if ( $this->ipsclass->input['match'] == 'loose' ) @@ -340,7 +321,7 @@ class ad_emaillogs if ( ! $this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->admin->error("Не найдено никаких записей, соответствующих запросу в журнале e-mail отправлений"); + $this->ipsclass->admin->error("No matches found in the email logs"); } $ids = array(); @@ -359,7 +340,7 @@ class ad_emaillogs if ( ! $this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->admin->error("Не найдено никаких записей, соответствующих запросу в журнале e-mail отправлений"); + $this->ipsclass->admin->error("No matches found in the email logs"); } $r = $this->ipsclass->DB->fetch_row(); @@ -376,7 +357,10 @@ class ad_emaillogs } } - $url_query[] = 'match='.$this->ipsclass->input['match']; + if( isset($this->ipsclass->input['match']) ) + { + $url_query[] = 'match='.$this->ipsclass->input['match']; + } //----------------------------------------- // LIST 'EM @@ -402,11 +386,11 @@ class ad_emaillogs $count = $this->ipsclass->DB->fetch_row(); - $links = $this->ipsclass->build_pagelinks( array( 'TOTAL_POSS' => $count['cnt'], + $links = $this->ipsclass->adskin->build_pagelinks( array( 'TOTAL_POSS' => $count['cnt'], 'PER_PAGE' => 25, 'CUR_ST_VAL' => $start, - 'L_SINGLE' => "Одна страница", - 'L_MULTI' => "Страницы: ", + 'L_SINGLE' => "Single Page", + 'L_MULTI' => "Pages: ", 'BASE_URL' => $this->ipsclass->base_url."&{$this->ipsclass->form_code}".$url, ) ); @@ -418,18 +402,46 @@ class ad_emaillogs $this->ipsclass->DB->cache_add_query( 'emaillogs_list_current', array( 'dbe' => $dbe, 'limit_a' => $start ) ); $this->ipsclass->DB->cache_exec_query(); + $this->ipsclass->html .= ""; + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'remove' ), 2 => array( 'act' , 'emaillog' ), 3 => array( 'section', $this->ipsclass->section_code ), ) ); - $this->ipsclass->adskin->td_header[] = array( " " , "5%" ); - $this->ipsclass->adskin->td_header[] = array( "От" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Тема" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Кому" , "20%" ); - $this->ipsclass->adskin->td_header[] = array( "Дата Время" , "25%" ); + $this->ipsclass->adskin->td_header[] = array( "" , "5%" ); + $this->ipsclass->adskin->td_header[] = array( "From Member" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Subject" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "To Member" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Sent Time" , "25%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Сохраненные отправленные письма" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Logged Emails" ); if ( $this->ipsclass->DB->get_num_rows() ) { @@ -440,9 +452,9 @@ class ad_emaillogs $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
    ", - "..by id ipsclass->vars['php_ext']}?act=Profile&MID={$row['id']}' title='Профиль пользователя (новое окно)' target='blank'>{$row['name']}", - "{$row['email_subject']}", - "..by id ipsclass->vars['php_ext']}?act=Profile&MID={$row['to_id']}' title='Профиль пользователя (новое окно)' target='blank'>{$row['to_name']}", + "..by id ipsclass->vars['php_ext']}?showuser={$row['id']}' title='Members profile (new window)' target='blank'>{$row['name']}", + "{$row['email_subject']}", + "..by id ipsclass->vars['php_ext']}?showuser={$row['to_id']}' title='Members profile (new window)' target='blank'>{$row['to_name']}", "{$row['email_date']}", ) ); @@ -451,10 +463,10 @@ class ad_emaillogs } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    Нет записей
    "); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    No results
    "); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic('
      Удалить все?
    '.$links.'
    ', 'left', 'pformstrip'); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic('
      Remove all?
    '.$links.'
    ', 'left', 'tablesubheader'); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -469,42 +481,38 @@ class ad_emaillogs 3 => array( 'section', $this->ipsclass->section_code ), ) ); - $this->ipsclass->adskin->td_header[] = array( " " , "100%" ); - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Поиск в журнале e-mail отправлений" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Search Email Logs" ); $form_array = array( - 0 => array( 'subject' , 'Тема письма' ), - 1 => array( 'content' , 'Содержимое' ), - 2 => array( 'email_from' , 'От (адрес email)' ), - 3 => array( 'email_to' , 'Кому (адрес email)' ), - 4 => array( 'name_from' , 'От (имя пользователя)'), - 5 => array( 'name_to' , 'Кому (имя пользователя)' ), + 0 => array( 'subject' , 'Email Subject' ), + 1 => array( 'content' , 'Email Body' ), + 2 => array( 'email_from' , 'From Email Address' ), + 3 => array( 'email_to' , 'To Email Address' ), + 4 => array( 'name_from' , 'From Member Name'), + 5 => array( 'name_to' , 'To Member Name' ), ); $type_array = array( - 0 => array( 'exact' , 'совпадение' ), - 1 => array( 'loose' , 'содержит' ), + 0 => array( 'exact' , 'is exactly' ), + 1 => array( 'loose' , 'contains' ), ); //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Где искать  " + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Search where  " . $this->ipsclass->adskin->form_dropdown( "type", $form_array) ." " . $this->ipsclass->adskin->form_dropdown( "match", $type_array) ." " . $this->ipsclass->adskin->form_input( "string"), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Искать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Search"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- //------------------------------- - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Журнал e-mail отправлений' ); - $this->ipsclass->admin->output(); } diff --git a/upload/sources/action_admin/emoticons.php b/upload/sources/action_admin/emoticons.php index a4a960d9..25b43cb1 100644 --- a/upload/sources/action_admin/emoticons.php +++ b/upload/sources/action_admin/emoticons.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-02-01 18:16:26 +0000 (Wed, 01 Feb 2006) $ -| > $Revision: 132 $ -| > $Author: bfarber $ +| > $Date: 2006-10-05 17:04:08 +0100 (Thu, 05 Oct 2006) $ +| > $Revision: 609 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Administration Module @@ -37,13 +27,14 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } class ad_emoticons { var $functions = ""; + var $html; /** * Section title name @@ -71,19 +62,11 @@ class ad_emoticons { //----------------------------------------- $this->ipsclass->admin->page_detail = ""; - $this->ipsclass->admin->page_title = "Настройка смайликов"; + $this->ipsclass->admin->page_title = "Emoticons Manager"; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Emoticons Manager' ); + + $this->html = $this->ipsclass->acp_load_template('cp_skin_lookandfeel'); - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // What to do... //----------------------------------------- @@ -170,7 +153,7 @@ class ad_emoticons { if ($name == "") { - $this->ipsclass->main_msg = "Вы ввели недопустимое имя паки, вернитесь назад и проверьте ваши символы (A-Z, a-z, 0-9)"; + $this->ipsclass->main_msg = "No valid folder name was entered, please try again using only alphanumerics (A-Z, a-z, 0-9)"; $this->emoticon_start(); } @@ -180,7 +163,7 @@ class ad_emoticons { if ( SAFE_MODE_ON ) { - $this->ipsclass->main_msg = "Безопасный режим: IPB не может создать или отредактировать папку за вас, пожалуйста, создайте сами (или удалите) папку при помощи FTP в 'style_emoticons'."; + $this->ipsclass->main_msg = "SAFE MODE DETECTED: IPB cannot create or edit folders for you, please create or edit the folder manually using FTP in 'style_emoticons'"; $this->emoticon_start(); } @@ -190,7 +173,7 @@ class ad_emoticons { if ( file_exists( CACHE_PATH.'style_emoticons/'.$name ) ) { - $this->ipsclass->main_msg = "'style_emoticons/$name' уже существует, пожалуйста, выберете другие имя."; + $this->ipsclass->main_msg = "'style_emoticons/$name' already exists, please choose another name."; $this->emoticon_start(); } @@ -204,12 +187,33 @@ class ad_emoticons { { @chmod( CACHE_PATH.'style_emoticons/'.$name, 0777 ); - $this->ipsclass->main_msg = "Дирекотория не создана"; + $dh = opendir( CACHE_PATH.'style_emoticons/default' ); + + while ( $file = readdir( $dh ) ) + { + if (($file != ".") && ($file != "..")) + { + @copy( CACHE_PATH.'style_emoticons/default/'.$file, CACHE_PATH.'style_emoticons/'.$name.'/'.$file ); + @chmod( CACHE_PATH.'style_emoticons/'.$name.'/'.$file, 0777 ); + } + } + + closedir( $dh ); + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'emoticons', 'where' => "emo_set='default'" ) ); + $outer = $this->ipsclass->DB->simple_exec(); + + while( $r = $this->ipsclass->DB->fetch_row($outer) ) + { + $this->ipsclass->DB->do_insert( "emoticons", array( 'clickable' => $r['clickable'], 'typed' => $r['typed'], 'emo_set' => $name, 'image' => $r['image'] ) ); + } + + $this->ipsclass->main_msg = "New Folder Added"; $this->emoticon_start(); } else { - $this->ipsclass->main_msg = "IPB не может создать или отредактировать папку за вас, пожалуйста, создайте сами (или удалите) папку при помощи FTP в 'style_emoticons'"; + $this->ipsclass->main_msg = "IPB cannot create a new folder for you, please create the folder manually using FTP in 'style_emoticons'"; $this->emoticon_start(); } } @@ -217,8 +221,16 @@ class ad_emoticons { { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Папки с таким названием нет."; + $this->ipsclass->main_msg = "Missing directory name, please try again."; $this->emoticon_start(); + return; + } + + if( $this->ipsclass->input['id'] == 'default' ) + { + $this->ipsclass->main_msg = "You cannot rename the default folder."; + $this->emoticon_start(); + return; } //----------------------------------------- @@ -258,13 +270,12 @@ class ad_emoticons { $this->ipsclass->cache_func->_rebuild_all_caches( $rebuild_sets ); } - - $this->ipsclass->main_msg = "Папка переименована."; + $this->ipsclass->main_msg = "Folder renamed."; $this->emoticon_start(); } else { - $this->ipsclass->main_msg = "IPB не может переименовать эту папку за Вас."; + $this->ipsclass->main_msg = "IPB cannot rename this folder for you."; $this->emoticon_start(); } } @@ -278,24 +289,40 @@ class ad_emoticons { { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->main_msg = "Не выбран ID группы смайликов."; + $this->ipsclass->main_msg = "No emoticon group ID was passed"; $this->emoticon_start(); } foreach ($this->ipsclass->input as $key => $value) { - if ( preg_match( "/^emo_type_(\d+)$/", $key, $match ) ) + if ( preg_match( "/^emo_id_(\d+)$/", $key, $match ) ) { - if ( isset( $this->ipsclass->input[$match[0]]) ) + if ( $match[0] ) { - $typed = str_replace( '"', "", $this->ipsclass->input[$match[0]] ); - $click = $this->ipsclass->input['emo_click_'.$match[1] ]; - - $typed = str_replace( '\', "", $typed ); - - if ( $typed and $match[1] ) + $typed = ''; + + if( $this->ipsclass->input['id'] == 'default' ) { - $this->ipsclass->DB->do_update( 'emoticons', array( 'clickable' => intval($click), 'typed' => $typed ), 'id='.$match[1] ); + $typed = str_replace( '"', "", $this->ipsclass->input['emo_type_'.$match[1]] ); + $typed = str_replace( '\', "", $typed ); + } + + $click = $this->ipsclass->input[ 'emo_click_'.$match[1] ]; + + if ( $match[1] ) + { + if( $typed ) + { + $orig_typed = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'typed', 'from' => 'emoticons', 'where' => 'id='.intval($match[1]) ) ); + + $this->ipsclass->DB->do_update( 'emoticons', array( 'clickable' => intval($click), 'typed' => $typed ), 'id='.intval($match[1]) ); + + $this->ipsclass->DB->do_update( 'emoticons', array( 'typed' => $typed ), "typed='".$orig_typed['typed']."'" ); + } + else + { + $this->ipsclass->DB->do_update( 'emoticons', array( 'clickable' => intval($click) ), 'id='.intval($match[1]) ); + } } } } @@ -303,7 +330,7 @@ class ad_emoticons { $this->emoticon_rebuildcache(); - $this->ipsclass->main_msg = "Смайлики обновлены"; + $this->ipsclass->main_msg = "Emoticons updated"; $this->emoticon_manage(); @@ -317,21 +344,29 @@ class ad_emoticons { { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->main_msg = "Не выбран ID группы смайликов"; + $this->ipsclass->main_msg = "No emoticon group ID was passed"; $this->emoticon_start(); } + if ($this->ipsclass->input['id'] != "default" ) + { + $this->ipsclass->main_msg = "You may only add, edit, and remove emoticons from the default set"; + $this->emoticon_start(); + } + if ($this->ipsclass->input['eid'] == "") { - $this->ipsclass->main_msg = "Не выбран ID смайликов"; + $this->ipsclass->main_msg = "No emoticon ID was passed"; $this->emoticon_manage(); } - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emoticons', 'where' => "id=".intval($this->ipsclass->input['eid']) ) ); + $emo_info = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'typed', 'from' => 'emoticons', 'where' => "id=".intval($this->ipsclass->input['eid']) ) ); + + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emoticons', 'where' => "typed='".$emo_info['typed']."'" ) ); $this->emoticon_rebuildcache(); - $this->ipsclass->main_msg = "Смайлик удален"; + $this->ipsclass->main_msg = "Emoticon removed"; $this->emoticon_manage(); } @@ -344,10 +379,22 @@ class ad_emoticons { { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->main_msg = "Не выбран ID группы иконок."; + $this->ipsclass->main_msg = "No emoticon group ID was passed"; $this->emoticon_start(); } + if ($this->ipsclass->input['id'] != "default" ) + { + $this->ipsclass->main_msg = "You may only add, edit, and remove emoticons from the default set"; + $this->emoticon_start(); + } + + if ($this->ipsclass->input['id'] != "default") + { + $this->ipsclass->main_msg = "You may only add, edit, and remove emoticons from the default set."; + $this->emoticon_start(); + } + foreach ($this->ipsclass->input as $key => $value) { if ( preg_match( "/^emo_type_(\d+)$/", $key, $match ) ) @@ -370,6 +417,39 @@ class ad_emoticons { if ( $add and $typed and $image ) { $this->ipsclass->DB->do_insert( 'emoticons', array( 'clickable' => intval($click), 'typed' => $typed, 'image' => $image, 'emo_set' => $set ) ); + + $emodirs = array( 0 => ''); + + $dh = opendir( CACHE_PATH.'style_emoticons' ); + + while ( $file = readdir( $dh ) ) + { + if (($file != ".") && ($file != "..")) + { + if ( is_dir(CACHE_PATH.'style_emoticons/'.$file) ) + { + if( $file == 'default' ) + { + $emodirs[0] = $file; + } + else + { + $emodirs[] = $file; + } + } + } + } + closedir( $dh ); + + foreach( $emodirs as $directory ) + { + if( $directory == $set ) + { + continue; + } + + $this->ipsclass->DB->do_insert( 'emoticons', array( 'clickable' => intval($click), 'typed' => $typed, 'image' => $image, 'emo_set' => $directory ) ); + } } } } @@ -377,7 +457,7 @@ class ad_emoticons { $this->emoticon_rebuildcache(); - $this->ipsclass->main_msg = "Смайлики обновлены"; + $this->ipsclass->main_msg = "Emoticons updated"; $this->emoticon_manage(); } @@ -389,7 +469,11 @@ class ad_emoticons { function emoticon_upload() { - $overwrite = 1; + //----------------------------------------- + // INIT + //----------------------------------------- + + $overwrite = 1; //----------------------------------------- // Which folders? @@ -411,7 +495,7 @@ class ad_emoticons { if ( ! count( $directories ) ) { - $this->ipsclass->main_msg = "Вы не выбрали смайлик чтобы произвести загрузку!"; + $this->ipsclass->main_msg = "You must choose a folder other than 'default' to upload into."; $this->emoticon_start(); } @@ -419,8 +503,37 @@ class ad_emoticons { // Excuse me, can you shift? //----------------------------------------- + if ( ! in_array( 'default', $directories ) ) + { + array_push( $directories, 'default' ); + } + $first_dir = array_shift( $directories ); + $emodirs = array( 0 => ''); + + $dh = opendir( CACHE_PATH.'style_emoticons' ); + + while ( $file = readdir( $dh ) ) + { + if ( ($file != ".") && ($file != "..") ) + { + if ( is_dir( CACHE_PATH.'style_emoticons/'.$file ) ) + { + if( $file == 'default' ) + { + $emodirs[0] = $file; + } + else + { + $emodirs[] = $file; + } + } + } + } + + closedir( $dh ); + //----------------------------------------- // Loopy loo? //----------------------------------------- @@ -460,7 +573,7 @@ class ad_emoticons { { $this->ipsclass->main_msg = "You can only upload image files (jpeg, jpg, gif and png)"; $this->emoticon_start(); - } + } //----------------------------------------- // Copy the upload to the uploads directory @@ -468,7 +581,7 @@ class ad_emoticons { if ( ! @move_uploaded_file( $_FILES[ $field ]['tmp_name'], CACHE_PATH.'style_emoticons/'.$first_dir."/".$FILE_NAME) ) { - $this->ipsclass->main_msg = "Невозможно загрузить, извините уж!"; + $this->ipsclass->main_msg = "The upload failed, sorry!"; $this->emoticon_start(); } else @@ -485,22 +598,39 @@ class ad_emoticons { { if ( file_exists( CACHE_PATH.'style_emoticons/'.$newdir."/".$FILE_NAME ) ) { - if ( $overwrite != 1 ) + if ( $overwrite != 1 OR $newdir == 'default' ) { continue; } } + if ( @copy( CACHE_PATH.'style_emoticons/'.$first_dir."/".$FILE_NAME, CACHE_PATH.'style_emoticons/'.$newdir."/".$FILE_NAME ) ) + { + @chmod( CACHE_PATH.'style_emoticons/'.$newdir."/".$FILE_NAME, 0777 ); + } + } + } + + // Let's make sure this 'image' is available in all directories too + if ( is_array( $emodirs ) and count( $emodirs ) ) + { + foreach ( $emodirs as $newdir ) + { + if ( file_exists( CACHE_PATH.'style_emoticons/'.$newdir."/".$FILE_NAME ) ) + { + continue; + } + if( @copy( CACHE_PATH.'style_emoticons/'.$first_dir."/".$FILE_NAME, CACHE_PATH.'style_emoticons/'.$newdir."/".$FILE_NAME ) ) { @chmod( CACHE_PATH.'style_emoticons/'.$newdir."/".$FILE_NAME, 0777 ); } } - } + } } } - $this->ipsclass->main_msg = "Загрузка завершена!"; + $this->ipsclass->main_msg = "Uploads complete!"; $this->emoticon_start(); } @@ -513,21 +643,10 @@ class ad_emoticons { { if ( ! is_dir( CACHE_PATH. 'style_emoticons') ) { - $this->ipsclass->admin->error("Нельзя найти папку с иконками - убедитесь, что путь к 'style_emoticons' верен"); + $this->ipsclass->admin->error("Could not locate the emoticons directory - make sure the 'style_emoticons' path is set correctly"); $this->ipsclass->admin->output(); } - //----------------------------------------- - // Start table - //----------------------------------------- - - $this->ipsclass->adskin->td_header[] = array( " " , "1%" ); - $this->ipsclass->adskin->td_header[] = array( "Папка" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Загрузка" , "5%" ); - $this->ipsclass->adskin->td_header[] = array( "# папки" , "15%" ); - $this->ipsclass->adskin->td_header[] = array( "# группы смайликов" , "15%" ); - $this->ipsclass->adskin->td_header[] = array( "Опции группы" , "20%" ); - //----------------------------------------- // Get emoticon count //----------------------------------------- @@ -544,7 +663,7 @@ class ad_emoticons { // Get emoticon folders //----------------------------------------- - $emodirs = array(); + $emodirs = array( 0 => ''); $dh = opendir( CACHE_PATH.'style_emoticons' ); @@ -554,7 +673,14 @@ class ad_emoticons { { if ( is_dir(CACHE_PATH.'style_emoticons/'.$file) ) { - $emodirs[] = $file; + if( $file == 'default' ) + { + $emodirs[0] = $file; + } + else + { + $emodirs[] = $file; + } } } } @@ -564,119 +690,73 @@ class ad_emoticons { // Start output //----------------------------------------- - $this->ipsclass->html .= " - "; + $this->ipsclass->html .= $this->html->emoticon_overview_wrapper_addform(); - $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'emo_upload' ), - 2 => array( 'act' , 'emoticons' ), - 3 => array( 'MAX_FILE_SIZE', '10000000000' ), - 4 => array( 'section', $this->ipsclass->section_code ), - ) , "uploadform", " enctype='multipart/form-data'" ); - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Текущая папка смайликов" ); + $row_html = ""; + + $i = 0; + $total = count($emodirs); foreach( $emodirs as $dir ) { - $files = $this->emoticon_get_folder_contents( $dir ); - $count = intval( count($files) ); + $i++; + + $data = array(); - if ( is_writeable( './style_emoticons/'.$dir ) ) + $files = $this->emoticon_get_folder_contents( $dir ); + $data['count'] = intval( count($files) ); + + if( $dir == 'default' ) { - $icon = 'icon_can_write.gif'; - $title = 'Новые смайлики могут быть добавлены: эта папка имеет разрешение на запись'; - $checkbox = ""; + $data['line_image'] = ''; + $data['link_text'] = "Manage Emoticons"; } else { - $icon = 'icon_cannot_write.gif'; - $title = 'В эту папку нельзя производить запись и CHMOD должен быть изменен'; - $checkbox = "-"; + $data['link_text'] = "Set Clickable"; + + if( $i == $total ) + { + $data['line_image'] = " "; + } + else + { + $data['line_image'] = " "; + } } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "
    ", - " - - - - -
    {$dir}$icon
    ", - "
    {$checkbox}
    ", - "
    {$count}
    ", - "
    ".intval($emo_db[ $dir ]['count'])."
    ", - "
     ". - $this->ipsclass->adskin->js_make_button("Управление" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=emo_manage&id={$dir}").' '. - $this->ipsclass->adskin->js_make_button("Удалить" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=emo_setremove&id={$dir}") - ."
    " - ) ); + if ( is_writeable( CACHE_PATH . '/style_emoticons/'.$dir ) ) + { + if( $dir == 'default' ) + { + $checked_def = "checked='checked' disabled='disabled' "; + } + else + { + $checked_def = ""; + } + + $data['icon'] = 'icon_can_write.gif'; + $data['title'] = 'This folder is writeable and new emoticons can be added'; + $data['checkbox'] = ""; + } + else + { + $data['icon'] = 'icon_cannot_write.gif'; + $data['title'] = 'This folder is NOT writeable and the CHMOD must be changed'; + $data['checkbox'] = "-"; + } + + $data['dir'] = $dir; + $data['dir_count'] = intval($emo_db[ $dir ]['count']); + + $row_html .= $this->html->emoticon_overview_row( $data ); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( array( "
    ", 6, 'pformstrip' ) ) ); + $this->ipsclass->html .= $this->html->emoticon_overview_wrapper( $row_html ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); - - $this->ipsclass->admin->page_detail = "В этой секции вы можете добавлять, изменять и удалять смайлики."; - $this->ipsclass->admin->page_title = "Управление смайликами"; - - if ( SAFE_MODE_ON ) - { - $this->ipsclass->admin->page_detail .= "SAFE MODE ВКЛЮЧЕН: Функции по загрузке любых файлов не будут работать, пока PHP находится в safe mode."; - $this->ipsclass->html .= ""; - } - else - { - $this->ipsclass->html .= "
    -
    Загрузка смайликов
    - - - - - - - - - -
    -
    -
    "; - } + $this->ipsclass->admin->page_detail = "You may add/edit or remove emoticons in this section."; + $this->ipsclass->admin->page_title = "Emoticon Control"; $this->ipsclass->admin->output(); @@ -688,169 +768,29 @@ class ad_emoticons { function emoticon_setremove() { - $this->ipsclass->admin->page_detail = "Удалить IPB пак смайликов."; - $this->ipsclass->admin->page_title = "Управление смайликами"; + $this->ipsclass->admin->page_detail = "Remove an IPB emoticon pack."; + $this->ipsclass->admin->page_title = "Emoticon Management"; if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Не выбран ни один смайлик."; + $this->ipsclass->main_msg = "No emoticon set was passed."; $this->emoticon_start(); } - //----------------------------------------- - // Splash or mash? - //----------------------------------------- - - if ( $this->ipsclass->input['do'] ) + if( $this->ipsclass->input['id'] == 'default' ) { - //----------------------------------------- - // Do it - //----------------------------------------- - - if ( $this->ipsclass->input['emo_set'] == 'd' ) - { - $this->ipsclass->admin->rm_dir( CACHE_PATH.'style_emoticons/'.$this->ipsclass->input['id'] ); - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emoticons', 'where' => "emo_set='{$this->ipsclass->input['id']}'" ) ); - } - else - { - $this->ipsclass->admin->copy_dir( CACHE_PATH.'style_emoticons/'.$this->ipsclass->input['id'], CACHE_PATH.'style_emoticons/'.$this->ipsclass->input['emo_set'] ); - $this->ipsclass->admin->rm_dir( CACHE_PATH.'style_emoticons/'.$this->ipsclass->input['id'] ); - - //----------------------------------------- - // Merge, don't overwrite - //----------------------------------------- - - $old_emo_db = array(); - - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'emoticons', 'where' => "emo_set='".$this->ipsclass->input['id']."'" ) ); - $this->ipsclass->DB->simple_exec(); - - while( $r = $this->ipsclass->DB->fetch_row() ) - { - $old_emo_db[ $r['image'] ] = $r; - } - - $new_emo_db = array(); - $new_typed = array(); - $new_image = array(); - - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'emoticons', 'where' => "emo_set='".$this->ipsclass->input['emo_set']."'" ) ); - $this->ipsclass->DB->simple_exec(); - - while( $r = $this->ipsclass->DB->fetch_row() ) - { - $new_emo_db[ $r['image'] ] = $r; - $new_typed[ $r['typed'] ] = 1; - $new_image[ $r['image'] ] = 1; - } - - $keep_ids = array(); - $delete_ids = array(); - - foreach( $old_emo_db as $image => $data ) - { - if ( $new_image[ $image ] or $new_typed[ $data['typed'] ] ) - { - $delete_ids[] = $data['id']; - } - else - { - $keep_ids[] = $data['id']; - } - } - - //----------------------------------------- - // Delete... - //----------------------------------------- - - if ( count($delete_ids) ) - { - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emoticons', 'where' => "id IN(".implode(",",$delete_ids).")" ) ); - } - - //----------------------------------------- - // Keep... - //----------------------------------------- - - if ( count($keep_ids) ) - { - $this->ipsclass->DB->do_update( 'emoticons', array( 'emo_set' => $this->ipsclass->input['emo_set'] ), "id IN(".implode(",",$keep_ids).")" ); - } - } - - $this->emoticon_rebuildcache(); - - $this->ipsclass->main_msg = "Папка с смайликами было удалена."; + $this->ipsclass->main_msg = "You cannot rename the default folder."; $this->emoticon_start(); + return; } - else - { - //----------------------------------------- - // Get emoticon folders - //----------------------------------------- - - $emodirs = array(); - $emodd = array( 0=> array( 'd', "Не перемещать, только удалять" ) ); - - $dh = opendir( CACHE_PATH.'style_emoticons' ); - - while ( $file = readdir( $dh ) ) - { - if (($file != ".") && ($file != "..")) - { - if ( is_dir(CACHE_PATH.'style_emoticons/'.$file) ) - { - if ( $file != $this->ipsclass->input['id'] ) - { - $emodirs[] = $file; - $emodd[] = array( $file, "Переместить в: ".$file ); - } - } - } - } - - closedir( $dh ); - - if ( count ( $emodirs ) < 1 ) - { - $this->ipsclass->main_msg = "НЕЛЬЗЯ УДАЛИТЬ: Эта последняя группа смайликов и ее никак нельзя удалить"; - $this->emoticon_start(); - } - - //----------------------------------------- - // Show form - //----------------------------------------- - $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); - - //----------------------------------------- - // EXPORT: Start output - //----------------------------------------- - - $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'emo_setremove' ), - 2 => array( 'act' , 'emoticons' ), - 3 => array( 'id' , $this->ipsclass->input['id'] ), - 4 => array( 'do' , 1 ), - 5 => array( 'section', $this->ipsclass->section_code ), - ) ); - - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "УДАЛЕНИЕ НАБОРА СМАЙЛИКОВ: ".$this->ipsclass->input['id'] ); - - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Переместить или удалить оставшиеся смайлики в этом наборе?
    Если Вы переместите их в другую группу, то не дублируйте изображения и активационные слова не изменятся.
    ", - $this->ipsclass->adskin->form_dropdown( 'emo_set', $emodd ) - ) ); - - - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("УДАЛИТЬ ГРУППУ СМАЙЛИКОВ"); - - $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); - - - $this->ipsclass->admin->output(); - } + $this->ipsclass->admin->rm_dir( CACHE_PATH.'style_emoticons/'.$this->ipsclass->input['id'] ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emoticons', 'where' => "emo_set='{$this->ipsclass->input['id']}'" ) ); + + $this->emoticon_rebuildcache(); + + $this->ipsclass->main_msg = "Emoticon folder removed."; + $this->emoticon_start(); } //----------------------------------------- @@ -859,12 +799,13 @@ class ad_emoticons { function emoticon_pack_splash() { - $this->ipsclass->admin->page_detail = "Импорт/экспорт смайликов."; - $this->ipsclass->admin->page_title = "Настройка смайликов"; + $this->ipsclass->admin->page_detail = "Export or import IPB emoticon packs."; + $this->ipsclass->admin->page_title = "Emoticon Management"; + $this->ipsclass->admin->nav[] = array( '', 'Import/Export Emoticon Packs' ); if ( ! is_dir( CACHE_PATH. 'style_emoticons') ) { - $this->ipsclass->admin->error("Нельзя найти месторасположение папки со смайликами - убедитесь что путь к 'style_emoticons' правилен."); + $this->ipsclass->admin->error("Could not locate the emoticons directory - make sure the 'style_emoticons' path is set correctly"); $this->ipsclass->admin->output(); } @@ -918,15 +859,15 @@ class ad_emoticons { 4 => array( 'section', $this->ipsclass->section_code ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Экспорт группы смайликов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Export an Emoticon Pack" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Какую группу смайликов экспортировать?
    Группа сайликов будет упакована в XML-архив с изображениями и словами вызова смайликов (например :smile:)
    ", + "Export which emoticon group?
    An IPB Emoticon Pack is an XMLarchive of the images and activation words (i.e. :smile:)
    ", $this->ipsclass->adskin->form_dropdown( 'emo_set', $emodd ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Экспорт"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Export"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -948,29 +889,29 @@ class ad_emoticons { ) , "uploadform", " enctype='multipart/form-data'" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Импорт группы смайликов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Import an Emoticon Pack" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "В какую существующую группу импортировать смайлики?
    Группа сайликов должна быть упакована в XML-архив с изображениями и словами вызова смайликов (например :smile:)
    ", + "Import into which emoticon group?
    An IPB Emoticon Pack is an XMLarchive of the images and activation words (i.e. :smile:)
    ", $this->ipsclass->adskin->form_dropdown( 'emo_set', $emodd ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "ИЛИ Импортировать в новую группу:
    Введите название новой группы смайликов.
    ", + "OR Import into a new group named:
    Enter the name of the new emoticon group.
    ", $this->ipsclass->adskin->form_input( 'new_emo_set' ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Перезаписать существующие изображение и слова вызова смайликов?
    Если выбрано ДА, новые изображения заменят старые
    ", + "Overwrite existing images and activation words?
    If yes, new images replace old
    ", $this->ipsclass->adskin->form_yes_no( 'overwrite' ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Загрузка XML-архива смайликов
    Выберите файл для загрузки с вашего компьютера 'ipb_emoticons.xml' или 'ipb_emoticons.xml.gz'
    ", + "Upload XML Emoticon Archive
    Browse your computer for 'ipb_emoticons.xml' or 'ipb_emoticons.xml.gz'
    ", $this->ipsclass->adskin->form_upload( ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Импорт"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Import"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -989,11 +930,11 @@ class ad_emoticons { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); - require( KERNEL_PATH.'class_xmlarchive.php' ); + require_once( KERNEL_PATH.'class_xmlarchive.php' ); $xmlarchive = new class_xmlarchive(); @@ -1003,7 +944,7 @@ class ad_emoticons { if ( ! $this->ipsclass->input['emo_set'] ) { - $this->ibforums->msg = "Вы должны выбрать, какую группу смайликов будет экспортировать"; + $this->ipsclass->main_msg = "You must specify which emoticon group you wish to export"; } //----------------------------------------- @@ -1063,7 +1004,7 @@ class ad_emoticons { $xml->xml_add_group( 'emogroup' ); - foreach( $emo_db as $i => $r ) + foreach( $emo_db as $r ) { $content = array(); @@ -1112,7 +1053,7 @@ class ad_emoticons { if ( ! $content ) { - $this->ipsclass->main_msg = "Неудачная загрузка, ipb_emoticons.xml либо не существует, либо пуст"; + $this->ipsclass->main_msg = "Upload failed, ipb_emoticons.xml was either missing or empty"; $this->emoticon_pack_splash(); } @@ -1120,11 +1061,11 @@ class ad_emoticons { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); - require( KERNEL_PATH.'class_xmlarchive.php' ); + require_once( KERNEL_PATH.'class_xmlarchive.php' ); $xmlarchive = new class_xmlarchive(); @@ -1161,7 +1102,7 @@ class ad_emoticons { if ( ! $this->ipsclass->input['emo_set'] and ! $this->ipsclass->input['new_emo_set'] ) { - $this->ibforums->msg = "Вы должны выбрать, какую группу смайликов будете испортировать"; + $this->ipsclass->main_msg = "You must specify which emoticon group you wish to import into"; } $emo_set_dir = $this->ipsclass->input['emo_set']; @@ -1178,7 +1119,7 @@ class ad_emoticons { if ( file_exists( CACHE_PATH.'style_emoticons/'.$emo_set_dir ) ) { - $this->ipsclass->main_msg = "'style_emoticons/$emo_set_dir' уже существует, выберите другие имя."; + $this->ipsclass->main_msg = "'style_emoticons/$emo_set_dir' already exists, please choose another name."; $this->emoticon_pack_splash(); } @@ -1192,7 +1133,7 @@ class ad_emoticons { } else { - $this->ipsclass->main_msg = ": IPB не может создать или отредактировать папку за вас, пожалуйста, создайте сами (или удалите) папку при помощи FTP в 'style_emoticons'"; + $this->ipsclass->main_msg = "IPB cannot create a new folder for you, please create the folder manually using FTP in 'style_emoticons'"; $this->emoticon_pack_splash(); } } @@ -1216,7 +1157,7 @@ class ad_emoticons { } } - foreach( $xml->xml_array['emoticonexport']['emogroup']['emoticon'] as $idx => $entry ) + foreach( $xml->xml_array['emoticonexport']['emogroup']['emoticon'] as $entry ) { $image = $entry['image']['VALUE']; $typed = $entry['typed']['VALUE']; @@ -1247,11 +1188,41 @@ class ad_emoticons { $this->ipsclass->DB->do_insert( 'emoticons', array( 'typed' => $typed, 'image' => $image, 'clickable' => $click, 'emo_set' => $emo_set_dir ) ); } } + + // Let's add it to all other directories if + // the image doesn't already exist + + $dh = opendir( CACHE_PATH.'style_emoticons' ); + + while ( $file = readdir( $dh ) ) + { + if (($file != ".") && ($file != "..")) + { + if ( is_dir(CACHE_PATH.'style_emoticons/'.$file) ) + { + if( !file_exists( CACHE_PATH.'style_emoticons/'.$file.'/'.$image ) ) + { + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'emoticons', 'where' => "typed='$typed' and image='$image' and emo_set='$file'" ) ); + + if ( $FH = fopen( CACHE_PATH.'style_emoticons/'.$file.'/'.$image, 'wb' ) ) + { + if ( fwrite( $FH, $emoticons[ $image ] ) ) + { + fclose( $FH ); + + $this->ipsclass->DB->do_insert( 'emoticons', array( 'typed' => $typed, 'image' => $image, 'clickable' => $click, 'emo_set' => $file ) ); + } + } + } + } + } + } + closedir( $dh ); } $this->emoticon_rebuildcache(); - $this->ipsclass->main_msg = "Импортирование XML-архива смайликов завершен "; + $this->ipsclass->main_msg = "Emoticon XMLarchive import completed"; $this->emoticon_start(); @@ -1266,11 +1237,21 @@ class ad_emoticons { { $this->ipsclass->input['id'] = trim($this->ipsclass->input['id']); - $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}&code=emo", 'Управление смайликами' ); - $this->ipsclass->admin->nav[] = array( '', 'Управление группой смайликов '.$this->ipsclass->input['id'] ); + $this->ipsclass->admin->nav[] = array( '', 'Managing Set '.$this->ipsclass->input['id'] ); - $this->ipsclass->admin->page_detail = "В этой секции вы можете добавлять, изменять и удалять смайлики. Нажимаемые смайлики — это смайлики, которые будут показаны в табличке рядом с формой сообщения для быстрого выбора смайлика.
    Вы не можете использовать символ " в коде вызова."; - $this->ipsclass->admin->page_title = "Управление смайликами"; + if( $this->ipsclass->input['id'] == 'default' ) + { + $this->ipsclass->admin->page_detail = "You may add/edit or remove emoticons in this section.
    "; + } + + $this->ipsclass->admin->page_detail .= "Clickable refers to emoticons that are in the posting screens 'Clickable Emoticons' table."; + + if( $this->ipsclass->input['id'] == 'default' ) + { + $this->ipsclass->admin->page_detail = "
    You may NOT use the character " in the emoticons code section."; + } + + $this->ipsclass->admin->page_title = "Emoticon Control"; //----------------------------------------- // Get emoticons for this group @@ -1303,8 +1284,9 @@ class ad_emoticons { $td_width = 100 / $per_row; $this->ipsclass->html .= "
    -
    Установленные смайлики в группе '{$this->ipsclass->input['id']}'
    +
    Assigned Emoticons in set '{$this->ipsclass->input['id']}'
    + "; @@ -1321,21 +1303,32 @@ class ad_emoticons { if ( $data['clickable'] ) { $click = 'checked="checked"'; - $class = 'tdrow1'; + $class = 'tablerow1'; } else { $click = ''; - $class = 'tdrow2'; + $class = 'tablerow2'; } $smilies .= ""; @@ -1348,11 +1341,13 @@ class ad_emoticons { $poss_names[$data['typed']] = $data['typed']; } + $smilies = preg_replace( "#style_emoticons#", $this->ipsclass->vars['board_url'].'/style_emoticons', $smilies ); + if ( $count > 0 and $count != $per_row ) { for ($i = $count ; $i < $per_row ; ++$i) { - $smilies .= "\n"; + $smilies .= "\n"; } $smilies .= ""; @@ -1362,18 +1357,19 @@ class ad_emoticons { $this->ipsclass->html .= $smilies; $this->ipsclass->html .= "
    {$image} -     ipsclass->input['id']}' title='Удалить этот смайлик'>Удалить + +     "; + + if( $this->ipsclass->input['id'] == 'default' ) + { + $smilies .= "ipsclass->input['id']}' title='Remove this emoticon'>Delete
    - -

    Нажимаемый? + "; + } + else + { + $smilies .= "

    {$data['typed']}"; + } + + $smilies .= "

    Clickable?
      
    -

    "; +

    "; //----------------------------------------- // Images left in the dir? //----------------------------------------- - if ( count( $emo_file ) ) + if ( count( $emo_file ) && $this->ipsclass->input['id'] == 'default' ) { $this->ipsclass->html .= "
    -
    Неустановленные смайлики в группе '{$this->ipsclass->input['id']}'
    +
    Unassigned images in folder '{$this->ipsclass->input['id']}'
    + "; @@ -1389,18 +1385,18 @@ class ad_emoticons { $poss_name = ':'.preg_replace( "/(.*)(\..+?)$/", "\\1", $image ).':'; - if ( $poss_names[ $poss_name ] ) + if ( isset($poss_names[ $poss_name ]) AND $poss_names[ $poss_name ] ) { $poss_name = preg_replace( "/:$/", "2:", $poss_name ); } - $smilies .= ""; @@ -1416,17 +1412,19 @@ class ad_emoticons { { for ($i = $count ; $i < $per_row ; ++$i) { - $smilies .= "\n"; + $smilies .= "\n"; } $smilies .= ""; } + $smilies = preg_replace( "#style_emoticons#", $this->ipsclass->vars['board_url'].'/style_emoticons', $smilies ); + $this->ipsclass->html .= $smilies; $this->ipsclass->html .= "
    + $smilies .= "
    {$image} -   Добавить +   Add
    - Вызов: -

    Нажимаемый? + Type: +

    Clickable?
      
    -
      
    "; +
      
    "; } $this->ipsclass->admin->output(); @@ -1439,6 +1437,8 @@ class ad_emoticons { function emoticon_rebuildcache() { + require_once ROOT_PATH.'sources/classes/bbcode/class_bbcode_core.php'; + $this->ipsclass->cache['emoticons'] = array(); $this->ipsclass->DB->simple_construct( array( 'select' => 'typed,image,clickable,emo_set', 'from' => 'emoticons' ) ); @@ -1449,6 +1449,8 @@ class ad_emoticons { $this->ipsclass->cache['emoticons'][] = $r; } + usort( $this->ipsclass->cache['emoticons'] , array( 'class_bbcode_core', 'smilie_length_sort' ) ); + $this->ipsclass->update_cache( array( 'name' => 'emoticons', 'array' => 1, 'deletefirst' => 1 ) ); } @@ -1502,11 +1504,6 @@ class ad_emoticons { return ( strlen($a['type']) > strlen($b['type']) ) ? -1 : 1; } - - - - - } diff --git a/upload/sources/action_admin/forums.php b/upload/sources/action_admin/forums.php index 23f22e67..af842258 100644 --- a/upload/sources/action_admin/forums.php +++ b/upload/sources/action_admin/forums.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-01-31 22:47:20 +0000 (Tue, 31 Jan 2006) $ -| > $Revision: 131 $ -| > $Author: bfarber $ +| > $Date: 2006-10-06 11:57:24 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 612 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Admin Forum functions @@ -37,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -70,16 +60,7 @@ class ad_forums function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->ipsclass->input['showall'] = isset($this->ipsclass->input['showall']) ? $this->ipsclass->input['showall'] : 0; $this->ipsclass->forums->forums_init(); @@ -201,7 +182,7 @@ class ad_forums { if ($this->ipsclass->input['f'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID форума, чтобы очистить его."); + $this->ipsclass->admin->error("Could not determine the forum ID to empty."); } $forum = $this->ipsclass->forums->forum_by_id[ $this->ipsclass->input['f'] ]; @@ -212,7 +193,7 @@ class ad_forums if ( ! $forum['id'] ) { - $this->ipsclass->admin->error("Нельзя изменить ID этого Форума"); + $this->ipsclass->admin->error("Could not resolve that forum ID"); } if ( ! $forum['skin_id'] ) @@ -240,8 +221,8 @@ class ad_forums // Do form.. //----------------------------------------- - $this->ipsclass->admin->page_title = "Настройки шаблона форума"; - $this->ipsclass->admin->page_detail = "В этой секции вы можете установить или удалить шаблон для выбранного форума. Этот выбор шаблона заменит шаблоны, выбранные пользователями."; + $this->ipsclass->admin->page_title = "Forum Skin Options"; + $this->ipsclass->admin->page_detail = "You may choose to either add or remove a skin set to this forum. The skin choice will override the users choice."; $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'doskinedit'), 2 => array( 'act' , 'forum' ), @@ -253,17 +234,17 @@ class ad_forums $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Выбор шаблона для форума: {$forum['name']}" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Skin choices for forum: {$forum['name']}" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Какой шаблон установить для этого форума?" , - "" + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Apply which skin to this forum?" , + "" ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Применить ко всем подфорумам?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Apply to all children of this forum (all sub-forums)" , $this->ipsclass->adskin->form_yes_no( 'apply_to_children' ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Установить настройки шаблона"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Edit forum skin options"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -278,7 +259,7 @@ class ad_forums { if ($this->ipsclass->input['f'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID форума, чтобы принять этот стиль."); + $this->ipsclass->admin->error("Could not determine the forum ID to apply this skin to."); } $forum = $this->ipsclass->forums->forum_by_id[ $this->ipsclass->input['f'] ]; @@ -307,7 +288,7 @@ class ad_forums } } - $this->ipsclass->main_msg = "Шаблон форума обновлен"; + $this->ipsclass->main_msg = "Forum skin updated"; $this->recache_forums(); @@ -329,7 +310,7 @@ class ad_forums { if ($this->ipsclass->input['f'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID форума, чтобы очистить его."); + $this->ipsclass->admin->error("Could not determine the forum ID to empty."); } $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, show_rules, rules_title, rules_text', 'from' => 'forums', 'where' => "id=".$this->ipsclass->input['f'] ) ); @@ -341,48 +322,91 @@ class ad_forums if ( ! $this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->admin->error("Нельзя изменить ID этого Форума"); + $this->ipsclass->admin->error("Could not resolve that forum ID"); } $forum = $this->ipsclass->DB->fetch_row(); + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + $this->han_editor->from_acp = 1; + + $this->han_editor->ed_width = "550px"; + $this->han_editor->ed_height = "200px"; + $this->ipsclass->vars['rte_width'] = "500px"; + $this->ipsclass->vars['rte_height'] = "200px"; + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; + //----------------------------------------- - $this->ipsclass->admin->page_title = "Правила форума"; - $this->ipsclass->admin->page_detail = "В этой секции вы можете добавлять, изменять и удалять отображаемые правила выбранного форума"; + $this->ipsclass->admin->page_title = "Forum Rules"; + $this->ipsclass->admin->page_detail = "You may edit, add, remove or change the state of the forum rules display"; $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'dorules'), 2 => array( 'act' , 'forum' ), 3 => array( 'section', 'content' ), 4 => array( 'f' , $this->ipsclass->input['f'] ), - ) ); + ), "theAdminForm", "onclick='return ValidateForm();'", "postingform" ); $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Настройки правил форума" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Forum Rules set up" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Способ отображения" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Display method" , $this->ipsclass->adskin->form_dropdown( "show_rules", array( - 0 => array( '0' , 'Не показывать' ), - 1 => array( '1' , 'Показывать только ссылку' ), - 2 => array( '2' , 'Показывать весь текст' ) + 0 => array( '0' , 'Don\'t Show' ), + 1 => array( '1' , 'Show Link Only' ), + 2 => array( '2' , 'Show full text' ) ), $forum['show_rules'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Заголовок правил" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Rules Title" , $this->ipsclass->adskin->form_input("title", $this->ipsclass->txt_stripslashes(str_replace( "'", ''', $forum['rules_title']))) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Текст правил
    (HTML разрешен)" , - $this->ipsclass->adskin->form_textarea( "body", htmlspecialchars($forum['rules_text'], ENT_QUOTES), 65, 20 ) + if ( $this->han_editor->method == 'rte' ) + { + $forum['rules_text'] = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $forum['rules_text'] ) ); + $forum['rules_text'] = $this->parser->convert_ipb_html_to_html( $forum['rules_text'] ); + } + else + { + $this->parser->parse_html = 1; + $this->parser->parse_nl2br = 1; + $this->parser->parse_smilies = 0; + $this->parser->parse_bbcode = 1; + + $forum['rules_text'] = $this->parser->pre_edit_parse( $forum['rules_text'] ); + } + + $form_element = $this->han_editor->show_editor( $forum['rules_text'], 'body' ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Rules Text
    (HTML Editing Mode)" , + $form_element ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Сохранить изменения"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Edit forum rules"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -397,19 +421,45 @@ class ad_forums { if ($this->ipsclass->input['f'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID форума, чтобы очистить его."); + $this->ipsclass->admin->error("Could not determine the forum ID to empty."); } + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; + + $_POST[ 'body' ] = $this->han_editor->process_raw_post( 'body' ); + $this->parser->parse_smilies = 0; + $this->parser->parse_html = 1; + $this->parser->parse_bbcode = 1; + $_POST[ 'body' ] = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $_POST[ 'body' ] ) ); + $rules = array( 'rules_title' => $this->ipsclass->admin->make_safe($this->ipsclass->txt_stripslashes($_POST['title'])), - 'rules_text' => $this->ipsclass->admin->make_safe($this->ipsclass->txt_stripslashes(html_entity_decode($_POST['body'], ENT_QUOTES))), + 'rules_text' => $this->ipsclass->admin->make_safe($_POST['body']), 'show_rules' => $this->ipsclass->input['show_rules'] ); $this->ipsclass->DB->do_update( 'forums', $rules, 'id='.$this->ipsclass->input['f'] ); $this->recache_forums(); - $this->ipsclass->main_msg = "Правила форума обновлены"; + $this->ipsclass->main_msg = "Forum rules updated"; //----------------------------------------- // Bounce back to parent... @@ -440,9 +490,9 @@ class ad_forums $this->recache_forums(); - $this->ipsclass->admin->save_log("Все сообщения на форуме пересчитаны '{$this->ipsclass->forums->forum_by_id[$this->ipsclass->input['f']]['name']}'"); + $this->ipsclass->admin->save_log("Recounted posts in forum '{$this->ipsclass->forums->forum_by_id[$this->ipsclass->input['f']]['name']}'"); - $this->ipsclass->main_msg = "Форум ресинхронизирован"; + $this->ipsclass->main_msg = "Forum resynschronized"; //----------------------------------------- // Bounce back to parent... @@ -462,7 +512,7 @@ class ad_forums if ($this->ipsclass->input['f'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID форума, чтобы очистить его."); + $this->ipsclass->admin->error("Could not determine the forum ID to empty."); } $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name', 'from' => 'forums', 'where' => "id=".$this->ipsclass->input['f'] ) ); @@ -474,24 +524,24 @@ class ad_forums if ( !$this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->admin->error("Нельзя изменить ID этого Форума"); + $this->ipsclass->admin->error("Could not resolve that forum ID"); } $forum = $this->ipsclass->DB->fetch_row(); //----------------------------------------- - $this->ipsclass->admin->page_title = "Очистить форум '{$forum['name']}'"; + $this->ipsclass->admin->page_title = "Empty Forum '{$forum['name']}'"; - $this->ipsclass->admin->page_detail = "ЭТА ОПЦИЯ УДАЛЯЕТ ВСЕ ТЕМЫ, СООБЩЕНИЯ И ГОЛОСОВАНИЯ.
    Сам же форум не будет удален - убедитесь в том, что это действительно необходимо."; + $this->ipsclass->admin->page_detail = "This WILL DELETE ALL TOPICS, POSTS AND POLLS.
    The forum itself will not be deleted - please ensure you wish to carry out this action before continuing."; //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'doempty' ), 2 => array( 'act' , 'forum' ), - 2 => array( 'section' , 'content' ), - 3 => array( 'f' , $this->ipsclass->input['f'] ), - 4 => array( 'name' , $forum['name'] ), + 3 => array( 'section' , 'content' ), + 4 => array( 'f' , $this->ipsclass->input['f'] ), + 5 => array( 'name' , $forum['name'] ), ) ); //----------------------------------------- @@ -501,11 +551,11 @@ class ad_forums //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Очистка форума '{$forum['name']}'" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Empty Forum '{$forum['name']}'" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Очистить форум: " , $forum['name'] ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Forum to empty: " , $forum['name'] ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Очистить этот форум"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Empty this forum"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -528,7 +578,7 @@ class ad_forums if ($this->ipsclass->input['f'] == "") { - $this->ipsclass->admin->error("Невозможно определить ID форума"); + $this->ipsclass->admin->error("Could not determine the source forum ID."); } //----------------------------------------- @@ -540,7 +590,7 @@ class ad_forums if ( ! $forum = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Невозможно определить ID форума"); + $this->ipsclass->admin->error("Could not get the forum details for the forum to empty"); } $this->ipsclass->DB->simple_construct( array( 'select' => 'tid', 'from' => 'topics', 'where' => "forum_id=".$this->ipsclass->input['f'] ) ); @@ -568,10 +618,10 @@ class ad_forums $this->recache_forums(); - $this->ipsclass->admin->save_log("'{$this->ipsclass->input['name']}' очищен от всех сообщений"); + $this->ipsclass->admin->save_log("Emptied forum '{$this->ipsclass->input['name']}' of all posts"); - $this->ipsclass->input['f'] = ""; - $this->ipsclass->main_msg = "Форум очищен ;("; + $this->ipsclass->input['f'] = $this->ipsclass->forums->forum_by_id[ $this->ipsclass->input['f'] ]['parent_id']; + $this->ipsclass->main_msg = "Forum emptied"; $this->show_forums(); } @@ -587,7 +637,7 @@ class ad_forums if ( ! $this->ipsclass->input['f'] ) { - $this->ipsclass->admin->error("Невозможно определить ID форума, чтобы удалить."); + $this->ipsclass->admin->error("Could not determine the forum ID to delete."); } $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name', 'from' => 'forums', 'order' => 'position' ) ); @@ -600,7 +650,7 @@ class ad_forums if ( $this->ipsclass->DB->get_num_rows() < 2 ) { - $this->ipsclass->admin->error("Вы не можете удалить этот форум, создайте хоть один форум кроме этого для удаления выбранного форума."); + $this->ipsclass->admin->error("Can not remove this forum, please create another before attempting to remove this one"); } while ( $r = $this->ipsclass->DB->fetch_row() ) @@ -630,9 +680,9 @@ class ad_forums // Start form //----------------------------------------- - $this->ipsclass->admin->page_title = "Удаление форума '$name'"; + $this->ipsclass->admin->page_title = "Removing forum '$name'"; - $this->ipsclass->admin->page_detail = "До того как вы удалите этот форум: если выбранный форум не пуст, выберите, что вы будете делать с сообщениями этого форума."; + $this->ipsclass->admin->page_detail = "Before we remove this forum, if this forum is not empty, we need to determine what to do with any topics and posts you may have left in this forum."; $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'dodelete'), 2 => array( 'act' , 'forum' ), @@ -647,13 +697,13 @@ class ad_forums // Main form //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Дополнительная информация" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Required" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Удалить форум: " , $name ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Forum to remove: " , $name ) ); if ( $posts['count'] ) { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Переместить все имеющиеся темы и сообщения в этом форуме в другой?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Move all existing topics and posts in this forum to which forum?" , $this->ipsclass->adskin->form_dropdown( "MOVE_ID", $form_array ) ) ); @@ -661,13 +711,13 @@ class ad_forums if ( $children['count'] ) { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Переместить все существующие темы, сообщения и голосования из этого форума в форум:" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Move all children forums to which forum?" , $this->ipsclass->adskin->form_dropdown( "new_parent_id", $form_array ) ) ); } - $this->ipsclass->html .= $this->ipsclass->adskin->end_form( "Удалить форум" ); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form( "Remove Forum" ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -680,6 +730,16 @@ class ad_forums function do_delete() { + //----------------------------------------- + // Auth check... + //----------------------------------------- + + $this->ipsclass->admin->security_auth_check(); + + //----------------------------------------- + // Continue + //----------------------------------------- + $this->ipsclass->input['f'] = intval($this->ipsclass->input['f']); $this->ipsclass->input['MOVE_ID'] = intval($this->ipsclass->input['MOVE_ID']); $this->ipsclass->input['new_parent_id'] = intval($this->ipsclass->input['new_parent_id']); @@ -691,7 +751,7 @@ class ad_forums if ( ! $this->ipsclass->input['f'] ) { - $this->ipsclass->admin->error("Невозможно определить источник ID форума."); + $this->ipsclass->admin->error("Could not determine the source forum ID."); } if ( ! $this->ipsclass->input['new_parent_id'] ) @@ -702,7 +762,7 @@ class ad_forums { if ( $this->ipsclass->input['new_parent_id'] == $this->ipsclass->input['f'] ) { - $this->ipsclass->main_msg = "Вы не можете переместить подфорумы в удаляемый форум!"; + $this->ipsclass->main_msg = "You cannot move children forums to the forum you're removing!"; $this->delete_form(); } } @@ -723,7 +783,7 @@ class ad_forums { if ( $this->ipsclass->input['MOVE_ID'] == $this->ipsclass->input['f'] ) { - $this->ipsclass->main_msg = "Вы не можете переместить темы, сообщения и голосования в удаляемый форум!"; + $this->ipsclass->main_msg = "You cannot move topics into the forum you're removing!"; $this->delete_form(); } @@ -793,9 +853,9 @@ class ad_forums $moderator->rebuild_moderator_cache(); - $this->ipsclass->admin->save_log("Форум удален '{$forum['name']}'"); + $this->ipsclass->admin->save_log("Removed forum '{$forum['name']}'"); - $this->ipsclass->admin->done_screen("Форум был успешно удален", "Управление форумом", $this->ipsclass->form_code, 'redirect' ); + $this->ipsclass->admin->done_screen("Forum Removed", "Forum Control", $this->ipsclass->form_code, 'redirect' ); } @@ -810,61 +870,63 @@ class ad_forums // INIT //----------------------------------------- + $addnew_type = ( isset($this->ipsclass->input['type']) AND $this->ipsclass->input['type'] ) ? $this->ipsclass->input['type'] : 'forum'; + $form = array(); $forum = array(); - $forum_id = intval($this->ipsclass->input['f']); + $forum_id = isset($this->ipsclass->input['f']) ? intval($this->ipsclass->input['f']) : 0; $parentid = intval($this->ipsclass->input['p']) ? intval($this->ipsclass->input['p']) : -1; - $cat_id = intval($this->ipsclass->input['c']); - $f_name = $this->ipsclass->parse_clean_value(urldecode($_REQUEST['name'])); - $subcanpost = ( $this->ipsclass->input['c'] == 1 ) ? 0 : 1; + $cat_id = isset($this->ipsclass->input['c']) ? intval($this->ipsclass->input['c']) : 0; + $f_name = isset($_REQUEST['name']) ? $this->ipsclass->parse_clean_value(urldecode($_REQUEST['name'])) : ''; + $subcanpost = ( $cat_id == 1 ) ? 0 : 1; $perm_matrix = ""; - $dd_state = array( 0 => array( 1, 'Активный' ), 1 => array( 0, 'Только для чтения архивов' ) ); + $dd_state = array( 0 => array( 1, 'Active' ), 1 => array( 0, 'Read Only Archive' ) ); $dd_moderate = array( - 0 => array( 0, 'Нет' ), - 1 => array( 1, 'Модерировать все новые темы и сообщения' ), - 2 => array( 2, 'Модерировать только новые темы' ), - 3 => array( 3, 'Модерировать только новые ответы' ), + 0 => array( 0, 'No' ), + 1 => array( 1, 'Moderate all new topics and all replies' ), + 2 => array( 2, 'Moderate new topics but don\'t moderate replies' ), + 3 => array( 3, 'Moderate replies but don\'t moderate new topics' ), ); $dd_prune = array( - 0 => array( 1, 'День' ), - 1 => array( 5, '5 дней' ), - 2 => array( 7, '7 дней' ), - 3 => array( 10, '10 дней' ), - 4 => array( 15, '15 дней' ), - 5 => array( 20, '20 дней' ), - 6 => array( 25, '25 дней' ), - 7 => array( 30, '30 дней' ), - 8 => array( 60, '60 дней' ), - 9 => array( 90, '90 дней' ), - 10=> array( 100,'Показывать все' ), + 0 => array( 1, 'Today' ), + 1 => array( 5, 'Last 5 days' ), + 2 => array( 7, 'Last 7 days' ), + 3 => array( 10, 'Last 10 days' ), + 4 => array( 15, 'Last 15 days' ), + 5 => array( 20, 'Last 20 days' ), + 6 => array( 25, 'Last 25 days' ), + 7 => array( 30, 'Last 30 days' ), + 8 => array( 60, 'Last 60 days' ), + 9 => array( 90, 'Last 90 days' ), + 10=> array( 100,'Show All' ), ); $dd_order = array( - 0 => array( 'last_post', 'По дате последнего сообщения' ), - 1 => array( 'title' , 'Названиям тем' ), - 2 => array( 'starter_name', 'Автору тем' ), - 3 => array( 'posts' , 'Сообщениям в темах' ), - 4 => array( 'views' , 'Просмотру тем' ), - 5 => array( 'start_date', 'Дате создания тем' ), - 6 => array( 'last_poster_name' , 'Последним авторам' ) + 0 => array( 'last_post', 'Date of the last post' ), + 1 => array( 'title' , 'Topic Title' ), + 2 => array( 'starter_name', 'Topic Starters Name' ), + 3 => array( 'posts' , 'Topic Posts' ), + 4 => array( 'views' , 'Topic Views' ), + 5 => array( 'start_date', 'Date topic started' ), + 6 => array( 'last_poster_name' , 'Name of the last poster' ) ); $dd_by = array( - 0 => array( 'Z-A', 'По убыванию (Z - A, 0 - 10)' ), - 1 => array( 'A-Z', 'По возрастанию (A - Z, 10 - 0)' ) + 0 => array( 'Z-A', 'Descending (Z - A, 0 - 10)' ), + 1 => array( 'A-Z', 'Ascending (A - Z, 10 - 0)' ) ); $dd_filter = array( - 0 => array( 'all', 'Все темы' ), - 1 => array( 'open', 'Открытые темы' ), - 2 => array( 'hot', 'Горячие темы' ), - 3 => array( 'poll', 'Опросы' ), - 4 => array( 'locked', 'Закрытые темы' ), - 5 => array( 'moved', 'Открытые темы' ), - 6 => array( 'istarted', 'Темы, созданные пользователем' ), - 7 => array( 'ireplied', 'Темы, с ответами пользователя' ), + 0 => array( 'all', 'All Topics' ), + 1 => array( 'open', 'Open Topics' ), + 2 => array( 'hot', 'Hot Topics' ), + 3 => array( 'poll', 'Polls' ), + 4 => array( 'locked', 'Locked Topics' ), + 5 => array( 'moved', 'Moved Topics' ), + 6 => array( 'istarted', 'Topics Reader Started' ), + 7 => array( 'ireplied', 'Topics Reader Replied' ), ); @@ -872,7 +934,8 @@ class ad_forums // Set up title, desc //----------------------------------------- - $this->ipsclass->admin->page_detail = "Эта секция позволяет вам добавлять новые и изменять уже существующие форумы.
    Если вы хотите установить маски доступа к существующему форуму (такие как возможность просмотра форума, создание тем, ответы и загрузки) нажмите на 'Маски доступа'."; + $this->ipsclass->admin->page_detail = "This section will allow you to add or edit an existing {$addnew_type}. If you wish to adjust the forum permissions (who has the ability to + start, reply and read topics) click on 'Edit Permissions on the Forums and Categories overview."; //----------------------------------------- // EDIT @@ -886,7 +949,7 @@ class ad_forums if ( ! $forum_id ) { - $this->ipsclass->admin->error("Вы не выбрали форум для редактирования!"); + $this->ipsclass->admin->error("You didn't choose a forum to edit, duh!"); } //----------------------------------------- @@ -907,16 +970,23 @@ class ad_forums if ($forum['id'] == "") { - $this->ipsclass->admin->error("Невозможно найти форум с ID {$this->ipsclass->input['f']}"); + $this->ipsclass->admin->error("Could not retrieve the forum data based on ID {$this->ipsclass->input['f']}"); } //----------------------------------------- // Set up code buttons //----------------------------------------- - $title = "Редактируемый форум: {$forum['name']}"; - $button = "Редактировать форум"; - $code = "doedit"; + $addnew_type = $forum['parent_id'] == -1 ? 'category' : 'forum'; + $title = "Editing {$addnew_type}: {$forum['name']}"; + $button = "Edit {$addnew_type}"; + $code = "doedit"; + + if( $addnew_type == 'category' ) + { + $perms = unserialize(stripslashes($forum['permission_array'])); + $forum = array_merge( $forum, $perms ); + } //----------------------------------------- // Basic title @@ -924,11 +994,11 @@ class ad_forums $basic_title = " - +
    Основные настройки {$forum['name']}Basic Settings for {$forum['name']} ". - $this->ipsclass->adskin->js_make_button("Правила форума" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=frules&f={$this->ipsclass->input['f']}")." ". - $this->ipsclass->adskin->js_make_button("Шаблон форума", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=skinedit&f={$this->ipsclass->input['f']}")." ". - $this->ipsclass->adskin->js_make_button("Пересчет сообщений" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=recount&f={$this->ipsclass->input['f']}") + $this->ipsclass->adskin->js_make_button("Edit {$addnew_type} Rules" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=frules&f={$this->ipsclass->input['f']}")." ". + $this->ipsclass->adskin->js_make_button("Edit Skin Settings", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=skinedit&f={$this->ipsclass->input['f']}")." ". + $this->ipsclass->adskin->js_make_button("Recount {$addnew_type}" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=recount&f={$this->ipsclass->input['f']}") ."  
    "; @@ -944,23 +1014,44 @@ class ad_forums $this->ipsclass->input['f'] = 0; $forum = array( - 'sub_can_post' => $subcanpost, - 'name' => $f_name ? $f_name : 'Новый форум', - 'parent_id' => $parentid, - 'use_ibc' => 1, - 'quick_reply' => 1, - 'allow_poll' => 1, - 'prune' => 100, - 'topicfilter' => 'all', - 'sort_key' => 'last_post', - 'sort_order' => 'Z-A', - 'inc_postcount'=> 1, + 'sub_can_post' => $subcanpost, + 'name' => $f_name ? $f_name : 'New '.ucwords($addnew_type), + 'parent_id' => $parentid, + 'use_ibc' => 1, + 'quick_reply' => 1, + 'allow_poll' => 1, + 'prune' => 100, + 'topicfilter' => 'all', + 'sort_key' => 'last_post', + 'sort_order' => 'Z-A', + 'inc_postcount' => 1, + 'description' => '', + 'status' => '', + 'redirect_url' => '', + 'password' => '', + 'password_override' => '', + 'redirect_on' => 0, + 'redirect_hits' => 0, + 'permission_showtopic' => '', + 'permission_custom_error' => '', + 'use_html' => 0, + 'allow_pollbump' => 0, + 'forum_allow_rating' => 0, + 'preview_posts' => 0, + 'notify_modq_emails' => 0, + 'show_perms' => '', + 'read_perms' => '', + 'start_perms' => '', + 'reply_perms' => '', + 'upload_perms' => '', + 'download_perms' => '', + ); - $title = "Добавление форума"; - $button = "Добавить форум"; + $title = "Add a ".ucwords($addnew_type); + $button = "Add ".ucwords($addnew_type); $code = "donew"; - $basic_title = 'Основные настройки'; + $basic_title = 'Basic Settings'; } //----------------------------------------- @@ -969,6 +1060,17 @@ class ad_forums $forumlist = $this->forumfunc->ad_forums_forum_list(); + //----------------------------------------- + // Build group list + //----------------------------------------- + + $mem_group = array(); + + foreach( $this->ipsclass->cache['group_cache'] as $g_id => $group ) + { + $mem_group[] = array( $g_id , $group['g_title'] ); + } + //----------------------------------------- // Page title... //----------------------------------------- @@ -980,48 +1082,60 @@ class ad_forums //----------------------------------------- # Main settings - $form['name'] = $this->ipsclass->adskin->form_input( 'name' , $this->ipsclass->parse_clean_value( $_POST['name'] ) ? $this->ipsclass->parse_clean_value( $_POST['name'] ) : $forum['name'] ); - $form['description'] = $this->ipsclass->adskin->form_textarea("description" , $this->ipsclass->my_br2nl( $_POST['description'] ? $_POST['description'] : $forum['description'] ) ); - $form['parent_id'] = $this->ipsclass->adskin->form_dropdown("parent_id" , $forumlist, $_POST['parent_id'] ? $_POST['parent_id'] : $forum['parent_id'] ); - $form['status'] = $this->ipsclass->adskin->form_dropdown("status" , $dd_state , $_POST['status'] ? $_POST['status'] : $forum['status'] ); - $form['sub_can_post'] = $this->ipsclass->adskin->form_yes_no( 'sub_can_post', $_POST['sub_can_post'] ? $_POST['sub_can_post'] : $forum['sub_can_post'] ); + $form['name'] = $this->ipsclass->adskin->form_input( 'name' , ( isset($_POST['name']) AND $_POST['name'] ) ? $this->ipsclass->parse_clean_value( $_POST['name'] ) : $forum['name'] ); + $form['description'] = $this->ipsclass->adskin->form_textarea("description" , $this->ipsclass->my_br2nl( ( isset($_POST['description']) AND $_POST['description'] )? $_POST['description'] : $forum['description'] ) ); + $form['parent_id'] = $this->ipsclass->adskin->form_dropdown("parent_id" , $forumlist, ( isset($_POST['parent_id']) AND $_POST['parent_id'] ) ? $_POST['parent_id'] : $forum['parent_id'] ); + $form['status'] = $this->ipsclass->adskin->form_dropdown("status" , $dd_state , ( isset($_POST['status']) AND $_POST['status'] ) ? $_POST['status'] : $forum['status'] ); + $form['sub_can_post'] = $this->ipsclass->adskin->form_yes_no( 'sub_can_post', ( isset($_POST['sub_can_post']) AND $_POST['sub_can_post'] ) ? $_POST['sub_can_post'] : $forum['sub_can_post'] ); # Redirect options - $form['redirect_url'] = $this->ipsclass->adskin->form_input( 'redirect_url' , $_POST['redirect_url'] ? $_POST['redirect_url'] : $forum['redirect_url'] ); - $form['redirect_on'] = $this->ipsclass->adskin->form_yes_no('redirect_on' , $_POST['redirect_on'] ? $_POST['redirect_on'] : $forum['redirect_on'] ); - $form['redirect_hits'] = $this->ipsclass->adskin->form_input( 'redirect_hits', $_POST['redirect_hits'] ? $_POST['redirect_hits'] : $forum['redirect_hits'] ); + $form['redirect_url'] = $this->ipsclass->adskin->form_input( 'redirect_url' , ( isset($_POST['redirect_url']) AND $_POST['redirect_url'] ) ? $_POST['redirect_url'] : $forum['redirect_url'] ); + $form['redirect_on'] = $this->ipsclass->adskin->form_yes_no('redirect_on' , ( isset($_POST['redirect_on']) AND $_POST['redirect_on'] ) ? $_POST['redirect_on'] : $forum['redirect_on'] ); + $form['redirect_hits'] = $this->ipsclass->adskin->form_input( 'redirect_hits', ( isset($_POST['redirect_hits']) AND $_POST['redirect_hits'] ) ? $_POST['redirect_hits'] : $forum['redirect_hits'] ); # Permission settings - $form['permission_showtopic'] = $this->ipsclass->adskin->form_yes_no( 'permission_showtopic' , $_POST['permission_showtopic'] ? $_POST['permission_showtopic'] : $forum['permission_showtopic'] ); - $form['permission_custom_error'] = $this->ipsclass->adskin->form_textarea("permission_custom_error", $this->ipsclass->my_br2nl( $_POST['permission_custom_error'] ? $_POST['permission_custom_error'] : $forum['permission_custom_error'] ) ); + $form['permission_showtopic'] = $this->ipsclass->adskin->form_yes_no( 'permission_showtopic' , ( isset($_POST['permission_showtopic']) AND $_POST['permission_showtopic'] ) ? $_POST['permission_showtopic'] : $forum['permission_showtopic'] ); + $form['permission_custom_error'] = $this->ipsclass->adskin->form_textarea("permission_custom_error", $this->ipsclass->my_br2nl( ( isset($_POST['permission_custom_error']) AND $_POST['permission_custom_error'] ) ? $_POST['permission_custom_error'] : $forum['permission_custom_error'] ) ); # Forum settings - $form['use_html'] = $this->ipsclass->adskin->form_yes_no('use_html' , $_POST['use_html'] ? $_POST['use_html'] : $forum['use_html'] ); - $form['use_ibc'] = $this->ipsclass->adskin->form_yes_no('use_ibc' , $_POST['use_ibc'] ? $_POST['use_ibc'] : $forum['use_ibc'] ); - $form['quick_reply'] = $this->ipsclass->adskin->form_yes_no('quick_reply' , $_POST['quick_reply'] ? $_POST['quick_reply'] : $forum['quick_reply'] ); - $form['allow_poll'] = $this->ipsclass->adskin->form_yes_no('allow_poll' , $_POST['allow_poll'] ? $_POST['allow_poll'] : $forum['allow_poll'] ); - $form['allow_pollbump'] = $this->ipsclass->adskin->form_yes_no('allow_pollbump' , $_POST['allow_pollbump'] ? $_POST['allow_pollbump'] : $forum['allow_pollbump'] ); - $form['inc_postcount'] = $this->ipsclass->adskin->form_yes_no('inc_postcount' , $_POST['inc_postcount'] ? $_POST['inc_postcount'] : $forum['inc_postcount'] ); - $form['forum_allow_rating'] = $this->ipsclass->adskin->form_yes_no('forum_allow_rating', $_POST['forum_allow_rating'] ? $_POST['forum_allow_rating'] : $forum['forum_allow_rating'] ); + $form['use_html'] = $this->ipsclass->adskin->form_yes_no('use_html' , ( isset($_POST['use_html']) AND $_POST['use_html'] ) ? $_POST['use_html'] : $forum['use_html'] ); + $form['use_ibc'] = $this->ipsclass->adskin->form_yes_no('use_ibc' , ( isset($_POST['use_ibc']) AND $_POST['use_ibc'] ) ? $_POST['use_ibc'] : $forum['use_ibc'] ); + $form['quick_reply'] = $this->ipsclass->adskin->form_yes_no('quick_reply' , ( isset($_POST['quick_reply']) AND $_POST['quick_reply'] ) ? $_POST['quick_reply'] : $forum['quick_reply'] ); + $form['allow_poll'] = $this->ipsclass->adskin->form_yes_no('allow_poll' , ( isset($_POST['allow_poll']) AND $_POST['allow_poll'] ) ? $_POST['allow_poll'] : $forum['allow_poll'] ); + $form['allow_pollbump'] = $this->ipsclass->adskin->form_yes_no('allow_pollbump' , ( isset($_POST['allow_pollbump']) AND $_POST['allow_pollbump'] ) ? $_POST['allow_pollbump'] : $forum['allow_pollbump'] ); + $form['inc_postcount'] = $this->ipsclass->adskin->form_yes_no('inc_postcount' , ( isset($_POST['inc_postcount']) AND $_POST['inc_postcount'] ) ? $_POST['inc_postcount'] : $forum['inc_postcount'] ); + $form['forum_allow_rating'] = $this->ipsclass->adskin->form_yes_no('forum_allow_rating', ( isset($_POST['forum_allow_rating']) AND $_POST['forum_allow_rating'] ) ? $_POST['forum_allow_rating'] : $forum['forum_allow_rating'] ); # Mod settings - $form['preview_posts'] = $this->ipsclass->adskin->form_dropdown("preview_posts" , $dd_moderate, $_POST['preview_posts'] ? $_POST['preview_posts'] : $forum['preview_posts'] ); - $form['notify_modq_emails'] = $this->ipsclass->adskin->form_input( 'notify_modq_emails', $_POST['notify_modq_emails'] ? $_POST['notify_modq_emails'] : $forum['notify_modq_emails'] ); - $form['password'] = $this->ipsclass->adskin->form_input( 'password' , $_POST['password'] ? $_POST['password'] : $forum['password'] ); + $form['preview_posts'] = $this->ipsclass->adskin->form_dropdown( "preview_posts" , $dd_moderate, ( isset($_POST['preview_posts']) AND $_POST['preview_posts'] ) ? $_POST['preview_posts'] : $forum['preview_posts'] ); + $form['notify_modq_emails'] = $this->ipsclass->adskin->form_input( 'notify_modq_emails' , ( isset($_POST['notify_modq_emails']) AND $_POST['notify_modq_emails'] ) ? $_POST['notify_modq_emails'] : $forum['notify_modq_emails'] ); + $form['password'] = $this->ipsclass->adskin->form_input( 'password' , ( isset($_POST['password']) AND $_POST['password'] ) ? $_POST['password'] : $forum['password'] ); + $form['password_override'] = $this->ipsclass->adskin->form_multiselect( 'password_override[]' , $mem_group, ( isset($_POST['password_override']) AND $_POST['password_override'] ) ? $_POST['password_override'] : explode( ",", $forum['password_override'] ), 5 ); # Sorting settings - $form['prune'] = $this->ipsclass->adskin->form_dropdown("prune" , $dd_prune, $_POST['prune'] ? $_POST['prune'] : $forum['prune'] ); - $form['sort_key'] = $this->ipsclass->adskin->form_dropdown("sort_key" , $dd_order, $_POST['sort_key'] ? $_POST['sort_key'] : $forum['sort_key'] ); - $form['sort_order'] = $this->ipsclass->adskin->form_dropdown("sort_order", $dd_by , $_POST['sort_order'] ? $_POST['sort_order'] : $forum['sort_order'] ); - $form['topicfilter'] = $this->ipsclass->adskin->form_dropdown("topicfilter", $dd_filter , $_POST['topicfilter'] ? $_POST['topicfilter'] : $forum['topicfilter'] ); + $form['prune'] = $this->ipsclass->adskin->form_dropdown("prune" , $dd_prune, ( isset($_POST['prune']) AND $_POST['prune'] ) ? $_POST['prune'] : $forum['prune'] ); + $form['sort_key'] = $this->ipsclass->adskin->form_dropdown("sort_key" , $dd_order, ( isset($_POST['sort_key']) AND $_POST['sort_key'] ) ? $_POST['sort_key'] : $forum['sort_key'] ); + $form['sort_order'] = $this->ipsclass->adskin->form_dropdown("sort_order", $dd_by , ( isset($_POST['sort_order']) AND $_POST['sort_order'] ) ? $_POST['sort_order'] : $forum['sort_order'] ); + $form['topicfilter'] = $this->ipsclass->adskin->form_dropdown("topicfilter", $dd_filter, ( isset($_POST['topicfilter']) AND $_POST['topicfilter'] ) ? $_POST['topicfilter'] : $forum['topicfilter'] ); + + # Trim the form for categories... + $form['addnew_type'] = $addnew_type; + $form['addnew_type_upper'] = ucwords($addnew_type); //----------------------------------------- // Show permission matrix //----------------------------------------- - if ( $type != 'edit' ) + if ( $type != 'edit' OR $addnew_type == 'category' )//&& $addnew_type != 'category' ) { - $perm_matrix = $this->build_group_perms( $forum['show_perms'], $forum['read_perms'], $forum['start_perms'], $forum['reply_perms'], $forum['upload_perms'] ); + if( $addnew_type == 'category' ) + { + $perm_matrix = $this->build_group_cat_perms( $forum['show_perms'] ); + } + else + { + $perm_matrix = $this->build_group_perms( $forum['show_perms'], $forum['read_perms'], $forum['start_perms'], $forum['reply_perms'], $forum['upload_perms'], $forum['download_perms'] ); + } } //----------------------------------------- @@ -1034,8 +1148,8 @@ class ad_forums // Nav and print //----------------------------------------- - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление форумами' ); - $this->ipsclass->admin->nav[] = array( '', 'Добавить/Редактировать форум' ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage Forums' ); + $this->ipsclass->admin->nav[] = array( '', 'Add/Edit '.ucwords($addnew_type) ); $this->ipsclass->admin->output(); } @@ -1053,13 +1167,21 @@ class ad_forums $this->ipsclass->input['name'] = trim($this->ipsclass->input['name']); $this->ipsclass->input['f'] = intval($this->ipsclass->input['f']); + $forum_cat_lang = intval($this->ipsclass->input['parent_id']) == -1 ? 'Category' : 'Forum'; + + //----------------------------------------- + // Auth check... + //----------------------------------------- + + $this->ipsclass->admin->security_auth_check(); + //----------------------------------------- // Check //----------------------------------------- - if ($this->ipsclass->input['name'] == "") + if ( $this->ipsclass->input['name'] == "" ) { - $this->ipsclass->main_msg = "Вы должны ввести название форума"; + $this->ipsclass->main_msg = "You must enter a ".strtolower($forum_cat_lang)." title"; $this->forum_form( $type ); return; } @@ -1078,7 +1200,7 @@ class ad_forums if ( in_array( $this->ipsclass->input['parent_id'], $ids ) ) { - $this->ipsclass->main_msg = "Извините, сделать это невозможно. Вы хотите переместить родительский форума в него же самого. Пожалуйста, вернитесь назад и попытайтесь выбрать другой форум."; + $this->ipsclass->main_msg = "Sorry, that is not possible. You are attempting to move a parent forum or category into its own child structure. Please go back and choose a different parent forum."; $this->forum_form( $type ); return; } @@ -1089,11 +1211,12 @@ class ad_forums //----------------------------------------- $save = array ( 'name' => $this->ipsclass->input['name'], - 'description' => $this->ipsclass->my_nl2br( $this->ipsclass->txt_stripslashes($_POST['description']) ), + 'description' => $this->ipsclass->xss_html_clean( $this->ipsclass->my_nl2br( $this->ipsclass->txt_stripslashes( $_POST['description'] ) ) ), 'use_ibc' => intval($this->ipsclass->input['use_ibc']), 'use_html' => intval($this->ipsclass->input['use_html']), 'status' => $this->ipsclass->input['status'], 'password' => $this->ipsclass->input['password'], + 'password_override' => is_array($this->ipsclass->input['password_override']) ? implode( ",", $this->ipsclass->input['password_override'] ) : '', 'sort_key' => $this->ipsclass->input['sort_key'], 'sort_order' => $this->ipsclass->input['sort_order'], 'prune' => $this->ipsclass->input['prune'], @@ -1109,7 +1232,7 @@ class ad_forums 'redirect_on' => intval($this->ipsclass->input['redirect_on']), 'redirect_hits' => $this->ipsclass->input['redirect_hits'], 'redirect_url' => $this->ipsclass->input['redirect_url'], - 'redirect_loc' => $this->ipsclass->input['redirect_loc'], + 'redirect_loc' => isset($this->ipsclass->input['redirect_loc']) ? $this->ipsclass->input['redirect_loc'] : '', 'notify_modq_emails' => $this->ipsclass->input['notify_modq_emails'], 'permission_showtopic' => $this->ipsclass->input['permission_showtopic'], 'permission_custom_error' => $this->ipsclass->my_nl2br( $this->ipsclass->txt_stripslashes($_POST['permission_custom_error']) ) ); @@ -1132,14 +1255,45 @@ class ad_forums $row['top_forum']++; - $perms = $this->ipsclass->admin->compile_forum_perms(); + $perms = array(); + + if( $this->ipsclass->input['parent_id'] == -1 ) + { + if( $this->ipsclass->input['show_all'] ) + { + $perms['SHOW'] = '*'; + } + else + { + if( is_array( $this->ipsclass->input['show_permissions'] ) ) + { + $this->ipsclass->DB->simple_construct( array( 'select' => 'perm_id, perm_name', 'from' => 'forum_perms', 'order' => "perm_id" ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $data = $this->ipsclass->DB->fetch_row() ) + { + if ( in_array( $data['perm_id'], $this->ipsclass->input['show_permissions'] ) ) + { + $perms['SHOW'] .= $data['perm_id'].","; + } + } + + $perms['SHOW'] = preg_replace( "/,$/", "", $perms['SHOW'] ); + } + } + } + else + { + $perms = $this->ipsclass->admin->compile_forum_perms(); + } $perm_array = addslashes(serialize(array( - 'start_perms' => $perms['START'], - 'reply_perms' => $perms['REPLY'], - 'read_perms' => $perms['READ'], - 'upload_perms' => $perms['UPLOAD'], - 'show_perms' => $perms['SHOW'] + 'start_perms' => $perms['START'], + 'reply_perms' => $perms['REPLY'], + 'read_perms' => $perms['READ'], + 'upload_perms' => $perms['UPLOAD'], + 'download_perms' => $perms['DOWNLOAD'], + 'show_perms' => $perms['SHOW'] ) ) ); //----------------------------------------- @@ -1157,21 +1311,65 @@ class ad_forums $this->ipsclass->DB->do_insert( 'forums', $save ); - $this->ipsclass->main_msg = "Форум создан"; + $this->ipsclass->main_msg = $forum_cat_lang." Created"; - $this->ipsclass->admin->save_log("Forum '{$this->ipsclass->input['name']}' created"); + $this->ipsclass->admin->save_log($forum_cat_lang." '{$this->ipsclass->input['name']}' created"); } else { + if( $this->ipsclass->input['parent_id'] == -1 ) + { + if( $this->ipsclass->input['show_all'] ) + { + $perms['SHOW'] = '*'; + } + else + { + if( is_array( $this->ipsclass->input['show_permissions'] ) ) + { + $this->ipsclass->DB->simple_construct( array( 'select' => 'perm_id, perm_name', 'from' => 'forum_perms', 'order' => "perm_id" ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $data = $this->ipsclass->DB->fetch_row() ) + { + if ( in_array( $data['perm_id'], $this->ipsclass->input['show_permissions'] ) ) + { + $perms['SHOW'] .= $data['perm_id'].","; + } + } + + $perms['SHOW'] = preg_replace( "/,$/", "", $perms['SHOW'] ); + } + } + + $perm_array = addslashes(serialize(array( + 'start_perms' => '', + 'reply_perms' => '', + 'read_perms' => '', + 'upload_perms' => '', + 'download_perms' => '', + 'show_perms' => $perms['SHOW'] + ) ) ); + + $save['permission_array'] = $perm_array; + } + + $this->ipsclass->DB->do_update( 'forums', $save, "id={$this->ipsclass->input['f']}" ); - $this->ipsclass->main_msg = "Форум отредактирован"; + $this->ipsclass->main_msg = $forum_cat_lang." Edited"; - $this->ipsclass->admin->save_log("Форум '{$this->ipsclass->input['name']}' отредактирован"); + $this->ipsclass->admin->save_log($forum_cat_lang." '{$this->ipsclass->input['name']}' edited"); } $this->recache_forums(); - $this->ipsclass->input['f'] = ""; + + $this->ipsclass->input['f'] = ''; + if( $save['parent_id'] > 0 ) + { + $this->ipsclass->input['f'] = $save['parent_id']; + } + $this->ipsclass->forums->forums_init(); $this->show_forums(); @@ -1195,7 +1393,7 @@ class ad_forums if ( ! $this->ipsclass->input['f'] ) { - $this->ipsclass->admin->error("Вы не выбрали форум для редактирования!"); + $this->ipsclass->admin->error("You didn't choose a forum to edit, duh!"); } //----------------------------------------- @@ -1203,7 +1401,7 @@ class ad_forums //----------------------------------------- $forum = $this->ipsclass->forums->forum_by_id[$this->ipsclass->input['f']]; - + //----------------------------------------- // Next id... //----------------------------------------- @@ -1216,24 +1414,33 @@ class ad_forums if ( ! $forum['id'] ) { - $this->ipsclass->admin->error("Нельзя извлечь из базы данных ID форума {$this->ipsclass->input['f']}"); + $this->ipsclass->admin->error("Could not retrieve the forum data based on ID {$this->ipsclass->input['f']}"); } - $this->ipsclass->admin->page_title = "Редактировать права для ".$forum['name']; - - $this->ipsclass->admin->page_detail = "Управление правами доступа
    (Проверьте поля для доступа: если разрешаете – поставьте галочку, запрещаете – снимите)
    Если вы запретили чтение для этой группы, они не увидят этот форум"; + $this->ipsclass->admin->page_title = "Edit permissions for ".$forum['name']; //----------------------------------------- // HTML //----------------------------------------- - - $perm_matrix = $this->build_group_perms( $forum['show_perms'], $forum['read_perms'], $forum['start_perms'], $forum['reply_perms'], $forum['upload_perms'], - $this->ipsclass->forums->forum_by_id[ $forum['parent_id'] ]['name'].' > '.$forum['name'].' > '."Уровень прав доступа" ); + + if( $forum['parent_id'] != 'root' ) + { + $perm_matrix = $this->build_group_perms( $forum['show_perms'], $forum['read_perms'], $forum['start_perms'], $forum['reply_perms'], $forum['upload_perms'], $forum['download_perms'], + $this->ipsclass->forums->forum_by_id[ $forum['parent_id'] ]['name'].' > '.$forum['name'].' > '."Permission Access Levels" ); + + $this->ipsclass->admin->page_detail = "Forum access permissions
    (Check box for access, uncheck to not allow access)
    If you deny read access for a permission set, they will not see the forum"; + } + else + { + $perm_matrix = $this->build_group_cat_perms( $forum['show_perms'], $forum['name'].' > '."Permission Access Levels" ); + + $this->ipsclass->admin->page_detail = "Category access permissions
    (Select permission set for access, deselect to not allow access)
    If you do not select a permission set, they will not be able to see any forums in that category."; + } $this->ipsclass->html .= $this->html->forum_permission_form( $forum, $relative, $perm_matrix ); - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление форумами' ); - $this->ipsclass->admin->nav[] = array( '', 'Доступ на форум для '.$forum['name'] ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage Forums' ); + $this->ipsclass->admin->nav[] = array( '', 'Permissions for forum '.$forum['name'] ); $this->ipsclass->admin->output(); @@ -1251,7 +1458,7 @@ class ad_forums $index = 0; $count = 0; - foreach( $this->ipsclass->forums->forum_cache['root'] as $id => $forum_data ) + foreach( $this->ipsclass->forums->forum_cache['root'] as $forum_data ) { $ids[ $count ] = $forum_data['id']; @@ -1262,9 +1469,9 @@ class ad_forums $count++; - if ( is_array( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ] ) ) + if ( isset($this->ipsclass->forums->forum_cache[ $forum_data['id'] ]) AND is_array( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ] ) ) { - foreach( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ] as $id => $forum_data ) + foreach( $this->ipsclass->forums->forum_cache[ $forum_data['id'] ] as $forum_data ) { $children = $this->ipsclass->forums->forums_get_children( $forum_data['id'] ); @@ -1313,45 +1520,86 @@ class ad_forums function perm_do_edit() { - $perms = $this->ipsclass->admin->compile_forum_perms(); + $perms = array(); + + //----------------------------------------- + // Auth check... + //----------------------------------------- + + $this->ipsclass->admin->security_auth_check(); + + //----------------------------------------- + // Continue + //----------------------------------------- + + if( $this->ipsclass->forums->forum_by_id[ $this->ipsclass->input['f'] ]['parent_id'] == -1 ) + { + if( $this->ipsclass->input['show_all'] ) + { + $perms['SHOW'] = '*'; + } + else + { + if( is_array( $this->ipsclass->input['show_permissions'] ) ) + { + $this->ipsclass->DB->simple_construct( array( 'select' => 'perm_id, perm_name', 'from' => 'forum_perms', 'order' => "perm_id" ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $data = $this->ipsclass->DB->fetch_row() ) + { + if ( in_array( $data['perm_id'], $this->ipsclass->input['show_permissions'] ) ) + { + $perms['SHOW'] .= $data['perm_id'].","; + } + } + + $perms['SHOW'] = preg_replace( "/,$/", "", $perms['SHOW'] ); + } + } + } + else + { + $perms = $this->ipsclass->admin->compile_forum_perms(); + } $this->ipsclass->DB->do_update( 'forums', array( 'permission_array' => addslashes(serialize(array( - 'start_perms' => $perms['START'], - 'reply_perms' => $perms['REPLY'], - 'read_perms' => $perms['READ'], - 'upload_perms' => $perms['UPLOAD'], - 'show_perms' => $perms['SHOW'] + 'start_perms' => $perms['START'], + 'reply_perms' => $perms['REPLY'], + 'read_perms' => $perms['READ'], + 'upload_perms' => $perms['UPLOAD'], + 'download_perms' => $perms['DOWNLOAD'], + 'show_perms' => $perms['SHOW'] ) ) ) ), 'id='.$this->ipsclass->input['f']); - $this->ipsclass->admin->save_log("Изменены маски доступа к '{$this->ipsclass->input['name']}'"); + $this->ipsclass->admin->save_log("Forum access permission edited in '{$this->ipsclass->input['name']}'"); $this->recache_forums(); - if ( $this->ipsclass->input['doprevious'] and $this->ipsclass->input['previd'] > 0 ) + if ( isset($this->ipsclass->input['doprevious']) AND $this->ipsclass->input['doprevious'] and $this->ipsclass->input['previd'] > 0 ) { - $this->ipsclass->main_msg = 'Маски доступа изменены'; + $this->ipsclass->main_msg = 'Forum permissions edited'; $this->ipsclass->input['f'] = $this->ipsclass->input['previd']; $this->ipsclass->boink_it( $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=pedit&f={$this->ipsclass->input['f']}" ); } - else if ( $this->ipsclass->input['donext'] and $this->ipsclass->input['nextid'] > 0 ) + else if ( isset($this->ipsclass->input['donext']) AND $this->ipsclass->input['donext'] and $this->ipsclass->input['nextid'] > 0 ) { - $this->ipsclass->main_msg = 'Маски доступа изменены'; + $this->ipsclass->main_msg = 'Forum permissions edited'; $this->ipsclass->input['f'] = $this->ipsclass->input['nextid']; $this->ipsclass->boink_it( $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=pedit&f={$this->ipsclass->input['f']}" ); } - else if ( $this->ipsclass->input['reload'] ) + else if ( isset($this->ipsclass->input['reload']) AND $this->ipsclass->input['reload'] ) { $this->ipsclass->boink_it( $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=pedit&f={$this->ipsclass->input['f']}" ); } else { - $this->ipsclass->admin->done_screen("Маски доступа изменены", "Управление форумами", $this->ipsclass->form_code, 'redirect' ); + $this->ipsclass->admin->done_screen("Forum Access Permissions Edited", "Forum Control", $this->ipsclass->form_code, 'redirect' ); } } @@ -1374,10 +1622,10 @@ class ad_forums if ( ! $this->ipsclass->input['f'] ) { - $this->ipsclass->admin->error("Продолжить нельзя, F не годен"); + $this->ipsclass->admin->error("Cannot go any further, not F passed"); } - $this->ipsclass->admin->page_detail = "Эта секция позволяет вам изменить порядок отображения (сортировку) форумов и категорий, достаточно ввести лишь порядковый номер для каждого форума."; + $this->ipsclass->admin->page_detail = "Simply select the position you require for each forum and submit the form to complete the re-order."; $this->forumfunc->type = 'reorder'; @@ -1391,7 +1639,7 @@ class ad_forums if ( is_array( $this->ipsclass->forums->forum_cache[ $this->ipsclass->input['f'] ] ) ) { - foreach( $this->ipsclass->forums->forum_cache[ $this->ipsclass->input['f'] ] as $id => $forum_data ) + foreach( $this->ipsclass->forums->forum_cache[ $this->ipsclass->input['f'] ] as $forum_data ) { $temp_html .= $this->forumfunc->render_forum($forum_data, $depth_guide); @@ -1402,7 +1650,7 @@ class ad_forums $this->ipsclass->html .= $this->forumfunc->forum_show_cat($temp_html, $cat_data); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form_standalone("Пересортировать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form_standalone("Re-order"); $this->ipsclass->admin->output(); } @@ -1426,6 +1674,8 @@ class ad_forums } } + $ids = $this->ipsclass->clean_int_array( $ids ); + //----------------------------------------- // Save changes //----------------------------------------- @@ -1453,8 +1703,8 @@ class ad_forums // INIT //----------------------------------------- - $this->ipsclass->admin->page_title = "Управление форумами"; - $this->ipsclass->admin->page_detail = "В этой секции вы можете создавать новые, изменять и удалять существующие форумы. А также устанавливать правила и шаблоны для каждого форума."; + $this->ipsclass->admin->page_title = "Category and Forums Overview"; + $this->ipsclass->admin->page_detail = "You can manage your forums from here. Click on the icons for more information."; //----------------------------------------- // Nav @@ -1468,7 +1718,7 @@ class ad_forums { array_shift($nav); - $this->ipsclass->html .= "
    "; + $this->ipsclass->html .= "
    "; } } @@ -1532,7 +1782,7 @@ class ad_forums $this->ipsclass->html .= $this->html->render_forum_footer( $choose, $mem_group ); - $this->ipsclass->admin->nav[] = array( '', 'Настройка форумов' ); + $this->ipsclass->admin->nav[] = array( '', 'Manage Forums' ); $this->ipsclass->admin->output(); } @@ -1541,7 +1791,7 @@ class ad_forums // Build group permissions /*-------------------------------------------------------------------------*/ - function build_group_perms( $show='*', $read='*', $write='*', $reply='*', $upload='*', $title="" ) + function build_group_perms( $show='*', $read='*', $write='*', $reply='*', $upload='*', $download='*', $title="Permission Access Levels" ) { //----------------------------------------- // Load skin if required @@ -1587,6 +1837,10 @@ class ad_forums $checked = ($upload == '*') ? $check : ""; $global['html_upload'] = "\n"; + # DOWNLOAD + $checked = ($download == '*') ? $check : ""; + $global['html_download'] = "\n"; + //----------------------------------------- // Per mask settings //----------------------------------------- @@ -1616,6 +1870,17 @@ class ad_forums $checked = ($upload == '*' OR preg_match( "/(^|,)".$data['perm_id']."(,|$)/", $upload ) ) ? $check : ""; $perm['html_upload'] = ""; + # DOWNLOAD + $checked = ($download == '*' OR preg_match( "/(^|,)".$data['perm_id']."(,|$)/", $download ) ) ? $check : ""; + $perm['html_download'] = ""; + + // Stupid work around - browsers don't like seeing the same id more than once + $data['perm_id1'] = $data['perm_id']."_1"; + $data['perm_id2'] = $data['perm_id']."_2"; + $data['perm_id3'] = $data['perm_id']."_3"; + $data['perm_id4'] = $data['perm_id']."_4"; + $data['perm_id5'] = $data['perm_id']."_5"; + $content .= $this->html->render_forum_permissions_row( $perm, $data ); } @@ -1625,6 +1890,56 @@ class ad_forums return $this->html->render_forum_permissions( $global, $content, $title ); } + + + function build_group_cat_perms( $show='*', $title='Permission Access Levels' ) + { + //----------------------------------------- + // Load skin if required + //----------------------------------------- + + if ( ! $this->html ) + { + $this->html = $this->ipsclass->acp_load_template('cp_skin_forums'); + } + + //----------------------------------------- + // INIT + //----------------------------------------- + + if( $show == '*' ) + { + $select_all = "checked='checked'"; + } + else + { + $select_all = ""; + } + + $perms = array(); + + //----------------------------------------- + // Per mask settings + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'order' => "perm_name ASC" ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $data = $this->ipsclass->DB->fetch_row() ) + { + $checked = ($show == '*' OR preg_match( "/(^|,)".$data['perm_id']."(,|$)/", $show ) ) ? "selected='selected'" : ""; + + $data['perm_selected'] = $checked; + + $perms[] = $data; + } + + //----------------------------------------- + // Wrapper... + //----------------------------------------- + + return $this->html->render_cat_permissions( $perms, $select_all, $title ); + } } diff --git a/upload/sources/action_admin/groups.php b/upload/sources/action_admin/groups.php index 2a0154b7..973b72fe 100644 --- a/upload/sources/action_admin/groups.php +++ b/upload/sources/action_admin/groups.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-01-11 22:47:48 +0000 (Wed, 11 Jan 2006) $ -| > $Revision: 122 $ -| > $Author: bfarber $ +| > $Date: 2006-10-05 17:04:08 +0100 (Thu, 05 Oct 2006) $ +| > $Revision: 609 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Admin Forum functions @@ -37,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -73,17 +63,6 @@ class ad_groups $this->forumfunc = new admin_forum_functions(); $this->forumfunc->ipsclass =& $this->ipsclass; - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // LOAD HTML //----------------------------------------- @@ -172,14 +151,88 @@ class ad_groups $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->edit_name_perm(); break; - //----------------------------------------- - + + case 'master_xml_export': + $this->master_xml_export(); + break; + default: $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->main_screen(); break; } + } + + /*-------------------------------------------------------------------------*/ + // Export Master XML + /*-------------------------------------------------------------------------*/ + + function master_xml_export() + { + //----------------------------------------- + // INIT + //----------------------------------------- + $entry = array(); + + //----------------------------------------- + // Get XML class + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + + $xml = new class_xml(); + + $xml->doc_type = $this->ipsclass->vars['gb_char_set']; + + $xml->xml_set_root( 'export', array( 'exported' => time() ) ); + + //----------------------------------------- + // Set group + //----------------------------------------- + + $xml->xml_add_group( 'group' ); + + //----------------------------------------- + // Get templates... + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'groups', + 'order' => 'g_id ASC', + 'limit' => array( 0, 6 ) ) ); + + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $content = array(); + + $r['g_icon'] = ''; + + //----------------------------------------- + // Sort the fields... + //----------------------------------------- + + foreach( $r as $k => $v ) + { + $content[] = $xml->xml_build_simple_tag( $k, $v ); + } + + $entry[] = $xml->xml_build_entry( 'row', $content ); + } + + $xml->xml_add_entry_to_group( 'group', $entry ); + + $xml->xml_format_document(); + + $doc = $xml->xml_document; + + //----------------------------------------- + // Print to browser + //----------------------------------------- + + $this->ipsclass->admin->show_download( $doc, 'groups.xml', '', 0 ); } /*-------------------------------------------------------------------------*/ @@ -194,10 +247,10 @@ class ad_groups if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); + $this->ipsclass->admin->error("Could not resolve the permission set ID, please try again"); } - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'forum_perms', 'where' => "perm_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $old_id = intval($this->ipsclass->input['id']); @@ -269,7 +322,7 @@ class ad_groups if ($this->ipsclass->input['new_perm_name'] == "") { - $this->ipsclass->admin->error("Необходимо ввести имя"); + $this->ipsclass->admin->error("You must enter a name"); } $copy_id = $this->ipsclass->input['new_perm_copy']; @@ -302,7 +355,7 @@ class ad_groups $perms = unserialize(stripslashes( $f['permission_array'] ) ); - foreach( array( 'read_perms', 'reply_perms', 'start_perms', 'upload_perms', 'show_perms' ) as $perm_bit ) + foreach( array( 'read_perms', 'reply_perms', 'start_perms', 'upload_perms', 'show_perms', 'download_perms' ) as $perm_bit ) { if ( $perms[ $perm_bit ] != '*') { @@ -343,6 +396,7 @@ class ad_groups $ad_forums->ipsclass =& $this->ipsclass; $ad_forums->recache_forums(); + $this->ipsclass->main_msg = "The permission set '{$this->ipsclass->input['new_perm_name']}' has been added"; $this->permsplash(); } @@ -358,15 +412,15 @@ class ad_groups if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); + $this->ipsclass->admin->error("Could not resolve the permission set ID, please try again"); } - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $perms = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); + $this->ipsclass->admin->error("Could not resolve the permission set ID, please try again"); } //----------------------------------------- @@ -376,27 +430,32 @@ class ad_groups switch( $this->ipsclass->input['t'] ) { case 'start': - $human_type = 'Создать тему'; + $human_type = 'Start Topics in this forum'; $code_word = 'start_perms'; break; case 'reply': - $human_type = 'Ответить'; + $human_type = 'Reply to Topics in this forum'; $code_word = 'reply_perms'; break; case 'show': - $human_type = 'Показать форумы'; + $human_type = 'See this forum'; $code_word = 'show_perms'; break; case 'upload': - $human_type = 'Загрузить файл'; + $human_type = 'Upload Attachments to this forum'; $code_word = 'upload_perms'; break; + case 'download': + $human_type = 'Download Attachments in this forum'; + $code_word = 'download_perms'; + break; + default: - $human_type = 'Просмотреть форум'; + $human_type = 'Read Topics in this forum'; $code_word = 'read_perms'; break; } @@ -409,7 +468,7 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Просматривают: " . $perms['perm_name'] ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Preview using: " . $perms['perm_name'] ); $the_html = ""; @@ -417,26 +476,39 @@ class ad_groups $theforums = $this->forumfunc->ad_forums_forum_list(1); - foreach( $theforums as $i => $v ) + foreach( $theforums as $v ) { $id = $v[0]; $name = $v[1]; + $this->ipsclass->forums->forum_by_id[$id][ $code_word ] = isset($this->ipsclass->forums->forum_by_id[$id][ $code_word ]) ? $this->ipsclass->forums->forum_by_id[$id][ $code_word ] : ''; + if ($this->ipsclass->forums->forum_by_id[$id][ $code_word ] == '*') { - $the_html[] = $name; + $the_html[] = "".$name.""; } else if (preg_match( "/(^|,)".$perm_id."(,|$)/", $this->ipsclass->forums->forum_by_id[$id][ $code_word ]) ) { - $the_html[] = $name; + $the_html[] = "".$name.""; } else { - //----------------------------------------- - // CAN'T ACCESS - //----------------------------------------- - - $the_html[] = "".$name.""; + if( $code_word != 'show_perms' AND $this->ipsclass->forums->forum_by_id[$id]['parent_id'] == 'root' ) + { + //----------------------------------------- + // CATEGORY + //----------------------------------------- + + $the_html[] = "".$name.""; + } + else + { + //----------------------------------------- + // CAN'T ACCESS + //----------------------------------------- + + $the_html[] = "".$name.""; + } } } @@ -454,33 +526,42 @@ class ad_groups 4 => array( 'section', $this->ipsclass->section_code ), ) ); - $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); + $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); + $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "История и информация" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Legend & Info" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "$human_type для этого форума возможно", - "" + "Can $human_type", + "" ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "$human_type для этого форума невозможно", - "" + "CANNOT $human_type", + "" ) ); + + if( $code_word != "show_perms" ) + { + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( + "Category (doesn't use this permission)", + "" + ) ); + } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Тест с...", + "Test with...", $this->ipsclass->adskin->form_dropdown( 't', - array( 0 => array( 'start', 'Создать темы' ), - 1 => array( 'reply', 'Ответить в темы' ), - 2 => array( 'read' , 'Прочитать форум' ), - 3 => array( 'show' , 'Показать форум' ), - 4 => array( 'upload', 'Загрузить форум' ), + array( 0 => array( 'start', 'Start Topics' ), + 1 => array( 'reply', 'Reply To Topics' ), + 2 => array( 'read' , 'Read Topics' ), + 3 => array( 'show' , 'See Forum' ), + 4 => array( 'upload', 'Upload to Forum' ), + 5 => array( 'download', 'Download From Forum' ), ), $this->ipsclass->input['t'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form( "Обновить" ); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form( "Update" ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -500,7 +581,7 @@ class ad_groups if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя изменить ID пользователя, попытайтесь снова"); + $this->ipsclass->admin->error("Could not resolve the member ID, please try again"); } //----------------------------------------- @@ -512,7 +593,7 @@ class ad_groups if ( ! $mem = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Нельзя изменить ID пользователя, попытайтесь снова"); + $this->ipsclass->admin->error("Could not resolve the member ID, please try again"); } if ( $this->ipsclass->input['pid'] == 'all' ) @@ -523,7 +604,7 @@ class ad_groups { $this->ipsclass->input['pid'] = intval($this->ipsclass->input['pid']); - $pid_array = explode( ",", $mem['org_perm_id'] ); + $pid_array = explode( ",", $this->ipsclass->clean_perm_string($mem['org_perm_id']) ); if ( count($pid_array) < 2 ) { @@ -557,7 +638,7 @@ class ad_groups - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Удалить созданные параметры доступа у {$mem['name']}." ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Removed the custom set of permissions from {$mem['name']}." ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -576,23 +657,23 @@ class ad_groups if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); + $this->ipsclass->admin->error("Could not resolve the permission set ID, please try again"); } - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $perms = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); + $this->ipsclass->admin->error("Could not resolve the permission set ID, please try again"); } //----------------------------------------- // Get all members using that ID then! //----------------------------------------- - $this->ipsclass->adskin->td_header[] = array( "Подробнее о пользователе" , "50%" ); - $this->ipsclass->adskin->td_header[] = array( "Действие" , "50%" ); + $this->ipsclass->adskin->td_header[] = array( "User Details" , "50%" ); + $this->ipsclass->adskin->td_header[] = array( "Action" , "50%" ); //----------------------------------------- @@ -608,7 +689,7 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Используется пользователями: " . $perms['perm_name'] ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Members using: " . $perms['perm_name'] ); $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, email, posts, org_perm_id', 'from' => 'members', @@ -626,7 +707,7 @@ class ad_groups { if ( count($exp_pid) > 1 ) { - $extra = "
  • Также используется: "; + $extra = "
  • Also using: "; $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id IN (".$this->ipsclass->clean_perm_string($r['org_perm_id']).") AND perm_id <> {$this->ipsclass->input['id']}" ) ); $this->ipsclass->DB->simple_exec(); @@ -646,12 +727,12 @@ class ad_groups } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
    {$r['name']}
    -
  • Сообщений: {$r['posts']} +
  • Posts: {$r['posts']}
  • Email: {$r['email']} $extra" , - "• ipsclass->base_url}&{$this->ipsclass->form_code}&code=remove_mask&id={$r['id']}&pid=all' title='Удалить все маски пользователя'>Удалить все маски -

    • Редактировать пользователя", + "• Remove This Permission Set +
    • Remove All Custom Permission Sets +

    • Edit Member", ) ); } } @@ -683,8 +764,9 @@ class ad_groups // Page title & desc //----------------------------------------- - $this->ipsclass->admin->page_title = "Управление группами"; - $this->ipsclass->admin->page_detail = "Здесь вы сможете отредактировать параметры доступа для каждой группы."; + $this->ipsclass->admin->page_title = "Forum Permission Management [ HOME ]"; + $this->ipsclass->admin->page_detail = "You can manage your forum permissions from this section."; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=permsplash', 'Manage Permissions' ); //----------------------------------------- // Get the names for the perm masks w/id @@ -712,6 +794,7 @@ class ad_groups { foreach( explode( ",", $r['org_perm_id'] ) as $pid ) { + $mems[ $pid ] = !isset($mems[ $pid ]) ? 0 : $mems[ $pid ]; $mems[ $pid ] += $r['count']; } } @@ -755,22 +838,21 @@ class ad_groups $is_active = 0; $dlist .= "\n"; - if ( is_array( $groups[ $id ] ) ) + if ( isset($groups[ $id ]) AND is_array( $groups[ $id ] ) ) { - foreach( $groups[ $id ] as $bleh => $g_title ) + foreach( $groups[ $id ] as $g_title ) { $groups_used .= '· ' . $g_title . "
    "; } $is_active = 1; - } else { - $groups_used = "
    Нет
    "; + $groups_used = "
    None
    "; } - if ( $mems[ $id ] > 0 ) + if ( isset($mems[ $id ]) AND $mems[ $id ] > 0 ) { $is_active = 1; } @@ -779,7 +861,7 @@ class ad_groups $r['name'] = $name; $r['isactive'] = $is_active; $r['groups'] = $groups_used; - $r['mems'] = intval( $mems[ $id ] ); + $r['mems'] = isset($mems[ $id ]) ? intval( $mems[ $id ] ) : 0; $content .= $this->html->groups_perm_splash_row( $r ); } @@ -797,21 +879,23 @@ class ad_groups { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); + $this->ipsclass->admin->error("Could not resolve the group ID, please try again"); } //----------------------------------------- - $this->ipsclass->admin->page_title = "Управление пользовательскими группами"; + $this->ipsclass->admin->page_title = "Forum Permission Management [ EDIT ]"; + $this->ipsclass->admin->page_detail = "You can edit a set of permissions from this section."; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=permsplash', 'Manage Permissions' ); + $this->ipsclass->admin->nav[] = array( '', 'Add/Edit Permissions' ) ; - $this->ipsclass->admin->page_detail = "При помощи этих настроек, Вы можете редактировать пользовательские группы и их права на форуме."; - - $this->ipsclass->admin->page_detail .= "
    Для запрета доступа, просто снимите галочку, для разрешения – установите. -
    Показатель Глобальный говорит о том, что текущая группа имеет доступ к этому форуму, и он не может быть изменен в данный момент. "; + $this->ipsclass->admin->page_detail .= "
    Simply check the boxes to allow permission for that action, or uncheck the box to deny permission for that action. +
    Global indicates that all present and future permission sets have access to that action and as such, cannot be changed. +
    Categories only use \"Show\" permissions, and as such the rest of the permission settings for categories are marked not used."; //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $group = $this->ipsclass->DB->fetch_row(); @@ -827,18 +911,18 @@ class ad_groups 2 => array( 'act' , 'group' ), 3 => array( 'id' , $gid ), 4 => array( 'section', $this->ipsclass->section_code ), - ) ); + ), "nameForm" ); $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Переименовать группу: ".$group['perm_name'] ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Rename Permission Set: ".$group['perm_name'] ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название группы" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Permission Set Name" , $this->ipsclass->adskin->form_input("perm_name", $gname ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Редактировать имя"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Edit Name"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -851,20 +935,21 @@ class ad_groups 2 => array( 'act' , 'group' ), 3 => array( 'id' , $gid ), 4 => array( 'section', $this->ipsclass->section_code ), - ) ); + ) ); - $this->ipsclass->adskin->td_header[] = array( "Форум" , "25%" ); - $this->ipsclass->adskin->td_header[] = array( "Просмотр" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Чтение" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Ответы" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Создание" , "10%" ); - $this->ipsclass->adskin->td_header[] = array( "Загрузка" , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Forum Name" , "25%" ); + $this->ipsclass->adskin->td_header[] = array( "Show
    " , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Read
    " , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Reply
    " , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Start
    " , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Upload
    " , "10%" ); + $this->ipsclass->adskin->td_header[] = array( "Download
    " , "10%" ); $forum_data = $this->forumfunc->ad_forums_forum_data(); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Параметры доступа для ".$group['perm_name'] ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Forum Access Permissions for ".$group['perm_name'] ); - foreach( $forum_data as $id => $r ) + foreach( $forum_data as $r ) { $show = ""; $read = ""; @@ -872,7 +957,7 @@ class ad_groups $reply = ""; $upload = ""; - $global = '
    Глобальный
    '; + $global = '
    Global
    '; if ($r['show_perms'] == '*') { @@ -880,16 +965,16 @@ class ad_groups } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['show_perms'] ) ) { - $show = "
    "; + $show = "
    "; } else { - $show = "
    "; + $show = "
    "; } //----------------------------------------- - $global = '
    Глобальный
    '; + $global = '
    Global
    '; if ($r['read_perms'] == '*') { @@ -897,16 +982,16 @@ class ad_groups } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['read_perms'] ) ) { - $read = "
    "; + $read = "
    "; } else { - $read = "
    "; + $read = "
    "; } //----------------------------------------- - $global = '
    Глобальный
    '; + $global = '
    Global
    '; if ($r['start_perms'] == '*') { @@ -914,16 +999,16 @@ class ad_groups } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['start_perms'] ) ) { - $start = "
    "; + $start = "
    "; } else { - $start = "
    "; + $start = "
    "; } //----------------------------------------- - $global = '
    Глобальный
    '; + $global = '
    Global
    '; if ($r['reply_perms'] == '*') { @@ -931,16 +1016,16 @@ class ad_groups } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['reply_perms'] ) ) { - $reply = "
    "; + $reply = "
    "; } else { - $reply = "
    "; + $reply = "
    "; } //----------------------------------------- - $global = '
    Глобальный
    '; + $global = '
    Global
    '; if ($r['upload_perms'] == '*') { @@ -948,39 +1033,63 @@ class ad_groups } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['upload_perms'] ) ) { - $upload = "
    "; + $upload = "
    "; } else { - $upload = "
    "; + $upload = "
    "; } //----------------------------------------- + $global = '
    Global
    '; + + if ($r['download_perms'] == '*') + { + $download = $global; + } + else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['download_perms'] ) ) + { + $download = "
    "; + } + else + { + $download = "
    "; + } + + //----------------------------------------- + if ( $r['root_forum'] ) { - $css = 'pformstrip'; + $css = 'tablerow4'; + $download = $upload = $reply = $start = $read = "
    Not Used
    "; } else { $css = ''; } - + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "".$r['depthed_name']."", - $show, - $read, - $reply, - $start, - $upload + "
    +   +
    + ".$r['depthed_name']."", + "
    ".$show."
    ", + "
    ".$read."
    ", + "
    ".$reply."
    ", + "
    ".$start."
    ", + "
    ".$upload."
    ", + "
    ".$download."
    ", ) ,$css ); } - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Обновить настройки доступа"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Update Forum Permissions"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); + $this->ipsclass->html .= $this->html->permissions_js(); + $this->ipsclass->admin->output(); } @@ -996,31 +1105,33 @@ class ad_groups if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); + $this->ipsclass->admin->error("Could not resolve that group ID"); } if ( $this->ipsclass->input['perm_name'] == "" ) { - $this->ipsclass->admin->error("Необходимо ввести имя"); + $this->ipsclass->admin->error("You must enter a name"); } $gid = $this->ipsclass->input['id']; //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $gr = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Не действительный ID группы"); + $this->ipsclass->admin->error("Not a valid group ID"); } - $this->ipsclass->DB->do_update( 'forum_perms', array( 'perm_name' => $this->ipsclass->input['perm_name'] ), 'perm_id='.$this->ipsclass->input['id'] ); + $this->ipsclass->DB->do_update( 'forum_perms', array( 'perm_name' => $this->ipsclass->input['perm_name'] ), 'perm_id='.intval($this->ipsclass->input['id']) ); - $this->ipsclass->admin->save_log("Права доступа на форум отредактированы для маски: '{$gr['perm_name']}'"); + $this->ipsclass->admin->save_log("Forum Access Permissions Name Edited for Set: '{$gr['perm_name']}'"); - $this->ipsclass->admin->done_screen("Права на форум для группы – обновлены", "Настройка уровня доступа", "{$this->ipsclass->form_code}&code=permsplash" ); + $this->ipsclass->main_msg = "Permission Set Name Updated"; + + $this->forum_perms( ); } /*-------------------------------------------------------------------------*/ @@ -1035,19 +1146,19 @@ class ad_groups if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя изменить ID группы"); + $this->ipsclass->admin->error("Could not resolve that group ID"); } - $gid = $this->ipsclass->input['id']; + $gid = intval($this->ipsclass->input['id']); //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$gid ) ); $this->ipsclass->DB->simple_exec(); if ( ! $gr = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Недействительный ID группы"); + $this->ipsclass->admin->error("Not a valid group ID"); } //----------------------------------------- @@ -1065,6 +1176,7 @@ class ad_groups $reply = ""; $start = ""; $upload = ""; + $download = ""; $show = ""; //----------------------------------------- @@ -1233,6 +1345,43 @@ class ad_groups $upload = preg_replace( "/^,/", "", $upload ); } + //----------------------------------------- + // Download attach.. + //----------------------------------------- + + if ($perms['download_perms'] == '*') + { + $download = '*'; + } + else + { + $download_ids = explode( ",", $perms['download_perms'] ); + + if ( is_array($download_ids) ) + { + foreach ($download_ids as $i) + { + if ($gid == $i) + { + continue; + } + else + { + $download .= $i.","; + } + } + + } + + if ($this->ipsclass->input[ 'download_'.$row['id'] ] == 1) + { + $download .= $gid.","; + } + + $download = preg_replace( "/,$/", "", $download ); + $download = preg_replace( "/^,/", "", $download ); + } + //----------------------------------------- // Show topics.. //----------------------------------------- @@ -1279,7 +1428,8 @@ class ad_groups 'reply_perms' => $reply, 'read_perms' => $read, 'upload_perms' => $upload, - 'show_perms' => $show + 'show_perms' => $show, + 'download_perms' => $download, ) ) ) ), 'id='.$row['id']); } @@ -1294,9 +1444,10 @@ class ad_groups $adforums->recache_forums(); - $this->ipsclass->admin->save_log("Права доступа на форум отредактированы для маски: '{$gr['perm_name']}'"); + $this->ipsclass->admin->save_log("Forum Access Permissions Edited for Set: '{$gr['perm_name']}'"); - $this->ipsclass->admin->done_screen("Права на форум для группы – обновлены", "Настройка уровня доступа", "{$this->ipsclass->form_code}&code=permsplash", 'redirect' ); + $this->ipsclass->main_msg = "Forum Access Permissions Updated"; + $this->permsplash( ); } @@ -1308,22 +1459,22 @@ class ad_groups { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); + $this->ipsclass->admin->error("Could not resolve the group ID, please try again"); } if ($this->ipsclass->input['id'] < 5) { - $this->ipsclass->admin->error("Вы не можете перемещать группы, которые используются в данный момент, но переименовать и отредактировать функции можно"); + $this->ipsclass->admin->error("You can not move the preset groups. You can rename them and edit the functionality"); } - $this->ipsclass->admin->page_title = "Удаление пользовательской группы"; + $this->ipsclass->admin->page_title = "Deleting a User Group"; - $this->ipsclass->admin->page_detail = "Пожалуйста, убедитесь в том, что хотите удалить данную группу."; + $this->ipsclass->admin->page_detail = "Please check to ensure that you are attempting to remove the correct group."; //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as users', 'from' => 'members', 'where' => "mgroup=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as users', 'from' => 'members', 'where' => "mgroup=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $black_adder = $this->ipsclass->DB->fetch_row(); @@ -1333,7 +1484,7 @@ class ad_groups $black_adder['users'] = 0; } - $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as users', 'from' => 'members', 'where' => "mgroup_others LIKE '%".$this->ipsclass->input['id']."%'" ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as users', 'from' => 'members', 'where' => "mgroup_others LIKE '%".intval($this->ipsclass->input['id'])."%'" ) ); $this->ipsclass->DB->simple_exec(); $extra_group = $this->ipsclass->DB->fetch_row(); @@ -1344,14 +1495,14 @@ class ad_groups } - $this->ipsclass->DB->simple_construct( array( 'select' => 'g_title', 'from' => 'groups', 'where' => "g_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'g_title', 'from' => 'groups', 'where' => "g_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $group = $this->ipsclass->DB->fetch_row(); //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title', 'from' => 'groups', 'where' => "g_id <> ".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title', 'from' => 'groups', 'where' => "g_id <> ".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $mem_groups = array(); @@ -1391,21 +1542,21 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Подтверждение перемещения: ".$group['g_title'] ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Removal Confirmation: ".$group['g_title'] ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Количество пользователей в этой группе" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Number of users in this group" , "".$black_adder['users']."", ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Количество пользователей с этой группой, как вторичная группа
    Эта вторичная группа будет удалена у этих пользователей." , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Number of users with this group as their secondary group
    This secondary group will be removed for these users." , "".$extra_group['users']."", ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Переместить пользователей из этой группы в..." , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Move users in this group to..." , $this->ipsclass->adskin->form_dropdown("to_id", $mem_groups ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Удалить эту группу"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Delete this group"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -1425,18 +1576,24 @@ class ad_groups $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); $this->ipsclass->input['to_id'] = intval($this->ipsclass->input['to_id']); + //----------------------------------------- + // Auth check... + //----------------------------------------- + + $this->ipsclass->admin->security_auth_check(); + //----------------------------------------- // Check //----------------------------------------- if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); + $this->ipsclass->admin->error("Could not resolve the group ID, please try again"); } if ( ! $this->ipsclass->input['to_id'] ) { - $this->ipsclass->admin->error("Нельзя переместить в указанную группу. /me плачет"); + $this->ipsclass->admin->error("No move to group ID was specified. /me cries."); } //----------------------------------------- @@ -1448,7 +1605,7 @@ class ad_groups { if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { - $this->ipsclass->admin->error("Извините, но у вас нет прав, чтобы переместить в эту группу"); + $this->ipsclass->admin->error("Sorry, you do not have permission to move into that group"); } } @@ -1461,7 +1618,7 @@ class ad_groups if ( $this->ipsclass->DB->get_num_rows() != 2 ) { - $this->ipsclass->admin->error("Нельзя изменить ID удаленной группы"); + $this->ipsclass->admin->error("Could not resolve the ID's passed to group deletion"); } $this->ipsclass->DB->do_update( 'members', array( 'mgroup' => $this->ipsclass->input['to_id'] ), 'mgroup='.$this->ipsclass->input['id'] ); @@ -1500,7 +1657,7 @@ class ad_groups $to_insert = array(); if( count( $extra ) ) { - foreach( $extra as $key => $mgroup_other ) + foreach( $extra as $mgroup_other ) { if( $mgroup_other != $this->ipsclass->input['id'] ) { @@ -1525,10 +1682,19 @@ class ad_groups } $this->rebuild_group_cache(); - - $this->ipsclass->admin->save_log("Пользовательская группа'{$this->ipsclass->input['name']}' удалена"); - $this->ipsclass->main_msg = "Группа удалена"; + // Make sure deleted group is not still listed as a moderator + $this->ipsclass->cache['moderators'] = array(); + + require_once( ROOT_PATH.'sources/action_admin/moderator.php' ); + $this->mod = new ad_moderator(); + $this->mod->ipsclass =& $this->ipsclass; + + $this->mod->rebuild_moderator_cache(); + + $this->ipsclass->admin->save_log("Member Group '{$this->ipsclass->input['name']}' removed"); + + $this->ipsclass->main_msg = "Group Removed"; $this->main_screen(); } @@ -1545,25 +1711,31 @@ class ad_groups $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); + //----------------------------------------- + // Auth check... + //----------------------------------------- + + $this->ipsclass->admin->security_auth_check(); + //----------------------------------------- // Check... //----------------------------------------- if ($this->ipsclass->input['g_title'] == "") { - $this->ipsclass->admin->error("Вы должны ввести название группы."); + $this->ipsclass->admin->error("You must enter a group title."); } if ($type == 'edit') { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->admin->error("Нельзя изменить id группы"); + $this->ipsclass->admin->error("Could not resolve the group id"); } if ($this->ipsclass->input['id'] == $this->ipsclass->vars['admin_group'] and $this->ipsclass->input['g_access_cp'] != 1) { - $this->ipsclass->admin->error("Вы не можете удалить права на админцентр у этой группы"); + $this->ipsclass->admin->error("You can not remove the ability to access the admin control panel for this group"); } } @@ -1577,20 +1749,20 @@ class ad_groups } else { - $this->ipsclass->admin->error("Ни одной маски доступа не выбрано"); + $this->ipsclass->admin->error("No permission sets chosen"); } // Build up the hashy washy for the database ..er.. wase. - $prefix = preg_replace( "/'/", "'" , $this->ipsclass->txt_safeslashes($_POST['prefix']) ); - $prefix = preg_replace( "/</" , "<" , $prefix ); - $suffix = preg_replace( "/'/", "'" , $this->ipsclass->txt_safeslashes($_POST['suffix']) ); - $suffix = preg_replace( "/</" , "<" , $suffix ); + $prefix = str_replace( "'", "'" , $this->ipsclass->txt_safeslashes($_POST['prefix']) ); + $prefix = str_replace( "<" , "<" , $prefix ); + $suffix = str_replace( "'", "'" , $this->ipsclass->txt_safeslashes($_POST['suffix']) ); + $suffix = str_replace( "<" , "<" , $suffix ); $promotion_a = '-1'; //id $promotion_b = '-1'; // posts - if ($this->ipsclass->input['g_promotion_id'] > 0) + if (isset($this->ipsclass->input['g_promotion_id']) AND $this->ipsclass->input['g_promotion_id'] > 0) { $promotion_a = $this->ipsclass->input['g_promotion_id']; $promotion_b = $this->ipsclass->input['g_promotion_posts']; @@ -1600,7 +1772,7 @@ class ad_groups { if ( $this->ipsclass->input['g_attach_per_post'] > $this->ipsclass->input['g_attach_max'] ) { - $this->ipsclass->main_msg = "Вы не можете указывать лимит на сообщения более, чем общий глобальный лимит."; + $this->ipsclass->main_msg = "You cannot specify a per post limit greater than the globally allowed limit."; $this->group_form('edit'); } } @@ -1615,7 +1787,7 @@ class ad_groups 'g_other_topics' => $this->ipsclass->input['g_other_topics'], 'g_use_search' => $this->ipsclass->input['g_use_search'], 'g_email_friend' => $this->ipsclass->input['g_email_friend'], - 'g_invite_friend' => $this->ipsclass->input['g_invite_friend'], + 'g_invite_friend' => isset($this->ipsclass->input['g_invite_friend']) ? intval( $this->ipsclass->input['g_invite_friend'] ) : 0, 'g_edit_profile' => $this->ipsclass->input['g_edit_profile'], 'g_post_new_topics' => $this->ipsclass->input['g_post_new_topics'], 'g_reply_own_topics' => $this->ipsclass->input['g_reply_own_topics'], @@ -1631,7 +1803,7 @@ class ad_groups 'g_is_supmod' => $this->ipsclass->input['g_is_supmod'], 'g_access_cp' => $this->ipsclass->input['g_access_cp'], 'g_title' => trim($this->ipsclass->input['g_title']), - 'g_can_remove' => $this->ipsclass->input['g_can_remove'], + 'g_can_remove' => isset($this->ipsclass->input['g_can_remove']) ? intval( $this->ipsclass->input['g_can_remove'] ) : 0, 'g_append_edit' => $this->ipsclass->input['g_append_edit'], 'g_access_offline' => $this->ipsclass->input['g_access_offline'], 'g_avoid_q' => $this->ipsclass->input['g_avoid_q'], @@ -1639,7 +1811,6 @@ class ad_groups 'g_icon' => trim($this->ipsclass->txt_safeslashes($_POST['g_icon'])), 'g_attach_max' => $this->ipsclass->input['g_attach_max'], 'g_avatar_upload' => $this->ipsclass->input['g_avatar_upload'], - 'g_calendar_post' => $this->ipsclass->input['g_calendar_post'], 'g_max_messages' => $this->ipsclass->input['g_max_messages'], 'g_max_mass_pm' => $this->ipsclass->input['g_max_mass_pm'], 'g_search_flood' => $this->ipsclass->input['g_search_flood'], @@ -1661,6 +1832,8 @@ class ad_groups 'g_dname_date' => intval($this->ipsclass->input['g_dname_date']), ); + $this->ipsclass->DB->force_data_type = array( 'g_title' => 'string' ); + if ($type == 'edit') { $this->ipsclass->DB->do_update( 'groups', $db_string, 'g_id='.$this->ipsclass->input['id'] ); @@ -1669,11 +1842,11 @@ class ad_groups $this->ipsclass->DB->do_update( 'moderators', array( 'group_name' => trim($this->ipsclass->input['g_title']) ), 'group_id='.$this->ipsclass->input['id'] ); - $this->ipsclass->admin->save_log("Отредактирована группа '{$this->ipsclass->input['g_title']}'"); + $this->ipsclass->admin->save_log("Edited Group '{$this->ipsclass->input['g_title']}'"); $this->rebuild_group_cache(); - $this->ipsclass->main_msg = "Группа отредактирована"; + $this->ipsclass->main_msg = "Group Edited"; $this->main_screen(); } @@ -1681,11 +1854,11 @@ class ad_groups { $this->ipsclass->DB->do_insert( 'groups', $db_string ); - $this->ipsclass->admin->save_log("Добавлена группа '{$this->ipsclass->input['g_title']}'"); + $this->ipsclass->admin->save_log("Added Group '{$this->ipsclass->input['g_title']}'"); $this->rebuild_group_cache(); - $this->ipsclass->main_msg = "Группа добавлена"; + $this->ipsclass->main_msg = "Group Added"; $this->main_screen(); } } @@ -1730,43 +1903,43 @@ class ad_groups function group_form($type='edit') { - $all_groups = array( 0 => array ('none', 'Не продвигать') ); + $all_groups = array( 0 => array ('none', 'Don\'t Promote') ); if ($type == 'edit') { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Невозможно определить идентификатор (id) группы пользователей."); + $this->ipsclass->admin->error("No group id to select from the database, please try again."); } if ( $this->ipsclass->vars['admin_group'] == $this->ipsclass->input['id'] ) { if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { - $this->ipsclass->admin->error("Извините, у вас нет доступа к редактированию этой группы. Эта группа относится к главным администраторам."); + $this->ipsclass->admin->error("Sorry, you are unable to edit that group as it's the root admin group"); } } $form_code = 'doedit'; - $button = 'Изменить группу'; + $button = 'Complete Edit'; } else { $form_code = 'doadd'; - $button = 'Добавить группу'; + $button = 'Add Group'; } if ($this->ipsclass->input['id'] != "") { - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'groups', 'where' => "g_id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'groups', 'where' => "g_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $group = $this->ipsclass->DB->fetch_row(); $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title', 'from' => 'groups', - 'where' => "g_id <> {$this->ipsclass->input['id']}", + 'where' => "g_id <> ".intval($this->ipsclass->input['id']), 'order' => 'g_title' ) ); } else @@ -1817,22 +1990,22 @@ class ad_groups if ($type == 'edit') { - $this->ipsclass->admin->page_title = "Изменение группы пользователей: ".$group['g_title']; + $this->ipsclass->admin->page_title = "Editing User Group ".$group['g_title']; } else { - $this->ipsclass->admin->page_title = 'Добавление группы пользователей'; - $group['g_title'] = 'Новая группа'; + $this->ipsclass->admin->page_title = 'Adding a new user group'; + $group['g_title'] = 'New Group'; } $guest_legend = ""; if ($group['g_id'] == $this->ipsclass->vars['guest_group']) { - $guest_legend = "

    (Не применительно к гостям)"; + $guest_legend = "

    (Does not apply to guests)"; } - $this->ipsclass->admin->page_detail = "Пожалуйста, перепроверьте все еще раз перед продолжением."; + $this->ipsclass->admin->page_detail = "Please double check the information before submitting the form."; //----------------------------------------- @@ -1848,17 +2021,17 @@ class ad_groups if (isAdmin[0].checked == true) { - msg += 'Пользователи этой группы получат доступ в админцентр!\\n\\n'; + msg += 'Members in this group can access the Admin Control Panel\\n\\n'; } if (isMod[0].checked == true) { - msg += 'Пользователи этой группы станут супермодераторами.\\n\\n'; + msg += 'Members in this group are super moderators.\\n\\n'; } if (msg != '') { - msg = 'Проверка безопасности\\n--------------\\nНазвание группы пользователей: ' + document.forms[0].g_title.value + '\\n--------------\\n\\n' + msg + 'Информация верна?'; + msg = 'Security Check\\n--------------\\nMember Group Title: ' + document.forms[0].g_title.value + '\\n--------------\\n\\n' + msg + 'Is this correct?'; formCheck = confirm(msg); @@ -1891,16 +2064,16 @@ class ad_groups //----------------------------------------- - $prefix = preg_replace( "/'/", "'", $group['prefix'] ); - $prefix = preg_replace( "/\"/", """, $prefix ); - $prefix = preg_replace( "/ipsclass->html .= $this->ipsclass->adskin->start_table( "Глобальные настройки", "Основные настройки группы" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Global Settings", "Basic Group Settings" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название группы" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Group Title" , $this->ipsclass->adskin->form_input("g_title", $group['g_title'] ) ) ); @@ -1914,7 +2087,7 @@ class ad_groups var show = ''; "; - foreach ($perm_masks as $id => $d) + foreach ($perm_masks as $d) { $this->ipsclass->html .= " perms_$d[0] = '$d[1]';\n"; } @@ -1941,35 +2114,34 @@ class ad_groups { if (show == '') { - show = 'Изменений не обнаружено\\nНажмите на мульти-выборочный блок для активации'; + show = 'No change detected\\nClick on the multi-select box to activate'; } - alert('Выбранные маски доступа\\n---------------------------------\\n' + show); + alert('Selected Permission Sets\\n---------------------------------\\n' + show); } "; $arr = explode( ",", $group['g_perm_id'] ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Использовать следующие маски доступа к форумам... -
    Можно выбрать несколько, удерживая клавишу Ctrl" , - $this->ipsclass->adskin->form_multiselect("permid[]", $perm_masks, $arr, 5, 'onfocus="saveit(this)"; onchange="saveit(this)";' )."Показать выбранные маски" + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Use which permission sets...
    You may choose more than one" , + $this->ipsclass->adskin->form_multiselect("permid[]", $perm_masks, $arr, 5, 'onfocus="saveit(this)"; onchange="saveit(this)";' )."
    " ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Картинка (иконка) группы
    Может выглядеть как style_images/1/folder_team_icons/admin.gif,
    так и в виде полного адреса 'http://'
    Используйте style_images/<#IMG_DIR#>/folder_team_icons/{image} (заменив {image} именем картинки) для динамической загрузки картинок из папки /style_images/ в стиль пользователей.
    (заполнять не обязательно)
    " , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Group Icon Image
    Can be a relative link, i.e. style_images/1/folder_team_icons/admin.gif
    or it can a full URL starting with 'http://'
    Use style_images/<#IMG_DIR#>/folder_team_icons/{image} (replace {image} with the image name) to dynamically load the image from the style_image folder based on the member's skin choice.
    " , $this->ipsclass->adskin->form_textarea("g_icon", $group['g_icon'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Отображение в списке активных пользователей
    [приставка перед именем пользователя]

    (поле можно оставить пустым)
    (Пример: <span style='color:red'>)" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Online List Format [Prefix]
    (Can be left blank)
    (Example:<span style='color:red'>)" , $this->ipsclass->adskin->form_input("prefix", $prefix ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Отображение в списке активных пользователей
    [суффикс после имени пользователя]

    (поле можно оставить пустым)
    (Пример: </span>)" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Online List Format [Suffix]
    (Can be left blank)
    (Example:</span>)" , $this->ipsclass->adskin->form_input("suffix", $suffix ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Скрыть эту группу из списка пользователей?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Hide this group from the member list?" , $this->ipsclass->adskin->form_yes_no("g_hide_from_list", $group['g_hide_from_list'] ) ) ); @@ -1982,45 +2154,53 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепление файлов", "Управление правами на прикрепление файлов к сообщениям в темах, личных сообщениях и т.д." ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Upload Permissions", "Manage permissions for PM and post uploads, etc" ); if( $type == 'edit' AND $group['g_attach_max'] == 0 ) { $group['g_attach_maxdis'] = "unlimited"; } + else if( $type == 'edit' AND $group['g_attach_max'] == -1 ) + { + $group['g_attach_maxdis'] = "disabled"; + } else { $group['g_attach_maxdis'] = $this->ipsclass->size_format( $group['g_attach_max'] * 1024 ); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Глобальные: Максимальное общее место на диске для всех файлов (включая личные сообщения и сообщения в темах) (в килобайтах)".$this->ipsclass->adskin->js_help_link('mg_upload')."
    Введите -1 для отключения возможности прикреплять файлы.
    Введите 0 для отключения действия ограничения на место.
    " , - $this->ipsclass->adskin->form_input("g_attach_max", $group['g_attach_max'] ). ' (установлено: '.$group['g_attach_maxdis'].')' + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "GLOBAL: Max total global file space for all uploads (Inc. PMs and posts) (in KB)".$this->ipsclass->adskin->js_help_link('mg_upload')."
    Enter -1 to disable uploads or enter 0 to disable this limit and use PHPs max allowed upload size.
    " , + $this->ipsclass->adskin->form_input("g_attach_max", $group['g_attach_max'] ). ' (currently: '.$group['g_attach_maxdis'].')' ) ); if( $type == 'edit' AND $group['g_attach_per_post'] == 0 ) { $group['g_attach_per_postdis'] = "unlimited"; } + else if( $type == 'edit' AND $group['g_attach_per_post'] == -1 ) + { + $group['g_attach_per_postdis'] = "disabled"; + } else { $group['g_attach_per_postdis'] = $this->ipsclass->size_format( $group['g_attach_per_post'] * 1024 ); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "В сообщениях: Максимальное общее место на диске для прикрепленных файлов каждого сообщения или личного сообщения (в килобайтах)".$this->ipsclass->adskin->js_help_link('mg_upload')."
    Введите 0 для отключения действия ограничения на место.
    Это значение должны быть меньшим, чем глобальное ограничение.
    " , - $this->ipsclass->adskin->form_input("g_attach_per_post", $group['g_attach_per_post'] ). ' (установлено: '.$group['g_attach_per_postdis'].')' + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "PER POST: Max total file space allowed in each post or PM (in KB)".$this->ipsclass->adskin->js_help_link('mg_upload')."
    Enter 0 to disable a per post limit. This number must be less than the global amount.
    " , + $this->ipsclass->adskin->form_input("g_attach_per_post", $group['g_attach_per_post'] ). ' (currently: '.$group['g_attach_per_postdis'].')' ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Фотография: Максимальное место на диске для фотографии пользователя (в килобайтах)
    (Оставьте поле пустым для запрета загрузки фотографии вообще)" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "PERSONAL PHOTO: Max upload file size (in KB)
    (Leave blank to disallow uploads)" , $this->ipsclass->adskin->form_input("p_max", $p_max )."
    " - ."Макс. ширина (px): " - ."Макс. высота (px): " + ."Max Width (px): " + ."Max Height (px): " ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Аватар: Разрешить загрузку аватара с жесткого диска пользователя?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "AVATARS: Allow avatar uploads?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_avatar_upload", $group['g_avatar_upload'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Личные сообщения: Разрешить прикрепление файлов к личным сообщениям?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "PMs: Allow PM attachments?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_can_msg_attach", $group['g_can_msg_attach'] ) ) ); @@ -2033,53 +2213,53 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Основные права", "Ограничения группы: что могут и не могут делать пользователи из данной группы" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Global Permissions", "Restricting what this group can do" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать весь форум?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can view board?" , $this->ipsclass->adskin->form_yes_no("g_view_board", $group['g_view_board'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать ОТКЛЮЧЕННЫЙ (OFFLINE) ФОРУМ?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can view OFFLINE board?" , $this->ipsclass->adskin->form_yes_no("g_access_offline", $group['g_access_offline'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать профили пользователей и список пользователей?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can view member profiles and the member list?" , $this->ipsclass->adskin->form_yes_no("g_mem_info", $group['g_mem_info'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать темы, созданные другими пользователями?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can view other members topics?" , $this->ipsclass->adskin->form_yes_no("g_other_topics", $group['g_other_topics'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут использовать поиск по форуму?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can use search?" , $this->ipsclass->adskin->form_yes_no("g_use_search", $group['g_use_search'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Временной интервал между повторным поиском по форуму (защита от массовых атак сервера) (в секундах)
    Введите количество секунд, в течение которых пользователь этой группы после использования поиска не сможет им воспользоваться повторно. Эта опция защищает форум от атак на сервер за счет массового поиска в короткий период времени.
    Введите 0 для отключения ограничения." , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Number of seconds for search flood control
    Stops search abuse, enter 0 or leave blank for no flood control" , $this->ipsclass->adskin->form_input("g_search_flood", $group['g_search_flood'] ) ) ); list( $limit, $flood ) = explode( ":", $group['g_email_limit'] ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Пользователи этой группы могут отправлять письма с форума на e-mail?
    Для отключения ограничений оставьте поле пустым $guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can email members from the board?
    Leave bottom section blank to remove limits $guest_legend
    " , $this->ipsclass->adskin->form_yes_no("g_email_friend", $group['g_email_friend'] ) - ."
    Разрешить отправку писем на e-mail только ". $this->ipsclass->adskin->form_simple_input("join_limit", $limit, 2 )." штук в 24 часа" - ."
    ... и разрешить отправку только 1 письма на e-mail каждые ".$this->ipsclass->adskin->form_simple_input("join_flood", $flood, 2 )." минут" + ."
    Only allow ". $this->ipsclass->adskin->form_simple_input("join_limit", $limit, 2 )." emails in a 24hr period" + ."
    ...and only allow 1 email every ".$this->ipsclass->adskin->form_simple_input("join_flood", $flood, 2 )." minutes" ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут редактировать свои личные данные?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can edit own profile info?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_edit_profile", $group['g_edit_profile'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут использовать личные сообщения (PM)?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can use PM system?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_use_pm", $group['g_use_pm'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Введите максимальное число пользователей для массовой рассылки через личные сообщения пользователем данной группы?
    (Введите 0 или оставьте поле пустым для отключения возможности массовой отправки личных сообщений)" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Max. Number users allowed to mass PM?$guest_legend
    (Enter 0 or leave blank to disable mass PM)" , $this->ipsclass->adskin->form_input("g_max_mass_pm", $group['g_max_mass_pm'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Максимальное количество сохраняемых личных сообщений?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Max. Number of storable messages?$guest_legend" , $this->ipsclass->adskin->form_input("g_max_messages", $group['g_max_messages'] ) ) ); @@ -2092,79 +2272,75 @@ class ad_groups //----------------------------------------- - $dd_topic_rate = array( 0 => array( 0, 'Нет' ), 1 => array( 1, 'Да (Не позволять изменять голоса)' ), 2 => array( 2, 'Да (Разрешить изменять голоса)' ) ); + $dd_topic_rate = array( 0 => array( 0, 'No' ), 1 => array( 1, 'Yes (Not allowed to change vote)' ), 2 => array( 2, 'Yes (Allowed to change vote)' ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Настройки сообщений", "Права пользователей этой группы для тем и сообщений" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Posting Permissions", "Restrict where this group can post" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут открывать новые темы (где разрешено)?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can post new topics (where allowed)?" , $this->ipsclass->adskin->form_yes_no("g_post_new_topics", $group['g_post_new_topics'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут оценивать темы (где это разрешено)?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can rate topics (in forums where allowed)?" , $this->ipsclass->adskin->form_dropdown("g_topic_rate_setting", $dd_topic_rate, $group['g_topic_rate_setting'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут публиковать ответы в СВОИХ (созданных самим пользователем) темах?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can reply to OWN topics?" , $this->ipsclass->adskin->form_yes_no("g_reply_own_topics", $group['g_reply_own_topics'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут публиковать ответы на ЧУЖИЕ темы (где разрешено)?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can reply to OTHER members topics (where allowed)?" , $this->ipsclass->adskin->form_yes_no("g_reply_other_topics", $group['g_reply_other_topics'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут редактировать свои сообщения?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can edit own posts?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_edit_posts", $group['g_edit_posts'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Временное ограничение с даты публикации сообщения, после которого редактирование сообщения будет запрещено (в минутах)?$guest_legend
    Запрещает пользователям этой группы редактировать свои сообщения после окончания указанного периода времени.
    Введите 0 или оставьте поле пустым для отключения ограничения. " , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Edit time restriction (in minutes)?$guest_legend
    Denies user edit after the time set has passed. Leave blank or enter 0 for no restriction" , $this->ipsclass->adskin->form_input("g_edit_cutoff", $group['g_edit_cutoff'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут удалять пометку «Отредактировано...» при редактировании сообщения?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Allow user to remove 'Edited by' legend?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_append_edit", $group['g_append_edit'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут удалять свои сообщения?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can delete own posts?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_delete_own_posts", $group['g_delete_own_posts'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут открывать/закрывать свои темы?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can open/close own topics?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_open_close_posts", $group['g_open_close_posts'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут изменять названия и описания своих тем?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can edit own topic title & description?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_edit_topic", $group['g_edit_topic'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут удалять свои темы?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can delete own topics?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_delete_own_topics", $group['g_delete_own_topics'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут создавать новые опросы (где разрешено)?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can start new polls (where allowed)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_post_polls", $group['g_post_polls'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут голосовать (где разрешено)?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can vote in polls (where allowed)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_vote_polls", $group['g_vote_polls'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Не применять к пользователям данной группы флуд-контроль?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can avoid flood control?" , $this->ipsclass->adskin->form_yes_no("g_avoid_flood", $group['g_avoid_flood'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Не применять проверку сообщений перед публикацией модераторами для пользователей этой группы?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can avoid moderation queues?" , $this->ipsclass->adskin->form_yes_no("g_avoid_q", $group['g_avoid_q'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут добавлять новые события в календари?$guest_legend" , - $this->ipsclass->adskin->form_yes_no("g_calendar_post", $group['g_calendar_post'] ) - ) ); - - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут использовать HTML в сообщениях?$guest_legend
    ".$this->ipsclass->adskin->js_help_link('mg_dohtml') , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can post HTML?$guest_legend
    ".$this->ipsclass->adskin->js_help_link('mg_dohtml') , $this->ipsclass->adskin->form_yes_no("g_dohtml", $group['g_dohtml'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Не применять к пользователям данной группы фильтры плохих слов?$guest_legend
    " , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can bypass the bad word filter?$guest_legend
    " , $this->ipsclass->adskin->form_yes_no("g_bypass_badwords", $group['g_bypass_badwords'] ) ) ); @@ -2179,13 +2355,13 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Права на изменения имен", "Действителен, только когда стоит показ имен" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Display Name Permissions", "Only valid when allowing display names" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Изменение имени: Лимит дней
    Это количество дней в течение которых пользователь может произвести изменения. Для примера \"30\" это означает, что пользователь может изменить свое имя только на протяжении 30-ти дней.
    " , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Display Name Change: Limit Days
    This is the number of days in which the number of changes are made. For example \"30\" would mean that the user could only change their name X amount of times in a 30 day period
    " , $this->ipsclass->adskin->form_input("g_dname_date", $group['g_dname_date'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( " Изменение имени: Макс. кол-во изменений в Х дней
    Здесь вы указываете число раз, сколько пользователь сможет изменить свое имя в течение Х дней. Установите \"0\", чтобы запретить пользоваться этим преимуществом.
    " , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Display Name Change: Max changes per X days
    This relates to the maximum number of changes a user can make to their display name within the X day period set. Use \"0\" to disallow users from changing their own display name.
    " , $this->ipsclass->adskin->form_input("g_dname_changes", $group['g_dname_changes'] ) ) ); @@ -2200,17 +2376,17 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Установки модерирования", "Управление модераторскими возможностями для этой группы пользователей" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Moderation Permissions", "Allow or deny this group moderation abilities" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Сделать пользователей этой группы супермодераторами (возможность модерировать везде)?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Is Super Moderator (can moderate anywhere)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_is_supmod", $group['g_is_supmod'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Разрешить доступ к админцентру форума для пользователей этой группы (очень важный пункт!)?$guest_legend" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Can access the Admin CP?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_access_cp", $group['g_access_cp'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Позволить публиковать ответы в закрытых темах?" , + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Allow user group to post in 'closed' topics?" , $this->ipsclass->adskin->form_yes_no("g_post_closed", $group['g_post_closed'] ) ) ); @@ -2223,19 +2399,19 @@ class ad_groups //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Продвижение пользователей группы" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Group Promotion" ); if ($group['g_id'] == $this->ipsclass->vars['admin_group']) { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Выберите 'Не перемещать' для отключения продвижения
    ".$this->ipsclass->adskin->js_help_link('mg_promote') , - "Эта возможность отключена для группы главных администраторов." + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Choose 'Don't Promote' to disable promotions
    ".$this->ipsclass->adskin->js_help_link('mg_promote') , + "Feature disable for the root admin group, after all - if you're at the top where can you be promoted to?" ) ); } else { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Выберите «Не продвигать» для отключения продвижения пользователей этой группы$guest_legend
    ".$this->ipsclass->adskin->js_help_link('mg_promote') , - 'Перемещать пользователей этой группы в другую группу пользователей (например, с более высокими правами) '.$this->ipsclass->adskin->form_dropdown("g_promotion_id", $all_groups, $group['g_promotion_id'] ) - .'
    когда они набирают указанное далее количество сообщений: '.$this->ipsclass->adskin->form_simple_input('g_promotion_posts', $group['g_promotion_posts'] ).'
    (Тут используется значение счетчика сообщений пользователя).' + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Choose 'Don't Promote' to disable promotions$guest_legend
    ".$this->ipsclass->adskin->js_help_link('mg_promote') , + 'Promote members of this group to: '.$this->ipsclass->adskin->form_dropdown("g_promotion_id", $all_groups, $group['g_promotion_id'] ) + .'
    when they reach '.$this->ipsclass->adskin->form_simple_input('g_promotion_posts', $group['g_promotion_posts'] ).' posts' ) ); } @@ -2267,9 +2443,9 @@ class ad_groups // Page details //----------------------------------------- - $this->ipsclass->admin->page_title = "Группы пользователей"; - $this->ipsclass->admin->page_detail = "Разделение пользователей на группы является очень полезной и мощной функцией для организации пользователей на форуме. Нужно помнить, что есть 4 группы, которые Вы не можете удалить, это: (Ожидающие, Гости, Пользователи and Администраторы), однако Вы можете их редактировать. Рекомендуем Вам создать группу 'Модераторы' и наделить их соответствующими правам на форуме (в разделах), которых нет у простых пользователей.
    В параметрах доступа Вы можете произвести быстрые настройки доступов к созданию тем, ответам и чтению форумов. Параметры доступа можно также отредактировать и через меню 'Управление форумами'. "; - + $this->ipsclass->admin->page_title = "User Groups"; + $this->ipsclass->admin->page_detail = "User Grouping is a quick and powerful way to organise your members. There are 4 preset groups that you cannot remove (Validating, Guest, Member and Admin) although you may edit these at will. A good example of user grouping is to set up a group called 'Moderators' and allow them access to certain forums other groups do not have access to.
    Forum access allows you to make quick changes to that groups forum read, write and reply settings. You may do this on a forum per forum basis in forum control."; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage User Groups' ); //----------------------------------------- // Get groups diff --git a/upload/sources/action_admin/help.php b/upload/sources/action_admin/help.php index 6cb3f348..704a3696 100644 --- a/upload/sources/action_admin/help.php +++ b/upload/sources/action_admin/help.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -37,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -45,6 +35,10 @@ if ( ! defined( 'IN_ACP' ) ) class ad_help { var $base_url; + var $html; + var $parser; + var $han_editor; + var $image_dir; /** * Section title name @@ -62,16 +56,7 @@ class ad_help function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Manage Help Files' ); //----------------------------------------- @@ -91,6 +76,11 @@ class ad_help $this->doedit(); break; + case 'doreorder': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' ); + $this->doreorder(); + break; + case 'donew': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':add' ); $this->doadd(); @@ -100,14 +90,85 @@ class ad_help $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' ); $this->remove(); break; - + + case 'master_xml_export': + $this->master_xml_export(); + break; + //----------------------------------------- default: $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->list_files(); break; } + } + + /*-------------------------------------------------------------------------*/ + // Export Master XML + /*-------------------------------------------------------------------------*/ + + function master_xml_export() + { + //----------------------------------------- + // INIT + //----------------------------------------- + $entry = array(); + + //----------------------------------------- + // Get XML class + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + + $xml = new class_xml(); + + $xml->doc_type = $this->ipsclass->vars['gb_char_set']; + + $xml->xml_set_root( 'export', array( 'exported' => time() ) ); + + //----------------------------------------- + // Set group + //----------------------------------------- + + $xml->xml_add_group( 'group' ); + + //----------------------------------------- + // Get templates... + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'faq' ) ); + + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $content = array(); + + //----------------------------------------- + // Sort the fields... + //----------------------------------------- + + foreach( $r as $k => $v ) + { + $content[] = $xml->xml_build_simple_tag( $k, $v ); + } + + $entry[] = $xml->xml_build_entry( 'row', $content ); + } + + $xml->xml_add_entry_to_group( 'group', $entry ); + + $xml->xml_format_document(); + + $doc = $xml->xml_document; + + //----------------------------------------- + // Print to browser + //----------------------------------------- + + $this->ipsclass->admin->show_download( $doc, 'faq.xml', '', 0 ); } //----------------------------------------- @@ -118,10 +179,43 @@ class ad_help { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны ввести правильный ID файла помощи!"); + $this->ipsclass->admin->error("You must pass a valid emoticon id, silly!"); } - $text = preg_replace( "/\n/", "
    ", stripslashes($_POST['text'] ) ); + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + $this->ipsclass->load_skin(); + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; + + if ($this->ipsclass->input['title'] == "") + { + $this->ipsclass->admin->error("You must enter a title, silly!"); + } + + $text = $this->han_editor->process_raw_post( 'text' ); + $this->parser->parse_smilies = 1; + $this->parser->parse_html = 1; + $this->parser->parse_bbcode = 1; + $text = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $text ) ); + + //$text = preg_replace( "/\n/", "
    ", stripslashes($_POST['text'] ) ); //$title = preg_replace( "/\n/", "
    ", stripslashes($_POST['title'] ) ); $desc = preg_replace( "/\n/", "
    ", stripslashes($_POST['description'] ) ); @@ -132,12 +226,42 @@ class ad_help 'description' => $desc, ) , "id=".intval($this->ipsclass->input['id']) ); - $this->ipsclass->admin->save_log("Изменен файл помощи"); + $this->ipsclass->admin->save_log("Edited help files"); $this->ipsclass->boink_it($this->ipsclass->base_url."&{$this->ipsclass->form_code}"); exit(); - - + + } + + + function doreorder() + { + foreach ($this->ipsclass->input as $key => $value) + { + if ( preg_match( "/^order_(\d+)$/", $key, $match ) ) + { + if ($this->ipsclass->input[$match[0]]) + { + $ids[ $match[1] ] = $this->ipsclass->input[$match[0]]; + } + } + } + + $ids = $this->ipsclass->clean_int_array( $ids ); + + //----------------------------------------- + // Save changes + //----------------------------------------- + + if ( count($ids) ) + { + foreach( $ids as $this_id => $new_position ) + { + $this->ipsclass->DB->do_update( 'faq', array( 'position' => intval($new_position) ), 'id='.$this_id ); + } + } + + $this->ipsclass->boink_it( $this->ipsclass->base_url.'&'.$this->ipsclass->form_code ); } //===================================================== @@ -145,8 +269,35 @@ class ad_help function show_form($type='new') { - $this->ipsclass->admin->page_detail = "В этой секции вы можете добавлять, изменять и удалять файлы помощи."; - $this->ipsclass->admin->page_title = "Управление файлами помощи"; + $this->ipsclass->admin->page_detail = "You may add/edit and remove help files below."; + $this->ipsclass->admin->page_title = "Help File Management"; + $this->ipsclass->admin->nav[] = array( '', 'Add/Edit Help Files' ); + + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + $this->han_editor->from_acp = 1; + + $this->han_editor->ed_width = "550px"; + $this->han_editor->ed_height = "200px"; + $this->ipsclass->vars['rte_width'] = "500px"; + $this->ipsclass->vars['rte_height'] = "200px"; + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; //----------------------------------------- @@ -155,7 +306,7 @@ class ad_help if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны ввести правильный ID файла помощи!"); + $this->ipsclass->admin->error("You must pass a valid help file id, silly!"); } //----------------------------------------- @@ -165,18 +316,33 @@ class ad_help if ( ! $r = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Невозможно найти в базе данных файл помощи с таким ID"); + $this->ipsclass->admin->error("We could not find that help file in the database"); } + if ( $this->han_editor->method == 'rte' ) + { + $r['text'] = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $r['text'] ) ); + $r['text'] = $this->parser->convert_ipb_html_to_html( $r['text'] ); + } + else + { + $this->parser->parse_html = 1; + $this->parser->parse_nl2br = 1; + $this->parser->parse_smilies = 1; + $this->parser->parse_bbcode = 1; + + $r['text'] = $this->parser->pre_edit_parse( $r['text'] ); + } + //----------------------------------------- - $button = 'Изменить этот файл помощи'; + $button = 'Edit this Help File'; $code = 'doedit'; } else { $r = array(); - $button = 'Добавить этот файл помощи'; + $button = 'Add this Help File'; $code = 'donew'; } @@ -184,30 +350,31 @@ class ad_help 2 => array( 'act' , 'help' ), 3 => array( 'id' , $this->ipsclass->input['id'] ), 4 => array( 'section', $this->ipsclass->section_code ), - ) ); + ), "theAdminForm", "onclick='return ValidateForm()'", "postingform" ); $this->ipsclass->adskin->td_header[] = array( " " , "20%" ); $this->ipsclass->adskin->td_header[] = array( " " , "80%" ); - $r['text'] = preg_replace( "/
    /i", "\n", stripslashes($r['text']) ); + //$r['text'] = preg_replace( "/
    /i", "\n", stripslashes($r['text']) ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $button ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название файла помощи", + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Help File Title", $this->ipsclass->adskin->form_input('title' , stripslashes($r['title']) ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Описание", + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Help File Description", $this->ipsclass->adskin->form_textarea('description', stripslashes($r['description']) ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Текст", - $this->ipsclass->adskin->form_textarea('text', $r['text'], "60", "10" ), + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Help File Text", + //$this->ipsclass->adskin->form_textarea('text', $r['text'], "60", "10" ), + $this->han_editor->show_editor( $r['text'], 'text' ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form($button); @@ -224,10 +391,10 @@ class ad_help { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны ввести правильный ID файла помощи!"); + $this->ipsclass->admin->error("You must pass a valid help file id, silly!"); } - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'faq', 'where' => "id=".$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'faq', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->admin->save_log("Removed a help file"); @@ -241,14 +408,41 @@ class ad_help function doadd() { + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + $this->ipsclass->load_skin(); + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; + if ($this->ipsclass->input['title'] == "") { - $this->ipsclass->admin->error("Вы должны ввести название файла помощи!"); + $this->ipsclass->admin->error("You must enter a title, silly!"); } + $text = $this->han_editor->process_raw_post( 'text' ); + $this->parser->parse_smilies = 1; + $this->parser->parse_html = 1; + $this->parser->parse_bbcode = 1; + $text = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $text ) ); + - - $text = preg_replace( "/\n/", "
    ", stripslashes($_POST['text'] ) ); + //$text = preg_replace( "/\n/", "
    ", stripslashes($_POST['text'] ) ); $title = preg_replace( "/\n/", "
    ", stripslashes($_POST['title'] ) ); $desc = preg_replace( "/\n/", "
    ", stripslashes($_POST['description'] ) ); @@ -259,7 +453,7 @@ class ad_help 'description' => $desc, ) ); - $this->ipsclass->admin->save_log("Добавлен файл помощи"); + $this->ipsclass->admin->save_log("Added a help file"); $this->ipsclass->boink_it($this->ipsclass->base_url."&{$this->ipsclass->form_code}"); exit(); @@ -271,38 +465,55 @@ class ad_help function list_files() { - $this->ipsclass->admin->page_detail = "В этой секции вы можете добавлять, изменять и удалять файлы помощи"; - $this->ipsclass->admin->page_title = "Управление файлами помощи"; + $this->ipsclass->admin->page_detail = "You may add/edit and remove help files below."; + $this->ipsclass->admin->page_title = "Help File Management"; + + $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'doreorder' ), + 2 => array( 'act' , 'help' ), + 5 => array( 'section' , 'tools' ), + ) ); //----------------------------------------- - $this->ipsclass->adskin->td_header[] = array( "Название" , "50%" ); - $this->ipsclass->adskin->td_header[] = array( "Изменить" , "30%" ); - $this->ipsclass->adskin->td_header[] = array( "Удалить" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Title" , "45%" ); + $this->ipsclass->adskin->td_header[] = array( "Edit" , "30%" ); + $this->ipsclass->adskin->td_header[] = array( "Remove" , "20%" ); + $this->ipsclass->adskin->td_header[] = array( "Position" , "5%" ); //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Текущие файлы помощи" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Current Help Files" ); - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'faq', 'order' => "id" ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'faq', 'order' => "position" ) ); $this->ipsclass->DB->simple_exec(); if ( $this->ipsclass->DB->get_num_rows() ) { + $count = $this->ipsclass->DB->get_num_rows(); + + $order_values = array(); + + for( $i=1; $i<=$count; $i++ ) + { + $order_values[] = array( $i, $i ); + } + + $last = 1; + while ( $r = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "".stripslashes($r['title'])."
    ".stripslashes($r['description']), - "
    Изменить
    ", - "
    Удалить
    ", + "
    Edit
    ", + "
    Remove
    ", + "
    ".$this->ipsclass->adskin->form_dropdown( 'order_'.$r['id'], $order_values, $r['order'] > 0 ? $r['order'] : $last )."
    ", ) ); - - - + $last++; } } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("Добавить новый файл помощи", "center", "pformstrip" ); + $form_button = ""; + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic("
    {$form_button}
    ", "center", "tablesubheader" ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); diff --git a/upload/sources/action_admin/index.php b/upload/sources/action_admin/index.php index c182b688..5ebee2a1 100644 --- a/upload/sources/action_admin/index.php +++ b/upload/sources/action_admin/index.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-01-11 22:47:48 +0000 (Wed, 11 Jan 2006) $ -| > $Revision: 122 $ -| > $Author: bfarber $ +| > $Date: 2006-10-09 16:33:46 +0100 (Mon, 09 Oct 2006) $ +| > $Revision: 622 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Admin "welcome" screen functions @@ -37,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -84,21 +74,27 @@ class ad_index $sm_install = 1; } - if ( @file_exists( ROOT_PATH . 'install/install.lock' ) ) + if ( @file_exists( ROOT_PATH . 'install/installfiles/lock.php' ) ) { $lock_file = 1; } - - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) + if ( @file_exists( ROOT_PATH . 'upgrade/core/class_installer.php' ) ) { - unset($$k); + define( 'INS_ROOT_PATH', ROOT_PATH.'upgrade/' ); + + require_once ROOT_PATH . 'upgrade/core/class_installer.php'; + require_once ROOT_PATH . 'upgrade/custom/app.php'; + + $upgrade = new application_installer(); + $upgrade->ipsclass =& $this->ipsclass; + + $upgrade->get_version_latest(); + + if( $upgrade->last_poss_id > $upgrade->current_version ) + { + $unfinished_upgrade = 1; + } } //----------------------------------------- @@ -111,14 +107,14 @@ class ad_index // continue... //----------------------------------------- - $this->ipsclass->admin->page_title = "Добро пожаловать в админцентр вашего Invision Power Board"; + $this->ipsclass->admin->page_title = "Welcome to the Invision Power Board Administration CP"; $this->ipsclass->admin->page_detail = ""; //----------------------------------------- // PHP INFO? //----------------------------------------- - if ( $this->ipsclass->input['phpinfo'] ) + if ( isset($this->ipsclass->input['phpinfo']) AND $this->ipsclass->input['phpinfo'] ) { @ob_start(); phpinfo(); @@ -135,6 +131,14 @@ class ad_index $php_body = str_replace( "%3B", "
    " , $php_body ); # PREVENT WRAP: Serialized array string cookies $php_body = str_replace( ";i:", ";
    i:" , $php_body ); + # PREVENT WRAP: LS_COLORS env + $php_body = str_replace( ":*.", "
    :*." , $php_body ); + # PREVENT WRAP: PATH env + $php_body = str_replace( "bin:/", "bin
    :/" , $php_body ); + # PREVENT WRAP: Cookie %2C split + $php_body = str_replace( "%2C", "%2C
    " , $php_body ); + #PREVENT WRAP: Cookie , split + $php_body = preg_replace( "#,(\d+),#", ",
    \\1," , $php_body ); $php_style = ""; @header("Content-type: text/html"); - print "Предпросмотр$css_text$table \n"; + print "Preview$css_text$table \n"; print str_replace( $macro_orig, $macro_repl, $this->convert_tags($template['section_content']) ); exit(); diff --git a/upload/sources/action_admin/rssexport.php b/upload/sources/action_admin/rssexport.php index e0b8df41..5e797677 100644 --- a/upload/sources/action_admin/rssexport.php +++ b/upload/sources/action_admin/rssexport.php @@ -2,27 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2005-12-06 17:36:43 +0000 (Tue, 06 Dec 2005) $ -| > $Revision: 94 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Components Functions @@ -33,7 +24,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -53,6 +44,7 @@ class ad_rssexport function auto_run() { + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'RSS Export Manager' ); $this->html = $this->ipsclass->acp_load_template('cp_skin_rss'); switch($this->ipsclass->input['code']) @@ -120,7 +112,7 @@ class ad_rssexport if ( ! $rss_export_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->rssexport_overview(); return; } @@ -153,6 +145,12 @@ class ad_rssexport $this->ipsclass->cache['rss_export'] = array(); + //-------------------------------------------- + // Load skin + //-------------------------------------------- + + $this->ipsclass->load_skin(); + //-------------------------------------------- // Go loopy //-------------------------------------------- @@ -219,6 +217,10 @@ class ad_rssexport 'ttl' => $row['rss_export_cache_time'] ) ); + $class_rss->create_add_image( $channel_id, array( 'title' => $row['rss_export_title'], + 'url' => $row['rss_export_image'], + 'link' => $this->ipsclass->vars['board_url'].'/index.php' ) ); + //-------------------------------------------- // Loop through topics and display //-------------------------------------------- @@ -243,9 +245,9 @@ class ad_rssexport if ( is_array( $this->ipsclass->skin['_macros'] ) ) { - foreach( $this->ipsclass->skin['_macros'] as $i => $rowm ) + foreach( $this->ipsclass->skin['_macros'] as $rowm ) { - if ( $row['macro_value'] != "" ) + if ( isset($row['macro_value']) AND $row['macro_value'] != "" ) { $topic['post'] = str_replace( "<{".$rowm['macro_value']."}>", $rowm['macro_replace'], $topic['post'] ); } @@ -266,16 +268,21 @@ class ad_rssexport $topic['post'] = str_replace( "<#IMG_DIR#>", $this->ipsclass->skin['_imagedir'], $topic['post'] ); $topic['post'] = str_replace( "<#EMO_DIR#>", $this->ipsclass->skin['_emodir'] , $topic['post'] ); + $topic['last_poster_name'] = $topic['last_poster_name'] ? $topic['last_poster_name'] : 'Guest'; + $topic['starter_name'] = $topic['starter_name'] ? $topic['starter_name'] : 'Guest'; + //----------------------------------------- // Add item //----------------------------------------- - $class_rss->create_add_item( $channel_id, array( 'title' => $topic['title'], - 'link' => $this->ipsclass->vars['board_url'].'/index.php?showtopic='.$topic['tid'], - 'description' => $topic['post'],//$topic['description'], + $class_rss->create_add_item( $channel_id, array( 'title' => $topic['title'], + 'link' => $this->ipsclass->vars['board_url'].'/index.php?showtopic='.$topic['tid'], + 'description' => $topic['post'],//$topic['description'], // 'content:encoded' => $topic['post'], - 'pubDate' => $class_rss->rss_unix_to_rfc( $topic['start_date'] ), - 'guid' => $topic['tid'] + 'starter' => $topic['starter_name'], + 'poster' => $topic['last_poster_name'], + 'pubDate' => $class_rss->rss_unix_to_rfc( $topic['start_date'] ), + 'guid' => $topic['tid'] ) ); } @@ -309,7 +316,7 @@ class ad_rssexport if ( $return ) { - $this->ipsclass->main_msg = "Экспорт RSS, кеш пересчитан"; + $this->ipsclass->main_msg = "RSS Export(s) Re-cached"; $this->rssexport_overview(); return; } @@ -339,7 +346,7 @@ class ad_rssexport if ( ! $rssstream['rss_export_id'] ) { - $this->ipsclass->main_msg = "Невозможно загрузить строку RSS из базы данных. Возможно ее просто нет."; + $this->ipsclass->main_msg = "Could not load the RSS stream from the database. It maybe missing."; $this->rssexport_overview(); return; } @@ -351,7 +358,7 @@ class ad_rssexport $this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'rss_export', 'where' => 'rss_export_id='.$rss_export_id ) ); $this->rssexport_rebuild_cache( $rss_export_id, 0 ); - $this->ipsclass->main_msg = "Экспорт RSS строки удален."; + $this->ipsclass->main_msg = "RSS Export stream removed."; $this->rssexport_overview(); } @@ -385,7 +392,7 @@ class ad_rssexport { if ( ! $rss_export_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->rssexport_overview(); return; } @@ -393,7 +400,7 @@ class ad_rssexport if ( ! $rss_export_title OR ! $rss_export_count OR ! $rss_export_forums ) { - $this->ipsclass->main_msg = "Вы должны заполнить все поля."; + $this->ipsclass->main_msg = "You must complete the entire form."; $this->rssexport_form( $type ); return; } @@ -419,13 +426,13 @@ class ad_rssexport { $this->ipsclass->DB->do_insert( 'rss_export', $array ); $rss_export_id = 'all'; - $this->ipsclass->main_msg = 'Строка экспорта RSS создана'; + $this->ipsclass->main_msg = 'RSS Export Stream Created'; } else { $this->ipsclass->DB->do_update( 'rss_export', $array, 'rss_export_id='.$rss_export_id ); - $this->ipsclass->main_msg = 'Строка экспорта RSS изменена'; + $this->ipsclass->main_msg = 'RSS Export Stream Edited'; } $this->rssexport_rebuild_cache( $rss_export_id, 0 ); @@ -443,13 +450,13 @@ class ad_rssexport // Init Vars //----------------------------------------- - $rss_export_id = intval($this->ipsclass->input['rss_export_id']); - $dd_sort = array( 0 => array( 'DESC', 'По убыванию (9-0)' ), 1 => array( 'ASC', 'По возрастанию (0-9)' ) ); - $dd_order = array( 0 => array( 'start_date' , 'По дате создания темы' ), - 1 => array( 'last_post' , 'По последнему сообщению' ), - 2 => array( 'views' , 'По кол-ву просмотров' ), - 3 => array( 'starter_id' , 'По последнему автору' ), - 4 => array( 'topic_rating_total', 'По рейтингу' ) ); + $rss_export_id = isset($this->ipsclass->input['rss_export_id']) ? intval($this->ipsclass->input['rss_export_id']) : 0; + $dd_sort = array( 0 => array( 'DESC', 'Descending (9-0)' ), 1 => array( 'ASC', 'Ascending (0-9)' ) ); + $dd_order = array( 0 => array( 'start_date' , 'Topic Start Date' ), + 1 => array( 'last_post' , 'Topic Last Post' ), + 2 => array( 'views' , 'Topic Views' ), + 3 => array( 'starter_id' , 'Topic Starter' ), + 4 => array( 'topic_rating_total', 'Topic Rating' ) ); //----------------------------------------- // Check (please?) @@ -458,8 +465,20 @@ class ad_rssexport if ( $type == 'add' ) { $formcode = 'rssexport_add_save'; - $title = "Создать новую строку экспорта RSS"; - $button = "Создать"; + $title = "Create New RSS Export Stream"; + $button = "Create New RSS Export Stream"; + + $rssstream = array( 'rss_export_id' => 0, + 'rss_export_title' => '', + 'rss_export_forums' => NULL, + 'rss_export_desc' => '', + 'rss_export_image' => '', + 'rss_export_include_post' => 1, + 'rss_export_enabled' => 1, + 'rss_export_count' => '', + 'rss_export_cache_time' => '', + 'rss_export_sort' => '', + 'rss_export_order' => '' ); } else { @@ -467,14 +486,14 @@ class ad_rssexport if ( ! $rssstream['rss_export_id'] ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->rssexport_overview(); return; } $formcode = 'rssexport_edit_save'; - $title = "Редактирование ".$rssstream['rss_export_title']; - $button = "Сохранить изменения"; + $title = "Edit RSS Export Stream ".$rssstream['rss_export_title']; + $button = "Save Changes"; } //------------------------------- @@ -487,7 +506,7 @@ class ad_rssexport $aff = new admin_forum_functions(); $aff->ipsclass =& $this->ipsclass; $dropdown = $aff->ad_forums_forum_list(1); - $rss_export_forums = is_array($_POST['rss_export_forums']) ? implode( ",", $_POST['rss_export_forums'] ) : $rssstream['rss_export_forums']; + $rss_export_forums = ( isset($_POST['rss_export_forums']) AND is_array($_POST['rss_export_forums']) ) ? implode( ",", $_POST['rss_export_forums'] ) : $rssstream['rss_export_forums']; //------------------------------- // Form elements @@ -495,23 +514,23 @@ class ad_rssexport $form = array(); - $form['rss_export_title'] = $this->ipsclass->adskin->form_input( 'rss_export_title' , $this->ipsclass->txt_htmlspecialchars( $_POST['rss_export_title'] ? $_POST['rss_export_title'] : $rssstream['rss_export_title'] ) ); - $form['rss_export_desc'] = $this->ipsclass->adskin->form_input( 'rss_export_desc' , $this->ipsclass->txt_htmlspecialchars( $_POST['rss_export_desc'] ? $_POST['rss_export_desc'] : $rssstream['rss_export_desc'] ) ); - $form['rss_export_image'] = $this->ipsclass->adskin->form_input( 'rss_export_image' , $this->ipsclass->txt_htmlspecialchars( $_POST['rss_export_image'] ? $_POST['rss_export_image'] : $rssstream['rss_export_image'] ) ); - $form['rss_export_include_post'] = $this->ipsclass->adskin->form_yes_no( 'rss_export_include_post' , $_POST['rss_export_include_post'] ? $_POST['rss_export_include_post'] : $rssstream['rss_export_include_post'] ); - $form['rss_export_enabled'] = $this->ipsclass->adskin->form_yes_no( 'rss_export_enabled' , $_POST['rss_export_enabled'] ? $_POST['rss_export_enabled'] : $rssstream['rss_export_enabled'] ); - $form['rss_export_count'] = $this->ipsclass->adskin->form_simple_input( 'rss_export_count' , $_POST['rss_export_count'] ? $_POST['rss_export_count'] : $rssstream['rss_export_count'], 5 ); + $form['rss_export_title'] = $this->ipsclass->adskin->form_input( 'rss_export_title' , $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['rss_export_title']) AND $_POST['rss_export_title'] ) ? $_POST['rss_export_title'] : $rssstream['rss_export_title'] ) ); + $form['rss_export_desc'] = $this->ipsclass->adskin->form_input( 'rss_export_desc' , $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['rss_export_desc']) AND $_POST['rss_export_desc'] ) ? $_POST['rss_export_desc'] : $rssstream['rss_export_desc'] ) ); + $form['rss_export_image'] = $this->ipsclass->adskin->form_input( 'rss_export_image' , $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['rss_export_image']) AND $_POST['rss_export_image'] ) ? $_POST['rss_export_image'] : $rssstream['rss_export_image'] ) ); + $form['rss_export_include_post'] = $this->ipsclass->adskin->form_yes_no( 'rss_export_include_post' , ( isset($_POST['rss_export_include_post']) AND $_POST['rss_export_include_post'] ) ? $_POST['rss_export_include_post'] : $rssstream['rss_export_include_post'] ); + $form['rss_export_enabled'] = $this->ipsclass->adskin->form_yes_no( 'rss_export_enabled' , ( isset($_POST['rss_export_enabled']) AND $_POST['rss_export_enabled'] ) ? $_POST['rss_export_enabled'] : $rssstream['rss_export_enabled'] ); + $form['rss_export_count'] = $this->ipsclass->adskin->form_simple_input( 'rss_export_count' , ( isset($_POST['rss_export_count']) AND $_POST['rss_export_count'] ) ? $_POST['rss_export_count'] : $rssstream['rss_export_count'], 5 ); $form['rss_export_forums'] = $this->ipsclass->adskin->form_multiselect( 'rss_export_forums[]', $dropdown, explode( ",", $rss_export_forums ), 7 ); - $form['rss_export_cache_time'] = $this->ipsclass->adskin->form_simple_input( 'rss_export_cache_time' , $_POST['rss_export_cache_time'] ? $_POST['rss_export_cache_time'] : $rssstream['rss_export_cache_time'], 5 ); - $form['rss_export_sort'] = $this->ipsclass->adskin->form_dropdown( 'rss_export_sort' , $dd_sort , $_POST['rss_export_sort'] ? $_POST['rss_export_sort'] : $rssstream['rss_export_sort'] ); - $form['rss_export_order'] = $this->ipsclass->adskin->form_dropdown( 'rss_export_order', $dd_order, $_POST['rss_export_order'] ? $_POST['rss_export_order'] : $rssstream['rss_export_order'] ); + $form['rss_export_cache_time'] = $this->ipsclass->adskin->form_simple_input( 'rss_export_cache_time' , ( isset($_POST['rss_export_cache_time']) AND $_POST['rss_export_cache_time'] ) ? $_POST['rss_export_cache_time'] : $rssstream['rss_export_cache_time'], 5 ); + $form['rss_export_sort'] = $this->ipsclass->adskin->form_dropdown( 'rss_export_sort' , $dd_sort , ( isset($_POST['rss_export_sort']) AND $_POST['rss_export_sort'] ) ? $_POST['rss_export_sort'] : $rssstream['rss_export_sort'] ); + $form['rss_export_order'] = $this->ipsclass->adskin->form_dropdown( 'rss_export_order', $dd_order, ( isset($_POST['rss_export_order']) AND $_POST['rss_export_order'] ) ? $_POST['rss_export_order'] : $rssstream['rss_export_order'] ); $this->ipsclass->html .= $this->html->rss_export_form( $form, $title, $formcode, $button, $rssstream ); - $this->ipsclass->admin->page_title = "Управление экспорта RSS"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять полями RSS."; + $this->ipsclass->admin->page_title = "RSS Export Manager"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your RSS export feeds."; - $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}", "Управление RSS" ); + $this->ipsclass->admin->nav[] = array( '', "Add/Edit RSS Export Stream" ); $this->ipsclass->admin->output(); } @@ -521,8 +540,6 @@ class ad_rssexport function rssexport_overview() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление RSS' ); - //------------------------------- // INIT //------------------------------- @@ -550,8 +567,8 @@ class ad_rssexport $this->ipsclass->html .= $this->html->rss_export_overview( $content ); - $this->ipsclass->admin->page_title = "Управление RSS"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять полями RSS."; + $this->ipsclass->admin->page_title = "RSS Export Manager"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your RSS export feeds."; $this->ipsclass->admin->output(); } diff --git a/upload/sources/action_admin/rssimport.php b/upload/sources/action_admin/rssimport.php index bc225c15..1b6554c5 100644 --- a/upload/sources/action_admin/rssimport.php +++ b/upload/sources/action_admin/rssimport.php @@ -2,26 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2006-01-31 22:47:20 +0000 (Tue, 31 Jan 2006) $ -| > $Revision: 131 $ +| > $Date: 2006-10-11 19:01:38 +0100 (Wed, 11 Oct 2006) $ +| > $Revision: 628 $ | > $Author: bfarber $ +--------------------------------------------------------------------------- | @@ -33,7 +24,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -41,16 +32,19 @@ class ad_rssimport { # Globals var $ipsclass; + var $class_rss; - var $perm_main = 'content'; - var $perm_child = 'rssimport'; + var $perm_main = 'content'; + var $perm_child = 'rssimport'; - var $use_sockets = 1; + var $use_sockets = 1; var $func_mod; var $classes_loaded = 0; var $import_count = 0; + var $validate_msg = array(); + /*-------------------------------------------------------------------------*/ // Main handler /*-------------------------------------------------------------------------*/ @@ -58,6 +52,7 @@ class ad_rssimport function auto_run() { $this->html = $this->ipsclass->acp_load_template('cp_skin_rss'); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'RSS Import Manager' ); //-------------------------------------------- // Load classes @@ -77,6 +72,11 @@ class ad_rssimport $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->rssimport_overview(); break; + + case 'rssimport_validate': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); + $this->rssimport_validate( 1 ); + break; case 'rssimport_add': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':add' ); @@ -144,7 +144,7 @@ class ad_rssimport if ( ! $rssstream['rss_import_id'] ) { - $this->ipsclass->main_msg = "Невозможно загрузить строку RSS из базы данных. Возможно, ее просто нет."; + $this->ipsclass->main_msg = "Could not load the RSS stream from the database. It maybe missing."; $this->rssimport_overview(); return; } @@ -155,7 +155,7 @@ class ad_rssimport $this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'rss_import', 'where' => 'rss_import_id='.$rss_import_id ) ); - $this->ipsclass->main_msg = "Испорт RSS строки удален"; + $this->ipsclass->main_msg = "RSS Import stream removed."; $this->rssimport_overview(); } @@ -181,7 +181,7 @@ class ad_rssimport if ( ! $rssstream['rss_import_id'] ) { - $this->ipsclass->main_msg = "Невозможно загрузить строку RSS из базы данных. Возможно, ее просто нет."; + $this->ipsclass->main_msg = "Could not load the RSS stream from the database. It maybe missing."; $this->rssimport_overview(); return; } @@ -211,7 +211,7 @@ class ad_rssimport { if ( $return ) { - $this->ipsclass->main_msg = "Нельзя определить место расположение тем для удаления"; + $this->ipsclass->main_msg = "Could not locate any topics to delete"; $this->rssimport_overview(); return; } @@ -234,7 +234,7 @@ class ad_rssimport $this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'rss_imported', 'where' => 'rss_imported_tid IN('.implode(',',$remove_tids).')' ) ); - $this->ipsclass->main_msg = intval(count($remove_tids))." тем удалено."; + $this->ipsclass->main_msg = intval(count($remove_tids))." topics removed."; $this->rssimport_overview(); } @@ -256,7 +256,7 @@ class ad_rssimport if ( ! $rss_import_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->rssimport_overview(); return; } @@ -269,7 +269,7 @@ class ad_rssimport if ( ! $rssstream['rss_import_id'] ) { - $this->ipsclass->main_msg = "Невозможно загрузить строку RSS из базы данных. Возможно, ее просто нет."; + $this->ipsclass->main_msg = "Could not load the RSS stream from the database. It maybe missing."; $this->rssimport_overview(); return; } @@ -286,7 +286,7 @@ class ad_rssimport if ( $article_count['cnt'] < 1 ) { - $this->ipsclass->main_msg = "Импорт RSS строки '{$rssstream['rss_import_title']}' не был произведен."; + $this->ipsclass->main_msg = "The RSS Import Stream '{$rssstream['rss_import_title']}' has no imported articles to remove."; $this->rssimport_overview(); return; } @@ -297,13 +297,11 @@ class ad_rssimport $this->ipsclass->html .= $this->html->rss_import_remove_articles_form( $rssstream, intval($article_count['cnt']) ); - $this->ipsclass->admin->page_title = "Управление импортом RSS"; - $this->ipsclass->admin->page_detail = "В этой секции вы можете удалять уже созданные статьи."; + $this->ipsclass->admin->page_title = "RSS Import Manager"; + $this->ipsclass->admin->page_detail = "This section will allow you to remove already posted articles."; - $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}", "Управление импортом RSS" ); + $this->ipsclass->admin->nav[] = array( '', "Remove RSS Articles" ); $this->ipsclass->admin->output(); - - } /*-------------------------------------------------------------------------*/ @@ -334,7 +332,7 @@ class ad_rssimport if ( ! $rss_import_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->rssimport_overview(); return; } @@ -382,7 +380,7 @@ class ad_rssimport //----------------------------------------- require_once( ROOT_PATH."sources/classes/class_email.php" ); - $this->email = new emailer(); + $this->email = new emailer( ROOT_PATH ); $this->email->ipsclass =& $this->ipsclass; $this->email->email_init(); @@ -397,8 +395,6 @@ class ad_rssimport $this->parser->ipsclass =& $this->ipsclass; $this->parser->allow_update_caches = 0; - $this->parser->bypass_badwords = intval($this->ipsclass->member['g_bypass_badwords']); - //-------------------------------------------- // Not loaded the func? //-------------------------------------------- @@ -417,7 +413,7 @@ class ad_rssimport // Init forums if not already done so //-------------------------------------------- - if ( ! is_array( $this->ipsclass->forum_by_id ) ) + if ( ! is_array( $this->ipsclass->forums->forum_by_id ) OR !count( $this->ipsclass->forums->forum_by_id ) ) { $this->ipsclass->forums->forums_init(); } @@ -431,35 +427,31 @@ class ad_rssimport while( $row = $this->ipsclass->DB->fetch_row( $outer ) ) { - if ( $rss_import_id == 'all' OR $row['rss_import_id'] == $rss_import_id OR ( $id_is_array ==1 AND in_array( $row['rss_import_id'], $rss_import_ids ) ) ) + if ( $rss_import_id == 'all' OR $row['rss_import_id'] == $rss_import_id OR ( $id_is_array == 1 AND in_array( $row['rss_import_id'], $rss_import_ids ) ) ) { // Skip non-existent forums - bad stuff happens - if( !array_key_exists( $row['rss_import_forum_id'], $this->ipsclass->cache['forum_cache'] ) ) + if ( !array_key_exists( $row['rss_import_forum_id'], $this->ipsclass->cache['forum_cache'] ) ) { continue; } + //----------------------------------------- + // Allowing badwords? + //----------------------------------------- + + $this->parser->bypass_badwords = $row['rss_import_allow_html']; + //-------------------------------------------- // Set this import's doctype //-------------------------------------------- - $supported_encodings = array( 'utf-8', 'iso-8859-1', 'us-ascii' ); + $this->class_rss->doc_type = $this->ipsclass->vars['gb_char_set']; + $this->class_rss->feed_charset = $row['rss_import_charset']; - if( in_array( strtolower($this->ipsclass->vars['gb_char_set']), $supported_encodings ) ) - { - $this->class_rss->doc_type = $this->ipsclass->vars['gb_char_set']; - } - else - { - $this->class_rss->doc_type = 'UTF-8'; - } - - if( strtolower($row['rss_import_charset']) != $this->class_rss->doc_type ) + if( strtolower($row['rss_import_charset']) != $this->ipsclass->vars['gb_char_set'] ) { $this->class_rss->convert_charset = 1; - $this->class_rss->feed_charset = $row['rss_import_charset']; - $this->class_rss->destination_charset = $this->class_rss->doc_type; } else { @@ -468,14 +460,16 @@ class ad_rssimport //-------------------------------------------- // Set this import's authentication - //-------------------------------------------- - $this->class_rss->auth_req = $row['rss_import_auth']; + //-------------------------------------------- + + $this->class_rss->auth_req = $row['rss_import_auth']; $this->class_rss->auth_user = $row['rss_import_auth_user']; $this->class_rss->auth_pass = $row['rss_import_auth_pass']; //-------------------------------------------- // Clear RSS object's error cache first //-------------------------------------------- + $this->class_rss->errors = array(); $this->class_rss->rss_items = array(); @@ -507,7 +501,7 @@ class ad_rssimport if ( ! is_array( $this->class_rss->rss_channels ) or ! count( $this->class_rss->rss_channels ) ) { - $rss_error[] = "Нельзя открыть {$row['rss_import_url']} для локальных каналов."; + $rss_error[] = "Could not open {$row['rss_import_url']} to locate channels."; continue; } @@ -530,7 +524,7 @@ class ad_rssimport if ( ! is_array( $this->class_rss->rss_items ) or ! count( $this->class_rss->rss_items ) ) { - $rss_error[] = "{$row['rss_import_url']} – нет предметов для импорта"; + $rss_error[] = "{$row['rss_import_url']} has no items to import"; continue; } @@ -538,7 +532,7 @@ class ad_rssimport { if ( is_array( $this->class_rss->rss_items[ $channel_id ] ) and count ($this->class_rss->rss_items[ $channel_id ] ) ) { - foreach( $this->class_rss->rss_items[ $channel_id ] as $item_id => $item_data ) + foreach( $this->class_rss->rss_items[ $channel_id ] as $item_data ) { $item_data['content'] = $item_data['content'] ? $item_data['content'] : $item_data['description']; $item_data['guid'] = md5( $item_data['guid'] ? $item_data['guid'] : preg_replace( "#\s|\r|\n#is", "", $item_data['title'].$item_data['link'].$item_data['description'] ) ); @@ -550,17 +544,8 @@ class ad_rssimport if ( $row['rss_import_charset'] AND ( strtolower($row['rss_import_charset']) != strtolower($this->class_rss->doc_type) ) ) { - if ( ! is_object( $this->class_convert_charset ) ) - { - require_once( IPS_CLASSES_PATH.'/class_convert_charset.php' ); - $this->class_convert_charset = new class_convert_charset(); - } - - $item_data['title'] = $this->class_convert_charset->convert_charset( $item_data['title'], $this->class_rss->doc_type, $row['rss_import_charset'] ); - $item_data['content'] = $this->class_convert_charset->convert_charset( $item_data['content'], $this->class_rss->doc_type, $row['rss_import_charset'] ); - - //$item_data['title'] = $this->ipsclass->txt_convert_charsets( $item_data['title'], strtolower($row['rss_import_charset']) ); - //$item_data['content'] = $this->ipsclass->txt_convert_charsets( $item_data['content'], strtolower($row['rss_import_charset']) ); + $item_data['title'] = $this->ipsclass->txt_convert_charsets( $item_data['title'], $this->class_rss->doc_type ); + $item_data['content'] = $this->ipsclass->txt_convert_charsets( $item_data['content'], $this->class_rss->doc_type ); } //-------------------------------------------- @@ -579,7 +564,7 @@ class ad_rssimport if ( ! $item_data['title'] OR ! $item_data['content'] ) { - $rss_error[] = "Пропущено: '{$item_data['title']}' - нет названия или содержания"; + $rss_error[] = "Skipping '{$item_data['title']}' no title or content"; continue; } @@ -596,7 +581,7 @@ class ad_rssimport if ( ! count( $check_guids ) ) { - $rss_error[] = "Нет RSS записей для импортирования!"; + $rss_error[] = "No RSS items to import"; continue; } @@ -668,7 +653,7 @@ class ad_rssimport // Figure out MID //-------------------------------------------- - $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'id, name, members_display_name', 'from' => 'members', 'where' => "id={$row['rss_import_mid']}" ) ); + $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'id, name, members_display_name, ip_address', 'from' => 'members', 'where' => "id={$row['rss_import_mid']}" ) ); if ( ! $member['id'] ) { @@ -681,17 +666,18 @@ class ad_rssimport $affected_forum_ids[] = $row['rss_import_forum_id']; - foreach( $final_items as $date => $topic_item ) + foreach( $final_items as $topic_item ) { # Fix & $topic_item['title'] = str_replace( '&', '&', $topic_item['title'] ); + $topic_item['title'] = strip_tags( $topic_item['title'] ); $topic_item['title'] = $this->ipsclass->parse_clean_value( $topic_item['title'] ); # Fix up &reg; $topic_item['title'] = str_replace( '&reg;', '®', $topic_item['title'] ); $topic = array( - 'title' => str_replace( ' ', ' ', str_replace( '&nbsp;', ' ', $row['rss_import_topic_pre'] ) ) . $topic_item['title'], + 'title' => str_replace( ' ', ' ', str_replace( '&nbsp;', ' ', $row['rss_import_topic_pre'] ) ) .' '. $topic_item['title'], 'description' => '' , 'state' => $row['rss_import_topic_open'] ? 'open' : 'closed', 'posts' => 0, @@ -757,7 +743,7 @@ class ad_rssimport 'author_id' => $member['id'], 'use_sig' => 1, 'use_emo' => 1, - 'ip_address' => $this->ipsclass->ip_address, + 'ip_address' => $member['ip_address'], 'post_date' => $topic_item['unixdate'], 'icon_id' => 0, 'post' => $post_content, @@ -816,7 +802,7 @@ class ad_rssimport // Are we tracking this forum? If so generate some mailies - yay! //----------------------------------------- - $this->post->forum_tracker( $row['rss_import_forum_id'], $topic['tid'], $topic['title'], $this->ipsclass->forum->forum_by_id[ $row['rss_import_forum_id'] ], $post['post'] ); + $this->post->forum_tracker( $row['rss_import_forum_id'], $topic['tid'], $topic['title'], $this->ipsclass->cache['forum_cache'][ $row['rss_import_forum_id'] ], $post['post'] ); $this->import_count++; @@ -824,7 +810,7 @@ class ad_rssimport // Increment user? //-------------------------------------------- - if ( $row['rss_import_inc_pcount'] AND $this->ipsclass->forums->forum_by_id[ $row['rss_import_forum_id'] ]['inc_postcount'] ) + if ( $row['rss_import_inc_pcount'] AND $this->ipsclass->cache['forum_cache'][ $row['rss_import_forum_id'] ]['inc_postcount'] ) { if ( ! $affected_members[ $member['id'] ] OR $affected_members[ $member['id'] ] < 0 ) { @@ -859,7 +845,7 @@ class ad_rssimport if ( is_array( $affected_forum_ids ) and count( $affected_forum_ids ) ) { - foreach( $affected_forum_ids as $i => $fid ) + foreach( $affected_forum_ids as $fid ) { $this->func_mod->forum_recount( $fid ); } @@ -873,7 +859,7 @@ class ad_rssimport if ( $return ) { - $this->ipsclass->main_msg = "Импорт RSS, кеш пересчитан"; + $this->ipsclass->main_msg = "RSS Import(s) Re-cached"; if ( count( $rss_error ) ) { @@ -895,6 +881,22 @@ class ad_rssimport function rssimport_save($type='add') { + //-------------------------------------------- + // Do we want to validate? + //-------------------------------------------- + + if( isset($this->ipsclass->input['rssimport_validate']) AND $this->ipsclass->input['rssimport_validate'] ) + { + $this->rssimport_validate(); + + if( count($this->validate_msg) ) + { + $this->ipsclass->main_msg = "Validation Results for ".$this->ipsclass->txt_stripslashes( trim( $_POST['rss_import_url'] ) )."
     ·".implode( "
     ·", $this->validate_msg ); + $this->rssimport_form( $type ); + return; + } + } + //-------------------------------------------- // INIT //-------------------------------------------- @@ -915,8 +917,8 @@ class ad_rssimport $rss_import_charset = $this->ipsclass->input['rss_import_charset']; $rss_import_allow_html = intval($this->ipsclass->input['rss_import_allow_html']); $rss_import_auth = intval($this->ipsclass->input['rss_import_auth']); - $rss_import_auth_user = trim($this->ipsclass->input['rss_import_auth_user']) ? trim($this->ipsclass->input['rss_import_auth_user']) : 'Не требуется'; - $rss_import_auth_pass = trim($this->ipsclass->input['rss_import_auth_pass']) ? trim($this->ipsclass->input['rss_import_auth_pass']) : 'Не требуется'; + $rss_import_auth_user = trim($this->ipsclass->input['rss_import_auth_user']) ? trim($this->ipsclass->input['rss_import_auth_user']) : 'Not Needed'; + $rss_import_auth_pass = trim($this->ipsclass->input['rss_import_auth_pass']) ? trim($this->ipsclass->input['rss_import_auth_pass']) : 'Not Needed'; $rss_error = array(); @@ -928,7 +930,7 @@ class ad_rssimport { if ( ! $rss_import_id ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->rssimport_overview(); return; } @@ -936,20 +938,11 @@ class ad_rssimport if ( ! $rss_import_title OR ! $rss_import_url OR ! $rss_import_pergo OR ! $rss_import_forum_id OR ! $rss_import_mid ) { - $this->ipsclass->main_msg = "Вы должны заполнить все поля."; + $this->ipsclass->main_msg = "You must complete the entire form."; $this->rssimport_form( $type ); return; } - /* - No longer needed due to the advanced charset support now - if( strtolower($rss_import_charset) != 'utf-8' && strtolower($rss_import_charset) != 'iso-8859-1' && strtolower($rss_import_charset) != 'us-ascii' ) - { - $this->ipsclass->main_msg = "Только кодировки UTF-8, ISO-8859-1 и US-ASCII поддерживаются RSS лентами."; - $this->rssimport_form( $type ); - return; - } - */ - //-------------------------------------------- // Load classes //-------------------------------------------- @@ -988,8 +981,9 @@ class ad_rssimport //-------------------------------------------- // Set this import's authentication - //-------------------------------------------- - $this->class_rss->auth_req = $rss_import_auth; + //-------------------------------------------- + + $this->class_rss->auth_req = $rss_import_auth; $this->class_rss->auth_user = $rss_import_auth_user; $this->class_rss->auth_pass = $rss_import_auth_pass; @@ -1014,7 +1008,7 @@ class ad_rssimport if ( ! is_array( $this->class_rss->rss_channels ) or ! count( $this->class_rss->rss_channels ) ) { - $rss_error[] = "Нельзя открыть $rss_import_url для локальных каналов."; + $rss_error[] = "Could not open $rss_import_url to locate channels."; } if ( is_array( $rss_error ) AND count( $rss_error ) ) @@ -1028,11 +1022,11 @@ class ad_rssimport // Figure out MID //-------------------------------------------- - $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'id, name', 'from' => 'members', 'where' => "LOWER(members_display_name)='{$rss_import_mid}'" ) ); + $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'id, name', 'from' => 'members', 'where' => "members_l_display_name='{$rss_import_mid}'" ) ); - if ( ! $member['id'] ) + if ( !isset($member['id']) OR !$member['id'] ) { - $this->ipsclass->main_msg = "Нельзя найти пользователя: '{$rss_import_mid}'"; + $this->ipsclass->main_msg = "We could not find a member called '{$rss_import_mid}'"; $this->rssimport_form( $type ); return; } @@ -1047,16 +1041,16 @@ class ad_rssimport $this->ipsclass->forums->forums_init(); - if ( ! $this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ] ) + if ( !isset($this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ]) OR !$this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ] ) { - $this->ipsclass->main_msg = "Выбранный форум для импорта не существует"; + $this->ipsclass->main_msg = "The selected forum to import into doesn't exist"; $this->rssimport_form( $type ); return; } if ( $this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ]['sub_can_post'] != 1 OR $this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ]['redirect_on'] == 1 ) { - $this->ipsclass->main_msg = "Выбранный форум для импорта не может принять темы."; + $this->ipsclass->main_msg = "The selected forum to import into isn't capable of receiving topics."; $this->rssimport_form( $type ); return; } @@ -1089,13 +1083,13 @@ class ad_rssimport if ( $type == 'add' ) { $this->ipsclass->DB->do_insert( 'rss_import', $array ); - $this->ipsclass->main_msg = 'Создана строка RSS импорта'; + $this->ipsclass->main_msg = 'RSS Import Stream Created'; $rss_import_id = $this->ipsclass->DB->get_insert_id(); } else { $this->ipsclass->DB->do_update( 'rss_import', $array, 'rss_import_id='.$rss_import_id ); - $this->ipsclass->main_msg = 'Строка RSS импорта отредактирована'; + $this->ipsclass->main_msg = 'RSS Import Stream Edited'; } if( $rss_import_enabled ) @@ -1116,7 +1110,7 @@ class ad_rssimport // Init Vars //----------------------------------------- - $rss_import_id = intval($this->ipsclass->input['rss_import_id']); + $rss_import_id = isset($this->ipsclass->input['rss_import_id']) ? intval($this->ipsclass->input['rss_import_id']) : 0; //------------------------------- // Build forums drop down @@ -1136,9 +1130,26 @@ class ad_rssimport if ( $type == 'add' ) { $formcode = 'rssimport_add_save'; - $title = "Создать строку RSS импорта"; - $button = "Создать"; - $rsstream = array( 'rss_import_topic_open' => 1, 'rss_import_enabled' => 1, 'rss_import_showlink' => '[url={url}]Просмотреть полную версию[/url]' ); + $title = "Create New RSS Import Stream"; + $button = "Create New RSS Import Stream"; + $rssstream = array( 'rss_import_topic_open' => 1, + 'rss_import_enabled' => 1, + 'rss_import_showlink' => '[url={url}]View the full article[/url]', + 'rss_import_title' => '', + 'rss_import_url' => '', + 'rss_import_forum_id' => 0, + 'rss_import_mid' => '', + 'rss_import_pergo' => 10, + 'rss_import_time' => '200', + 'rss_import_topic_hide' => 0, + 'rss_import_inc_pcount' => 1, + 'rss_import_topic_pre' => '', + 'rss_import_charset' => '', + 'rss_import_allow_html' => 0, + 'rss_import_auth' => NULL, + 'rss_import_auth_user' => NULL, + 'rss_import_auth_pass' => NULL, + 'rss_import_id' => 0 ); } else { @@ -1146,7 +1157,7 @@ class ad_rssimport if ( ! $rssstream['rss_import_id'] ) { - $this->ipsclass->main_msg = "Не один ID не выбран, повторите попытку заново."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->rssimport_overview(); return; } @@ -1163,8 +1174,8 @@ class ad_rssimport } $formcode = 'rssimport_edit_save'; - $title = "Редактирование: ".$rssstream['rss_import_title']; - $button = "Сохранить изменения"; + $title = "Edit RSS Import Stream ".$rssstream['rss_import_title']; + $button = "Save Changes"; } //------------------------------- @@ -1173,26 +1184,26 @@ class ad_rssimport $form = array(); - $form['rss_import_title'] = $this->ipsclass->adskin->form_input( 'rss_import_title' , $_POST['rss_import_title'] ? stripslashes($_POST['rss_import_title']) : $rssstream['rss_import_title'] ); - $form['rss_import_enabled'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_enabled' , $_POST['rss_import_enabled'] ? $_POST['rss_import_enabled'] : $rssstream['rss_import_enabled'] ); - $form['rss_import_url'] = $this->ipsclass->adskin->form_input( 'rss_import_url' , $_POST['rss_import_url'] ? $_POST['rss_import_url'] : $rssstream['rss_import_url'] ); - $form['rss_import_forum_id'] = $this->ipsclass->adskin->form_dropdown( 'rss_import_forum_id' , $forum_dropdown, $_POST['rss_import_forum_id'] ? $_POST['rss_import_forum_id'] : $rssstream['rss_import_forum_id'] ); - $form['rss_import_mid'] = $this->ipsclass->adskin->form_input( 'rss_import_mid' , $_POST['rss_import_mid'] ? $_POST['rss_import_mid'] : $rssstream['rss_import_mid'] ); - $form['rss_import_pergo'] = $this->ipsclass->adskin->form_simple_input( 'rss_import_pergo' , $_POST['rss_import_pergo'] ? $_POST['rss_import_pergo'] : $rssstream['rss_import_pergo'], 5 ); - $form['rss_import_time'] = $this->ipsclass->adskin->form_simple_input( 'rss_import_time' , $_POST['rss_import_time'] ? $_POST['rss_import_time'] : $rssstream['rss_import_time'], 5 ); - $form['rss_import_showlink'] = $this->ipsclass->adskin->form_input( 'rss_import_showlink' , $_POST['rss_import_showlink'] ? htmlspecialchars($_POST['rss_import_showlink']) : htmlspecialchars($rssstream['rss_import_showlink']) ); - $form['rss_import_topic_open'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_topic_open' , $_POST['rss_import_topic_open'] ? $_POST['rss_import_topic_open'] : $rssstream['rss_import_topic_open'] ); - $form['rss_import_topic_hide'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_topic_hide' , $_POST['rss_import_topic_hide'] ? $_POST['rss_import_topic_hide'] : $rssstream['rss_import_topic_hide'] ); - $form['rss_import_inc_pcount'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_inc_pcount' , $_POST['rss_import_inc_pcount'] ? $_POST['rss_import_inc_pcount'] : $rssstream['rss_import_inc_pcount'] ); - $form['rss_import_topic_pre'] = $this->ipsclass->adskin->form_input( 'rss_import_topic_pre' , $_POST['rss_import_topic_pre'] ? $_POST['rss_import_topic_pre'] : $rssstream['rss_import_topic_pre'] ); - $form['rss_import_charset'] = $this->ipsclass->adskin->form_input( 'rss_import_charset' , $_POST['rss_import_charset'] ? $_POST['rss_import_charset'] : $rssstream['rss_import_charset'] ); - $form['rss_import_allow_html'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_allow_html' , $_POST['rss_import_allow_html'] ? $_POST['rss_import_allow_html'] : $rssstream['rss_import_allow_html'] ); + $form['rss_import_title'] = $this->ipsclass->adskin->form_input( 'rss_import_title' , ( isset($_POST['rss_import_title']) AND $_POST['rss_import_title'] ) ? stripslashes($_POST['rss_import_title']) : $rssstream['rss_import_title'] ); + $form['rss_import_enabled'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_enabled' , ( isset($_POST['rss_import_enabled']) AND $_POST['rss_import_enabled'] ) ? $_POST['rss_import_enabled'] : $rssstream['rss_import_enabled'] ); + $form['rss_import_url'] = $this->ipsclass->adskin->form_input( 'rss_import_url' , ( isset($_POST['rss_import_url']) AND $_POST['rss_import_url'] ) ? $_POST['rss_import_url'] : $rssstream['rss_import_url'] ); + $form['rss_import_forum_id'] = $this->ipsclass->adskin->form_dropdown( 'rss_import_forum_id' , $forum_dropdown, ( isset($_POST['rss_import_forum_id']) AND $_POST['rss_import_forum_id'] ) ? $_POST['rss_import_forum_id'] : $rssstream['rss_import_forum_id'] ); + $form['rss_import_mid'] = $this->ipsclass->adskin->form_input( 'rss_import_mid' , ( isset($_POST['rss_import_mid']) AND $_POST['rss_import_mid'] ) ? $_POST['rss_import_mid'] : $rssstream['rss_import_mid'], 'text', "id='rss_import_mid'" ); + $form['rss_import_pergo'] = $this->ipsclass->adskin->form_simple_input( 'rss_import_pergo' , ( isset($_POST['rss_import_pergo']) AND $_POST['rss_import_pergo'] ) ? $_POST['rss_import_pergo'] : $rssstream['rss_import_pergo'], 5 ); + $form['rss_import_time'] = $this->ipsclass->adskin->form_simple_input( 'rss_import_time' , ( isset($_POST['rss_import_time']) AND $_POST['rss_import_time'] ) ? $_POST['rss_import_time'] : $rssstream['rss_import_time'], 5 ); + $form['rss_import_showlink'] = $this->ipsclass->adskin->form_input( 'rss_import_showlink' , ( isset($_POST['rss_import_showlink']) AND $_POST['rss_import_showlink'] ) ? htmlspecialchars($_POST['rss_import_showlink']) : htmlspecialchars($rssstream['rss_import_showlink']) ); + $form['rss_import_topic_open'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_topic_open' , ( isset($_POST['rss_import_topic_open']) AND $_POST['rss_import_topic_open'] ) ? $_POST['rss_import_topic_open'] : $rssstream['rss_import_topic_open'] ); + $form['rss_import_topic_hide'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_topic_hide' , ( isset($_POST['rss_import_topic_hide']) AND $_POST['rss_import_topic_hide'] ) ? $_POST['rss_import_topic_hide'] : $rssstream['rss_import_topic_hide'] ); + $form['rss_import_inc_pcount'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_inc_pcount' , ( isset($_POST['rss_import_inc_pcount']) AND $_POST['rss_import_inc_pcount'] ) ? $_POST['rss_import_inc_pcount'] : $rssstream['rss_import_inc_pcount'] ); + $form['rss_import_topic_pre'] = $this->ipsclass->adskin->form_input( 'rss_import_topic_pre' , ( isset($_POST['rss_import_topic_pre']) AND $_POST['rss_import_topic_pre'] ) ? $_POST['rss_import_topic_pre'] : $rssstream['rss_import_topic_pre'] ); + $form['rss_import_charset'] = $this->ipsclass->adskin->form_input( 'rss_import_charset' , ( isset($_POST['rss_import_charset']) AND $_POST['rss_import_charset'] ) ? $_POST['rss_import_charset'] : $rssstream['rss_import_charset'] ); + $form['rss_import_allow_html'] = $this->ipsclass->adskin->form_yes_no( 'rss_import_allow_html' , ( isset($_POST['rss_import_allow_html']) AND $_POST['rss_import_allow_html'] ) ? $_POST['rss_import_allow_html'] : $rssstream['rss_import_allow_html'] ); $form['rss_import_auth'] = $this->ipsclass->adskin->form_checkbox( 'rss_import_auth' , - $_POST['rss_import_auth'] ? $_POST['rss_import_auth'] : $rssstream['rss_import_auth'], + ( isset($_POST['rss_import_auth']) AND $_POST['rss_import_auth'] ) ? $_POST['rss_import_auth'] : $rssstream['rss_import_auth'], '1', array( 0 => 'onclick="enable_auth_boxes()"', 1 => 'id="rss_import_auth"' ) ); - $auth_checked = $_POST['rss_import_auth'] ? $_POST['rss_import_auth'] : $rssstream['rss_import_auth']; + $auth_checked = ( isset($_POST['rss_import_auth']) AND $_POST['rss_import_auth'] ) ? $_POST['rss_import_auth'] : $rssstream['rss_import_auth']; if( !$auth_checked ) { $form['rss_div_show'] = "style='display:none;'"; @@ -1202,15 +1213,15 @@ class ad_rssimport $form['rss_div_show'] = "style='display:;'"; } - $form['rss_import_auth_user'] = $this->ipsclass->adskin->form_input( 'rss_import_auth_user' , $_POST['rss_import_auth_user'] ? $_POST['rss_import_auth_user'] : $rssstream['rss_import_auth_user'] ); - $form['rss_import_auth_pass'] = $this->ipsclass->adskin->form_input( 'rss_import_auth_pass' , $_POST['rss_import_auth_pass'] ? $_POST['rss_import_auth_pass'] : $rssstream['rss_import_auth_pass'] ); + $form['rss_import_auth_user'] = $this->ipsclass->adskin->form_input( 'rss_import_auth_user' , ( isset($_POST['rss_import_auth_user']) AND $_POST['rss_import_auth_user'] ) ? $_POST['rss_import_auth_user'] : $rssstream['rss_import_auth_user'] ); + $form['rss_import_auth_pass'] = $this->ipsclass->adskin->form_input( 'rss_import_auth_pass' , ( isset($_POST['rss_import_auth_pass']) AND $_POST['rss_import_auth_pass'] ) ? $_POST['rss_import_auth_pass'] : $rssstream['rss_import_auth_pass'] ); $this->ipsclass->html .= $this->html->rss_import_form( $form, $title, $formcode, $button, $rssstream ); - $this->ipsclass->admin->page_title = "Управление импорта RSS"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять полями импорта RSS."; + $this->ipsclass->admin->page_title = "RSS Import Manager"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your RSS Import feeds."; - $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}", "Управление импорта RSS" ); + $this->ipsclass->admin->nav[] = array( "", "Add/Edit RSS Import" ); $this->ipsclass->admin->output(); } @@ -1220,8 +1231,6 @@ class ad_rssimport function rssimport_overview() { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление импорта RSS' ); - //------------------------------- // INIT //------------------------------- @@ -1249,14 +1258,353 @@ class ad_rssimport $this->ipsclass->html .= $this->html->rss_import_overview( $content ); - $this->ipsclass->admin->page_title = "Управление импорта RSS"; - $this->ipsclass->admin->page_detail = "Эта секция позволит вам управлять полями импорта RSS."; + $this->ipsclass->admin->page_title = "RSS Import Manager"; + $this->ipsclass->admin->page_detail = "This section will allow you to manage your RSS Import feeds."; $this->ipsclass->admin->output(); } + /*-------------------------------------------------------------------------*/ + // RSS Import: Save + /*-------------------------------------------------------------------------*/ - + function rssimport_validate( $standalone=0 ) + { + $return = 0; + + if( !$standalone ) + { + //-------------------------------------------- + // INIT + //-------------------------------------------- + + $rss_import_id = intval($this->ipsclass->input['rss_import_id']); + $rss_import_title = trim( $this->ipsclass->input['rss_import_title'] ); + $rss_import_url = $this->ipsclass->txt_stripslashes( trim( $_POST['rss_import_url'] ) ); + $rss_import_mid = trim( $this->ipsclass->input['rss_import_mid'] ); + $rss_import_showlink = $this->ipsclass->txt_stripslashes( trim( $_POST['rss_import_showlink'] ) ); + $rss_import_enabled = intval($this->ipsclass->input['rss_import_enabled']); + $rss_import_forum_id = intval($this->ipsclass->input['rss_import_forum_id']); + $rss_import_pergo = intval($this->ipsclass->input['rss_import_pergo']); + $rss_import_time = intval($this->ipsclass->input['rss_import_time']); + $rss_import_topic_open = intval($this->ipsclass->input['rss_import_topic_open']); + $rss_import_topic_hide = intval($this->ipsclass->input['rss_import_topic_hide']); + $rss_import_inc_pcount = intval($this->ipsclass->input['rss_import_inc_pcount']); + $rss_import_topic_pre = $this->ipsclass->input['rss_import_topic_pre']; + $rss_import_charset = $this->ipsclass->input['rss_import_charset']; + $rss_import_allow_html = intval($this->ipsclass->input['rss_import_allow_html']); + $rss_import_auth = intval($this->ipsclass->input['rss_import_auth']); + $rss_import_auth_user = trim($this->ipsclass->input['rss_import_auth_user']) ? trim($this->ipsclass->input['rss_import_auth_user']) : 'Not Needed'; + $rss_import_auth_pass = trim($this->ipsclass->input['rss_import_auth_pass']) ? trim($this->ipsclass->input['rss_import_auth_pass']) : 'Not Needed'; + + $return = 1; + } + else + { + $return = 0; + + $rss_input_id = isset($this->ipsclass->input['rss_id']) ? intval($this->ipsclass->input['rss_id']) : 0; + + if( $rss_input_id > 0 ) + { + $rss_data = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'rss_import', 'where' => 'rss_import_id='.$rss_input_id ) ); + + if( !$rss_data['rss_import_url'] ) + { + $rss_import_url = ""; + $rss_import_auth = ""; + $rss_import_auth_user = ""; + $rss_import_auth_pass = ""; + } + else + { + $standalone = 0; + + $rss_import_id = intval($rss_data['rss_import_id']); + $rss_import_url = $rss_data['rss_import_url']; + + $member = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'members_display_name', 'from' => 'members', 'where' => 'id='.$rss_data['rss_import_mid'] ) ); + + $rss_import_mid = $member['members_display_name']; + + $rss_import_forum_id = intval($rss_data['rss_import_forum_id']); + $rss_import_inc_pcount = intval($rss_data['rss_import_inc_pcount']); + $rss_import_charset = $rss_data['rss_import_charset']; + $rss_import_auth = intval($rss_data['rss_import_auth']); + $rss_import_auth_user = trim($rss_data['rss_import_auth_user']); + $rss_import_auth_pass = trim($rss_data['rss_import_auth_pass']); + } + } + else + { + $rss_import_url = $this->ipsclass->txt_stripslashes( trim( $_POST['rss_url'] ) ); + $rss_import_charset = $this->ipsclass->vars['gb_char_set']; + $rss_import_auth = ""; + $rss_import_auth_user = ""; + $rss_import_auth_pass = ""; + } + } + + if( !$rss_import_url ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'msg' => "There was no url entered to validate" ) ); + } + else + { + //-------------------------------------------- + // INIT + //-------------------------------------------- + + if ( ! $this->classes_loaded ) + { + //-------------------------------------------- + // Require classes + //-------------------------------------------- + + if ( ! is_object( $this->class_rss ) ) + { + require_once( KERNEL_PATH . 'class_rss.php' ); + $this->class_rss = new class_rss(); + $this->class_rss->ipsclass =& $this->ipsclass; + $this->class_rss->use_sockets = $this->use_sockets; + $this->class_rss->rss_max_show = 100; + } + + $this->classes_loaded = 1; + } + + //-------------------------------------------- + // Set this import's doctype + //-------------------------------------------- + + $this->class_rss->doc_type = $this->ipsclass->vars['gb_char_set']; + $this->class_rss->feed_charset = $this->ipsclass->vars['gb_char_set']; + + if( strtolower($rss_import_charset) != $this->ipsclass->vars['gb_char_set'] ) + { + $this->class_rss->convert_charset = 1; + } + else + { + $this->class_rss->convert_charset = 0; + } + + //-------------------------------------------- + // Set this import's authentication + //-------------------------------------------- + $this->class_rss->auth_req = $rss_import_auth; + $this->class_rss->auth_user = $rss_import_auth_user; + $this->class_rss->auth_pass = $rss_import_auth_pass; + + //-------------------------------------------- + // Clear RSS object's error cache first + //-------------------------------------------- + $this->class_rss->errors = array(); + $this->class_rss->rss_items = array(); + + //-------------------------------------------- + // Reset the rss count as this is a new feed + //-------------------------------------------- + + $this->class_rss->rss_count = 0; + + //-------------------------------------------- + // Parse RSS + //-------------------------------------------- + + $this->class_rss->rss_parse_feed_from_url( $rss_import_url ); + + //-------------------------------------------- + // Validate Data - HTTP Status Code/Text + //-------------------------------------------- + + if( $this->class_rss->class_file_management->http_status_code != "200" ) + { + if( $this->class_rss->class_file_management->http_status_code ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "HTTP Status Code: ".$this->class_rss->class_file_management->http_status_code." (".$this->class_rss->class_file_management->http_status_text.")" ) ); + } + } + else + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-valid', + 'msg' => "HTTP Status Code: ".$this->class_rss->class_file_management->http_status_code." (".$this->class_rss->class_file_management->http_status_text.")" ) ); + } + + if ( is_array( $this->class_rss->errors ) and count( $this->class_rss->errors ) ) + { + foreach( $this->class_rss->errors as $error ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', 'msg' => $error ) ); + } + } + else + { + if( $this->class_rss->orig_doc_type ) + { + if( !$standalone AND $rss_import_charset ) + { + if( strtolower($rss_import_charset) != strtolower($this->class_rss->orig_doc_type) ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "The RSS feed's charset is {$this->class_rss->orig_doc_type} but you entered {$rss_import_charset}" ) ); + } + else + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-valid', + 'msg' => "The RSS feed's charset is {$this->class_rss->orig_doc_type} (correct)" ) ); + } + } + else + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-valid', + 'msg' => "The RSS feed's charset is {$this->class_rss->orig_doc_type}" ) ); + } + } + else + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "We could not determine the feed's character set" ) ); + } + + //-------------------------------------------- + // Any Channels? + //-------------------------------------------- + + if ( ! is_array( $this->class_rss->rss_channels ) or ! count( $this->class_rss->rss_channels ) ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "We could not find any channels in the RSS feed (nothing to import)." ) ); + } + else + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-valid', + 'msg' => "We found ".count($this->class_rss->rss_channels)." channel(s) in the RSS feed." ) ); + + //-------------------------------------------- + // Any Items? + //-------------------------------------------- + + if ( ! is_array( $this->class_rss->rss_items ) or ! count( $this->class_rss->rss_items ) ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "We could not find any actual content (topics, news articles, etc.) (nothing to import)" ) ); + } + else + { + foreach ( $this->class_rss->rss_channels as $channel_id => $channel_data ) + { + if ( is_array( $this->class_rss->rss_items[ $channel_id ] ) and count ($this->class_rss->rss_items[ $channel_id ] ) ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-valid', + 'msg' => "We found ".count($this->class_rss->rss_items[ $channel_id ])." article(s)/topic(s) in the RSS feed." ) ); + + foreach( $this->class_rss->rss_items[ $channel_id ] as $item_data ) + { + if( !$item_data['unixdate'] ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-msg', + 'msg' => "A date was not found in at least one of the RSS articles - current time would be used instead." ) ); + } + + if ( $item_data['unixdate'] < 1 ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-msg', + 'msg' => "An invalid date was found in at least one of the RSS articles - current time would be used instead." ) ); + } + else if ( $item_data['unixdate'] > time() ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-msg', + 'msg' => "An invalid date was found in at least one of the RSS articles - current time would be used instead." ) ); + } + + $item_data['content'] = $item_data['content'] ? $item_data['content'] : $item_data['description']; + + if ( ! $item_data['title'] OR ! $item_data['content'] ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "At least one article was missing a title or a description/content field. If all articles are missing both fields, nothing would import. Otherwise IPB would skip just the items missing both a title and content." ) ); + } + + break 2; + } + } + } + } + } + } + + if( !$standalone ) + { + if( $rss_import_mid ) + { + $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'id, name', 'from' => 'members', 'where' => "members_l_display_name='{$rss_import_mid}'" ) ); + + if ( ! $member['id'] ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "The specified member '{$rss_import_mid}' could not be found." ) ); + } + } + else + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "We could not validate the member used to import articles." ) ); + } + } + + //-------------------------------------------- + // Init forums if not already done so + //-------------------------------------------- + + if ( ! is_array( $this->ipsclass->forums->forum_by_id ) OR !count( $this->ipsclass->forums->forum_by_id ) ) + { + $this->ipsclass->forums->forums_init(); + } + + if( !$standalone AND $rss_import_forum_id ) + { + if ( ! $this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ] ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "The specified forum could not be found." ) ); + } + else + { + if ( $this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ]['sub_can_post'] != 1 OR $this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ]['redirect_on'] == 1 ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "The specified forum is either a redirect forum, or a category, and cannot display new topics." ) ); + } + + if( $rss_import_inc_pcount AND !$this->ipsclass->forums->forum_by_id[ $rss_import_forum_id ]['inc_postcount'] ) + { + $this->validate_msg[] = $this->html->rss_validate_msg( array( 'class' => 'rss-feed-invalid', + 'msg' => "The specified forum does not allow posts to increment user's post count - importer's post count will not be incremented." ) ); + } + } + } + + //-------------------------------------------- + // Display? + //-------------------------------------------- + + if ( !$return ) + { + if( count($this->validate_msg) ) + { + $this->ipsclass->main_msg = "Validation Results for ".$rss_import_url."
     ·".implode( "
     ·", $this->validate_msg ); + $this->rssimport_overview(); + return; + } + } + else + { + return TRUE; + } + } + } } diff --git a/upload/sources/action_admin/security.php b/upload/sources/action_admin/security.php index d3facc48..3884b167 100644 --- a/upload/sources/action_admin/security.php +++ b/upload/sources/action_admin/security.php @@ -2,15 +2,13 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board v2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| Time: Fri, 14 Jul 2006 08:09:48 GMT -| Release: 1b13d7a1c185940e9caa9bf2373b279e | Licence Info: http://www.invisionboard.com/?license +--------------------------------------------------------------------------- | > $Date: 2006-06-08 17:11:50 +0100 (Thu, 08 Jun 2006) $ @@ -57,26 +55,27 @@ class ad_security { $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'IPB Security Center' ); - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // LOAD HTML //----------------------------------------- - $this->html = $this->ipsclass->acp_load_template('cp_skin_admin'); + $this->html = $this->ipsclass->acp_load_template('cp_skin_security'); switch($this->ipsclass->input['code']) { default: + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); + $this->security_overview(); + break; + case 'stronghold': + $this->do_stronghold(); + break; + case 'dynamic_images': + $this->do_dynamic_images(); + break; + case 'acplink': + $this->do_acplink(); + break; case 'virus_check': $this->anti_virus_check(); break; @@ -86,9 +85,214 @@ class ad_security case 'list_admins': $this->list_admins(); break; + case 'htaccess': + $this->do_htaccess(); + break; + case 'confglobal': + $this->do_confglobal(); + break; + case 'acprename': + $this->do_acprename(); + break; + + case 'acphtaccess': + $this->acphtaccess_form(); + break; + case 'acphtaccess_do': + $this->acphtaccess_do(); + break; } } + /*-------------------------------------------------------------------------*/ + // ACP HTACCESS: Step two + /*-------------------------------------------------------------------------*/ + + function acphtaccess_do() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $name = trim( $_POST['name'] ); + $pass = trim( $_POST['pass'] ); + + $htaccess_pw = ""; + $htaccess_auth = ""; + + //----------------------------------------- + // Check... + //----------------------------------------- + + if ( ! $name or ! $pass ) + { + $this->ipsclass->main_msg = "You must complete the form"; + $this->acphtaccess_form(); + return; + } + + //----------------------------------------- + // Format files... + //----------------------------------------- + + $htaccess_auth = "AuthType Basic\n" + . "AuthName \"IPB ACP\"\n" + . "AuthUserFile " . ROOT_PATH . IPB_ACP_DIRECTORY . "/.htpasswd\n" + . "Require valid-user\n"; + + $htaccess_pw = $name . ":" . crypt( $pass, base64_encode( $pass ) ); + + if ( $FH = @fopen( ROOT_PATH . IPB_ACP_DIRECTORY . '/' . '.htpasswd', 'w' ) ) + { + fwrite( $FH, $htaccess_pw ); + fclose( $FH ); + + $FF = @fopen( ROOT_PATH . IPB_ACP_DIRECTORY . '/' . '.htaccess', 'w' ); + fwrite( $FF, $htaccess_auth ); + fclose( $FF ); + + $this->ipsclass->main_msg = "Authentication files written"; + $this->security_overview(); + } + else + { + $this->ipsclass->html .= $this->html->htaccess_data( $htaccess_pw, $htaccess_auth ); + + $this->ipsclass->admin->nav[] = array( '', 'ACP .htaccess' ); + + $this->ipsclass->admin->output(); + } + + + } + + /*-------------------------------------------------------------------------*/ + // ACP HTACCESS: Step One + /*-------------------------------------------------------------------------*/ + + function acphtaccess_form() + { + //----------------------------------------- + // Show it + //----------------------------------------- + + $this->ipsclass->html .= $this->html->htaccess_form(); + + $this->ipsclass->admin->nav[] = array( '', 'ACP .htaccess' ); + + $this->ipsclass->admin->output(); + } + + /*-------------------------------------------------------------------------*/ + // Rename ACP directory + /*-------------------------------------------------------------------------*/ + + function do_acprename() + { + //----------------------------------------- + // Show it + //----------------------------------------- + + $this->ipsclass->html .= $this->html->rename_admin_dir(); + + $this->ipsclass->admin->nav[] = array( '', 'Rename the admin directory' ); + + $this->ipsclass->admin->output(); + } + + /*-------------------------------------------------------------------------*/ + // Change conf global + /*-------------------------------------------------------------------------*/ + + function do_confglobal() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $done = 0; + + //----------------------------------------- + // Try... + //----------------------------------------- + + if ( @chmod( ROOT_PATH . 'conf_global.php', 0444) ) + { + $done = 1; + } + + //----------------------------------------- + // Wow, that was really hard. I deserve a + // payraise after this function... + //----------------------------------------- + + if ( $done ) + { + $this->ipsclass->main_msg = "CHMOD change completed."; + } + else + { + $this->ipsclass->main_msg = "Could not complete the process.
    Please use your FTP client to change the CHMOD value of 'conf_global.php' to 0444."; + } + + $this->security_overview(); + } + + /*-------------------------------------------------------------------------*/ + // Add htaccess to non IPB dirs + /*-------------------------------------------------------------------------*/ + + function do_htaccess() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $name = '.htaccess'; + $msg = array(); + $dirs = array( ROOT_PATH . 'cache', + ROOT_PATH . 'skin_acp', + ROOT_PATH . 'style_avatars', + ROOT_PATH . 'style_emoticons', + ROOT_PATH . 'style_images', + ROOT_PATH . 'uploads' ); + + $towrite = << + + Order allow,deny + Deny from all + +# +EOF; + + //----------------------------------------- + // Do it! + //----------------------------------------- + + foreach( $dirs as $directory ) + { + if ( $FH = @fopen( $directory . '/'. $name, 'w' ) ) + { + fwrite( $FH, $towrite ); + fclose( $FH ); + + $msg[] = "Written .htaccess to $directory..."; + } + else + { + $msg[] = "Skipped $directory, could not write into it..."; + } + } + + //----------------------------------------- + // Done... + //----------------------------------------- + + $this->ipsclass->main_msg = implode( "
    ", $msg ); + $this->security_overview(); + } + /*-------------------------------------------------------------------------*/ // List admins /*-------------------------------------------------------------------------*/ @@ -122,7 +326,7 @@ class ad_security $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'members', - 'where' => "mgroup LIKE '%,". $_gid .",%' OR mgroup_others LIKE '%,". $_gid .",%' OR mgroup='".$_gid."' OR mgroup_others='".$_gid."' OR mgroup='".$_gid.",' OR mgroup_others='".$_gid.",' OR mgroup=',".$_gid."' OR mgroup_others=',".$_gid."'", + 'where' => "mgroup=" . $_gid ." OR mgroup_others LIKE '%,". $_gid .",%' OR mgroup_others='".$_gid."' OR mgroup_others LIKE '".$_gid.",%' OR mgroup_others LIKE '%,".$_gid."'", 'order' => 'joined DESC' ) ); $b = $this->ipsclass->DB->exec_query(); @@ -164,10 +368,7 @@ class ad_security $content .= $this->html->list_admin_row( $member ); } - $this->ipsclass->html_help_title = "Members with ACP Access"; - $this->ipsclass->html_help_msg = "Below is a list of all members with access to your ACP.
    If you do not recognize any, please remove their ACP access immediately."; - - #$this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( "Members with ACP Access", "Below is a list of all members with access to your ACP.
    If you do not recognize any, please remove their ACP access immediately." ) ."
    "; + $this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( "Members with ACP Access", "Below is a list of all members with access to your ACP.
    If you do not recognize any, please remove their ACP access immediately." ) ."
    "; $this->ipsclass->html .= $this->html->list_admin_overview( $content ); $this->ipsclass->admin->nav[] = array( '', 'List Administrators' ); @@ -215,7 +416,21 @@ class ad_security //----------------------------------------- $class_virus_checker->anti_virus_deep_scan( ROOT_PATH, '(php|cgi|pl|perl|php3|php4|php5|php6)' ); - + + //----------------------------------------- + // Update... + //----------------------------------------- + + $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); + $cache_array = unserialize(stripslashes($cache['cs_value'])); + + $cache_array['last_deepscan_check'] = time(); + + $this->ipsclass->update_cache( array( 'name' => 'systemvars', + 'value' => $cache_array, + 'array' => 1, + 'donow' => 1 ) ); + //----------------------------------------- // Got any bad files? //----------------------------------------- @@ -274,18 +489,29 @@ class ad_security $filter = ""; } - $content .= $this->html->deep_scan_bad_files_row( preg_replace( "#^/#", "", str_replace( ROOT_PATH, '', $data['file_path'] ) ), $data['file_name'], $_data ); + if ( strtoupper( substr(PHP_OS, 0, 3) ) == 'WIN' ) + { + $file_path = str_replace( ROOT_PATH, "", $data['file_path'] ); + $file_path = str_replace( "\\", "/", $file_path ); + + $data['file_path'] = str_replace( "/\\", "\\", $data['file_path'] ); + } + else + { + $file_path = str_replace( ROOT_PATH.'/', '', $data['file_path'] ); + $data['file_path'] = str_replace( ROOT_PATH.'/', '', $data['file_path'] ); + } + + $content .= $this->html->deep_scan_bad_files_row( $file_path, $data['file_path'], $_data ); } if ( $bad_score ) { - $this->ipsclass->html_help_title = 'All Executables'; - $this->ipsclass->html_help_msg = 'The deep scanner has found the following files.
    '.$bad_score.' of '.$file_count.' files are rating 7/10 or more.
    If you\'re unsure of their origin, please investigate them immediately.'; + $this->ipsclass->html .= $this->ipsclass->skin_acp_global->warning_box( 'All Executables', 'The deep scanner has found the following files.
    '.$bad_score.' of '.$file_count.' files are rating 7/10 or more.
    If you\'re unsure of their origin, please investigate them immediately.' ) . "
    "; } else { - $this->ipsclass->html_help_title = 'All Executables'; - $this->ipsclass->html_help_msg = 'The deep scanner has found '.$file_count.' files.
    If you\'re unsure of their origin, please investigate them immediately.'; + $this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( 'All Executables', 'The deep scanner has found '.$file_count.' files.
    If you\'re unsure of their origin, please investigate them immediately.' ) . "
    "; } $this->ipsclass->html .= $this->html->deep_scan_bad_files_wrapper( $content ); @@ -343,6 +569,20 @@ class ad_security $class_virus_checker->run_scan(); + //----------------------------------------- + // Update... + //----------------------------------------- + + $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); + $cache_array = unserialize(stripslashes($cache['cs_value'])); + + $cache_array['last_virus_check'] = time(); + + $this->ipsclass->update_cache( array( 'name' => 'systemvars', + 'value' => $cache_array, + 'array' => 1, + 'donow' => 1 ) ); + //----------------------------------------- // Got any bad files? //----------------------------------------- @@ -362,18 +602,27 @@ class ad_security $_data['right_width'] = 50 - $_data['left_width']; $_data['color'] = $colors[ $data['score'] ]; - $content .= $this->html->anti_virus_bad_files_row( preg_replace( "#^/#", "", str_replace( ROOT_PATH, '', $data['file_path'] ) ), $data['file_name'], $_data ); + if ( strtoupper( substr(PHP_OS, 0, 3) ) == 'WIN' ) + { + $root_path = str_replace( "/", "\\", ROOT_PATH ); + $file_path = str_replace( $root_path, "", $data['file_path'] ); + $file_path = str_replace( "\\", "/", $file_path ); + } + else + { + $file_path = str_replace( ROOT_PATH, '', $data['file_path'] ); + } + + $content .= $this->html->anti_virus_bad_files_row( $file_path, $data['file_path'], $_data ); } - $this->ipsclass->html_help_title = 'Suspicious Files Detected'; - $this->ipsclass->html_help_msg = 'The anti-virus scan located the following suspicious files.
    If you\'re unsure of their origin, please remove them immediately.'; + $this->ipsclass->html .= $this->ipsclass->skin_acp_global->warning_box( 'Suspicious Files Detected', 'The unauthorized file scan located the following suspicious files.
    If you\'re unsure of their origin, please remove them immediately.' ) . "
    "; $this->ipsclass->html .= $this->html->anti_virus_bad_files_wrapper( $content ); } else { - $this->ipsclass->html_help_title = 'No Suspicious Files Detected'; - $this->ipsclass->html_help_msg = 'The anti-virus scan did not identify any suspicious files.
    Please scan regularly to ensure that your system is secure.'; + $this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( 'No Suspicious Files Detected', 'The unauthorized file scan did not identify any suspicious files.
    Please scan regularly to ensure that your system is secure' ) . "
    "; } //----------------------------------------- @@ -390,11 +639,345 @@ class ad_security $this->ipsclass->html .= $this->html->anti_virus_checked_wrapper( $checked_content ); } - $this->ipsclass->admin->nav[] = array( '', 'Virus Check' ); + $this->ipsclass->admin->nav[] = array( '', 'Unauthorized File Check' ); $this->ipsclass->admin->output(); } + /*-------------------------------------------------------------------------*/ + // ACP LINK + /*-------------------------------------------------------------------------*/ + + function do_acplink() + { + //----------------------------------------- + // Update the setting... + //----------------------------------------- + + $this->update_setting( 'security_remove_acp_link', $this->ipsclass->vars['security_remove_acp_link'] ? 0 : 1 ); + + //----------------------------------------- + // Done.. + //----------------------------------------- + + $lang = $this->ipsclass->vars['security_remove_acp_link'] == 0 ? 'restored' : 'removed'; + + $this->ipsclass->main_msg = "ACP link display {$lang}"; + $this->security_overview(); + } + + /*-------------------------------------------------------------------------*/ + // DYNAMIC IMAGES + /*-------------------------------------------------------------------------*/ + + function do_dynamic_images() + { + //----------------------------------------- + // Update the setting... + //----------------------------------------- + + $this->update_setting( 'allow_dynamic_img', $this->ipsclass->vars['allow_dynamic_img'] ? 0 : 1 ); + + //----------------------------------------- + // Done.. + //----------------------------------------- + + $lang = $this->ipsclass->vars['allow_dynamic_img'] == 0 ? 'disabled' : 'enabled'; + + $this->ipsclass->main_msg = "Dynamic images {$lang}"; + $this->security_overview(); + } + + /*-------------------------------------------------------------------------*/ + // STRONG HOLD COOKIE + /*-------------------------------------------------------------------------*/ + + function do_stronghold() + { + //----------------------------------------- + // Update the setting... + //----------------------------------------- + + $this->update_setting( 'cookie_stronghold', $this->ipsclass->vars['cookie_stronghold'] ? 0 : 1 ); + + //----------------------------------------- + // Done.. + //----------------------------------------- + + $lang = $this->ipsclass->vars['cookie_stronghold'] == 0 ? 'disabled' : 'enabled'; + + $this->ipsclass->main_msg = "Cookie stronghold {$lang}"; + $this->security_overview(); + } + + /*-------------------------------------------------------------------------*/ + // Update setting + /*-------------------------------------------------------------------------*/ + + function update_setting( $key, $value ) + { + //----------------------------------------- + // Check + //----------------------------------------- + + if ( ! $key ) + { + return FALSE; + } + + //----------------------------------------- + // Update DB + //----------------------------------------- + + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => $value ), "conf_key='".$key."'" ); + + //----------------------------------------- + // Rebuild settings cache + //----------------------------------------- + + require_once( ROOT_PATH . 'sources/action_admin/settings.php' ); + $settings = new ad_settings(); + $settings->ipsclass =& $this->ipsclass; + + $settings->setting_rebuildcache(); + + //----------------------------------------- + // Done... + //----------------------------------------- + + return TRUE; + } + + + /*-------------------------------------------------------------------------*/ + // View current log in logs + /*-------------------------------------------------------------------------*/ + + function security_overview() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $content = array( 'bad' => '', 'good' => '', 'ok' => '' ); + $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); + $cache_array = unserialize(stripslashes($cache['cs_value'])); + + //----------------------------------------- + // Virus checker link + //----------------------------------------- + + if ( intval($cache_array['last_virus_check']) < time() - 7 * 86400 ) + { + $content['bad'] .= $this->html->security_item_bad( 'IPB Unauthorized File Checker', + 'The IPB unauthorized file checker will check your IPB installation for suspicious files.
    The unauthorized file checker has not been run in over a week', + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=virus_check', + 'vchecker' ); + + } + else + { + $last_run = $this->ipsclass->get_date( $cache_array['last_virus_check'], 'SHORT' ); + $content['good'] .= $this->html->security_item_good( 'IPB Unauthorized File Checker', + 'The IPB unauthorized file checker will check your IPB installation for suspicious files.
    The unauthorized file checker was last run: '.$last_run, + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=virus_check', + 'vchecker' ); + } + + //----------------------------------------- + // Deep scan link + //----------------------------------------- + + if ( intval($cache_array['last_deepscan_check']) < time() - 30 * 86400 ) + { + $content['bad'] .= $this->html->security_item_bad( 'IPB Executables Deep Scan', + 'The IPB deep scanner will pick out and list every single executable file in your installation.
    The scanner has not been run in over a month', + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=deep_scan', + 'deepscan' ); + + } + else + { + $last_run = $this->ipsclass->get_date( $cache_array['last_deepscan_check'], 'SHORT' ); + $content['good'] .= $this->html->security_item_good( 'IPB Executables Deep Scan', + 'The IPB deep scanner will pick out and list every single executable file in your installation.
    The scanner was last run: '.$last_run, + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=deep_scan', + 'deepscan' ); + } + + //----------------------------------------- + // Get .htaccess settings + //----------------------------------------- + + if ( strtoupper( substr(PHP_OS, 0, 3) ) !== 'WIN' ) + { + $_extra = ''; + + if ( ! is_writeable( ROOT_PATH . IPB_ACP_DIRECTORY ) ) + { + $_extra = "
    IPB cannot write the .htaccess files into your '/admin/' directory. Please use your FTP client to CHMOD it to 0777.
    "; + } + + if ( ! file_exists( ROOT_PATH . IPB_ACP_DIRECTORY . '/.htaccess' ) ) + { + $content['ok'] .= $this->html->security_item_ok( 'IPB ACP .htaccess Protection', + 'To make your ACP even more secure, you can add HTTP authentication in your "/admin/" directory.
    IPB cannot locate an ACP .htaccess file.'. $_extra, + 'Learn More', + $this->ipsclass->form_code_js.'&code=acphtaccess', + 'acphtaccess' ); + } + else + { + $content['good'] .= $this->html->security_item_good( 'IPB ACP .htaccess Protection', + 'To make your ACP even more secure, you can take add HTTP authentication in your "/admin/" directory.
    IPB has located an ACP .htaccess file.'.$_extra, + 'Learn More', + $this->ipsclass->form_code_js.'&code=acphtaccess', + 'acphtaccess' ); + } + + # Other htaccess protection + if ( ! file_exists( ROOT_PATH . 'style_emoticons/.htaccess' ) ) + { + $content['ok'] .= $this->html->security_item_ok( 'IPB PHP/CGI .htaccess Protection', + 'IPB can write .htaccess files to non-PHP directories to prevent PHP and CGI files from executing.
    IPB cannot locate any .htaccess files.', + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=htaccess', + 'htaccess' ); + } + else + { + $content['good'] .= $this->html->security_item_good( 'IPB .htaccess Protection', + 'IPB can write .htaccess files to non-PHP directories to prevent PHP and CGI files from executing.
    IPB has located some .htaccess files.', + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=htaccess', + 'htaccess' ); + } + + //----------------------------------------- + // Conf global + //----------------------------------------- + + if ( is_writeable( ROOT_PATH . 'conf_global.php' ) ) + { + $content['bad'] .= $this->html->security_item_bad( 'Make "conf_global" un-writeable', + 'After installation, you should change the CHMOD on the "conf_global.php" file to prevent others from reading and writing to it.
    "conf_global.php" is writeable.', + 'Run Tool Now', + $this->ipsclass->form_code_js.'&code=confglobal', + 'confglobal' ); + + } + else + { + $content['good'] .= $this->html->security_item_good( 'Make "conf_global" un-writeable', + 'After installation, you should change the CHMOD on the "conf_global.php" file to prevent others from reading and writing to it.
    "conf_global.php" is NOT writeable.', + 'Learn More', + $this->ipsclass->form_code_js.'&code=confglobal', + 'confglobal' ); + } + } + + //----------------------------------------- + // Dynamic images + //----------------------------------------- + + if ( ! $this->ipsclass->vars['allow_dynamic_img'] ) + { + $content['good'] .= $this->html->security_item_good( 'Disable Dynamic Images', + 'IPB can stop dynamic images being posted on your forums. Dynamic images pose a security risk ask they allow javascript to run.
    Dynamic images are already disabled.', + 'Toggle Now', + $this->ipsclass->form_code_js.'&code=dynamic_images', + 'dynamic_images' ); + + } + else + { + $content['bad'] .= $this->html->security_item_bad( 'Disable Dynamic Images', + 'IPB can stop dynamic images being posted on your forums. Dynamic images pose a security risk ask they allow javascript to run.
    Dynamic images are ENABLED.', + 'Toggle Now', + $this->ipsclass->form_code_js.'&code=dynamic_images', + 'dynamic_images' ); + } + + //----------------------------------------- + // Strong hold cookie + //----------------------------------------- + + if ( ! $this->ipsclass->vars['cookie_stronghold'] ) + { + $content['bad'] .= $this->html->security_item_bad( 'Enable the Stronghold Cookie', + 'IPB can store a stronghold cookie in the user\'s browser which is used when automatically logging in to prevent successful cookie theft.
    Stronghold cookies are disbaled.', + 'Toggle Now', + $this->ipsclass->form_code_js.'&code=stronghold', + 'stronghold' ); + + } + else + { + $content['good'] .= $this->html->security_item_good( 'Enable the Stronghold Cookie', + 'IPB can store a stronghold cookie in the user\'s browser which is used when automatically logging in to prevent successful cookie theft.
    Stronghold cookies are ENABLED.', + 'Toggle Now', + $this->ipsclass->form_code_js.'&code=stronghold', + 'stronghold' ); + } + + //----------------------------------------- + // Remove ACP link + //----------------------------------------- + + if ( ! $this->ipsclass->vars['security_remove_acp_link'] ) + { + $content['ok'] .= $this->html->security_item_ok( 'Remove ACP Link', + 'IPB can remove the "Admin CP" link from the board\'s header. This is useful when renaming the default \'admin\' directory.
    The ACP link is visible when logged in as an admin.', + 'Toggle Now', + $this->ipsclass->form_code_js.'&code=acplink', + 'acplink' ); + + } + else + { + $content['good'] .= $this->html->security_item_good( 'Remove ACP Link', + 'IPB can remove the "Admin CP" link from the board\'s header. This is useful when renaming the default \'admin\' directory.
    The ACP link has been removed.', + 'Toggle Now', + $this->ipsclass->form_code_js.'&code=acplink', + 'acplink' ); + } + + //----------------------------------------- + // ACP directory renamed + //----------------------------------------- + + if ( IPB_ACP_DIRECTORY == 'admin' ) + { + $content['ok'] .= $this->html->security_item_ok( 'Rename the \'admin\' directory', + 'The default \'admin\' directory can be renamed to make it hard to find.
    The admin directory has not been renamed.', + 'Learn More', + $this->ipsclass->form_code_js.'&code=acprename', + 'acprename' ); + + } + else + { + $content['good'] .= $this->html->security_item_good( 'Rename the \'admin\' directory', + 'The default \'admin\' directory can be renamed to make it hard to find.
    The admin directory HAS been renamed.', + 'Learn More', + $this->ipsclass->form_code_js.'&code=acprename', + 'acprename' ); + } + + + //----------------------------------------- + // Print... + //----------------------------------------- + + + $this->ipsclass->html .= $this->html->security_overview( $content ); + + $this->ipsclass->admin->output(); + } } diff --git a/upload/sources/action_admin/settings.php b/upload/sources/action_admin/settings.php index 61864efa..e4621392 100644 --- a/upload/sources/action_admin/settings.php +++ b/upload/sources/action_admin/settings.php @@ -2,27 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2006-02-03 16:54:26 +0000 (Fri, 03 Feb 2006) $ -| > $Revision: 137 $ -| > $Author: bfarber $ +| > $Date: 2006-10-09 16:33:46 +0100 (Mon, 09 Oct 2006) $ +| > $Revision: 622 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Admin Setting functions @@ -36,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -46,6 +37,15 @@ class ad_settings { var $in_group = array(); var $key_array = array(); + var $get_by_key = ""; + var $return_after_save = ""; + + var $html; + var $parser; + var $han_editor; + var $image_dir; + var $editor_loaded = 0; + /** * Section title name * @@ -62,16 +62,13 @@ class ad_settings { function auto_run() { + $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}", "View General Settings" ); + //----------------------------------------- - // Kill globals - globals bad, Homer good. + // Load template //----------------------------------------- - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->html = $this->ipsclass->acp_load_template( 'cp_skin_settings' ); //----------------------------------------- @@ -188,6 +185,11 @@ class ad_settings { case 'phpinfo': phpinfo(); exit; + + case 'MOD_export_setting': + $this->settinggroup_export(); + break; + //----------------------------------------- default: $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); @@ -197,11 +199,126 @@ class ad_settings { } - //----------------------------------------- - // + /*-------------------------------------------------------------------------*/ + // Check differences + /*-------------------------------------------------------------------------*/ + + function settings_check_differences( $content='' ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $settings = array(); + $xml_settings = array(); + $fields = array( 'conf_title' , 'conf_description', 'conf_group' , 'conf_type' , 'conf_key' , 'conf_default', + 'conf_extra' , 'conf_evalphp' , 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', + 'conf_help_key', 'conf_add_cache' , 'conf_title_keyword' ); + $upload_new = array(); + $upload_missing = array(); + $original_new = array(); + $original_missing = array(); + + //----------------------------------------- + // Get current settings + //----------------------------------------- + + $this->ipsclass->DB->build_query( array( 'select' => 's.*', + 'from' => array( 'conf_settings' => 's' ), + 'add_join' => array( 0 => array( 'select' => 'c.*', + 'from' => array( 'conf_settings_titles' => 'c' ), + 'where' => 'c.conf_title_id=s.conf_group', + 'type' => 'inner' ) ) ) ); + + $this->ipsclass->DB->exec_query(); + + while( $row = $this->ipsclass->DB->fetch_row() ) + { + $settings[ $row['conf_key'] ] = $row; + } + + //----------------------------------------- + // Sort out XML file + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + + $xml = new class_xml(); + + //----------------------------------------- + // Unpack the datafile + //----------------------------------------- + + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Fix up... + //----------------------------------------- + + if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'][0] ) ) + { + //----------------------------------------- + // Ensure [0] is populated + //----------------------------------------- + + $tmp = $xml->xml_array['settingexport']['settinggroup']['setting']; + + unset($xml->xml_array['settingexport']['settinggroup']['setting']); + + $xml->xml_array['settingexport']['settinggroup']['setting'][0] = $tmp; + } + + //----------------------------------------- + // Loop through and sort out settings... + //----------------------------------------- + + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $entry ) + { + //----------------------------------------- + // Is setting? + //----------------------------------------- + + if ( ! $entry['conf_is_title']['VALUE'] ) + { + foreach( $fields as $f ) + { + $xml_settings[ $entry['conf_key']['VALUE'] ] = $entry[ $f ]['VALUE']; + } + } + } + + //----------------------------------------- + // Original: Missing + //----------------------------------------- + + foreach( $xml_settings as $key => $data ) + { + if ( ! in_array( $key, array_keys( $settings ) ) ) + { + $original_missing[ $key ] = $data; + } + } + + //----------------------------------------- + // Original: New + //----------------------------------------- + + foreach( $settings as $key => $data ) + { + if ( ! in_array( $key, array_keys( $xml_settings ) ) ) + { + $original_new[ $key ] = $data; + } + } + + $this->ipsclass->html .= $this->html->settings_check_differences( $original_missing, $original_new ); + + $this->ipsclass->admin->output(); + } + + /*-------------------------------------------------------------------------*/ // IMPORT PARTIAL SETTINGS - // - //----------------------------------------- + /*-------------------------------------------------------------------------*/ function settings_do_import( $noreturn=0 ) { @@ -215,6 +332,7 @@ class ad_settings { $cur_settings = array(); $new_titles = array(); $new_settings = array(); + $tool = $this->ipsclass->input['tool']; $this->setting_titles_check(); @@ -230,13 +348,13 @@ class ad_settings { if ( ! $this->ipsclass->input['file_location'] ) { - $this->ipsclass->main_msg = "Не выбрано ни одного файла для загрузки или неправильное название файла."; + $this->ipsclass->main_msg = "No upload file was found and no filename was specified."; $this->setting_start(); } if ( ! file_exists( ROOT_PATH . $this->ipsclass->input['file_location'] ) ) { - $this->ipsclass->main_msg = "Невозможно найти файл, чтобы открыть: " . ROOT_PATH . $this->ipsclass->input['file_location']; + $this->ipsclass->main_msg = "Could not find the file to open at: " . ROOT_PATH . $this->ipsclass->input['file_location']; $this->setting_start(); } @@ -273,6 +391,17 @@ class ad_settings { $content = $this->ipsclass->admin->import_xml( $tmp_name ); } + if ( ! $content ) + { + $this->ipsclass->admin->error( "Import file is not in the correct format or is corrupt" ); + } + + if ( $tool == 'check' ) + { + $this->settings_check_differences( $content ); + return; + } + //----------------------------------------- // Get current settings. //----------------------------------------- @@ -316,7 +445,7 @@ class ad_settings { 'conf_extra' , 'conf_evalphp' , 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', 'conf_help_key', 'conf_add_cache' , 'conf_title_keyword' ); - $setting_fields = array( 'conf_title_keyword', 'conf_title_title', 'conf_title_desc', 'conf_title_noshow' ); + $setting_fields = array( 'conf_title_keyword', 'conf_title_title', 'conf_title_desc', 'conf_title_noshow', 'conf_title_module' ); //----------------------------------------- // Fix up... @@ -339,7 +468,7 @@ class ad_settings { // Loop through and sort out settings... //----------------------------------------- - foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $id => $entry ) + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $entry ) { $newrow = array(); @@ -378,7 +507,7 @@ class ad_settings { if ( is_array( $new_titles ) and count( $new_titles ) ) { - foreach( $new_titles as $idx => $data ) + foreach( $new_titles as $data ) { if ( $data['conf_title_title'] AND $data['conf_title_keyword'] ) { @@ -391,7 +520,8 @@ class ad_settings { $save = array( 'conf_title_title' => $data['conf_title_title'], 'conf_title_desc' => $data['conf_title_desc'], 'conf_title_keyword' => $data['conf_title_keyword'], - 'conf_title_noshow' => $data['conf_title_noshow'] ); + 'conf_title_noshow' => $data['conf_title_noshow'], + 'conf_title_module' => $data['conf_title_module'] ); //----------------------------------------- // Not got a row, insert first! @@ -435,7 +565,7 @@ class ad_settings { if ( is_array( $new_settings ) and count( $new_settings ) ) { - foreach( $new_settings as $idx => $data ) + foreach( $new_settings as $data ) { //----------------------------------------- // Make PHP slashes safe @@ -484,7 +614,7 @@ class ad_settings { if ( count( $need_update ) ) { - foreach( $need_update as $i => $idx ) + foreach( $need_update as $idx ) { $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.$idx ) ); @@ -494,11 +624,18 @@ class ad_settings { } } + //----------------------------------------- + // Update cache + //----------------------------------------- + + $this->ipsclass->DB->do_delete( 'cache_store', "cs_key='in_dev_setting_update'" ); + $this->ipsclass->DB->do_insert( 'cache_store', array( 'cs_value' => time(), 'cs_key' => "in_dev_setting_update" ) ); + //----------------------------------------- // Resync //----------------------------------------- - $this->ipsclass->main_msg = "$updated настройки обновлены $inserted настройки вставлены"; + $this->ipsclass->main_msg = "$updated settings updated $inserted settings inserted"; if ( ! $noreturn ) { @@ -534,13 +671,15 @@ class ad_settings { } } + $ids = $this->ipsclass->clean_int_array( $ids ); + //----------------------------------------- // Got any? //----------------------------------------- if ( ! count( $ids ) ) { - $this->ipsclass->main_msg = "Вы должны выделить хоть КАКИЕ-НИБУДЬ настройки для экспорта!"; + $this->ipsclass->main_msg = "You must select SOME settings to export!"; $this->setting_someexport_start(); } @@ -597,7 +736,7 @@ class ad_settings { if ( is_array( $groups ) AND count( $groups ) ) { - foreach( $groups as $id => $conf_group_id ) + foreach( $groups as $conf_group_id ) { $content = array(); @@ -605,7 +744,8 @@ class ad_settings { 'conf_title_keyword' => $this->setting_groups[ $conf_group_id ]['conf_title_keyword'], 'conf_title_title' => $this->setting_groups[ $conf_group_id ]['conf_title_title'], 'conf_title_desc' => $this->setting_groups[ $conf_group_id ]['conf_title_desc'], - 'conf_title_noshow' => $this->setting_groups[ $conf_group_id ]['conf_title_noshow'] ); + 'conf_title_noshow' => $this->setting_groups[ $conf_group_id ]['conf_title_noshow'], + 'conf_title_module' => $this->setting_groups[ $conf_group_id ]['conf_title_module'] ); foreach( $thisconf as $k => $v ) { @@ -637,8 +777,9 @@ class ad_settings { function setting_someexport_start() { - $this->ipsclass->admin->page_title = "Экспорт выделенных настроек системы"; - $this->ipsclass->admin->page_detail = "Проверьте все поля, которые выделили для экспорта настроек"; + $this->ipsclass->admin->page_title = "Export Selected System Settings"; + $this->ipsclass->admin->page_detail = "Check the box of the setting you wish to export."; + $this->ipsclass->admin->nav[] = array( '', "Export Settings" ); //----------------------------------------- // start form @@ -650,7 +791,7 @@ class ad_settings { ) ); $this->ipsclass->html .= "
    -
    Системные настройки
    +
    System Settings
    "; $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings', 'order' => 'conf_id' ) ); @@ -665,7 +806,7 @@ class ad_settings { { $count++; - $class = $count == 2 ? 'tdrow2' : 'tdrow1'; + $class = $count == 2 ? 'tablerow2' : 'tablerow1'; $output .= "\n"; + $output .= "\n"; } $output .= ""; @@ -692,7 +833,7 @@ class ad_settings { $this->ipsclass->html .= $output; $this->ipsclass->html .= "
    {$r['conf_key']} - {$r['conf_id']} @@ -682,7 +823,7 @@ class ad_settings { { for ($i = $count ; $i < $per_row ; ++$i) { - $output .= "  
    -
    "; +
    "; $this->ipsclass->admin->output(); } @@ -705,7 +846,7 @@ class ad_settings { function setting_findgroup() { - if ( ! $this->ipsclass->input['key'] AND ! $this->ipsclass->input['conf_title_keyword']) + if ( ! $this->ipsclass->input['key'] ) { $this->setting_start(); } @@ -715,7 +856,7 @@ class ad_settings { while ( $r = $this->ipsclass->DB->fetch_row() ) { - if ( $r['conf_title_keyword'] == $this->ipsclass->input['key'] OR strtolower( str_replace( " ", "", trim($r['conf_title_title']) ) ) == urldecode(trim($this->ipsclass->input['key'])) OR $r['conf_title_keyword'] == $this->ipsclass->input['conf_title_keyword'] ) + if ( $r['conf_title_keyword'] == $this->ipsclass->input['key'] OR strtolower( str_replace( " ", "", trim($r['conf_title_title']) ) ) == urldecode(trim($this->ipsclass->input['key'])) ) { $this->ipsclass->boink_it( $this->ipsclass->base_url.'&'.$this->ipsclass->form_code.'&code=setting_view&conf_group='.$r['conf_title_id'] ); break; @@ -758,7 +899,7 @@ class ad_settings { $entry = array(); - foreach( $this->setting_groups as $i => $roar ) + foreach( $this->setting_groups as $roar ) { //----------------------------------------- // First, add in setting group title @@ -770,7 +911,8 @@ class ad_settings { 'conf_title_keyword' => $roar['conf_title_keyword'], 'conf_title_title' => $roar['conf_title_title'], 'conf_title_desc' => $roar['conf_title_desc'], - 'conf_title_noshow' => $roar['conf_title_noshow'] ); + 'conf_title_noshow' => $roar['conf_title_noshow'], + 'conf_title_module' => $roar['conf_title_module'] ); foreach( $thisconf as $k => $v ) { @@ -835,7 +977,7 @@ class ad_settings { // Print to browser //----------------------------------------- - $this->ipsclass->admin->show_download( $doc, 'ipb_settings.xml', '', 0 ); + $this->ipsclass->admin->show_download( $doc, 'settings.xml', '', 0 ); } //----------------------------------------- @@ -848,19 +990,19 @@ class ad_settings { { if ( $this->ipsclass->input['id'] ) { - $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.$this->ipsclass->input['id'] ) ); + $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.intval($this->ipsclass->input['id']) ) ); $count = intval($conf['count']); if ( $count > 0 ) { - $this->ipsclass->main_msg = "Нельзя удалить эту группу настроек, так как в ней содержатся активные настройки"; + $this->ipsclass->main_msg = "Cannot remove this setting group as it still contains active settings"; } else { - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'conf_settings_titles', 'where' => 'conf_title_id='.$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'conf_settings_titles', 'where' => 'conf_title_id='.intval($this->ipsclass->input['id']) ) ); - $this->ipsclass->main_msg = "Группа настроек удалена"; + $this->ipsclass->main_msg = "Setting Group Removed"; } } @@ -878,11 +1020,11 @@ class ad_settings { { if ( $this->ipsclass->input['id'] ) { - $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.$this->ipsclass->input['id'] ) ); + $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as count', 'from' => 'conf_settings', 'where' => 'conf_group='.intval($this->ipsclass->input['id']) ) ); $count = intval($conf['count']); - $this->ipsclass->DB->do_update( 'conf_settings_titles', array( 'conf_title_count' => $count ), 'conf_title_id='.$this->ipsclass->input['id'] ); + $this->ipsclass->DB->do_update( 'conf_settings_titles', array( 'conf_title_count' => $count ), 'conf_title_id='.intval($this->ipsclass->input['id']) ); } $this->setting_start(); @@ -896,28 +1038,34 @@ class ad_settings { function settinggroup_form( $type='add' ) { - $this->ipsclass->admin->page_title = "Настройка конфигурации системы"; - $this->ipsclass->admin->page_detail = "Эта секция содержит все конфигурационные опции для вашего IPB."; + $this->ipsclass->admin->page_title = "System Configuration Settings"; + $this->ipsclass->admin->page_detail = "This section contains all the configuration options for your IPB."; + $this->ipsclass->admin->nav[] = array( '', "Add/Edit Settings" ); if ( $type == 'add' ) { $formcode = 'settinggroup_add'; - $title = "Создать новую группу настроек для форума"; - $button = "Создать новую группу"; + $title = "Create New Board Setting Group"; + $button = "Create New Setting Group"; + $conf = array( 'conf_title_title' => '', + 'conf_title_desc' => '', + 'conf_title_keyword' => '', + 'conf_title_noshow' => '', + ); } else { - $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings_titles', 'where' => 'conf_title_id='.$this->ipsclass->input['id'] ) ); + $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings_titles', 'where' => 'conf_title_id='.intval($this->ipsclass->input['id']) ) ); if ( ! $conf['conf_title_id'] ) { - $this->ipsclass->main_msg = "Нет пригодного ID, попробуйте заново ."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->setting_start(); } $formcode = 'settinggroup_edit'; - $title = "Редактирование настройки ".$conf['conf_title']; - $button = "Сохранить изменения"; + $title = "Edit Setting ".$conf['conf_title']; + $button = "Save Changes"; } $this->ipsclass->admin->page_detail = ' '; @@ -946,26 +1094,30 @@ class ad_settings { $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $title ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Заголовок для группы настроек?" , - $this->ipsclass->adskin->form_input( 'conf_title_title', $_POST['conf_title_title'] ? $_POST['conf_title_title'] : $conf['conf_title_title'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Group title?" , + $this->ipsclass->adskin->form_input( 'conf_title_title', ( isset($_POST['conf_title_title']) AND $_POST['conf_title_title'] ) ? $_POST['conf_title_title'] : $conf['conf_title_title'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Описание для группы настроек?" , - $this->ipsclass->adskin->form_textarea( 'conf_title_desc', $_POST['conf_title_desc'] ? $_POST['conf_title_desc'] : $conf['conf_title_desc'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Group Description?" , + $this->ipsclass->adskin->form_textarea( 'conf_title_desc', ( isset($_POST['conf_title_desc']) AND $_POST['conf_title_desc'] ) ? $_POST['conf_title_desc'] : $conf['conf_title_desc'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Ключевое слово для группы настроек?
    Используется для того, чтобы вытащить из базы данных без ссылки на ID
    " , - $this->ipsclass->adskin->form_input( 'conf_title_keyword', $_POST['conf_title_keyword'] ? $_POST['conf_title_keyword'] : $conf['conf_title_keyword'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Group Keyword?
    Used to pull this from the DB without relying on an ID
    " , + $this->ipsclass->adskin->form_input( 'conf_title_keyword', ( isset($_POST['conf_title_keyword']) AND $_POST['conf_title_keyword'] ) ? $_POST['conf_title_keyword'] : $conf['conf_title_keyword'] ) ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Group Module?
    Enter the filename of the PHP module file (eg: example.php) for pre and post setting parsing. The file name must be uploaded into the /sources/components_acp/setting_plugins directory." , + $this->ipsclass->adskin->form_input( 'conf_title_module', ( isset($_POST['conf_title_module']) AND $_POST['conf_title_module'] ) ? $_POST['conf_title_module'] : $conf['conf_title_module'] ) + ) ); + //----------------------------------------- // er.... //----------------------------------------- if ( IN_DEV ) { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Спрятать из листа с главными настройками? " , - $this->ipsclass->adskin->form_yes_no( 'conf_title_noshow', $_POST['conf_title_noshow'] ? $_POST['conf_title_noshow'] : $conf['conf_title_noshow'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Hide from main settings list?" , + $this->ipsclass->adskin->form_yes_no( 'conf_title_noshow', ( isset($_POST['conf_title_noshow']) AND $_POST['conf_title_noshow'] ) ? $_POST['conf_title_noshow'] : $conf['conf_title_noshow'] ) ) ); } @@ -996,7 +1148,7 @@ class ad_settings { if ( ! $conf_title_keyword ) { - $this->ipsclass->main_msg = "Вы должны ввести уникальное ключевое слово для: Ключевые слова для группы"; + $this->ipsclass->main_msg = "You must enter a unique keyword for: Setting Group Keyword"; $this->settinggroup_form(); return; } @@ -1012,14 +1164,14 @@ class ad_settings { { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Нет пригодного ID, попробуйте заново "; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->settinggroup_form(); return; } if ( $test['conf_title_title'] AND $test['conf_title_id'] != $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Вы уже используете это ключевое слово для уже существующих групп"; + $this->ipsclass->main_msg = "You are already using this keyword for another setting group"; $this->settinggroup_form(); return; } @@ -1030,7 +1182,7 @@ class ad_settings { { if ( $test['conf_title_title'] ) { - $this->ipsclass->main_msg = "Вы уже используете это ключевое слово для уже существующих групп"; + $this->ipsclass->main_msg = "You are already using this keyword for another setting group"; $this->settinggroup_form(); return; } @@ -1044,18 +1196,19 @@ class ad_settings { 'conf_title_desc' => $this->ipsclass->txt_stripslashes( $_POST['conf_title_desc'] ), 'conf_title_keyword' => $conf_title_keyword, 'conf_title_noshow' => $this->ipsclass->input['conf_title_noshow'], + 'conf_title_module' => $this->ipsclass->input['conf_title_module'] ); if ( $type == 'add' ) { $this->ipsclass->DB->do_insert( 'conf_settings_titles', $array ); - $this->ipsclass->main_msg = 'Готово!'; + $this->ipsclass->main_msg = 'New Setting Group Added'; } else { - $this->ipsclass->DB->do_update( 'conf_settings_titles', $array, 'conf_title_id='.$this->ipsclass->input['id'] ); - $this->ipsclass->main_msg = 'Готово!'; + $this->ipsclass->DB->do_update( 'conf_settings_titles', $array, 'conf_title_id='.intval($this->ipsclass->input['id']) ); + $this->ipsclass->main_msg = 'Setting Group Edited'; } $this->setting_rebuildcache(); @@ -1071,15 +1224,28 @@ class ad_settings { function setting_form( $type='add' ) { - $this->ipsclass->admin->page_title = "Настройка конфигурации системы"; - $this->ipsclass->admin->page_detail = "Эта секция содержит все конфигурационные опции для вашего IPB."; + $this->ipsclass->admin->page_title = "System Configuration Settings"; + $this->ipsclass->admin->page_detail = "This section contains all the configuration options for your IPB."; + $this->ipsclass->admin->nav[] = array( '', "Add/Edit Settings" ); if ( $type == 'add' ) { $formcode = 'setting_add'; - $title = "Создать новую настройку для форума"; - $button = "Создать новую настройку"; - $conf = array( 'conf_group' => $this->ipsclass->input['conf_group'], 'conf_add_cache' => 1 ); + $title = "Create New Board Setting"; + $button = "Create New Setting"; + $conf = array( 'conf_group' => $this->ipsclass->input['conf_group'], + 'conf_add_cache' => 1, + 'conf_title' => '', + 'conf_description' => '', + 'conf_type' => '', + 'conf_key' => '', + 'conf_value' => '', + 'conf_default' => '', + 'conf_extra' => '', + 'conf_evalphp' => '', + 'conf_start_group' => '', + 'conf_end_group' => '', + 'conf_help_key' => '' ); if ( IN_DEV ) { @@ -1099,17 +1265,17 @@ class ad_settings { } else { - $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_id='.$this->ipsclass->input['id'] ) ); + $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_id='.intval($this->ipsclass->input['id']) ) ); if ( ! $conf['conf_id'] ) { - $this->ipsclass->main_msg = "Нет пригодного ID, попробуйте заново."; + $this->ipsclass->main_msg = "No ID was passed, please try again."; $this->setting_start(); } $formcode = 'setting_edit'; - $title = "Редактировать настройки для ".$conf['conf_title']; - $button = "Сохранить изменения"; + $title = "Edit Setting ".$conf['conf_title']; + $button = "Save Changes"; } $this->ipsclass->admin->page_detail = ' '; @@ -1123,7 +1289,7 @@ class ad_settings { $groups = array(); - foreach( $this->setting_groups as $i => $r ) + foreach( $this->setting_groups as $r ) { $groups[] = array( $r['conf_title_id'], $r['conf_title_title'] ); } @@ -1132,11 +1298,12 @@ class ad_settings { // Type //----------------------------------------- - $types = array( 0 => array( 'input' , 'Ввод текста (одна строка)' ), - 1 => array( 'dropdown', 'Выпадающее меню' ), - 2 => array( 'yes_no' , 'Да/Нет (единичный выбор ответа)'), - 3 => array( 'textarea', 'Текстовое поле' ), - 4 => array( 'multi' , 'Мульти выбор' ), + $types = array( 0 => array( 'input' , 'Text Input' ), + 1 => array( 'dropdown', 'Drop Down' ), + 2 => array( 'yes_no' , 'Yes/No Radio Buttons'), + 3 => array( 'textarea', 'Textarea' ), + 4 => array( 'editor' , 'Full Editor' ), + 5 => array( 'multi' , 'Multi Select' ), ); //----------------------------------------- @@ -1162,67 +1329,67 @@ class ad_settings { $this->ipsclass->html .= $this->ipsclass->adskin->start_table( $title ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название настройки:" , - $this->ipsclass->adskin->form_input( 'conf_title', $_POST['conf_title'] ? $_POST['conf_title'] : $conf['conf_title'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting title?" , + $this->ipsclass->adskin->form_input( 'conf_title', ( isset($_POST['conf_title']) AND $_POST['conf_title'] ) ? $_POST['conf_title'] : $conf['conf_title'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Расположение настройки:" , - $this->ipsclass->adskin->form_input( 'conf_position', $_POST['conf_position'] ? $_POST['conf_position'] : $conf['conf_position'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Position?" , + $this->ipsclass->adskin->form_input( 'conf_position', ( isset($_POST['conf_position']) AND $_POST['conf_position'] ) ? $_POST['conf_position'] : $conf['conf_position'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Описание настройки:" , - $this->ipsclass->adskin->form_textarea( 'conf_description', $_POST['conf_description'] ? $_POST['conf_description'] : $conf['conf_description'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Description?" , + $this->ipsclass->adskin->form_textarea( 'conf_description', ( isset($_POST['conf_description']) AND $_POST['conf_description'] ) ? $_POST['conf_description'] : $conf['conf_description'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Группа настройки:" , - $this->ipsclass->adskin->form_dropdown( 'conf_group', $groups, $_POST['conf_group'] ? $_POST['conf_group'] : $conf['conf_group'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Group?" , + $this->ipsclass->adskin->form_dropdown( 'conf_group', $groups, ( isset($_POST['conf_group']) AND $_POST['conf_group'] ) ? $_POST['conf_group'] : $conf['conf_group'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Тип настройки:" , - $this->ipsclass->adskin->form_dropdown( 'conf_type', $types, $_POST['conf_type'] ? $_POST['conf_type'] : $conf['conf_type'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Type?" , + $this->ipsclass->adskin->form_dropdown( 'conf_type', $types, ( isset($_POST['conf_type']) AND $_POST['conf_type'] ) ? $_POST['conf_type'] : $conf['conf_type'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Ключ настройки:" , - $this->ipsclass->adskin->form_input( 'conf_key', $_POST['conf_key'] ? $_POST['conf_key'] : $conf['conf_key'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Key?" , + $this->ipsclass->adskin->form_input( 'conf_key', ( isset($_POST['conf_key']) AND $_POST['conf_key'] ) ? $_POST['conf_key'] : $conf['conf_key'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Текущее значение настройки:" , - $this->ipsclass->adskin->form_textarea( 'conf_value', $this->ipsclass->txt_htmlspecialchars( $_POST['conf_value'] ? $_POST['conf_value'] : $conf['conf_value'] ) ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Current Value?" , + $this->ipsclass->adskin->form_textarea( 'conf_value', $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['conf_value']) AND $_POST['conf_value'] ) ? $_POST['conf_value'] : $conf['conf_value'] ) ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Значение настройки по умолчанию?" , - $this->ipsclass->adskin->form_textarea( 'conf_default', $this->ipsclass->txt_htmlspecialchars( $_POST['conf_default'] ? $_POST['conf_default'] : $conf['conf_default'] ) ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Default Value?" , + $this->ipsclass->adskin->form_textarea( 'conf_default', $this->ipsclass->txt_htmlspecialchars( ( isset($_POST['conf_default']) AND $_POST['conf_default'] ) ? $_POST['conf_default'] : $conf['conf_default'] ) ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Дополнительно:
    Используетя для ввода дополнительной информации.
    Пример использования для ниспадающего меню: key=value (по одному на строку).
    " , - $this->ipsclass->adskin->form_textarea( 'conf_extra', $_POST['conf_extra'] ? $_POST['conf_extra'] : $conf['conf_extra'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Setting Extra?
    Use for creating form element extras.
    Drop down box use: Key=Value; one per line.
    " , + $this->ipsclass->adskin->form_textarea( 'conf_extra', ( isset($_POST['conf_extra']) AND $_POST['conf_extra'] ) ? $_POST['conf_extra'] : $conf['conf_extra'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Выполнение PHP-кода до отображения или сохранения настройки:
    \$show = 1; до отображения настройки.
    \$save = 1; до сохранения настройки.
    Используйте \$key и \$value во время написания PHP-кода.
    " , - $this->ipsclass->adskin->form_textarea( 'conf_evalphp', $_POST['conf_evalphp'] ? $_POST['conf_evalphp'] : $conf['conf_evalphp'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Raw PHP code to eval before showing and saving?
    \$show = 1; is set when showing setting.
    \$save = 1; is set when saving the setting.
    Use \$key and \$value when writing PHP code.
    " , + $this->ipsclass->adskin->form_textarea( 'conf_evalphp', ( isset($_POST['conf_evalphp']) AND $_POST['conf_evalphp'] ) ? $_POST['conf_evalphp'] : $conf['conf_evalphp'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Начать группу настроек:
    Введите название или оставьте поле пустым, если вы не хотите начинать новую группу.
    " , - $this->ipsclass->adskin->form_input( 'conf_start_group', $_POST['conf_start_group'] ? $_POST['conf_start_group'] : $conf['conf_start_group'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Start setting group?
    Enter title here or leave blank to not start a setting group
    " , + $this->ipsclass->adskin->form_input( 'conf_start_group', ( isset($_POST['conf_start_group']) AND $_POST['conf_start_group'] ) ? $_POST['conf_start_group'] : $conf['conf_start_group'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Закончить группу настроек?
    Вы можете закрыть открытую группу.
    " , - $this->ipsclass->adskin->form_yes_no( 'conf_end_group', $_POST['conf_end_group'] ? $_POST['conf_end_group'] : $conf['conf_end_group'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "End setting group?
    End an opened setting group
    " , + $this->ipsclass->adskin->form_yes_no( 'conf_end_group', ( isset($_POST['conf_end_group']) AND $_POST['conf_end_group'] ) ? $_POST['conf_end_group'] : $conf['conf_end_group'] ) ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Ключ помощи (опционально)
    'Ключ' используется для ссылок к помощи Админцентра.
    " , - $this->ipsclass->adskin->form_input( 'conf_help_key', $_POST['conf_help_key'] ? $_POST['conf_help_key'] : $conf['conf_help_key'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Optional Help Key
    'Key' which links to the ACP help system
    " , + $this->ipsclass->adskin->form_input( 'conf_help_key', ( isset($_POST['conf_help_key']) AND $_POST['conf_help_key'] ) ? $_POST['conf_help_key'] : $conf['conf_help_key'] ) ) ); if ( IN_DEV ) { - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Сделать настройкой по умолчанию?
    Пользователи не смогут удалить эту настройку.
    " , - $this->ipsclass->adskin->form_yes_no( 'conf_protected', $_POST['conf_protected'] ? $_POST['conf_protected'] : $conf['conf_protected'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Make a default settings (cannot be removed by user)?" , + $this->ipsclass->adskin->form_yes_no( 'conf_protected', ( isset($_POST['conf_protected']) AND $_POST['conf_protected'] ) ? $_POST['conf_protected'] : $conf['conf_protected'] ) ) ); } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Добавить эту настройку в кеш настроек?" , - $this->ipsclass->adskin->form_yes_no( 'conf_add_cache', $_POST['conf_add_cache'] ? $_POST['conf_add_cache'] : $conf['conf_add_cache'] ) + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Add this option into the settings cache?" , + $this->ipsclass->adskin->form_yes_no( 'conf_add_cache', ( isset($_POST['conf_add_cache']) AND $_POST['conf_add_cache'] ) ? $_POST['conf_add_cache'] : $conf['conf_add_cache'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form( $button ); @@ -1242,63 +1409,208 @@ class ad_settings { * * @return void; */ - function setting_view() + function setting_view( $conf_fields=array() ) { //----------------------------------------- // INIT //----------------------------------------- - $search_key = trim( urldecode( $this->ipsclass->input['search'] ) ); + $search_key = isset($this->ipsclass->input['search']) ? trim( urldecode( $this->ipsclass->input['search'] ) ) : ''; $conf_group = $this->ipsclass->input['conf_group']; $conf_titles = array(); $in_group = array(); $last_conf_id = -1; - $start = intval( $this->ipsclass->input['st'] ); + $start = intval($this->ipsclass->input['st']) >=0 ? intval($this->ipsclass->input['st']) : 0; $end = 150; + $this->ipsclass->input['search'] = isset($this->ipsclass->input['search']) ? $this->ipsclass->input['search'] : ''; + $load_modules = array(); + $key_array = array(); + $_show_error = 0; + $html = ''; + + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + $this->han_editor->from_acp = 1; + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; //----------------------------------------- // Page headers //----------------------------------------- - $this->ipsclass->admin->page_title = $this->ipsclass->admin->page_title ? $this->ipsclass->admin->page_title : "Настройки системной конфигурации"; - $this->ipsclass->admin->page_detail = $this->ipsclass->admin->page_detail ? $this->ipsclass->admin->page_detail : "Эта секция содержит все конфигурационные настройки для вашего форума IPB.
    Если вы желаете оставить запись пустой, пожалуйста используйте ключевые фразы: {blank} или ноль: 0."; - $this->ipsclass->admin->nav[] = array( "{$this->ipsclass->form_code}", "Просмотреть главные настройки" ); + $this->ipsclass->admin->page_title = $this->ipsclass->admin->page_title ? $this->ipsclass->admin->page_title : "System Configuration Settings"; + $this->ipsclass->admin->page_detail = $this->ipsclass->admin->page_detail ? $this->ipsclass->admin->page_detail : "This section contains all the configuration options for your IPB.
    If you wish to leave an entry blank, please use the keyword: {blank} or enter a zero: 0."; //----------------------------------------- - // Grabbing by key? + // Already got our fields? //----------------------------------------- - if ( $this->get_by_key ) + if ( is_array( $conf_fields ) AND count( $conf_fields ) ) { - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings_titles' ) ); - $this->ipsclass->DB->simple_exec(); - - while ( $r = $this->ipsclass->DB->fetch_row() ) + foreach( $conf_fields as $_id => $_data ) { - if ( $r['conf_title_keyword'] == $this->get_by_key ) + if ( ! $conf_group ) { - $conf_group = $r['conf_title_id']; - $conf_title = $r['conf_title_title']; + $conf_group = $_data['conf_title_id']; + $conf_title = $_data['conf_title_title']; + } + + if ( $_data['conf_title_module'] ) + { + $load_modules[ $r['conf_title_module'] ] = $_data['conf_title_module']; } } + + $title = "Settings for group: {$group_title}"; + $conf_entry = $conf_fields; } - - //----------------------------------------- - // Check... - //----------------------------------------- - - if ( ! $conf_group and ! $search_key ) + else { - $this->ipsclass->main_msg = "Ни одна группа не выбрана, попробуйте снова."; - $this->setting_start(); + //----------------------------------------- + // Grabbing by key? + //----------------------------------------- + + if ( $this->get_by_key ) + { + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings_titles' ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + if ( $r['conf_title_keyword'] == $this->get_by_key ) + { + $conf_group = $r['conf_title_id']; + $conf_title = $r['conf_title_title']; + + if ( $r['conf_title_module'] ) + { + $load_modules[ $r['conf_title_module'] ] = $r['conf_title_module']; + } + } + } + } + + //----------------------------------------- + // Check... + //----------------------------------------- + + if ( ! $conf_group and ! $search_key ) + { + $this->ipsclass->main_msg = "No group was passed, please try again."; + $this->setting_start(); + } + + //----------------------------------------- + // Get Groups + //----------------------------------------- + + $this->setting_get_groups(); + + //----------------------------------------- + // Did we search? + //----------------------------------------- + + if ( $search_key ) + { + $keywords = strtolower($search_key); + + $this->ipsclass->DB->cache_add_query( 'settings_search', array( 'keywords' => $keywords, 'limit_a' => $start, 'limit_b' => $end ) ); + $this->ipsclass->DB->cache_exec_query(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + if ( $r['conf_title_noshow'] == 1 ) + { + continue; + } + + if ( $r['conf_title_module'] ) + { + $load_modules[ $r['conf_title_module'] ] = $r['conf_title_module']; + } + + $r['conf_start_group'] = ""; + $r['conf_end_group'] = ""; + $conf_entry[ $r['conf_id'] ] = $r; + } + + if ( ! count( $conf_entry ) ) + { + $this->ipsclass->main_msg = "Your search for '$keywords' produced no matches."; + $this->setting_start(); + } + + $title = "Searched for: ".$keywords; + } + + //----------------------------------------- + // Or not... + //----------------------------------------- + + else + { + $in_g = ""; + + $this->ipsclass->DB->simple_construct( array( 'select' => 'c.*', + 'from' => array( 'conf_settings' => 'c' ), + 'where' => "c.conf_group='{$conf_group}'", + 'order' => 'c.conf_position, c.conf_title', + 'limit' => array( $start,$end ), + 'add_join' => array( 0 => array( 'select' => 'cc.conf_title_title, cc.conf_title_module', + 'from' => array( 'conf_settings_titles' => 'cc' ), + 'where' => 'cc.conf_title_id=c.conf_group', + 'type' => 'left' + ) ) + ) ); + + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $group_title = $r['conf_title_title']; + + $conf_entry[ $r['conf_id'] ] = $r; + + if ( $r['conf_end_group'] ) + { + $in_g = 0; + } + + if ( $in_g ) + { + $this->in_group[] = $r['conf_id']; + } + + if ( $r['conf_start_group'] ) + { + $in_g = 1; + } + + if ( $r['conf_title_module'] ) + { + $load_modules[ $r['conf_title_module'] ] = $r['conf_title_module']; + } + } + + $title = "Settings for group: {$group_title}"; + } } - - //----------------------------------------- - // Get Groups - //----------------------------------------- - - $this->setting_get_groups(); - + //----------------------------------------- // start form //----------------------------------------- @@ -1309,136 +1621,99 @@ class ad_settings { 4 => array( 'search' , $search_key ), 5 => array( 'section' , 'tools' ), 6 => array( 'bounceback' , $this->return_after_save ), - ) ); + ), "theAdminForm", "onclick='return ValidateForm()'", "postingform" ); //----------------------------------------- // Get settings in group //----------------------------------------- - $pages = $this->ipsclass->build_pagelinks( array( 'TOTAL_POSS' => $this->setting_groups[$conf_group]['conf_title_count'], - 'PER_PAGE' => $end, - 'CUR_ST_VAL' => $start, - 'L_SINGLE' => "", - 'L_MULTI' => $un_all."Multi Page", - 'BASE_URL' => $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=setting_view&search={$search_key}", - 'search' => $search_key, - ) ); - - //----------------------------------------- - // Did we search? - //----------------------------------------- - - if ( $search_key ) - { - $keywords = strtolower($search_key); - - $this->ipsclass->DB->cache_add_query( 'settings_search', array( 'keywords' => $keywords, 'limit_a' => $start, 'limit_b' => $end ) ); - $this->ipsclass->DB->cache_exec_query(); - - while ( $r = $this->ipsclass->DB->fetch_row() ) - { - if ( $r['conf_title_noshow'] == 1 ) - { - continue; - } - - $r['conf_start_group'] = ""; - $r['conf_end_group'] = ""; - $conf_entry[ $r['conf_id'] ] = $r; - } - - if ( ! count( $conf_entry ) ) - { - $this->ipsclass->main_msg = "На ваш запрос '$keywords' ничего не найдено."; - $this->setting_start(); - } - - $title = "Найдено для: ".$keywords; - } - - //----------------------------------------- - // Or not... - //----------------------------------------- - - else - { - $this->ipsclass->DB->simple_construct( array( 'select' => 'c.*', - 'from' => array( 'conf_settings' => 'c' ), - 'where' => "c.conf_group='{$conf_group}'", - 'order' => 'c.conf_position, c.conf_title', - 'limit' => array( $start,$end ), - 'add_join' => array( 0 => array( 'select' => 'cc.conf_title_title', - 'from' => array( 'conf_settings_titles' => 'cc' ), - 'where' => 'cc.conf_title_id=c.conf_group', - 'type' => 'left' - ) ) - ) ); - - $this->ipsclass->DB->simple_exec(); - - while ( $r = $this->ipsclass->DB->fetch_row() ) - { - $group_title = $r['conf_title_title']; - - $conf_entry[ $r['conf_id'] ] = $r; - - if ( $r['conf_end_group'] ) - { - $in_g = 0; - } - - if ( $in_g ) - { - $this->in_group[] = $r['conf_id']; - } - - if ( $r['conf_start_group'] ) - { - $in_g = 1; - } - } - - $title = "Настройки для группы: {$group_title}"; - } - - $key_array = array(); + $pages = $this->ipsclass->adskin->build_pagelinks( array( 'TOTAL_POSS' => $this->setting_groups[$conf_group]['conf_title_count'], + 'PER_PAGE' => $end, + 'CUR_ST_VAL' => $start, + 'L_SINGLE' => "", + 'L_MULTI' => "Multi Page", + 'BASE_URL' => $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=setting_view&search={$search_key}", + 'search' => $search_key, + ) ); //----------------------------------------- // start table //----------------------------------------- - $this->ipsclass->html .= "
    -
    - - - - \n"; + $html .= "\n"; } $html .= ""; @@ -283,7 +241,7 @@ class admin_skin if ($text != "") { - $html .= "
    \n"; + $html .= "
    \n"; } $html .= ""; @@ -358,7 +316,7 @@ class admin_skin $html = "\n"; $html = ""; - $no = "   Нет"; + $yes = "Yes   "; + $no = "   No"; if ($default_val == 1) { - $yes = "Да   "; + $yes = "Yes   "; } else { - $no = "   Нет"; + $no = "   No"; } @@ -472,6 +430,8 @@ class admin_skin } } + + //----------------------------------------- //-------------------------------------------------------------------- // SCREEN ELEMENTS @@ -493,15 +453,17 @@ class admin_skin function start_table( $title="", $desc="") { + $html = ""; + if ($title != "") { $this->has_title = 1; $html .= "
    -
    $title
    \n"; +
    $title
    \n"; if ( $desc != "" ) { - $html .= "
    $desc
    \n"; + $html .= "
    $desc
    \n"; } } @@ -516,6 +478,9 @@ class admin_skin // Auto remove two   only headers.. + $this->td_header[1][0] = ( isset($this->td_header[1][0]) AND $this->td_header[1][0] ) ? $this->td_header[1][0] : ''; + $this->td_header[1][1] = ( isset($this->td_header[1][1]) AND $this->td_header[1][1] ) ? $this->td_header[1][1] : ''; + if ( $this->td_header[0][0] == ' ' && $this->td_header[1][0] == ' ' && ( ! isset( $this->td_header[2][0] ) ) ) { $this->td_header[0][0] = '{none}'; @@ -535,7 +500,7 @@ class admin_skin if ($td[0] != '{none}') { - $html .= "
    \n"; + $html .= "\n"; } $this->td_colspan++; @@ -550,7 +515,7 @@ class admin_skin //----------------------------------------- - function add_standalone_row($text = "", $align='center', $class='pformstrip') + function add_standalone_row($text = "", $align='center', $class='tablesubheader') { return "
    {$text}
    \n"; } @@ -570,7 +535,7 @@ class admin_skin for ($i = 0; $i < $count ; $i++ ) { - $td_col = $i % 2 ? 'tdrow2' : 'tdrow1'; + $td_col = $i % 2 ? 'tablerow2' : 'tablerow1'; if ($css != "") { @@ -587,7 +552,7 @@ class admin_skin } else { - if ($this->td_header[$i][1] != "") + if (isset($this->td_header[$i][1]) AND $this->td_header[$i][1] != "") { $width = " width='{$this->td_header[$i][1]}' "; } @@ -609,7 +574,7 @@ class admin_skin //----------------------------------------- - function add_td_basic($text="",$align="left",$id="tdrow1", $colspanint=0) { + function add_td_basic($text="",$align="left",$id="tablerow1", $colspanint=0) { $html = ""; $colspan = ""; @@ -682,6 +647,111 @@ class admin_skin
    ".$this->ipsclass->admin->skin_jump_menu()."
    "; } + + + /*-------------------------------------------------------------------------*/ + // Build up page span links + /*-------------------------------------------------------------------------*/ + + /** + * Build up page span links + * + * @param array Page data + * @return string Parsed page links HTML + * @since 2.0 + */ + function build_pagelinks($data) + { + $work = array( 'page_span' => NULL, 'st_dots' => NULL, 'pages' => 0 ); + + $section = (!isset($data['leave_out']) OR $data['leave_out'] == "") ? 2 : $data['leave_out']; // Number of pages to show per section( either side of current), IE: 1 ... 4 5 [6] 7 8 ... 10 + + $use_st = (!isset($data['USE_ST']) OR $data['USE_ST'] == "") ? 'st' : $data['USE_ST']; + + //----------------------------------------- + // Get the number of pages + //----------------------------------------- + + if ( $data['TOTAL_POSS'] > 0 ) + { + $work['pages'] = ceil( $data['TOTAL_POSS'] / $data['PER_PAGE'] ); + } + + $work['pages'] = $work['pages'] ? $work['pages'] : 1; + + //----------------------------------------- + // Set up + //----------------------------------------- + + $work['total_page'] = $work['pages']; + $work['current_page'] = $data['CUR_ST_VAL'] > 0 ? ($data['CUR_ST_VAL'] / $data['PER_PAGE']) + 1 : 1; + + //----------------------------------------- + // Next / Previous page linkie poos + //----------------------------------------- + + $previous_link = ""; + $next_link = ""; + + if ( $work['current_page'] > 1 ) + { + $start = $data['CUR_ST_VAL'] - $data['PER_PAGE']; + $previous_link = $this->ipsclass->skin_acp_global->pagination_previous_link("{$data['BASE_URL']}&$use_st=$start"); + } + + if ( $work['current_page'] < $work['pages'] ) + { + $start = $data['CUR_ST_VAL'] + $data['PER_PAGE']; + $next_link = $this->ipsclass->skin_acp_global->pagination_next_link("{$data['BASE_URL']}&$use_st=$start"); + } + + //----------------------------------------- + // Loppy loo + //----------------------------------------- + + if ($work['pages'] > 1) + { + $work['first_page'] = $this->ipsclass->skin_acp_global->pagination_make_jump($work['pages']); + + for( $i = 0; $i <= $work['pages'] - 1; ++$i ) + { + $RealNo = $i * $data['PER_PAGE']; + $PageNo = $i+1; + + if ($RealNo == $data['CUR_ST_VAL']) + { + $work['page_span'] .= $this->ipsclass->skin_acp_global->pagination_current_page($PageNo); + } + else + { + if ($PageNo < ($work['current_page'] - $section)) + { + $work['st_dots'] = $this->ipsclass->skin_acp_global->pagination_start_dots($data['BASE_URL']); + continue; + } + + // If the next page is out of our section range, add some dotty dots! + + if ($PageNo > ($work['current_page'] + $section)) + { + $work['end_dots'] = $this->ipsclass->skin_acp_global->pagination_end_dots("{$data['BASE_URL']}&$use_st=".($work['pages']-1) * $data['PER_PAGE']); + break; + } + + + $work['page_span'] .= $this->ipsclass->skin_acp_global->pagination_page_link("{$data['BASE_URL']}&$use_st={$RealNo}",$PageNo); + } + } + + $work['return'] = $this->ipsclass->skin_acp_global->pagination_compile($work['first_page'],$previous_link,$work['st_dots'],$work['page_span'],$work['end_dots'],$next_link,$data['TOTAL_POSS'],$data['PER_PAGE'], $data['BASE_URL']); + } + else + { + $work['return'] = $data['L_SINGLE']; + } + + return $work['return']; + } } diff --git a/upload/sources/lib/admin_template_functions.php b/upload/sources/lib/admin_template_functions.php index 74c96b13..8f6fae3b 100644 --- a/upload/sources/lib/admin_template_functions.php +++ b/upload/sources/lib/admin_template_functions.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -34,6 +24,11 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_ACP' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class admin_template_functions { @@ -45,6 +40,7 @@ class admin_template_functions var $menu_widthchange = ""; var $menu_highchange = ""; var $default_css = ""; + var $type = ""; //----------------------------------------- // Constructor @@ -72,11 +68,11 @@ class admin_template_functions //-->
    -
    +
    $title"; + $html .= "
    +
    + + + + + $html .= "  
    $title"; if ( ! $search_key AND ! $this->get_by_key ) { - $this->ipsclass->html .= $this->ipsclass->adskin->js_make_button("Добавить новую настройку" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=settingnew&conf_group=".$conf_group).' '; - $this->ipsclass->html .= ""; + $html .= $this->ipsclass->adskin->js_make_button("Add New Setting" , $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=settingnew&conf_group=".$conf_group).' '; + $html .= ""; } - $this->ipsclass->html .= "  
    "; + + //----------------------------------------- + // Pre-parse... + //----------------------------------------- - if ( is_array( $conf_entry ) and count( $conf_entry ) ) + if ( is_array( $load_modules ) AND count( $load_modules ) ) { - foreach( $conf_entry as $id => $r ) + foreach( $load_modules as $_module ) { - $this->ipsclass->html .= $this->_setting_process_entry( $r ); + $_module = $this->ipsclass->txt_filename_clean( $_module ); + $_name = 'setting_' . str_replace( '.php', '', $_module ); + $_file = ROOT_PATH . 'sources/components_acp/setting_plugins/'.$_module; + + if ( file_exists( $_file ) ) + { + require_once( $_file ); + $_plugin = new $_name; + $_plugin->ipsclass =& $this->ipsclass; + + $conf_entry = $_plugin->settings_pre_parse( $conf_entry ); + } } } + //----------------------------------------- + // Continue... + //----------------------------------------- + + if ( is_array( $conf_entry ) and count( $conf_entry ) ) + { + foreach( $conf_entry as $r ) + { + if ( ! $_show_error ) + { + if ( $r['_error'] ) + { + $_show_error = 1; + } + } + + $html .= $this->_setting_process_entry( $r ); + } + } + + if ( $_show_error ) + { + $this->ipsclass->html .= $this->ipsclass->skin_acp_global->warning_box( "Settings Error", "One or more of the settings returned an error.
    The settings were NOT updated." ) . "
    "; + } + + $this->ipsclass->html .= $html; + $this->ipsclass->html .= ""; - $this->ipsclass->html .= "
    "; + $this->ipsclass->html .= "
    "; - $this->ipsclass->html .= "

    Системные настройки ".$this->setting_make_dropdown()."
    "; + $this->ipsclass->html .= "

    Settings Quick Jump".$this->setting_make_dropdown()."
    "; $this->ipsclass->admin->output(); } @@ -1453,14 +1728,16 @@ class ad_settings { $start = ""; $end = ""; $revert_button = ""; - $tdrow1 = "tdrow1"; - $tdrow2 = "tdrow2"; + $tablerow1 = "tablerow1"; + $tablerow2 = "tablerow2"; $key = $r['conf_key']; $value = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default']; $show = 1; + $r['conf_evalphp'] = str_replace("\", "\\", stripslashes($r['conf_evalphp'])); + //----------------------------------------- // Default? //----------------------------------------- @@ -1469,9 +1746,14 @@ class ad_settings { if ( $r['conf_value'] != "" and ( $r['conf_value'] != $r['conf_default'] ) ) { - $tdrow1 = "tdrow1shaded"; - $tdrow2 = "tdrow2shaded"; - $revert_button = ""; + $tablerow1 = "tablerow1shaded"; + $tablerow2 = "tablerow2shaded"; + $revert_button = ""; + + if( $r['conf_type'] == 'editor' ) + { + $revert_button .= "
    "; + } } //----------------------------------------- @@ -1480,20 +1762,48 @@ class ad_settings { if ( $r['conf_evalphp'] ) { - $show = 1; - eval( $r['conf_evalphp'] ); + if ( $this->ipsclass->hax_check_for_executable_code( $r['conf_evalphp'] ) === TRUE ) + { + $this->ipsclass->main_msg = "Setting PHP code not evaluated. EVAL code contains PHP command keywords."; + } + else + { + $save = 0; + $show = 1; + eval( $r['conf_evalphp'] ); + } } switch( $r['conf_type'] ) { case 'input': - $form_element = $this->ipsclass->adskin->form_input( $key, str_replace( "'", "'", $value ) ); + $form_element = $this->ipsclass->adskin->form_input( $key, str_replace( "'", "'", str_replace( '"', """, $value ) ) ); break; case 'textarea': $form_element = $this->ipsclass->adskin->form_textarea( $key, $value, 45, 5 ); break; + case 'editor': + if ( $this->han_editor->method == 'rte' ) + { + $value = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $value ) ); + $value = $this->parser->convert_ipb_html_to_html( $value ); + } + else + { + $this->parser->parse_html = 1; + $this->parser->parse_nl2br = 1; + $this->parser->parse_smilies = 0; + $this->parser->parse_bbcode = 1; + + $value = $this->parser->pre_edit_parse( $value ); + } + + $form_element = $this->han_editor->show_editor( $value, $key ); + + break; + case 'yes_no': $form_element = $this->ipsclass->adskin->form_yes_no( $key, $value ); break; @@ -1557,8 +1867,21 @@ class ad_settings { break; } - $delete = "| Удалить"; - $edit = "Изменить"; + //----------------------------------------- + // Error? + //----------------------------------------- + + if ( $r['_error'] ) + { + $form_element = "
    ".$r['_error']."
    " . $form_element; + } + + //----------------------------------------- + // Continue + //----------------------------------------- + + $delete = "| Delete"; + $edit = "Edit"; $reorder = 1; if ( $r['conf_protected'] and ! IN_DEV ) @@ -1572,7 +1895,7 @@ class ad_settings { { $start = "
    -
    {$r['conf_start_group']}
    "; +
    {$r['conf_start_group']}
    "; } else { @@ -1600,22 +1923,28 @@ class ad_settings { // Search hi-lite //----------------------------------------- + $this->ipsclass->input['search'] = isset($this->ipsclass->input['search']) ? $this->ipsclass->input['search'] : ''; + if ( $this->ipsclass->input['search'] ) { + $this->ipsclass->input['search'] = $this->ipsclass->txt_alphanumerical_clean( $this->ipsclass->input['search'] ); + $r['conf_title'] = preg_replace( "/(".$this->ipsclass->input['search'].")/i", "\\1", $r['conf_title'] ); + $r['conf_description'] = preg_replace( "/(".$this->ipsclass->input['search'].")/i", "\\1", $r['conf_description'] ); + $r['conf_description'] .= "

    Setting Group: {$r['conf_title_title']}"; } - $html .= "$start + $html = "$start - - + + "; if ( ! $this->get_by_key AND ( $edit or $delete ) ) { - $html .= ""; @@ -1623,7 +1952,7 @@ class ad_settings { if ( ! $this->ipsclass->input['search'] and $reorder AND ! $this->get_by_key ) { - $html .= ""; + $html .= ""; } $html .= " @@ -1642,8 +1971,41 @@ class ad_settings { function setting_start() { - $this->ipsclass->admin->page_title = "Системные настройки"; - $this->ipsclass->admin->page_detail = "Эта секция позволяет вам изменять системные настройки вашего IPB."; + $this->ipsclass->admin->page_title = "System Configuration Settings"; + $this->ipsclass->admin->page_detail = "This section contains all the configuration options for your IPB."; + + //----------------------------------------- + // Are we, like, in dev or what? + //----------------------------------------- + + if ( IN_DEV ) + { + $last_update = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'cache_store', + 'where' => "cs_key='in_dev_setting_update'" ) ); + + if ( ! $last_update['cs_value'] ) + { + $this->ipsclass->DB->do_delete( 'cache_store', "cs_key='in_dev_setting_update'" ); + $this->ipsclass->DB->do_insert( 'cache_store', array( 'cs_value' => time(), 'cs_key' => "in_dev_setting_update" ) ); + $last_update = time(); + } + + $last_settings_save = intval( @filemtime( ROOT_PATH . 'resources/settings.xml' ) ); + + if ( $last_settings_save > $last_update['cs_value'] ) + { + $_mtime = $this->ipsclass->get_date( $last_settings_save , 'JOINED' ); + $_dbtime = $this->ipsclass->get_date( $last_update['cs_value'], 'JOINED' ); + + $_html = $this->ipsclass->skin_acp_global->warning_box( "settings.xml File Updated", + "The 'resources/settings.xml' file has been updated. Please visit this page to re-import it to make sure your settings are up-to-date +
    Last modified time for 'settings.xml': $_mtime. +
    Last import run: $_dbtime" ) . "
    "; + + $this->ipsclass->html .= $_html; + } + } //$this->setting_titles_check(); @@ -1657,8 +2019,8 @@ class ad_settings { $basic_title = "
    {$r['conf_title']}
    {$r['conf_description']}
    {$revert_button}
    {$form_element}
    {$r['conf_title']}
    {$r['conf_description']}
    {$revert_button}
    {$form_element}
    + $html .= " {$edit} {$delete}
    - - +
    Системные настройки
     
    " +
    System Settings
     
    " ."  
    "; @@ -1671,29 +2033,39 @@ class ad_settings { $this->setting_get_groups(); - foreach( $this->setting_groups as $i => $r ) + foreach( $this->setting_groups as $r ) { if ( $r['conf_title_noshow'] ) { - $hidden = ' (невидимые)'; + $hidden = ' (Hidden)'; } else { $hidden = ''; } - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
    Папка
    ", - "{$r['conf_title_title']}$hidden (".intval($r['conf_title_count'])." настроек)
    {$r['conf_title_desc']}
    " , + if( IN_DEV ) + { + $in_dev_extra = "Export"; + } + else + { + $in_dev_extra = ''; + } + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
    Folder
    ", + "{$r['conf_title_title']}$hidden (".intval($r['conf_title_count'])." settings)
    {$r['conf_title_desc']}
    " , array("
    - Редактировать - Удалить - Пересчитать -
    ", 1, 'tdrow3' ) + Edit + Delete + Recount + {$in_dev_extra} +
    ", 1, 'tablerow3' ) ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( array("
    ". - $this->ipsclass->adskin->js_make_button("Добавить группу настроек", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=settinggroup_new")."
    ", 3, 'pformstrip' ) + $this->ipsclass->adskin->js_make_button("Add Setting Group", $this->ipsclass->base_url."&{$this->ipsclass->form_code}&code=settinggroup_new")."
    ", 3, 'tablesubheader' ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -1716,17 +2088,21 @@ class ad_settings { //----------------------------------------- - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Импорт системных настроек (XML)" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "XML settings file tools" ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Загрузка XML-архива с настройками
    Этот файл должен начинаться с 'ipb_' и заканчиваться '.xml' или '.xml.gz'.
    Существующие настройки будут обновлены, другие же добавлены.
    " , - $this->ipsclass->adskin->form_upload( ) - ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Upload XML settings file from your computer
    Duplicate entries will not be overwritten but the default setting and other options will be updated. The file must end with either '.xml' or '.xml.gz'
    " , + $this->ipsclass->adskin->form_upload( ) + ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "ИЛИ введите название файла-архива
    Этот файл должен быть загружен в корневую папку вашего форума.
    " , - $this->ipsclass->adskin->form_input( 'file_location', 'ipb_settings_partial.xml' ) - ) ); + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "OR enter the filename of the XML settings file
    The file must be uploaded into the forum's root folder
    " , + $this->ipsclass->adskin->form_input( 'file_location', 'resources/settings.xml' ) + ) ); + + $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Tool To Run
    Please choose the tool you wish to run
    " , + $this->ipsclass->adskin->form_dropdown( 'tool', array( 0 => array( 'import', 'Import Settings' ), 1 => array( 'check', 'Show New & Deleted Settings' ) ) ) + ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Импортировать XML-архив с настройками"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Run Tool"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -1734,16 +2110,14 @@ class ad_settings { // Other & Dev options //----------------------------------------- - $this->ipsclass->html .= "

    "; + $this->ipsclass->html .= "

    "; if ( IN_DEV ) { - $this->ipsclass->html .= "
    "; + $this->ipsclass->html .= "
    Developer Options: Export all to XML
    "; } $this->ipsclass->admin->output(); - - } //----------------------------------------- @@ -1756,7 +2130,9 @@ class ad_settings { // INIT //----------------------------------------- - $bounceback = str_replace( '&', '&', $this->ipsclass->input['bounceback'] ); + $bounceback = str_replace( '&', '&', $this->ipsclass->input['bounceback'] ); + $load_modules = array(); + $db_fields = array(); //----------------------------------------- // Check @@ -1764,7 +2140,7 @@ class ad_settings { if ( ! $this->ipsclass->input['id'] and ! $this->ipsclass->input['search'] ) { - $this->ipsclass->main_msg = "Вы должны ввести ID системной настройки"; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->setting_start(); } @@ -1772,7 +2148,7 @@ class ad_settings { // Reorder? //----------------------------------------- - if ( $this->ipsclass->input['reorder'] ) + if ( isset($this->ipsclass->input['reorder']) AND $this->ipsclass->input['reorder'] ) { foreach ($this->ipsclass->input as $key => $value) { @@ -1780,12 +2156,12 @@ class ad_settings { { if ( isset( $this->ipsclass->input[$match[0]]) ) { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_position' => $this->ipsclass->input[$match[0]] ), 'conf_id='.$match[1] ); + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_position' => $this->ipsclass->input[$match[0]] ), 'conf_id='.intval($match[1]) ); } } } - $this->ipsclass->main_msg = "Системные настройки пересортированы"; + $this->ipsclass->main_msg = "Settings reordered"; $this->ipsclass->input['conf_group'] = $this->ipsclass->input['id']; @@ -1800,7 +2176,7 @@ class ad_settings { if ( ! count($fields ) ) { - $this->ipsclass->main_msg = "Нет полей для сохранения"; + $this->ipsclass->main_msg = "No fields were passed to be saved"; $this->ipsclass->settings_view(); } @@ -1808,27 +2184,142 @@ class ad_settings { // Get info from DB //----------------------------------------- - $db_fields = array(); - - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings', 'where' => "conf_key IN ('".implode( "','", $fields )."')" ) ); - $this->ipsclass->DB->simple_exec(); + $this->ipsclass->DB->build_query( array( 'select' => 's.*', + 'from' => array( 'conf_settings' => 's' ), + 'where' => "conf_key IN ('".implode( "','", $fields )."')", + 'add_join' => array( 0 => array( 'select' => 'c.*', + 'from' => array( 'conf_settings_titles' => 'c' ), + 'where' => 'c.conf_title_id=s.conf_group', + 'type' => 'inner' ) ) ) ); + + $this->ipsclass->DB->exec_query(); while ( $r = $this->ipsclass->DB->fetch_row() ) { - $db_fields[ $r['conf_key'] ] = $r; + if ( $r['conf_title_module'] ) + { + $load_modules[ $r['conf_title_module'] ] = $r['conf_title_module']; + } + + $r['_value'] = $_POST[ $r['conf_key'] ]; + + $db_fields[ $r['conf_id'] ] = $r; } - foreach( $db_fields as $key => $data ) + //----------------------------------------- + // Post-parse... + //----------------------------------------- + + if ( is_array( $load_modules ) AND count( $load_modules ) ) { + foreach( $load_modules as $_module ) + { + $_module = $this->ipsclass->txt_filename_clean( $_module ); + $_name = 'setting_' . str_replace( '.php', '', $_module ); + $_file = ROOT_PATH . 'sources/components_acp/setting_plugins/'.$_module; + + if ( file_exists( $_file ) ) + { + require_once( $_file ); + $_plugin = new $_name; + $_plugin->ipsclass =& $this->ipsclass; + + $db_fields = $_plugin->settings_post_parse( $db_fields ); + } + } + + //----------------------------------------- + // Got any errors? + //----------------------------------------- + + $_error = 0; + + foreach( $db_fields as $_id => $data ) + { + if ( $data['_error'] ) + { + $_error = 1; + break; + } + } + + if ( $_error ) + { + $this->setting_view( $db_fields ); + return; + } + } + + //----------------------------------------- + // Continue + //----------------------------------------- + + foreach( $db_fields as $id => $data ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $key = $data['conf_key']; + + //----------------------------------------- + // Evil eval + //----------------------------------------- + if ( $data['conf_evalphp'] ) { - $save = 1; - eval( $data['conf_evalphp'] ); + if ( $this->ipsclass->hax_check_for_executable_code( $data['conf_evalphp'] ) === TRUE ) + { + $this->ipsclass->main_msg = "Setting PHP code not evaluated. EVAL code contains PHP command keywords."; + } + else + { + $value = $data['_value']; + + $show = 0; + $save = 1; + eval( $data['conf_evalphp'] ); + $data['_value'] = $_POST[ $key ]; + } + } + + if ( $data['conf_type'] == 'editor' ) + { + if( !$this->editor_loaded ) + { + //----------------------------------------- + // Load and config the std/rte editors + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_editor.php" ); + $this->han_editor = new han_editor(); + $this->han_editor->ipsclass =& $this->ipsclass; + $this->han_editor->init(); + + //----------------------------------------- + // Load and config the post parser + //----------------------------------------- + + require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); + $this->parser = new parse_bbcode(); + $this->parser->ipsclass =& $this->ipsclass; + $this->parser->allow_update_caches = 1; + + $this->parser->bypass_badwords = 1; + + $this->editor_loaded = 1; + } + + $data['_value'] = $this->han_editor->process_raw_post( $key ); + $this->parser->parse_smilies = 0; + $this->parser->parse_html = 1; + $this->parser->parse_bbcode = 1; + $data['_value'] = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $data['_value'] ) ); } - if ( ($_POST[ $key ] != $data['conf_default']) ) + if ( ($data['_value'] != $data['conf_default']) ) { - $value = str_replace( "'", "'", $this->ipsclass->txt_stripslashes($_POST[ $key ]) ); + $value = str_replace( "'", "'", $this->ipsclass->txt_stripslashes($data['_value']) ); $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => $value ), 'conf_id='.$data['conf_id'] ); } @@ -1836,11 +2327,15 @@ class ad_settings { { $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => '' ), 'conf_id='.$data['conf_id'] ); } + else if ( isset($this->ipsclass->input[ $key ]) AND empty($this->ipsclass->input[ $key ]) ) + { + $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => '' ), 'conf_id='.$data['conf_id'] ); + } } $this->ipsclass->input['conf_group'] = $this->ipsclass->input['id']; - $this->ipsclass->main_msg = "Системные настройки обновлены"; + $this->ipsclass->main_msg = "Settings updated"; $this->setting_rebuildcache(); @@ -1869,20 +2364,34 @@ class ad_settings { function setting_save($type='add') { + //----------------------------------------- + // What are we doing? + //----------------------------------------- + if ( $type == 'edit' ) { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Вы должны ввести ID системной настройки"; - $this->setting_form(); + $this->ipsclass->main_msg = "No ID was passed, please try again"; + $this->setting_form( $type ); } } + //----------------------------------------- + // EVAL check + //----------------------------------------- + + if ( $this->ipsclass->hax_check_for_executable_code( $_POST['conf_evalphp'] ) === TRUE ) + { + $this->ipsclass->main_msg = "You cannot use executable PHP function keywords such as (include, require, include_once, require_once, exec, system and passthru)."; + $this->setting_form( $type ); + } + //----------------------------------------- // check... //----------------------------------------- - $conf_group = $this->ipsclass->input['conf_newgroup'] ? $this->ipsclass->input['conf_newgroup'] : $this->ipsclass->input['conf_group']; + $conf_group = ( isset($this->ipsclass->input['conf_newgroup']) ANd $this->ipsclass->input['conf_newgroup'] ) ? $this->ipsclass->input['conf_newgroup'] : $this->ipsclass->input['conf_group']; $array = array( 'conf_title' => $this->ipsclass->input['conf_title'], 'conf_description' => $this->ipsclass->txt_stripslashes( $_POST['conf_description'] ), @@ -1892,7 +2401,7 @@ class ad_settings { 'conf_value' => $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_UNhtmlspecialchars($_POST['conf_value']) ), 'conf_default' => $this->ipsclass->txt_stripslashes( $this->ipsclass->txt_UNhtmlspecialchars($_POST['conf_default']) ), 'conf_extra' => $this->ipsclass->txt_stripslashes( $_POST['conf_extra'] ), - 'conf_evalphp' => $this->ipsclass->txt_stripslashes( $_POST['conf_evalphp'] ), + 'conf_evalphp' => ($this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] ) ? $this->ipsclass->txt_stripslashes( $_POST['conf_evalphp'] ) : '', 'conf_protected' => intval( $this->ipsclass->input['conf_protected'] ), 'conf_position' => intval( $this->ipsclass->input['conf_position'] ), 'conf_start_group' => $this->ipsclass->input['conf_start_group'], @@ -1905,15 +2414,15 @@ class ad_settings { if ( $type == 'add' ) { $this->ipsclass->DB->do_insert( 'conf_settings', $array ); - $this->ipsclass->main_msg = 'Новая системная настройка добавлена'; + $this->ipsclass->main_msg = 'New Setting Added'; $this->ipsclass->DB->simple_exec_query( array( 'update' => 'conf_settings_titles', 'set' => 'conf_title_count=conf_title_count+1', 'where' => 'conf_title_id='.$this->ipsclass->input['conf_group'] ) ); } else { - $this->ipsclass->DB->do_update( 'conf_settings', $array, 'conf_id='.$this->ipsclass->input['id'] ); - $this->ipsclass->main_msg = 'Системная настройка изменена'; + $this->ipsclass->DB->do_update( 'conf_settings', $array, 'conf_id='.intval($this->ipsclass->input['id']) ); + $this->ipsclass->main_msg = 'Setting Edited'; } $this->setting_rebuildcache(); @@ -1931,7 +2440,7 @@ class ad_settings { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Вы должны ввести ID системной настройки"; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->setting_form(); } @@ -1943,7 +2452,7 @@ class ad_settings { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'conf_settings', 'set' => "conf_value=''", 'where' => 'conf_id='.$this->ipsclass->input['id'] ) ); - $this->ipsclass->main_msg = "Системная настройка возвращена к первоначальному виду."; + $this->ipsclass->main_msg = "Configuration setting reverted back to default."; $this->setting_rebuildcache(); @@ -1959,21 +2468,21 @@ class ad_settings { { if ( ! $this->ipsclass->input['id'] ) { - $this->ipsclass->main_msg = "Вы должны ввести ID системной настройки"; + $this->ipsclass->main_msg = "No ID was passed, please try again"; $this->setting_form(); } - $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_id='.$this->ipsclass->input['id'] ) ); + $conf = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_id='.intval($this->ipsclass->input['id']) ) ); //----------------------------------------- // Delete... //----------------------------------------- - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'conf_settings', 'where' => 'conf_id='.$this->ipsclass->input['id'] ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'conf_settings', 'where' => 'conf_id='.intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec_query( array( 'update' => 'conf_settings_titles', 'set' => 'conf_title_count=conf_title_count-1', 'where' => 'conf_title_id='.$conf['conf_group'] ) ); - $this->ipsclass->main_msg = "Системная настройка изменена"; + $this->ipsclass->main_msg = "Configuration Setting Deleted"; $this->setting_rebuildcache(); @@ -2057,7 +2566,7 @@ class ad_settings { : ""; } - return $ret."\n"; + return $ret."\n"; } //----------------------------------------- @@ -2084,7 +2593,7 @@ class ad_settings { // Explain how, why and what to do.. $this->ipsclass->admin->page_detail = ""; - $this->ipsclass->admin->page_title = "Продолжение невозможно"; + $this->ipsclass->admin->page_title = "Unable to continue"; $this->ipsclass->html .= $this->ipsclass->adskin->add_td_basic( $this->return_sql_no_no_cant_do_it_sorry_text(), 'left', 'faker' ); @@ -2100,12 +2609,12 @@ class ad_settings { } else { - $this->ipsclass->admin->error("Извините, ваша версия MySQL не поддерживает поиск по полному тексту"); + $this->ipsclass->admin->error("Sorry, the version of MySQL that you are using is unable to use FULLTEXT searches"); } - $this->ipsclass->admin->save_log("Обновлены настройки поиска по полному тексту"); + $this->ipsclass->admin->save_log("Full Text Options Updated"); - $this->ipsclass->admin->done_screen("Индексы поиска по полному тексты перестроены", "Настройки поиска по полному тексту", "{$this->ipsclass->form_code}&code=setting_view&conf_group=19", "redirect" ); + $this->ipsclass->admin->done_screen("Full Text Indexes Rebuilt", "Full Text Settings", "{$this->ipsclass->form_code}&code=setting_view&conf_group=19", "redirect" ); } /*-------------------------------------------------------------------------*/ @@ -2166,11 +2675,11 @@ class ad_settings { if ( $field == 'gd_font' OR $field == 'html_dir' OR $field == 'upload_dir') { - $_POST[ $field ] = preg_replace( "/'/", "'", $_POST[ $field ] ); + $_POST[ $field ] = str_replace( "'", "'", $_POST[ $field ] ); } else { - $_POST[ $field ] = preg_replace( "/'/", "'", stripslashes($_POST[ $field ]) ); + $_POST[ $field ] = str_replace( "'", "'", stripslashes($_POST[ $field ]) ); } $master[ $field ] = stripslashes($_POST[ $field ]); @@ -2180,13 +2689,14 @@ class ad_settings { } } - $this->ipsclass->admin->save_log("Обновлены настройки форума, Back Up записан"); + $this->ipsclass->admin->save_log("Board Settings Updated, Back Up Written"); - $this->ipsclass->admin->done_screen("Конфигурация обновлена", "Начало Админцентра", "act=index" ); + $this->ipsclass->admin->done_screen("Forum Configurations updated", "Administration CP Home", "act=index" ); } + function return_sql_no_no_cant_do_it_sorry_text() { return " @@ -2246,6 +2756,98 @@ depending on the number of posts you have. On average MySQL can index 80,000 pos "; } + + + function settinggroup_export() + { + if( empty( $this->ipsclass->input['conf_group'] ) ) + { + return; + } + + /** + * Santy + */ + $this->ipsclass->input['conf_group'] = intval($this->ipsclass->input['conf_group']); + + /** + * Require the XML class + */ + require_once( KERNEL_PATH . 'class_xml.php' ); + $xml = new class_xml(); + + /** + * Set the root tag + */ + $xml->xml_set_root( 'settingexport', array( 'exported' => time() ) ); + + /** + * Create base group + */ + $xml->xml_add_group( 'settinggroup' ); + + /** + * Grab title keyword first + */ + $conf_title = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'conf_title_title, conf_title_desc, conf_title_noshow, conf_title_keyword, conf_title_module', 'from' => 'conf_settings_titles', 'where' => "conf_title_id = {$this->ipsclass->input['conf_group']}" ) ); + + /** + * Die? + */ + if ( ! $conf_title ) + { + return; + } + + /** + * Create Content + */ + foreach( $conf_title as $field_name=>$field_value ) + { + $content[] = $xml->xml_build_simple_tag( $field_name, $field_value ); + } + + $content[] = $xml->xml_build_simple_tag( 'conf_is_title', 1 ); + + $entry[] = $xml->xml_build_entry( 'setting', $content ); + + /** + * Grab settings + */ + $this->ipsclass->DB->simple_select( '*', 'conf_settings', "conf_group = {$this->ipsclass->input['conf_group']}" ); + $this->ipsclass->DB->exec_query(); + + if( $this->ipsclass->DB->get_num_rows() ) + { + while( $row = $this->ipsclass->DB->fetch_row() ) + { + unset( $content ); + + foreach( $row as $field_name=>$field_value ) + { + $content[] = $xml->xml_build_simple_tag( $field_name, $field_value ); + } + + $content[] = $xml->xml_build_simple_tag( 'conf_title_keyword', $conf_title['conf_title_keyword'] ); + $content[] = $xml->xml_build_simple_tag( 'conf_is_title', 0 ); + + $entry[] = $xml->xml_build_entry( 'setting', $content ); + } + + $xml->xml_add_entry_to_group( 'settinggroup', $entry ); + } + + /** + * Format + */ + $xml->xml_format_document(); + + /** + * Send to browser + */ + $this->ipsclass->admin->show_download( $xml->xml_document, 'mod_settings.xml', '', 0 ); + } + } diff --git a/upload/sources/action_admin/skin_css.php b/upload/sources/action_admin/skin_css.php index 6470d662..2f43de38 100644 --- a/upload/sources/action_admin/skin_css.php +++ b/upload/sources/action_admin/skin_css.php @@ -2,27 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ -| > $Author: matt $ +| > $Date: 2006-10-12 21:32:23 +0100 (Thu, 12 Oct 2006) $ +| > $Revision: 634 $ +| > $Author: bfarber $ +--------------------------------------------------------------------------- | | > CSS management functions @@ -36,7 +27,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -65,17 +56,6 @@ class ad_skin_css function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- // Get the libraries //----------------------------------------- @@ -135,7 +115,7 @@ class ad_skin_css break; default: - print "Действия не выбраны"; exit(); + print "No action taken"; exit(); break; //case 'wrapper': @@ -170,16 +150,20 @@ class ad_skin_css if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Не выбран ID шаблона, вернитесь назад и повторите попытку"); + $this->ipsclass->admin->error("You must specify an existing wrapper ID, go back and try again"); } //----------------------------------------- - $this->ipsclass->DB->query("SELECT cssid, css_text, css_name, css_comments FROM ibf_skin_css WHERE cssid='".$this->ipsclass->input['id']."'"); + $this->ipsclass->DB->build_query( array( 'select' => 'cssid, css_text, css_name, css_comments', + 'from' => 'skin_css', + 'where' => 'cssid='.intval($this->ipsclass->input['id']) + ) ); + $this->ipsclass->DB->exec_query(); if ( ! $cssinfo = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Нельзя получить CSS из базы данных"); + $this->ipsclass->admin->error("Could not query the CSS details from the database"); } if ( $this->ipsclass->input['favour'] == 'cache' ) @@ -194,12 +178,10 @@ class ad_skin_css } else { - $this->ipsclass->admin->error("Нельзя найти Кеш CSS файла @ $cache_file"); + $this->ipsclass->admin->error("Could not locate cached CSS file @ $cache_file"); } - $dbr = $this->ipsclass->DB->compile_db_update_string( array( 'css_text' => $cache_data ) ); - - $this->ipsclass->DB->query("UPDATE ibf_skin_css SET $dbr WHERE cssid='".$this->ipsclass->input['id']."'"); + $this->ipsclass->DB->do_update( 'skin_css', array( 'css_text' => $cache_data ), 'cssid='.intval($this->ipsclass->input['id']) ); } else { @@ -230,8 +212,8 @@ class ad_skin_css { //----------------------------------------- - $this->ipsclass->admin->page_detail = "Найдено несоответствие между кеш стилем страницы и таблицой стилей сохраненной в базе данных."; - $this->ipsclass->admin->page_title = " Синхронизация таблицы стилей"; + $this->ipsclass->admin->page_detail = "A mismatch has been found between the cached style sheet and the style sheet stored in the database"; + $this->ipsclass->admin->page_title = "Resynchronise Style Sheet"; //----------------------------------------- @@ -249,18 +231,18 @@ class ad_skin_css $favour = 'db'; - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Синхранизировать CSS перед его редактированием..." ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Resynch CSS before editing..." ); if ( intval($cache_mtime) > intval($db_mtime) ) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "CSS в базе данных, последнее обновление: ".$this->ipsclass->admin->get_date($db_mtime, 'LONG'), - "CSS в базе данных, кол-во символов: $db_length", + "CSS in database last updated: ".$this->ipsclass->admin->get_date($db_mtime, 'LONG'), + "CSS in database, # characters: $db_length", ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "CSS в кеше, последнее обновление: ".$this->ipsclass->admin->get_date($cache_mtime, 'LONG')."", - "CSS в кеше, кол-во символов: $cache_length", + "CSS in CACHE last updated: ".$this->ipsclass->admin->get_date($cache_mtime, 'LONG')."", + "CSS in CACHE, # characters: $cache_length", ) ); $favour = 'cache'; @@ -268,25 +250,25 @@ class ad_skin_css else { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "CSS в базе данных, последнее обновление: ".$this->ipsclass->admin->get_date($db_mtime, 'LONG')."", - "CSS в базе данных, кол-во символов: $db_length", + "CSS in database last updated: ".$this->ipsclass->admin->get_date($db_mtime, 'LONG')."", + "CSS in database, # characters: $db_length", ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "CSS в кеше, последнее обновление: ".$this->ipsclass->admin->get_date($cache_mtime, 'LONG'), - "CSS в кеше, кол-во символов: $cache_length", + "CSS in CACHE last updated: ".$this->ipsclass->admin->get_date($cache_mtime, 'LONG'), + "CSS in CACHE, # characters: $cache_length", ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Использовать синхронизация....", + "Resynchronise using....", $this->ipsclass->adskin->form_dropdown( 'favour', array( - 0 => array( 'cache', 'Переписать версию базы данных с кеш версией'), - 1 => array( 'db' , 'Обновить версию кеша из базы данных' ), + 0 => array( 'cache', 'Overwrite database version with cached version'), + 1 => array( 'db' , 'Update cached version from the database' ), ), $favour ), ) ); - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Синхронизировать"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Resynchronise"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -294,12 +276,9 @@ class ad_skin_css //------------------------------- $this->ipsclass->admin->output(); - } - - //----------------------------------------- // OPTIMIZE STYLE SHEET //----------------------------------------- @@ -308,16 +287,17 @@ class ad_skin_css { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны уточнить текущий CSS ID, вернитесь и повторите заново"); + $this->ipsclass->admin->error("You must specify an existing CSS ID, go back and try again"); } //----------------------------------------- - $this->ipsclass->DB->query("SELECT * from ibf_skin_css WHERE cssid='".$this->ipsclass->input['id']."'"); + $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'skin_css', 'where' => 'cssid='.intval($this->ipsclass->input['id']) ) ); + $this->ipsclass->DB->exec_query(); if ( ! $row = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Невозможно запросить информацию из базы данных"); + $this->ipsclass->admin->error("Could not query the information from the database"); } //----------------------------------------- @@ -352,7 +332,7 @@ class ad_skin_css if ( count($parsed) < 1) { - $this->ipsclass->admin->error("Таблицы стиля находится в формате который не понимает Invision Power Board, оптимизация не произведена."); + $this->ipsclass->admin->error("The stylesheet is in a format that Invision Power Board cannot understand, no optimization done."); } //----------------------------------------- @@ -395,16 +375,16 @@ class ad_skin_css if ($final_size < 1000) { - $this->ipsclass->admin->error("Таблицы стиля находится в формате который не понимает Invision Power Board, оптимизация не произведена."); + $this->ipsclass->admin->error("The stylesheet is in a format that Invision Power Board cannot understand, no optimization done."); } //----------------------------------------- // Update the DB //----------------------------------------- - $dbs = $this->ipsclass->DB->compile_db_update_string( array( 'css_text' => $final ) ); + $dbs = $this->ipsclass->DB->compile_db_update_string( ); - $this->ipsclass->DB->query("UPDATE ibf_skin_css SET $dbs WHERE cssid='".$this->ipsclass->input['id']."'"); + $this->ipsclass->DB->do_update( 'skin_css', array( 'css_text' => $final ), 'cssid='.intval($this->ipsclass->input['id']) ); $saved = $orig_size - $final_size; $pc_saved = 0; @@ -414,10 +394,7 @@ class ad_skin_css $pc_saved = sprintf( "%.2f", ($saved / $orig_size) * 100); } - $this->ipsclass->admin->done_screen("Таблица стилей обновлена: Изменения сохранены: $saved ($pc_saved %)", "Настройка таблицы стилей", "{$this->ipsclass->form_code}" ); - - - + $this->ipsclass->admin->done_screen("Stylesheet updated: Characters Saved: $saved ($pc_saved %)", "Manage Style Sheets", "{$this->ipsclass->form_code}" ); } @@ -427,6 +404,8 @@ class ad_skin_css function save_css( $type='add' ) { + $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); + //----------------------------------------- // Check input //----------------------------------------- @@ -435,14 +414,14 @@ class ad_skin_css { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны уточнить текущий CSS ID, вернитесь и повторите заново"); + $this->ipsclass->admin->error("You must specify an existing CSS ID, go back and try again"); } } if ($this->ipsclass->input['txtcss'] == "") { - $this->ipsclass->admin->error("Ваша таблица стилей не должна быть пустой"); + $this->ipsclass->admin->error("You can't have an empty stylesheet, can you?"); } @@ -455,7 +434,7 @@ class ad_skin_css // Update cache? //----------------------------------------- - $extra = "Файл кеша таблицы стилей обновлен"; + $extra = "Stylesheet cache file updated"; $message = $this->ipsclass->cache_func->_write_css_to_cache( $this->ipsclass->input['id'] ); @@ -465,9 +444,9 @@ class ad_skin_css if ( ! $this->ipsclass->input['savereload'] ) { - $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code ,'Управление стилем' ); - $this->ipsclass->main_msg = "Таблица стилей обновлена: $extra"; - $this->ipsclass->admin->redirect( $this->ipsclass->base_url.'§ion='.$this->ipsclass->section_code.'&act=sets', "Таблица стилей обновлена, вернитесь к управлению скином" ); + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code ,'Skin Manager Home' ); + $this->ipsclass->main_msg = "Stylesheet updated : $extra"; + $this->ipsclass->admin->redirect( $this->ipsclass->base_url.'§ion='.$this->ipsclass->section_code.'&act=sets', "Stylesheet updated, returning to the skin manager" ); } else { @@ -475,14 +454,12 @@ class ad_skin_css // Reload edit window //----------------------------------------- - $this->ipsclass->main_msg = "Таблица стилей обновлена: $extra"; + $this->ipsclass->main_msg = "Stylesheet updated : $extra"; $this->do_form('edit'); } } - - //----------------------------------------- // Show Add/Edit form //----------------------------------------- @@ -493,9 +470,11 @@ class ad_skin_css if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны уточнить ID текущего шаблона, вернитесь и повторите заново"); + $this->ipsclass->admin->error("You must specify an existing wrapper ID, go back and try again"); } + $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); + //----------------------------------------- // check tree... //----------------------------------------- @@ -504,10 +483,7 @@ class ad_skin_css $found_content = ""; $this_set = ""; - if ( $this->ipsclass->input['p'] > 0 ) - { - $in = ','.$this->ipsclass->input['p']; - } + $in = $this->ipsclass->input['p'] > 0 ? ','.intval($this->ipsclass->input['p']) : ''; //----------------------------------------- // Query @@ -540,7 +516,7 @@ class ad_skin_css $css = $found_content; $code = 'doedit'; - $button = 'Сохранить'; + $button = 'Save Stylesheet'; //----------------------------------------- // COLURS!ooO! @@ -571,8 +547,8 @@ class ad_skin_css //----------------------------------------- - $this->ipsclass->admin->page_detail = "Вы можете полностью использовать CSS когда добавляете или редактируете таблицу стилей."; - $this->ipsclass->admin->page_title = " Настройка таблицы стилей"; + $this->ipsclass->admin->page_detail = "You may use CSS fully when adding or editing stylesheets."; + $this->ipsclass->admin->page_title = "Manage Style Sheets"; //----------------------------------------- @@ -611,9 +587,9 @@ class ad_skin_css $this->ipsclass->html .= $this->functions->build_generic_editor_area( array( 'section' => $this->ipsclass->section_code, 'act' => 'style', 'title' => '', 'textareaname' => 'css', 'textareainput' => $css ) ); - $formbuttons = "
    + $formbuttons = "
    - +
    \n"; $this->ipsclass->html = str_replace( '', $formbuttons, $this->ipsclass->html ); @@ -634,13 +610,13 @@ class ad_skin_css $this->ipsclass->adskin->td_header[] = array( " " , "20%" ); $this->ipsclass->adskin->td_header[] = array( " " , "80%" ); - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Информация об использовании CSS классов" ); + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Find CSS Usage" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( - "Показать, где в шаблонах используется: ", - $this->ipsclass->adskin->form_dropdown('csschoice', $css_elements).' ' - .'' - .' ' + "Show me where...", + $this->ipsclass->adskin->form_dropdown('csschoice', $css_elements).' ... is used within the templates  ' + .'' + .' ' ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form(); @@ -651,8 +627,8 @@ class ad_skin_css //----------------------------------------- - $this->ipsclass->admin->nav[] = array( 'section='.$this->ipsclass->section_code.'&act=sets' ,'Настройки стиля' ); - $this->ipsclass->admin->nav[] = array( '' ,'Редактирование таблицей стилей в '.$this_set['set_name'] ); + $this->ipsclass->admin->nav[] = array( 'section='.$this->ipsclass->section_code.'&act=sets' ,'Skin Manager Home' ); + $this->ipsclass->admin->nav[] = array( '' ,'Editing Style Sheet in set '.$this_set['set_name'] ); $this->ipsclass->admin->output(); @@ -669,9 +645,11 @@ class ad_skin_css if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны уточнить ID текущего шаблона, вернитесь и повторите попытку снова"); + $this->ipsclass->admin->error("You must specify an existing wrapper ID, go back and try again"); } + $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); + //----------------------------------------- // check tree... //----------------------------------------- @@ -682,7 +660,7 @@ class ad_skin_css if ( $this->ipsclass->input['p'] > 0 ) { - $in = ','.$this->ipsclass->input['p']; + $in = ','.intval($this->ipsclass->input['p']); } //----------------------------------------- @@ -773,17 +751,17 @@ class ad_skin_css if ( count($colours) < 1 ) { - $this->ipsclass->admin->error("CSS работает не надежно! Цвета для редактирования не выбраны"); + $this->ipsclass->admin->error("CSS all gone wonky! No colours to edit"); } //----------------------------------------- // Get $skin_names stuff - require './sources/lib/skin_info.php'; + require ROOT_PATH .'sources/lib/skin_info.php'; - $this->ipsclass->admin->page_detail = "Ниже вы можете отредактировать текущие цвета. Выбрать цвет"; - $this->ipsclass->admin->page_title = " Настройка таблицы стилей [Цвета]"; + $this->ipsclass->admin->page_detail = "You edit the existing colours below. Launch Colour Picker"; + $this->ipsclass->admin->page_title = "Manage Style Sheets [ Colours ]"; @@ -822,12 +800,12 @@ class ad_skin_css document.theAdminForm.initformval.value = formfield; - PopUp( 'skin_acp/IPB2_Standard/colours.html', 'PopPicker', 400, 500 ); + PopUp( '{$this->ipsclass->vars['board_url']}/skin_acp/IPB2_Standard/colours.html', 'PopPicker', 400, 500 ); } "; - $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Цвета CSS" ); - $this->ipsclass->html .= "
    "; + $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "CSS Colours" ); + $this->ipsclass->html .= ""; foreach ( $colours as $prop => $val ) { @@ -839,7 +817,7 @@ class ad_skin_css if ( $desc == "" ) { - $desc = 'Недоступно'; + $desc = 'None available'; } $name = $prop; @@ -854,25 +832,25 @@ class ad_skin_css $font_box = $this->ipsclass->adskin->form_simple_input('f'.$md5.'color' , $val['color'], "14"); $bgcol_box = $this->ipsclass->adskin->form_simple_input('f'.$md5.'backgroundcolor' , $val['background-color'], "14"); - $this->ipsclass->html .= "
    + $this->ipsclass->html .= "
    {$name} @@ -883,7 +861,7 @@ class ad_skin_css } $this->ipsclass->html .= ""; - $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Изменить"); + $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Edit"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); @@ -902,9 +880,11 @@ class ad_skin_css if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны уточнить ID текущего шаблона, вернитесь и повторите попытку снова"); + $this->ipsclass->admin->error("You must specify an existing wrapper ID, go back and try again"); } + $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); + //----------------------------------------- // check tree... //----------------------------------------- @@ -915,7 +895,7 @@ class ad_skin_css if ( $this->ipsclass->input['p'] > 0 ) { - $in = ','.$this->ipsclass->input['p']; + $in = ','.intval($this->ipsclass->input['p']); } //----------------------------------------- @@ -1022,7 +1002,7 @@ class ad_skin_css if ( count($colours) < 1 ) { - $this->ipsclass->admin->error("Нет цветов для редактирования"); + $this->ipsclass->admin->error("CSS all gone wonky! No colours to edit"); } //----------------------------------------- diff --git a/upload/sources/action_admin/skin_diff.php b/upload/sources/action_admin/skin_diff.php index 2ba35093..24c8a119 100644 --- a/upload/sources/action_admin/skin_diff.php +++ b/upload/sources/action_admin/skin_diff.php @@ -2,27 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2005-10-19 17:55:22 +0100 (Wed, 19 Oct 2005) $ -| > $Revision: 57 $ -| > $Author: bfarber $ +| > $Date: 2006-10-06 10:09:22 +0100 (Fri, 06 Oct 2006) $ +| > $Revision: 611 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Skin Difference Engine @@ -33,7 +24,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -56,22 +47,10 @@ class ad_skin_diff function auto_run() { - $this->ipsclass->admin->page_detail = "Сравнить ваш стиль."; - $this->ipsclass->admin->page_title = "HTML Сравнение стилей"; + $this->ipsclass->admin->page_detail = "Compare your template set differences."; + $this->ipsclass->admin->page_title = "Skin Template HTML Differences"; + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Skin Differences Home' ); - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - - //$this->ipsclass->can_use_fancy_js = 0; - //----------------------------------------- // LOAD HTML //----------------------------------------- @@ -151,7 +130,7 @@ class ad_skin_diff if ( ! $current_session['diff_session_id'] ) { - $this->ipsclass->admin->error("Невозможно получить текущую сессию шаблона."); + $this->ipsclass->admin->error("Could not get the current template compare session."); } //----------------------------------------- @@ -176,7 +155,7 @@ class ad_skin_diff // Done... //----------------------------------------- - $this->ipsclass->main_msg = "Отчет о различиях удален"; + $this->ipsclass->main_msg = "Differences report removed"; $this->skin_differences_list(); } @@ -208,7 +187,7 @@ class ad_skin_diff if ( ! $current_session['diff_session_id'] ) { - $this->ipsclass->admin->error("Невозможно получить текущую сессию шаблона"); + $this->ipsclass->admin->error("Could not get the current template compare session."); } //----------------------------------------- @@ -231,6 +210,11 @@ class ad_skin_diff $row['diff_change_type'] ? $changed++ : $missing++; + $row['diff_change_content'] = str_replace( "\n", "
    ", $row['diff_change_content']); + $row['diff_change_content'] = str_replace( "><", ">\n<" ,$row['diff_change_content']); + $row['diff_change_content'] = preg_replace( "#(?html->skin_diff_export_row( $row['diff_change_func_name'], $row['diff_change_func_group'], $row['diff_change_content'] ); } @@ -268,9 +252,13 @@ class ad_skin_diff if ( ! $diff_row['diff_change_key'] ) { - $this->ipsclass->admin->error( "Ключ не найден" ); + $this->ipsclass->admin->error( "No key found" ); } + $diff_row['diff_change_content'] = str_replace( "\n", "
    ", $diff_row['diff_change_content']); + $diff_row['diff_change_content'] = str_replace( "><", ">\n<" ,$diff_row['diff_change_content']); + $diff_row['diff_change_content'] = preg_replace( "#(?ipsclass->html = $this->html->skin_diff_view_bit( $diff_row['diff_change_func_group'], $diff_row['diff_change_func_name'], $diff_row['diff_change_content'] ); $this->ipsclass->admin->print_popup(); @@ -305,7 +293,7 @@ class ad_skin_diff if ( ! $current_session['diff_session_id'] ) { - $this->ipsclass->admin->error("Невозможно получить текущую сессию шаблона."); + $this->ipsclass->admin->error("Could not get the current template compare session."); } //----------------------------------------- @@ -335,12 +323,12 @@ class ad_skin_diff if ( ! $row['diff_change_type'] ) { - $diff_is = 'Новое'; + $diff_is = 'New'; $missing++; } else { - $diff_is = 'Изменено'; + $diff_is = 'Changed'; $changed++; } @@ -401,7 +389,7 @@ class ad_skin_diff if ( ! $skin_set['set_skin_set_id'] ) { - $this->ipsclass->admin->error( "Не выбран ID стиля (заново!)" ); + $this->ipsclass->admin->error( "No skin ID passed (again)!" ); } //----------------------------------------- @@ -416,7 +404,7 @@ class ad_skin_diff $this->ipsclass->DB->do_insert( 'template_diff_session', array( 'diff_session_togo' => intval( $total_bits['count'] ), 'diff_session_done' => 0, - 'diff_session_title' => "Сравнение со стилем: ".$skin_set['set_name'], + 'diff_session_title' => "Comparion from skin set: ".$skin_set['set_name'], 'diff_session_updated' => time(), 'diff_session_ignore_missing' => 1 ) ); @@ -482,7 +470,7 @@ class ad_skin_diff if ( ! $this->ipsclass->input['diff_session_title'] ) { - $this->ipsclass->admin->error( "Вы должны ввести название" ); + $this->ipsclass->admin->error( "You must enter a title" ); } //----------------------------------------- @@ -495,7 +483,7 @@ class ad_skin_diff // Ut-oh.... //----------------------------------------- - $this->ipsclass->admin->error( "Файл не был загружен" ); + $this->ipsclass->admin->error( "No file was uploaded" ); } else { @@ -509,6 +497,11 @@ class ad_skin_diff $content = $this->ipsclass->admin->import_xml( $tmp_name ); } + if( !$content ) + { + $this->ipsclass->admin->error( "There was no content in the file to process" ); + } + //----------------------------------------- // Get number missing template bits //----------------------------------------- @@ -519,6 +512,8 @@ class ad_skin_diff // Create session //----------------------------------------- + $this->ipsclass->DB->allow_sub_select = 1; + $this->ipsclass->DB->do_insert( 'template_diff_session', array( 'diff_session_togo' => intval( $total_bits['count'] ), 'diff_session_done' => 0, 'diff_session_title' => $this->ipsclass->input['diff_session_title'], @@ -531,7 +526,7 @@ class ad_skin_diff // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); //----------------------------------------- @@ -579,15 +574,17 @@ class ad_skin_diff if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) { - $this->ipsclass->admin->error("Ошибка с ipb_templates.xml - продолжить невозможно"); + $this->ipsclass->admin->error("Error with ipb_templates.xml - could not process XML properly"); } - foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $id => $entry ) + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry ) { $diff_key = $diff_session_id.':'.$entry[ 'group_name' ]['VALUE'].':'.$entry[ 'func_name' ]['VALUE']; if ( ! $seen[ $diff_key ] ) { + $this->ipsclass->DB->allow_sub_select = 1; + $this->ipsclass->DB->do_insert( 'templates_diff_import', array( 'diff_key' => $diff_session_id.':'.$entry[ 'group_name' ]['VALUE'].':'.$entry[ 'func_name' ]['VALUE'], 'diff_func_group' => $entry[ 'group_name' ]['VALUE'], 'diff_func_data' => $entry[ 'func_data' ]['VALUE'], @@ -620,7 +617,7 @@ class ad_skin_diff $pergo = intval( $this->ipsclass->input['pergo'] ) ? intval( $this->ipsclass->input['pergo'] ) : 10; $diff_session_id = intval( $this->ipsclass->input['diff_session_id'] ); $done = 0; - $img = '- '; + $img = '- '; //----------------------------------------- // Get current session @@ -630,7 +627,7 @@ class ad_skin_diff if ( ! $current_session['diff_session_id'] ) { - $this->ipsclass->admin->error("Невозможно получить текущую сессию шаблона."); + $this->ipsclass->admin->error("Could not get the current template compare session."); } //----------------------------------------- @@ -729,11 +726,11 @@ class ad_skin_diff if ( ! $done ) { $this->ipsclass->admin->output_multiple_redirect_hit( $this->ipsclass->base_url.'&'.$this->ipsclass->form_code_js."&code=skin_diff_process&diff_session_id={$diff_session_id}&pergo=".$pergo, - $img.' '.$current_session['diff_session_done'].' из '. $current_session['diff_session_togo'] .' шаблонов обработано...' ); + $img.' '.$current_session['diff_session_done'].' of '. $current_session['diff_session_togo'] .' template bits processed...' ); } else { - $this->ipsclass->admin->output_multiple_redirect_done( "Просмотреть результаты"); + $this->ipsclass->admin->output_multiple_redirect_done( "View the differences results"); } } diff --git a/upload/sources/action_admin/skin_import.php b/upload/sources/action_admin/skin_import.php index 88573568..be64b6e7 100644 --- a/upload/sources/action_admin/skin_import.php +++ b/upload/sources/action_admin/skin_import.php @@ -2,27 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2005-12-06 17:36:43 +0000 (Tue, 06 Dec 2005) $ -| > $Revision: 94 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Import functions @@ -35,7 +26,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -60,16 +51,7 @@ class ad_skin_import { function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } + $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Skin Import/Export' ); //----------------------------------------- @@ -95,6 +77,16 @@ class ad_skin_import { $this->import_xml_images(); break; + case 'importmacros': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':import' ); + $this->import_xml_macros(); + break; + + case 'exportmacros': + $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':export' ); + $this->export_xml_macros(); + break; + //----------------------------------------- default: $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); @@ -118,13 +110,13 @@ class ad_skin_import { if ( ! $this->ipsclass->input['skin_location'] ) { - $this->ipsclass->main_msg = "Не выбран файл для загрузки."; + $this->ipsclass->main_msg = "No upload file was found and no filename was specified."; $this->show_export_page(); } if ( ! file_exists( ROOT_PATH . $this->ipsclass->input['skin_location'] ) ) { - $this->ipsclass->main_msg = "Не найден файл: " . ROOT_PATH . $this->ipsclass->input['skin_location']; + $this->ipsclass->main_msg = "Could not find the file to open at: " . ROOT_PATH . $this->ipsclass->input['skin_location']; $this->show_export_page(); } @@ -167,11 +159,11 @@ class ad_skin_import { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); - require( KERNEL_PATH.'class_xmlarchive.php' ); + require_once( KERNEL_PATH.'class_xmlarchive.php' ); $xmlarchive = new class_xmlarchive( KERNEL_PATH ); @@ -201,7 +193,7 @@ class ad_skin_import { if ( ! count($images) ) { - $this->ipsclass->main_msg = "В этом XML-архиве нет изображений для импортирования."; + $this->ipsclass->main_msg = "There were no images to import from that XMLarchive."; $this->show_export_page(); } @@ -212,7 +204,7 @@ class ad_skin_import { if ( ! is_writable( CACHE_PATH.'style_images' ) ) { - $this->ipsclass->main_msg = "Невозможно создать новую папку в 'style_images', проверьте правильно ли установлены права доступа (CHMOD) у 'style_images', права доступа должны быть 0777."; + $this->ipsclass->main_msg = 'We cannot create a new folder in the "style_images" folder - please check the CHMOD value of that folder and change to 0777 is required.'; $this->show_export_page(); } @@ -232,7 +224,7 @@ class ad_skin_import { if ( ! @mkdir( CACHE_PATH.'style_images/'.$safename, 0777 ) ) { - $this->ipsclass->main_msg = "Невозможно создать новую папку в 'style_images'.."; + $this->ipsclass->main_msg = "We are unable to create a directory in the 'style_images' folder."; $this->show_export_page(); } else @@ -271,11 +263,24 @@ class ad_skin_import { } } + //----------------------------------------- + // Apply to a skin? + //----------------------------------------- + + if( $this->ipsclass->input['skin_set'] ) + { + $skin_id = intval($this->ipsclass->input['skin_set']); + + $this->ipsclass->DB->do_update( 'skin_sets', array( 'set_image_dir' => $safename ), 'set_skin_set_id='.$skin_id ); + + $this->ipsclass->cache_func->_rebuild_skin_id_cache( array() ); + } + //----------------------------------------- // all done? //----------------------------------------- - $this->ipsclass->main_msg = "Изображения импортированы!"; + $this->ipsclass->main_msg = "Image set imported!"; $this->show_export_page(); } @@ -299,13 +304,13 @@ class ad_skin_import { if ( ! $this->ipsclass->input['skin_location'] ) { - $this->ipsclass->main_msg = "Не выбран файл для загрузки."; + $this->ipsclass->main_msg = "No upload file was found and no filename was specified."; $this->show_export_page(); } if ( ! file_exists( ROOT_PATH . $this->ipsclass->input['skin_location'] ) ) { - $this->ipsclass->main_msg = "Не найден файл: " . ROOT_PATH . $this->ipsclass->input['skin_location']; + $this->ipsclass->main_msg = "Could not find the file to open at: " . ROOT_PATH . $this->ipsclass->input['skin_location']; $this->show_export_page(); } @@ -345,15 +350,23 @@ class ad_skin_import { $content = $this->ipsclass->admin->import_xml( $tmp_name ); } + if( !$content ) + { + $this->ipsclass->admin->error( "There was no content in the file to process" ); + } + //----------------------------------------- // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); - require( KERNEL_PATH.'class_xmlarchive.php' ); + $xml->doc_type = $this->ipsclass->vars['gb_char_set']; + $xml->use_doctype = 1; + + require_once( KERNEL_PATH.'class_xmlarchive.php' ); $xmlarchive = new class_xmlarchive( KERNEL_PATH ); @@ -423,10 +436,25 @@ class ad_skin_import { $wrapper_xml = $this->_extract_xml_wrapper( $import_xml[ 'ipb_wrapper.xml' ], $xml, $xmlarchive ); } + //----------------------------------------- + // Which image directory to use? + //----------------------------------------- + + if( $this->ipsclass->input['image_set'] ) + { + $img_dir = $this->ipsclass->input['image_set']; + } + else + { + $img_dir = $default['set_image_dir']; + } + //----------------------------------------- // Add new skin! //----------------------------------------- + $this->ipsclass->DB->allow_sub_select = 1; + $this->ipsclass->DB->do_insert( 'skin_sets', array( 'set_name' => $this->ipsclass->input['skin_name'] ? $this->ipsclass->input['skin_name'] : $info_xml['set_name'].' (Import)', 'set_hidden' => 0, 'set_default' => 0, @@ -439,7 +467,7 @@ class ad_skin_import { 'set_wrapper' => $wrapper_xml, 'set_css_updated' => time(), 'set_emoticon_folder' => $default['set_emoticon_folder'], - 'set_image_dir' => $default['set_image_dir'] + 'set_image_dir' => $img_dir ) ); $new_skin_id = $this->ipsclass->DB->get_insert_id(); @@ -452,6 +480,8 @@ class ad_skin_import { { foreach( $templates_xml as $t ) { + $this->ipsclass->DB->allow_sub_select = 1; + $this->ipsclass->DB->do_insert( 'skin_templates', array( 'set_id' => $new_skin_id, 'group_name' => $t['group_name'], 'section_content' => $t['section_content'], @@ -476,6 +506,8 @@ class ad_skin_import { continue; } + $this->ipsclass->DB->allow_sub_select = 1; + $this->ipsclass->DB->do_insert( 'skin_macro', array( 'macro_set' => $new_skin_id, 'macro_value' => $t['macro_value'], 'macro_replace' => $t['macro_replace'], @@ -494,7 +526,7 @@ class ad_skin_import { // DONE! //----------------------------------------- - $this->ipsclass->main_msg = 'Шаблон импортирован! (id: '.$new_skin_id.')'; + $this->ipsclass->main_msg = 'Skin Set Imported! (id: '.$new_skin_id.')'; $this->ipsclass->main_msg .= "
    ".implode( "
    ", $this->ipsclass->cache_func->messages ); @@ -502,6 +534,221 @@ class ad_skin_import { } + //----------------------------------------- + // PERFORM IMPORT TEMPLATES + //----------------------------------------- + + function import_xml_macros() + { + $skin_id = intval($this->ipsclass->input['skin_set']); + + $skin = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.$skin_id ) ); + + $current = $skin['set_skin_set_id']; + $parent = $skin['set_skin_set_parent'] > 0 ? $skin['set_skin_set_parent'] : 1; + + //----------------------------------------- + // Get default skin + //----------------------------------------- + + $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_default=1' ) ); + + if ( $_FILES['FILE_UPLOAD']['name'] == "" or ! $_FILES['FILE_UPLOAD']['name'] or ($_FILES['FILE_UPLOAD']['name'] == "none") ) + { + //----------------------------------------- + // check and load from server + //----------------------------------------- + + if ( ! $this->ipsclass->input['skin_location'] ) + { + $this->ipsclass->main_msg = "No upload file was found and no filename was specified."; + $this->show_export_page(); + return; + } + + if ( ! file_exists( ROOT_PATH . $this->ipsclass->input['skin_location'] ) ) + { + $this->ipsclass->main_msg = "Could not find the file to open at: " . ROOT_PATH . $this->ipsclass->input['skin_location']; + $this->show_export_page(); + return; + } + + if ( preg_match( "#\.gz$#", $this->ipsclass->input['skin_location'] ) ) + { + if ( $FH = @gzopen( ROOT_PATH.$this->ipsclass->input['skin_location'], 'rb' ) ) + { + while ( ! @gzeof( $FH ) ) + { + $content .= @gzread( $FH, 1024 ); + } + + @gzclose( $FH ); + } + } + else + { + if ( $FH = @fopen( ROOT_PATH.$this->ipsclass->input['skin_location'], 'rb' ) ) + { + $content = @fread( $FH, filesize(ROOT_PATH.$this->ipsclass->input['skin_location']) ); + @fclose( $FH ); + } + } + + $tmp_name = str_replace( ".gz", '', $this->ipsclass->input['skin_location'] ); + + } + else + { + //----------------------------------------- + // Get uploaded schtuff + //----------------------------------------- + + $tmp_name = $_FILES['FILE_UPLOAD']['name']; + $tmp_name = preg_replace( "#\.gz$#", "", $tmp_name ); + + $content = $this->ipsclass->admin->import_xml( $tmp_name ); + } + + if( !$content ) + { + $this->ipsclass->main_msg = "Could not open the xml file"; + $this->show_export_page(); + return; + } + + //----------------------------------------- + // Get xml mah-do-dah + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + $xml = new class_xml(); + $xml->doc_type = $this->ipsclass->vars['gb_char_set']; + $xml->use_doctype = 1; + + //----------------------------------------- + // Get the XML documents + //----------------------------------------- + + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Import Macros + //----------------------------------------- + + if ( ! is_array( $xml->xml_array['macroexport']['macrogroup'] ) and ! count( $xml->xml_array['macroexport']['macrogroup'] ) ) + { + $this->ipsclass->main_msg = "The XML import doesn't appear to be valid - please check the file and try again."; + $this->show_export_page(); + return; + } + + $this->ipsclass->DB->do_delete( 'skin_macro', "macro_set={$skin_id}" ); + + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $id => $entry ) + { + $newrow = array(); + + $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; + $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; + $newrow['macro_set'] = $skin_id; + + $this->ipsclass->DB->do_insert( 'skin_macro', $newrow ); + } + + //----------------------------------------- + // Rebuild caches + //----------------------------------------- + + $this->ipsclass->cache_func->_rebuild_all_caches( array($skin_id) ); + + //----------------------------------------- + // DONE! + //----------------------------------------- + + $this->ipsclass->main_msg = 'Macros Imported! (id: '.$skin_id.')'; + + $this->ipsclass->main_msg .= "
    ".implode( "
    ", $this->ipsclass->cache_func->messages ); + + $this->show_export_page(); + } + + + //----------------------------------------- + // PERFORM EXPORT MACROS + //----------------------------------------- + + function export_xml_macros() + { + $skin_id = intval($this->ipsclass->input['skin_id']); + + $skin = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.$skin_id ) ); + + $current = $skin['set_skin_set_id']; + $parent = $skin['set_skin_set_parent'] > 0 ? $skin['set_skin_set_parent'] : 1; + + //----------------------------------------- + // Get xml mah-do-dah + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + $xml = new class_xml(); + + //----------------------------------------- + // Get data + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_macro', 'where' => 'macro_set='.$parent ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $macros[ strtolower( $r['macro_value'] ) ] = $r; + } + + //----------------------------------------- + // Get this set macro + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_macro', 'where' => 'macro_set='.$skin['set_skin_set_id'] ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $macros[ strtolower( $r['macro_value'] ) ] = $r; + } + + //----------------------------------------- + // Format macros into XML + //----------------------------------------- + + if ( count( $macros ) ) + { + $xml->xml_set_root( 'macroexport', array( 'exported' => time() ) ); + $xml->xml_add_group( 'macrogroup' ); + + foreach( $macros as $data ) + { + $content = array(); + + $content[] = $xml->xml_build_simple_tag( 'macro_value' , $data['macro_value'] ); + $content[] = $xml->xml_build_simple_tag( 'macro_replace', $data['macro_replace'] ); + + $entry[] = $xml->xml_build_entry( 'macro', $content ); + } + + $xml->xml_add_entry_to_group( 'macrogroup', $entry ); + + $xml->xml_format_document(); + } + + //----------------------------------------- + // Send to browser. + //----------------------------------------- + + $this->ipsclass->admin->show_download( $xml->xml_document, 'ipb_macro.xml', '', 0 ); + } + + //----------------------------------------- // PERFORM EXPORT IMAGES THING YES! //----------------------------------------- @@ -512,7 +759,7 @@ class ad_skin_import { if ( ! @file_exists( CACHE_PATH.'style_images/'.$skin_dir ) ) { - $this->ipsclass->main_msg = "Невозможно найти выбранную папку, проверьте настройки и попробуйте еще раз"; + $this->ipsclass->main_msg = "We cannot locate the selected image directory - please try another"; $this->show_export_page(); } @@ -520,11 +767,11 @@ class ad_skin_import { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); - require( KERNEL_PATH.'class_xmlarchive.php' ); + require_once( KERNEL_PATH.'class_xmlarchive.php' ); $xmlarchive = new class_xmlarchive( KERNEL_PATH ); @@ -560,11 +807,11 @@ class ad_skin_import { // Get xml mah-do-dah //----------------------------------------- - require( KERNEL_PATH.'class_xml.php' ); + require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); - require( KERNEL_PATH.'class_xmlarchive.php' ); + require_once( KERNEL_PATH.'class_xmlarchive.php' ); $xmlarchive = new class_xmlarchive( KERNEL_PATH ); @@ -632,7 +879,7 @@ class ad_skin_import { if ( is_array( $xml->xml_array['macroexport']['macrogroup']['macro'] ) and count( $xml->xml_array['macroexport']['macrogroup']['macro'] ) ) { - foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $idx => $entry ) + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $entry ) { $return[] = array( 'macro_value' => $entry['macro_value']['VALUE'], 'macro_replace' => $entry['macro_replace']['VALUE'], @@ -672,7 +919,7 @@ class ad_skin_import { if ( is_array( $xml->xml_array['wrapperexport']['wrappergroup']['wrapper'] ) ) { - foreach( $xml->xml_array['wrapperexport']['wrappergroup']['wrapper'] as $idx => $entry ) + foreach( $xml->xml_array['wrapperexport']['wrappergroup']['wrapper'] as $entry ) { $return = $entry['wrappercontent']['VALUE']; } @@ -710,7 +957,7 @@ class ad_skin_import { if ( is_array( $xml->xml_array['cssexport']['cssgroup']['css'] ) ) { - foreach( $xml->xml_array['cssexport']['cssgroup']['css'] as $idx => $entry ) + foreach( $xml->xml_array['cssexport']['cssgroup']['css'] as $entry ) { $return = $entry['csscontent']['VALUE']; } @@ -748,7 +995,7 @@ class ad_skin_import { if ( is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) { - foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $idx => $entry ) + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry ) { if ( ! $entry[ 'func_name' ]['VALUE'] ) { @@ -796,7 +1043,7 @@ class ad_skin_import { if ( is_array( $xml->xml_array['infoexport']['infogroup']['info'] ) ) { - foreach( $xml->xml_array['infoexport']['infogroup']['info'] as $idx => $entry ) + foreach( $xml->xml_array['infoexport']['infogroup']['info'] as $entry ) { $return[ 'set_name' ] = $entry['set_name']['VALUE']; $return[ 'set_author_email' ] = $entry['set_author_email']['VALUE']; @@ -925,7 +1172,7 @@ class ad_skin_import { $xml->xml_set_root( 'macroexport', array( 'exported' => time() ) ); $xml->xml_add_group( 'macrogroup' ); - foreach( $macros as $key => $data ) + foreach( $macros as $data ) { $content = array(); @@ -999,7 +1246,7 @@ class ad_skin_import { if ( $this->ipsclass->input['skin_options'] == 'noparent' ) { - $this->ipsclass->DB->simple_construct( array( 'select' => 'group_name, section_content, func_name, func_data', 'from' => 'skin_templates', 'where' => 'set_id='.$this->ipsclass->input['skin_id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'group_name, section_content, func_name, func_data', 'from' => 'skin_templates', 'where' => 'set_id='.intval($this->ipsclass->input['skin_id']) ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) @@ -1035,7 +1282,7 @@ class ad_skin_import { } } - $this->ipsclass->DB->simple_construct( array( 'select' => 'group_name, section_content, func_name, func_data', 'from' => 'skin_templates', 'where' => 'set_id='.$this->ipsclass->input['skin_id'] ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'group_name, section_content, func_name, func_data', 'from' => 'skin_templates', 'where' => 'set_id='.intval($this->ipsclass->input['skin_id']) ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) @@ -1045,7 +1292,7 @@ class ad_skin_import { if ( count( $all_templates ) ) { - foreach( $all_templates as $name => $r ) + foreach( $all_templates as $r ) { $content = array(); @@ -1078,8 +1325,8 @@ class ad_skin_import { $form_array = array(); $set_to_image = array(); - $this->ipsclass->admin->page_detail = "В этой секции вы можете импортировать и экспортировать шаблоны. XML-архивы шаблонов (HTML фрагменты, CSS стили, макросы и оболочки) независимы от набора изобржений.
    Для экспорта 'полной версии' шаблона вы должны экспортировать оба XML-архива: шаблона и изображений.
    Импорт 'полного' шаблона так же состоит из двух действий, сначала вам необходимо загрузить XML-архив самого шаблона, затем архив с его изображениями."; - $this->ipsclass->admin->page_title = "Импорт/Экспорт шаблонов"; + $this->ipsclass->admin->page_detail = "You can download skin sets by configuring the form below. The skin XML templates (HTML, Macros, CSS & Wrapper) are independent of the image set.
    To download a 'full' skin set, you will need to download both the skin XML and the image set."; + $this->ipsclass->admin->page_title = "Export Skin Sets"; //----------------------------------------- // Get skin list... @@ -1124,9 +1371,9 @@ class ad_skin_import { { if (($file != ".") && ($file != "..")) { - if ( is_dir('./style_images/'.$file) ) + if ( is_dir( CACHE_PATH.'style_images/'.$file ) ) { - $dirs[] = array( $file, 'Изображения: "'.$file.'" (используется шаблоном: '.$set_to_image[ $file ].')' ); + $dirs[] = array( $file, 'Image Set: "'.$file.'" (used in skin: '.$set_to_image[ $file ].')' ); } } } @@ -1158,104 +1405,169 @@ class ad_skin_import { 3 => array( 'MAX_FILE_SIZE', '10000000000' ), 4 => array( 'section', $this->ipsclass->section_code ), ) , "uploadform", " enctype='multipart/form-data'" ); + + + $start_form_e = $this->ipsclass->adskin->start_form( array( 1 => array( 'act' , 'import' ), + 2 => array( 'code', 'exportmacros' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) ); + + $start_form_f = $this->ipsclass->adskin->start_form( array( 1 => array( 'act' , 'import' ), + 2 => array( 'code', 'importmacros' ), + 3 => array( 'MAX_FILE_SIZE', '10000000000' ), + 4 => array( 'section', $this->ipsclass->section_code ), + ) , "uploadform", " enctype='multipart/form-data'" ); + + $import_dirs[] = array( '', '-None-' ); + $import_dirs = array_merge( $import_dirs, $dirs ); + + $import_skins = "".$skin_list; $this->ipsclass->html .= "
    -
    Экспорт...
    -
    +
    Exporting...
    +

    - Экспорт шаблонов + Export Skin Templates $start_form_a
    - Цвет шрифта - {$font_box}    + Font Color + {$font_box}   

    - Цвет заднего фона - {$bgcol_box}    + Background Color + {$bgcol_box}   
    - Другие атрибуты CSS + Other CSS Attributes
    - - + + - - +
    Какой шаблон экспортировать?
    Пожалуйста, выберите какой шаблон (HTML фраменты, CSS стили, макросы и оболочку) вы хотите экспортировать.
    Export Which Skin Template Set?
    Please select which skin set (HTML templates, CSS, Macros & wrapper) you wish to export.
    Настройки экспорта
    ".$this->ipsclass->adskin->form_dropdown("skin_options", - array( 0 => array( 'noparent' , 'Экспорт только в этот стиль' ), - 1 => array( 'yesparent' , 'Экспортировать только сделанные изменения' ) + Export Options
    Please choose how deep this export should look for customizations.
    ".$this->ipsclass->adskin->form_dropdown("skin_options", + array( 0 => array( 'noparent' , 'Export customizations in this skin only' ), + 1 => array( 'yesparent' , 'Export customizations in this skin and any parent skins' ) ) ) ."
    -
    +

    +
    - Экспорт изображений + Export Skin Images $start_form_b
    - - + +
    Какие изображения экспортировать?
    Эти изображения будут экспортированы как XML-архив.
    Вы не сможете просмотреть изображения в этом архиве. Для просмотра изображений мы рекомендуем скачать изображения используя вашу FTP-программу.
    ". $this->ipsclass->adskin->form_dropdown( 'skin_dirs', $dirs )."Export Which Image Set?
    Image sets are exported into the XMLarchive format. This is not suitable for safemode users and in such a case we recommend you manually download via FTP and ZIP the images.
    ". $this->ipsclass->adskin->form_dropdown( 'skin_dirs', $dirs )."
    -
    +
    +
    + +
    + Export Skin Macros + $start_form_e +
    + + + + + +
    Export Macros From Which Skin Set?
    Macro sets are exported into XML format. This option may not work properly if your server has safemode enabled.
    +
    +
    + +

    -
    Импорт...
    -
    +
    Importing...
    +

    - Импорт шаблонов стиля + Import Skin Templates $start_form_c
    - - + + - - + + - - + + + + + +
    Загрузка XML-архива с шаблонами
    Этот файл должен начинаться с 'ipb_skin-' и заканчиваться '.xml' или '.xml.gz'
    ". $this->ipsclass->adskin->form_upload( ) ."Upload XML Template set
    The file must begin with 'ipb_skin-' and end with either '.xml' or '.xml.gz'
    ". $this->ipsclass->adskin->form_upload( ) ."
    ИЛИ введите название файла-архива
    Этот файл должен быть загружен в корневую папку вашего форума.
    ".$this->ipsclass->adskin->form_input( 'skin_location' )."OR enter the filename of the XML Template Set
    The file must be uploaded into the forum's root folder
    ".$this->ipsclass->adskin->form_input( 'skin_location' )."
    Название шаблонов:
    Оставьте поле пустым, если хотите, чтобы использовать название шаблонов из XML-архива
    ".$this->ipsclass->adskin->form_input( 'skin_name' )."New Skin Set Name?
    Leave blank to use the skin name from the XMLarchive
    ".$this->ipsclass->adskin->form_input( 'skin_name' )."
    Use with which image set?
    If you have not yet uploaded the image set, leave on -None-
    ". $this->ipsclass->adskin->form_dropdown( 'image_set', $import_dirs )."
    -
    +

    - Импорт изображений + Import Skin Images $start_form_d
    - - + + - - + + - - + + + + + +
    Загрузка XML-архива с изображениями
    Этот файл должен начинаться с 'ipb_images-' и заканчиваться '.xml' или '.xml.gz'
    ". $this->ipsclass->adskin->form_upload( ) ."Upload XMLarchive Image set
    The file must begin with 'ipb_images-' and end with either '.xml' or '.xml.gz'
    ". $this->ipsclass->adskin->form_upload( ) ."
    ИЛИ введите название файла-архива
    Этот файл должен быть загружен в корневую папку вашего форума
    ".$this->ipsclass->adskin->form_input( 'skin_location' )."OR enter the filename of the XMLarchive Image Set
    The file must be uploaded into the forum's root folder
    ".$this->ipsclass->adskin->form_input( 'skin_location' )."
    Название папки изображений:
    Оставьте поле пустым, если хотите, чтобы использовать название папки изображений из XML-архива.
    ".$this->ipsclass->adskin->form_input( 'skin_name' )."New Image Set Directory Name?
    Leave blank to use the set name from the XMLarchive
    ".$this->ipsclass->adskin->form_input( 'skin_name' )."
    Use with which skin set?
    If you do not want to apply this image set to any skin, leave on -None-.
    -
    +
    +
    +
    + Import Skin Macros + $start_form_f +
    + + + + + + + + + + + + + +
    Upload XML Macro set
    The file must begin with 'ipb_macros-' and end with '.xml'
    ". $this->ipsclass->adskin->form_upload( ) ."
    OR enter the filename of the XML Macro Set
    The file must be uploaded into the forum's root folder
    ".$this->ipsclass->adskin->form_input( 'skin_location' )."
    Use with which skin set?
    +
    +
    + +
    "; diff --git a/upload/sources/action_admin/skin_macros.php b/upload/sources/action_admin/skin_macros.php index 87a0838c..e35a340a 100644 --- a/upload/sources/action_admin/skin_macros.php +++ b/upload/sources/action_admin/skin_macros.php @@ -2,26 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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 -+--------------------------------------------------------------------------- -| > $Date: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-05 17:04:08 +0100 (Thu, 05 Oct 2006) $ +| > $Revision: 609 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -37,7 +28,7 @@ if ( ! defined( 'IN_ACP' ) ) { - print "

    Неверный вход

    У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; exit(); } @@ -63,17 +54,6 @@ class ad_skin_macros { function auto_run() { - //----------------------------------------- - // Kill globals - globals bad, Homer good. - //----------------------------------------- - - $tmp_in = array_merge( $_GET, $_POST, $_COOKIE ); - - foreach ( $tmp_in as $k => $v ) - { - unset($$k); - } - //----------------------------------------- switch($this->ipsclass->input['code']) @@ -104,7 +84,7 @@ class ad_skin_macros { break; default: - print "Действие не выбрано"; exit(); + print "No action"; exit(); break; } } @@ -117,13 +97,13 @@ class ad_skin_macros { { if ($this->ipsclass->input['mid'] == "") { - $this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз"); + $this->ipsclass->admin->error("You must specify an existing macro ID, go back and try again"); } $id = intval($this->ipsclass->input['id']); $p = intval($this->ipsclass->input['p']); - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_macro', 'where' => "macro_id='".$this->ipsclass->input['mid']."'" ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_macro', 'where' => "macro_id=".intval($this->ipsclass->input['mid']) ) ); //----------------------------------------- // Recache macros @@ -136,7 +116,7 @@ class ad_skin_macros { //----------------------------------------- $this->ipsclass->input['id'] = $id; - $this->ipsclass->main_msg = "Макрос удален!"; + $this->ipsclass->main_msg = "Macro removed!"; $this->show_macros(); } @@ -148,7 +128,7 @@ class ad_skin_macros { { if ($this->ipsclass->input['mid'] == "") { - $this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз"); + $this->ipsclass->admin->error("You must specify an existing image set ID, go back and try again"); } $id = intval($this->ipsclass->input['id']); @@ -161,12 +141,12 @@ class ad_skin_macros { // Get macro for examination.. //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_macro', 'where' => "macro_id='".$this->ipsclass->input['mid']."'" ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_macro', 'where' => "macro_id=".intval($this->ipsclass->input['mid']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $row = $this->ipsclass->DB->fetch_row() ) { - $this->ipsclass->admin->error("Невозможно получить запись из базы данных"); + $this->ipsclass->admin->error("Could not retrieve the record from the DB"); } //----------------------------------------- @@ -179,7 +159,7 @@ class ad_skin_macros { // Okay, update... //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'update' => 'skin_macro', 'set' => "macro_value='$key', macro_replace='$val'", 'where' => "macro_id=".$this->ipsclass->input['mid'] ) ); + $this->ipsclass->DB->simple_construct( array( 'update' => 'skin_macro', 'set' => "macro_value='$key', macro_replace='$val'", 'where' => "macro_id=".intval($this->ipsclass->input['mid']) ) ); $this->ipsclass->DB->simple_exec(); } else @@ -222,7 +202,7 @@ class ad_skin_macros { { if ($this->ipsclass->input['mid'] == "") { - $this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз"); + $this->ipsclass->admin->error("You must specify an existing macro set ID, go back and try again"); } $id = intval($this->ipsclass->input['id']); @@ -262,7 +242,7 @@ class ad_skin_macros { if ($this->ipsclass->input['id'] == "") { - $this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз"); + $this->ipsclass->admin->error("You must specify an existing macro set ID, go back and try again"); } //----------------------------------------- @@ -286,14 +266,14 @@ class ad_skin_macros { // Get img_dir this set is using... //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id='".$this->ipsclass->input['id']."'" ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $skin = $this->ipsclass->DB->fetch_row(); - $this->ipsclass->admin->page_detail = "Для изменения макроса, нажмите на ссылку 'Изменить' напротив выбранного макроса."; + $this->ipsclass->admin->page_detail = "To edit a macro, simply click on the 'edit' link of the appropriate macro."; - $this->ipsclass->admin->page_title = "Управление заменами макросов шаблона: {$skin['set_name']}"; + $this->ipsclass->admin->page_title = "Manage Replacement Macros in Set: {$skin['set_name']}"; //----------------------------------------- // Start output @@ -303,7 +283,7 @@ class ad_skin_macros { function editmacro(id, variable, replace) { document.macroform.code.value = 'doeditmacro'; - document.macroform.submitbutton.value = 'Изменить этот макрос'; + document.macroform.submitbutton.value = 'Edit This Macro'; document.macroform.mid.value = id; document.macroform.variable.value = variable; document.macroform.replacement.value = replace; @@ -314,7 +294,7 @@ class ad_skin_macros { function addmacro(id) { document.macroform.code.value = 'doaddmacro'; - document.macroform.submitbutton.value = 'Добавить этот макрос'; + document.macroform.submitbutton.value = 'Add This Macro'; document.macroform.mid.value = id; document.macroform.variable.value = ''; document.macroform.replacement.value = ''; @@ -328,15 +308,16 @@ class ad_skin_macros { }
    -
    +
    - - + +
    Управление заменами макросовipsclass->input['id']}');\" />Manage Replacement Macrosipsclass->input['id']}');\" />
    {$extra}
    {$extra}
    {$td[0]}{$td[0]}
    @@ -85,7 +81,7 @@ class admin_template_functions
    -   +    {$data['title']}
    "; - $return .= "
    ".$this->ipsclass->adskin->form_textarea("txt{$data['textareaname']}", $data['textareainput'], $this->ipsclass->vars['tx'], $this->ipsclass->vars['ty'], 'none', "txt{$data['textareaname']}", $this->default_css )."
    \n"; + $return .= "
    ".$this->ipsclass->adskin->form_textarea("txt{$data['textareaname']}", $data['textareainput'], '', '', 'none', "txt{$data['textareaname']}", $this->default_css )."
    \n"; $return .= $this->html_build_editor_bottom() . "
    "; @@ -110,10 +106,10 @@ class admin_template_functions
    - Расширенный режим: Переменные шаблона
    Оставьте как есть, если вы не знаете, как это работает.
    Используйте запятую для разделения нескольких переменных. + Advanced: Template Bit Incoming Variables
    Leave alone if unsure. Separate many with a comma.


    - +
    @@ -121,7 +117,7 @@ class admin_template_functions $return .= << -
    +
    @@ -131,9 +127,9 @@ class admin_template_functions @@ -151,16 +147,16 @@ EOF; menu_build_menu( "tmpl-{$template['suid']}", new Array( - img_item + " Редактирование входящих переменных...", - img_item + " Проверка макросов...", - img_item + " Сравнить версии...", - img_item + " Обратить все изменения...", - img_item + " Просмотр оригинала..." + img_item + " Edit Data Variables...", + img_item + " Macro Look-up...", + img_item + " Compare Versions...", + img_item + " Restore Unedited Version...", + img_item + " View Original Version..." ) ); EOF; - $return .= "
    ".$this->ipsclass->adskin->form_textarea("txt{$template['suid']}", $html, $this->ipsclass->vars['tx'], $this->ipsclass->vars['ty'], 'none', "t{$template['suid']}", $this->default_css, 'onkeypress="parent.template_bit_changed(\'t'.$template['suid'].'\')"' )."
    \n"; + $return .= "
    ".$this->ipsclass->adskin->form_textarea("txt{$template['suid']}", $html, 60, 5, 'none', "t{$template['suid']}", $this->default_css, 'onkeypress="parent.template_bit_changed(\'t'.$template['suid'].'\')"' )."
    \n"; $return .= ""; @@ -179,16 +175,16 @@ EOF; $return .= $this->html_build_editor_top(); $return .= "
    -
    "; +
    "; if ( $no_buttons == 0 ) { $return .= " - - - - ipsclass->input['expand']}\")'> - + + + + + "; } @@ -209,12 +205,25 @@ EOF; eval(\"opener.document.theform.txt\"+template_id+\".value = document.theform.templatebit.value\"); window.close(); } + + function template_bit_restore( ) + { + var edit_box_obj = document.theform.templatebit; + + if ( template_bit ) + { + if ( confirm(\"Are you sure you want to restore the template?\\nALL UNSAVED CHANGES WILL BE LOST!\") ) + { + edit_box_obj.value = template_bit; + } + } + } "; $return .= $this->html_build_editor_bottom(); - $return .= "
    "; + $return .= "
    "; $this->ipsclass->html = $return; @@ -236,28 +245,28 @@ EOF; ""; $this->menu_sizechange = ""; $this->menu_backchange = ""; $this->menu_fontcolor = ""; $this->menu_widthchange = "". - "". - "". - "". - "". - "". - "". - "". - "". - "". - "". - "". + "". + "". + "". + "". + "". + "". + "". + "". + "". + "". + "". ""; } else { - $this->menu_highchange = ""; } if ( $cookie = $this->ipsclass->my_getcookie( 'acpeditorprefs' ) ) @@ -335,7 +344,7 @@ EOF; $this->menu_highchange = preg_replace( "/(option value='".preg_quote($height)."')/" , "\\1 selected='selected'", $this->menu_highchange ); - $this->editor_prefs_dropdown = "
    Настройки редактора
    "; + $this->editor_prefs_dropdown = "
    Editor Preferences
    "; } @@ -353,7 +362,7 @@ EOF; return << -
    +
    {$close_box}
    {$this->editor_prefs_dropdown}
    @@ -370,32 +379,32 @@ EOF; 'tmpl-editor-prefs', new Array( "
    {$close_box} {$img}{$template['easy_name']} - - - Опции + + + Options  
    "+ ""+ - ""+ + ""+ ""+ ""+ ""+ - ""+ + ""+ ""+ ""+ ""+ - ""+ + ""+ ""+ ""+ ""+ - ""+ + ""+ ""+ ""+ ""+ - ""+ + ""+ ""+ ""+ ""+ - ""+ + ""+ ""+ ""+ ""+ ""+ ""+ "
    ШрифтFont Family{$this->menu_fontchange}
    Размер шрифтаFont Size{$this->menu_sizechange}
    Цвет шрифтаFont Color{$this->menu_fontcolor}
    ФонBackground{$this->menu_backchange}
    Ширина редактораArea Width{$this->menu_widthchange}
    Высота редактораArea Height{$this->menu_highchange}
    "+ - ""+ + ""+ "
    " diff --git a/upload/sources/lib/func_boardstats.php b/upload/sources/lib/func_boardstats.php index 121f05b5..f3327fc2 100644 --- a/upload/sources/lib/func_boardstats.php +++ b/upload/sources/lib/func_boardstats.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-01-30 18:53:19 +0000 (Mon, 30 Jan 2006) $ -| > $Revision: 127 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Board index functions module @@ -37,7 +27,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -101,7 +91,8 @@ class func_boardstats if ( $this->ipsclass->member['id'] ) { - $rows = array( $ar_time => array( 'login_type' => substr($this->ipsclass->member['login_anonymous'],0, 1), + $rows = array( $ar_time.'.'.md5(microtime()) => array( 'id' => 0, + 'login_type' => substr($this->ipsclass->member['login_anonymous'],0, 1), 'running_time' => $ar_time, 'member_id' => $this->ipsclass->member['id'], 'member_name' => $this->ipsclass->member['members_display_name'], @@ -128,6 +119,20 @@ class func_boardstats krsort( $rows ); + //----------------------------------------- + // Is this a root admin in disguise? + // Is that kinda like a diamond in the rough? + //----------------------------------------- + + $our_mgroups = array(); + + if( isset($this->ipsclass->member['mgroup_others']) AND $this->ipsclass->member['mgroup_others'] ) + { + $our_mgroups = explode( ",", $this->ipsclass->clean_perm_string( $this->ipsclass->member['mgroup_others'] ) ); + } + + $our_mgroups[] = $this->ipsclass->member['mgroup']; + //----------------------------------------- // cache all printed members so we // don't double print them @@ -155,7 +160,7 @@ class func_boardstats { if ( $this->ipsclass->vars['spider_anon'] ) { - if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] ) + if ( in_array( $this->ipsclass->vars['admin_group'], $our_mgroups ) ) { $active['NAMES'] .= "{$result['member_name']}*{$this->sep_char} \n"; } @@ -195,15 +200,14 @@ class func_boardstats if ( empty( $cached[ $result['member_id'] ] ) ) { $cached[ $result['member_id'] ] = 1; - - $result['prefix'] = $this->ipsclass->cache['group_cache'][ $result['member_group'] ]['prefix']; - $result['suffix'] = $this->ipsclass->cache['group_cache'][ $result['member_group'] ]['suffix']; + + $result['member_name'] = $this->ipsclass->make_name_formatted( $result['member_name'], $result['member_group'] ); if ($result['login_type']) { - if ( ($this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group']) and ($this->ipsclass->vars['disable_admin_anon'] != 1) ) + if ( (in_array( $this->ipsclass->vars['admin_group'], $our_mgroups )) and ($this->ipsclass->vars['disable_admin_anon'] != 1) ) { - $active['NAMES'] .= "{$result['prefix']}{$result['member_name']}{$result['suffix']}*{$this->sep_char} \n"; + $active['NAMES'] .= "{$result['member_name']}*{$this->sep_char} \n"; $active['ANON']++; } else @@ -214,7 +218,7 @@ class func_boardstats else { $active['MEMBERS']++; - $active['NAMES'] .= "{$result['prefix']}{$result['member_name']}{$result['suffix']}{$this->sep_char} \n"; + $active['NAMES'] .= "{$result['member_name']}{$this->sep_char} \n"; } } } @@ -250,6 +254,8 @@ class func_boardstats function show_calendar_events() { + $stats_html = ""; + if ($this->ipsclass->vars['show_birthdays'] or $this->ipsclass->vars['show_calendar'] ) { $a = explode( ',', gmdate( 'Y,n,j,G,i,s', time() + $this->ipsclass->get_time_offset() ) ); @@ -266,12 +272,19 @@ class func_boardstats { if ( is_array($this->ipsclass->cache['birthdays']) AND count( $this->ipsclass->cache['birthdays'] ) ) { - foreach( $this->ipsclass->cache['birthdays'] as $id => $u ) + foreach( $this->ipsclass->cache['birthdays'] as $u ) { if ( $u['bday_day'] == $day and $u['bday_month'] == $month ) { $users[] = $u; } + else if( $day == 28 && $month == 2 && !date("L") ) + { + if ( $u['bday_day'] == "29" and $u['bday_month'] == $month ) + { + $users[] = $u; + } + } } } @@ -279,7 +292,7 @@ class func_boardstats // Spin and print... //----------------------------------------- - foreach ( $users as $id => $user ) + foreach ( $users as $user ) { $birthstring .= "{$user['members_display_name']}"; @@ -332,15 +345,36 @@ class func_boardstats $events = array(); $show_events = array(); + $member_permission_groups[] = $this->ipsclass->member['mgroup']; + + if( isset($this->ipsclass->member['mgroup_others']) AND $this->ipsclass->member['mgroup_others'] ) + { + $this->ipsclass->member['mgroup_others'] = $this->ipsclass->clean_perm_string($this->ipsclass->member['mgroup_others']); + + $mgroup_others = explode( ",", $this->ipsclass->member['mgroup_others'] ); + + if( count($mgroup_others) ) + { + foreach( $mgroup_others as $mgroup ) + { + if( $mgroup ) + { + $member_permission_groups[] = $mgroup; + } + } + } + } + if ( is_array($this->ipsclass->cache['calendar']) AND count( $this->ipsclass->cache['calendar'] ) ) { - foreach( $this->ipsclass->cache['calendar'] as $id => $u ) + foreach( $this->ipsclass->cache['calendar'] as $u ) { $set_offset = 0; if( $u['event_timeset'] && !($u['event_recurring'] == 0 AND $u['event_unix_to']) ) { - $set_offset = $this->ipsclass->member['time_offset'] * 3600; + $set_offset = isset($this->ipsclass->member['time_offset']) ? $this->ipsclass->member['time_offset'] * 3600 : 0; } + $u['_unix_from'] = $u['event_unix_from'] - $set_offset; $u['_unix_to'] = $u['event_unix_to'] - $set_offset; @@ -357,18 +391,54 @@ class func_boardstats // Got perms? //----------------------------------------- - if ( $this->ipsclass->check_perms( $u['event_perms'] ) != TRUE ) + if ( $u['event_perms'] != "*" ) { - continue; + $event_perms = explode( ",", $this->ipsclass->clean_perm_string( $u['event_perms'] ) ); + + $check = 0; + + if( count($event_perms) ) + { + foreach( $event_perms as $mgroup_perm ) + { + if( in_array( $mgroup_perm, $member_permission_groups ) ) + { + $check = 1; + } + } + } + + if( !$check ) + { + continue; + } } //----------------------------------------- // Got calendar perms? //----------------------------------------- - if ( $this->ipsclass->check_perms( $u['_perm_read'] ) != TRUE ) + if ( $u['_perm_read'] != "*" ) { - continue; + $read_perms = explode( ",", $this->ipsclass->clean_perm_string( $u['_perm_read'] ) ); + + $check = 0; + + if( count($read_perms) ) + { + foreach( $read_perms as $mgroup_perm ) + { + if( in_array( $mgroup_perm, $member_permission_groups ) ) + { + $check = 1; + } + } + } + + if( !$check ) + { + continue; + } } //----------------------------------------- @@ -376,10 +446,10 @@ class func_boardstats //----------------------------------------- if ( $u['event_recurring'] == 0 AND ( ( $u['event_unix_from'] >= $our_unix AND $u['event_unix_from'] <= $max_date ) - OR ( $u['event_unix_to'] = 0 AND $u['event_unix_from'] >= $our_unix AND $u['event_unix_from'] <= $max_date ) ) ) + OR ( $u['event_unix_to'] == 0 AND $u['event_unix_from'] >= $our_unix AND $u['event_unix_from'] <= $max_date ) ) ) { $u['event_activetime'] = $u['_unix_from']; - $events[$u['event_unix_from'].$u['event_id']] = $u; + $events[ str_pad( $u['event_unix_from'].$u['event_id'], 15, "0" ) ] = $u; } elseif( $u['event_recurring'] > 0 ) { @@ -390,7 +460,7 @@ class func_boardstats if( $cust_range_s >= $our_unix AND $cust_range_s <= $max_date ) { $u['event_activetime'] = $cust_range_s; - $events[$cust_range_s.$u['event_id']] = $u; + $events[ str_pad( $cust_range_s.$u['event_id'], 15, "0" ) ] = $u; } if( $u['event_recurring'] == "1" ) @@ -416,16 +486,14 @@ class func_boardstats ksort($events); - foreach( $events as $e => $event ) + foreach( $events as $event ) { //----------------------------------------- // Recurring? //----------------------------------------- + $c_time = ''; - //if ( ! $event['event_recurring'] ) - //{ - $c_time = gmdate( 'j-F-y', $event['event_activetime'] ); - //} + $c_time = gmdate( 'j-F-y', $event['event_activetime'] ); $show_events[] = "".$event['event_title'].""; } @@ -459,6 +527,8 @@ class func_boardstats function show_totals() { + $stats_html = ""; + if ($this->ipsclass->vars['show_totals']) { if ( ! is_array( $this->ipsclass->cache['stats'] ) ) diff --git a/upload/sources/lib/func_chat.php b/upload/sources/lib/func_chat.php index c038d64f..eb10b0da 100644 --- a/upload/sources/lib/func_chat.php +++ b/upload/sources/lib/func_chat.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-24 22:17:00 +0100 (Mon, 24 Oct 2005) $ -| > $Revision: 64 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > IPChat functions @@ -108,26 +98,53 @@ class func_chat } } + //----------------------------------------- + // Is this a root admin in disguise? + // Is that kinda like a diamond in the rough? + //----------------------------------------- + + $our_mgroups = array(); + + if( $this->ipsclass->member['mgroup_others'] ) + { + $our_mgroups = explode( ",", $this->ipsclass->clean_perm_string( $this->ipsclass->member['mgroup_others'] ) ); + } + + $our_mgroups[] = $this->ipsclass->member['mgroup']; + //----------------------------------------- // Got owt? //----------------------------------------- if ( count($to_load) ) { - $this->ipsclass->DB->build_query( array( 'select' => 'id, members_display_name, mgroup', - 'from' => 'members', - 'where' => "id IN(".implode(",",$to_load).")", - 'order' => 'members_display_name' ) ); + $this->ipsclass->DB->build_query( array( 'select' => 'm.id, m.members_display_name, m.mgroup', + 'from' => array( 'members' => 'm' ), + 'where' => "m.id IN(".implode(",",$to_load).")", + 'add_join' => array( 0 => array( 'select' => 's.login_type', + 'from' => array( 'sessions' => 's' ), + 'where' => 's.member_id=m.id', + 'type' => 'left' ) ), + 'order' => 'm.members_display_name' ) ); $this->ipsclass->DB->exec_query(); while ( $m = $this->ipsclass->DB->fetch_row() ) { - $m['prefix'] = $this->ipsclass->cache['group_cache'][ $m['mgroup'] ]['prefix']; - $m['suffix'] = $this->ipsclass->cache['group_cache'][ $m['mgroup'] ]['suffix']; - - $member_ids[] = "ipsclass->base_url}showuser={$m['id']}\">{$m['prefix']}{$m['members_display_name']}{$m['suffix']}"; + $m['members_display_name'] = $this->ipsclass->make_name_formatted( $m['members_display_name'], $m['mgroup'] ); + + if( $m['login_type'] ) + { + if ( (in_array( $this->ipsclass->vars['admin_group'], $our_mgroups )) and ($this->ipsclass->vars['disable_admin_anon'] != 1) ) + { + $member_ids[] = "ipsclass->base_url}showuser={$m['id']}\">{$m['members_display_name']}"; + } + } + else + { + $member_ids[] = "ipsclass->base_url}showuser={$m['id']}\">{$m['members_display_name']}"; + } } - } + } //----------------------------------------- // Got owt? diff --git a/upload/sources/lib/func_chat_legacy.php b/upload/sources/lib/func_chat_legacy.php index a6b5f75f..a8f501e5 100644 --- a/upload/sources/lib/func_chat_legacy.php +++ b/upload/sources/lib/func_chat_legacy.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-10-13 15:14:01 +0100 (Fri, 13 Oct 2006) $ +| > $Revision: 641 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -50,8 +40,6 @@ class chat_functions function chat_functions() { - global $DB, $std, $ibforums; - $this->server = str_replace( 'http://', '', $this->ipsclass->vars['chat_server_addr'] ); } @@ -74,8 +62,6 @@ class chat_functions function get_online_list() { - global $DB, $std, $ibforums; - if ( ! $this->ipsclass->vars['chat_who_on'] ) { return; @@ -85,9 +71,7 @@ class chat_functions // Get details from the DB //----------------------------------------- - $this->ipsclass->DB->query("SELECT * FROM ibf_cache_store WHERE cs_key='chatstat'"); - - $row = $this->ipsclass->DB->fetch_row(); + $row = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='chatstat'" ) ); list( $hits, $time ) = explode( '&', $row['cs_extra'] ); @@ -124,13 +108,17 @@ class chat_functions if ( count($new) > 0 ) { - $this->ipsclass->DB->query("SELECT m.id, m.name, m.mgroup FROM ibf_members m - WHERE lower(name) IN (\"".$name_string."\") ORDER BY m.name"); + $this->ipsclass->DB->build_query( array( 'select' => 'id, members_display_name, mgroup', + 'from' => 'members', + 'where' => "members_l_username IN (\"".$name_string."\")", + 'order' => 'members_display_name' ) ); + $this->ipsclass->DB->exec_query while ( $m = $this->ipsclass->DB->fetch_row() ) { - $g = $this->ipsclass->cache['group_cache'][ $m['mgroup'] ]; - $member_ids[] = "ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}?showuser={$m['id']}\">{$g['prefix']}{$m['name']}{$g['suffix']}"; + $m['members_display_name'] = $this->ipsclass->make_name_formatted( $m['members_display_name'], $m['mgroup'] ); + + $member_ids[] = "ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}?showuser={$m['id']}\">{$m['members_display_name']}"; } $final = implode( ",\n", $member_ids ); @@ -138,7 +126,7 @@ class chat_functions $final .= '|&|'.intval(count($member_ids)); } - $this->ipsclass->DB->query("UPDATE ibf_cache_store SET cs_value='".addslashes($final)."', cs_extra='{$hits_left}&{$time_is_running_out}' WHERE cs_key='chatstat'"); + $this->ipsclass->DB->do_update( 'cache_store', array( 'cs_value' => addslashes($final), 'cs_extra' => "{$hits_left}&{$time_is_running_out}" ), 'where' => "cs_key='chatstat'" ); $row['cs_value'] = $final; } @@ -173,13 +161,5 @@ class chat_functions return $this->html; } - - - - - } - - - ?> \ No newline at end of file diff --git a/upload/sources/lib/func_digest.php b/upload/sources/lib/func_digest.php index 2aa98134..8c961818 100644 --- a/upload/sources/lib/func_digest.php +++ b/upload/sources/lib/func_digest.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -93,6 +83,12 @@ class func_digest $this->ipsclass->DB->load_cache_file( $this->root_path.'sources/sql/'.SQL_DRIVER.'_extra_queries.php', 'sql_extra_queries' ); + //----------------------------------------- + // Get some lang bits + //----------------------------------------- + + $this->ipsclass->load_language('lang_emails'); + //----------------------------------------- // Load the email libby //----------------------------------------- @@ -194,7 +190,7 @@ class func_digest // Process //----------------------------------------- - $main_output .= "Topic: $topic_title (Forum: $forum_name)\n" + $main_output .= "{$this->ipsclass->lang['topic_langbit']}: $topic_title ({$this->ipsclass->lang['forum_langbit']}: $forum_name)\n" . "=====================================\n" . $post_output . "\n=====================================\n"; @@ -203,6 +199,7 @@ class func_digest } else { + $others_posted = 1; $main_output = $cached[ $t['tid'] ]; } @@ -220,7 +217,7 @@ class func_digest 'TOPIC_ID' => $t['tid'], 'FORUM_ID' => $t['forum_id'], 'TITLE' => $topic_title, - 'NAME' => $t['name'], + 'NAME' => $t['members_display_name'], 'CONTENT' => $main_output, ) ); @@ -238,7 +235,7 @@ class func_digest // Update cache with remaning email count //----------------------------------------- - $this->ipsclass->DB->do_update( 'cache_store', array( 'cs_array' => 1, 'cs_value' => addslashes(serialize($this->ipsclass->cache['systemvars'])) ), "cs_key='systemvars'" ); + $this->ipsclass->update_cache( array( 'array' => 1, 'name' => 'systemvars', 'donow' => 1, 'deletefirst' => 0 ) ); } /*-------------------------------------------------------------------------*/ @@ -270,7 +267,7 @@ class func_digest $main_output = ""; $others_posted = 0; - if ( ! $cached[ $t['forum_id'] ] ) + if ( !isset($cached[ $t['forum_id'] ]) OR !$cached[ $t['forum_id'] ] ) { $forum_name = $this->ipsclass->cache['forum_cache'][ $t['forum_id'] ]['name']; @@ -288,22 +285,28 @@ class func_digest while( $p = $this->ipsclass->DB->fetch_row( $topic_query ) ) { + $this->ipsclass->DB->cache_add_query( 'digest_get_forums_topics_posts', array( + 'tid' => $p['tid'], + ), 'sql_extra_queries' ); + $post_query = $this->ipsclass->DB->cache_exec_query(); + $post = $this->ipsclass->DB->fetch_row(); + //----------------------------------------- // Do we have other posters? //----------------------------------------- - if ( $t['member_id'] != $p['starter_id'] ) + if ( $t['member_id'] != $post['author_id'] ) { $others_posted = 1; } - $post_author = $p['author_name']; - $post_date = $this->ipsclass->get_date( $p['post_date'], 'SHORT' ); - $post_content = $p['post']; + $post_author = $post['author_name']; + $post_date = $this->ipsclass->get_date( $post['post_date'], 'SHORT' ); + $post_content = $post['post']; $topic_title = $p['title']; $post_output .= "\n-------------------------------------------\n" - . "Topic: {$topic_title} ({$post_author} -- {$post_date})" + . "{$this->ipsclass->lang['topic_langbit']}: {$topic_title} ({$post_author} -- {$post_date})" . "\n............................................\n" . "{$post_content}\n\n"; } @@ -312,7 +315,7 @@ class func_digest // Process //----------------------------------------- - $main_output .= "Forum: $forum_name\n" + $main_output .= "{$this->ipsclass->lang['forum_langbit']}: $forum_name\n" . "=====================================\n" . $post_output . "\n=====================================\n"; @@ -321,6 +324,7 @@ class func_digest } else { + $others_posted = 1; $main_output = $cached[ $t['forum_id'] ]; } @@ -332,11 +336,11 @@ class func_digest // Send email... //----------------------------------------- - $this->email->get_template( $subject, $data['language']); + $this->email->get_template( $subject, $t['language']); $this->email->build_message( array( 'FORUM_ID' => $t['forum_id'], - 'NAME' => $forum_name, + 'NAME' => $t['members_display_name'], 'CONTENT' => $main_output, ) ); @@ -354,7 +358,7 @@ class func_digest // Update cache with remaning email count //----------------------------------------- - $this->ipsclass->DB->do_update( 'cache_store', array( 'cs_array' => 1, 'cs_value' => addslashes(serialize($this->ipsclass->cache['systemvars'])) ), "cs_key='systemvars'" ); + $this->ipsclass->update_cache( array( 'array' => 1, 'name' => 'systemvars', 'donow' => 1, 'deletefirst' => 0 ) ); } diff --git a/upload/sources/lib/func_mod.php b/upload/sources/lib/func_mod.php index 8de72abd..3133f0ce 100644 --- a/upload/sources/lib/func_mod.php +++ b/upload/sources/lib/func_mod.php @@ -1,24 +1,15 @@ Moderator Core Functions @@ -32,32 +23,37 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class func_mod { + var $ipsclass; + + var $topic = ""; + var $forum = ""; + var $error = ""; + + var $auto_update = FALSE; + + var $stm = ""; + var $upload_dir = "./uploads"; + + var $moderator = ""; + //----------------------------------------- // @modfunctions: constructor // ----------- // Accepts: NOTHING // Returns: NOTHING (TRUE) - //----------------------------------------- - - var $topic = ""; - var $forum = ""; - var $error = ""; - - var $auto_update = FALSE; - - var $stm = ""; - var $upload_dir = ""; - - var $moderator = ""; + //----------------------------------------- function func_mod() { $this->error = ""; - $this->upload_dir = $this->ipsclass->vars['upload_dir']; - return TRUE; } @@ -70,6 +66,8 @@ class func_mod function init($forum="", $topic="", $moderator="") { + $this->upload_dir = $this->ipsclass->vars['upload_dir']; + $this->forum = $forum; if ( is_array($topic) ) @@ -103,6 +101,7 @@ class func_mod if ( is_array( $id ) ) { + // Better safe than sorry - this should have already been done though $id = $this->ipsclass->clean_int_array( $id ); if ( count($id) > 0 ) @@ -143,7 +142,7 @@ class func_mod // Is there an attachment to this post? //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'attachments', 'where' => "attach_pid".$pid ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'attachments', 'where' => "attach_rel_module='post' AND attach_rel_id".$pid ) ); $this->ipsclass->DB->simple_exec(); $attach_ids = array(); @@ -176,7 +175,7 @@ class func_mod $postlib = new class_post(); $postlib->ipsclass =& $this->ipsclass; - foreach( $attach_tid as $apid => $tid ) + foreach( $attach_tid as $tid ) { $postlib->pf_recount_topic_attachments($tid); } @@ -205,7 +204,7 @@ class func_mod $this->rebuild_topic($tid); } - $this->add_moderate_log("", "", "", $pid, "Удаленные сообщения ($pid)"); + $this->add_moderate_log("", "", "", $pid, "Deleted posts ($pid)"); return TRUE; } @@ -221,6 +220,16 @@ class func_mod { $tid = intval($tid); + if ( $this->ipsclass->vars['post_order_column'] != 'post_date' ) + { + $this->ipsclass->vars['post_order_column'] = 'pid'; + } + + if ( $this->ipsclass->vars['post_order_sort'] != 'desc' ) + { + $this->ipsclass->vars['post_order_sort'] = 'asc'; + } + //----------------------------------------- // Get the correct number of replies //----------------------------------------- @@ -247,11 +256,13 @@ class func_mod // Get last post info //----------------------------------------- - $this->ipsclass->DB->cache_add_query( 'mod_func_get_last_post', array( 'tid' => $tid ) ); + $this->ipsclass->DB->cache_add_query( 'mod_func_get_last_post', array( 'tid' => $tid, 'orderby' => $this->ipsclass->vars['post_order_column'] ) ); $this->ipsclass->DB->cache_exec_query(); $last_post = $this->ipsclass->DB->fetch_row(); + $last_poster_name = $last_post['members_display_name'] ? $last_post['members_display_name'] : $last_post['author_name']; + //----------------------------------------- // Get first post info //----------------------------------------- @@ -259,7 +270,7 @@ class func_mod $this->ipsclass->DB->build_query( array( 'select' => 'p.post_date, p.author_id, p.author_name, p.pid', 'from' => array( 'posts' => 'p' ), 'where' => "p.topic_id=$tid", - 'order' => 'p.pid ASC', + 'order' => "p.{$this->ipsclass->vars['post_order_column']} ASC", 'limit' => array(0,1), 'add_join' => array( 0 => array( 'select' => 'm.id, m.members_display_name', 'from' => array( 'members' => 'm' ), @@ -271,6 +282,8 @@ class func_mod $first_post = $this->ipsclass->DB->fetch_row(); + $first_poster_name = $first_post['members_display_name'] ? $first_post['members_display_name'] : $first_post['author_name']; + //----------------------------------------- // Get number of attachments //----------------------------------------- @@ -284,13 +297,16 @@ class func_mod // Update topic //----------------------------------------- - $this->ipsclass->DB->do_update( 'topics', array( 'last_post' => $last_post['post_date'], - 'last_poster_id' => $last_post['author_id'], - 'last_poster_name' => $last_post['members_display_name'] ? $last_post['members_display_name'] : $last_post['author_name'], + $this->ipsclass->DB->force_data_type = array( 'starter_name' => 'string', + 'last_poster_name' => 'string' ); + + $this->ipsclass->DB->do_update( 'topics', array( 'last_post' => $last_post['post_date'] ? $last_post['post_date'] : $first_post['post_date'], + 'last_poster_id' => $last_post['author_id'] ? $last_post['author_id'] : $first_post['author_id'], + 'last_poster_name' => $last_poster_name ? $last_poster_name : $first_poster_name, 'topic_queuedposts' => $qpcount, 'posts' => $pcount, 'starter_id' => $first_post['author_id'], - 'starter_name' => $first_post['members_display_name'] ? $first_post['members_display_name'] : $first_post['author_name'], + 'starter_name' => $first_poster_name, 'start_date' => $first_post['post_date'], 'topic_firstpost' => $first_post['pid'], 'topic_hasattach' => intval($attach['count']) @@ -300,7 +316,7 @@ class func_mod // Update first post //----------------------------------------- - if ( $first_post['new_topic'] != 1 and $first_post['pid'] ) + if ( (!isset($first_post['new_topic']) OR $first_post['new_topic'] != 1) and $first_post['pid'] ) { $this->ipsclass->DB->do_shutdown_update( 'posts', array( 'new_topic' => 0 ), 'topic_id='.$tid ); $this->ipsclass->DB->do_shutdown_update( 'posts', array( 'new_topic' => 1 ), 'pid='.$first_post['pid'] ); @@ -327,9 +343,27 @@ class func_mod 'last_poster_name' => $tt['last_poster_name'] ? $tt['last_poster_name'] : "", 'last_poster_id' => $tt['last_poster_id'] ? $tt['last_poster_id'] : "", ); + + $this->ipsclass->DB->force_data_type = array( 'last_poster_name' => 'string', + 'last_title' => 'string' ); $this->ipsclass->DB->do_update( 'forums', $dbs, "id=".intval($this->forum['id']) ); + if ( $this->ipsclass->forums->forums_by_id[ $this->forum['id'] ]['newest_id'] == $tid ) + { + $sort_key = $this->ipsclass->forums->forums_by_id[ $this->forum['id'] ]['sort_key']; + + $tt = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'title, tid', + 'from' => 'topics', + 'where' => 'forum_id='.$this->forum['id'].' and approved=1', + 'order' => $sort_key.' desc', + 'limit' => array( 0,1 ) + ) ); + + $dbs['newest_id'] = $tt['tid'] ? $tt['tid'] : ""; + $dbs['newest_title'] = $tt['title'] ? $tt['title'] : ""; + } + //----------------------------------------- // Update forum cache //----------------------------------------- @@ -411,6 +445,9 @@ class func_mod $db_string = $this->ipsclass->DB->compile_db_update_string( $ta ); + $this->ipsclass->DB->force_data_type = array( 'last_poster_name' => 'string' ); + + $this->ipsclass->DB->simple_exec_query( array( 'update' => 'topics', 'set' => $db_string.", posts=posts+1", 'where' => 'tid='.$tid ) ); $add_posts++; @@ -552,6 +589,8 @@ class func_mod if ( is_array( $id ) ) { + $id = $this->ipsclass->clean_int_array( $id ); + if ( count($id) > 0 ) { $tid = " IN(".implode(",",$id).")"; @@ -585,6 +624,30 @@ class func_mod $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'voters', 'where' => "tid".$tid ) ); + //----------------------------------------- + // Remove subscriptions to this topic + //----------------------------------------- + + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'tracker', 'where' => "topic_id".$tid ) ); + + //----------------------------------------- + // Remove ratings to this topic + //----------------------------------------- + + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'topic_ratings', 'where' => "rating_tid".$tid ) ); + + //----------------------------------------- + // Remove topics read markers for this topic + //----------------------------------------- + + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'topics_read', 'where' => "read_tid".$tid ) ); + + //----------------------------------------- + // Remove stored views for this topic + //----------------------------------------- + + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'topic_views', 'where' => "views_tid".$tid ) ); + //----------------------------------------- // Remove polls assigned to this topic //----------------------------------------- @@ -609,7 +672,7 @@ class func_mod if ( count( $posts ) ) { - $this->ipsclass->DB->simple_construct( array( "select" => '*', 'from' => 'attachments', 'where' => "attach_pid IN (".implode(",",$posts).")" ) ); + $this->ipsclass->DB->simple_construct( array( "select" => '*', 'from' => 'attachments', 'where' => "attach_rel_module='post' AND attach_rel_id IN (".implode(",",$posts).")" ) ); $o = $this->ipsclass->DB->simple_exec(); while ( $killmeh = $this->ipsclass->DB->fetch_row( $o ) ) @@ -674,6 +737,8 @@ class func_mod if ( is_array( $topics ) ) { + $topics = $this->ipsclass->clean_int_array( $topics ); + if ( count($topics) > 0 ) { $tid = " IN(".implode(",",$topics).")"; @@ -716,6 +781,10 @@ class func_mod $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => "tid".$tid ) ); $oq = $this->ipsclass->DB->simple_exec(); + $this->ipsclass->DB->force_data_type = array( 'title' => 'string', + 'starter_name' => 'string', + 'last_poster_name' => 'string' ); + while ( $row = $this->ipsclass->DB->fetch_row($oq) ) { $this->ipsclass->DB->do_insert( 'topics', array ( @@ -888,6 +957,17 @@ class func_mod $last_post = $this->ipsclass->DB->fetch_row(); + + $sort_key = $this->ipsclass->cache['forum_cache'][ $fid ]['sort_key'] ? + $this->ipsclass->cache['forum_cache'][ $fid ]['sort_key'] : 'last_post'; + + $newest_topic = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'title, tid', + 'from' => 'topics', + 'where' => 'forum_id='.$fid.' and approved=1', + 'order' => $sort_key.' desc', + 'limit' => array( 0,1 ) + ) ); + //----------------------------------------- // Reset this forums stats //----------------------------------------- @@ -902,12 +982,17 @@ class func_mod 'posts' => intval($posts['replies']), 'queued_topics' => intval($queued_topics['count']), 'queued_posts' => intval($queued_posts['replies']), + 'newest_id' => $newest_topic['tid'], + 'newest_title' => $newest_topic['title'], ); - if ( $this->ipsclass->forums->forum_by_id[ $fid ]['_update_deletion'] ) + if ( isset($this->ipsclass->forums->forum_by_id[ $fid ]['_update_deletion']) AND $this->ipsclass->forums->forum_by_id[ $fid ]['_update_deletion'] ) { $dbs['forum_last_deletion'] = time(); } + + $this->ipsclass->DB->force_data_type = array( 'last_poster_name' => 'string', + 'last_title' => 'string' ); $this->ipsclass->DB->do_update( 'forums', $dbs, "id=".$fid ); @@ -956,7 +1041,7 @@ class func_mod $final_array = array(); - foreach( $this->stm as $idx => $real_array ) + foreach( $this->stm as $real_array ) { foreach( $real_array as $k => $v ) { @@ -968,6 +1053,8 @@ class func_mod if ( is_array($id) ) { + $id = $this->ipsclass->clean_int_array( $id ); + if ( count($id) > 0 ) { $this->ipsclass->DB->simple_exec_query( array( 'update' => 'topics', 'set' => $db_string, 'where' => "tid IN(".implode( ",", $id ).")" ) ); @@ -1125,7 +1212,9 @@ class func_mod function sql_prune_create( $forum_id, $starter_id="", $topic_state="", $post_min="", $date_exp="", $ignore_pin="", $pergo=0, $limit=0 ) { - $sql = "SELECT tid FROM ibf_topics WHERE approved=1 and forum_id=".intval($forum_id); + $this->ipsclass->DB->build_query( array( 'select' => 'tid', 'from' => 'topics', 'where' => 'approved=1 and forum_id='.intval($forum_id) ) ); + + $sql = $this->ipsclass->DB->cur_query; if ( intval($date_exp) ) { @@ -1222,6 +1311,11 @@ class func_mod function add_moderate_log($fid, $tid, $pid, $t_title, $mod_title='Unknown') { + $this->ipsclass->DB->force_data_type = array( 'member_name' => 'string' ); + + $qstring = $this->ipsclass->my_getenv('QUERY_STRING'); + $qstring = htmlentities( strip_tags( str_replace( '\\', '', $qstring ) ) ); + $this->ipsclass->DB->do_insert( 'moderator_logs', array ( 'forum_id' => $fid, 'topic_id' => $tid, @@ -1229,11 +1323,11 @@ class func_mod 'member_id' => $this->ipsclass->member['id'], 'member_name' => $this->ipsclass->member['members_display_name'], 'ip_address' => $this->ipsclass->input['IP_ADDRESS'], - 'http_referer'=> $_SERVER['HTTP_REFERER'], + 'http_referer'=> $this->ipsclass->my_getenv('HTTP_REFERER'), 'ctime' => time(), 'topic_title' => $t_title, 'action' => $mod_title, - 'query_string'=> $_SERVER['QUERY_STRING'], + 'query_string'=> $qstring, ) ); return TRUE; } @@ -1241,12 +1335,4 @@ class func_mod } - - - - - - - - ?> \ No newline at end of file diff --git a/upload/sources/lib/func_msg.php b/upload/sources/lib/func_msg.php index 35833b02..ed37a70d 100644 --- a/upload/sources/lib/func_msg.php +++ b/upload/sources/lib/func_msg.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-06 17:36:43 +0000 (Tue, 06 Dec 2005) $ -| > $Revision: 94 $ +| > $Date: 2006-10-12 17:58:40 +0100 (Thu, 12 Oct 2006) $ +| > $Revision: 633 $ | > $Author: bfarber $ +--------------------------------------------------------------------------- | @@ -38,7 +28,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -57,8 +47,13 @@ class func_msg var $redirect_url = ""; var $redirect_lang= ""; + var $jump_html = ""; + var $vid = ""; + var $force_pm = 0; + var $member = array(); + function register_class( &$class ) { $this->class = &$class; @@ -75,7 +70,7 @@ class func_msg //----------------------------------------- require_once( ROOT_PATH.'sources/classes/post/class_post.php' ); - $this->postlib = new class_post(); + $this->postlib = new class_post(); $this->postlib->ipsclass =& $this->ipsclass; $this->postlib->load_classes(); @@ -90,17 +85,164 @@ class func_msg $this->postlib->can_upload = $this->can_upload; } + + /*-------------------------------------------------------------------------*/ + // Generate the UserCP menu + /*-------------------------------------------------------------------------*/ + + function ucp_generate_menu() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $menu_html = ""; + $component_html = ""; + $folder_links = ""; + + //----------------------------------------- + // Get all member info.. + //----------------------------------------- + + $this->ipsclass->DB->cache_add_query( 'generic_get_all_member', array( 'mid' => $this->ipsclass->member['id'] ) ); + $this->ipsclass->DB->cache_exec_query(); + + if ( ! $member = $this->ipsclass->DB->fetch_row() ) + { + $this->ipsclass->DB->do_insert( 'member_extra', array( 'id' => $this->ipsclass->member['id'] ) ); + } + else + { + $this->ipsclass->member = array_merge( $member, $this->ipsclass->member ); + } + + //----------------------------------------- + // Get enabled components + //----------------------------------------- + + if ( is_array( $this->ipsclass->cache['components'] ) and count( $this->ipsclass->cache['components'] ) ) + { + foreach( $this->ipsclass->cache['components'] as $data ) + { + $file = ROOT_PATH.'sources/components_ucp/'.$data['com_filename'].'.php'; + + if ( file_exists( $file ) ) + { + require_once( $file ); + $name = 'components_ucp_'.$data['com_filename']; + $tmp = new $name(); + $tmp->ipsclass =& $this->ipsclass; + + $component_html .= $tmp->ucp_build_menu(); + + unset($tmp); + } + } + } + + //----------------------------------------- + // Print the top button menu + //----------------------------------------- + + $menu_html = $this->ipsclass->compiled_templates['skin_msg']->Menu_bar( $component_html ); + + //----------------------------------------- + // Messenger + //----------------------------------------- + + if ( $this->ipsclass->member['g_use_pm'] ) + { + //----------------------------------------- + // Do a little set up, do a litle dance, get + // down tonight! *boogie* + //----------------------------------------- + + $this->jump_html = "\n\n"; + + return $menu_html; + } + /*-------------------------------------------------------------------------*/ // Send form stuff /*-------------------------------------------------------------------------*/ function send_form($preview=0, $errors="") { + //----------------------------------------- + // INIT + //----------------------------------------- + + $_msg_id = 0; + $this->form_mid = intval($this->ipsclass->input['MID']); $this->form_orig_id = intval($this->ipsclass->input['MSID']); - $_POST['Post-NS'] = $_POST['Post']; - $_POST['Post'] = $this->ipsclass->remove_tags( $this->ipsclass->txt_raw2form( $_POST['Post'] ) ); + $_POST['Post-NS'] = isset($_POST['Post']) ? $_POST['Post'] : ''; + $_POST['Post'] = $this->ipsclass->remove_tags( $this->ipsclass->txt_raw2form( isset($_POST['Post']) ? $_POST['Post'] : '' ) ); //----------------------------------------- // Fix up errors @@ -116,7 +258,7 @@ class func_msg { $this->postlib->parser->parse_html = $this->ipsclass->vars['msg_allow_html']; $this->postlib->parser->parse_nl2br = 1; - $this->postlib->parser->parse_smilies = 1;//intval($this->ipsclass->input['enableemo']); + $this->postlib->parser->parse_smilies = 1; $this->postlib->parser->parse_bbcode = $this->ipsclass->vars['msg_allow_code']; $old_msg = $this->postlib->han_editor->process_raw_post( 'Post-NS' ); @@ -125,8 +267,10 @@ class func_msg $this->output .= $this->ipsclass->compiled_templates['skin_msg']->preview($old_msg); } - if ($errors != "") + if ( $errors != "" OR $this->postlib->parser->error != "" ) { + $errors = $errors ? $errors : $this->ipsclass->lang[$this->postlib->parser->error]; + $this->output .= $this->ipsclass->compiled_templates['skin_msg']->pm_errors($errors); $preview = 1; } @@ -145,38 +289,38 @@ class func_msg // Did we come from a button with a user ID? //----------------------------------------- - if ( $this->form_mid ) - { + if ( $this->form_mid ) + { $this->ipsclass->DB->simple_construct( array( 'select' => 'members_display_name, name, id', 'from' => 'members', 'where' => "id=".$this->form_mid ) ); $this->ipsclass->DB->simple_exec(); $name = $this->ipsclass->DB->fetch_row(); - - if ($this->ipsclass->input['fwd'] != 1) + + if ($name['id']) { - if ($name['id']) - { - $name_to_enter = $name['members_display_name']; - } + $name_to_enter = $name['members_display_name']; } } else { - $name_to_enter = $this->ipsclass->input['entered_name']; + $name_to_enter = isset($this->ipsclass->input['entered_name']) ? $this->ipsclass->input['entered_name'] : ''; } //----------------------------------------- // Are we quoting an old message? //----------------------------------------- + $footer_defaults = array( 'add_sent' => '', 'add_tracking' => '' ); + if ( $preview or $this->class->show_form ) { $old_message = $_POST['Post-NS']; - $old_title = preg_replace( "/'/", "'", $this->ipsclass->txt_stripslashes($_POST['msg_title']) ); + $old_title = str_replace( "'", "'", str_replace( '"', '"', $this->ipsclass->txt_stripslashes($_POST['msg_title']) ) ); + // If we preview and check these boxes, they should default to checked $footer_defaults = array( - 'add_sent' => $this->ipsclass->input['add_sent'] == 'yes' ? "checked='checked' " : "", - 'add_tracking' => $this->ipsclass->input['add_tracking'] == '1' ? "checked='checked' " : "", + 'add_sent' => isset($this->ipsclass->input['add_sent']) AND $this->ipsclass->input['add_sent'] == 'yes' ? "checked='checked' " : "", + 'add_tracking' => isset($this->ipsclass->input['add_tracking']) AND $this->ipsclass->input['add_tracking'] == '1' ? "checked='checked' " : "", ); } else if ( $this->form_orig_id ) @@ -186,7 +330,12 @@ class func_msg $old_msg = $this->ipsclass->DB->fetch_row(); - if ($old_msg['mt_title']) + if( $old_msg['from_id'] ) + { + $name_to_enter = $old_msg['from_name']; + } + + if ( $old_msg['mt_title'] ) { if ( $this->class->edit_saved ) { @@ -197,8 +346,9 @@ class func_msg $old_addsent = $old_msg['mt_addtosent']; $old_title = $old_msg['mt_title']; $old_message = $this->postlib->parser->bad_words( $this->ipsclass->my_br2nl( $old_msg['msg_post'] ) ); + $_msg_id = $old_msg['mt_msg_id']; - if( $this->postlib->han_editor->method == 'rte' ) + if ( $this->postlib->han_editor->method == 'rte' ) { $_POST['tmp_for_msg_edit'] = $old_message; @@ -208,10 +358,10 @@ class func_msg unset($_POST['tmp_for_msg_edit']); } - $this->class->post_key = $old_msg['msg_post_key']; - $this->ipsclass->input['OID']= $old_msg['mt_id']; + $this->class->post_key = $old_msg['msg_post_key']; + $this->ipsclass->input['OID'] = $old_msg['mt_id']; } - else if ($this->ipsclass->input['fwd'] == 1) + else if ( isset($this->ipsclass->input['fwd']) AND $this->ipsclass->input['fwd'] == 1 ) { $old_title = "Fwd:".$old_msg['mt_title']; $old_title = preg_replace( "/^(?:Fwd\:){1,}/i", "Fwd:", $old_title ); @@ -228,8 +378,8 @@ class func_msg } $footer_defaults = array( - 'add_sent' => $old_addsent == '1' ? "checked='checked' " : "", - 'add_tracking' => $old_track == '1' ? "checked='checked' " : "", + 'add_sent' => isset($old_addsent) AND $old_addsent == '1' ? "checked='checked' " : "", + 'add_tracking' => isset($old_track) AND $old_track == '1' ? "checked='checked' " : "", ); } @@ -247,24 +397,24 @@ class func_msg //----------------------------------------- $this->output .= $this->ipsclass->compiled_templates['skin_msg']->Send_form( array ( - 'CONTACTS' => $contacts, - 'MEMBER' => $this->member, - 'N_ENTER' => $name_to_enter, - 'O_TITLE' => $old_title, - 'OID' => $this->ipsclass->input['OID'], // Old unsent msg id for restoring saved msg - used to delete saved when sent - 'post_key' => $this->class->post_key, - 'form_extra'=> $this->form_extra, - 'upload' => $this->hidden_field, + 'CONTACTS' => $contacts, + 'MEMBER' => $this->member, + 'N_ENTER' => $name_to_enter, + 'O_TITLE' => $old_title, + 'OID' => isset($this->ipsclass->input['OID']) ? $this->ipsclass->input['OID'] : 0, // Old unsent msg id for restoring saved msg - used to delete saved when sent + 'attach_post_key' => $this->class->post_key, + 'form_extra' => $this->form_extra, + 'upload' => $this->hidden_field, ) ); $this->ipsclass->lang['the_max_length'] = $this->ipsclass->vars['max_post_length'] * 1024; //----------------------------------------- - // Show editor HTML + // Remove side panel //----------------------------------------- - $this->postlib->han_editor->ed_width = $this->ipsclass->vars['rte_pm_width'] ? $this->ipsclass->vars['rte_pm_width'] : $this->ipsclass->vars['rte_width']; + $this->postlib->han_editor->remove_side_panel = 1; //----------------------------------------- // Is this RTE? If so, convert BBCode @@ -272,6 +422,11 @@ class func_msg if ( $this->postlib->han_editor->method == 'rte' AND $old_message ) { + if ( $errors or $preview ) + { + $old_message = stripslashes( $old_message ); + } + $old_message = $this->postlib->parser->convert_ipb_html_to_html( $old_message ); } else if ( $old_message ) @@ -285,19 +440,15 @@ class func_msg // Show upload stuff? //----------------------------------------- - if ($this->can_upload) + if ( $this->can_upload ) { - $this->output .= $this->postlib->html_build_uploads($this->class->post_key,'msg'); + $upload_field = $this->ipsclass->compiled_templates['skin_post']->Upload_field( $this->class->post_key, 'msg', $_msg_id ); + + $this->output = str_replace( '', $upload_field, $this->output ); } $this->output .= $this->ipsclass->compiled_templates['skin_msg']->send_form_footer( $footer_defaults ); - //----------------------------------------- - // Add in the smilies box - //----------------------------------------- - - $this->output = $this->postlib->html_add_smilie_box($this->output); - $this->class->page_title = $this->ipsclass->lang['t_welcome']; $this->class->nav = array( "".$this->ipsclass->lang['t_title']."" ); @@ -305,18 +456,21 @@ class func_msg // Do we have permission to mass PM peeps? //----------------------------------------- + $cc_box = ""; + $cc_formbox = ""; + if ($this->ipsclass->member['g_max_mass_pm'] > 0) { $this->ipsclass->lang['carbon_copy_desc'] = sprintf( $this->ipsclass->lang['carbon_copy_desc'], $this->ipsclass->member['g_max_mass_pm'] ); - if ( isset($_POST['carbon_copy']) or $cc_text ) + if ( isset($_POST['carbon_copy']) or isset($cc_text) ) { - $cc_text = $cc_text ? $cc_text : $this->ipsclass->txt_htmlspecialchars($_POST['carbon_copy']); + $cc_text = isset($cc_text) ? $cc_text : $this->ipsclass->txt_htmlspecialchars($_POST['carbon_copy']); - $cc_box = preg_replace( "##i", "", $this->ipsclass->txt_stripslashes($cc_text) ); + $cc_box = str_replace( "", "", $this->ipsclass->txt_stripslashes($cc_text) ); } - if ( intval($this->ipsclass->input['mt_hide_cc']) == 1 or ( isset($cc_hide) AND $cc_hide == 1 ) ) + if ( ( isset($this->ipsclass->input['mt_hide_cc']) AND intval($this->ipsclass->input['mt_hide_cc']) == 1 ) or ( isset($cc_hide) AND $cc_hide == 1 ) ) { $cc_formbox = $cc_hide ? $cc_hide : intval($this->ipsclass->input['mt_hide_cc']); @@ -333,25 +487,51 @@ class func_msg function build_contact_list() { - $contacts = ""; - - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'contacts', 'where' => "member_id=".$this->ipsclass->member['id'], 'order' => "contact_name") ); - $this->ipsclass->DB->simple_exec(); - - if ( $this->ipsclass->DB->get_num_rows() ) - { - $contacts = "\n"; - } - else + //----------------------------------------- + // INIT + //----------------------------------------- + + $contacts = ""; + $from_contact = $this->ipsclass->input['from_contact'] ? intval($this->ipsclass->input['from_contact']) : intval($this->ipsclass->input['MID']); + $member_id = intval( $this->ipsclass->member['id'] ); + + //----------------------------------------- + // Get 'em. + //----------------------------------------- + + $this->ipsclass->DB->build_query( array( 'select' => 'pf.*', + 'from' => array( 'profile_friends' => 'pf' ), + 'where' => 'pf.friends_member_id='.$member_id. ' AND pf.friends_approved=1', + 'order' => 'm.members_display_name ASC', + 'limit' => array( 0, 10 ), + 'add_join' => array( 0 => array( 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.id=pf.friends_friend_id', + 'type' => 'left' ), + 1 => array( 'select' => 'pp.*', + 'from' => array( 'profile_portal' => 'pp' ), + 'where' => 'pp.pp_member_id=m.id', + 'type' => 'left' ), + 2 => array( 'select' => 'me.*', + 'from' => array( 'member_extra' => 'me' ), + 'where' => 'me.id=pf.friends_friend_id', + 'type' => 'left' ) ) ) ); + + $this->ipsclass->DB->exec_query(); + + if ( $this->ipsclass->DB->get_num_rows() ) + { + $contacts = "\n"; + } + else { $contacts = $this->ipsclass->lang['address_list_empty']; } @@ -452,7 +632,9 @@ class func_msg $this->ipsclass->DB->simple_construct( array( 'delete' => 'message_text', 'where' => "msg_id IN (".implode( ',',$deleted_ids ).")") ); $this->ipsclass->DB->simple_exec(); - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'attachments', 'where' => "attach_msg IN (".implode( ',',$deleted_ids ).")") ); + $this->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'attachments', + 'where' => "attach_rel_module='msg' AND attach_rel_id IN (".implode( ',',$deleted_ids ).")") ); $this->ipsclass->DB->simple_exec(); while ( $a = $this->ipsclass->DB->fetch_row() ) @@ -517,6 +699,16 @@ class func_msg $this->add_sent = $opts['add_sent']; $this->hide_cc = $opts['hide_cc']; + $testing_parse = $this->postlib->parser->pre_db_parse( $this->msg_post ); + + if( $this->postlib->parser->error != "" ) + { + $this->error = $this->ipsclass->lang[$this->postlib->parser->error]; + return; + } + + unset($testing_parse); + //----------------------------------------- // Are we simply saving this for later? //----------------------------------------- @@ -538,6 +730,30 @@ class func_msg $this->ipsclass->DB->simple_exec(); $to_msg_stats = $this->ipsclass->DB->fetch_row(); + + // Are they in a secondary group that can use pm? + + if ( $to_msg_stats['mgroup_others'] && ! $to_msg_stats['g_use_pm'] ) + { + $groups_id = explode( ',', $to_msg_stats['mgroup_others'] ); + + if ( count( $groups_id ) ) + { + foreach( $groups_id as $pid ) + { + if ( ! $this->ipsclass->cache['group_cache'][ $pid ]['g_id'] ) + { + continue; + } + + if ( $this->ipsclass->cache['group_cache'][ $pid ]['g_use_pm'] ) + { + $to_msg_stats['g_use_pm'] = 1; + break; + } + } + } + } if ( $to_msg_stats['g_use_pm'] != 1 OR $to_msg_stats['members_disable_pm'] ) { @@ -555,8 +771,40 @@ class func_msg if ( (($to_msg_stats['msg_total']) >= $to_msg_stats['g_max_messages']) and ($to_msg_stats['g_max_messages'] > 0) ) { - $this->error = $this->ipsclass->lang['no_usepm_member']; - return; + if ( $this->ipsclass->vars['override_inbox_full'] ) + { + $override = array(); + $override = explode( ",", $this->ipsclass->vars['override_inbox_full'] ); + + $do_override = 0; + + $my_groups = array( $this->ipsclass->member['mgroup'] ); + + if( $this->ipsclass->member['mgroup_others'] ) + { + $my_other_groups = explode( ",", $this->ipsclass->member['mgroup_others'] ); + $my_groups = array_merge( $my_groups, $my_other_groups ); + } + + foreach( $my_groups as $member_group ) + { + if( in_array( $member_group, $override ) ) + { + $do_override = 1; + } + } + + if ( $do_override == 0 ) + { + $this->error = $this->ipsclass->lang['no_usepm_member_full']; + return; + } + } + else + { + $this->error = $this->ipsclass->lang['no_usepm_member_full']; + return; + } } //----------------------------------------- @@ -570,9 +818,42 @@ class func_msg if ( (isset($can_msg['contact_id'])) and ($can_msg['allow_msg'] != 1) ) { - $this->ipsclass->input['MID'] = $this->send_to_member['id']; - $this->error = $this->ipsclass->lang['msg_blocked']; - return; + if( $this->ipsclass->vars['unblockable_pm_groups'] ) + { + $unblockable = array(); + $unblockable = explode( ",", $this->ipsclass->vars['unblockable_pm_groups'] ); + + $do_override = 0; + + $my_groups = array( $this->ipsclass->member['mgroup'] ); + + if( $this->ipsclass->member['mgroup_others'] ) + { + $my_other_groups = explode( ",", $this->ipsclass->member['mgroup_others'] ); + $my_groups = array_merge( $my_groups, $my_other_groups ); + } + + foreach( $my_groups as $member_group ) + { + if( in_array( $member_group, $unblockable ) ) + { + $do_override = 1; + } + } + + if ( $do_override == 0 ) + { + $this->ipsclass->input['MID'] = $this->send_to_member['id']; + $this->error = $this->ipsclass->lang['msg_blocked']; + return; + } + } + else + { + $this->ipsclass->input['MID'] = $this->send_to_member['id']; + $this->error = $this->ipsclass->lang['msg_blocked']; + return; + } } //----------------------------------------- @@ -580,9 +861,9 @@ class func_msg // saved copy? //----------------------------------------- - if ($this->ipsclass->input['add_sent'] and ($this->ipsclass->member['g_max_messages'] > 0) ) + if (isset($this->ipsclass->input['add_sent']) AND $this->ipsclass->input['add_sent'] AND ($this->ipsclass->member['g_max_messages'] > 0) ) { - if ( ($this->msg_stats['msg_total'] + 1) >= $this->ipsclass->member['g_max_messages'] ) + if ( ($to_msg_stats['msg_total'] + 1) >= $this->ipsclass->member['g_max_messages'] ) { $this->error = $this->ipsclass->lang['max_message_from']; return; @@ -645,7 +926,7 @@ class func_msg // Make attachments permanent //----------------------------------------- - $no_attachments = $this->postlib->pf_make_attachments_permanent( $this->class->post_key, "", "", $msg_id ); + $no_attachments = $this->postlib->pf_make_attachments_permanent( $this->class->post_key, $msg_id, 'msg' ); //----------------------------------------- // If we have an original ID - delete it and 'move' @@ -680,7 +961,7 @@ class func_msg // loop.... //----------------------------------------- - foreach ($cc_array as $user_id => $to_member) + foreach ($cc_array as $to_member) { //----------------------------------------- // Sort out tracking and pop us status @@ -696,18 +977,18 @@ class func_msg $this->ipsclass->DB->force_data_type = array( 'mt_title' => 'string' ); $this->ipsclass->DB->do_insert( 'message_topics', array( - 'mt_msg_id' => $msg_id, - 'mt_date' => time(), - 'mt_title' => $this->msg_title, - 'mt_from_id' => $this->from_member['id'], - 'mt_to_id' => $to_member['id'], - 'mt_vid_folder' => 'in', - 'mt_tracking' => $this->add_tracking, - 'mt_addtosent' => $this->add_sent, - 'mt_hasattach' => intval($no_attachments), - 'mt_owner_id' => $to_member['id'], - 'mt_hide_cc' => $this->hide_cc, - ) ); + 'mt_msg_id' => $msg_id, + 'mt_date' => time(), + 'mt_title' => $this->msg_title, + 'mt_from_id' => $this->from_member['id'], + 'mt_to_id' => $to_member['id'], + 'mt_vid_folder' => 'in', + 'mt_tracking' => intval( $this->add_tracking ), + 'mt_addtosent' => intval( $this->add_sent ), + 'mt_hasattach' => intval($no_attachments), + 'mt_owner_id' => $to_member['id'], + 'mt_hide_cc' => intval( $this->hide_cc ), + ) ); $mt_id = $this->ipsclass->DB->get_insert_id(); @@ -732,7 +1013,7 @@ class func_msg if ($to_member['email_pm'] == 1) { - $to_member['language'] = $to_member['language'] == "" ? 'ru' : $to_member['language']; + $to_member['language'] = $to_member['language'] == "" ? 'en' : $to_member['language']; $this->postlib->email->get_template("pm_notify", $to_member['language']); @@ -743,10 +1024,10 @@ class func_msg 'LINK' => "?act=Msg&CODE=03&VID=in&MSID=$mt_id", ) ); - $this->postlib->email->subject = $this->ipsclass->lang['pm_email_subject']; - $this->postlib->email->to = $to_member['email']; - $this->postlib->email->send_mail(); - + $this->ipsclass->DB->do_insert( 'mail_queue', array( 'mail_to' => $to_member['email'], 'mail_date' => time(), 'mail_subject' => $this->ipsclass->lang['pm_email_subject'], 'mail_content' => $this->postlib->email->message ) ); + + $this->ipsclass->cache['systemvars']['mail_queue'] += $count; + $this->ipsclass->update_cache( array( 'array' => 1, 'name' => 'systemvars', 'donow' => 1, 'deletefirst' => 0 ) ); } } @@ -785,6 +1066,8 @@ class func_msg $this->to_by_id = ""; $this->to = ""; + + #unset($this->postlib); } @@ -795,7 +1078,7 @@ class func_msg function rebuild_dir_count($mid, $vdir, $cur_dir, $new_count, $nosave='save', $extra="") { $rebuild = array(); - + if ( ! $vdir ) { $this->ipsclass->DB->simple_construct( array( "select" => 'vdirs', 'from' => 'member_extra', 'where' => 'id='.$mid ) ); @@ -803,7 +1086,7 @@ class func_msg $mem = $this->ipsclass->DB->fetch_row(); - $vdir = $mem['vdirs'] ? $mem['vdirs'] : 'in:Входящие;0|sent:Отправленные;0'; + $vdir = $mem['vdirs'] ? $mem['vdirs'] : 'in:Inbox;0|sent:Sent Items;0'; } foreach( explode( "|", $vdir ) as $dir ) @@ -828,7 +1111,7 @@ class func_msg $final = implode( '|', $rebuild ); if ( $nosave != 'nosave' ) - { + { $this->ipsclass->DB->simple_construct( array( 'update' => 'member_extra', 'set' => 'vdirs="'.$final.'"', 'where' => 'id='.$mid ) ); $this->ipsclass->DB->simple_exec(); @@ -840,7 +1123,6 @@ class func_msg } return $final; - } @@ -878,13 +1160,14 @@ class func_msg $cc_array = array(); $cc_users = strtolower(str_replace( '|', '|', $cc_users) ); - + if ( $cc_users ) { //----------------------------------------- // Sort out the array //----------------------------------------- + $cc_users = str_replace( "
    ", "
    ", $cc_users ); $cc_users = str_replace( "

    ", "
    " , trim($cc_users) ); $cc_users = preg_replace( "/^(
    ){1}/", "" , $cc_users ); $cc_users = preg_replace( "/(
    ){1}$/", "" , $cc_users ); @@ -1028,7 +1311,7 @@ class func_msg { $seen = 0; - foreach( $cc_array as $idx => $cc_user ) + foreach( $cc_array as $cc_user ) { $tmp = "'".strtolower($cc_user['name'])."'"; @@ -1058,8 +1341,8 @@ class func_msg $cc_error = ""; $cc_id_array = array(); - - foreach($cc_array as $idx => $cc_user) + + foreach($cc_array as $cc_user) { if ( $cc_user['g_use_pm'] != 1 OR $cc_user['members_disable_pm'] ) { @@ -1221,7 +1504,7 @@ class func_msg { foreach( $groups_id as $pid ) { - if ( ! $this->ipsclass->cache['group_cache'][ $pid ]['g_id'] ) + if ( !isset($this->ipsclass->cache['group_cache'][ $pid ]['g_id']) OR !$this->ipsclass->cache['group_cache'][ $pid ]['g_id'] ) { continue; } diff --git a/upload/sources/lib/func_taskmanager.php b/upload/sources/lib/func_taskmanager.php index 30171f15..4aa55348 100644 --- a/upload/sources/lib/func_taskmanager.php +++ b/upload/sources/lib/func_taskmanager.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -37,7 +27,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую."; + print "

    Incorrect access

    You cannot access this file directly."; exit(); } @@ -52,6 +42,7 @@ class func_taskmanager var $time_now = 0; var $date_now = array(); var $cron_key = ""; + var $date; /*-------------------------------------------------------------------------*/ // @@ -72,12 +63,6 @@ class func_taskmanager $this->root_path = ROOT_PATH; } - if ( $_REQUEST['ck'] ) - { - $this->type = 'cron'; - $this->cron_key = addslashes( substr( trim(stripslashes($this->ipsclass->txt_alphanumerical_clean($_REQUEST['ck']))), 0, 32 ) ); - } - $this->time_now = time(); $this->date_now['minute'] = intval( gmdate( 'i', $this->time_now ) ); @@ -96,6 +81,12 @@ class func_taskmanager function run_task() { + if ( isset( $_REQUEST['ck'] ) AND $_REQUEST['ck'] ) + { + $this->type = 'cron'; + $this->cron_key = substr( trim(stripslashes($this->ipsclass->txt_alphanumerical_clean($_REQUEST['ck']))), 0, 32 ); + } + if ( $this->type == 'internal' ) { //----------------------------------------- @@ -194,12 +185,12 @@ class func_taskmanager function unlock_task($task=array()) { - if ( ! $task['task_id'] ) + if ( !isset($task['task_id']) OR !$task['task_id'] ) { return; } - $this->ipsclass->DB->do_update( 'task_manager', array( 'task_locked' => 0 ), "task_id=".$task['task_id'] ); + $this->ipsclass->DB->do_update( 'task_manager', array( 'task_locked' => 0 ), 'task_id='.$task['task_id'] ); } /*-------------------------------------------------------------------------*/ @@ -229,7 +220,7 @@ class func_taskmanager $cache_array['task_next_run'] = $this_task['task_next_run']; - $this->ipsclass->DB->do_update( 'cache_store', array( 'cs_value' => addslashes(serialize($cache_array)) ), "cs_key='systemvars'" ); + $this->ipsclass->update_cache( array( 'array' => 1, 'name' => 'systemvars', 'donow' => 1, 'deletefirst' => 0 ) ); } /*-------------------------------------------------------------------------*/ @@ -442,7 +433,7 @@ class func_taskmanager $save = array( 'log_title' => $task['task_title'], 'log_date' => time(), - 'log_ip' => $_SERVER['REMOTE_ADDR'], + 'log_ip' => $this->ipsclass->my_getenv('REMOTE_ADDR'), 'log_desc' => $desc ); diff --git a/upload/sources/lib/func_topic_linear.php b/upload/sources/lib/func_topic_linear.php index 8a203f6e..a37d1e24 100644 --- a/upload/sources/lib/func_topic_linear.php +++ b/upload/sources/lib/func_topic_linear.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-01 16:45:12 +0000 (Thu, 01 Dec 2005) $ -| > $Revision: 88 $ -| > $Author: bfarber $ +| > $Date: 2006-10-03 12:14:55 +0100 (Tue, 03 Oct 2006) $ +| > $Revision: 596 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Topic display module @@ -38,7 +28,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -53,7 +43,6 @@ class topic_display var $moderator = array(); var $forum = array(); var $topic = array(); - var $mem_titles = array(); var $mod_action = array(); var $poll_html = ""; var $parser = ""; @@ -169,7 +158,7 @@ class topic_display // Grab the posts we'll need //----------------------------------------- - $first = intval($this->ipsclass->input['st']); + $first = intval($this->ipsclass->input['st']) >=0 ? intval($this->ipsclass->input['st']) : 0; $query_type = 'topics_get_posts'; @@ -260,7 +249,7 @@ class topic_display //----------------------------------------- // Run query //----------------------------------------- - + $this->lib->topic_view_mode = 'linear'; # We don't need * but if we don't use it, it won't use the correct index @@ -361,7 +350,7 @@ class topic_display } - $this->ipsclass->boink_it($this->ipsclass->base_url."act=ST&f={$this->forum['id']}&t={$this->topic['tid']}&view=getlastpost"); + $this->ipsclass->boink_it($this->ipsclass->base_url."showtopic={$this->topic['tid']}&view=getlastpost"); } } @@ -369,6 +358,8 @@ class topic_display // Render the page top //----------------------------------------- + $this->topic['go_new'] = isset($this->topic['go_new']) ? $this->topic['go_new'] : ''; + if ( $this->lib->topic_view_mode == 'linearplus' and $this->topic['posts'] > 0 ) { $this->output .= $this->ipsclass->compiled_templates['skin_topic']->topic_page_top( array( 'TOPIC' => $this->topic, 'FORUM' => $this->forum ), 1 ); diff --git a/upload/sources/lib/func_topic_threaded.php b/upload/sources/lib/func_topic_threaded.php index 59587e60..43664e50 100644 --- a/upload/sources/lib/func_topic_threaded.php +++ b/upload/sources/lib/func_topic_threaded.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-01 16:45:12 +0000 (Thu, 01 Dec 2005) $ -| > $Revision: 88 $ -| > $Author: bfarber $ +| > $Date: 2006-10-12 12:25:54 +0100 (Thu, 12 Oct 2006) $ +| > $Revision: 630 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Topic Outline Display Module wodule wookie, nookie shut up @@ -38,7 +28,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -52,7 +42,6 @@ class topic_display var $html = ""; var $forum = array(); var $topic = array(); - var $mem_titles = array(); var $mod_action = array(); var $poll_html = ""; var $parser = ""; @@ -153,7 +142,7 @@ class topic_display $query_type = 'topics_get_posts'; - $first = intval($this->ipsclass->input['start']); + $first = intval( $this->ipsclass->input['show'] ); $last = $this->ipsclass->vars['threaded_per_page'] ? $this->ipsclass->vars['threaded_per_page'] : 250; if ( $this->ipsclass->vars['custom_profile_topic'] == 1 ) @@ -174,12 +163,12 @@ class topic_display } $this->ipsclass->DB->simple_construct( array ( - 'select' => 'pid, post_parent', - 'from' => 'posts', - 'where' => 'topic_id='.$this->topic['tid']. ' and queued != 1', - 'order' => 'pid', - 'limit' => array( $first, $last ) - ) ); + 'select' => 'pid, post_parent', + 'from' => 'posts', + 'where' => 'topic_id='.$this->topic['tid']. ' and queued != 1', + 'order' => 'pid', + 'limit' => array( $first, $last ) + ) ); $this->ipsclass->DB->simple_exec(); @@ -204,11 +193,11 @@ class topic_display if ( count( $this->pids ) ) { $this->ipsclass->DB->simple_construct( array ( - 'select' => 'pid, post, author_id, author_name, post_date, post_title, post_parent, topic_id, icon_id', - 'from' => 'posts', - 'where' => 'pid IN('.implode(',',$this->pids).')', - 'order' => 'pid', - ) ); + 'select' => 'pid, post, author_id, author_name, post_date, post_title, post_parent, topic_id, icon_id', + 'from' => 'posts', + 'where' => 'pid IN('.implode(',',$this->pids).')', + 'order' => 'pid', + ) ); $this->ipsclass->DB->simple_exec(); @@ -231,14 +220,19 @@ class topic_display $this->post_cache[0] = array( 'id' => 1 ); - $this->post_cache[$this->topic['topic_firstpost']]['post_title'] = $this->topic['title']; + $this->post_cache[ $this->topic['topic_firstpost'] ]['post_title'] = $this->topic['title']; //----------------------------------------- // Are we viewing Posts? //----------------------------------------- + + $post_id = intval( $this->ipsclass->input['pid'] ); - $post_id = intval($this->ipsclass->input['pid']); - + if ( $post_id && ! in_array( $post_id, $this->pids ) ) + { + $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'missing_files') ); + } + $postid_array = array( 1 => $post_id ); if ( $post_id and $post_id != $this->topic['topic_firstpost'] ) @@ -247,7 +241,7 @@ class topic_display if ( count($parents) ) { - foreach( $parents as $p => $pid ) + foreach( $parents as $pid ) { if ( $pid != $this->topic['topic_firstpost'] ) { @@ -375,7 +369,7 @@ class topic_display { $html .= $this->ipsclass->compiled_templates['skin_topic']->toutline_start_new_parent(); - foreach( $this->structured_pids[ $root_id ] as $idx => $pid ) + foreach( $this->structured_pids[ $root_id ] as $pid ) { $html .= $this->render_list_row( $this->post_cache[ $pid ], $dguide ); @@ -466,11 +460,11 @@ class topic_display if ( strstr( $this->used_post_ids, ','.$post['pid'].',' ) ) { - return $this->ipsclass->compiled_templates['skin_topic']->toutline_show_row_highlight( $post ); + return $this->ipsclass->compiled_templates['skin_topic']->toutline_show_row_highlight( $post, $this->ipsclass->input['start'], $this->ipsclass->input['st'] ); } else { - return $this->ipsclass->compiled_templates['skin_topic']->toutline_show_row( $post ); + return $this->ipsclass->compiled_templates['skin_topic']->toutline_show_row( $post, $this->ipsclass->input['start'], $this->ipsclass->input['st'] ); } } @@ -481,6 +475,24 @@ class topic_display function post_get_parents($root_id, $ids=array()) { + if( in_array( $root_id, $ids ) ) + { + $cnt = 0; + + foreach( $ids as $id ) + { + if( $id == $root_id ) + { + $cnt++; + + if( $cnt > 1 ) + { + return $ids; + } + } + } + } + if ( $this->post_cache[ $root_id ]['post_parent'] ) { $ids[] = $this->post_cache[ $root_id ]['post_parent']; @@ -499,7 +511,7 @@ class topic_display { if ( is_array($this->structured_pids[ $root_id ]) ) { - foreach( $this->structured_pids[ $root_id ] as $id => $pid ) + foreach( $this->structured_pids[ $root_id ] as $pid ) { $ids[] = $pid; diff --git a/upload/sources/lib/func_usercp.php b/upload/sources/lib/func_usercp.php index 6a7f1739..a26cf356 100644 --- a/upload/sources/lib/func_usercp.php +++ b/upload/sources/lib/func_usercp.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-02-17 14:52:09 +0000 (Fri, 17 Feb 2006) $ -| > $Revision: 142 $ -| > $Author: bfarber $ +| > $Date: 2006-10-16 13:01:42 +0100 (Mon, 16 Oct 2006) $ +| > $Revision: 649 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > UserCP functions library @@ -35,6 +25,11 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class func_usercp { @@ -47,12 +42,8 @@ class func_usercp // CONSTRUCTOR /*-------------------------------------------------------------------------*/ - function func_usercp(&$class) + function func_usercp( ) { - $this->class = &$class; - - require_once( KERNEL_PATH.'class_image.php' ); - $this->image = new class_image(); } /*-------------------------------------------------------------------------*/ @@ -91,7 +82,7 @@ class func_usercp if ( is_array( $this->ipsclass->cache['components'] ) and count( $this->ipsclass->cache['components'] ) ) { - foreach( $this->ipsclass->cache['components'] as $id => $data ) + foreach( $this->ipsclass->cache['components'] as $data ) { $file = ROOT_PATH.'sources/components_ucp/'.$data['com_filename'].'.php'; @@ -135,7 +126,7 @@ class func_usercp // No, it's just the way we walk! Haha, etc. //----------------------------------------- - if ($this->ipsclass->input['VID']) + if ( isset($this->ipsclass->input['VID']) AND $this->ipsclass->input['VID'] ) { $this->vid = $this->ipsclass->input['VID']; } @@ -150,7 +141,7 @@ class func_usercp if ( ! $this->ipsclass->member['vdirs'] ) { - $this->ipsclass->member['vdirs'] = "in:Входящие|sent:Отправленные"; + $this->ipsclass->member['vdirs'] = "in:Inbox|sent:Sent Items"; } foreach( explode( "|", $this->ipsclass->member['vdirs'] ) as $dir ) @@ -208,6 +199,8 @@ class func_usercp $method = $this->ipsclass->input['method'] == 'forum' ? 'forum' : 'topic'; $tid = intval($this->ipsclass->input['tid']); $fid = intval($this->ipsclass->input['fid']); + $forum = array(); + $topic = array(); if ( $method == 'topic' ) { @@ -246,7 +239,7 @@ class func_usercp // Passy check //----------------------------------------- - if ( $forum['password'] != "" ) + if ( isset($forum['password']) AND $forum['password'] != "" ) { if ( $this->ipsclass->forums->forums_compare_password( $forum['id'] ) != TRUE ) { @@ -358,7 +351,22 @@ class func_usercp function do_photo() { - if ($_POST['act'] == "") + //----------------------------------------- + // INIT + //----------------------------------------- + + $member_id = intval( $this->ipsclass->member['id'] ); + + //----------------------------------------- + // Check to make sure that we can edit profiles.. + //----------------------------------------- + + if ( empty($this->ipsclass->member['g_edit_profile']) ) + { + $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cant_use_feature' ) ); + } + + if ( $_POST['act'] == "" ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'complete_form' ) ); } @@ -367,341 +375,439 @@ class func_usercp // Nawty, Nawty! //----------------------------------------- - if ($this->ipsclass->input['auth_key'] != $this->class->md5_check ) + if ( $this->ipsclass->input['auth_key'] != $this->class->md5_check ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'del_post') ); } //----------------------------------------- - // Did we press "remove"? + // Do upload... //----------------------------------------- - if ( $this->ipsclass->input['remove'] ) - { - $this->bash_uploaded_photos($this->ipsclass->member['id']); - - $this->ipsclass->DB->simple_construct( array( 'select' => 'id', 'from' => 'member_extra', 'where' => "id=".$this->ipsclass->member['id'] ) ); - $this->ipsclass->DB->simple_exec(); + $photo = $this->lib_upload_photo(); - if ( $this->ipsclass->DB->get_num_rows() ) - { - $this->ipsclass->DB->do_update( 'member_extra', array( 'photo_location' => '', - 'photo_type' => '', - 'photo_dimensions' => '', - ), 'id='.$this->ipsclass->member['id'] ); - } - else - { - $this->ipsclass->DB->do_insert( 'member_extra', array( 'photo_location' => '', - 'photo_type' => '', - 'photo_dimensions' => '', - 'id' => $this->ipsclass->member['id'] - ) ); - } - - $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['photo_c_up'], "act=UserCP&CODE=photo" ); + if ( $photo['status'] == 'fail' ) + { + $this->ipsclass->load_language( 'lang_profile' ); + $this->class->photo( $this->ipsclass->lang[ 'pp_' . $photo['error'] ] ); + return; } //----------------------------------------- - // NO? CARRY ON!! + // Save... //----------------------------------------- - list($p_max, $p_width, $p_height) = explode( ":", $this->ipsclass->member['g_photo_max_vars'] ); - - //----------------------------------------- - // Check to make sure we don't just have - // http:// in the URL box.. - //----------------------------------------- - - if ( preg_match( "/^http:\/\/$/i", $this->ipsclass->input['url_photo'] ) ) + $this->ipsclass->DB->simple_construct( array( 'select' => 'pp_member_id', + 'from' => 'profile_portal', + 'where' => "pp_member_id=".$member_id ) ); + $this->ipsclass->DB->simple_exec(); + + if ( $this->ipsclass->DB->get_num_rows() ) { - $this->ipsclass->input['url_photo'] = ""; + # Update... + $this->ipsclass->DB->do_update( 'profile_portal', array( 'pp_main_photo' => $photo['final_location'], + 'pp_main_width' => $photo['final_width'], + 'pp_main_height' => $photo['final_height'], + 'pp_thumb_photo' => $photo['t_final_location'], + 'pp_thumb_width' => $photo['t_final_width'], + 'pp_thumb_height' => $photo['t_final_height'], + ), 'pp_member_id='.$member_id ); + } + else + { + # Insert + $this->ipsclass->DB->do_insert( 'profile_portal', array( 'pp_main_photo' => $photo['final_location'], + 'pp_main_width' => $photo['final_width'], + 'pp_main_height' => $photo['final_height'], + 'pp_thumb_photo' => $photo['t_final_location'], + 'pp_thumb_width' => $photo['t_final_width'], + 'pp_thumb_height' => $photo['t_final_height'], + 'pp_member_id' => $member_id, + ) ); } - if ( $this->ipsclass->xss_check_url( $this->ipsclass->input['url_photo'] ) !== TRUE ) - { - $this->ipsclass->input['url_photo'] = ''; - } - - if ( empty($this->ipsclass->input['url_photo']) ) - { - //----------------------------------------- - // Lets check for an uploaded photo.. - //----------------------------------------- + $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['photo_c_up'], "act=UserCP&CODE=photo" ); + } + + /*-------------------------------------------------------------------------*/ + // Function to upload personal photo + /*-------------------------------------------------------------------------*/ + /** + * Upload personal photo function + * Assumes all security checks have been performed by this point + * + * @return array [ error (error message), status (status message [ok/fail] ) ] + */ + function lib_upload_photo() + { + //----------------------------------------- + // INIT + //----------------------------------------- - if ($_FILES['upload_photo']['name'] != "" and ($_FILES['upload_photo']['name'] != "none") ) - { - //----------------------------------------- - // Are we allowed to upload this avatar? - //----------------------------------------- - - if ( $p_max < 0 ) - { - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_av_upload' ) ); - } - - //----------------------------------------- - // Remove any uploaded photos... - //----------------------------------------- - - $this->bash_uploaded_photos($this->ipsclass->member['id']); - - $real_name = 'photo-'.$this->ipsclass->member['id']; - $real_type = 'upload'; - - //----------------------------------------- - // Load the library - //----------------------------------------- - - require_once( KERNEL_PATH.'class_upload.php' ); - $upload = new class_upload(); - - //----------------------------------------- - // Set up the variables - //----------------------------------------- - - $upload->out_file_name = 'photo-'.$this->ipsclass->member['id']; - $upload->out_file_dir = $this->ipsclass->vars['upload_dir']; - $upload->max_file_size = ($p_max * 1024) * 8; // Allow xtra for compression - $upload->upload_form_field = 'upload_photo'; - - //----------------------------------------- - // Populate allowed extensions - //----------------------------------------- - - if ( is_array( $this->ipsclass->cache['attachtypes'] ) and count( $this->ipsclass->cache['attachtypes'] ) ) - { - foreach( $this->ipsclass->cache['attachtypes'] as $idx => $data ) - { - if ( $data['atype_photo'] ) - { - $upload->allowed_file_ext[] = $data['atype_extension']; - } - } - } - - //----------------------------------------- - // Upload... - //----------------------------------------- - - $upload->upload_process(); - - //----------------------------------------- - // Error? - //----------------------------------------- - - if ( $upload->error_no ) - { - switch( $upload->error_no ) - { - case 1: - // No upload - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'upload_failed' ) ); - case 2: - // Invalid file ext - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_av_type' ) ); - case 3: - // Too big... - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'upload_to_big') ); - case 4: - // Cannot move uploaded file - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'upload_failed' ) ); - case 5: - // Possible XSS attack (image isn't an image) - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'upload_failed' ) ); - } - } - - //----------------------------------------- - // Still here? - //----------------------------------------- - - $real_name = $upload->parsed_file_name; - - //----------------------------------------- - // Check image size... - //----------------------------------------- - - if ( ! $this->ipsclass->vars['disable_ipbsize'] ) - { - $this->image->in_type = 'file'; - $this->image->out_type = 'file'; - $this->image->in_file_dir = $this->ipsclass->vars['upload_dir']; - $this->image->in_file_name = $real_name; - $this->image->out_file_name = 'photos-'.$this->ipsclass->member['id']; - $this->image->desired_width = $p_width; - $this->image->desired_height = $p_height; - - $return = $this->image->generate_thumbnail(); + $return = array( 'error' => '', + 'status' => '', + 'final_location' => '', + 'final_width' => '', + 'final_height' => '', + 't_final_location' => '', + 't_final_width' => '', + 't_final_height' => '' ); + $delete_photo = intval( $_POST['delete_photo'] ); + $member_id = intval( $this->ipsclass->member['id'] ); + $real_name = ''; + $upload_dir = ''; + $final_location = ''; + $final_width = ''; + $final_height = ''; + $t_final_location = ''; + $t_final_width = ''; + $t_final_height = ''; + $t_real_name = ''; + $t_height = 50; + $t_width = 50; - $im['img_width'] = $return['thumb_width']; - $im['img_height'] = $return['thumb_height']; - - //----------------------------------------- - // Do we have an attachment? - //----------------------------------------- - - if ( strstr( $return['thumb_location'], 'photos-' ) ) - { - //----------------------------------------- - // Kill old and rename new... - //----------------------------------------- - - @unlink( $this->ipsclass->vars['upload_dir']."/".$real_name ); - - $real_name = 'photo-'.$this->ipsclass->member['id'].'.'.$this->image->file_extension; - - @rename( $this->ipsclass->vars['upload_dir']."/".$return['thumb_location'], $this->ipsclass->vars['upload_dir']."/".$real_name ); - @chmod( $this->ipsclass->vars['upload_dir']."/".$real_name, 0777 ); - } - } - else - { - $w = intval($this->ipsclass->input['man_width']) ? intval($this->ipsclass->input['man_width']) : $p_width; - $h = intval($this->ipsclass->input['man_height']) ? intval($this->ipsclass->input['man_height']) : $p_height; - $im['img_width'] = $w > $p_width ? $p_width : $w; - $im['img_height'] = $h > $p_height ? $p_height : $h; - } - - //----------------------------------------- - // Check the file size (after compression) - //----------------------------------------- - - if ( filesize( $this->ipsclass->vars['upload_dir']."/".$real_name ) > ( $p_max * 1024 ) ) - { - @unlink( $this->ipsclass->vars['upload_dir']."/".$real_name ); - - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'upload_to_big' ) ); - } - - $final_location = $real_name; - $final_type = 'upload'; - $final_dimension = $im['img_width'].','.$im['img_height']; - } - else + list( $p_max, $p_width, $p_height ) = explode( ":", $this->ipsclass->member['g_photo_max_vars'] ); + + //----------------------------------------- + // Sort out upload dir + //----------------------------------------- + + $upload_path = $this->ipsclass->vars['upload_dir']; + + # Preserve original path + $_upload_path = $this->upload_path; + + //----------------------------------------- + // Already a dir? + //----------------------------------------- + + if ( ! file_exists( $upload_path . "/profile" ) ) + { + if ( @mkdir( $upload_path . "/" . $this_month, 0777 ) ) { - //----------------------------------------- - // URL field and upload field left blank. - //----------------------------------------- + @chmod( $upload_path . "/" . $this_month, 0777 ); - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_photo_selected' ) ); + # Set path and dir correct + $upload_path .= "/profile"; + $upload_dir = "profile/"; } } else + { + # Set path and dir correct + $upload_path .= "/profile"; + $upload_dir = "profile/"; + } + + //----------------------------------------- + // Deleting the photo? + //----------------------------------------- + + if ( $delete_photo ) + { + $this->bash_uploaded_photos( $member_id, $upload_path ); + + $this->ipsclass->DB->simple_construct( array( 'select' => 'pp_member_id', + 'from' => 'profile_portal', + 'where' => "pp_member_id=".$member_id ) ); + $this->ipsclass->DB->simple_exec(); + + if ( $this->ipsclass->DB->get_num_rows() ) + { + $this->ipsclass->DB->do_update( 'profile_portal', array( 'pp_main_photo' => '', + 'pp_main_width' => '', + 'pp_main_height' => '', + 'pp_thumb_photo' => '', + 'pp_thumb_width' => '', + 'pp_thumb_height' => '', + ), 'pp_member_id='.$member_id ); + } + else + { + $this->ipsclass->DB->do_insert( 'profile_portal', array( 'pp_main_photo' => '', + 'pp_main_width' => '', + 'pp_main_height' => '', + 'pp_thumb_photo' => '', + 'pp_thumb_width' => '', + 'pp_thumb_height' => '', + 'pp_member_id' => $member_id + ) ); + } + + $return['status'] = 'deleted'; + return $return; + } + + //----------------------------------------- + // Lets check for an uploaded photo.. + //----------------------------------------- + + if ( $_FILES['upload_photo']['name'] != "" and ($_FILES['upload_photo']['name'] != "none" ) ) { //----------------------------------------- - // It's an entered URL 'ting man + // Are we allowed to upload this photo? //----------------------------------------- - if ( empty($this->ipsclass->vars['allow_dynamic_img']) ) + if ( $p_max < 0 ) { - if ( preg_match( "/[?&;]/", $this->ipsclass->input['url_photo'] ) ) + $return['status'] = 'fail'; + $return['error'] = 'no_photo_upload_permission'; + } + + //----------------------------------------- + // Remove any uploaded photos... + //----------------------------------------- + + $this->bash_uploaded_photos( $member_id, $upload_path ); + + $real_name = 'photo-'.$member_id; + + //----------------------------------------- + // Load the library + //----------------------------------------- + + require_once( KERNEL_PATH.'class_upload.php' ); + $upload = new class_upload(); + + require_once( KERNEL_PATH.'class_image.php' ); + $image_lib = new class_image(); + + //----------------------------------------- + // Set up the variables + //----------------------------------------- + + $upload->out_file_name = 'photo-'.$member_id; + $upload->out_file_dir = $upload_path; + $upload->max_file_size = ($p_max * 1024) * 8; // Allow xtra for compression + $upload->upload_form_field = 'upload_photo'; + + //----------------------------------------- + // Populate allowed extensions + //----------------------------------------- + + if ( $this->ipsclass->vars['photo_ext'] ) + { + foreach( explode( ',', $this->ipsclass->vars['photo_ext'] ) as $data ) { - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'not_url_photo' ) ); + if ( trim( $data ) ) + { + $upload->allowed_file_ext[] = trim( $data ); + } } } //----------------------------------------- - // Check extension + // Upload... //----------------------------------------- - $ext = explode ( ",", $this->ipsclass->vars['photo_ext'] ); - $checked = 0; - $av_ext = preg_replace( "/^.*\.(\S+)$/", "\\1", $this->ipsclass->input['url_photo'] ); + $upload->upload_process(); - foreach ($ext as $v ) + //----------------------------------------- + // Error? + //----------------------------------------- + + if ( $upload->error_no ) { - if (strtolower($v) == strtolower($av_ext)) + switch( $upload->error_no ) { - $checked = 1; + case 1: + // No upload + $return['status'] = 'fail'; + $return['error'] = 'upload_failed'; + case 2: + // Invalid file ext + $return['status'] = 'fail'; + $return['error'] = 'invalid_file_extension'; + case 3: + // Too big... + $return['status'] = 'fail'; + $return['error'] = 'upload_to_big'; + case 4: + // Cannot move uploaded file + $return['status'] = 'fail'; + $return['error'] = 'upload_failed'; + case 5: + // Possible XSS attack (image isn't an image) + $return['status'] = 'fail'; + $return['error'] = 'upload_failed'; } + + return $return; } + + //----------------------------------------- + // Still here? + //----------------------------------------- - if ($checked != 1) - { - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'photo_invalid_ext' ) ); - } + $real_name = $upload->parsed_file_name; + $t_real_name = $upload->parsed_file_name; //----------------------------------------- // Check image size... //----------------------------------------- - $im = array(); - if ( ! $this->ipsclass->vars['disable_ipbsize'] ) { - if ( ! $img_size = @GetImageSize( $this->ipsclass->input['url_photo'] ) ) + //----------------------------------------- + // Main photo + //----------------------------------------- + + $image_lib->in_type = 'file'; + $image_lib->out_type = 'file'; + $image_lib->in_file_dir = $upload_path; + $image_lib->in_file_name = $real_name; + $image_lib->out_file_name = 'photos-'.$member_id; + $image_lib->desired_width = $p_width; + $image_lib->desired_height = $p_height; + + $return = $image_lib->generate_thumbnail(); + + $im['img_width'] = $return['thumb_width']; + $im['img_height'] = $return['thumb_height']; + + # Do we have an attachment? + if ( isset( $return['thumb_location'] ) AND strstr( $return['thumb_location'], 'photos-' ) ) { - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'not_url_photo' ) ); + //----------------------------------------- + // Kill old and rename new... + //----------------------------------------- + + @unlink( $upload_path . "/" . $real_name ); + + $real_name = 'photo-'.$member_id.'.'.$image_lib->file_extension; + + @rename( $upload_path . "/" . $return['thumb_location'], $upload_path . "/" . $real_name ); + @chmod( $upload_path . "/" . $real_name, 0777 ); } - $im = $this->ipsclass->scale_image( array( - 'max_width' => $p_width, - 'max_height' => $p_height, - 'cur_width' => $img_size[0], - 'cur_height' => $img_size[1] - ) ); + //----------------------------------------- + // MINI photo + //----------------------------------------- + + $image_lib->in_type = 'file'; + $image_lib->out_type = 'file'; + $image_lib->in_file_dir = $upload_path; + $image_lib->in_file_name = $t_real_name; + $image_lib->out_file_name = 'photo-thumb-'.$member_id; + $image_lib->desired_width = $t_width; + $image_lib->desired_height = $t_height; + + $return = $image_lib->generate_thumbnail(); + + $t_im['img_width'] = $return['thumb_width']; + $t_im['img_height'] = $return['thumb_height']; + $t_im['img_location'] = $return['thumb_location']; } else - { + { + //----------------------------------------- + // Main photo + //----------------------------------------- + $w = intval($this->ipsclass->input['man_width']) ? intval($this->ipsclass->input['man_width']) : $p_width; $h = intval($this->ipsclass->input['man_height']) ? intval($this->ipsclass->input['man_height']) : $p_height; $im['img_width'] = $w > $p_width ? $p_width : $w; $im['img_height'] = $h > $p_height ? $p_height : $h; + + //----------------------------------------- + // Mini photo + //----------------------------------------- + + $_data = $this->ipsclass->scale_image( array( 'max_height' => $t_height, + 'max_width' => $t_width, + 'cur_width' => $im['img_width'], + 'cur_height' => $im['img_height'] ) ); + + $t_im['img_width'] = $_data['img_width']; + $t_im['img_height'] = $_data['img_height']; } //----------------------------------------- - // Remove any uploaded images.. + // Check the file size (after compression) //----------------------------------------- - $this->bash_uploaded_photos($this->ipsclass->member['id']); + if ( filesize( $upload_path . "/" . $real_name ) > ( $p_max * 1024 ) ) + { + @unlink( $upload_path . "/" . $real_name ); + + // Too big... + $return['status'] = 'fail'; + $return['error'] = 'upload_to_big'; + return $return; + } - $final_location = $this->ipsclass->input['url_photo']; - $final_type = 'url'; - $final_dimension = $im['img_width'].','.$im['img_height']; - } - - // Do we have an entry? - - $this->ipsclass->DB->simple_construct( array( 'select' => 'id', 'from' => 'member_extra', 'where' => "id=".$this->ipsclass->member['id'] ) ); - $this->ipsclass->DB->simple_exec(); - - if ( $this->ipsclass->DB->get_num_rows() ) - { - $this->ipsclass->DB->do_update( 'member_extra', array( 'photo_location' => $final_location, - 'photo_type' => $final_type, - 'photo_dimensions' => $final_dimension, - ), 'id='.$this->ipsclass->member['id'] ); + //----------------------------------------- + // Main photo + //----------------------------------------- + + $final_location = $upload_dir . $real_name; + $final_width = $im['img_width']; + $final_height = $im['img_height']; + + //----------------------------------------- + // Mini photo + //----------------------------------------- + + $t_final_location = $upload_dir . $t_im['img_location']; + $t_final_width = $t_im['img_width']; + $t_final_height = $t_im['img_height']; } else { - $this->ipsclass->DB->do_insert( 'member_extra', array( 'photo_location' => $final_location, - 'photo_type' => $final_type, - 'photo_dimensions' => $final_dimension, - 'id' => $this->ipsclass->member['id'] - ) ); + $return['status'] = 'ok'; + return $return; } - $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['photo_c_up'], "act=UserCP&CODE=photo" ); - + //----------------------------------------- + // Return... + //----------------------------------------- + + $return['final_location'] = $final_location; + $return['final_width'] = $final_width; + $return['final_height'] = $final_height; + + $return['t_final_location'] = $t_final_location; + $return['t_final_width'] = $t_final_width; + $return['t_final_height'] = $t_final_height; + + $return['status'] = 'ok'; + return $return; } - /*-------------------------------------------------------------------------*/ // REMOVE UPLOADED PICCIES /*-------------------------------------------------------------------------*/ - function bash_uploaded_photos($id) + function bash_uploaded_photos( $id, $upload_dir='' ) { + //----------------------------------------- + // INIT + //----------------------------------------- + + $upload_dir = $upload_dir ? $upload_dir : $this->ipsclass->vars['upload_dir']; + + //----------------------------------------- + // Go... + //----------------------------------------- + foreach( array( 'swf', 'jpg', 'jpeg', 'gif', 'png' ) as $ext ) { - if ( @file_exists( $this->ipsclass->vars['upload_dir']."/photo-".$id.".".$ext ) ) + if ( @file_exists( $upload_dir."/photo-".$id.".".$ext ) ) { - @unlink( $this->ipsclass->vars['upload_dir']."/photo-".$id.".".$ext ); + @unlink( $upload_dir."/photo-".$id.".".$ext ); + } + + if ( @file_exists( $upload_dir."/photo-thumb-".$id.".".$ext ) ) + { + @unlink( $upload_dir."/photo-thumb-".$id.".".$ext ); } } } + /*-------------------------------------------------------------------------*/ + // REMOVE UPLOADED AVATARS + /*-------------------------------------------------------------------------*/ + function bash_uploaded_avatars($id) { foreach( array( 'swf', 'jpg', 'jpeg', 'gif', 'png' ) as $ext ) @@ -752,30 +858,26 @@ class func_usercp if ($this->ipsclass->vars['allow_skins'] == 1) { - $this->ipsclass->DB->query("SELECT sid FROM ibf_skins WHERE hidden <> 1 AND sid='".$this->ipsclass->input['u_skin']."'"); + $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'sid', 'from' => 'skins', 'where' => "hidden <> 1 AND sid='".$this->ipsclass->input['u_skin']."'" ) ); if (! $this->ipsclass->DB->get_num_rows() ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'skin_not_found' ) ); } - $db_string = $this->ipsclass->DB->compile_db_update_string( array ( - 'language' => $this->ipsclass->input['u_language'], - 'skin ' => $this->ipsclass->input['u_skin'], - ) ); + $db_string = array ( 'language' => $this->ipsclass->input['u_language'], + 'skin ' => $this->ipsclass->input['u_skin'] ); } else { - $db_string = $this->ipsclass->DB->compile_db_update_string( array ( - 'language' => $this->ipsclass->input['u_language'], - ) ); + $db_string = array ( 'language' => $this->ipsclass->input['u_language'] ); } //----------------------------------------- - $this->ipsclass->DB->query("UPDATE ibf_members SET $db_string WHERE id='".$this->ipsclass->member['id']."'"); + $this->ipsclass->DB->do_update( 'members', $db_string, "id='".$this->ipsclass->member['id']."'" ); $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['set_updated'], "act=UserCP&CODE=06" ); @@ -833,7 +935,7 @@ class func_usercp // Post page //----------------------------------------- - if (! preg_match( "/(^|,)".$this->ipsclass->input['postpage'].",/", $this->ipsclass->vars['postpage_contents'] ) ) + if (! preg_match( "/(^|,)".intval($this->ipsclass->input['postpage']).",/", $this->ipsclass->vars['postpage_contents'] ) ) { $this->ipsclass->input['postpage'] = '-1'; } @@ -842,7 +944,7 @@ class func_usercp // Topic page //----------------------------------------- - if (! preg_match( "/(^|,)".$this->ipsclass->input['topicpage'].",/", $this->ipsclass->vars['topicpage_contents'] ) ) + if (! preg_match( "/(^|,)".intval($this->ipsclass->input['topicpage']).",/", $this->ipsclass->vars['topicpage_contents'] ) ) { $this->ipsclass->input['topicpage'] = '-1'; } @@ -875,24 +977,16 @@ class func_usercp 'view_sigs' => intval($this->ipsclass->input['VIEW_SIGS']), 'view_img' => intval($this->ipsclass->input['VIEW_IMG']), 'view_pop' => intval($this->ipsclass->input['DO_POPUP']), - 'dst_in_use' => intval($this->ipsclass->input['DST']), + 'dst_in_use' => isset($this->ipsclass->input['DST']) ? intval($this->ipsclass->input['DST']) : 0, 'members_auto_dst' => intval($this->ipsclass->input['DSTCHECK']), - 'members_disable_pm' => intval( $this->ipsclass->member['members_disable_pm'] ), + 'members_disable_pm' => intval($this->ipsclass->member['members_disable_pm']), 'members_editor_choice' => substr( $this->ipsclass->input['editor_choice'], 0, 3 ), - 'view_prefs' => $this->ipsclass->input['postpage']."&".$this->ipsclass->input['topicpage'], + 'view_prefs' => intval($this->ipsclass->input['postpage'])."&".intval($this->ipsclass->input['topicpage']), ) , 'id='.$this->ipsclass->member['id'] ); - - if ($this->ipsclass->input['OPEN_QR'] == 1) - { - $this->ipsclass->my_setcookie('open_qr', '1'); - } - else - { - $this->ipsclass->my_setcookie('open_qr', '0'); - } + + $this->ipsclass->pack_and_update_member_cache( $this->ipsclass->member['id'], array( 'qr_open' => intval($this->ipsclass->input['OPEN_QR']) ), $this->ipsclass->member['_cache'] ); $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['set_updated'], "act=UserCP&CODE=04" ); - } @@ -922,6 +1016,8 @@ class func_usercp foreach ( array('hide_email', 'admin_send', 'send_full_msg', 'pm_reminder', 'auto_track') as $v ) { + $this->ipsclass->input[ $v ] = isset($this->ipsclass->input[ $v ]) ? $this->ipsclass->input[ $v ] : NULL; + $this->ipsclass->input[ $v ] = $this->ipsclass->is_number( $this->ipsclass->input[ $v ] ); if ( $this->ipsclass->input[ $v ] < 1 ) @@ -1042,6 +1138,15 @@ class func_usercp function do_avatar() { + //----------------------------------------- + // Check to make sure that we can edit profiles.. + //----------------------------------------- + + if ( empty($this->ipsclass->member['g_edit_profile']) ) + { + $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cant_use_feature' ) ); + } + //----------------------------------------- // Got attachment types? //----------------------------------------- @@ -1079,7 +1184,7 @@ class func_usercp // Did we press "remove"? //----------------------------------------- - if ( $this->ipsclass->input['remove'] ) + if ( isset($this->ipsclass->input['remove']) AND $this->ipsclass->input['remove'] ) { $this->bash_uploaded_avatars($this->ipsclass->member['id']); @@ -1096,7 +1201,7 @@ class func_usercp // NO? CARRY ON!! //----------------------------------------- - list($p_width, $p_height) = explode( "x", $this->ipsclass->vars['avatar_dims'] ); + list($p_width, $p_height) = explode( "x", strtolower($this->ipsclass->vars['avatar_dims']) ); //----------------------------------------- // Check to make sure we don't just have @@ -1113,12 +1218,20 @@ class func_usercp $this->ipsclass->input['url_avatar'] = ""; } + //----------------------------------------- + // Not so fast, big shot. + //----------------------------------------- + if ( $this->ipsclass->xss_check_url( $this->ipsclass->input['url_avatar'] ) !== TRUE ) { $this->ipsclass->input['url_avatar'] = ''; } - - if ( empty($this->ipsclass->input['url_avatar']) ) + + //----------------------------------------- + // Continue... + //----------------------------------------- + + if ( empty($this->ipsclass->input['url_avatar']) or $this->ipsclass->input['url_avatar'] == "" ) { //----------------------------------------- // Lets check for an uploaded photo.. @@ -1156,6 +1269,9 @@ class func_usercp require_once( KERNEL_PATH.'class_upload.php' ); $upload = new class_upload(); + require_once( KERNEL_PATH.'class_image.php' ); + $this->image = new class_image(); + //----------------------------------------- // Set up the variables //----------------------------------------- @@ -1171,7 +1287,7 @@ class func_usercp if ( is_array( $this->ipsclass->cache['attachtypes'] ) and count( $this->ipsclass->cache['attachtypes'] ) ) { - foreach( $this->ipsclass->cache['attachtypes'] as $idx => $data ) + foreach( $this->ipsclass->cache['attachtypes'] as $data ) { if ( $data['atype_photo'] ) { @@ -1248,7 +1364,7 @@ class func_usercp // Do we have an attachment? //----------------------------------------- - if ( strstr( $return['thumb_location'], 'avs-' ) ) + if ( isset($return['thumb_location']) AND strstr( $return['thumb_location'], 'avs-' ) ) { //----------------------------------------- // Kill old and rename new... @@ -1393,6 +1509,17 @@ class func_usercp function do_profile() { + //----------------------------------------- + // Check to make sure that we can edit profiles.. + //----------------------------------------- + + if ( empty($this->ipsclass->member['g_edit_profile']) ) + { + $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cant_use_feature' ) ); + } + + $this->class->init_parser(); + //----------------------------------------- // Check for bad entry //----------------------------------------- @@ -1463,11 +1590,6 @@ class func_usercp $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'web_too_long' ) ); } //----------------------------------------- - if (strlen($_POST['Photo']) > 150) - { - $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'photo_too_long' ) ); - } - //----------------------------------------- if ( ($_POST['ICQNumber']) && ( ! preg_match( "/^[\d\-]+$/", $_POST['ICQNumber'] ) ) ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'not_icq_number' ) ); @@ -1515,8 +1637,8 @@ class func_usercp 'aim_name' => $this->ipsclass->input['AOLName'], 'yahoo' => $this->ipsclass->input['YahooName'], 'msnname' => $this->ipsclass->input['MSNName'], - 'location' => $this->ipsclass->input['Location'], - 'interests' => $this->ipsclass->input['Interests'], + 'location' => $this->class->parser->bad_words( $this->ipsclass->input['Location'] ), + 'interests' => $this->class->parser->bad_words( $this->ipsclass->input['Interests'] ), ); //----------------------------------------- @@ -1526,7 +1648,7 @@ class func_usercp if ( (isset($this->ipsclass->input['member_title'])) and ( isset($this->ipsclass->vars['post_titlechange']) ) and ( $this->ipsclass->member['posts'] >= $this->ipsclass->vars['post_titlechange']) ) { - $set['title'] = $this->ipsclass->input['member_title']; + $set['title'] = $this->class->parser->bad_words( $this->ipsclass->input['member_title'] ); } //----------------------------------------- @@ -1579,12 +1701,12 @@ class func_usercp $bet['id'] = $this->ipsclass->member['id']; $bet['name'] = $this->ipsclass->member['members_display_name']; $this->class->modules->register_class($this); - $this->class->modules->on_profile_update($bet, $custom_fields); + $this->class->modules->on_profile_update( array_merge( $bet, $set, array( 'name' => $this->ipsclass->member['name'], 'id' => $this->ipsclass->member['id'] ) ) ); } // Return us! - $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['profile_edited'], "act=UserCP&CODE=01" ); + $this->ipsclass->boink_it( $this->ipsclass->base_url . 'act=usercp&member_id='.$member_id.'&CODE=01&___msg=settings_updated&md5check='.$this->ipsclass->md5_check ); } /*-------------------------------------------------------------------------*/ @@ -1593,6 +1715,8 @@ class func_usercp function do_signature() { + $this->class->init_parser(); + //----------------------------------------- // Check length //----------------------------------------- @@ -1628,10 +1752,12 @@ class func_usercp // Parse post //----------------------------------------- - $this->class->parser->parse_smilies = 0; - $this->class->parser->parse_html = intval($this->ipsclass->vars['sig_allow_html']); - $this->class->parser->parse_bbcode = intval($this->ipsclass->vars['sig_allow_ibc']); - $this->ipsclass->input['Post'] = $this->class->parser->pre_db_parse( $this->ipsclass->input['Post'] ); + $this->class->parser->parse_smilies = 0; + $this->class->parser->parse_html = intval($this->ipsclass->vars['sig_allow_html']); + $this->class->parser->parse_bbcode = intval($this->ipsclass->vars['sig_allow_ibc']); + $this->class->parser->parsing_signature = 1; + + $this->ipsclass->input['Post'] = $this->class->parser->bad_words( $this->class->parser->pre_db_parse( $this->ipsclass->input['Post'] ) ); if ($this->class->parser->error != "") { @@ -1675,7 +1801,13 @@ class func_usercp function ignore_user_add() { - $temp_users = array(); + //----------------------------------------- + // INIT + //----------------------------------------- + + $temp_users = array(); + $cant_find = array(); + $lookup_meh_pants = array(); //----------------------------------------- // Stored as userid,userid,userid @@ -1695,7 +1827,9 @@ class func_usercp $final_string = preg_replace( "/,{2,}/", ",", str_replace( " ", "", $final_string ) ); - $lookup_meh_pants = array(); + //----------------------------------------- + // Get new names + //----------------------------------------- if ( $this->ipsclass->input['newbox_1'] ) { @@ -1710,13 +1844,19 @@ class func_usercp $lookup_meh_pants[] = "'".strtolower(str_replace( '|', '|', $this->ipsclass->input['newbox_3']))."'"; } + //----------------------------------------- + // Check... + //----------------------------------------- + if ( count($lookup_meh_pants) ) { //----------------------------------------- // See if we have any MEMBRES IN THE DB //----------------------------------------- - $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, mgroup', 'from' => 'members', 'where' => "LOWER(members_display_name) IN (".implode(",", $lookup_meh_pants ).")" ) ); + $this->ipsclass->DB->simple_construct( array( 'select' => 'id, members_l_display_name, mgroup', + 'from' => 'members', + 'where' => "members_l_display_name IN (".implode(",", $lookup_meh_pants ).")" ) ); $this->ipsclass->DB->simple_exec(); while( $s = $this->ipsclass->DB->fetch_row() ) @@ -1733,7 +1873,7 @@ class func_usercp if ( $s['id'] != $this->ipsclass->member['id'] ) { - $members[ $s['name'] ] = $s['id']; + $members[ $s['members_l_display_name'] ] = $s['id']; } } @@ -1755,7 +1895,9 @@ class func_usercp $this->ipsclass->DB->do_update( 'members', array( 'ignored_users' => $final_string ), 'id='.$this->ipsclass->member['id'] ); } - $cant_find = array(); + //----------------------------------------- + // Boxes not empty? Must be people! + //----------------------------------------- foreach( array( 1,2,3 ) as $hehe ) { diff --git a/upload/sources/lib/index.html b/upload/sources/lib/index.html index 787531db..52a588b2 100644 --- a/upload/sources/lib/index.html +++ b/upload/sources/lib/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/lib/post_parser.php b/upload/sources/lib/post_parser.php index 6ad3b3c8..8fef6ae7 100644 --- a/upload/sources/lib/post_parser.php +++ b/upload/sources/lib/post_parser.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -34,6 +24,11 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class post_parser { @@ -90,6 +85,8 @@ class post_parser { $ibforums->cache['emoticons'][] = $r; } + usort( $ibforums->cache['emoticons'] , array( 'post_parser', 'smilie_length_sort' ) ); + if ( $load ) { $std->update_cache( array( 'name' => 'emoticons', 'array' => 1, 'deletefirst' => 1 ) ); @@ -126,6 +123,8 @@ class post_parser { $ibforums->cache['badwords'][] = $r; } + usort( $ibforums->cache['emoticons'] , array( 'post_parser', 'word_length_sort' ) ); + if ( $load ) { $std->update_cache( array( 'name' => 'badwords', 'array' => 1, 'deletefirst' => 1 ) ); @@ -860,8 +859,8 @@ class post_parser { global $ibforums; $used = array( - 'quote' => array( 'title' => 'Цитата', 'css_top' => 'quotetop' , 'css_main' => 'quotemain' ), - 'code' => array( 'title' => 'Исходный код' , 'css_top' => 'codetop' , 'css_main' => 'codemain' ), + 'quote' => array( 'title' => 'QUOTE', 'css_top' => 'quotetop' , 'css_main' => 'quotemain' ), + 'code' => array( 'title' => 'CODE' , 'css_top' => 'codetop' , 'css_main' => 'codemain' ), 'sql' => array( 'title' => 'SQL' , 'css_top' => 'sqltop' , 'css_main' => 'sqlmain' ), 'html' => array( 'title' => 'HTML' , 'css_top' => 'htmltop' , 'css_main' => 'htmlmain' ) ); @@ -1308,7 +1307,7 @@ class post_parser { $url = str_replace( " ", "%20", $url ); - return "опубликованное пользователем изображение"; + return "user posted image"; } diff --git a/upload/sources/lib/search_mysql_ftext.php b/upload/sources/lib/search_mysql_ftext.php index 89c4349f..5aeec0b1 100644 --- a/upload/sources/lib/search_mysql_ftext.php +++ b/upload/sources/lib/search_mysql_ftext.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-02-02 17:23:13 +0000 (Thu, 02 Feb 2006) $ -| > $Revision: 133 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > MySQL FULL TEXT Search Library @@ -34,6 +24,11 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class search_lib extends Search { @@ -114,8 +109,6 @@ class search_lib extends Search } } - //print $check_keywords; exit(); - //----------------------------------------- // Get forums... //----------------------------------------- @@ -153,11 +146,16 @@ class search_lib extends Search // How many results? //----------------------------------------- - $this->ipsclass->DB->query("SELECT COUNT(*) as dracula - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) - WHERE t.forum_id IN ($myforums) {$topics_name} {$approved} - AND MATCH(p.post) AGAINST ('$check_keywords' $boolean)"); + $this->ipsclass->DB->build_query( array( 'select' => 'COUNT(*) as dracula', + 'from' => array( 'posts' => 'p' ), + 'add_join' => array( 1 => array( 'type' => 'left', + 'from' => array( 'topics' => 't' ), + 'where' => 't.tid=p.topic_id', + ) ), + 'where' => "t.forum_id IN ({$myforums}) {$topics_name} {$approved} + AND MATCH(p.post) AGAINST ('{$check_keywords}' {$boolean})" + ) ); + $this->ipsclass->DB->exec_query(); $count = $this->ipsclass->DB->fetch_row(); @@ -172,8 +170,8 @@ class search_lib extends Search // Store it daddy-o! //----------------------------------------- - $cache = "SELECT MATCH(post) AGAINST ('$check_keywords' $boolean) as score, t.tid, t.posts as topic_posts, t.title as topic_title, t.views, t.forum_id, - p.post, p.author_id, p.author_name, p.post_date, p.pid, p.post_htmlstate,m.*, me.* + $cache = "SELECT MATCH(post) AGAINST ('$check_keywords' $boolean) as score, t.approved, t.tid, t.posts as topic_posts, t.title as topic_title, t.views, t.forum_id, + p.post, p.author_id, p.author_name, p.post_date, p.queued, p.pid, p.post_htmlstate,m.*, me.* FROM ".SQL_PREFIX."posts p LEFT JOIN ".SQL_PREFIX."topics t on (p.topic_id=t.tid) LEFT JOIN ".SQL_PREFIX."members m on (m.id=p.author_id) @@ -188,19 +186,18 @@ class search_lib extends Search $unique_id = md5(uniqid(microtime(),1)); - $str = $this->ipsclass->DB->compile_db_insert_string( array ( - 'id' => $unique_id, - 'search_date'=> time(), - 'topic_id' => '00', - 'topic_max' => $count['dracula'], - 'member_id' => $this->ipsclass->member['id'], - 'ip_address' => $this->ipsclass->input['IP_ADDRESS'], - 'post_id' => '00', - 'query_cache'=> $cache, - - ) ); + $str = array ( + 'id' => $unique_id, + 'search_date'=> time(), + 'topic_id' => '00', + 'topic_max' => $count['dracula'], + 'member_id' => $this->ipsclass->member['id'], + 'ip_address' => $this->ipsclass->input['IP_ADDRESS'], + 'post_id' => '00', + 'query_cache'=> $cache, + ); - $this->ipsclass->DB->query("INSERT INTO ibf_search_results ({$str['FIELD_NAMES']}) VALUES ({$str['FIELD_VALUES']})"); + $this->ipsclass->DB->do_insert( "search_results", $str ); $hilight = str_replace( '"', '', $this->ipsclass->input['keywords'] ); $hilight = urlencode(trim(str_replace( '&', '&', $hilight))); @@ -231,7 +228,8 @@ class search_lib extends Search $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_search_results' ) ); } - $this->ipsclass->DB->query("SELECT * FROM ibf_search_results WHERE id='{$this->unique_id}'"); + $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'search_results', 'where' => "id='".$this->unique_id."'" ) ); + $this->ipsclass->DB->exec_query(); if ( ! $sr = $this->ipsclass->DB->fetch_row() ) { @@ -310,7 +308,7 @@ class search_lib extends Search // Link member's name - if ($row['author_id']) + if ( $row['author_id'] ) { $row['author_name'] = "{$row['author_name']}"; } @@ -328,11 +326,14 @@ class search_lib extends Search // Fix up quotes.. //----------------------------------------- + $row['class1'] = "row2"; + $row['class2'] = "row1"; + $row['classposts'] = "row2"; + $this->topics->parser->parse_html = ( $this->ipsclass->forums->forum_by_id[$row['forum_id']]['use_html'] and $this->ipsclass->cache['group_cache'][ $row['mgroup'] ]['g_dohtml'] and $row['post_htmlstate'] ) ? 1 : 0; $this->topics->parser->parse_wordwrap = $this->ipsclass->vars['post_wordwrap']; $this->topics->parser->parse_nl2br = $row['post_htmlstate'] == 2 ? 1 : 0; - $row['post'] = $this->topics->parser->pre_db_parse( $this->topics->parser->pre_edit_parse( $row['post'] ) ); $row['post'] = $this->topics->parser->pre_display_parse( $row['post'] ); $keywords_array = explode( " ", str_replace( "+", " ", $this->ipsclass->input['highlite'] ) ); @@ -396,7 +397,7 @@ class search_lib extends Search if( is_array($this->ipsclass->cache['moderators']) AND count($this->ipsclass->cache['moderators']) ) { - foreach( $this->ipsclass->cache['moderators'] as $k => $v ) + foreach( $this->ipsclass->cache['moderators'] as $v ) { if( $v['member_id'] == $this->ipsclass->member['id'] AND $v['post_q'] ) { @@ -425,17 +426,9 @@ class search_lib extends Search // Do we have any input? //----------------------------------------- - //----------------------------------------- - // USING FULL TEXT - Wooohoo!! - //----------------------------------------- - - - if ($this->ipsclass->input['namesearch'] != "") - { - $name_filter = $this->is->filter_keywords($this->ipsclass->input['namesearch'], 1); - } + $name_filter = (isset($this->ipsclass->input['namesearch']) AND $this->ipsclass->input['namesearch'] != "") ? $this->is->filter_keywords($this->ipsclass->input['namesearch'], 1) : ''; - if ($this->ipsclass->input['useridsearch'] != "") + if (isset($this->ipsclass->input['useridsearch']) AND $this->ipsclass->input['useridsearch'] != "") { $keywords = $this->is->filter_keywords($this->ipsclass->input['useridsearch']); $this->is->search_type = 'userid'; @@ -446,6 +439,8 @@ class search_lib extends Search $this->is->search_type = 'posts'; } + $type = "postonly"; + if ( $name_filter != "" AND $this->ipsclass->input['keywords'] != "" ) { $type = 'joined'; @@ -459,6 +454,8 @@ class search_lib extends Search $type='nameonly'; } + //----------------------------------------- + // USING FULL TEXT - Wooohoo!! //----------------------------------------- if ( $this->is->mysql_version >= 40010 ) @@ -530,7 +527,7 @@ class search_lib extends Search } //----------------------------------------- - + if ($this->ipsclass->input['search_in'] == 'titles') { $this->is->search_in = 'titles'; @@ -588,6 +585,12 @@ class search_lib extends Search $this->ipsclass->vars['min_search_word'] = 4; } + + $topics_datecut = ""; + $posts_datecut = ""; + $posts_name = ""; + $topics_name = ""; + //----------------------------------------- // Add on the prune days //----------------------------------------- @@ -635,13 +638,13 @@ class search_lib extends Search $name_filter = str_replace( '|', "|", $name_filter ); - if ($this->ipsclass->input['exactname'] == 1) + if (isset($this->ipsclass->input['exactname']) AND $this->ipsclass->input['exactname'] == 1) { - $sql_query = "SELECT id from ibf_members WHERE LOWER(members_display_name)='".$name_filter."'"; + $sql_query = "SELECT id from ".SQL_PREFIX."members WHERE members_l_display_name='".$name_filter."'"; } else { - $sql_query = "SELECT id from ibf_members WHERE members_display_name like '%".$name_filter."%'"; + $sql_query = "SELECT id from ".SQL_PREFIX."members WHERE members_display_name like '%".$name_filter."%'"; } @@ -673,7 +676,7 @@ class search_lib extends Search $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'search_word_short', 'EXTRA' => $this->ipsclass->vars['min_search_word']) ); } } - + $unique_id = md5(uniqid(microtime(),1)); if ($type != 'nameonly') @@ -681,16 +684,15 @@ class search_lib extends Search if ( ! $this->is->topic_search_only ) { $topics_query = "SELECT t.tid, t.approved, t.forum_id - FROM ibf_topics t + FROM ".SQL_PREFIX."topics t WHERE $topics_datecut t.forum_id IN ($forums) - $topics_name AND t.approved=1 AND MATCH(title) AGAINST ('".trim($keywords)."' $boolean)"; + $topics_name AND MATCH(title) AGAINST ('".trim($keywords)."' $boolean)"; $posts_query = "SELECT p.pid, p.queued, t.approved, t.forum_id - FROM ibf_posts p - LEFT JOIN ibf_topics t ON ( p.topic_id=t.tid ) + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON ( p.topic_id=t.tid ) WHERE $posts_datecut t.forum_id IN ($forums) - AND p.queued=0 $posts_name AND MATCH(post) AGAINST ('".trim($keywords)."' $boolean)"; } else @@ -700,12 +702,11 @@ class search_lib extends Search //----------------------------------------- $posts_query = "SELECT p.pid, p.queued, t.approved, t.forum_id - FROM ibf_posts p - LEFT JOIN ibf_topics t ON ( p.topic_id=t.tid ) + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON ( p.topic_id=t.tid ) WHERE p.topic_id={$this->is->topic_id} AND $posts_datecut t.forum_id IN ($forums) - AND p.queued=0 $posts_name AND MATCH(post) AGAINST ('".trim($keywords)."' $boolean)"; } } @@ -713,15 +714,14 @@ class search_lib extends Search { $topics_query = "SELECT t.tid, t.approved, t.forum_id - FROM ibf_topics t + FROM ".SQL_PREFIX."topics t WHERE $topics_datecut t.forum_id IN ($forums) - $topics_name AND t.approved=1"; + $topics_name"; $posts_query = "SELECT p.pid, p.queued, t.approved, t.forum_id - FROM ibf_posts p - LEFT JOIN ibf_topics t ON ( p.topic_id=t.tid ) + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON ( p.topic_id=t.tid ) WHERE $posts_datecut t.forum_id IN ($forums) - AND p.queued=0 $posts_name"; } //print $topics_query."
    ".$posts_query; exit(); @@ -860,7 +860,7 @@ class search_lib extends Search { $this->output .= $this->ipsclass->compiled_templates['skin_search']->search_error_page($this->ipsclass->input['keywords']); $this->ipsclass->print->add_output( $this->output ); - $this->ipsclass->print->do_output( array( 'TITLE' => $this->ipsclass->lang['g_simple_title'], 'JS' => 0, NAV => array( $this->ipsclass->lang['g_simple_title'] ) ) ); + $this->ipsclass->print->do_output( array( 'TITLE' => $this->ipsclass->lang['g_simple_title'], 'JS' => 0, 'NAV' => array( $this->ipsclass->lang['g_simple_title'] ) ) ); } } diff --git a/upload/sources/lib/search_mysql_man.php b/upload/sources/lib/search_mysql_man.php index c5d87563..d4c069ff 100644 --- a/upload/sources/lib/search_mysql_man.php +++ b/upload/sources/lib/search_mysql_man.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-02-02 17:23:13 +0000 (Thu, 02 Feb 2006) $ -| > $Revision: 133 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > MySQL Manual Search Library @@ -34,6 +24,11 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class search_lib extends Search { @@ -62,13 +57,9 @@ class search_lib extends Search // Do we have any input? //----------------------------------------- - - if ($this->ipsclass->input['namesearch'] != "") - { - $name_filter = $this->is->filter_keywords($this->ipsclass->input['namesearch'], 1); - } + $name_filter = (isset($this->ipsclass->input['namesearch']) AND $this->ipsclass->input['namesearch'] != "") ? $this->is->filter_keywords($this->ipsclass->input['namesearch'], 1) : ''; - if ($this->ipsclass->input['useridsearch'] != "") + if (isset($this->ipsclass->input['useridsearch']) AND $this->ipsclass->input['useridsearch'] != "") { $keywords = $this->is->filter_keywords($this->ipsclass->input['useridsearch']); $this->is->search_type = 'userid'; @@ -79,6 +70,8 @@ class search_lib extends Search $this->is->search_type = 'posts'; } + $type = 'postonly'; + if ( $name_filter != "" AND $this->ipsclass->input['keywords'] != "" ) { $type = 'joined'; @@ -130,7 +123,7 @@ class search_lib extends Search foreach( array( 'last_post', 'posts', 'starter_name', 'forum_id' ) as $v ) { - if ($this->ipsclass->input['sort_key'] == $v) + if (isset($this->ipsclass->input['sort_key']) AND $this->ipsclass->input['sort_key'] == $v) { $this->is->sort_key = $v; } @@ -140,7 +133,7 @@ class search_lib extends Search foreach ( array( 1, 7, 30, 60, 90, 180, 365, 0 ) as $v ) { - if ($this->ipsclass->input['prune'] == $v) + if (isset($this->ipsclass->input['prune']) AND $this->ipsclass->input['prune'] == $v) { $this->is->prune = $v; } @@ -148,14 +141,14 @@ class search_lib extends Search //----------------------------------------- - if ($this->ipsclass->input['sort_order'] == 'asc') + if (isset($this->ipsclass->input['sort_order']) AND $this->ipsclass->input['sort_order'] == 'asc') { $this->is->sort_order = 'asc'; } //----------------------------------------- - if ($this->ipsclass->input['result_type'] == 'posts') + if (isset($this->ipsclass->input['result_type']) AND $this->ipsclass->input['result_type'] == 'posts') { $this->is->result_type = 'posts'; } @@ -165,6 +158,11 @@ class search_lib extends Search $this->ipsclass->vars['min_search_word'] = 4; } + $topics_datecut = ""; + $posts_datecut = ""; + $posts_name = ""; + $topics_name = ""; + //----------------------------------------- // Add on the prune days //----------------------------------------- @@ -202,13 +200,13 @@ class search_lib extends Search $name_filter = str_replace( '|', "|", $name_filter ); - if ($this->ipsclass->input['exactname'] == 1) + if (isset($this->ipsclass->input['exactname']) AND $this->ipsclass->input['exactname'] == 1) { - $sql_query = "SELECT id from ibf_members WHERE LOWER(members_display_name)='".$name_filter."'"; + $sql_query = "SELECT id from ".SQL_PREFIX."members WHERE members_l_display_name='".$name_filter."'"; } else { - $sql_query = "SELECT id from ibf_members WHERE members_display_name like '%".$name_filter."%'"; + $sql_query = "SELECT id from ".SQL_PREFIX."members WHERE members_display_name like '%".$name_filter."%'"; } @@ -295,29 +293,28 @@ class search_lib extends Search } $topics_query = "SELECT t.tid, t.approved, t.forum_id - FROM ibf_topics t + FROM ".SQL_PREFIX."topics t WHERE {$topic_filter}{$topics_datecut} t.forum_id IN ($forums) - $topics_name AND t.approved=1 AND ($title_like)"; + $topics_name AND ($title_like)"; $posts_query = "SELECT p.pid, p.queued, t.approved, t.forum_id - FROM ibf_posts p - LEFT JOIN ibf_topics t on (t.tid=p.topic_id) + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t on (t.tid=p.topic_id) WHERE {$topic_filter}{$posts_datecut} t.forum_id IN ($forums) - AND p.queued=0 $posts_name AND ($post_like)"; } else { $topics_query = "SELECT t.tid, t.approved, t.forum_id - FROM ibf_topics t + FROM ".SQL_PREFIX."topics t WHERE $topics_datecut t.forum_id IN ($forums) $topics_name"; $posts_query = "SELECT p.pid, p.queued, t.approved, t.forum_id - FROM ibf_posts p - LEFT JOIN ibf_topics t on (t.tid=p.topic_id) + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t on (t.tid=p.topic_id) WHERE $posts_datecut t.forum_id IN ($forums) AND p.queued=0 $posts_name"; @@ -339,9 +336,9 @@ class search_lib extends Search $my_invisible_forums_t = array(); $my_invisible_forums_p = array(); - if( is_array($this->ipsclass->cache['moderators']) AND count($this->ipsclass->cache['moderators']) ) + if( isset($this->ipsclass->cache['moderators']) AND is_array($this->ipsclass->cache['moderators']) AND count($this->ipsclass->cache['moderators']) ) { - foreach( $this->ipsclass->cache['moderators'] as $k => $v ) + foreach( $this->ipsclass->cache['moderators'] as $v ) { if( $v['member_id'] == $this->ipsclass->member['id'] AND $v['post_q'] ) { diff --git a/upload/sources/lib/skin_info.php b/upload/sources/lib/skin_info.php index cf2e8bfc..e264e156 100644 --- a/upload/sources/lib/skin_info.php +++ b/upload/sources/lib/skin_info.php @@ -1,189 +1,202 @@ "Тело web-страницы", -'TABLE, TR, TD' => "Таблица по умолчанию", -'a:link, a:visited, a:active' => "Ссылка по умолчанию", -'a:hover' => "Ссылка по умолчанию при наведении курсора", -'.googlebottom, .googlebottom a:link, .googlebottom a:visited, .googlebottom a:active' => "Результаты простого поиска: темный", -'.googlish, .googlish a:link, .googlish a:visited, .googlish a:active' => "Результаты простого поиска: ссылка на тему", -'.googlesmall, .googlesmall a:link, .googlesmall a:active, .googlesmall a:visited' => "Результаты простого поиска: маленький текст", -'option.sub' => "Форма поиска: меню выбора форумов: цвет подкатегории", -'.caldate' => "Календарь: дата", -'#ucpmenu' => "Личные данные пользователя: цвет меню", -'#ucpcontent' => "Личные данные пользователя: цвет шрифта", -'#logostrip' => "Верхняя часть форума: полоса с логотипом", -'#submenu' => "Верхняя часть форума: полоса с иконками", -'#submenu a:link, #submenu a:visited, #submenu a:active' => "Верхняя часть форума: полоска с иконками: цвет ссылок полосы с иконками", -'#userlinks' => "Верхняя часть форума: меню пользователя", -'.activeuserstrip' => 'Форумы и топики: активные пользователи', -'.pformstrip' => 'Глобально: подзаголовок', -'.pformleft' => 'Глобально: левая колонка', -'.pformleftw' => 'Глобально: ширина левой колонки', -'.pformright' => 'Глобально: правая колонка', -'.post1' => 'Просмотр сообщений: альтернативный цвет #1', -'.post2' => 'Просмотр сообщений: альтернативный цвет #2', -'.postlinksbar' => 'Просмотр сообщений: подписка на тему и другие ссылки', -'.row1' => 'Глобально: альтернативная строка #1', -'.row2' => 'Глобально: альтернативная строка #2', -'.row3' => 'Глобально: альтернативная строка #3', -'.row4' => 'Глобально: альтернативная строка #4', -'.darkrow1' => 'Глобально: альтернативная темная строка #1', -'.darkrow2' => 'Глобально: альтернативная темная строка #2', -'.darkrow3' => 'Глобально: альтернативная темная строка #3', -'.hlight' => 'Персональные сообщения: входящие — выбранная строка', -'.dlight' => 'Персональные сообщения: входящие — невыбранная строка', -'.titlemedium' => 'Глобально: подзаголовок (меньший)', -'.titlemedium a:link, .titlemedium a:visited, .titlemedium a:active' =>'Глобально: ссылки подзаголовка (меньшего)', -'.maintitle' => 'Глобально: заголовок главной таблицы', -'.maintitle a:link, .maintitle a:visited, .maintitle a:active' => 'Глобально: ссылки заголовка главной таблицы', -'.plainborder' => 'Глобально: альтернативная таблица #1', -'.tableborder' => 'Глобально: цвет фона между ячейками таблицы', -'.tablefill' => 'Глобально: альтернативная таблица #2', -'.tablepad' => 'Глобально: альтернативная таблица #3', -'.desc' => 'Просмотр форума: информация о последнем сообщении', -'.signature' => 'Просмотр сообщений: подпись', -'.normalname' => 'Просмотр сообщений: имя пользователя (зарегистрированное)', -'.unreg' => 'Просмотр сообщений: незарегистрированное имя', -'.searchlite' => 'Глобально: цвет подсветки ключевых слов поиска', -'#QUOTE' => 'Блок цитаты', -'#CODE' => 'Блок программного кода', +'BODY' => "Web Page Body", +'TABLE, TR, TD' => "Default table", +'a:link, a:visited, a:active' => "Default link", +'a:hover' => "Default link hover", +'.googlebottom, .googlebottom a:link, .googlebottom a:visited, .googlebottom a:active' => "Simple Search Results: Dark", +'.googlish, .googlish a:link, .googlish a:visited, .googlish a:active' => "Simple Search Results: Topic Link", +'.googlesmall, .googlesmall a:link, .googlesmall a:active, .googlesmall a:visited' => "Simple Search Results: Small Text", +'option.sub' => "Search Form: Select forums box: subcat colour", +'.caldate' => "Calendar: Date", +'#ucpmenu' => "User CP: Menu colour", +'#ucpcontent' => "User CP: Content colour", +'#logostrip' => "Board Header: Logo Strip", +'#submenu' => "Board Header: Icon Strip", +'#submenu a:link, #submenu a:visited, #submenu a:active' => "Board Header: Icon Strip link colours", +'#userlinks' => "Board Header: Member Bar", +'.activeuserstrip' => 'Forums & Topics: Active users bar', +'.tablesubheader' => 'Global: Sub heading', +'.pformleft' => 'Global: left side table cell', +'.pformleftw' => 'Global: left side table cell wide', +'.pformright' => 'Global: right side table cell', +'.post1' => 'Post View: Alt colour #1', +'.post2' => 'Post View: Alt colour #2', +'.postlinksbar' => 'Post View: Track topic, etc links', +'.row1' => 'Global: Alt row #1', +'.row2' => 'Global: Alt row #2', +'.row3' => 'Global: Alt row #3', +'.row4' => 'Global: Alt row #4', +'.darkrow1' => 'Global: Alt dark row #1', +'.darkrow2' => 'Global: Alt dark row #2', +'.darkrow3' => 'Global: Alt dark row #3', +'.hlight' => 'Msgr: Inbox row selected', +'.dlight' => 'Msgr: Inbox row not selected', +'.tablesubheader' => 'Global: Sub heading (minor)', +'.tablesubheader a:link, .tablesubheader a:visited, .tablesubheader a:active' =>'Global: Sub heading (minor) Links', +'.maintitle' => 'Global: Main table heading', +'.maintitle a:link, .maintitle a:visited, .maintitle a:active' => 'Global: Main table heading Links', +'.plainborder' => 'Global: Table alt #1', +'.tableborder' => 'Global: Table cellspacing colour', +'.tablefill' => 'Global: Table alt #2', +'.tablepad' => 'Global: Table alt #3', +'.desc' => 'Forum View: Last post info', +'.signature' => 'Post View: Signature', +'.normalname' => 'Post View: Member name (reg)', +'.unreg' => 'Post View: Unreg name', +'.searchlite' => 'Global: Search highlighting', +'#QUOTE' => 'Quote Box', +'#CODE' => 'Code Box', ); $skin_names = array( 'skin_boards' => array( - 'skin_boards (Главная страница форума) ', - 'Элементы главной страницы форума (отображает все форумы и подфорумы), такие, как ссылки на форумы, блок активных пользователей, статистика, именинники и последние события календаря.', + 'Board Index', + 'Elements for the board index listing (shows you all the forums and is the first page you see when visiting the board) such as + forum link HTML, active user overview HTML, board statistics overview HTML, today\'s birthdays overview HTML', 'act=idx' ), - + 'skin_buddy' => array( - 'skin_buddy (Помощник)', - 'Элементы окна «Помощник» включая ссылки и форму поиска.', + 'MyAssistant', + 'Elements for the myAssistant feature, including links and search boxes', 'act=buddy', ), 'skin_calendar'=> array( - 'skin_calendar (Календарь)', - 'Элементы календаря, включая просмотр самого календаря, дней календаря и конкретных событий.', + 'Calendar', + 'Elements for the calendar, including calendar view, view events', 'act=calendar' ), 'skin_editors' => array( - 'skin_editors (Редактор сообщений)', - 'Элементы стандартного и rich text редакторов, используемых для создания сообщений.', + 'Post / PM Editor', + 'Elements from the standard and rich text editors used when creating a new PM or post.', '', ), - 'skin_emails' => array( - 'skin_emails (Контакты пользователя)', - 'Элементы различных форм контактов, такие как e-mail и жалоба пользователя на некорректное сообщение.', + 'skin_emails' => array( + 'Member Contact', + 'Elements from various contact methods, such as email form and report post to moderator form', '', ), 'skin_forum' => array( - 'skin_forum (Просмотр конкретного форума)', - 'Элементы отображения конкретного форума (список тем и опросов), включая свои правила выбранного форума и т.д.', + 'Forum Index', + 'Elements for forum view (list all topics in forum). Includes forum log in window, forum rules', 'act=SF&f=1', ), 'skin_global' => array( - 'skin_global (Основные HTML фрагменты)', - 'Различные глобальные элементы форума — верхняя (логотип с ссылками) и нижняя часть всех страниц форума, промежуточная страница переадресации, страница описания ошибки форума и т.д.', + 'All Global HTML', + 'Various HTML elements such as board header, redirect page, error page', ), - 'skin_help' => array( - 'skin_help (Помощь)', - 'Элементы раздела «Помощь».', + 'skin_help' => array( + 'Help', + 'Elements for the help screen, including search boxes and view help files', 'act=help' ), 'skin_legends' => array( - 'skin_legends (Легенды форума)', - 'Элементы различных вспомогательных страниц типа страницы со всеми смайликами, описанием BB кодов форума и т.д.', + 'Board Legends', + 'Elements for the "view all emoticons" windows, and the "Find User"', 'act=legends' ), 'skin_login' => array( - 'skin_login (Вход в форум)', - 'Элементы авторизации пользователя для входа на форум.', + 'Log In', + 'Elements for the log in form', 'act=Login' ), 'skin_mlist' => array( - 'skin_mlist (Список пользователей)', - 'Все элементы списка всех пользователей форума.', + 'Member List', + 'Elements for the member list views', 'act=Members' ), 'skin_mod' => array( - 'skin_mod (Функции модератора)', - 'Элементы для работы модераторов, такие как удаление тему, редактирование тему и т.д.', + 'Moderator Function', + 'Elements for the moderator tools such as delete topic, edit topic and the moderator CP', ), 'skin_msg' => array( - 'skin_msg (Личные сообщения)', - 'Элементы личных сообщений, такие как входящие сообщения, написание новых личных сообщений, архивирование и т.д.', + 'Messenger', + 'Elements for the messenger, such as view inbox, view message, archive messages, etc', 'act=Msg', ), 'skin_online' => array ( - 'skin_online (Список активных пользователей)', - 'Все элементы отображения раздела активных пользователей.', + 'Online List', + 'Elements for the "Show all online users" link', 'act=Online', ), 'skin_poll' => array ( - 'skin_poll (Просмотр опросов)', - 'Элементы просмотра опросов, включая результаты опроса и т.д.', + 'View Poll', + 'Elements for the poll view, includes vote form and vote results', ), 'skin_post' => array( - 'skin_post (Публикация сообщений)', - 'Элементы публикации сообщений, открытие темы и т.д.', + 'Post Screen', + 'Elements for the post screens such as new topic, reply to topic, quote post, edit post, some messenger new PM sections, some calender new event', ), 'skin_printpage'=> array( - 'skin_printpage (Версия темы для печати)', - 'Все элементы версии темы для печати.', + 'Printable Topic', + 'Elements for displaying the "printable topic" page', ), 'skin_profile' => array( - 'skin_profile (Просмотр профиля)', - 'Элементы просмотра профиля пользователей, данные, фотография и т.д.', + 'Profile View', + 'Elements for viewing a members profile', 'showuser=1', ), 'skin_register' => array( - 'skin_register (Регистрация)', - 'Элементы страниц регистрации, активации учетной записи и т.д.', + 'Register', + 'Elements for the register form, validate account form and COPPA forms', 'act=Reg', ), 'skin_search' => array( - 'skin_search (Поиск)', - 'Элементы формы поиска и результатыпоиска...', + 'Search', + 'Elements for the search forum and the results view', 'act=Search', ), 'skin_stats' => array( - 'skin_stats (Статистика)', - 'Элементы различных функций, таких как вывод администраторов и модераторов форума, активных тем и т.д.', + 'Statistics', + 'Elements for various functions such as "View Moderating Team", "View todays top 10 posts", "View Active Topics"', 'act=Stats', ), 'skin_topic' => array( - 'skin_topic (Просмотр темы)', - 'Элементы просмотра темы, такие как просмотр сообщений, прикрепленные файлы, форма быстрого ответа и т.д.', + 'Topic View', + 'Elements for the topic view screen, such as post view, inline attachment view, etc.', 'showtopic=1' ), - + 'skin_modcp' => array( - 'skin_modcp (Панель управления для модератора)', - 'Элементы секций панели управления для модератора.', + 'Mod CP', + 'Elements for the moderators control panel sections.', 'act=ModCP', ), - + 'skin_portal' => array( - 'skin_portal (Портал)', - 'Все элементы портала для IPB.', + 'IPB Portal', + 'Elements for IPB Portal.', ), - - + + 'skin_ucp' => array( - 'skin_ucp (Личные данные пользователя)', - 'Элементы личных данных пользователя, такие как редактирование профиля, настроек форума, подпись, аватар и т.д.', + 'User Control Panel', + 'Elements for the user control panel, such as the menu (also used in Messenger Views), edit profile, edit signature, edit avatar, etc.', 'act=UserCP', ), - - + + 'skin_subscriptions' => array( - 'skin_subscriptions (Менеджер подписок)', - 'Элементы менеджера подписок.', + 'Subscriptions Manager', + 'Elements for the subscription manager.', ) ); @@ -191,4 +204,4 @@ $skin_names = array( $bit_names = array(); -?> +?> \ No newline at end of file diff --git a/upload/sources/lib/tar.php b/upload/sources/lib/tar.php index f3091465..6b2fab41 100644 --- a/upload/sources/lib/tar.php +++ b/upload/sources/lib/tar.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-01 16:45:12 +0000 (Thu, 01 Dec 2005) $ -| > $Revision: 88 $ -| > $Author: bfarber $ +| > $Date: 2006-10-03 12:14:55 +0100 (Tue, 03 Oct 2006) $ +| > $Revision: 596 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > Tar creation and extraction module @@ -66,6 +56,11 @@ *************************************************************/ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} class tar { @@ -91,17 +86,17 @@ class tar { // CONSTRUCTOR: Attempt to guess the current working dir. //----------------------------------------- - function tar_init() { - + function tar_init() + { $this->ipsclass->load_language('lang_tar'); - if ($this_dir = getcwd()) + if ( $this_dir == getcwd() ) { $this->current_dir = $this_dir; } - else if (isset($_SERVER['DOCUMENT_ROOT'])) + else if ( $this->ipsclass->my_getenv( 'DOCUMENT_ROOT' ) ) { - $this->current_dir = $_SERVER['DOCUMENT_ROOT']; + $this->current_dir = $this->ipsclass->my_getenv( 'DOCUMENT_ROOT' ); } else { @@ -316,13 +311,19 @@ class tar { return; } - foreach ($in_files as $k => $file) { - + foreach ($in_files as $file) + { + //----------------------------------------- + // Stop any potential file traversal issues + //----------------------------------------- + + $file['name'] = str_replace( '..', '', $file['name'] ); + //----------------------------------------- // Are we choosing which files to extract? //----------------------------------------- - if (is_array($files)) + if ( is_array($files) ) { if (! in_array($file['name'], $files) ) { @@ -341,7 +342,8 @@ class tar { { $path_info = explode( "/" , $file['name'] ); $file_name = array_pop($path_info); - } else + } + else { $path_info = array(); $file_name = $file['name']; diff --git a/upload/sources/loginauth/convert/auth.php b/upload/sources/loginauth/convert/auth.php index 96fad402..556cb2d2 100644 --- a/upload/sources/loginauth/convert/auth.php +++ b/upload/sources/loginauth/convert/auth.php @@ -1,311 +1,378 @@ - LOG IN MODULE: Converted Board Modules -| > Script written by Stewart Campbell -| > Date started: October 15th 2005 -| -+--------------------------------------------------------------------------- -| NOTES: -| This module is part of the authentication suite of modules. It's designed -| to enable different types of authentication. -| -| RETURN CODES -| 'ERROR': Error, check array: $class->auth_errors -| 'NO_USER': No user found in LOCAL record set but auth passed in REMOTE dir -| 'WRONG_AUTH': Wrong password or username -| 'SUCCESS': Success, user and password matched -| -+--------------------------------------------------------------------------- -| EXAMPLE USAGE -| -| $class = new login_method(); -| $class->is_admin_auth = 0; // Boolean (0,1) Use different queries if desired -| // if logging into CP. -| $class->allow_create = 0; -| // $allow_create. Boolean flag (0,1) to tell the module whether its allowed -| // to create a member in the IPS product's database if the user passed authentication -| // but don't exist in the IPS product's database. Optional. -| -| $return_code = $class->authenticate( $username, $plain_text_password ); -| -| if ( $return_code == 'SUCCESS' ) -| { -| print $class->member['member_name']; -| } -| else -| { -| print "NO USER"; -| } -+--------------------------------------------------------------------------- -*/ - -class login_method extends login_core -{ - # Globals - var $member; - - /*-------------------------------------------------------------------------*/ - // Constructor - /*-------------------------------------------------------------------------*/ - - function login_method() - { - } - - /*-------------------------------------------------------------------------*/ - // Authentication - /*-------------------------------------------------------------------------*/ - - function authenticate( $username, $password ) - { - global $ipsclass; - - $this->_load_member( $username ); - - if($ipsclass->vars['conv_configured'] != 1) - { - $this->return_code = "WRONG_AUTH"; - return; - } - - switch($ipsclass->vars['conv_chosen']) - { - case 'vb3': - case 'vb35': - $this->authenticate_vb3( $username, $password ); - break; - case 'ib31': - $this->authenticate_ib31( $username, $password ); - break; - case 'smf11': - $this->authenticate_smf11( $username, $password ); - break; - case 'smf10': - case 'yabbse': - $this->authenticate_smf( $username, $password ); - break; - case 'ubbt5': - $this->authenticate_ubbthreads5( $username, $password ); - break; - default: - $this->return_code = "WRONG_AUTH"; - return; - } - return; - } - - /*-------------------------------------------------------------------------*/ - // Authentication for vB3 - /*-------------------------------------------------------------------------*/ - - function authenticate_vb3( $username, $password ) - { - global $ipsclass; - - if ( $this->member['misc']) - { - - $single_md5_pass = md5( $password ); - - $decr = md5( $single_md5_pass . $this->member['misc'] ); - - if ( $decr == $this->member['legacy_password'] ) - { - $this->_clean_convert_data( $single_md5_pass ); - - $this->return_code = 'SUCCESS'; - return; - } - - } - $this->return_code = 'WRONG_AUTH'; - } - - - /*-------------------------------------------------------------------------*/ - // Authentication for iB3.1 - /*-------------------------------------------------------------------------*/ - - function authenticate_ib31( $username, $password ) - { - $decr = md5( $password . $username ); - $single_md5_pass = md5( $password ); - - if ( $decr == $this->member['legacy_password'] ) - { - $this->_clean_convert_data( $single_md5_pass ); - - $this->return_code = "SUCCESS"; - return; - } - - $this->return_code = "WRONG_AUTH"; - } - - /*-------------------------------------------------------------------------*/ - // Authentication for SMF 1.1 - /*-------------------------------------------------------------------------*/ - - function authenticate_smf11( $username, $password ) - { - if($this->member['misc']) - { - $username_low = strtolower($username); - - $sha1_password = sha1($username_low . $password); - - $success = false; - - if($sha1_password == $this->member['legacy_password']) - { - $success = true; - } - else - { - $this->authenticate_smf( $username, $password ); - - if($this->return_code == "SUCCESS") - { - $success = true; - } - } - if( $success ) - { - $this->_clean_convert_data( $single_md5_pass ); - $this->return_code = "SUCCESS"; - return; - } - - $this->return_code = "WRONG_AUTH"; - return; - } - } - - - /*-------------------------------------------------------------------------*/ - // Authentication for SMF / YABB.SE - /*-------------------------------------------------------------------------*/ - - function authenticate_smf( $username, $password ) - { - if($this->member['misc']) - { - $single_md5_pass = md5( $password ); - - $success = false; - - if ( crypt( $password, substr( $password,0,2 ) ) == $this->member['legacy_password'] ) - { - $success = true; - } - else if ( strlen($this->member['legacy_password']) == 32 AND ( $this->_md5_hmac( $password, $username ) == $this->member['legacy_password'] ) ) - { - $success = true; - } - else if ( strlen($this->member['legacy_password']) == 32 AND ( $single_md5_pass == $this->member['legacy_password'] ) ) - { - $success = true; - } - - if( $success ) - { - $this->_clean_convert_data( $single_md5_pass ); - $this->return_code = "SUCCESS"; - return; - } - - } - $this->return_code = "WRONG_AUTH"; - return; - } - - //*-------------------------------------------------------------------------*/ - // Authentication for UBB.Threads 5 - //*-------------------------------------------------------------------------*/ - - function authenticate_ubbthreads5( $username, $password ) - { - $single_md5_pass = md5( $password ); - - $success = false; - - if(crypt($password, $this->member['legacy_password']) == $this->member['legacy_password']) - { - $success = true; - } - else if($single_md5_pass == $row['legacy_password']) - { - $success = true; - } - - if( $success ) - { - $this->_clean_convert_data( $single_md5_pass ); - $this->return_code = "SUCCESS"; - return; - } - - $this->return_code = "WRONG_AUTH"; - return; - } - - /*-------------------------------------------------------------------------*/ - // Utility Functions - /*-------------------------------------------------------------------------*/ - - /*-------------------------------------------------------------------------*/ - // Load member from DB - /*-------------------------------------------------------------------------*/ - - function _load_member( $username ) - { - $this->member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members', 'where' => "name='" . $username . "'" ) ); - } - - /*-------------------------------------------------------------------------*/ - // Clean-Up The Converted Data - /*-------------------------------------------------------------------------*/ - - function _clean_convert_data( $new_pass ) - { - global $ipsclass; - - $ipsclass->DB->query("UPDATE ibf_members SET legacy_password='',misc='0' WHERE id={$this->member['id']}"); - $ipsclass->converge->converge_update_password( $new_pass, $this->member['email'] ); - } - - function _md5_hmac($data, $key) - { - if (strlen($key) > 64) - $key = pack('H*', md5($key)); - $key = str_pad($key, 64, chr(0x00)); - - $k_ipad = $key ^ str_repeat(chr(0x36), 64); - $k_opad = $key ^ str_repeat(chr(0x5c), 64); - - return md5($k_opad . pack('H*', md5($k_ipad . $data))); - } -} - -?> \ No newline at end of file + LOG IN MODULE: Converted Board Modules +| > Script written by Stewart Campbell +| > Date started: October 15th 2005 +| ++--------------------------------------------------------------------------- +| NOTES: +| This module is part of the authentication suite of modules. It's designed +| to enable different types of authentication. +| +| RETURN CODES +| 'ERROR': Error, check array: $class->auth_errors +| 'NO_USER': No user found in LOCAL record set but auth passed in REMOTE dir +| 'WRONG_AUTH': Wrong password or username +| 'SUCCESS': Success, user and password matched +| ++--------------------------------------------------------------------------- +| EXAMPLE USAGE +| +| $class = new login_method(); +| $class->is_admin_auth = 0; // Boolean (0,1) Use different queries if desired +| // if logging into CP. +| $class->allow_create = 0; +| // $allow_create. Boolean flag (0,1) to tell the module whether its allowed +| // to create a member in the IPS product's database if the user passed authentication +| // but don't exist in the IPS product's database. Optional. +| +| $return_code = $class->authenticate( $username, $plain_text_password ); +| +| if ( $return_code == 'SUCCESS' ) +| { +| print $class->member['member_name']; +| } +| else +| { +| print "NO USER"; +| } ++--------------------------------------------------------------------------- +*/ + +class login_method extends login_core +{ + # Globals + var $member; + var $ipsclass; + + /*-------------------------------------------------------------------------*/ + // Constructor + /*-------------------------------------------------------------------------*/ + + function login_method() + { + } + + /*-------------------------------------------------------------------------*/ + // Authentication + /*-------------------------------------------------------------------------*/ + + function authenticate( $username, $password ) + { + $this->_load_member( $username ); + + if($this->ipsclass->vars['conv_configured'] != 1) + { + $this->return_code = "WRONG_AUTH"; + return; + } + + $login_handler_code = end(explode("_", $this->ipsclass->vars['conv_chosen'])); + + + switch($login_handler_code) + { + case 'vb3': + case 'vb35': + $this->authenticate_vb3( $username, $password ); + break; + case 'ib31': + $this->authenticate_ib31( $username, $password ); + break; + case 'smf11': + $this->authenticate_smf11( $username, $password ); + break; + case 'smf10': + case 'yabbse': + $this->authenticate_smf( $username, $password ); + break; + case 'ubbt5': + $this->authenticate_ubbthreads5( $username, $password ); + break; + case 'snitz': + $this->authenticate_snitz( $username, $password ); + break; + case 'punbb': + $this->authenticate_punbb( $username, $password ); + break; + default: + $this->return_code = "WRONG_AUTH"; + return; + } + return; + } + + /*-------------------------------------------------------------------------*/ + // Authentication for punBB + /*-------------------------------------------------------------------------*/ + + function authenticate_punbb( $username, $password ) + { + global $ipsclass; + + $success = false; + $single_md5_pass = md5( $password ); + + if (function_exists('sha1')) + { + if(sha1($password) == $this->member['conv_password']) + { + echo "memem"; + $success = true; + } + } + else if (function_exists('mhash')) + { + if(bin2hex(mhash(MHASH_SHA1, $str)) == $this->member['conv_password']) + { + $success = true; + } + } + else + { + if(md5($password) == $this->member['conv_password']) + { + $success = true; + } + } + + if( $success ) + { + $this->_clean_convert_data( $single_md5_pass ); + $this->return_code = "SUCCESS"; + return; + } + + $this->return_code = "WRONG_AUTH"; + return; + } + + /*-------------------------------------------------------------------------*/ + // Authentication for Snitz + /*-------------------------------------------------------------------------*/ + + function authenticate_snitz( $username, $password ) + { + require_once('./sources/loginauth/convert/auth_sha256.php'); + $sha = new auth_sha256(); + + if ( $this->member['misc']) + { + $sha256_password = $sha->SHA256( $password ); + $single_md5_pass = md5( $password ); + + if ( $sha256_password == $this->member['misc'] ) + { + $this->_clean_convert_data( $single_md5_pass ); + + $this->return_code = 'SUCCESS'; + return; + } + } + $this->return_code = 'WRONG_AUTH'; + } + + /*-------------------------------------------------------------------------*/ + // Authentication for vB3 + /*-------------------------------------------------------------------------*/ + + function authenticate_vb3( $username, $password ) + { + if ( $this->member['misc']) + { + + $single_md5_pass = md5( $password ); + + $decr = md5( $single_md5_pass . $this->member['misc'] ); + + if ( $decr == $this->member['legacy_password'] ) + { + $this->_clean_convert_data( $single_md5_pass ); + + $this->return_code = 'SUCCESS'; + return; + } + + } + $this->return_code = 'WRONG_AUTH'; + } + + + /*-------------------------------------------------------------------------*/ + // Authentication for iB3.1 + /*-------------------------------------------------------------------------*/ + + function authenticate_ib31( $username, $password ) + { + $decr = md5( $password . $username ); + $single_md5_pass = md5( $password ); + + if ( $decr == $this->member['legacy_password'] ) + { + $this->_clean_convert_data( $single_md5_pass ); + + $this->return_code = "SUCCESS"; + return; + } + + $this->return_code = "WRONG_AUTH"; + } + + /*-------------------------------------------------------------------------*/ + // Authentication for SMF 1.1 + /*-------------------------------------------------------------------------*/ + + function authenticate_smf11( $username, $password ) + { + $single_md5_pass = md5($password); + + if($this->member['misc']) + { + $username_low = strtolower($username); + + $sha1_password = sha1($username_low . $password); + + $success = false; + + if($sha1_password == $this->member['legacy_password']) + { + $success = true; + } + else + { + $this->authenticate_smf( $username, $password ); + + if($this->return_code == "SUCCESS") + { + $success = true; + } + } + if( $success ) + { + $this->_clean_convert_data( $single_md5_pass ); + $this->return_code = "SUCCESS"; + return; + } + + $this->return_code = "WRONG_AUTH"; + return; + } + } + + + /*-------------------------------------------------------------------------*/ + // Authentication for SMF / YABB.SE + /*-------------------------------------------------------------------------*/ + + function authenticate_smf( $username, $password ) + { + if($this->member['misc']) + { + $single_md5_pass = md5( $password ); + + $success = false; + + if ( crypt( $password, substr( $password,0,2 ) ) == $this->member['legacy_password'] ) + { + $success = true; + } + else if ( strlen($this->member['legacy_password']) == 32 AND ( $this->_md5_hmac( $password, $username ) == $this->member['legacy_password'] ) ) + { + $success = true; + } + else if ( strlen($this->member['legacy_password']) == 32 AND ( $single_md5_pass == $this->member['legacy_password'] ) ) + { + $success = true; + } + + if( $success ) + { + $this->_clean_convert_data( $single_md5_pass ); + $this->return_code = "SUCCESS"; + return; + } + + } + $this->return_code = "WRONG_AUTH"; + return; + } + + //*-------------------------------------------------------------------------*/ + // Authentication for UBB.Threads 5 + //*-------------------------------------------------------------------------*/ + + function authenticate_ubbthreads5( $username, $password ) + { + $single_md5_pass = md5( $password ); + + $success = false; + + if(crypt($password, $this->member['legacy_password']) == $this->member['legacy_password']) + { + $success = true; + } + else if($single_md5_pass == $row['legacy_password']) + { + $success = true; + } + + if( $success ) + { + $this->_clean_convert_data( $single_md5_pass ); + $this->return_code = "SUCCESS"; + return; + } + + $this->return_code = "WRONG_AUTH"; + return; + } + + /*-------------------------------------------------------------------------*/ + // Utility Functions + /*-------------------------------------------------------------------------*/ + + /*-------------------------------------------------------------------------*/ + // Load member from DB + /*-------------------------------------------------------------------------*/ + + function _load_member( $username ) + { + $this->member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members', 'where' => "name='" . $username . "'" ) ); + } + + /*-------------------------------------------------------------------------*/ + // Clean-Up The Converted Data + /*-------------------------------------------------------------------------*/ + + function _clean_convert_data( $new_pass ) + { + $this->ipsclass->DB->query("UPDATE ibf_members SET misc='' WHERE id={$this->member['id']}"); + $this->ipsclass->converge->converge_update_password( $new_pass, $this->member['email'] ); + } + + function _md5_hmac($data, $key) + { + if (strlen($key) > 64) + $key = pack('H*', md5($key)); + $key = str_pad($key, 64, chr(0x00)); + + $k_ipad = $key ^ str_repeat(chr(0x36), 64); + $k_opad = $key ^ str_repeat(chr(0x5c), 64); + + return md5($k_opad . pack('H*', md5($k_ipad . $data))); + } +} + +?> \ No newline at end of file diff --git a/upload/sources/loginauth/convert/auth.php.bak b/upload/sources/loginauth/convert/auth.php.bak new file mode 100644 index 00000000..697d5b1b --- /dev/null +++ b/upload/sources/loginauth/convert/auth.php.bak @@ -0,0 +1,259 @@ + +| ======================================== +| by Matthew Mecham +| (c) 2004 Invision Power Services +| http://www.invisionpower.com +| ======================================== ++--------------------------------------------------------------------------- +| INVISION POWER DYNAMIC IS NOT FREE SOFTWARE! +| http://www.invisionpower.com/dynamic/ ++--------------------------------------------------------------------------- +| +| > LOG IN MODULE: Converted Board Modules +| > Script written by Stewart Campbell +| > Date started: October 15th 2005 +| ++--------------------------------------------------------------------------- +| NOTES: +| This module is part of the authentication suite of modules. It's designed +| to enable different types of authentication. +| +| RETURN CODES +| 'ERROR': Error, check array: $class->auth_errors +| 'NO_USER': No user found in LOCAL record set but auth passed in REMOTE dir +| 'WRONG_AUTH': Wrong password or username +| 'SUCCESS': Success, user and password matched +| ++--------------------------------------------------------------------------- +| EXAMPLE USAGE +| +| $class = new login_method(); +| $class->is_admin_auth = 0; // Boolean (0,1) Use different queries if desired +| // if logging into CP. +| $class->allow_create = 0; +| // $allow_create. Boolean flag (0,1) to tell the module whether its allowed +| // to create a member in the IPS product's database if the user passed authentication +| // but don't exist in the IPS product's database. Optional. +| +| $return_code = $class->authenticate( $username, $plain_text_password ); +| +| if ( $return_code == 'SUCCESS' ) +| { +| print $class->member['member_name']; +| } +| else +| { +| print "NO USER"; +| } ++--------------------------------------------------------------------------- +*/ + +class login_method extends login_core +{ + # Globals + var $member; + + /*-------------------------------------------------------------------------*/ + // Constructor + /*-------------------------------------------------------------------------*/ + + function login_method() + { + } + + /*-------------------------------------------------------------------------*/ + // Authentication + /*-------------------------------------------------------------------------*/ + + function authenticate( $username, $password ) + { + global $ipsclass; + + $this->_load_member( $username ); + + if($ipsclass->vars['conv_configured'] != 1) + { + $this->return_code = "WRONG_AUTH"; + return; + } + + switch($ipsclass->vars['conv_chosen']) + { + case 'vb3': + case 'vb35': + $this->authenticate_vb3( $username, $password ); + break; + case 'ib31': + $this->authenticate_ib31( $username, $password ); + break; + case 'smf10': + case 'yabbse': + $this->authenticate_smf( $username, $password ); + break; + case 'ubbt5': + $this->authenticate_ubbthreads5( $username, $password ); + break; + default: + $this->return_code = "WRONG_AUTH"; + return; + } + return; + } + + /*-------------------------------------------------------------------------*/ + // Authentication for vB3 + /*-------------------------------------------------------------------------*/ + + function authenticate_vb3( $username, $password ) + { + global $ipsclass; + + if ( $this->member['misc']) + { + + $single_md5_pass = md5( $password ); + + $decr = md5( $single_md5_pass . $this->member['misc'] ); + + if ( $decr == $this->member['legacy_password'] ) + { + $this->_clean_convert_data( $single_md5_pass ); + + $this->return_code = 'SUCCESS'; + return; + } + + } + $this->return_code = 'WRONG_AUTH'; + } + + + /*-------------------------------------------------------------------------*/ + // Authentication for iB3.1 + /*-------------------------------------------------------------------------*/ + + function authenticate_ib31( $username, $password ) + { + $decr = md5( $password . $username ); + $single_md5_pass = md5( $password ); + + if ( $decr == $this->member['legacy_password'] ) + { + $this->_clean_convert_data( $single_md5_pass ); + + $this->return_code = "SUCCESS"; + return; + } + + $this->return_code = "WRONG_AUTH"; + } + + /*-------------------------------------------------------------------------*/ + // Authentication for SMF / YABB.SE + /*-------------------------------------------------------------------------*/ + + function authenticate_smf( $username, $password ) + { + if($this->member['misc']) + { + $single_md5_pass = md5( $password ); + + $success = false; + + if ( crypt( $password, substr( $password,0,2 ) ) == $this->member['legacy_password'] ) + { + $success = true; + } + else if ( strlen($this->member['legacy_password']) == 32 AND ( $this->_md5_hmac( $password, $username ) == $this->member['legacy_password'] ) ) + { + $success = true; + } + else if ( strlen($this->member['legacy_password']) == 32 AND ( $single_md5_pass == $this->member['legacy_password'] ) ) + { + $success = true; + } + + if( $success ) + { + $this->_clean_convert_data( $single_md5_pass ); + $this->return_code = "SUCCESS"; + return; + } + + } + $this->return_code = "WRONG_AUTH"; + return; + } + + //*-------------------------------------------------------------------------*/ + // Authentication for UBB.Threads 5 + //*-------------------------------------------------------------------------*/*/ + + function authenticate_ubbthreads5( $username, $password ) + { + $single_md5_pass = md5( $password ); + + $success = false; + + if(crypt($password, $this->member['legacy_password']) == $this->member['legacy_password']) + { + $success = true; + } + else if($single_md5_pass == $row['legacy_password']) + { + $success = true; + } + + if( $success ) + { + $this->_clean_convert_data( $single_md5_pass ); + $this->return_code = "SUCCESS"; + return; + } + + $this->return_code = "WRONG_AUTH"; + return; + } + + /*-------------------------------------------------------------------------*/ + // Utility Functions + /*-------------------------------------------------------------------------*/ + + /*-------------------------------------------------------------------------*/ + // Load member from DB + /*-------------------------------------------------------------------------*/ + + function _load_member( $username ) + { + $this->member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', 'from' => 'members', 'where' => "name='" . $username . "'" ) ); + } + + /*-------------------------------------------------------------------------*/ + // Clean-Up The Converted Data + /*-------------------------------------------------------------------------*/ + + function _clean_convert_data( $new_pass ) + { + global $ipsclass; + + $ipsclass->DB->query("UPDATE ibf_members SET legacy_password='',misc='0' WHERE id={$this->member['id']}"); + $ipsclass->converge->converge_update_password( $new_pass, $this->member['email'] ); + } + + function _md5_hmac($data, $key) + { + if (strlen($key) > 64) + $key = pack('H*', md5($key)); + $key = str_pad($key, 64, chr(0x00)); + + $k_ipad = $key ^ str_repeat(chr(0x36), 64); + $k_opad = $key ^ str_repeat(chr(0x5c), 64); + + return md5($k_opad . pack('H*', md5($k_ipad . $data))); + } +} + +?> \ No newline at end of file diff --git a/upload/sources/loginauth/convert/conf.php b/upload/sources/loginauth/convert/conf.php index 67c94a57..bcedce9b 100644 --- a/upload/sources/loginauth/convert/conf.php +++ b/upload/sources/loginauth/convert/conf.php @@ -1,2 +1,21 @@ LOG IN MODULE: Converted Board Modules +| > Script written by Stewart Campbell +| > Date started: October 15th 2005 +| ++--------------------------------------------------------------------------- +*/ ?> \ No newline at end of file diff --git a/upload/sources/loginauth/external/auth.php b/upload/sources/loginauth/external/auth.php index 3027c728..ad711d7e 100644 --- a/upload/sources/loginauth/external/auth.php +++ b/upload/sources/loginauth/external/auth.php @@ -1,24 +1,15 @@ LOG IN MODULE: EXTERNAL DB (IPB AUTH) @@ -43,6 +34,12 @@ // Off we go! /*-------------------------------------------------------------------------*/ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class login_method extends login_core { # Globals @@ -107,7 +104,15 @@ class login_method extends login_core // GET DB object //----------------------------------------- - $RDB = new db_driver(); + if ( ! class_exists( 'db_main' ) ) + { + require_once( KERNEL_PATH.'class_db.php' ); + require_once( KERNEL_PATH.'class_db_'.$this->ipsclass->vars['sql_driver'].".php" ); + } + + $classname = "db_driver_".$this->ipsclass->vars['sql_driver']; + + $RDB = new $classname; $RDB->obj['sql_database'] = REMOTE_DB_DATABASE; $RDB->obj['sql_user'] = REMOTE_DB_USER; diff --git a/upload/sources/loginauth/external/conf.php b/upload/sources/loginauth/external/conf.php index ec3761b7..727d7c81 100644 --- a/upload/sources/loginauth/external/conf.php +++ b/upload/sources/loginauth/external/conf.php @@ -1,4 +1,5 @@ -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/loginauth/index.html b/upload/sources/loginauth/index.html index 787531db..52a588b2 100644 --- a/upload/sources/loginauth/index.html +++ b/upload/sources/loginauth/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/loginauth/internal/auth.php b/upload/sources/loginauth/internal/auth.php index 45e3a6ed..001be61e 100644 --- a/upload/sources/loginauth/internal/auth.php +++ b/upload/sources/loginauth/internal/auth.php @@ -1,24 +1,15 @@ LOG IN MODULE: INTERNAL (IPB AUTH) @@ -60,6 +51,12 @@ +--------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class login_method extends login_core { # Globals diff --git a/upload/sources/loginauth/internal/index.html b/upload/sources/loginauth/internal/index.html index 787531db..52a588b2 100644 --- a/upload/sources/loginauth/internal/index.html +++ b/upload/sources/loginauth/internal/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/loginauth/ipconverge/auth.php b/upload/sources/loginauth/ipconverge/auth.php new file mode 100644 index 00000000..912d7910 --- /dev/null +++ b/upload/sources/loginauth/ipconverge/auth.php @@ -0,0 +1,189 @@ + LOG IN MODULE: INTERNAL (IPB AUTH) +| > Script written by Matt Mecham +| > Date started: 12:25 Fri. 4th February 2005 (AD) +| ++--------------------------------------------------------------------------- +| NOTES: +| This module is part of the authentication suite of modules. It's designed +| to enable different types of authentication. +| +| RETURN CODES +| 'ERROR': Error, check array: $class->auth_errors +| 'NO_USER': No user found in LOCAL record set but auth passed in REMOTE dir +| 'WRONG_AUTH': Wrong password or username +| 'SUCCESS': Success, user and password matched +| ++--------------------------------------------------------------------------- +| EXAMPLE USAGE +| +| $class = new login_method(); +| $class->is_admin_auth = 0; // Boolean (0,1) Use different queries if desired +| // if logging into CP. +| $class->allow_create = 0; +| // $allow_create. Boolean flag (0,1) to tell the module whether its allowed +| // to create a member in the IPS product's database if the user passed authentication +| // but don't exist in the IPS product's database. Optional. +| +| $return_code = $class->authenticate( $username, $plain_text_password ); +| +| if ( $return_code == 'SUCCESS' ) +| { +| print $class->member['member_name']; +| } +| else +| { +| print "NO USER"; +| } ++--------------------------------------------------------------------------- +*/ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +class login_method extends login_core +{ + # Globals + var $ipsclass; + + /** + * Make admin use different auth? + * @var int + */ + var $allow_admin_login = 1; + + /** + * Is admin log in ? + * @var int + */ + var $is_admin_auth = 0; + + var $api_server; + + + /*-------------------------------------------------------------------------*/ + // Constructor + /*-------------------------------------------------------------------------*/ + + function login_method() + { + + } + + /*-------------------------------------------------------------------------*/ + // Authentication + /*-------------------------------------------------------------------------*/ + + function authenticate( $username, $password ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $md5_once_pass = md5( $password ); + + //----------------------------------------- + // ADMIN log in? + //----------------------------------------- + + if ( $this->is_admin_auth AND ! $this->allow_admin_login ) + { + $this->auth_local( $username, $password ); + return; + } + else + { + //----------------------------------------- + // Get product ID and code from API + //----------------------------------------- + + $converge = $this->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'converge_local', + 'where' => 'converge_active=1' ) ); + + if ( ! $converge['converge_api_code'] ) + { + $this->return_code = 'WRONG_AUTH'; + return; + } + + //----------------------------------------- + // Auth against converge... + //----------------------------------------- + + if ( ! is_object( $this->api_server ) ) + { + require_once( KERNEL_PATH . 'class_api_server.php' ); + $this->api_server = new class_api_server(); + } + + $request = array( 'auth_key' => $converge['converge_api_code'], + 'product_id' => $converge['converge_product_id'], + 'email_address' => $username, + 'md5_once_password' => $md5_once_pass + ); + + $url = $converge['converge_url'] . '/converge_master/converge_server.php'; + + //----------------------------------------- + // Send request + //----------------------------------------- + + $this->api_server->auth_user = $converge['converge_http_user']; + $this->api_server->auth_pass = $converge['converge_http_pass']; + + $this->api_server->api_send_request( $url, 'converge_authenticate', $request ); + + //----------------------------------------- + // Handle errors... + //----------------------------------------- + + if ( count( $this->api_server->errors ) ) + { + $this->return_code = 'WRONG_AUTH'; + return; + } + + //----------------------------------------- + // Get member... + //----------------------------------------- + + $this->ipsclass->DB->build_query( array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => "email='".strtolower($username)."'", + 'add_join' => array( 0 => array( 'select' => 'g.*', + 'from' => array( 'groups' => 'g' ), + 'where' => 'm.mgroup=g.g_id', + 'type' => 'inner' + ) + ) + ) ); + + $this->ipsclass->DB->exec_query(); + + $this->member = $this->ipsclass->DB->fetch_row(); + + $this->return_code = $this->api_server->params['response']; + return; + } + } +} + +?> \ No newline at end of file diff --git a/upload/sources/loginauth/ipconverge/conf.php b/upload/sources/loginauth/ipconverge/conf.php new file mode 100644 index 00000000..4d4df95f --- /dev/null +++ b/upload/sources/loginauth/ipconverge/conf.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/upload/sources/loginauth/ipconverge/index.html b/upload/sources/loginauth/ipconverge/index.html new file mode 100644 index 00000000..52a588b2 --- /dev/null +++ b/upload/sources/loginauth/ipconverge/index.html @@ -0,0 +1 @@ + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/loginauth/ldap/auth.php b/upload/sources/loginauth/ldap/auth.php index 63e265b7..c65c2460 100644 --- a/upload/sources/loginauth/ldap/auth.php +++ b/upload/sources/loginauth/ldap/auth.php @@ -1,24 +1,15 @@ LOG IN MODULE: LDAP (ACTIVE DIRECTORY) @@ -60,6 +51,12 @@ +--------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class login_method extends login_core { # Work @@ -126,13 +123,30 @@ class login_method extends login_core $real_username = $username; } + //----------------------------------------- + // Add filter + // - Donated by iCCT - thx! + // concatenate the search for uid with the filter + // string if the string is not empty - logical AND + // as we are searching for uid match + //----------------------------------------- + + if ( $this->login_conf['ldap_filter'] ) + { + $filter = '(&(' . $this->login_conf['ldap_uid_field']. '=' . $real_username . ')(' . $this->login_conf['ldap_filter'] . '))'; + } + else + { + $filter = $this->login_conf['ldap_uid_field']. '=' . $real_username; + } + //----------------------------------------- // Throw search to bind //----------------------------------------- $search = @ldap_search( $this->connection_id, $this->login_conf['ldap_base_dn'], - $this->login_conf['ldap_uid_field']. '=' . $real_username, + $filter, array( $this->login_conf['ldap_uid_field'] ) ); //$result = ldap_get_entries($this->connection_id, $search); print "
    "; print_r( $result );	 
    @@ -153,7 +167,7 @@ class login_method extends login_core
     		// Got something?
     		//-----------------------------------------
     		
    -		if ( is_array( $this->fields ) AND count( $this->fields ) > 1)
    +		if ( is_array( $this->fields ) AND count( $this->fields ) > 0 )
     		{
     			if ( ! $this->login_conf['ldap_user_requires_pass'] )
     			{
    diff --git a/upload/sources/loginauth/ldap/conf.php b/upload/sources/loginauth/ldap/conf.php
    index 4a799ef7..852a42f2 100644
    --- a/upload/sources/loginauth/ldap/conf.php
    +++ b/upload/sources/loginauth/ldap/conf.php
    @@ -1,4 +1,5 @@
     
    -Ошибка < Русская версия Invision Power Board
    -
    -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/loginauth/login_core.php b/upload/sources/loginauth/login_core.php index d1b6a69e..12724cca 100644 --- a/upload/sources/loginauth/login_core.php +++ b/upload/sources/loginauth/login_core.php @@ -1,24 +1,15 @@ LOG IN MODULE: INTERNAL (IPB AUTH) @@ -31,6 +22,12 @@ +--------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class login_core { # Globals @@ -38,12 +35,14 @@ class login_core # Returns var $auth_errors = array(); - var $return_code = "WRONG_AUTH"; + var $return_code = ""; var $member = array(); # Input var $is_admin_auth = 0; + var $account_unlock = 0; + /*-------------------------------------------------------------------------*/ // Authorize against local DB: // $username: Log in username @@ -58,13 +57,16 @@ class login_core // NAME LOG IN //----------------------------------------- - if ( $this->ipsclass->vars['converge_login_method'] == 'username' ) + if ( $this->ipsclass->vars['ipbli_usertype'] == 'username' ) { - $this->ipsclass->DB->cache_add_query( 'login_getmember', array( 'username' => $username ) ); - $this->ipsclass->DB->cache_exec_query(); - - $this->member = $this->ipsclass->DB->fetch_row(); - + $this->member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'm.id, m.name, m.members_display_name, m.members_created_remote, m.email, m.mgroup, m.member_login_key, m.member_login_key_expire, m.ip_address, m.login_anonymous, m.failed_logins, m.failed_login_count, m.joined, m.mgroup_others, m.org_perm_id', + 'from' => array( 'members' => 'm' ), + 'where' => "m.members_l_username='". $username ."'", + 'add_join' => array( 0 => array( 'select' => 'g.*', + 'from' => array( 'groups' => 'g' ), + 'where' => 'g.g_id=m.mgroup', + 'type' => 'inner' ) )) ); + //----------------------------------------- // Got a username? //----------------------------------------- @@ -75,6 +77,70 @@ class login_core return; } + if ( $this->ipsclass->vars['ipb_bruteforce_attempts'] > 0 ) + { + $failed_attempts = explode( ",", $this->ipsclass->clean_perm_string( $this->member['failed_logins'] ) ); + $failed_count = 0; + $total_failed = 0; + $thisip_failed = 0; + + if( is_array($failed_attempts) AND count($failed_attempts) ) + { + foreach( $failed_attempts as $entry ) + { + if ( ! strpos( $entry, "-" ) ) + { + continue; + } + + list ( $timestamp, $ipaddress ) = explode( "-", $entry ); + + if ( ! $timestamp ) + { + continue; + } + + $total_failed++; + + if ( $ipaddress != $this->ipsclass->ip_address ) + { + continue; + } + + $thisip_failed++; + + if ( $this->ipsclass->vars['ipb_bruteforce_period'] AND + $timestamp < time() - ($this->ipsclass->vars['ipb_bruteforce_period']*60) ) + { + continue; + } + + $failed_count++; + } + + sort($failed_attempts); + $oldest_entry = array_shift( $failed_attempts ); + list($oldest,) = explode( "-", $oldest_entry ); + } + + if( $thisip_failed >= $this->ipsclass->vars['ipb_bruteforce_attempts'] ) + { + if( $this->ipsclass->vars['ipb_bruteforce_unlock'] ) + { + if( $failed_count >= $this->ipsclass->vars['ipb_bruteforce_attempts'] ) + { + $this->account_unlock = $oldest; + + $this->return_code = 'ACCOUNT_LOCKED'; + } + } + else + { + $this->return_code = 'ACCOUNT_LOCKED'; + } + } + } + $this->ipsclass->converge->converge_load_member( $this->member['email'] ); if ( ! $this->ipsclass->converge->member['converge_id'] ) @@ -96,10 +162,85 @@ class login_core if ( $this->ipsclass->converge->member['converge_id'] ) { - $this->member = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name, members_display_name, email, mgroup, member_login_key, ip_address, login_anonymous', - 'from' => 'members', - 'where' => "id=".$this->ipsclass->converge->member['converge_id'] - ) ); + $this->ipsclass->DB->build_query( array( + 'select' => 'm.*', + 'from' => array( 'members' => 'm' ), + 'where' => "email='".strtolower($username)."'", + 'add_join' => array( 0 => array( 'select' => 'g.*', + 'from' => array( 'groups' => 'g' ), + 'where' => 'g.g_id=m.mgroup', + 'type' => 'inner' + ) + ) + ) ); + + $this->ipsclass->DB->exec_query(); + + $this->member = $this->ipsclass->DB->fetch_row(); + + if( $this->ipsclass->vars['ipb_bruteforce_attempts'] > 0 ) + { + $failed_attempts = explode( ",", $this->ipsclass->clean_perm_string( $this->member['failed_logins'] ) ); + $failed_count = 0; + $total_failed = 0; + $thisip_failed = 0; + + if( is_array($failed_attempts) AND count($failed_attempts) ) + { + foreach( $failed_attempts as $entry ) + { + if( !strpos( $entry, "-" ) ) + { + continue; + } + + list($timestamp,$ipaddress) = explode( "-", $entry ); + + if( !$timestamp ) + { + continue; + } + + $total_failed++; + + if( $ipaddress != $this->ipsclass->ip_address ) + { + continue; + } + + $thisip_failed++; + + if( $this->ipsclass->vars['ipb_bruteforce_period'] AND + $timestamp < time() - ($this->ipsclass->vars['ipb_bruteforce_period']*60) ) + { + continue; + } + + $failed_count++; + } + + sort($failed_attempts); + $oldest_entry = array_shift( $failed_attempts ); + list($oldest,) = explode( "-", $oldest_entry ); + } + + if( $thisip_failed >= $this->ipsclass->vars['ipb_bruteforce_attempts'] ) + { + if( $this->ipsclass->vars['ipb_bruteforce_unlock'] ) + { + if( $failed_count >= $this->ipsclass->vars['ipb_bruteforce_attempts'] ) + { + $this->account_unlock = $oldest; + + $this->return_code = 'ACCOUNT_LOCKED'; + } + } + else + { + $this->return_code = 'ACCOUNT_LOCKED'; + } + } + } } else { @@ -114,9 +255,65 @@ class login_core if ( $this->ipsclass->converge->converge_authenticate_member( $password ) != TRUE ) { + if( $this->ipsclass->vars['ipb_bruteforce_attempts'] > 0 ) + { + $failed_logins = explode( ",", $this->member['failed_logins'] ); + $failed_logins[] = time().'-'.$this->ipsclass->ip_address; + + $failed_count = 0; + $total_failed = 0; + + foreach( $failed_logins as $entry ) + { + list($timestamp,$ipaddress) = explode( "-", $entry ); + + if( !$timestamp ) + { + continue; + } + + $total_failed++; + + if( $ipaddress != $this->ipsclass->ip_address ) + { + continue; + } + + if( $this->ipsclass->vars['ipb_bruteforce_period'] > 0 + AND $timestamp < time() - ($this->ipsclass->vars['ipb_bruteforce_period']*60) ) + { + continue; + } + + $failed_count++; + } + + $this->ipsclass->DB->do_update( "members", array( 'failed_logins' => implode( ",", $failed_logins ), + 'failed_login_count' => $total_failed ), "id=".$this->member['id'] ); + + if( $failed_count >= $this->ipsclass->vars['ipb_bruteforce_attempts'] ) + { + if( $this->ipsclass->vars['ipb_bruteforce_unlock'] ) + { + sort($failed_attempts); + $oldest_entry = array_shift( $failed_attempts ); + list($oldest,) = explode( "-", $oldest_entry ); + + $this->account_unlock = $oldest; + } + + $this->return_code = 'ACCOUNT_LOCKED'; + return; + } + } + $this->return_code = 'WRONG_AUTH'; return; } + else if( $this->return_code == 'ACCOUNT_LOCKED' ) + { + return; + } else { $this->return_code = 'SUCCESS'; @@ -130,16 +327,15 @@ class login_core // $password: Plain text password /*-------------------------------------------------------------------------*/ - function create_local_member( $username, $password ) + /** + * Creates local member + * @param string Username + * @param string MD5 once password + * @param string Email Address (optional) + * @return int Member ID + */ + function _create_local_member( $username, $md5_password, $email_address='', $joined='', $ip_address='' ) { - //----------------------------------------- - // INIT - //----------------------------------------- - - $username = trim( $username ); - $password = trim( $password ); - $md_5_password = md5( $password ); - //----------------------------------------- // Custom profile field stuff //----------------------------------------- @@ -156,8 +352,8 @@ class login_core //----------------------------------------- $mem_group = $this->ipsclass->vars['subsm_enforce'] ? $this->ipsclass->vars['subsm_nopkg_group'] : $this->ipsclass->vars['member_group']; - $timenow = time(); - $email_tmp = $username.'@'.$timenow; + $timenow = $joined ? $joined : time(); + $email_tmp = $email_address ? $email_address : $username.'@'.$timenow; //----------------------------------------- // Are we asking the member or admin to preview? @@ -165,13 +361,14 @@ class login_core $member = array( 'name' => $username, + 'members_l_username' => strtolower($username), 'members_created_remote' => 1, 'email' => $email_tmp, 'member_login_key' => $this->ipsclass->converge->generate_auto_log_in_key(), 'mgroup' => $mem_group, 'posts' => 0, 'joined' => $timenow, - 'ip_address' => $this->ipsclass->ip_address, + 'ip_address' => $ip_address ? $ip_address : $this->ipsclass->ip_address, 'view_sigs' => 1, 'email_pm' => 1, 'view_img' => 1, @@ -190,7 +387,7 @@ class login_core //----------------------------------------- $salt = $this->ipsclass->converge->generate_password_salt(5); - $passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, md5($password) ); + $passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, $md5_password ); $converge = array( 'converge_email' => $email_tmp, 'converge_joined' => $timenow, @@ -211,14 +408,16 @@ class login_core // Insert: MEMBERS //----------------------------------------- - $this->ipsclass->DB->force_data_type = array( 'name' => 'string' ); + $this->ipsclass->DB->force_data_type = array( 'name' => 'string', + 'members_display_name' => 'string' ); + $this->ipsclass->DB->do_insert( 'members', $member ); //----------------------------------------- // Insert: MEMBER EXTRA //----------------------------------------- - $this->ipsclass->DB->do_insert( 'member_extra', array( 'id' => $member_id, 'vdirs' => 'in:Входящие|sent:Отправленные' ) ); + $this->ipsclass->DB->do_insert( 'member_extra', array( 'id' => $member_id, 'vdirs' => 'in:Inbox|sent:Sent Items' ) ); //----------------------------------------- // Insert into the custom profile fields DB @@ -234,14 +433,48 @@ class login_core // Insert into partial ID table //----------------------------------------- - $this->ipsclass->DB->do_insert( 'members_partial', array( 'partial_member_id' => $member['id'], 'partial_date' => $timenow ) ); + $this->ipsclass->DB->do_insert( 'members_partial', array( 'partial_member_id' => $member['id'], + 'partial_date' => $timenow, + 'partial_email_ok' => $email_address ? 1 : 0 ) ); + + return array_merge( $member, array( 'timenow' => $timenow ) ); + } + + /*-------------------------------------------------------------------------*/ + // Create local member: + // $username: Log in username + // $password: Plain text password + /*-------------------------------------------------------------------------*/ + + function create_local_member( $username, $password, $email_address='' ) + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $username = trim( $username ); + $password = trim( $password ); + $md_5_password = md5( $password ); + + //----------------------------------------- + // Create + //----------------------------------------- + + $member = $this->_create_local_member( $username, $md_5_password, $email_address ); //----------------------------------------- // Now bounce onto "welcome page" // where we'll ask for details //----------------------------------------- - $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['partial_login'], 'act=reg&CODE=complete_login&mid='.$member['id'].'&key='.$timenow ); + if( $this->is_admin_auth ) + { + $this->ipsclass->admin->redirect( $this->ipsclass->vars['board_url'].'/index.php?act=reg&CODE=complete_login&mid='.$member['id'].'&key='.$member['timenow'], $this->ipsclass->lang['partial_login'] ); + } + else + { + $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['partial_login'], 'act=reg&CODE=complete_login&mid='.$member['id'].'&key='.$member['timenow'] ); + } } } diff --git a/upload/sources/portal_plugins/calendar-cfg.php b/upload/sources/portal_plugins/calendar-cfg.php index 31031bad..55293089 100644 --- a/upload/sources/portal_plugins/calendar-cfg.php +++ b/upload/sources/portal_plugins/calendar-cfg.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -46,13 +36,13 @@ $PORTAL_CONFIG = array(); * Main plug in title * */ -$PORTAL_CONFIG['pc_title'] = 'Invision Power Board: Календарь'; +$PORTAL_CONFIG['pc_title'] = 'Invision Power Board Calendar'; /** * Plug in mini description * */ -$PORTAL_CONFIG['pc_desc'] = "Отображает мини-календарь на текущий месяц"; +$PORTAL_CONFIG['pc_desc'] = "Displays a mini calendar for the current month"; /** * Keyword for settings. This is the keyword @@ -81,7 +71,7 @@ $PORTAL_CONFIG['pc_settings_keyword'] = ""; * * @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION ); */ -$PORTAL_CONFIG['pc_exportable_tags']['calendar_show_current_month'] = array( 'calendar_show_current_month', 'Показывать календарь на текущий месяц' ); +$PORTAL_CONFIG['pc_exportable_tags']['calendar_show_current_month'] = array( 'calendar_show_current_month', 'Shows a calendar for the current month' ); //$PORTAL_CONFIG['pc_exportable_tags']['__another_tag'] = array( '__another_function', '__another_Description' ); //$PORTAL_CONFIG['pc_exportable_tags']['__another_tag'] = array( '__another_function', '__another_Description' ); diff --git a/upload/sources/portal_plugins/calendar.php b/upload/sources/portal_plugins/calendar.php index 583ae123..a7d68703 100644 --- a/upload/sources/portal_plugins/calendar.php +++ b/upload/sources/portal_plugins/calendar.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -57,6 +47,13 @@ * @copyright Invision Power Services, Inc. * @version 2.1 */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class ppi_calendar { /** @@ -141,9 +138,9 @@ class ppi_calendar $this->ipsclass->lang['M_7'] , $this->ipsclass->lang['M_8'] , $this->ipsclass->lang['M_9'] , $this->ipsclass->lang['M_10'], $this->ipsclass->lang['M_11'], $this->ipsclass->lang['M_12'] ); - $calendar->day_words = array( $this->ipsclass->lang['D_1'], $this->ipsclass->lang['D_2'], + $calendar->day_words = array( $this->ipsclass->lang['D_0'], $this->ipsclass->lang['D_1'], $this->ipsclass->lang['D_2'], $this->ipsclass->lang['D_3'], $this->ipsclass->lang['D_4'], $this->ipsclass->lang['D_5'], - $this->ipsclass->lang['D_6'], $this->ipsclass->lang['D_0'] ); + $this->ipsclass->lang['D_6'] ); //----------------------------------------- // What now? diff --git a/upload/sources/portal_plugins/gallery-cfg.php b/upload/sources/portal_plugins/gallery-cfg.php index b62de68e..5a8fcdfb 100644 --- a/upload/sources/portal_plugins/gallery-cfg.php +++ b/upload/sources/portal_plugins/gallery-cfg.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-07 15:18:13 +0000 (Wed, 07 Dec 2005) $ -| > $Revision: 95 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > PORTAL PLUG IN MODULE: Gallery - CONFIG FILE @@ -52,7 +42,7 @@ $PORTAL_CONFIG['pc_title'] = 'Invision Power Gallery'; * Plug in mini description * */ -$PORTAL_CONFIG['pc_desc'] = "Отображает информацию из галереи"; +$PORTAL_CONFIG['pc_desc'] = "Shows Invision Power Gallery information on the portal"; /** * Keyword for settings. This is the keyword @@ -81,7 +71,7 @@ $PORTAL_CONFIG['pc_settings_keyword'] = ""; * * @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION ); */ -$PORTAL_CONFIG['pc_exportable_tags']['gallery_show_random_image'] = array( 'gallery_show_random_image', "Отображает случайное изображение из пользовательском галереи" ); +$PORTAL_CONFIG['pc_exportable_tags']['gallery_show_random_image'] = array( 'gallery_show_random_image', "Shows a random image from a member's gallery" ); //$PORTAL_CONFIG['pc_exportable_tags']['__another_tag'] = array( '__another_function', '__another_Description' ); //$PORTAL_CONFIG['pc_exportable_tags']['__another_tag'] = array( '__another_function', '__another_Description' ); diff --git a/upload/sources/portal_plugins/gallery.php b/upload/sources/portal_plugins/gallery.php index f0e7bf4f..7be9c600 100644 --- a/upload/sources/portal_plugins/gallery.php +++ b/upload/sources/portal_plugins/gallery.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-30 23:02:19 +0000 (Fri, 30 Dec 2005) $ -| > $Revision: 109 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > PORTAL PLUG IN MODULE: Gallery @@ -57,6 +47,13 @@ * @copyright Invision Power Services, Inc. * @version 2.1 */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class ppi_gallery { /** diff --git a/upload/sources/portal_plugins/index.html b/upload/sources/portal_plugins/index.html deleted file mode 100644 index 787531db..00000000 --- a/upload/sources/portal_plugins/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - diff --git a/upload/sources/portal_plugins/online_users-cfg.php b/upload/sources/portal_plugins/online_users-cfg.php index 77f7830b..4e2fa080 100644 --- a/upload/sources/portal_plugins/online_users-cfg.php +++ b/upload/sources/portal_plugins/online_users-cfg.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -46,13 +36,13 @@ $PORTAL_CONFIG = array(); * Main plug in title * */ -$PORTAL_CONFIG['pc_title'] = 'Invision Power Board: Активные пользователи'; +$PORTAL_CONFIG['pc_title'] = 'Invision Power Board Online Users'; /** * Plug in mini description * */ -$PORTAL_CONFIG['pc_desc'] = "Отображает текущих активных пользователей"; +$PORTAL_CONFIG['pc_desc'] = "Shows the current name and number of online users"; /** * Keyword for settings. This is the keyword @@ -81,7 +71,7 @@ $PORTAL_CONFIG['pc_settings_keyword'] = ""; * * @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION ); */ -$PORTAL_CONFIG['pc_exportable_tags']['online_users_show'] = array( 'online_users_show', 'Отображает текущих активных пользователей' ); +$PORTAL_CONFIG['pc_exportable_tags']['online_users_show'] = array( 'online_users_show', 'Shows the online users' ); ?> \ No newline at end of file diff --git a/upload/sources/portal_plugins/online_users.php b/upload/sources/portal_plugins/online_users.php index 1416ac78..9a8c836f 100644 --- a/upload/sources/portal_plugins/online_users.php +++ b/upload/sources/portal_plugins/online_users.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -57,6 +47,13 @@ * @copyright Invision Power Services, Inc. * @version 2.1 */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class ppi_online_users { /** @@ -98,34 +95,11 @@ class ppi_online_users { $this->sep_char = '<{ACTIVE_LIST_SEP}>'; - //----------------------------------------- - // Get the users from the DB - //----------------------------------------- - - $time = time() - ( ($this->ipsclass->vars['au_cutoff'] ? $this->ipsclass->vars['au_cutoff'] : 15) * 60 ); - - $this->ipsclass->DB->simple_construct( array( 'select' => 'id, member_id, member_name, login_type, running_time, member_group', - 'from' => 'sessions', - 'where' => "running_time > $time", - 'order' => "running_time DESC" - ) ); - - $this->ipsclass->DB->simple_exec(); - - //----------------------------------------- - // Cache all printed members - //----------------------------------------- - - if ($this->ipsclass->vars['au_cutoff'] == "") - { - $this->ipsclass->vars['au_cutoff'] = 15; - } - //----------------------------------------- // Get the users from the DB //----------------------------------------- - $cut_off = $this->ipsclass->vars['au_cutoff'] * 60; + $cut_off = ($this->ipsclass->vars['au_cutoff'] ? $this->ipsclass->vars['au_cutoff'] : 15) * 60; $time = time() - $cut_off; $qe = ""; $rows = array( 0 => array( 'login_type' => substr($this->ipsclass->member['login_anonymous'],0, 1), @@ -225,14 +199,13 @@ class ppi_online_users { $cached[ $result['member_id'] ] = 1; - $result['prefix'] = $this->ipsclass->cache['group_cache'][ $result['member_group'] ]['prefix']; - $result['suffix'] = $this->ipsclass->cache['group_cache'][ $result['member_group'] ]['suffix']; + $result['member_name'] = $this->ipsclass->make_name_formatted( $result['member_name'], $result['member_group'] ); if ($result['login_type']) { if ( ($this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group']) and ($this->ipsclass->vars['disable_admin_anon'] != 1) ) { - $active['NAMES'] .= "{$result['prefix']}{$result['member_name']}{$result['suffix']}*{$this->sep_char} \n"; + $active['NAMES'] .= "{$result['member_name']}*{$this->sep_char} \n"; $active['ANON']++; } else @@ -243,7 +216,7 @@ class ppi_online_users else { $active['MEMBERS']++; - $active['NAMES'] .= "{$result['prefix']}{$result['member_name']}{$result['suffix']}{$this->sep_char} \n"; + $active['NAMES'] .= "{$result['member_name']}{$this->sep_char} \n"; } } } diff --git a/upload/sources/portal_plugins/poll-cfg.php b/upload/sources/portal_plugins/poll-cfg.php index 54b2afc0..deefb950 100644 --- a/upload/sources/portal_plugins/poll-cfg.php +++ b/upload/sources/portal_plugins/poll-cfg.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -46,13 +36,13 @@ $PORTAL_CONFIG = array(); * Main plug in title * */ -$PORTAL_CONFIG['pc_title'] = 'Invision Power Board: Опрос'; +$PORTAL_CONFIG['pc_title'] = 'Invision Power Board Poll'; /** * Plug in mini description * */ -$PORTAL_CONFIG['pc_desc'] = "Отображает выбранный опрос"; +$PORTAL_CONFIG['pc_desc'] = "Shows the selected poll"; /** * Keyword for settings. This is the keyword @@ -81,7 +71,7 @@ $PORTAL_CONFIG['pc_settings_keyword'] = "portal_poll"; * * @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION ); */ -$PORTAL_CONFIG['pc_exportable_tags']['poll_show_poll'] = array( 'poll_show_poll', 'Отображает выбранный опрос' ); +$PORTAL_CONFIG['pc_exportable_tags']['poll_show_poll'] = array( 'poll_show_poll', 'Shows the request poll' ); ?> \ No newline at end of file diff --git a/upload/sources/portal_plugins/poll.php b/upload/sources/portal_plugins/poll.php index e74e410c..7473d97c 100644 --- a/upload/sources/portal_plugins/poll.php +++ b/upload/sources/portal_plugins/poll.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -57,6 +47,13 @@ * @copyright Invision Power Services, Inc. * @version 2.1 */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class ppi_poll { /** diff --git a/upload/sources/portal_plugins/recent_topics-cfg.php b/upload/sources/portal_plugins/recent_topics-cfg.php index dad0a22e..b8a057b8 100644 --- a/upload/sources/portal_plugins/recent_topics-cfg.php +++ b/upload/sources/portal_plugins/recent_topics-cfg.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -46,13 +36,13 @@ $PORTAL_CONFIG = array(); * Main plug in title * */ -$PORTAL_CONFIG['pc_title'] = 'Invision Power Board: Последние новости и обсуждения'; +$PORTAL_CONFIG['pc_title'] = 'Invision Power Board Recent Topics'; /** * Plug in mini description * */ -$PORTAL_CONFIG['pc_desc'] = "Отображает последние темы на форуме, а также темы-новости с первым сообщением из них"; +$PORTAL_CONFIG['pc_desc'] = "Shows IPB recent topics with topic's first post"; /** * Keyword for settings. This is the keyword @@ -81,7 +71,7 @@ $PORTAL_CONFIG['pc_settings_keyword'] = "portal_recent_topics"; * * @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION ); */ -$PORTAL_CONFIG['pc_exportable_tags']['recent_topics_last_x'] = array( 'recent_topics_last_x' , 'Отображает последние X тем из выбранных форумов' ); -$PORTAL_CONFIG['pc_exportable_tags']['recent_topics_discussions_last_x'] = array( 'recent_topics_discussions_last_x', 'Отображает X заголовков последних тем из всех форумов' ); +$PORTAL_CONFIG['pc_exportable_tags']['recent_topics_last_x'] = array( 'recent_topics_last_x' , 'Shows the last X topics with full post from the selected forums' ); +$PORTAL_CONFIG['pc_exportable_tags']['recent_topics_discussions_last_x'] = array( 'recent_topics_discussions_last_x', 'Shows the last X topic titles from ALL viewable forums' ); ?> \ No newline at end of file diff --git a/upload/sources/portal_plugins/recent_topics.php b/upload/sources/portal_plugins/recent_topics.php index fe2fc1ed..713f0aa3 100644 --- a/upload/sources/portal_plugins/recent_topics.php +++ b/upload/sources/portal_plugins/recent_topics.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-06 17:36:43 +0000 (Tue, 06 Dec 2005) $ -| > $Revision: 94 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > PORTAL PLUG IN MODULE: Recent topics @@ -59,6 +49,13 @@ * @copyright Invision Power Services, Inc. * @version 2.1 */ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + class ppi_recent_topics { /** @@ -105,6 +102,10 @@ class ppi_recent_topics { $qe = "forum_id IN(".implode(',', $this->portal_object['good_forum'] ).") AND "; } + else + { + return; + } $this->ipsclass->DB->simple_construct( array( 'select' => 'tid, title, posts, starter_id as member_id, starter_name as member_name, start_date as post_date, views', 'from' => 'topics', @@ -229,39 +230,7 @@ class ppi_recent_topics // Attachments? //----------------------------------------- - preg_match_all( "#\[attachmentid=(\d+)\]#is", $entry['post'], $match ); - - if ( is_array($match[0]) and count($match[0]) ) - { - for ( $i = 0 ; $i < count($match[0]) ; $i++ ) - { - if ( $match[1][$i] ) - { - $attach_pids[ $match[1][$i] ] = $match[1][$i]; - } - } - - $got_these_attach = 1; - } - - if( $entry['topic_hasattach'] > 0 && $got_these_attach == 0 ) - { - $this->ipsclass->DB->build_query( array( 'select' => 'attach_id', 'from' => 'attachments', 'where' => "attach_pid={$entry['topic_firstpost']}" ) ); - $this->ipsclass->DB->exec_query(); - - $these_attach = array(); - - while( $att = $this->ipsclass->DB->fetch_row() ) - { - $attach_pids[$att['attach_id']] = $att['attach_id']; - $these_attach[] = $att['attach_id']; - } - - foreach($these_attach as $k => $v ) - { - $entry['post'] .= "
    \n[attachmentid={$v}]"; - } - } + $attach_pids[ $entry['pid'] ] = $entry['pid']; //----------------------------------------- // Format posts @@ -293,12 +262,26 @@ class ppi_recent_topics if ( count( $attach_pids ) ) { - require_once( ROOT_PATH.'sources/action_public/topics.php' ); - $this->topic = new topics(); - $this->topic->ipsclass =& $this->ipsclass; - $this->topic->topic_init(); - - $html = $this->topic->parse_attachments( $html, $attach_pids , 'attach_id' ); + if ( ! is_object( $this->class_attach ) ) + { + //----------------------------------------- + // Grab render attach class + //----------------------------------------- + + require_once( ROOT_PATH . 'sources/classes/attach/class_attach.php' ); + $this->class_attach = new class_attach(); + $this->class_attach->ipsclass =& $this->ipsclass; + $this->class_attach->attach_post_key = ''; + + $this->ipsclass->load_template( 'skin_topic' ); + $this->ipsclass->load_language( 'lang_topic' ); + } + + $this->class_attach->attach_post_key = ''; + $this->class_attach->type = 'post'; + $this->class_attach->init(); + + $html = $this->class_attach->render_attachments( $html, $attach_pids ); } return $this->ipsclass->compiled_templates['skin_portal']->tmpl_articles($html); diff --git a/upload/sources/sql/index.html b/upload/sources/sql/index.html index 787531db..52a588b2 100644 --- a/upload/sources/sql/index.html +++ b/upload/sources/sql/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/sql/mysql_admin_queries.php b/upload/sources/sql/mysql_admin_queries.php index f720ecf6..b828349b 100644 --- a/upload/sources/sql/mysql_admin_queries.php +++ b/upload/sources/sql/mysql_admin_queries.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-02-01 18:16:26 +0000 (Wed, 01 Feb 2006) $ -| > $Revision: 132 $ -| > $Author: bfarber $ +| > $Date: 2006-10-03 12:14:55 +0100 (Tue, 03 Oct 2006) $ +| > $Revision: 596 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > MySQL ADMIN DB Queries abstraction module @@ -34,9 +24,13 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} - -class sql_queries extends db_driver +class sql_queries extends db_driver_mysql { var $db = ""; @@ -60,49 +54,85 @@ class sql_queries extends db_driver /*========================================================================*/ + # 2.2 - Allow admin to specify display name + function general_get_by_display_name( $a ) + { + return "SELECT id, members_display_name, name, email, mgroup, member_login_key, ip_address, login_anonymous + FROM ".SQL_PREFIX."members + WHERE members_l_display_name='{$a['members_l_display_name']}'"; + } + + function calendar_get_events_cache( $a ) + { + return "SELECT * + FROM ".SQL_PREFIX."cal_events WHERE {$a['extra']} event_approved=1 + AND ( (event_unix_to >= {$a['timenow']} AND event_unix_from <= {$a['timethen']} ) + OR ( event_unix_to=0 AND event_unix_from >= {$a['timenow']} AND event_unix_from <= {$a['timethen']} ) + OR ( event_recurring=3 AND FROM_UNIXTIME(event_unix_from,'%c')={$a['month']} AND event_unix_to <= {$a['timethen']} ) )"; + } + # IPB 2.1 BETA 2: NEW NEW NEW! function acpperms_get_main_groups( $a ) { - return "SELECT perm_key, perm_main, perm_child FROM ".SQL_PREFIX."admin_permission_keys WHERE perm_main='{$a['perm_main']}' GROUP BY perm_child"; + return "SELECT perm_key, perm_main, perm_child + FROM ".SQL_PREFIX."admin_permission_keys + WHERE perm_main='{$a['perm_main']}' + GROUP BY perm_child"; } # IPB 2.1 BETA 2: NEW NEW NEW! function login_getmember_by_dname( $a ) { return "SELECT m.*, g.* - FROM ibf_members m, ibf_groups g - WHERE LOWER(members_display_name)='{$a['username']}' and m.mgroup=g.g_id"; + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE members_l_display_name='{$a['username']}'"; } function admin_emo_count( $a ) { - return "SELECT id, count(id) as count, emo_set FROM ".SQL_PREFIX."emoticons GROUP BY emo_set ORDER BY emo_set"; + return "SELECT id, count(id) as count, emo_set + FROM ".SQL_PREFIX."emoticons + GROUP BY emo_set + ORDER BY emo_set"; } function adminlogs_view_one( $a ) { - return "SELECT m.*, mem.id, mem.name, mem.members_display_name FROM ".SQL_PREFIX."admin_logs m, ".SQL_PREFIX."members mem - WHERE m.member_id={$a['mid']} AND m.member_id=mem.id ORDER BY m.ctime DESC LIMIT {$a['limit_a']}, 20"; + return "SELECT m.*, mem.id, mem.name, mem.members_display_name + FROM ".SQL_PREFIX."admin_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=m.member_id) + WHERE m.member_id={$a['mid']} + ORDER BY m.ctime DESC + LIMIT {$a['limit_a']}, 20"; } function adminlogs_view_two( $a ) { - return "SELECT m.*, mem.id, mem.name, mem.members_display_name FROM ".SQL_PREFIX."admin_logs m, ".SQL_PREFIX."members mem - WHERE m.member_id=mem.id AND {$a['dbq']} ORDER BY m.ctime DESC LIMIT {$a['limit_a']}, 20"; + return "SELECT m.*, mem.id, mem.name, mem.members_display_name + FROM ".SQL_PREFIX."admin_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=m.member_id) + WHERE {$a['dbq']} + ORDER BY m.ctime DESC + LIMIT {$a['limit_a']}, 20"; } function adminlogs_view_list_current( $a ) { - return "SELECT m.*, mem.id, mem.members_display_name as name FROM ".SQL_PREFIX."admin_logs m, ".SQL_PREFIX."members mem - WHERE m.member_id=mem.id ORDER BY m.ctime DESC LIMIT 0, 5"; + return "SELECT m.*, mem.id, mem.members_display_name as name + FROM ".SQL_PREFIX."admin_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=m.member_id) + ORDER BY m.ctime DESC + LIMIT 0, 5"; } function adminlogs_view_list_current_two( $a ) { return "SELECT m.*, mem.members_display_name as name, count(m.id) as act_count - FROM ".SQL_PREFIX."admin_logs m, ".SQL_PREFIX."members mem - WHERE m.member_id=mem.id - GROUP BY m.member_id ORDER BY act_count DESC"; + FROM ".SQL_PREFIX."admin_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=m.member_id) + GROUP BY m.member_id + ORDER BY act_count DESC"; } @@ -110,31 +140,37 @@ class sql_queries extends db_driver function attachments_bulk_remove( $a ) { return "SELECT a.*, p.pid, p.topic_id - FROM ".SQL_PREFIX."attachments a - LEFT JOIN ".SQL_PREFIX."posts p ON (p.pid=a.attach_pid) - WHERE a.attach_pid > 0 AND a.attach_id IN(".implode(",",$a['ids']).")"; + FROM ".SQL_PREFIX."attachments a + LEFT JOIN ".SQL_PREFIX."posts p ON (p.pid=a.attach_rel_id AND attach_rel_module='post') + WHERE a.attach_rel_id > 0 AND a.attach_id IN(".implode(",",$a['ids']).")"; } function emaillogs_view_email( $a ) { - return "SELECT email.*, m.id, m.members_display_name as name, mem.id as to_id, mem.members_display_name as to_name FROM ".SQL_PREFIX."email_logs email - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=email.from_member_id) - LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=email.to_member_id) - WHERE email.email_id={$a['id']}"; + return "SELECT email.*, m.id, m.members_display_name as name, mem.id as to_id, mem.members_display_name as to_name + FROM ".SQL_PREFIX."email_logs email + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=email.from_member_id) + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=email.to_member_id) + WHERE email.email_id={$a['id']}"; } function emaillogs_list_current( $a ) { - return "SELECT email.*, m.id, m.members_display_name as name, mem.id as to_id, mem.members_display_name as to_name FROM ".SQL_PREFIX."email_logs email - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=email.from_member_id) - LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=email.to_member_id) {$a['dbe']} - ORDER BY email_date DESC LIMIT {$a['limit_a']},25"; + return "SELECT email.*, m.id, m.members_display_name as name, mem.id as to_id, mem.members_display_name as to_name + FROM ".SQL_PREFIX."email_logs email + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=email.from_member_id) + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=email.to_member_id) {$a['dbe']} + ORDER BY email_date DESC + LIMIT {$a['limit_a']},25"; } function groups_permsplash( $a ) { - return "SELECT COUNT(id) as count, org_perm_id FROM ".SQL_PREFIX."members WHERE (org_perm_id IS NOT NULL AND org_perm_id != '') GROUP by org_perm_id"; + return "SELECT COUNT(id) as count, org_perm_id + FROM ".SQL_PREFIX."members + WHERE (org_perm_id IS NOT NULL AND org_perm_id != '') + GROUP by org_perm_id"; } # Changed [ 2.1 ] Added OR m.mgroup_others LIKE CONCAT('%,',g.g_id,',%') @@ -142,175 +178,216 @@ class sql_queries extends db_driver { return "SELECT g.g_id, g.g_access_cp, g.g_is_supmod, g.g_title,g.prefix, g.suffix, COUNT(m.id) as count - FROM ".SQL_PREFIX."groups as g - LEFT JOIN ".SQL_PREFIX."members m ON (m.mgroup = g.g_id OR m.mgroup_others LIKE CONCAT('%,',g.g_id,',%')) - GROUP BY g.g_id ORDER BY g.g_title"; + FROM ".SQL_PREFIX."groups as g + LEFT JOIN ".SQL_PREFIX."members m ON (m.mgroup = g.g_id OR m.mgroup_others LIKE CONCAT('%,',g.g_id,',%')) + GROUP BY g.g_id + ORDER BY g.g_title"; } function index_admin_logs( $a ) { - return "SELECT m.*, mem.id, mem.name, mem.members_display_name FROM ".SQL_PREFIX."admin_logs m, ".SQL_PREFIX."members mem - WHERE m.member_id=mem.id ORDER BY m.ctime DESC LIMIT 0, 5"; + return "SELECT m.*, mem.id, mem.name, mem.members_display_name + FROM ".SQL_PREFIX."admin_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON (mem.id=m.member_id) + WHERE m.member_id=mem.id + ORDER BY m.ctime DESC + LIMIT 0, 5"; } function languages_list_current( $a ) { - return "select ".SQL_PREFIX."languages.*, count(".SQL_PREFIX."members.id) as mcount from ".SQL_PREFIX."languages - left join ".SQL_PREFIX."members on(".SQL_PREFIX."members.language=".SQL_PREFIX."languages.ldir) - where (".SQL_PREFIX."members.language is not null or ".SQL_PREFIX."members.language = 'en') - group by ".SQL_PREFIX."languages.ldir - order by ".SQL_PREFIX."languages.lname"; + return "SELECT l.*, COUNT(m.id) as mcount + FROM ".SQL_PREFIX."languages l + LEFT JOIN ".SQL_PREFIX."members m ON (m.language=l.ldir) + WHERE (m.language IS NOT NULL OR m.language = 'en') + GROUP BY l.ldir + ORDER BY l.lname"; } function member_tools_learn_ip_one( $a ) { return "SELECT m.id, m.members_display_name as name, m.email, m.posts, m.joined, p.pid, p.author_id, p.post_date, p.ip_address, p.topic_id - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."members m ON ( p.author_id=m.id) - WHERE p.ip_address{$a['query']} GROUP BY p.author_id ORDER BY p.post_date DESC LIMIT 250"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + WHERE p.ip_address{$a['query']} + GROUP BY p.author_id + ORDER BY p.post_date DESC + LIMIT 250"; } function member_tools_learn_ip_two( $a ) { return "SELECT m.id, m.members_display_name as name, m.email, m.posts, m.joined, p.vote_date, p.ip_address, p.tid - FROM ".SQL_PREFIX."voters p - LEFT JOIN ".SQL_PREFIX."members m ON ( p.member_id=m.id) - WHERE p.ip_address{$a['query']} GROUP BY p.member_id ORDER BY p.vote_date DESC LIMIT 250"; + FROM ".SQL_PREFIX."voters p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.member_id) + WHERE p.ip_address{$a['query']} + GROUP BY p.member_id + ORDER BY p.vote_date DESC + LIMIT 250"; } function member_tools_learn_ip_three( $a ) { return "SELECT m.id, m.members_display_name as name, m.email, m.posts, m.joined, p.email_date, p.from_ip_address - FROM ".SQL_PREFIX."email_logs p - LEFT JOIN ".SQL_PREFIX."members m ON ( p.from_member_id=m.id) - WHERE p.from_ip_address{$a['query']} GROUP BY p.from_member_id ORDER BY p.email_date DESC LIMIT 250"; + FROM ".SQL_PREFIX."email_logs p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.from_member_id) + WHERE p.from_ip_address{$a['query']} + GROUP BY p.from_member_id + ORDER BY p.email_date DESC + LIMIT 250"; } function member_tools_learn_ip_four( $a ) { return "SELECT m.id, m.members_display_name as name, m.email, m.posts, m.joined, p.entry_date, p.ip_address - FROM ".SQL_PREFIX."validating p - LEFT JOIN ".SQL_PREFIX."members m ON ( p.member_id=m.id) - WHERE p.ip_address{$a['query']} GROUP BY p.member_id ORDER BY p.entry_date DESC LIMIT 250"; + FROM ".SQL_PREFIX."validating p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.member_id) + WHERE p.ip_address{$a['query']} + GROUP BY p.member_id + ORDER BY p.entry_date DESC + LIMIT 250"; } function member_tools_show_ips( $a ) { return "SELECT count(ip_address) as ip, ip_address, pid, topic_id, post_date - FROM ".SQL_PREFIX."posts - WHERE author_id={$a['mid']} - GROUP BY ip_address - ORDER BY ip DESC LIMIT {$a['st']}, {$a['end']}"; + FROM ".SQL_PREFIX."posts + WHERE author_id={$a['mid']} + GROUP BY ip_address + ORDER BY ip DESC + LIMIT {$a['st']}, {$a['end']}"; } function member_domod( $a ) { - return "SELECT m.id, m.name, m.email, m.mgroup, v.* FROM ".SQL_PREFIX."validating v - LEFT JOIN ".SQL_PREFIX."members m ON (v.member_id=m.id) - WHERE m.id IN(".implode( ",",$a['ids'] ).")"; + return "SELECT m.id, m.name, m.members_display_name, m.email, m.mgroup, v.* + FROM ".SQL_PREFIX."validating v + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=v.member_id) + WHERE m.id IN(".implode( ",",$a['ids'] ).")"; } # Updated 2.1 (member_view_mod) [ Added: extra query bit AND m.members_display_name AND m.ip_address] function member_view_mod( $a ) { return "SELECT m.name, m.members_display_name, m.ip_address, m.id, m.email, m.posts, m.joined, v.* - FROM ".SQL_PREFIX."validating v - LEFT JOIN ".SQL_PREFIX."members m ON (v.member_id=m.id) - WHERE v.lost_pass=0 {$a['extra']} - ORDER BY {$a['col']} {$a['ord']} LIMIT {$a['st']},75"; + FROM ".SQL_PREFIX."validating v + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=v.member_id) + WHERE v.lost_pass=0 {$a['extra']} + ORDER BY {$a['col']} {$a['ord']} + LIMIT {$a['st']},75"; } function member_search_form_one( $a ) { - return "SELECT m.*, me.*, m.id as memid - FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) - {$a['rq']} ORDER BY m.members_display_name LIMIT {$a['st']},25"; + return "SELECT m.*, me.*, m.id as memid, pp.* + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp on (pp.pp_member_id=m.id) + {$a['rq']} + ORDER BY m.members_l_display_name + LIMIT {$a['st']},25"; } function member_search_form_two( $a ) { - return "SELECT m.*, me.*, m.id as memid - FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) - {$a['rq']}"; + return "SELECT m.*, me.*, m.id as memid, pp.* + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp on (pp.pp_member_id=m.id) + {$a['rq']}"; } function member_search_form_count( $a ) { return "SELECT COUNT(*) as count - FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) - {$a['rq']}"; + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) + {$a['rq']}"; } + # EDITED IPB 2.2: BETA 2 function member_search_do_edit_form( $a ) { - return "SELECT m.*, me.*, p.*, m.id as memid, g.g_access_cp FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) - LEFT JOIN ".SQL_PREFIX."pfields_content p on (p.member_id=m.id) - LEFT JOIN ".SQL_PREFIX."groups g on (g.g_id=m.mgroup) - WHERE m.id=".$a['mid']; + return "SELECT m.*, me.*, p.*, pp.*, m.id as memid, g.g_access_cp + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."pfields_content p on (p.member_id=m.id) + LEFT JOIN ".SQL_PREFIX."groups g on (g.g_id=m.mgroup) + LEFT JOIN ".SQL_PREFIX."profile_portal pp on (pp.pp_member_id=m.id) + WHERE m.id=".$a['mid']; } function modlogs_view_one( $a ) { - return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name FROM ".SQL_PREFIX."moderator_logs m - LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) - LEFT JOIN ".SQL_PREFIX."forums f ON(f.id=m.forum_id) - WHERE m.member_id={$a['mid']} ORDER BY m.ctime DESC LIMIT {$a['start']}, 20"; + return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name + FROM ".SQL_PREFIX."moderator_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) + LEFT JOIN ".SQL_PREFIX."forums f ON(f.id=m.forum_id) + WHERE m.member_id={$a['mid']} + ORDER BY m.ctime DESC + LIMIT {$a['start']}, 20"; } function modlogs_view_two( $a ) { - return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name FROM ".SQL_PREFIX."moderator_logs m - LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) - LEFT JOIN ".SQL_PREFIX."forums f ON(f.id=m.forum_id) - WHERE {$a['dbq']} ORDER BY m.ctime DESC LIMIT {$a['start']}, 20"; + return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name + FROM ".SQL_PREFIX."moderator_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) + LEFT JOIN ".SQL_PREFIX."forums f ON(f.id=m.forum_id) + WHERE {$a['dbq']} + ORDER BY m.ctime DESC + LIMIT {$a['start']}, 20"; } function modlogs_view_three( $a ) { - return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name FROM ".SQL_PREFIX."moderator_logs m - LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) - LEFT JOIN ".SQL_PREFIX."forums f ON(f.id=m.forum_id) - ORDER BY m.ctime DESC LIMIT {$a['start']}, 20"; + return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name + FROM ".SQL_PREFIX."moderator_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) + LEFT JOIN ".SQL_PREFIX."forums f ON(f.id=m.forum_id) + ORDER BY m.ctime DESC + LIMIT {$a['start']}, 20"; } function modlogs_list_current_last_five( $a ) { - return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name FROM ".SQL_PREFIX."moderator_logs m - LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) - LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=m.forum_id) - ORDER BY m.ctime DESC LIMIT 0, 5"; + return "SELECT mem.members_display_name, m.*, f.id as forum_id, f.name + FROM ".SQL_PREFIX."moderator_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) + LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=m.forum_id) + ORDER BY m.ctime DESC + LIMIT 0, 5"; } function modlogs_list_current_show_all( $a ) { return "SELECT mem.members_display_name, m.*, count(m.id) as act_count - FROM ".SQL_PREFIX."moderator_logs m - LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) - GROUP BY m.member_id - ORDER BY act_count DESC"; + FROM ".SQL_PREFIX."moderator_logs m + LEFT JOIN ".SQL_PREFIX."members mem ON(mem.id=m.member_id) + GROUP BY m.member_id + ORDER BY act_count DESC"; } function spiderlogs_list_current( $a ) { - return "SELECT count(*) as cnt, bot, max(entry_date) as entry_date, query_string FROM ".SQL_PREFIX."spider_logs GROUP BY bot ORDER BY entry_date DESC"; + return "SELECT count(*) as cnt, bot, max(entry_date) as entry_date, query_string + FROM ".SQL_PREFIX."spider_logs + GROUP BY bot + ORDER BY entry_date DESC"; } function statistics_show_views( $a ) { return "SELECT SUM(t.views) as result_count, t.forum_id, f.name as result_name - FROM ".SQL_PREFIX."topics t, ".SQL_PREFIX."forums f - WHERE t.start_date > '{$a['from_time']}' - AND t.start_date < '{$a['to_time']}' - AND t.forum_id=f.id - GROUP BY t.forum_id - ORDER BY result_count {$a['sortby']}"; + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=t.forum_id) + WHERE t.start_date > '{$a['from_time']}' + AND t.start_date < '{$a['to_time']}' + GROUP BY t.forum_id + ORDER BY result_count {$a['sortby']}"; } function statistics_result_screen( $a ) @@ -318,201 +395,223 @@ class sql_queries extends db_driver return "SELECT MAX({$a['sql_field']}) as result_maxdate, COUNT(*) as result_count, DATE_FORMAT(from_unixtime({$a['sql_field']}),'{$a['sql_date']}') AS result_time - FROM ".SQL_PREFIX."{$a['sql_table']} - WHERE {$a['sql_field']} > '{$a['from_time']}' - AND {$a['sql_field']} < '{$a['to_time']}' - GROUP BY result_time - ORDER BY {$a['sql_field']} {$a['sortby']}"; + FROM ".SQL_PREFIX."{$a['sql_table']} + WHERE {$a['sql_field']} > '{$a['from_time']}' + AND {$a['sql_field']} < '{$a['to_time']}' + GROUP BY result_time + ORDER BY {$a['sql_field']} {$a['sortby']}"; } function stylesets_list_sets_templates( $a ) { - return "SELECT set_id FROM ".SQL_PREFIX."skin_templates GROUP BY set_id"; + return "SELECT set_id + FROM ".SQL_PREFIX."skin_templates + GROUP BY set_id"; } function stylesets_list_sets_macros( $a ) { - return "SELECT macro_set FROM ".SQL_PREFIX."skin_macro GROUP BY macro_set"; + return "SELECT macro_set + FROM ".SQL_PREFIX."skin_macro + GROUP BY macro_set"; } function stylesheets_do_form_concat( $a ) { return "SELECT *, instr(',{$a['id']}{$a['parent']},1,', concat(',',set_skin_set_id,',') ) as theorder - FROM ".SQL_PREFIX."skin_sets - WHERE set_skin_set_id in ({$a['id']}{$a['parent']},1) - ORDER BY theorder"; + FROM ".SQL_PREFIX."skin_sets + WHERE set_skin_set_id in ({$a['id']}{$a['parent']},1) + ORDER BY theorder"; } function warnlogs_view_note( $a ) { return "SELECT l.*, m.id as a_id, m.members_display_name as a_name, p.id as p_id, p.members_display_name as p_name - FROM ".SQL_PREFIX."warn_logs l - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) - LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) - WHERE l.wlog_id={$a['id']}"; + FROM ".SQL_PREFIX."warn_logs l + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) + LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) + WHERE l.wlog_id={$a['id']}"; } function warnlogs_view( $a ) { return "SELECT l.*, m.id as a_id, m.members_display_name as a_name, p.id as p_id, p.members_display_name as p_name - FROM ".SQL_PREFIX."warn_logs l - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) - LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) - WHERE l.wlog_mid={$a['mid']} - ORDER BY l.wlog_date DESC LIMIT {$a['start']},30"; + FROM ".SQL_PREFIX."warn_logs l + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) + LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) + WHERE l.wlog_mid={$a['mid']} + ORDER BY l.wlog_date DESC + LIMIT {$a['start']},30"; } function warnlogs_view_two( $a ) { return "SELECT l.*, m.id as a_id, m.members_display_name as a_name, p.id as p_id, p.members_display_name as p_name - FROM ".SQL_PREFIX."warn_logs l - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) - LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) - WHERE {$a['dbq']} - ORDER BY l.wlog_date DESC LIMIT {$a['start']},30"; + FROM ".SQL_PREFIX."warn_logs l + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) + LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) + WHERE {$a['dbq']} + ORDER BY l.wlog_date DESC + LIMIT {$a['start']},30"; } function warnlogs_list_current( $a ) { return "SELECT l.*, m.id as a_id, m.members_display_name as a_name, p.id as p_id, p.members_display_name as p_name - FROM ".SQL_PREFIX."warn_logs l - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) - LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) - ORDER BY l.wlog_date DESC LIMIT 0,10"; + FROM ".SQL_PREFIX."warn_logs l + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) + LEFT JOIN ".SQL_PREFIX."members p ON (p.id=l.wlog_addedby) + ORDER BY l.wlog_date DESC + LIMIT 0,10"; } function warnlogs_list_current_two( $a ) { return "SELECT l.*, m.name, m.members_display_name, count(l.wlog_mid) as act_count - from ".SQL_PREFIX."warn_logs l, ".SQL_PREFIX."members m - WHERE m.id=l.wlog_mid - GROUP BY l.wlog_mid - ORDER BY act_count DESC"; + FROM ".SQL_PREFIX."warn_logs l + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=l.wlog_mid) + GROUP BY l.wlog_mid + ORDER BY act_count DESC"; } function cache_wrapper( $a ) { return "SELECT *, instr(',{$a['id']}{$a['parent_in']},{$a['root']},', concat(',',set_skin_set_id,',') ) as theorder - FROM ".SQL_PREFIX."skin_sets - WHERE set_wrapper != '' AND set_skin_set_id in ({$a['id']}{$a['parent_in']},{$a['root']}) - ORDER BY theorder - LIMIT 0,1"; + FROM ".SQL_PREFIX."skin_sets + WHERE set_wrapper != '' AND set_skin_set_id in ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY theorder + LIMIT 0,1"; } function cache_templates_titles( $a ) { return "SELECT group_name, set_id, suid, func_name, func_data, INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',set_id,',') ) as theorder - FROM ".SQL_PREFIX."skin_templates WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) ORDER BY group_name, theorder DESC"; + FROM ".SQL_PREFIX."skin_templates + WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY group_name, theorder DESC"; } function cache_templates_bits( $a ) { return "SELECT *, INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',set_id,',') ) as theorder - FROM ".SQL_PREFIX."skin_templates WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) AND group_name='{$a['group']}' ORDER BY func_name,theorder DESC"; + FROM ".SQL_PREFIX."skin_templates + WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) AND group_name='{$a['group']}' + ORDER BY func_name,theorder DESC"; } function cache_templates_all( $a ) { return "SELECT *, INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',set_id,',') ) as theorder - FROM ".SQL_PREFIX."skin_templates WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) ORDER BY group_name, func_name, theorder DESC"; + FROM ".SQL_PREFIX."skin_templates + WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY group_name, func_name, theorder DESC"; } function cache_templates_css( $a ) { return "SELECT *, instr(',{$a['id']}{$a['parent_in']},{$a['root']},', concat(',',set_skin_set_id,',') ) as theorder - FROM ".SQL_PREFIX."skin_sets - WHERE set_css != '' AND set_skin_set_id in ({$a['id']}{$a['parent_in']},{$a['root']}) - ORDER BY theorder - LIMIT 0,1"; + FROM ".SQL_PREFIX."skin_sets + WHERE set_css != '' AND set_skin_set_id in ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY theorder + LIMIT 0,1"; } function cache_templates_macros( $a ) { return "SELECT *, INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',macro_set,',') ) as theorder - FROM ".SQL_PREFIX."skin_macro - WHERE macro_set IN ({$a['id']}{$a['parent_in']},{$a['root']}) - ORDER BY macro_value ASC,theorder DESC"; + FROM ".SQL_PREFIX."skin_macro + WHERE macro_set IN ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY macro_value ASC,theorder DESC"; } function cache_empty_css( $a ) { - return "SELECT * FROM ".SQL_PREFIX."skin_sets WHERE set_css like '' AND set_skin_set_parent={$a['parent_id']}"; + return "SELECT * + FROM ".SQL_PREFIX."skin_sets + WHERE set_css like '' AND set_skin_set_parent={$a['parent_id']}"; } function cache_empty_wrapper( $a ) { - return "SELECT * FROM ".SQL_PREFIX."skin_sets WHERE set_wrapper like '' AND set_skin_set_parent={$a['parent_id']}"; + return "SELECT * + FROM ".SQL_PREFIX."skin_sets + WHERE set_wrapper like '' AND set_skin_set_parent={$a['parent_id']}"; } function mod_func_get_last_post( $a ) { return "SELECT p.post_date, p.topic_id, p.author_id, p.author_name, p.pid, t.forum_id - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (p.topic_id=t.tid) - WHERE topic_id={$a['tid']} and queued <> 1 - ORDER BY pid DESC LIMIT 0,1"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + WHERE topic_id={$a['tid']} and queued <> 1 + ORDER BY pid DESC LIMIT 0,1"; } function mod_func_get_attach_count( $a ) { - return "SELECT COUNT(*) as count FROM ".SQL_PREFIX."attachments a - LEFT JOIN ".SQL_PREFIX."posts p on (a.attach_pid=p.pid) - WHERE p.topic_id={$a['tid']}"; + return "SELECT COUNT(*) as count + FROM ".SQL_PREFIX."attachments a + LEFT JOIN ".SQL_PREFIX."posts p on (p.pid=a.attach_rel_id AND a.attach_rel_module='post') + WHERE p.topic_id={$a['tid']}"; } function mod_func_get_topic_tracker( $a ) { return "SELECT tr.*, m.id, m.mgroup, m.org_perm_id, t.tid, t.forum_id, g.g_id, g.g_perm_id - FROM ".SQL_PREFIX."tracker tr - LEFT JOIN ".SQL_PREFIX."topics t ON (tr.topic_id=t.tid) - LEFT JOIN ".SQL_PREFIX."members m on (m.id=tr.member_id) - LEFT JOIN ".SQL_PREFIX."groups g on (g.g_id=m.mgroup) - WHERE tr.topic_id".$a['tid']; + FROM ".SQL_PREFIX."tracker tr + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) + LEFT JOIN ".SQL_PREFIX."members m on (m.id=tr.member_id) + LEFT JOIN ".SQL_PREFIX."groups g on (g.g_id=m.mgroup) + WHERE tr.topic_id".$a['tid']; } function ucp_get_all_announcements( $a ) { return "SELECT a.*, m.id, m.name, m.members_display_name - FROM ".SQL_PREFIX."announcements a - LEFT JOIN ".SQL_PREFIX."members m on (a.announce_member_id=m.id) - ORDER BY announce_end DESC"; + FROM ".SQL_PREFIX."announcements a + LEFT JOIN ".SQL_PREFIX."members m on (m.id=a.announce_member_id) + ORDER BY announce_end DESC"; } function ucp_get_all_announcements_byid( $a ) { return "SELECT a.*, m.*, me.* - FROM ".SQL_PREFIX."announcements a - LEFT JOIN ".SQL_PREFIX."members m on (a.announce_member_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) - WHERE a.announce_id={$a['id']}"; + FROM ".SQL_PREFIX."announcements a + LEFT JOIN ".SQL_PREFIX."members m on (m.id=a.announce_member_id) + LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) + WHERE a.announce_id={$a['id']}"; } function ucp_tracker_prune( $a ) { - return "SELECT tr.trid FROM ".SQL_PREFIX."tracker tr, ".SQL_PREFIX."topics t WHERE t.tid=tr.topic_id AND t.last_post < {$a['time']}"; + return "SELECT tr.trid + FROM ".SQL_PREFIX."tracker tr + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) + WHERE t.last_post < {$a['time']}"; } function login_getmember( $a ) { return "SELECT m.*, g.* - FROM ibf_members m, ibf_groups g - WHERE LOWER(name)='{$a['username']}' and m.mgroup=g.g_id"; + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE members_l_username='{$a['username']}'"; } function settings_search( $a ) { - return "SELECT c.*, ct.conf_title_noshow - FROM ".SQL_PREFIX."conf_settings c - LEFT JOIN ".SQL_PREFIX."conf_settings_titles ct ON ct.conf_title_id=c.conf_group - WHERE LOWER(conf_title) LIKE '%{$a['keywords']}%' OR LOWER(conf_description) LIKE '%{$a['keywords']}%' - ORDER BY conf_title - LIMIT {$a['limit_a']}, {$a['limit_b']}"; + return "SELECT c.*, ct.conf_title_noshow, ct.conf_title_title + FROM ".SQL_PREFIX."conf_settings c + LEFT JOIN ".SQL_PREFIX."conf_settings_titles ct ON (ct.conf_title_id=c.conf_group) + WHERE LOWER(conf_title) LIKE '%{$a['keywords']}%' OR LOWER(conf_description) LIKE '%{$a['keywords']}%' + ORDER BY conf_title + LIMIT {$a['limit_a']}, {$a['limit_b']}"; } diff --git a/upload/sources/sql/mysql_api_queries.php b/upload/sources/sql/mysql_api_queries.php new file mode 100644 index 00000000..f06ee600 --- /dev/null +++ b/upload/sources/sql/mysql_api_queries.php @@ -0,0 +1,125 @@ + $Date: 2006-05-24 17:31:43 -0400 (Wed, 24 May 2006) $ +| > $Revision: 276 $ +| > $Author: bfarber $ ++--------------------------------------------------------------------------- +| +| > MySQL ADMIN DB Queries abstraction module +| > Module written by Matt Mecham +| > Date started: 24th May 2004 +| +| > Module Version Number: 1.0.0 ++-------------------------------------------------------------------------- +*/ + +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} + +class sql_api_queries extends db_driver_mysql +{ + + var $db = ""; + var $tbl = ""; + + /*========================================================================*/ + // Set up... + /*========================================================================*/ + + function sql_api_queries( &$obj ) + { + $this->db = &$obj; + + if ( ! $this->db->obj['sql_tbl_prefix'] ) + { + $this->db->obj['sql_tbl_prefix'] = '".SQL_PREFIX."'; + } + + $this->tbl = $this->db->obj['sql_tbl_prefix']; + } + + function cache_wrapper( $a ) + { + return "SELECT *, instr(',{$a['id']}{$a['parent_in']},{$a['root']},', concat(',',set_skin_set_id,',') ) as theorder + FROM ".SQL_PREFIX."skin_sets + WHERE set_wrapper != '' AND set_skin_set_id in ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY theorder + LIMIT 0,1"; + } + + function cache_templates_titles( $a ) + { + return "SELECT group_name, set_id, suid, func_name, func_data, + INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',set_id,',') ) as theorder + FROM ".SQL_PREFIX."skin_templates + WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY group_name, theorder DESC"; + } + + function cache_templates_bits( $a ) + { + return "SELECT *, + INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',set_id,',') ) as theorder + FROM ".SQL_PREFIX."skin_templates + WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) AND group_name='{$a['group']}' + ORDER BY func_name,theorder DESC"; + } + + function cache_templates_all( $a ) + { + return "SELECT *, + INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',set_id,',') ) as theorder + FROM ".SQL_PREFIX."skin_templates + WHERE set_id IN ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY group_name, func_name, theorder DESC"; + } + + function cache_templates_css( $a ) + { + return "SELECT *, instr(',{$a['id']}{$a['parent_in']},{$a['root']},', concat(',',set_skin_set_id,',') ) as theorder + FROM ".SQL_PREFIX."skin_sets + WHERE set_css != '' AND set_skin_set_id in ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY theorder + LIMIT 0,1"; + } + + function cache_templates_macros( $a ) + { + return "SELECT *, + INSTR(',{$a['id']}{$a['parent_in']},{$a['root']},' , CONCAT(',',macro_set,',') ) as theorder + FROM ".SQL_PREFIX."skin_macro + WHERE macro_set IN ({$a['id']}{$a['parent_in']},{$a['root']}) + ORDER BY macro_value ASC,theorder DESC"; + } + + function cache_empty_css( $a ) + { + return "SELECT * + FROM ".SQL_PREFIX."skin_sets + WHERE set_css like '' AND set_skin_set_parent={$a['parent_id']}"; + } + + function cache_empty_wrapper( $a ) + { + return "SELECT * + FROM ".SQL_PREFIX."skin_sets + WHERE set_wrapper like '' AND set_skin_set_parent={$a['parent_id']}"; + } + +} + +?> \ No newline at end of file diff --git a/upload/sources/sql/mysql_extra_queries.php b/upload/sources/sql/mysql_extra_queries.php index 72bc113f..018f6ece 100644 --- a/upload/sources/sql/mysql_extra_queries.php +++ b/upload/sources/sql/mysql_extra_queries.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -34,9 +24,13 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} - -class sql_extra_queries extends db_driver +class sql_extra_queries extends db_driver_mysql { var $db = ""; @@ -60,7 +54,16 @@ class sql_extra_queries extends db_driver /*========================================================================*/ - // ---- Added in v2.1.7 ---- // + // ---- Added in v2.1 ---- // + + function update_profile_views_get( $a ) + { + return "SELECT views_member_id, COUNT(*) as profile_views + FROM ".SQL_PREFIX."profile_portal_views + GROUP BY views_member_id"; + } + + // ---- Added in v2.2 ---- // function diag_distinct_skins( ) { @@ -68,16 +71,16 @@ class sql_extra_queries extends db_driver FROM ".SQL_PREFIX."skin_templates GROUP BY group_name"; } - + // ---- Added in v2.1 ---- // function member_display_name_lookup( $a ) { return "SELECT members_display_name, name, id - FROM ".SQL_PREFIX."members - WHERE LOWER({$a['field']}) LIKE '{$a['name']}%' - ORDER BY LENGTH({$a['field']}) ASC - LIMIT 0,15"; + FROM ".SQL_PREFIX."members + WHERE LOWER({$a['field']}) LIKE '{$a['name']}%' + ORDER BY LENGTH({$a['field']}) ASC + LIMIT 0,15"; } // ---- Added in v2.1 ---- // @@ -85,8 +88,8 @@ class sql_extra_queries extends db_driver function updateviews_get( $a ) { return "SELECT views_tid, COUNT(*) as topicviews - FROM ".SQL_PREFIX."topic_views - GROUP BY views_tid"; + FROM ".SQL_PREFIX."topic_views + GROUP BY views_tid"; } @@ -94,30 +97,33 @@ class sql_extra_queries extends db_driver function digest_get_topics( $a ) { - return "SELECT tr.trid, tr.topic_id, tr.member_id as trmid, m.name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.* - FROM ".SQL_PREFIX."tracker tr - LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) - LEFT JOIN ".SQL_PREFIX."members m ON (tr.member_id=m.id) - WHERE tr.topic_track_type='{$a['type']}' - AND t.approved=1 - AND t.last_post > {$a['last_time']}"; + return "SELECT tr.trid, tr.topic_id, tr.member_id as trmid, m.members_display_name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.* + FROM ".SQL_PREFIX."tracker tr + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=tr.member_id) + WHERE tr.topic_track_type='{$a['type']}' AND t.approved=1 + AND t.last_post > {$a['last_time']}"; } function digest_get_forums_topics( $a ) { - return "SELECT t.*, p.* - FROM ".SQL_PREFIX."topics t - LEFT JOIN ".SQL_PREFIX."posts p on (t.topic_firstpost=p.pid) - WHERE t.forum_id={$a['forum_id']} - AND t.last_post > {$a['last_time']}"; + return "SELECT * + FROM ".SQL_PREFIX."topics + WHERE forum_id={$a['forum_id']} + AND last_post > {$a['last_time']}"; + } + + function digest_get_forums_topics_posts( $a ) + { + return "SELECT * FROM ".SQL_PREFIX."posts WHERE topic_id={$a['tid']} ORDER BY post_date DESC LIMIT 1"; } function digest_get_forums( $a ) { - return "SELECT ft.*, m.name, m.id, m.email - FROM ".SQL_PREFIX."forum_tracker ft - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=ft.member_id) - WHERE ft.forum_track_type='{$a['type']}'"; + return "SELECT ft.*, m.members_display_name, m.id, m.email, m.language + FROM ".SQL_PREFIX."forum_tracker ft + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=ft.member_id) + WHERE ft.forum_track_type='{$a['type']}'"; } function acp_postoffice_concat_bit($a) diff --git a/upload/sources/sql/mysql_queries.php b/upload/sources/sql/mysql_queries.php index b9e9a9f5..91287d2d 100644 --- a/upload/sources/sql/mysql_queries.php +++ b/upload/sources/sql/mysql_queries.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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-02-02 17:23:13 +0000 (Thu, 02 Feb 2006) $ -| > $Revision: 133 $ +| > $Date: 2006-10-17 22:30:46 +0100 (Tue, 17 Oct 2006) $ +| > $Revision: 652 $ | > $Author: bfarber $ +--------------------------------------------------------------------------- | @@ -34,9 +24,13 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} - -class sql_queries extends db_driver +class sql_queries extends db_driver_mysql { var $db = ""; @@ -60,12 +54,78 @@ class sql_queries extends db_driver /*========================================================================*/ + # NEW: 2.2 + function calendar_get_events( $a ) + { + return "SELECT * + FROM ".SQL_PREFIX."cal_events + WHERE event_calendar_id={$a['calendar_id']} AND {$a['approved']} + AND ( (event_unix_to >= {$a['timenow']} AND event_unix_from <= {$a['timethen']} ) + OR ( event_unix_to=0 AND event_unix_from >= {$a['timenow']} AND event_unix_from <= {$a['timethen']} ) + OR ( event_recurring=3 AND FROM_UNIXTIME(event_unix_from,'%c') IN ({$a['month']}) AND event_unix_to <= {$a['timethen']} ) )"; + } + + function calendar_get_events_cache( $a ) + { + return "SELECT * + FROM ".SQL_PREFIX."cal_events + WHERE {$a['extra']} event_approved=1 + AND ( (event_unix_to >= {$a['timenow']} AND event_unix_from <= {$a['timethen']} ) + OR ( event_unix_to=0 AND event_unix_from >= {$a['timenow']} AND event_unix_from <= {$a['timethen']} ) + OR ( event_recurring=3 AND FROM_UNIXTIME(event_unix_from,'%c')={$a['month']} AND event_unix_to <= {$a['timethen']} ) )"; + } + + function session_get_count( $a ) + { + $to_return = ""; + + $to_return = "SELECT COUNT(*) as total_sessions + FROM ".SQL_PREFIX."sessions s + WHERE s.running_time > {$a['time']} {$a['db_mem']}"; + + if( $a['remove_anon'] ) + { + $to_return .= " AND s.login_type <> 1"; + } + + if( $a['remove_spiders'] ) + { + $to_return .= " AND RIGHT(s.id, 8) != '_session'"; + } + + return $to_return; + } + + function session_get_sessions( $a ) + { + $to_return = ""; + + $to_return = "SELECT * + FROM ".SQL_PREFIX."sessions s + WHERE s.running_time > {$a['time']} {$a['db_mem']}"; + + if( $a['remove_anon'] ) + { + $to_return .= " AND s.login_type <> 1"; + } + + if( $a['remove_spiders'] ) + { + $to_return .= " AND RIGHT(s.id, 8) != '_session'"; + } + + $to_return .= " ORDER BY {$a['db_key']} {$a['db_order']} LIMIT {$a['start']}, {$a['finish']}"; + + return $to_return; + } + + # NEW: 2.1 (a5) function general_get_by_display_name( $a ) { return "SELECT id, members_display_name, name, email, mgroup, member_login_key, ip_address, login_anonymous - FROM ".SQL_PREFIX."members - WHERE LOWER(members_display_name)='{$a['members_display_name']}'"; + FROM ".SQL_PREFIX."members + WHERE members_l_display_name='{$a['members_display_name']}'"; } function forums_get_active_users( $a ) @@ -73,37 +133,39 @@ class sql_queries extends db_driver # forums.php return "SELECT s.member_id, s.member_name, s.member_group, s.id, s.login_type, s.location, s.running_time, t.forum_id - FROM ".SQL_PREFIX."sessions s - LEFT JOIN ".SQL_PREFIX."topics t ON ( t.tid=s.location_1_id) - WHERE s.location_2_type='forum' AND (s.location_2_id={$a['fid']} OR t.forum_id={$a['fid']}) - AND s.running_time > {$a['time']} - AND s.in_error=0"; + FROM ".SQL_PREFIX."sessions s + LEFT JOIN ".SQL_PREFIX."topics t ON ( t.tid=s.location_1_id) + WHERE s.location_2_type='forum' AND (s.location_2_id={$a['fid']} OR t.forum_id={$a['fid']}) + AND s.running_time > {$a['time']} + AND s.in_error=0"; } function forums_get_replied_topics( $a ) { - return "SELECT COUNT(DISTINCT(p.topic_id)) as max FROM ".SQL_PREFIX."topics t - LEFT JOIN ".SQL_PREFIX."posts p ON (p.topic_id=t.tid) - WHERE t.forum_id={$a['fid']} AND p.author_id={$a['mid']} AND p.new_topic=0 - {$a['approved']} {$a['prune_filter']}"; + return "SELECT COUNT(DISTINCT(p.topic_id)) as max + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."posts p ON (p.topic_id=t.tid) + WHERE t.forum_id={$a['fid']} AND p.author_id={$a['mid']} AND p.new_topic=0 + {$a['approved']} {$a['prune_filter']}"; } function forums_get_replied_topics_actual( $a ) { - return "SELECT DISTINCT(p.author_id), t.* FROM ".SQL_PREFIX."topics t - LEFT JOIN ".SQL_PREFIX."posts p ON (p.topic_id=t.tid AND p.author_id={$a['mid']}) - WHERE t.forum_id={$a['fid']} - AND {$a['query']} AND p.new_topic=0 - ORDER BY t.pinned desc,{$a['topic_sort']} {$a['sort_key']} {$a['r_sort_by']} - LIMIT {$a['limit_a']}, {$a['limit_b']}"; + return "SELECT DISTINCT(p.author_id), t.* + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."posts p ON (p.topic_id=t.tid AND p.author_id={$a['mid']}) + WHERE t.forum_id={$a['fid']} AND {$a['query']} AND p.new_topic=0 + ORDER BY t.pinned desc,{$a['topic_sort']} {$a['sort_key']} {$a['r_sort_by']} + LIMIT {$a['limit_a']}, {$a['limit_b']}"; } function topics_check_for_mod( $a ) { # topics.php - return "SELECT * FROM ".SQL_PREFIX."moderators WHERE forum_id={$a['fid']} AND (member_id={$a['mid']} OR (is_group=1 AND group_id={$a['gid']}))"; - + return "SELECT * + FROM ".SQL_PREFIX."moderators + WHERE forum_id={$a['fid']} AND (member_id={$a['mid']} OR (is_group=1 AND group_id IN({$a['gid']})))"; } @@ -111,30 +173,32 @@ class sql_queries extends db_driver { # topics.php - return "SELECT p.*, + return "SELECT p.*, pp.*, m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn, me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."members m ON (p.author_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - WHERE p.pid IN(".implode(',', $a['pids']).") ORDER BY {$a['scol']} {$a['sord']}"; - + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + WHERE p.pid IN(".implode(',', $a['pids']).") + ORDER BY {$a['scol']} {$a['sord']}"; } function topics_get_posts_with_join( $a ) { # topics.php - return "SELECT p.*, + return "SELECT p.*, pp.*, m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn, me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name, pc.* - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."members m ON (p.author_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - LEFT JOIN ".SQL_PREFIX."pfields_content pc ON (pc.member_id=p.author_id) - WHERE p.pid IN(".implode(',', $a['pids']).") ORDER BY {$a['scol']} {$a['sord']}"; - + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."pfields_content pc ON (pc.member_id=p.author_id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id) + WHERE p.pid IN(".implode(',', $a['pids']).") + ORDER BY {$a['scol']} {$a['sord']}"; } function topics_get_active_users( $a ) @@ -142,10 +206,9 @@ class sql_queries extends db_driver # topics.php return "SELECT s.member_id, s.member_name, s.member_group, s.id, s.login_type, s.location, s.running_time - FROM ".SQL_PREFIX."sessions s - WHERE s.location_1_type='topic' AND s.location_1_id={$a['tid']} - AND s.running_time > {$a['time']} - AND s.in_error=0"; + FROM ".SQL_PREFIX."sessions s + WHERE s.location_1_type='topic' AND s.location_1_id={$a['tid']} + AND s.running_time > {$a['time']} AND s.in_error=0"; } # Deleted @@ -154,7 +217,8 @@ class sql_queries extends db_driver # topics.php # Not got REPLACE INTO? Use delete from .. where, then insert into ... set... - return "REPLACE INTO ".SQL_PREFIX."topics_read SET read_tid={$a['tid']},read_mid={$a['mid']},read_date={$a['date']}"; + return "REPLACE INTO ".SQL_PREFIX."topics_read + SET read_tid={$a['tid']},read_mid={$a['mid']},read_date={$a['date']}"; } @@ -162,13 +226,12 @@ class sql_queries extends db_driver { #post - return "SELECT tr.trid, tr.topic_id, m.name, m.email, m.id, m.email_full, m.language, m.org_perm_id, m.mgroup, m.mgroup_others, m.last_activity, t.title, t.forum_id, t.approved - FROM ".SQL_PREFIX."tracker tr, ".SQL_PREFIX."topics t,".SQL_PREFIX."members m - WHERE tr.topic_id='{$a['tid']}' - AND tr.member_id=m.id - AND m.id <> {$a['mid']} - AND t.tid=tr.topic_id - AND ( ( tr.topic_track_type='delayed' AND m.last_activity > {$a['last_post']} ) OR tr.topic_track_type='immediate' )"; + return "SELECT tr.trid, tr.topic_id, tr.last_sent, m.name, m.email, m.id, m.email_full, m.language, m.org_perm_id, m.mgroup, m.mgroup_others, m.last_activity, t.title, t.forum_id, t.approved + FROM ".SQL_PREFIX."tracker tr + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=tr.member_id) + WHERE tr.topic_id='{$a['tid']}' AND m.id <> {$a['mid']} + AND ( ( tr.topic_track_type='delayed' AND m.last_activity < {$a['last_post']} ) OR tr.topic_track_type='immediate' )"; } @@ -189,14 +252,19 @@ class sql_queries extends db_driver function post_get_quoted( $a ) { - return "select p.*,t.forum_id FROM ".SQL_PREFIX."posts p LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) - WHERE pid IN (".implode(",", $a['quoted_pids']).")"; + return "SELECT p.*,t.forum_id + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + WHERE pid IN (".implode(",", $a['quoted_pids']).")"; } function msg_get_msg_poster( $a ) { - return "SELECT m.*, g.* FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g WHERE m.id={$a['mid']} AND g.g_id=m.mgroup"; + return "SELECT m.*, g.* + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE m.id={$a['mid']}"; } function msg_get_msg_archive( $a ) @@ -205,13 +273,13 @@ class sql_queries extends db_driver g.g_id, g.g_title, g.g_icon, g.g_dohtml, m.members_display_name, me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, mt.*, msg.* - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."message_text msg ON (mt.mt_msg_id=msg.msg_id) - LEFT JOIN ".SQL_PREFIX."members m ON (mt.mt_from_id=m.id) - LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - WHERE mt.mt_owner_id={$a['mid']} AND mt.mt_date {$a['older_newer']} {$a['time_cut']} {$a['folder_query']} - LIMIT 0, {$a['limit_b']}"; + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."message_text msg ON (msg.msg_id=mt.mt_msg_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=mt.mt_from_id) + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + WHERE mt.mt_owner_id={$a['mid']} AND mt.mt_date {$a['older_newer']} {$a['time_cut']} {$a['folder_query']} + LIMIT 0, {$a['limit_b']}"; } function msg_get_msg_to_show( $a ) @@ -219,75 +287,78 @@ class sql_queries extends db_driver return "SELECT m.id,m.name,m.members_disable_pm,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml, m.members_display_name, me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, - mt.*, msg.* - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."message_text msg ON (mt.mt_msg_id=msg.msg_id) - LEFT JOIN ".SQL_PREFIX."members m ON (mt.mt_from_id=m.id) - LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - WHERE mt.mt_id={$a['msgid']} AND mt.mt_owner_id={$a['mid']}"; + mt.*, msg.*, pp.* + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."message_text msg ON (msg.msg_id=mt.mt_msg_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=mt.mt_from_id) + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id) + WHERE mt.mt_id={$a['msgid']} AND mt.mt_owner_id={$a['mid']}"; } function msg_get_saved_msg( $a ) { - return "SELECT m.id, m.name, m.members_display_name, m.members_disable_pm, mt.*, msg.* - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."message_text msg ON (mt.mt_msg_id=msg.msg_id) - LEFT JOIN ".SQL_PREFIX."members m ON (mt.mt_to_id=m.id) - WHERE mt.mt_id={$a['msgid']} AND mt.mt_owner_id={$a['mid']}"; + return "SELECT m.id, m.name, m.members_display_name, m.members_disable_pm, mt.*, msg.*, mm.id as from_id, mm.members_display_name as from_name + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."message_text msg ON (msg.msg_id=mt.mt_msg_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=mt.mt_to_id) + LEFT JOIN ".SQL_PREFIX."members mm ON (mm.id=mt.mt_from_id) + WHERE mt.mt_id={$a['msgid']} AND mt.mt_owner_id={$a['mid']}"; } + #IPB 2.1: Changed m.members_display_name AND LOWER(m.members_display_name) function msg_get_cc_users( $a ) { - return "SELECT m.mgroup_others, m.id, m.name, m.members_disable_pm, m.members_display_name, m.msg_total, m.view_pop, m.email_pm, m.language, m.email, me.vdirs, g.g_max_messages, g.g_use_pm FROM ".SQL_PREFIX."members m - INNER JOIN ".SQL_PREFIX."groups g ON (m.mgroup=g.g_id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (m.id=me.id) - WHERE LOWER(m.members_display_name) IN (".implode(",",$a['name_array']).")"; - - + return "SELECT m.mgroup_others, m.id, m.name, m.members_disable_pm, m.members_display_name, m.msg_total, m.view_pop, m.email_pm, m.language, m.email, me.vdirs, g.g_max_messages, g.g_use_pm + FROM ".SQL_PREFIX."members m + INNER JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + WHERE m.members_l_display_name IN (".implode(",",$a['name_array']).")"; } function msg_get_cc_blocked( $a ) { return "SELECT m.name, m.members_display_name, m.members_disable_pm, c.allow_msg - FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."contacts c - WHERE contact_id={$a['mid']} - AND member_id IN (".implode(",",$a['cc_array']).") AND m.id=c.member_id"; - + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."contacts c ON (c.member_id=m.id) + WHERE c.contact_id={$a['mid']} AND c.member_id IN (".implode(",",$a['cc_array']).")"; } # Changed: mem.members_display_name as from_name function msg_get_sent_list( $a ) { return "SELECT mem.members_display_name as from_name, mem.id as from_id, mt.*, msg.msg_id, msg.msg_cc_users - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."members mem ON ( mt.mt_to_id=mem.id ) - LEFT JOIN ".SQL_PREFIX."message_text msg ON ( mt.mt_msg_id=msg.msg_id ) - WHERE mt.mt_owner_id={$a['mid']} AND (mt.mt_from_id={$a['mid']} OR mt.mt_to_id={$a['mid']}) AND mt.mt_vid_folder='{$a['vid']}' - ORDER BY {$a['sort']} LIMIT {$a['limita']}, {$a['limitb']}"; + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."members mem ON ( mem.id=mt.mt_to_id ) + LEFT JOIN ".SQL_PREFIX."message_text msg ON ( msg.msg_id=mt.mt_msg_id ) + WHERE mt.mt_owner_id={$a['mid']} AND (mt.mt_from_id={$a['mid']} OR mt.mt_to_id={$a['mid']}) AND mt.mt_vid_folder='{$a['vid']}' + ORDER BY {$a['sort']} + LIMIT {$a['limita']}, {$a['limitb']}"; } # Changed: mem.members_display_name as from_name function msg_get_folder_list( $a ) { - return "SELECT mt.*,mem.members_display_name as from_name, mem.id as from_id - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."members mem ON ( mt.mt_from_id=mem.id ) - WHERE mt.mt_owner_id={$a['mid']} AND mt.mt_to_id={$a['mid']} AND mt.mt_vid_folder='{$a['vid']}' - ORDER BY {$a['sort']} LIMIT {$a['limita']}, {$a['limitb']}"; + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."members mem ON ( mem.id=mt.mt_from_id ) + WHERE mt.mt_owner_id={$a['mid']} AND mt.mt_to_id={$a['mid']} AND mt.mt_vid_folder='{$a['vid']}' + ORDER BY {$a['sort']} + LIMIT {$a['limita']}, {$a['limitb']}"; } # Changed: mp.members_display_name as to_name function msg_get_tracking( $a ) { return "SELECT msg.*, mt.*, mp.members_display_name as to_name, mp.id as memid - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."message_text msg ON ( mt.mt_msg_id=msg.msg_id ) - LEFT JOIN ".SQL_PREFIX."members mp ON (mt.mt_to_id=mp.id) - WHERE mt.mt_from_id={$a['mid']} AND mt.mt_tracking=1"; + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."message_text msg ON ( msg.msg_id= mt.mt_msg_id ) + LEFT JOIN ".SQL_PREFIX."members mp ON (mp.id=mt.mt_to_id) + WHERE mt.mt_from_id={$a['mid']} AND mt.mt_tracking=1 + ORDER BY mt.mt_date DESC"; } @@ -298,66 +369,61 @@ class sql_queries extends db_driver m.warn_level, m.warn_lastwarn, m.members_display_name, me.*, g.g_id, g.g_title, g.g_icon, g.g_dohtml, mt.*, msg.* - FROM ".SQL_PREFIX."message_topics mt - LEFT JOIN ".SQL_PREFIX."message_text msg ON (mt.mt_msg_id=msg.msg_id) - LEFT JOIN ".SQL_PREFIX."members m ON (mt.mt_from_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (mt.mt_from_id=me.id) - LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) - WHERE mt.mt_owner_id={$a['mid']} AND mt.mt_vid_folder='in' ORDER BY mt_date DESC LIMIT {$a['limit_a']},1"; + FROM ".SQL_PREFIX."message_topics mt + LEFT JOIN ".SQL_PREFIX."message_text msg ON (msg.msg_id=mt.mt_msg_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=mt.mt_from_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=mt.mt_from_id) + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE mt.mt_owner_id={$a['mid']} AND mt.mt_vid_folder='in' + ORDER BY mt_date DESC + LIMIT {$a['limit_a']},1"; } function ucp_tracker_prune( $a ) { - return "SELECT tr.trid FROM ".SQL_PREFIX."tracker tr, ".SQL_PREFIX."topics t WHERE t.tid=tr.topic_id AND t.last_post < {$a['time']}"; + return "SELECT tr.trid + FROM ".SQL_PREFIX."tracker tr + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) + WHERE t.last_post < {$a['time']}"; } # Changed function profile_get_all( $a ) { - return "SELECT m.*, me.*, s.location_1_id, s.location_2_id, s.location_1_type, s.location_2_type, s.running_time, s.location as sesslocation FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."sessions s ON (s.member_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON ( me.id=m.id ) - WHERE m.id={$a['mid']}"; + return "SELECT m.*, me.*, s.location_1_id, s.location_2_id, s.location_1_type, s.location_2_type, s.running_time, s.location as sesslocation + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON ( me.id=m.id ) + LEFT JOIN ".SQL_PREFIX."sessions s ON (s.member_id=m.id) + WHERE m.id={$a['mid']}"; } function profile_get_favourite( $a ) { return "SELECT t.forum_id, COUNT(p.author_id) as f_posts FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON ( p.topic_id=t.tid AND t.forum_id IN (".implode(",",$a['fid_array']).") ) + LEFT JOIN ".SQL_PREFIX."topics t ON ( t.tid=p.topic_id AND t.forum_id IN (".implode(",",$a['fid_array']).") ) WHERE p.author_id={$a['mid']} AND t.tid IS NOT NULL GROUP BY t.forum_id ORDER BY f_posts DESC"; } - function attach_get_perms( $a ) - { - return "SELECT p.pid, p.topic_id, t.forum_id - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON ( p.topic_id=t.tid ) - WHERE p.pid={$a['apid']}"; - } - - function usercp_get_attachments( $a ) { return "SELECT a.*, t.*, p.topic_id - FROM ".SQL_PREFIX."attachments a - LEFT JOIN ".SQL_PREFIX."posts p ON ( a.attach_pid=p.pid ) - LEFT JOIN ".SQL_PREFIX."topics t ON ( t.tid=p.topic_id ) - WHERE a.attach_member_id={$a['mid']} - ORDER BY {$a['order']} - LIMIT {$a['limit_a']}, {$a['limit_b']}"; - + FROM ".SQL_PREFIX."attachments a + LEFT JOIN ".SQL_PREFIX."posts p ON ( p.pid=a.attach_rel_id AND a.attach_rel_module='post' ) + LEFT JOIN ".SQL_PREFIX."topics t ON ( t.tid=p.topic_id ) + WHERE a.attach_member_id={$a['mid']} + ORDER BY {$a['order']} + LIMIT {$a['limit_a']}, {$a['limit_b']}"; } function usercp_get_to_delete( $a ) { return "SELECT a.*, p.topic_id, p.pid - FROM ".SQL_PREFIX."attachments a - LEFT JOIN ".SQL_PREFIX."posts p ON ( a.attach_pid=p.pid ) - WHERE a.attach_id IN (".implode(",",$a['aid_array']).") - AND attach_member_id={$a['mid']}"; - + FROM ".SQL_PREFIX."attachments a + LEFT JOIN ".SQL_PREFIX."posts p ON ( p.pid=a.attach_rel_id AND a.attach_rel_module='post' ) + WHERE a.attach_id IN (".implode(",",$a['aid_array']).") + AND attach_member_id={$a['mid']}"; } @@ -365,73 +431,77 @@ class sql_queries extends db_driver function stats_get_all_members( $a ) { return "SELECT m.*, me.* - FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - WHERE m.id IN(".implode(',', $a['member_ids']).") - ORDER BY m.members_display_name"; + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + WHERE m.id IN(".implode(',', $a['member_ids']).") + ORDER BY m.members_l_display_name"; } function stats_get_all_members_groups( $a ) { return "SELECT m.*, me.* - FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - WHERE m.mgroup IN (".implode( ',', $a['group_ids'] ).") - ORDER BY m.members_display_name"; + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + WHERE m.mgroup IN (".implode( ',', $a['group_ids'] ).") + ORDER BY m.members_l_display_name"; } function stats_get_todays_posters( $a ) { return "SELECT COUNT(*) as tpost, m.id, m.name, m.members_display_name, m.joined, m.posts - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id ) - LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) - WHERE t.forum_id in(".implode(",", $a['ids']).") and post_date > {$a['time_low']} - GROUP BY p.author_id - ORDER BY tpost DESC LIMIT 0,10"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id ) + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + WHERE t.forum_id in(".implode(",", $a['ids']).") and p.post_date > {$a['time_low']} + GROUP BY p.author_id + ORDER BY tpost DESC + LIMIT 0,20"; } function ucp_mod_ip_tool_one( $a ) { return "SELECT p.pid, t.forum_id - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON(t.tid=p.topic_id) - WHERE t.forum_id IN({$a['the_forums']}) AND {$a['sql']}"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON(t.tid=p.topic_id) + WHERE t.forum_id IN({$a['the_forums']}) AND {$a['sql']}"; } # Changed: added m.members_display_name function ucp_get_all_announcements( $a ) { return "SELECT a.*, m.id, m.name, m.members_display_name - FROM ".SQL_PREFIX."announcements a - LEFT JOIN ".SQL_PREFIX."members m on (a.announce_member_id=m.id) - ORDER BY announce_end DESC"; + FROM ".SQL_PREFIX."announcements a + LEFT JOIN ".SQL_PREFIX."members m on (m.id=a.announce_member_id) + ORDER BY a.announce_end DESC"; } function ucp_get_all_announcements_byid( $a ) { - return "SELECT a.*, m.*, me.* - FROM ".SQL_PREFIX."announcements a - LEFT JOIN ".SQL_PREFIX."members m on (a.announce_member_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) - WHERE a.announce_id={$a['id']}"; + return "SELECT a.*, pp.*, m.*, me.* + FROM ".SQL_PREFIX."announcements a + LEFT JOIN ".SQL_PREFIX."members m on (m.id=a.announce_member_id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id) + LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) + WHERE a.announce_id={$a['id']}"; } function ucp_get_forum_tracker( $a ) { return "SELECT t.*, f.* - FROM ".SQL_PREFIX."forum_tracker t - LEFT JOIN ".SQL_PREFIX."forums f ON (t.forum_id=f.id) - WHERE t.member_id={$a['mid']} - ORDER BY f.position"; + FROM ".SQL_PREFIX."forum_tracker t + LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=t.forum_id) + WHERE t.member_id={$a['mid']} + ORDER BY f.position"; } function ucp_get_topic_tracker( $a ) { return "SELECT s.topic_track_type, s.trid, s.member_id, s.topic_id, s.last_sent, s.start_date as track_started, t.*, f.id as forum_id, f.name as forum_name - FROM ".SQL_PREFIX."tracker s, ".SQL_PREFIX."topics t, ".SQL_PREFIX."forums f - WHERE s.member_id={$a['mid']} AND t.tid=s.topic_id AND f.id=t.forum_id {$a['date_query']} - ORDER BY f.id, t.last_post DESC"; + FROM ".SQL_PREFIX."tracker s + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=s.topic_id) + LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=t.forum_id) + WHERE s.member_id={$a['mid']} {$a['date_query']} + ORDER BY f.id, t.last_post DESC"; } # Changed, removed group stuff @@ -449,7 +519,12 @@ class sql_queries extends db_driver if ( strstr( $a['query'], 'me.' ) ) { - $query_bit_1 = "LEFT JOIN ".SQL_PREFIX."member_extra me ON me.id=m.id"; + $query_bit_1 = "LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id)"; + } + + if ( strstr( $a['query'], 'pp.' ) ) + { + $query_bit_3 = "LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id)"; } if ( $a['query'] ) @@ -460,6 +535,7 @@ class sql_queries extends db_driver return "SELECT COUNT(*) as total_members FROM ".SQL_PREFIX."members m {$query_bit_1} {$query_bit_2} + {$query_bit_3} {$a['query']}"; } @@ -471,153 +547,150 @@ class sql_queries extends db_driver $a['query'] = 'WHERE '.$a['query']; } - return "SELECT m.*,me.*,p.* FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON me.id=m.id - LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) - {$a['query']} - ORDER BY m.{$a['sort']} {$a['order']} - LIMIT {$a['limit_a']}, {$a['limit_b']}"; - } - - function forum_get_attachments( $a ) - { - return "SELECT a.*, t.*, p.topic_id, p.pid - FROM ".SQL_PREFIX."attachments a - LEFT JOIN ".SQL_PREFIX."posts p ON ( a.attach_pid=p.pid ) - LEFT JOIN ".SQL_PREFIX."topics t ON ( t.tid=p.topic_id ) - WHERE a.attach_pid != 0 AND p.topic_id={$a['tid']} - ORDER BY a.attach_date"; - + if ( $a['sort'] == 'pp_profile_views' ) + { + $a['sort'] = 'pp.' . $a['sort']; + } + else + { + $a['sort'] = 'm.' . $a['sort']; + } + + return "SELECT m.*,me.*,p.*,pp.* + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."pfields_content p ON (p.member_id=m.id) + LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id) + {$a['query']} + ORDER BY {$a['sort']} {$a['order']} + LIMIT {$a['limit_a']}, {$a['limit_b']}"; } function buddy_posts_last_visit( $a ) { return "SELECT COUNT(*) as posts - FROM ".SQL_PREFIX."posts p USE INDEX (topic_id) - LEFT JOIN ".SQL_PREFIX."topics t ON (p.topic_id=t.tid) - WHERE t.forum_id IN({$a['forum_string']}) - AND p.queued=0 AND p.post_date > {$a['last_visit']}"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id and t.forum_id IN({$a['forum_string']})) + WHERE p.queued=0 AND p.post_date > {$a['last_visit']}"; } function generic_get_all_member( $a ) { return "SELECT g.*, m.*, me.* - FROM ".SQL_PREFIX."members m - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) - LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) - WHERE m.id={$a['mid']}"; + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE m.id={$a['mid']}"; } function moderate_get_topics( $a ) { - return "SELECT p.*,t.forum_id FROM ".SQL_PREFIX."posts p LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) WHERE pid IN (".implode(",", $a['pids']).")"; + return "SELECT p.*,t.forum_id + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + WHERE pid IN (".implode(",", $a['pids']).")"; } function moderate_concat_title( $a ) { - return "UPDATE ".SQL_PREFIX."topics SET title=CONCAT('{$a['pre']}', title, '{$a['end']}') WHERE tid IN(".implode( ",", $a['tids'] ).")"; + return "UPDATE ".SQL_PREFIX."topics + SET title=CONCAT('{$a['pre']}', title, '{$a['end']}') + WHERE tid IN(".implode( ",", $a['tids'] ).")"; } # UPDATE 2.1 function mod_func_get_last_post( $a ) { return "SELECT p.post_date, p.topic_id, p.author_id, p.author_name, p.pid, t.forum_id, m.id, m.members_display_name - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (p.topic_id=t.tid) - LEFT JOIN ".SQL_PREFIX."members m ON (p.author_id=m.id) - WHERE topic_id={$a['tid']} and queued=0 - ORDER BY pid DESC LIMIT 0,1"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + WHERE topic_id={$a['tid']} and queued=0 + ORDER BY {$a['orderby']} DESC + LIMIT 0,1"; } function mod_func_get_attach_count( $a ) { - return "SELECT COUNT(*) as count FROM ".SQL_PREFIX."attachments a - LEFT JOIN ".SQL_PREFIX."posts p on (a.attach_pid=p.pid) - WHERE p.topic_id={$a['tid']}"; + return "SELECT COUNT(*) as count + FROM ".SQL_PREFIX."attachments a + LEFT JOIN ".SQL_PREFIX."posts p on (p.pid=a.attach_rel_id AND a.attach_rel_module='post') + WHERE p.topic_id={$a['tid']}"; } function mod_func_get_topic_tracker( $a ) { return "SELECT tr.*, m.id, m.mgroup, m.org_perm_id, t.tid, t.forum_id, g.g_id, g.g_perm_id - FROM ".SQL_PREFIX."tracker tr - LEFT JOIN ".SQL_PREFIX."topics t ON (tr.topic_id=t.tid) - LEFT JOIN ".SQL_PREFIX."members m on (m.id=tr.member_id) - LEFT JOIN ".SQL_PREFIX."groups g on (g.g_id=m.mgroup) - WHERE tr.topic_id".$a['tid']; - } - - function register_get_dead_validating( $a ) - { - return "SELECT v.vid, v.member_id, m.posts - FROM ".SQL_PREFIX."validating v - LEFT JOIN ".SQL_PREFIX."members m ON (v.member_id=m.id) - WHERE v.new_reg=1 - AND v.coppa_user <> 1 - AND v.entry_date < {$a['less_than']} - AND v.lost_pass <> 1"; + FROM ".SQL_PREFIX."tracker tr + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=tr.topic_id) + LEFT JOIN ".SQL_PREFIX."members m on (m.id=tr.member_id) + LEFT JOIN ".SQL_PREFIX."groups g on (g.g_id=m.mgroup) + WHERE tr.topic_id".$a['tid']; } function search_get_all_user_count( $a ) { return "SELECT count(*) as count - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (p.topic_id=t.tid AND t.approved=1) - WHERE p.queued=0 AND t.forum_id IN({$a['forums']}) AND p.author_id={$a['mid']}"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id AND t.approved=1) + WHERE p.queued=0 AND t.forum_id IN({$a['forums']}) AND p.author_id={$a['mid']}"; } function search_get_all_user_query( $a ) { return "SELECT p.*, t.*, t.posts as topic_posts, t.title as topic_title, m.*, me.* - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (p.topic_id=t.tid AND t.approved=1) - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) - WHERE p.queued=0 AND t.forum_id IN({$a['forums']}) AND p.author_id={$a['mid']} - ORDER BY post_date DESC"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id AND t.approved=1) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) + WHERE p.queued=0 AND t.forum_id IN({$a['forums']}) AND p.author_id={$a['mid']} + ORDER BY post_date DESC"; } function search_get_last_ten( $a ) { return "SELECT p.*, t.*, t.posts as topic_posts, t.title as topic_title, m.*, me.* - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (p.topic_id=t.tid) - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) - WHERE p.queued=0 AND t.forum_id IN({$a['forums']}) AND p.author_id={$a['mid']} - ORDER BY post_date DESC - LIMIT 0,10"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) + WHERE p.queued=0 AND t.forum_id IN({$a['forums']}) AND p.author_id={$a['mid']} + ORDER BY post_date DESC + LIMIT 0,10"; } function search_main_in_titles( $a ) { - return "SELECT t.*, t.posts as topic_posts, t.title as topic_title, p.pid, p.author_id, p.author_name, p.post_date, p.post, m.*, me.* - FROM ".SQL_PREFIX."topics t - LEFT JOIN ".SQL_PREFIX."posts p ON (t.tid=p.topic_id AND p.new_topic=1) - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) - WHERE t.tid IN({$a['topics']}) - ORDER BY p.post_date DESC - LIMIT {$a['limit_a']},25"; + return "SELECT t.*, t.posts as topic_posts, t.title as topic_title, p.pid, p.author_id, p.author_name, p.post_date, p.post, p.queued, p.post_htmlstate, m.*, me.* + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."posts p ON (p.topic_id=t.tid AND p.new_topic=1) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) + WHERE t.tid IN({$a['topics']}) + ORDER BY p.post_date DESC + LIMIT {$a['limit_a']},25"; } function search_main_in_posts( $a ) { - return "SELECT t.*, t.posts as topic_posts, t.title as topic_title, p.pid, p.author_id, p.author_name, p.post_date, p.post, p.post_htmlstate, m.*, me.* - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) - LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) - WHERE p.pid IN({$a['posts']}) - ORDER BY p.post_date DESC - LIMIT {$a['limit_a']},25"; + return "SELECT t.*, t.posts as topic_posts, t.title as topic_title, p.pid, p.author_id, p.author_name, p.post_date, p.post, p.post_htmlstate, p.queued, m.*, me.* + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.topic_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=p.author_id) + WHERE p.pid IN({$a['posts']}) + ORDER BY p.post_date DESC + LIMIT {$a['limit_a']},25"; } function poll_get_poll_with_topic( $a ) { return "SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes - FROM ".SQL_PREFIX."polls p, ".SQL_PREFIX."topics t, ".SQL_PREFIX."forums f - WHERE t.tid={$a['tid']} and p.tid=t.tid and t.forum_id=f.id"; + FROM ".SQL_PREFIX."polls p + LEFT JOIN ".SQL_PREFIX."topics t ON (t.tid=p.tid) + LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=t.forum_id) + WHERE t.tid={$a['tid']}"; } /** @@ -629,9 +702,9 @@ class sql_queries extends db_driver function contact_member_report_get_mods( $a ) { return "SELECT m.id, m.members_display_name as name, m.members_disable_pm, m.email, m.mgroup, moderator.member_id, moderator.group_id - FROM ".SQL_PREFIX."moderators moderator, ".SQL_PREFIX."members m - WHERE moderator.forum_id={$a['fid']} - AND (moderator.member_id=m.id OR moderator.group_id=m.mgroup)"; + FROM ".SQL_PREFIX."moderators moderator + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=moderator.member_id OR m.mgroup=moderator.group_id) + WHERE moderator.forum_id={$a['fid']}"; } /** @@ -642,7 +715,10 @@ class sql_queries extends db_driver */ function contact_member_report_get_cpaccess( $a ) { - return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g WHERE g.g_access_cp=1 AND m.mgroup=g.g_id"; + return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE g.g_access_cp=1"; } /** @@ -653,72 +729,88 @@ class sql_queries extends db_driver */ function contact_member_report_get_supmod( $a ) { - return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g WHERE g.g_is_supmod=1 AND m.mgroup=g.g_id"; + return "SELECT m.id, m.members_display_name as name, m.email, m.members_disable_pm + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE g.g_is_supmod=1"; } function print_page_get_members( $a ) { - return "SELECT g.*, m.* FROM ".SQL_PREFIX."members m, ".SQL_PREFIX."groups g WHERE m.id in ({$a['mem_ids']}) AND m.mgroup=g.g_id"; + return "SELECT g.*, m.* + FROM ".SQL_PREFIX."members m + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=m.mgroup) + WHERE m.id IN ({$a['mem_ids']})"; } function stats_who_posted( $a ) { - return "SELECT COUNT(p.pid) as pcount, p.author_id, p.author_name FROM ".SQL_PREFIX."posts p - WHERE p.topic_id={$a['tid']} AND queued=0 GROUP BY p.author_id ORDER BY pcount DESC"; + return "SELECT COUNT(p.pid) as pcount, p.author_id, m.members_display_name as author_name + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + WHERE p.topic_id={$a['tid']} AND p.queued=0 + GROUP BY p.author_id + ORDER BY pcount DESC"; } function warn_get_data( $a ) { return "SELECT l.*, p.id as punisher_id, p.members_display_name as punisher_name - FROM ".SQL_PREFIX."warn_logs l - LEFT JOIN ".SQL_PREFIX."members p ON ( p.id=l.wlog_addedby ) - WHERE l.wlog_mid={$a['mid']} ORDER BY l.wlog_date DESC LIMIT {$a['limit_a']}, {$a['limit_b']}"; + FROM ".SQL_PREFIX."warn_logs l + LEFT JOIN ".SQL_PREFIX."members p ON ( p.id=l.wlog_addedby ) + WHERE l.wlog_mid={$a['mid']} + ORDER BY l.wlog_date DESC + LIMIT {$a['limit_a']}, {$a['limit_b']}"; } function warn_get_forum( $a ) { - return "SELECT t.tid, t.title, f.id, f.name FROM ".SQL_PREFIX."topics t, ".SQL_PREFIX."forums f WHERE tid={$a['tid']} AND t.forum_id=f.id"; + return "SELECT t.tid, t.title, f.id, f.name + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."forums f ON (f.id=t.forum_id) + WHERE t.tid={$a['tid']}"; } function portal_get_poll_join( $a ) { return "SELECT t.tid, t.title, t.state, t.last_vote, p.*, v.member_id as member_voted - FROM ".SQL_PREFIX."topics t, ".SQL_PREFIX."polls p - LEFT JOIN ".SQL_PREFIX."voters v ON (v.member_id={$a['mid']} and v.tid=t.tid) - WHERE t.tid={$a['tid']} AND p.tid=t.tid"; + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."polls p ON (p.tid=t.tid) + LEFT JOIN ".SQL_PREFIX."voters v ON (v.member_id={$a['mid']} and v.tid=t.tid) + WHERE t.tid={$a['tid']}"; } function portal_get_monster_bitch( $a ) { return "SELECT t.*, p.*, me.avatar_location, m.view_avs, me.avatar_size, me.avatar_type, m.id as member_id, m.members_display_name as member_name, m.mgroup - FROM ".SQL_PREFIX."topics t - LEFT JOIN ".SQL_PREFIX."members m ON (t.starter_id=m.id) - LEFT JOIN ".SQL_PREFIX."member_extra me on (m.id=me.id) - LEFT JOIN ".SQL_PREFIX."posts p ON (t.topic_firstpost=p.pid) - WHERE t.forum_id IN (-1{$a['csite_article_forum']}) {$a['qe']} - AND t.approved=1 AND (t.moved_to IS NULL or t.moved_to='') - ORDER BY t.pinned DESC, t.start_date DESC - LIMIT 0,{$a['limit']}"; + FROM ".SQL_PREFIX."topics t + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=t.starter_id) + LEFT JOIN ".SQL_PREFIX."member_extra me on (me.id=m.id) + LEFT JOIN ".SQL_PREFIX."posts p ON (p.pid=t.topic_firstpost) + WHERE t.forum_id IN (-1{$a['csite_article_forum']}) {$a['qe']} + AND t.approved=1 AND (t.moved_to IS NULL or t.moved_to='') + ORDER BY t.pinned DESC, t.start_date DESC + LIMIT 0,{$a['limit']}"; } function help_search( $a ) { return "SELECT id, title, description - FROM ".SQL_PREFIX."faq - WHERE LOWER(title) LIKE '%{$a['search_string']}%' or LOWER(text) LIKE '%{$a['search_string']}%' - ORDER BY title"; + FROM ".SQL_PREFIX."faq + WHERE LOWER(title) LIKE '%{$a['search_string']}%' or LOWER(text) LIKE '%{$a['search_string']}%' + ORDER BY title"; } #-- NEW FOR RC1 --# function login_getmember( $a ) { - return "select id, name, members_display_name, members_created_remote, email, mgroup, member_login_key, ip_address, login_anonymous - from ".SQL_PREFIX."members - where LOWER(name)='{$a['username']}'"; + return "SELECT id, name, members_display_name, members_created_remote, email, mgroup, member_login_key, ip_address, login_anonymous + FROM ".SQL_PREFIX."members + WHERE members_l_username='{$a['username']}'"; } @@ -726,11 +818,11 @@ class sql_queries extends db_driver function post_get_topic_review( $a ) { return "SELECT p.*, m.members_display_name, m.mgroup - FROM ".SQL_PREFIX."posts p - LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) - WHERE topic_id={$a['tid']} and queued=0 - ORDER BY pid DESC - LIMIT 0,10"; + FROM ".SQL_PREFIX."posts p + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id) + WHERE topic_id={$a['tid']} and queued=0 + ORDER BY pid DESC + LIMIT 0,10"; } # REMOVED diff --git a/upload/sources/sql/mysql_subsm_queries.php b/upload/sources/sql/mysql_subsm_queries.php index 6cbf3ed2..3b71dd73 100644 --- a/upload/sources/sql/mysql_subsm_queries.php +++ b/upload/sources/sql/mysql_subsm_queries.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-12-06 17:36:43 +0000 (Tue, 06 Dec 2005) $ -| > $Revision: 94 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > MySQL DB Queries abstraction module @@ -35,9 +25,13 @@ +-------------------------------------------------------------------------- */ +if ( ! defined( 'IN_IPB' ) ) +{ + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'."; + exit(); +} - -class sql_subsm_queries extends db_driver +class sql_subsm_queries extends db_driver_mysql { var $db = ""; @@ -66,86 +60,100 @@ class sql_subsm_queries extends db_driver function intro_get_all( $a ) { return "SELECT COUNT(*) as total, SUM(subtrans_cumulative) as revenue, subtrans_method - FROM ".SQL_PREFIX."subscription_trans WHERE subtrans_state NOT IN ('failed', 'dead', 'pending') - GROUP BY subtrans_method"; + FROM ".SQL_PREFIX."subscription_trans + WHERE subtrans_state NOT IN ('failed', 'dead', 'pending') + GROUP BY subtrans_method"; } function intro_get_failed_dead( $a ) { return "SELECT COUNT(*) as total, SUM(subtrans_cumulative) as revenue, subtrans_method - FROM ".SQL_PREFIX."subscription_trans WHERE subtrans_state IN ('failed', 'dead') - GROUP BY subtrans_method"; + FROM ".SQL_PREFIX."subscription_trans + WHERE subtrans_state IN ('failed', 'dead') + GROUP BY subtrans_method"; } function intro_get_failed_pending( $a ) { return "SELECT COUNT(*) as total, SUM(subtrans_cumulative) as revenue, subtrans_method - FROM ".SQL_PREFIX."subscription_trans WHERE subtrans_state='pending' - GROUP BY subtrans_method"; + FROM ".SQL_PREFIX."subscription_trans + WHERE subtrans_state='pending' + GROUP BY subtrans_method"; } function intro_plans_a( $a ) { return "SELECT COUNT(*) as total, subtrans_sub_id - FROM ".SQL_PREFIX."subscription_trans - WHERE subtrans_end_date < {$a['time']} AND subtrans_state != 'expired' - GROUP BY subtrans_sub_id"; + FROM ".SQL_PREFIX."subscription_trans + WHERE subtrans_end_date < {$a['time']} AND subtrans_state != 'expired' + GROUP BY subtrans_sub_id"; } function intro_plans_b( $a ) { return "SELECT COUNT(*) as total, subtrans_sub_id - FROM ".SQL_PREFIX."subscription_trans - WHERE subtrans_end_date > {$a['time']} AND subtrans_state != 'expired' - GROUP BY subtrans_sub_id"; + FROM ".SQL_PREFIX."subscription_trans + WHERE subtrans_end_date > {$a['time']} AND subtrans_state != 'expired' + GROUP BY subtrans_sub_id"; } function do_search( $a ) { - return "SELECT s.*, m.id, m.members_display_name as name, m.email, ss.* FROM ".SQL_PREFIX."subscription_trans s - LEFT JOIN ".SQL_PREFIX."members m ON ( s.subtrans_member_id=m.id ) - LEFT JOIN ".SQL_PREFIX."subscriptions ss ON ( s.subtrans_sub_id=ss.sub_id ) ".$a['query']." - ORDER BY s.subtrans_end_date ASC LIMIT {$a['st']}, {$a['end']}"; + return "SELECT s.*, m.id, m.members_display_name as name, m.email, ss.* + FROM ".SQL_PREFIX."subscription_trans s + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=s.subtrans_member_id) + LEFT JOIN ".SQL_PREFIX."subscriptions ss ON (ss.sub_id=s.subtrans_sub_id) ".$a['query']." + ORDER BY s.subtrans_end_date ASC + LIMIT {$a['st']}, {$a['end']}"; } function do_search_two( $a ) { - return "SELECT * FROM ".SQL_PREFIX."subscription_logs ".$a['query']." ORDER BY sublog_date DESC LIMIT {$a['st']}, {$a['end']}"; + return "SELECT * + FROM ".SQL_PREFIX."subscription_logs ".$a['query']." + ORDER BY sublog_date DESC LIMIT {$a['st']}, {$a['end']}"; } function get_lower_name( $a ) { - return "SELECT * FROM ".SQL_PREFIX."members WHERE lower(name)='{$a['name']}' OR lower(members_display_name)='{$a['name']}'"; + return "SELECT * + FROM ".SQL_PREFIX."members + WHERE members_l_username='{$a['name']}' OR members_l_display_name='{$a['name']}'"; } function get_lower_like( $a ) { - return "SELECT * FROM ".SQL_PREFIX."members WHERE lower(name) LIKE '%{$a['name']}%' OR lower(members_display_name) LIKE '%{$a['name']}%'"; + return "SELECT * + FROM ".SQL_PREFIX."members + WHERE members_l_username LIKE '%{$a['name']}%' OR members_l_display_name LIKE '%{$a['name']}%'"; } function edit_trans( $a ) { - return "SELECT s.*, ss.*, m.members_display_name as name, m.id FROM ".SQL_PREFIX."subscription_trans s - LEFT JOIN ".SQL_PREFIX."subscriptions ss ON ( ss.sub_id=s.subtrans_sub_id ) - LEFT JOIN ".SQL_PREFIX."members m ON ( s.subtrans_member_id=m.id ) - WHERE s.subtrans_id={$a['id']}"; + return "SELECT s.*, ss.*, m.members_display_name as name, m.id + FROM ".SQL_PREFIX."subscription_trans s + LEFT JOIN ".SQL_PREFIX."subscriptions ss ON (ss.sub_id=s.subtrans_sub_id) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=s.subtrans_member_id) + WHERE s.subtrans_id={$a['id']}"; } function delete_trans( $a ) { - return "SELECT s.*, ss.*, m.* FROM ".SQL_PREFIX."subscription_trans s - LEFT JOIN ".SQL_PREFIX."subscriptions ss ON ( ss.sub_id=s.subtrans_sub_id ) - LEFT JOIN ".SQL_PREFIX."members m ON (s.subtrans_member_id=m.id) - WHERE s.subtrans_id IN (".implode(",", $a['ids']).")"; + return "SELECT s.*, ss.*, m.* + FROM ".SQL_PREFIX."subscription_trans s + LEFT JOIN ".SQL_PREFIX."subscriptions ss ON ( ss.sub_id=s.subtrans_sub_id ) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=s.subtrans_member_id) + WHERE s.subtrans_id IN (".implode(",", $a['ids']).")"; } function unsub_members( $a ) { - return "SELECT s.*, ss.*, m.* FROM ".SQL_PREFIX."subscription_trans s - LEFT JOIN ".SQL_PREFIX."subscriptions ss ON ( ss.sub_id=s.subtrans_sub_id ) - LEFT JOIN ".SQL_PREFIX."members m ON (s.subtrans_member_id=m.id) - WHERE s.subtrans_sub_id={$a['id']}".$a['qe']; + return "SELECT s.*, ss.*, m.* + FROM ".SQL_PREFIX."subscription_trans s + LEFT JOIN ".SQL_PREFIX."subscriptions ss ON ( ss.sub_id=s.subtrans_sub_id ) + LEFT JOIN ".SQL_PREFIX."members m ON (m.id=s.subtrans_member_id) + WHERE s.subtrans_sub_id={$a['id']}".$a['qe']; } /* @@ -155,36 +163,35 @@ class sql_subsm_queries extends db_driver function mod_custom( $a ) { - return "SELECT s.*, ss.* FROM ibf_subscription_methods s - LEFT JOIN ibf_subscription_extra ss ON ( ss.subextra_method_id=s.submethod_id ) - WHERE submethod_name='{$a['type']}'"; + return "SELECT s.*, ss.* + FROM ".SQL_PREFIX."subscription_methods s + LEFT JOIN ".SQL_PREFIX."subscription_extra ss ON ( ss.subextra_method_id=s.submethod_id ) + WHERE submethod_name='{$a['type']}'"; } function mod_payment_method( $a ) { - return "SELECT s.*, ss.* FROM ibf_subscription_methods s - LEFT JOIN ibf_subscription_extra ss ON ( ss.subextra_method_id=s.submethod_id ) - WHERE s.submethod_active=1"; + return "SELECT s.*, ss.* + FROM ".SQL_PREFIX."subscription_methods s + LEFT JOIN ".SQL_PREFIX."subscription_extra ss ON ( ss.subextra_method_id=s.submethod_id ) + WHERE s.submethod_active=1"; } function mod_do_index( $a ) { - return "SELECT s.submethod_id, ss.subextra_id, s.submethod_active, ss.subextra_can_upgrade FROM ibf_subscription_methods s - LEFT JOIN ibf_subscription_extra ss ON ( ss.subextra_method_id=s.submethod_id ) - WHERE s.submethod_active=1"; + return "SELECT s.submethod_id, ss.subextra_id, s.submethod_active, ss.subextra_can_upgrade + FROM ".SQL_PREFIX."subscription_methods s + LEFT JOIN ".SQL_PREFIX."subscription_extra ss ON ( ss.subextra_method_id=s.submethod_id ) + WHERE s.submethod_active=1"; } function mod_failed_member( $a ) { - return "SELECT t.*, g.g_id FROM ibf_subscription_trans t - LEFT JOIN ibf_groups g ON (g.g_id=t.subtrans_old_group) - WHERE subtrans_id={$a['cur_trx_id']}"; + return "SELECT t.*, g.g_id + FROM ".SQL_PREFIX."subscription_trans t + LEFT JOIN ".SQL_PREFIX."groups g ON (g.g_id=t.subtrans_old_group) + WHERE subtrans_id={$a['cur_trx_id']}"; } - - - - - } // end class diff --git a/upload/sources/tasks/announcements.php b/upload/sources/tasks/announcements.php index bc3974b1..f5333dee 100644 --- a/upload/sources/tasks/announcements.php +++ b/upload/sources/tasks/announcements.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -61,7 +51,7 @@ class task_item // Deactivate expired announcements //----------------------------------------- - require_once( $this->root_path.'sources/action_public/announcements.php' ); + require ( $this->root_path.'sources/action_public/announcements.php' ); $announce = new announcements(); $announce->ipsclass =& $this->ipsclass; @@ -71,7 +61,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'Объявления обновлены' ); + $this->class->append_task_log( $this->task, 'Announcements updated' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -87,7 +77,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/bulkmail.php b/upload/sources/tasks/bulkmail.php index cfb9c88b..00ca3801 100644 --- a/upload/sources/tasks/bulkmail.php +++ b/upload/sources/tasks/bulkmail.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -57,13 +47,11 @@ class task_item function run_task() { - define( 'IN_ACP', 1 ); - //----------------------------------------- // Load Bulk Mailer thing //----------------------------------------- - require_once( $this->root_path.'sources/action_admin/postoffice.php' ); + require ( $this->root_path.'sources/action_admin/postoffice.php' ); $po = new ad_postoffice(); $po->ipsclass =& $this->ipsclass; @@ -83,7 +71,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/calendarevents.php b/upload/sources/tasks/calendarevents.php index 7907144e..132189d3 100644 --- a/upload/sources/tasks/calendarevents.php +++ b/upload/sources/tasks/calendarevents.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -62,9 +52,7 @@ class task_item // Load and recache info //----------------------------------------- - define( 'IN_ACP', 1 ); - - require_once( ROOT_PATH . 'sources/action_admin/calendars.php' ); + require ( ROOT_PATH . 'sources/action_admin/calendars.php' ); $calendars = new ad_calendars(); $calendars->ipsclass =& $this->ipsclass; @@ -76,7 +64,7 @@ class task_item if ( ! $this->restrict_log ) { - $this->class->append_task_log( $this->task, "Кеш календаря обновлен" ); + $this->class->append_task_log( $this->task, "Calendar recached" ); } //----------------------------------------- @@ -93,7 +81,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/cleanout.php b/upload/sources/tasks/cleanout.php index 1e2342ef..335fcea9 100644 --- a/upload/sources/tasks/cleanout.php +++ b/upload/sources/tasks/cleanout.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -85,7 +75,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'Старые сессии, ненужные изображения и результаты поиска удалены' ); + $this->class->append_task_log( $this->task, 'Old reg_images, sessions and search results removed' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -101,7 +91,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/dailycleanout.php b/upload/sources/tasks/dailycleanout.php index 0c25dd1b..6ef36c37 100644 --- a/upload/sources/tasks/dailycleanout.php +++ b/upload/sources/tasks/dailycleanout.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -98,12 +88,44 @@ class task_item $topics_deleted = $this->ipsclass->DB->get_affected_rows(); } + + //----------------------------------------- + // Delete old unattached uploads + //----------------------------------------- + + $time_cutoff = time() - 7200; + $deadid = array(); + + $this->ipsclass->DB->simple_construct( array( "select" => '*', 'from' => 'attachments', 'where' => "attach_rel_id=0 AND attach_date < $time_cutoff") ); + $this->ipsclass->DB->simple_exec(); + + while( $killmeh = $this->ipsclass->DB->fetch_row() ) + { + if ( $killmeh['attach_location'] ) + { + @unlink( $this->ipsclass->vars['upload_dir']."/".$killmeh['attach_location'] ); + } + if ( $killmeh['attach_thumb_location'] ) + { + @unlink( $this->ipsclass->vars['upload_dir']."/".$killmeh['attach_thumb_location'] ); + } + + $deadid[] = $killmeh['attach_id']; + } + + $_attach_count = count( $deadid ); + + if ( $_attach_count ) + { + $this->ipsclass->DB->simple_construct( array( 'delete' => 'attachments', 'where' => "attach_id IN(".implode( ",",$deadid ).")" ) ); + $this->ipsclass->DB->simple_exec(); + } //----------------------------------------- // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, "$deleted подписок скрыто и {$topics_deleted} записей о прочитанных темах удалено" ); + $this->class->append_task_log( $this->task, "$_attach_count orphaned attachments removed, $deleted subscriptions pruned and {$topics_deleted} db read topic entries deleted" ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -119,7 +141,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/dailydigest.php b/upload/sources/tasks/dailydigest.php index b28972c0..89604078 100644 --- a/upload/sources/tasks/dailydigest.php +++ b/upload/sources/tasks/dailydigest.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -61,7 +51,7 @@ class task_item // Send daily digests... //----------------------------------------- - require_once( $this->root_path.'sources/lib/func_digest.php' ); + require ( $this->root_path.'sources/lib/func_digest.php' ); $digest = new func_digest(); $digest->ipsclass =& $this->ipsclass; $digest->func_digest_init( $this->root_path ); @@ -78,7 +68,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'Ежедневный обзор тем и форума отправлен' ); + $this->class->append_task_log( $this->task, 'Daily Topic & Forum Digest Sent' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -94,7 +84,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/doexpiresubs.php b/upload/sources/tasks/doexpiresubs.php index b9a51d04..1130ae13 100644 --- a/upload/sources/tasks/doexpiresubs.php +++ b/upload/sources/tasks/doexpiresubs.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -60,8 +50,6 @@ class task_item // INIT //----------------------------------------- - define( 'IN_ACP', 1 ); - $expire_ids = array(); //----------------------------------------- @@ -121,7 +109,7 @@ class task_item // Unlock Task: DO NOT MODIFY! //----------------------------------------- - $this->class->append_task_log( $this->task, intval(count($expire_ids))." пользователей отписано" ); + $this->class->append_task_log( $this->task, intval(count($expire_ids))." members unsubscribed" ); $this->class->unlock_task( $this->task ); } @@ -133,7 +121,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/expiresubs.php b/upload/sources/tasks/expiresubs.php index 50ea2236..10362a83 100644 --- a/upload/sources/tasks/expiresubs.php +++ b/upload/sources/tasks/expiresubs.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -61,7 +51,7 @@ class task_item // GET EMAIL CLASS //----------------------------------------- - require_once( $this->root_path."sources/classes/class_email.php" ); + require ( $this->root_path."sources/classes/class_email.php" ); $this->email = new emailer( $this->root_path ); $this->email->ipsclass =& $this->ipsclass; $this->email->email_init(); @@ -120,7 +110,7 @@ class task_item // Send out the EMAILS //----------------------------------------- - foreach( $members as $id => $member ) + foreach( $members as $member ) { $this->email->get_template("subscription_expires"); $this->email->build_message( array( @@ -138,7 +128,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, intval(count($ids)).' Пользователям выслано письмо об окончании действия подписки' ); + $this->class->append_task_log( $this->task, intval(count($ids)).' Members sent an expiration email' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -154,7 +144,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/index.html b/upload/sources/tasks/index.html index 787531db..52a588b2 100644 --- a/upload/sources/tasks/index.html +++ b/upload/sources/tasks/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/sources/tasks/logprune.php b/upload/sources/tasks/logprune.php new file mode 100644 index 00000000..973bb591 --- /dev/null +++ b/upload/sources/tasks/logprune.php @@ -0,0 +1,141 @@ + $Date: 2006-05-24 13:53:54 -0400 (Wed, 24 May 2006) $ +| > $Revision: 275 $ +| > $Author: bfarber $ ++--------------------------------------------------------------------------- +| +| > TASK SCRIPT: Prune logs +| > Script written by Matt Mecham +| > Date started: 28th January 2004 +| ++-------------------------------------------------------------------------- +*/ + +//----------------------------------------- +// THIS TASKS OPERATIONS: +// Prunes logs based on ACP settings +//+-------------------------------------------------------------------------- + +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 task_item +{ + var $class = ""; + var $root_path = ""; + var $task = ""; + + /*-------------------------------------------------------------------------*/ + // Our 'auto_run' function + // ADD CODE HERE + /*-------------------------------------------------------------------------*/ + + function run_task() + { + //----------------------------------------- + // Spider Logs + //----------------------------------------- + + if( $this->ipsclass->vars['ipb_prune_spider'] ) + { + $this->ipsclass->DB->do_delete( "spider_logs" ); + } + + //----------------------------------------- + // Task Logs + //----------------------------------------- + + if( $this->ipsclass->vars['ipb_prune_task'] ) + { + $this->ipsclass->DB->do_delete( "task_logs" ); + } + + //----------------------------------------- + // Admin Logs + //----------------------------------------- + + if( $this->ipsclass->vars['ipb_prune_admin'] ) + { + $this->ipsclass->DB->do_delete( "admin_logs" ); + } + + //----------------------------------------- + // Mod Logs + //----------------------------------------- + + if ( $this->ipsclass->vars['ipb_prune_mod'] ) + { + $this->ipsclass->DB->do_delete( "moderator_logs" ); + } + + //----------------------------------------- + // Email Logs + //----------------------------------------- + + if ( $this->ipsclass->vars['ipb_prune_email'] ) + { + $this->ipsclass->DB->do_delete( "email_logs" ); + } + + //----------------------------------------- + // Email Error Logs + //----------------------------------------- + + if ( $this->ipsclass->vars['ipb_prune_emailerror'] ) + { + $this->ipsclass->DB->do_delete( "mail_error_logs" ); + } + + //----------------------------------------- + // Log to log table - modify but dont delete + //----------------------------------------- + + $this->class->append_task_log( $this->task, 'Log tables pruned' ); + + //----------------------------------------- + // Unlock Task: DO NOT MODIFY! + //----------------------------------------- + + $this->class->unlock_task( $this->task ); + } + + /*-------------------------------------------------------------------------*/ + // register_class + // LEAVE ALONE + /*-------------------------------------------------------------------------*/ + + function register_class(&$class) + { + $this->class = &$class; + $this->ipsclass =& $class->ipsclass; + $this->root_path = $this->class->root_path; + } + + /*-------------------------------------------------------------------------*/ + // pass_task + // LEAVE ALONE + /*-------------------------------------------------------------------------*/ + + function pass_task( $this_task ) + { + $this->task = $this_task; + } + + +} +?> \ No newline at end of file diff --git a/upload/sources/tasks/rebuildstats.php b/upload/sources/tasks/rebuildstats.php index 1f55447e..72ae98fe 100644 --- a/upload/sources/tasks/rebuildstats.php +++ b/upload/sources/tasks/rebuildstats.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -116,7 +106,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'Статистика пересчитана' ); + $this->class->append_task_log( $this->task, 'Statistics rebuilt' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -132,7 +122,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/removevalidating.php b/upload/sources/tasks/removevalidating.php new file mode 100644 index 00000000..58847491 --- /dev/null +++ b/upload/sources/tasks/removevalidating.php @@ -0,0 +1,139 @@ + $Date: 2005-10-10 09:08:54 -0400 (Mon, 10 Oct 2005) $ +| > $Revision: 23 $ +| > $Author: matt $ ++--------------------------------------------------------------------------- +| +| > TASK SCRIPT: Update Views +| > Script written by Matt Mecham +| > Date started: 31st March 2005 (11:04) +| ++-------------------------------------------------------------------------- +*/ + +//----------------------------------------- +// THIS TASKS OPERATIONS: +// Updates the topic views counter +//+---------------------------------------- + +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 task_item +{ + var $class = ""; + var $root_path = ""; + var $task = ""; + + /*-------------------------------------------------------------------------*/ + // Our 'auto_run' function + // ADD CODE HERE + /*-------------------------------------------------------------------------*/ + + function run_task() + { + $mids = array(); + $vids = array(); + + // If enabled, remove validating new_reg members & entries from members table + + if ( intval($this->ipsclass->vars['validate_day_prune']) > 0 ) + { + $less_than = time() - $this->ipsclass->vars['validate_day_prune'] * 86400; + + $this->ipsclass->DB->build_query( array( 'select' => 'v.vid, v.member_id', + 'from' => array( 'validating' => 'v' ), + 'where' => 'v.new_reg=1 AND v.coppa_user<>1 AND v.entry_date < '.$less_than.' AND v.lost_pass<>1', + 'add_join' => array( 0 => array( 'select' => 'm.posts', + 'from' => array( 'members' => 'm' ), + 'where' => 'm.id=v.member_id', + 'type' => 'left' + ) ) + ) ); + + $this->ipsclass->DB->exec_query(); + + while( $i = $this->ipsclass->DB->fetch_row() ) + { + if ( intval($i['posts']) < 1 ) + { + $mids[] = $i['member_id']; + $vids[] = "'".$i['vid']."'"; + } + } + + // Remove non-posted validating members + + if ( count($mids) > 0 ) + { + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'members_converge', 'where' => "converge_id IN(".implode(",",$mids).")" ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'members' , 'where' => "id IN(".implode(",",$mids).")" ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'member_extra' , 'where' => "id IN(".implode(",",$mids).")" ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'pfields_content' , 'where' => "member_id IN(".implode(",",$mids).")" ) ); + $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'validating' , 'where' => "vid IN(".implode(",",$vids).")" ) ); + + if ( USE_MODULES == 1 ) + { + require ROOT_PATH."modules/ipb_member_sync.php"; + + $this->modules = new ipb_member_sync(); + $this->modules->ipsclass =& $this->ipsclass; + $this->modules->register_class($this); + $this->modules->on_delete($mids); + } + } + + //----------------------------------------- + // Log to log table - modify but dont delete + //----------------------------------------- + + $this->class->append_task_log( $this->task, count($mids).' old validating members pruned' ); + } + + //----------------------------------------- + // Unlock Task: DO NOT MODIFY! + //----------------------------------------- + + $this->class->unlock_task( $this->task ); + } + + /*-------------------------------------------------------------------------*/ + // register_class + // LEAVE ALONE + /*-------------------------------------------------------------------------*/ + + function register_class(&$class) + { + $this->class = &$class; + $this->ipsclass =& $class->ipsclass; + $this->root_path = $this->class->root_path; + } + + /*-------------------------------------------------------------------------*/ + // pass_task + // LEAVE ALONE + /*-------------------------------------------------------------------------*/ + + function pass_task( $this_task ) + { + $this->task = $this_task; + } + + +} +?> \ No newline at end of file diff --git a/upload/sources/tasks/rssimport.php b/upload/sources/tasks/rssimport.php index 1e77de09..c7aa7672 100644 --- a/upload/sources/tasks/rssimport.php +++ b/upload/sources/tasks/rssimport.php @@ -2,28 +2,18 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-14 22:42:46 +0100 (Fri, 14 Oct 2005) $ -| > $Revision: 52 $ -| > $Author: bfarber $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ +| > $Author: matt $ +--------------------------------------------------------------------------- | | > TASK SCRIPT: Update Views @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -61,8 +51,6 @@ class task_item // INIT //----------------------------------------- - define( 'IN_ACP', 1 ); - $feeds_to_update = array(); $time = time(); @@ -78,7 +66,7 @@ class task_item if ( $this->ipsclass->DB->get_num_rows( $rss_main_query ) ) { - require_once( ROOT_PATH . 'sources/action_admin/rssimport.php' ); + require ( ROOT_PATH . 'sources/action_admin/rssimport.php' ); $admin = new ad_rssimport(); $admin->ipsclass =& $this->ipsclass; @@ -109,7 +97,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'RSS Импорт завершен ('. count($feeds_to_update) .')' ); + $this->class->append_task_log( $this->task, 'RSS Import completed ('. count($feeds_to_update) .')' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -125,7 +113,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/update_profile_views.php b/upload/sources/tasks/update_profile_views.php new file mode 100644 index 00000000..595afb10 --- /dev/null +++ b/upload/sources/tasks/update_profile_views.php @@ -0,0 +1,120 @@ + $Date: 2006-05-24 18:53:54 +0100 (Wed, 24 May 2006) $ +| > $Revision: 275 $ +| > $Author: bfarber $ ++--------------------------------------------------------------------------- +| +| > TASK SCRIPT: Update Views +| > Script written by Matt Mecham +| > Date started: 31st March 2005 (11:04) +| ++-------------------------------------------------------------------------- +*/ + +//----------------------------------------- +// THIS TASKS OPERATIONS: +// Updates the topic views counter +//+---------------------------------------- + +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 task_item +{ + var $class = ""; + var $root_path = ""; + var $task = ""; + + /*-------------------------------------------------------------------------*/ + // Our 'auto_run' function + // ADD CODE HERE + /*-------------------------------------------------------------------------*/ + + function run_task() + { + //----------------------------------------- + // Load DB file + //----------------------------------------- + + $this->ipsclass->DB->load_cache_file( $this->root_path.'sources/sql/'.SQL_DRIVER.'_extra_queries.php', 'sql_extra_queries' ); + + //----------------------------------------- + // Get SQL query + //----------------------------------------- + + $this->ipsclass->DB->cache_add_query( 'update_profile_views_get', array(), 'sql_extra_queries' ); + $o = $this->ipsclass->DB->cache_exec_query(); + + while( $r = $this->ipsclass->DB->fetch_row( $o ) ) + { + //----------------------------------------- + // Update... + //----------------------------------------- + + $this->ipsclass->DB->simple_construct( array( 'update' => 'members', + 'set' => 'members_profile_views=members_profile_views+'.intval( $r['profile_views'] ), + 'where' => "id=".intval($r['views_member_id']) + ) ); + + $this->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Delete from table + //----------------------------------------- + + $this->ipsclass->DB->build_and_exec_query( array( 'delete' => 'profile_portal_views' ) ); + + //----------------------------------------- + // Log to log table - modify but dont delete + //----------------------------------------- + + $this->class->append_task_log( $this->task, 'Profile views counter updated' ); + } + + //----------------------------------------- + // Unlock Task: DO NOT MODIFY! + //----------------------------------------- + + $this->class->unlock_task( $this->task ); + } + + /*-------------------------------------------------------------------------*/ + // register_class + // LEAVE ALONE + /*-------------------------------------------------------------------------*/ + + function register_class(&$class) + { + $this->class = &$class; + $this->ipsclass =& $class->ipsclass; + $this->root_path = $this->class->root_path; + } + + /*-------------------------------------------------------------------------*/ + // pass_task + // LEAVE ALONE + /*-------------------------------------------------------------------------*/ + + function pass_task( $this_task ) + { + $this->task = $this_task; + } + + +} +?> \ No newline at end of file diff --git a/upload/sources/tasks/updateviews.php b/upload/sources/tasks/updateviews.php index 96da81d6..0aa66eeb 100644 --- a/upload/sources/tasks/updateviews.php +++ b/upload/sources/tasks/updateviews.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -100,7 +90,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'Обновление счетчика просмотров тем завершено' ); + $this->class->append_task_log( $this->task, 'Topic views counter updated' ); } //----------------------------------------- @@ -117,7 +107,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/sources/tasks/weeklydigest.php b/upload/sources/tasks/weeklydigest.php index 53a33f5b..fad30125 100644 --- a/upload/sources/tasks/weeklydigest.php +++ b/upload/sources/tasks/weeklydigest.php @@ -2,27 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 +| Invision Power Board | ============================================= | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2006 Invision Power Services, Inc. | http://www.invisionpower.com | ============================================= | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae | 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: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $ -| > $Revision: 23 $ +| > $Date: 2006-09-22 11:28:54 +0100 (Fri, 22 Sep 2006) $ +| > $Revision: 567 $ | > $Author: matt $ +--------------------------------------------------------------------------- | @@ -40,7 +30,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

    Incorrect access

    You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -61,7 +51,7 @@ class task_item // Send daily digests... //----------------------------------------- - require_once( $this->root_path.'sources/lib/func_digest.php' ); + require ( $this->root_path.'sources/lib/func_digest.php' ); $digest = new func_digest(); $digest->ipsclass =& $this->ipsclass; $digest->func_digest_init( $this->root_path ); @@ -78,7 +68,7 @@ class task_item // Log to log table - modify but dont delete //----------------------------------------- - $this->class->append_task_log( $this->task, 'Еженедельный обзор тем и форума разослан' ); + $this->class->append_task_log( $this->task, 'Weekly Topic & Forum Digest Sent' ); //----------------------------------------- // Unlock Task: DO NOT MODIFY! @@ -94,7 +84,7 @@ class task_item function register_class(&$class) { - $this->class = $class; + $this->class = &$class; $this->ipsclass =& $class->ipsclass; $this->root_path = $this->class->root_path; } diff --git a/upload/style_avatars/IPB_Community_Pack/Thumbs.db b/upload/style_avatars/IPB_Community_Pack/Thumbs.db deleted file mode 100644 index 6ba35c14..00000000 Binary files a/upload/style_avatars/IPB_Community_Pack/Thumbs.db and /dev/null differ diff --git a/upload/style_avatars/IPB_Community_Pack/avatar-readme.txt b/upload/style_avatars/IPB_Community_Pack/avatar-readme.txt index 54d555cd..8ed64db0 100644 --- a/upload/style_avatars/IPB_Community_Pack/avatar-readme.txt +++ b/upload/style_avatars/IPB_Community_Pack/avatar-readme.txt @@ -1,31 +1,31 @@ -Readme for Avatars Distributed with Invisionboard -------------------------------------------------- - -The avatars distributed with Invisionboard were created by members of the Invisionboard -community. As such, the creator of each avatar is responsible for the copyright of each image. -Invisionboard does not claim to own any of the images, and any questions regarding individual -avatars should be directed to the original creator. - - -Author of each Avatar ----------------------- - -IBFstars.jpg - chrishanke -Whale.jpg - Jay144 -Hammer-man.jpg - Jay144 -Dolphin.jpg - Jay144 -Crazyman.jpg - Jay144 -Meow.gif - SoftwareX -Woof.gif - SoftwareX -Melon.gif - Adam -Leaf.gif - Adam -Golfball.gif - Adam -Fish.gif - Adam -Aeroplane.gif - Adam -No-Avatar.gif - //n2 -Pow.gif - //n2 -Radioactive - //n2 -Wub.gif - //n2 -Pink-sea.gif - Xerro -Orange-sticks.gif - Xerro +Readme for Avatars Distributed with Invisionboard +------------------------------------------------- + +The avatars distributed with Invisionboard were created by members of the Invisionboard +community. As such, the creator of each avatar is responsible for the copyright of each image. +Invisionboard does not claim to own any of the images, and any questions regarding individual +avatars should be directed to the original creator. + + +Author of each Avatar +---------------------- + +IBFstars.jpg - chrishanke +Whale.jpg - Jay144 +Hammer-man.jpg - Jay144 +Dolphin.jpg - Jay144 +Crazyman.jpg - Jay144 +Meow.gif - SoftwareX +Woof.gif - SoftwareX +Melon.gif - Adam +Leaf.gif - Adam +Golfball.gif - Adam +Fish.gif - Adam +Aeroplane.gif - Adam +No-Avatar.gif - //n2 +Pow.gif - //n2 +Radioactive - //n2 +Wub.gif - //n2 +Pink-sea.gif - Xerro +Orange-sticks.gif - Xerro Green-haze.gif - Xerro \ No newline at end of file diff --git a/upload/style_avatars/Smiley_Avatars/Thumbs.db b/upload/style_avatars/Smiley_Avatars/Thumbs.db deleted file mode 100644 index 84335158..00000000 Binary files a/upload/style_avatars/Smiley_Avatars/Thumbs.db and /dev/null differ diff --git a/upload/style_avatars/Thumbs.db b/upload/style_avatars/Thumbs.db deleted file mode 100644 index a77d01c9..00000000 Binary files a/upload/style_avatars/Thumbs.db and /dev/null differ diff --git a/upload/style_avatars/index.html b/upload/style_avatars/index.html index 787531db..52a588b2 100644 --- a/upload/style_avatars/index.html +++ b/upload/style_avatars/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/style_captcha/captcha_backgrounds/blue.jpg b/upload/style_captcha/captcha_backgrounds/blue.jpg new file mode 100644 index 00000000..dc8bce4d Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/blue.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/bluefur.jpg b/upload/style_captcha/captcha_backgrounds/bluefur.jpg new file mode 100644 index 00000000..da3dc84e Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/bluefur.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/bluewavy.jpg b/upload/style_captcha/captcha_backgrounds/bluewavy.jpg new file mode 100644 index 00000000..d2f98552 Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/bluewavy.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/flower.jpg b/upload/style_captcha/captcha_backgrounds/flower.jpg new file mode 100644 index 00000000..d63f4d78 Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/flower.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/greenblobs.jpg b/upload/style_captcha/captcha_backgrounds/greenblobs.jpg new file mode 100644 index 00000000..f6017d67 Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/greenblobs.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/greenwavy.jpg b/upload/style_captcha/captcha_backgrounds/greenwavy.jpg new file mode 100644 index 00000000..a343c415 Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/greenwavy.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/oilpainting.jpg b/upload/style_captcha/captcha_backgrounds/oilpainting.jpg new file mode 100644 index 00000000..81596fe2 Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/oilpainting.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/stones.jpg b/upload/style_captcha/captcha_backgrounds/stones.jpg new file mode 100644 index 00000000..2fd4860d Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/stones.jpg differ diff --git a/upload/style_captcha/captcha_backgrounds/watercolor.jpg b/upload/style_captcha/captcha_backgrounds/watercolor.jpg new file mode 100644 index 00000000..f6863b6e Binary files /dev/null and b/upload/style_captcha/captcha_backgrounds/watercolor.jpg differ diff --git a/upload/style_captcha/captcha_fonts/ChalkboardBold.ttf b/upload/style_captcha/captcha_fonts/ChalkboardBold.ttf new file mode 100644 index 00000000..82b81320 Binary files /dev/null and b/upload/style_captcha/captcha_fonts/ChalkboardBold.ttf differ diff --git a/upload/style_captcha/captcha_fonts/Sathu.ttf b/upload/style_captcha/captcha_fonts/Sathu.ttf new file mode 100644 index 00000000..6373d8b4 Binary files /dev/null and b/upload/style_captcha/captcha_fonts/Sathu.ttf differ diff --git a/upload/style_captcha/captcha_fonts/font_license.txt b/upload/style_captcha/captcha_fonts/font_license.txt new file mode 100644 index 00000000..6ff78f96 --- /dev/null +++ b/upload/style_captcha/captcha_fonts/font_license.txt @@ -0,0 +1,33 @@ +Fonts by Tom Murphy 7 +--------------------- + +http://fonts.tom7.com/ + +This is the official version of the license for all the fonts (except where noted). It supercedes any other licenses circulating. + +I am employing a very generous license with these fonts (the way I think most software should be) for a number of reasons. Mainly though, it is because I would be making fonts regardless of whether I was distributing them or not, and because I know that people benefit from the fact that I give them away. I take enough stuff for free and it makes me feel good to know that I am 'giving back'. + +Here is the license. You are free to download and use these fonts without my explicit permission for anything you want, except for the following: +You may NOT * resell the actual font files (without my written permission and without having to give me something in return). This includes but is not limited to selling it on a Font CD (even when the fee involved is a nominal "distribution" or "handling" fee, or some similar thing), or distributing it on a site which charges a fee per font download. (In contrast, a pay-per-hour service such as America Online is free to distribute the fonts.) +You may not misrepresent the creator of the font (pretend you made them) +You may not adapt them to different fonts without my permission. +You may not modify the font files for subsequent redistribution. + +However, you have permission to do the following: +Use them to make graphics for your home page, non-profit web page, or commerical web site. +Give them to your friends for free. +Make them available (for free) on your web page, as long as you don't pretend you made them. It'd be nice of you to include this README file, too. +Use them in design work that you get paid for. +Use them in any smalltime publications or fliers or other non mass-produced literature. +Make commercial products like T-shirts or Mugs or Books using the fonts and sell them. In this case, since you are indirectly profiting off of my work, I ask that you send me one of the T-shirts or Mugs or Books free, where reasonable . Obviously some discretion on your part is due; but try to be fair. If it is inappropriate for you to send me one of your product, at least make an attempt to write me an e-mail at imightbetm@aol.com and let me know where the font is being used. + +Exception to the above: The fonts (or converted versions of them) may be included on any recognized distribution of the Linux and (Open/Net/Free)BSD operating systems, even if the CD is sold. Please include the readme . + +* "Not", as in, "Not without my permission". I regularly give permission for this sort of thing, so if you want to redistribute the fonts for a fee, let me know and we can probably work something out. Generally I simply request a copy of the CD or magazine or whatever. + +For your information, here is my address: +Permanent address: +Tom Murphy 7 +339 Still Hill Rd +Hamden CT 06518.1830 +USA \ No newline at end of file diff --git a/upload/style_captcha/captcha_fonts/index.html b/upload/style_captcha/captcha_fonts/index.html new file mode 100644 index 00000000..52a588b2 --- /dev/null +++ b/upload/style_captcha/captcha_fonts/index.html @@ -0,0 +1 @@ + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/style_captcha/captcha_fonts/times.ttf b/upload/style_captcha/captcha_fonts/times.ttf new file mode 100644 index 00000000..23d0de13 Binary files /dev/null and b/upload/style_captcha/captcha_fonts/times.ttf differ diff --git a/upload/style_emoticons/default/Thumbs.db b/upload/style_emoticons/default/Thumbs.db deleted file mode 100644 index 9f7a8270..00000000 Binary files a/upload/style_emoticons/default/Thumbs.db and /dev/null differ diff --git a/upload/style_emoticons/default/index.html b/upload/style_emoticons/default/index.html index 787531db..52a588b2 100644 --- a/upload/style_emoticons/default/index.html +++ b/upload/style_emoticons/default/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/style_emoticons/default/wink.gif b/upload/style_emoticons/default/wink.gif index 24bdea96..639f10a7 100644 Binary files a/upload/style_emoticons/default/wink.gif and b/upload/style_emoticons/default/wink.gif differ diff --git a/upload/style_emoticons/index.html b/upload/style_emoticons/index.html index 787531db..52a588b2 100644 --- a/upload/style_emoticons/index.html +++ b/upload/style_emoticons/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/style_images/._index.html b/upload/style_images/._index.html new file mode 100644 index 00000000..0f63958b Binary files /dev/null and b/upload/style_images/._index.html differ diff --git a/upload/style_images/1/Thumbs.db b/upload/style_images/1/Thumbs.db deleted file mode 100644 index 6ed1b663..00000000 Binary files a/upload/style_images/1/Thumbs.db and /dev/null differ diff --git a/upload/style_images/1/add_fav.gif b/upload/style_images/1/add_fav.gif deleted file mode 100644 index bd0e2f62..00000000 Binary files a/upload/style_images/1/add_fav.gif and /dev/null differ diff --git a/upload/style_images/1/addresscard.gif b/upload/style_images/1/addresscard.gif deleted file mode 100644 index 69b69cb3..00000000 Binary files a/upload/style_images/1/addresscard.gif and /dev/null differ diff --git a/upload/style_images/1/bb_new.gif b/upload/style_images/1/bb_new.gif deleted file mode 100644 index b870e85b..00000000 Binary files a/upload/style_images/1/bb_new.gif and /dev/null differ diff --git a/upload/style_images/1/bb_nonew.gif b/upload/style_images/1/bb_nonew.gif deleted file mode 100644 index 3fd5223a..00000000 Binary files a/upload/style_images/1/bb_nonew.gif and /dev/null differ diff --git a/upload/style_images/1/be_new.gif b/upload/style_images/1/be_new.gif deleted file mode 100644 index 6b152998..00000000 Binary files a/upload/style_images/1/be_new.gif and /dev/null differ diff --git a/upload/style_images/1/blank.gif b/upload/style_images/1/blank.gif new file mode 100644 index 00000000..75b945d2 Binary files /dev/null and b/upload/style_images/1/blank.gif differ diff --git a/upload/style_images/1/bp_new.gif b/upload/style_images/1/bp_new.gif deleted file mode 100644 index c267e0a7..00000000 Binary files a/upload/style_images/1/bp_new.gif and /dev/null differ diff --git a/upload/style_images/1/bp_nonew.gif b/upload/style_images/1/bp_nonew.gif deleted file mode 100644 index be8b3d2f..00000000 Binary files a/upload/style_images/1/bp_nonew.gif and /dev/null differ diff --git a/upload/style_images/1/cal_addevent.gif b/upload/style_images/1/cal_addevent.gif index 40a456e9..1d7b6b87 100644 Binary files a/upload/style_images/1/cal_addevent.gif and b/upload/style_images/1/cal_addevent.gif differ diff --git a/upload/style_images/1/cal_newevent.gif b/upload/style_images/1/cal_newevent.gif index 7f30d535..75604f9a 100644 Binary files a/upload/style_images/1/cal_newevent.gif and b/upload/style_images/1/cal_newevent.gif differ diff --git a/upload/style_images/1/camera.gif b/upload/style_images/1/camera.gif index edba9d0a..8f31692a 100644 Binary files a/upload/style_images/1/camera.gif and b/upload/style_images/1/camera.gif differ diff --git a/upload/style_images/1/camera_small.gif b/upload/style_images/1/camera_small.gif deleted file mode 100644 index b304f783..00000000 Binary files a/upload/style_images/1/camera_small.gif and /dev/null differ diff --git a/upload/style_images/1/camera_tiny.gif b/upload/style_images/1/camera_tiny.gif deleted file mode 100644 index d841adde..00000000 Binary files a/upload/style_images/1/camera_tiny.gif and /dev/null differ diff --git a/upload/style_images/1/cb_down.gif b/upload/style_images/1/cb_down.gif deleted file mode 100644 index bec280a9..00000000 Binary files a/upload/style_images/1/cb_down.gif and /dev/null differ diff --git a/upload/style_images/1/cb_up.gif b/upload/style_images/1/cb_up.gif deleted file mode 100644 index d3db2950..00000000 Binary files a/upload/style_images/1/cb_up.gif and /dev/null differ diff --git a/upload/style_images/1/click2enlarge.gif b/upload/style_images/1/click2enlarge.gif index 71fdf7f6..c8833aa2 100644 Binary files a/upload/style_images/1/click2enlarge.gif and b/upload/style_images/1/click2enlarge.gif differ diff --git a/upload/style_images/1/close.png b/upload/style_images/1/close.png new file mode 100644 index 00000000..24e26018 Binary files /dev/null and b/upload/style_images/1/close.png differ diff --git a/upload/style_images/1/css_pp_header.gif b/upload/style_images/1/css_pp_header.gif new file mode 100644 index 00000000..9b458ce2 Binary files /dev/null and b/upload/style_images/1/css_pp_header.gif differ diff --git a/upload/style_images/1/css_pp_tab_off.gif b/upload/style_images/1/css_pp_tab_off.gif new file mode 100644 index 00000000..4959052e Binary files /dev/null and b/upload/style_images/1/css_pp_tab_off.gif differ diff --git a/upload/style_images/1/css_pp_tab_on.gif b/upload/style_images/1/css_pp_tab_on.gif new file mode 100644 index 00000000..bb34e0d6 Binary files /dev/null and b/upload/style_images/1/css_pp_tab_on.gif differ diff --git a/upload/style_images/1/css_pp_tab_shaded.gif b/upload/style_images/1/css_pp_tab_shaded.gif new file mode 100644 index 00000000..65241248 Binary files /dev/null and b/upload/style_images/1/css_pp_tab_shaded.gif differ diff --git a/upload/style_images/1/del_fav.gif b/upload/style_images/1/del_fav.gif deleted file mode 100644 index 0a0a9771..00000000 Binary files a/upload/style_images/1/del_fav.gif and /dev/null differ diff --git a/upload/style_images/1/e_draft.gif b/upload/style_images/1/e_draft.gif deleted file mode 100644 index 39e6d6c2..00000000 Binary files a/upload/style_images/1/e_draft.gif and /dev/null differ diff --git a/upload/style_images/1/e_draft_lock.gif b/upload/style_images/1/e_draft_lock.gif deleted file mode 100644 index c03ccd70..00000000 Binary files a/upload/style_images/1/e_draft_lock.gif and /dev/null differ diff --git a/upload/style_images/1/e_pub.gif b/upload/style_images/1/e_pub.gif deleted file mode 100644 index a8d615d7..00000000 Binary files a/upload/style_images/1/e_pub.gif and /dev/null differ diff --git a/upload/style_images/1/e_pub_lock.gif b/upload/style_images/1/e_pub_lock.gif deleted file mode 100644 index 2230db28..00000000 Binary files a/upload/style_images/1/e_pub_lock.gif and /dev/null differ diff --git a/upload/style_images/1/folder_attach_images/attach_add.png b/upload/style_images/1/folder_attach_images/attach_add.png new file mode 100644 index 00000000..6db0919d Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_add.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_error.png b/upload/style_images/1/folder_attach_images/attach_error.png new file mode 100644 index 00000000..24e26018 Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_error.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_folder_add.png b/upload/style_images/1/folder_attach_images/attach_folder_add.png new file mode 100644 index 00000000..c8375bdd Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_folder_add.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_logo.png b/upload/style_images/1/folder_attach_images/attach_logo.png new file mode 100644 index 00000000..af9c5a1b Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_logo.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_ok.png b/upload/style_images/1/folder_attach_images/attach_ok.png new file mode 100644 index 00000000..deefc129 Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_ok.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_remove.png b/upload/style_images/1/folder_attach_images/attach_remove.png new file mode 100644 index 00000000..bd45928f Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_remove.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_view.png b/upload/style_images/1/folder_attach_images/attach_view.png new file mode 100644 index 00000000..aa58c324 Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_view.png differ diff --git a/upload/style_images/1/folder_attach_images/attach_wait.gif b/upload/style_images/1/folder_attach_images/attach_wait.gif new file mode 100644 index 00000000..ab48d0f6 Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_wait.gif differ diff --git a/upload/style_images/1/folder_attach_images/attach_zoom_in.png b/upload/style_images/1/folder_attach_images/attach_zoom_in.png new file mode 100644 index 00000000..974af811 Binary files /dev/null and b/upload/style_images/1/folder_attach_images/attach_zoom_in.png differ diff --git a/upload/style_images/1/folder_editor_images/articles-menu-icon-bg.gif b/upload/style_images/1/folder_editor_images/articles-menu-icon-bg.gif new file mode 100644 index 00000000..4ab70b35 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/articles-menu-icon-bg.gif differ diff --git a/upload/style_images/1/folder_editor_images/css_rte.css b/upload/style_images/1/folder_editor_images/css_rte.css new file mode 100644 index 00000000..73cf0051 --- /dev/null +++ b/upload/style_images/1/folder_editor_images/css_rte.css @@ -0,0 +1,284 @@ +/* ============================================================== */ +/* RTE STYLES +/* ============================================================== */ + +.rte-cb-bg +{ + background-color: #E5E6F1; + background-image: url('rte-cb-top-bg.gif'); + background-repeat: repeat-x; + border-bottom: 1px solid #555; + letter-spacing: 0; + height:11px; + text-align: left; + padding:0px; + margin:0px; +} + +.rte-option-panel, +.rte-buttonbar +{ + background-color: #DCE7FC; + background-image: url('rte_tile.gif'); + background-repeat: repeat-x; + border: 1px solid #555; + letter-spacing: 0; +} + +.rte-option-panel +{ + display: none; + float: left; + text-align: center; + margin-bottom: 5px; +} + +.rte-option-emo-box +{ + background-color: #FFFFFF; + border:1px solid #777; + margin-right: auto; + margin-left: auto; + margin-top: 10px; + margin-bottom: 10px; +} + +.rte-buttonbar tbody tr td, +.rte-buttonbar tr td, +.rteBack tbody tr td, +.rteBack tr td +{ + padding: 0; +} + +.rte-iframe +{ + border:2px inset solid #777; + background-color:#FFF; + margin-top:4px; +} + +.rte-menu-button, +.rte-selected-menubutton, +.rte-hover-menubutton, +.rte-normal-menubutton +{ + border: 1px solid #7585B8; + -moz-border-radius: 3px; + padding: 2px 1px 2px 4px; + margin:0px; + font-size: 11px; + overflow: hidden; + background-color: #FFFFFF; + background-image: url('rte-dd-bg.gif'); + background-repeat: no-repeat; + width:auto; +} + +.rte-selected-menubutton, +.rte-hover-menubutton +{ + border: 1px solid #95C4F7; + background-color: #FFFFFF; +} + +.rte-menu-face, +.rte-menu-size, +.rte-selected-menu, +.rte-hover-menu, +.rte-normal-menu +{ + background-color: #EFF3F7; + border-bottom:1px dotted #999; + padding: 1px 1px 4px 1px; + width:100%; + clear: all; + cursor: pointer; + cursor: hand; +} + +.rte-menu-size +{ + padding-top: 12px; + padding-bottom: 12px; +} + +.rte-selected-menu-color, +.rte-hover-menu-color, +.rte-normal-menu-color, +.rte-menu-color +{ + width: 10px; + border: 1px solid #FFFFFF; + cursor: pointer; + cursor: hand; +} + +.rte-selected-menu-emo, +.rte-hover-menu-emo, +.rte-normal-menu-emo, +.rte-menu-emo, +.rte-menu-emo-box +{ + width: auto; + border:1px solid #EFF3F7; + cursor: pointer; + cursor: hand; +} + +.rte-selected-menu-emo div, +.rte-hover-menu-emo div, +.rte-normal-menu-emo div, +.rte-menu-emo div +{ + padding: 4px; +} + +.rte-menu-emo-box div +{ + padding: 1px; +} + +.rte-menu-emo-box +{ + border:1px solid #FFFFFF; +} + +.rte-menu-emo-header +{ + text-align: center; + font-weight: bold; + background-color: #E5E6F1; + color: #000000; + background-image: url('rte_tile.gif'); + background-repeat: repeat-x; + padding:4px; + margin: 0px; +} + +.rte-hover-menu-color +{ + border:1px solid black; +} + +.rte-hover-menu-emo +{ + border:1px solid black; +} + +.rte-popupmenu +{ + background-color: #EFF3F7; + border: 1px solid #999; + text-align: left; + font-size: 11px; + padding: 3px 5px 3px 3px; +} + +.rte-selected, +.rte-hover, +.rte-normal +{ + cursor: pointer; + cursor: hand; + padding:1px; +} + +.rte-selected-menu, +.rte-hover-menu +{ + background: #D3D3D3; +} + +.rte-selected +{ + border: 1px outset; + padding:0px; +} + +.rte-hover +{ + background: #EBEBEB; +} + +.attach-menubutton +{ + border: 1px solid #7585B8; + -moz-border-radius: 3px; + padding: 2px 1px 2px 4px; + margin:0px; + font-size: 11px; + overflow: hidden; + background-color: #FFFFFF; + background-image: url('rte-dd-bg.gif'); + background-repeat: no-repeat; + width:auto; +} + +.attachfiles-dropdown +{ + border: 1px solid #7585B8; + -moz-border-radius: 3px; + padding: 2px 1px 2px 4px; + margin:0px; + font-size: 11px; + overflow: hidden; + background-color: #FFFFFF; + width:auto; +} + +.attach-parentdiv +{ + background-color: #DCE7FC; + background-image: url('rte_tile.gif'); + background-repeat: repeat-x; + border: 1px solid #555; + letter-spacing: 0; + padding:6px; + text-align:left; +} + +.attach-messagediv +{ + background: #FFF; + color: #000000; + text-align:center; + border: 1px solid #555; +} +.attach-msg-span +{ + padding-top: 3px; + font-size:20px; + font-weight:bold; +} + +.attach-iframe +{ + border: 0px; + background-color:transparent; +} + +.attach-popupmenu +{ + background-color: #EFF3F7; + border: 1px solid #999; + text-align: left; + font-size: 11px; + padding: 3px 5px 3px 3px; + background-image: url('articles-menu-icon-bg.gif'); + background-repeat: repeat-y; +} + +.attach-menu-row-over, +.attach-menu-row +{ + padding:1px 1px 4px 1px; + width:100%; + cursor: pointer; + cursor: hand; +} + +.attach-menu-row-over +{ + background: #D3D3D3; +} \ No newline at end of file diff --git a/upload/style_images/1/folder_editor_images/icon_open.gif b/upload/style_images/1/folder_editor_images/icon_open.gif new file mode 100644 index 00000000..0ca0a46e Binary files /dev/null and b/upload/style_images/1/folder_editor_images/icon_open.gif differ diff --git a/upload/style_images/1/folder_editor_images/removeformat.gif b/upload/style_images/1/folder_editor_images/removeformat.gif new file mode 100644 index 00000000..8e82eb7a Binary files /dev/null and b/upload/style_images/1/folder_editor_images/removeformat.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-align-center.png b/upload/style_images/1/folder_editor_images/rte-align-center.png new file mode 100644 index 00000000..bde06704 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-align-center.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-align-left.png b/upload/style_images/1/folder_editor_images/rte-align-left.png new file mode 100644 index 00000000..963fc01d Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-align-left.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-align-right.png b/upload/style_images/1/folder_editor_images/rte-align-right.png new file mode 100644 index 00000000..de8beab7 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-align-right.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-bbcode-help-sm.png b/upload/style_images/1/folder_editor_images/rte-bbcode-help-sm.png new file mode 100644 index 00000000..4017adde Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-bbcode-help-sm.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-bbcode-help.png b/upload/style_images/1/folder_editor_images/rte-bbcode-help.png new file mode 100644 index 00000000..c2738bf4 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-bbcode-help.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-bgcolor.gif b/upload/style_images/1/folder_editor_images/rte-bgcolor.gif new file mode 100644 index 00000000..7546c36b Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-bgcolor.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-blank.png b/upload/style_images/1/folder_editor_images/rte-blank.png new file mode 100644 index 00000000..b9f1eb05 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-blank.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-bold.png b/upload/style_images/1/folder_editor_images/rte-bold.png new file mode 100644 index 00000000..ada38b3c Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-bold.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-cb-close.gif b/upload/style_images/1/folder_editor_images/rte-cb-close.gif new file mode 100644 index 00000000..f2eba866 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-cb-close.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-cb-top-bg.gif b/upload/style_images/1/folder_editor_images/rte-cb-top-bg.gif new file mode 100644 index 00000000..7ee7433d Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-cb-top-bg.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-code-button.png b/upload/style_images/1/folder_editor_images/rte-code-button.png new file mode 100644 index 00000000..2b26941e Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-code-button.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-copy.png b/upload/style_images/1/folder_editor_images/rte-copy.png new file mode 100644 index 00000000..87cf5c96 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-copy.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-cut.png b/upload/style_images/1/folder_editor_images/rte-cut.png new file mode 100644 index 00000000..bb623773 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-cut.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-dd-bg.gif b/upload/style_images/1/folder_editor_images/rte-dd-bg.gif new file mode 100644 index 00000000..4482b0f0 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-dd-bg.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-div.png b/upload/style_images/1/folder_editor_images/rte-div.png new file mode 100644 index 00000000..c694a8ea Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-div.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-email-button.png b/upload/style_images/1/folder_editor_images/rte-email-button.png new file mode 100644 index 00000000..00dc9998 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-email-button.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-email.png b/upload/style_images/1/folder_editor_images/rte-email.png new file mode 100644 index 00000000..066cf368 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-email.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-emo-button.png b/upload/style_images/1/folder_editor_images/rte-emo-button.png new file mode 100644 index 00000000..e65f7e2f Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-emo-button.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-emoticon.gif b/upload/style_images/1/folder_editor_images/rte-emoticon.gif new file mode 100644 index 00000000..678a61e3 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-emoticon.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-error.png b/upload/style_images/1/folder_editor_images/rte-error.png new file mode 100644 index 00000000..24e26018 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-error.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-extra.png b/upload/style_images/1/folder_editor_images/rte-extra.png new file mode 100644 index 00000000..a87f6e45 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-extra.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-hyperlink.png b/upload/style_images/1/folder_editor_images/rte-hyperlink.png new file mode 100644 index 00000000..b1169c27 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-hyperlink.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-image-button.png b/upload/style_images/1/folder_editor_images/rte-image-button.png new file mode 100644 index 00000000..e1605fee Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-image-button.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-image.png b/upload/style_images/1/folder_editor_images/rte-image.png new file mode 100644 index 00000000..be36c36c Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-image.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-indent.gif b/upload/style_images/1/folder_editor_images/rte-indent.gif new file mode 100644 index 00000000..d45f74ab Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-indent.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-ipb-code.png b/upload/style_images/1/folder_editor_images/rte-ipb-code.png new file mode 100644 index 00000000..4ff487fb Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-ipb-code.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-ipb-quote.png b/upload/style_images/1/folder_editor_images/rte-ipb-quote.png new file mode 100644 index 00000000..009354d2 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-ipb-quote.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-ipd-tag.png b/upload/style_images/1/folder_editor_images/rte-ipd-tag.png new file mode 100644 index 00000000..89a17124 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-ipd-tag.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-italic.png b/upload/style_images/1/folder_editor_images/rte-italic.png new file mode 100644 index 00000000..8dca4845 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-italic.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-justify.png b/upload/style_images/1/folder_editor_images/rte-justify.png new file mode 100644 index 00000000..df4c94cb Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-justify.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-link-button.png b/upload/style_images/1/folder_editor_images/rte-link-button.png new file mode 100644 index 00000000..deae60db Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-link-button.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-list-numbered.gif b/upload/style_images/1/folder_editor_images/rte-list-numbered.gif new file mode 100644 index 00000000..4f26cb8b Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-list-numbered.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-list.gif b/upload/style_images/1/folder_editor_images/rte-list.gif new file mode 100644 index 00000000..11dd8d2a Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-list.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-ok.png b/upload/style_images/1/folder_editor_images/rte-ok.png new file mode 100644 index 00000000..deefc129 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-ok.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-outdent.gif b/upload/style_images/1/folder_editor_images/rte-outdent.gif new file mode 100644 index 00000000..08a45098 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-outdent.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-paste.png b/upload/style_images/1/folder_editor_images/rte-paste.png new file mode 100644 index 00000000..e3397b27 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-paste.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-quote-button.png b/upload/style_images/1/folder_editor_images/rte-quote-button.png new file mode 100644 index 00000000..7c8d3b67 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-quote-button.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-redo.png b/upload/style_images/1/folder_editor_images/rte-redo.png new file mode 100644 index 00000000..c7a23fbd Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-redo.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-remove-formatting.gif b/upload/style_images/1/folder_editor_images/rte-remove-formatting.gif new file mode 100644 index 00000000..f333fd7e Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-remove-formatting.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-resize-down.gif b/upload/style_images/1/folder_editor_images/rte-resize-down.gif new file mode 100644 index 00000000..58615b1e Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-resize-down.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-resize-up.gif b/upload/style_images/1/folder_editor_images/rte-resize-up.gif new file mode 100644 index 00000000..47dbe440 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-resize-up.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-strike.gif b/upload/style_images/1/folder_editor_images/rte-strike.gif new file mode 100644 index 00000000..9bf71855 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-strike.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-subscript.gif b/upload/style_images/1/folder_editor_images/rte-subscript.gif new file mode 100644 index 00000000..607cf431 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-subscript.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-superscript.gif b/upload/style_images/1/folder_editor_images/rte-superscript.gif new file mode 100644 index 00000000..8eb6d7bb Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-superscript.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-switch-editor.png b/upload/style_images/1/folder_editor_images/rte-switch-editor.png new file mode 100644 index 00000000..075eb3ee Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-switch-editor.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-table.png b/upload/style_images/1/folder_editor_images/rte-table.png new file mode 100644 index 00000000..e7e16e30 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-table.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-textcolor.gif b/upload/style_images/1/folder_editor_images/rte-textcolor.gif new file mode 100644 index 00000000..ca028ff0 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-textcolor.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-toggle-html.gif b/upload/style_images/1/folder_editor_images/rte-toggle-html.gif new file mode 100644 index 00000000..7e237e36 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-toggle-html.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte-toggle-options.png b/upload/style_images/1/folder_editor_images/rte-toggle-options.png new file mode 100644 index 00000000..a9d48b5a Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-toggle-options.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-underlined.png b/upload/style_images/1/folder_editor_images/rte-underlined.png new file mode 100644 index 00000000..a3bf7bff Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-underlined.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-undo.png b/upload/style_images/1/folder_editor_images/rte-undo.png new file mode 100644 index 00000000..69520e15 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-undo.png differ diff --git a/upload/style_images/1/folder_editor_images/rte-unlink.png b/upload/style_images/1/folder_editor_images/rte-unlink.png new file mode 100644 index 00000000..bb47ce2e Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte-unlink.png differ diff --git a/upload/style_images/1/folder_editor_images/rte_div.gif b/upload/style_images/1/folder_editor_images/rte_div.gif new file mode 100644 index 00000000..cf817cd0 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte_div.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte_dots.gif b/upload/style_images/1/folder_editor_images/rte_dots.gif new file mode 100644 index 00000000..ae32cc02 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte_dots.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte_table.gif b/upload/style_images/1/folder_editor_images/rte_table.gif new file mode 100644 index 00000000..15c45de8 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte_table.gif differ diff --git a/upload/style_images/1/folder_editor_images/rte_tile.gif b/upload/style_images/1/folder_editor_images/rte_tile.gif new file mode 100644 index 00000000..2a7420b1 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/rte_tile.gif differ diff --git a/upload/style_images/1/folder_editor_images/spellcheck.gif b/upload/style_images/1/folder_editor_images/spellcheck.gif new file mode 100644 index 00000000..e6c8d827 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/spellcheck.gif differ diff --git a/upload/style_images/1/folder_editor_images/textcolor.gif b/upload/style_images/1/folder_editor_images/textcolor.gif new file mode 100644 index 00000000..413e0417 Binary files /dev/null and b/upload/style_images/1/folder_editor_images/textcolor.gif differ diff --git a/upload/style_images/1/folder_js_skin/ips_menu_html.js b/upload/style_images/1/folder_js_skin/ips_menu_html.js index 00964816..1cd17157 100644 --- a/upload/style_images/1/folder_js_skin/ips_menu_html.js +++ b/upload/style_images/1/folder_js_skin/ips_menu_html.js @@ -51,9 +51,9 @@ function menu_build_menu(cid, menuinput, complexmenu) thisclass = ( t == len ) ? css_menusep_last : css_menusep; - if ( menuinput[i].match( /^--NODIV--/ ) ) + if ( menuinput[i].match( /^~~NODIV~~/ ) ) { - html += menuinput[i].replace( /^--NODIV--/, '' ); + html += menuinput[i].replace( /^~~NODIV~~/, '' ); } else { @@ -86,16 +86,14 @@ function menu_build_menu(cid, menuinput, complexmenu) if ( html != '' ) { - document.open(); - document.writeln( html ); - document.close(); + document.getElementById( cid ).parentNode.innerHTML += html; } //---------------------------------- // Register and init //---------------------------------- - menu_register( cid ); + ipsmenu.dynamic_register[ ipsmenu.dynamic_register.length + 1 ] = cid; } diff --git a/upload/style_images/1/folder_mime_types/Thumbs.db b/upload/style_images/1/folder_mime_types/Thumbs.db deleted file mode 100644 index e2fd5cd5..00000000 Binary files a/upload/style_images/1/folder_mime_types/Thumbs.db and /dev/null differ diff --git a/upload/style_images/1/folder_mime_types/index.html b/upload/style_images/1/folder_mime_types/index.html index 787531db..52a588b2 100644 --- a/upload/style_images/1/folder_mime_types/index.html +++ b/upload/style_images/1/folder_mime_types/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

    Ошибка < Русская версия Invision Power Board

    -
    -Вы попали на несуществующую страницу!
    Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
    -Invision Power Board: - - - + Invision Power Board - Bulletin Board System

    403: Invision Power Board -> Forbidden


    You have reached this Page in error, please use your back button to return to Invision Board.
    Invision Power Board \ No newline at end of file diff --git a/upload/style_images/1/folder_post_icons/Thumbs.db b/upload/style_images/1/folder_post_icons/Thumbs.db deleted file mode 100644 index 367f642d..00000000 Binary files a/upload/style_images/1/folder_post_icons/Thumbs.db and /dev/null differ diff --git a/upload/style_images/1/folder_profile_portal/comment_add.png b/upload/style_images/1/folder_profile_portal/comment_add.png new file mode 100644 index 00000000..6db0919d Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/comment_add.png differ diff --git a/upload/style_images/1/folder_profile_portal/comment_remove.gif b/upload/style_images/1/folder_profile_portal/comment_remove.gif new file mode 100644 index 00000000..ba7b5423 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/comment_remove.gif differ diff --git a/upload/style_images/1/folder_profile_portal/find_posts.png b/upload/style_images/1/folder_profile_portal/find_posts.png new file mode 100644 index 00000000..aa58c324 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/find_posts.png differ diff --git a/upload/style_images/1/folder_profile_portal/friend_add_large.png b/upload/style_images/1/folder_profile_portal/friend_add_large.png new file mode 100644 index 00000000..30c2dbc0 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/friend_add_large.png differ diff --git a/upload/style_images/1/folder_profile_portal/friend_add_small.png b/upload/style_images/1/folder_profile_portal/friend_add_small.png new file mode 100644 index 00000000..80274e4b Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/friend_add_small.png differ diff --git a/upload/style_images/1/folder_profile_portal/friend_remove_small.png b/upload/style_images/1/folder_profile_portal/friend_remove_small.png new file mode 100644 index 00000000..57d5ec79 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/friend_remove_small.png differ diff --git a/upload/style_images/1/folder_profile_portal/gender_female.png b/upload/style_images/1/folder_profile_portal/gender_female.png new file mode 100644 index 00000000..20c9745e Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/gender_female.png differ diff --git a/upload/style_images/1/folder_profile_portal/gender_male.png b/upload/style_images/1/folder_profile_portal/gender_male.png new file mode 100644 index 00000000..4578b6b9 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/gender_male.png differ diff --git a/upload/style_images/1/folder_profile_portal/gender_mystery.png b/upload/style_images/1/folder_profile_portal/gender_mystery.png new file mode 100644 index 00000000..b9527962 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/gender_mystery.png differ diff --git a/upload/style_images/1/folder_profile_portal/pp-blank-large.png b/upload/style_images/1/folder_profile_portal/pp-blank-large.png new file mode 100644 index 00000000..0c982c0d Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/pp-blank-large.png differ diff --git a/upload/style_images/1/folder_profile_portal/pp-blank-thumb.png b/upload/style_images/1/folder_profile_portal/pp-blank-thumb.png new file mode 100644 index 00000000..d0bea149 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/pp-blank-thumb.png differ diff --git a/upload/style_images/1/folder_profile_portal/pp-css-contentblock.gif b/upload/style_images/1/folder_profile_portal/pp-css-contentblock.gif new file mode 100644 index 00000000..0290fe14 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/pp-css-contentblock.gif differ diff --git a/upload/style_images/1/folder_profile_portal/send_pm_large.png b/upload/style_images/1/folder_profile_portal/send_pm_large.png new file mode 100644 index 00000000..c29f0e9f Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/send_pm_large.png differ diff --git a/upload/style_images/1/folder_profile_portal/send_pm_small.png b/upload/style_images/1/folder_profile_portal/send_pm_small.png new file mode 100644 index 00000000..55b8b0d1 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/send_pm_small.png differ diff --git a/upload/style_images/1/folder_profile_portal/star_empty.gif b/upload/style_images/1/folder_profile_portal/star_empty.gif new file mode 100644 index 00000000..11509b9b Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/star_empty.gif differ diff --git a/upload/style_images/1/folder_profile_portal/star_filled.gif b/upload/style_images/1/folder_profile_portal/star_filled.gif new file mode 100644 index 00000000..b85710ff Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/star_filled.gif differ diff --git a/upload/style_images/1/folder_profile_portal/star_selected.gif b/upload/style_images/1/folder_profile_portal/star_selected.gif new file mode 100644 index 00000000..8ca929db Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/star_selected.gif differ diff --git a/upload/style_images/1/folder_profile_portal/user-offline.png b/upload/style_images/1/folder_profile_portal/user-offline.png new file mode 100644 index 00000000..baa94f49 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/user-offline.png differ diff --git a/upload/style_images/1/folder_profile_portal/user-online.png b/upload/style_images/1/folder_profile_portal/user-online.png new file mode 100644 index 00000000..58504ea8 Binary files /dev/null and b/upload/style_images/1/folder_profile_portal/user-online.png differ diff --git a/upload/style_images/1/folder_rte_files/palette.html b/upload/style_images/1/folder_rte_files/palette.html index af4954b4..523750e2 100644 --- a/upload/style_images/1/folder_rte_files/palette.html +++ b/upload/style_images/1/folder_rte_files/palette.html @@ -1,126 +1,126 @@ - - - - - Text Color - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - + + + + + Text Color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/upload/style_images/1/folder_rte_files/rte_html.js b/upload/style_images/1/folder_rte_files/rte_html.js index 16c01421..3cf33c9d 100644 --- a/upload/style_images/1/folder_rte_files/rte_html.js +++ b/upload/style_images/1/folder_rte_files/rte_html.js @@ -7,15 +7,15 @@ function write_rte_html() format_select = ''; font_select = ' - Ваш пароль на форуме: + Your Forums Password: -
    +
    "; - $this->ipsclass->template->output("Войти"); + $this->ipsclass->template->output("Log In"); } @@ -568,18 +578,25 @@ class core_functions { $member = array( 'id' => 0 ); - $this->ipsclass->loginkey = $this->check_md5( $this->ipsclass->input['loginkey'] ); - $this->ipsclass->securekey = $this->check_md5( $this->ipsclass->input['securekey'] ); - $this->ipsclass->member_id = trim(intval($this->ipsclass->input['mid'] ) ); + $this->ipsclass->loginkey = $this->check_md5( isset($this->ipsclass->input['loginkey']) ? $this->ipsclass->input['loginkey'] : '' ); + $this->ipsclass->securekey = $this->check_md5( isset($this->ipsclass->input['securekey']) ? $this->ipsclass->input['securekey'] : '' ); + $this->ipsclass->member_id = trim(intval( isset($this->ipsclass->input['mid']) ? $this->ipsclass->input['mid'] : 0 ) ); if ( ! $this->ipsclass->loginkey or ! $this->ipsclass->securekey ) { return $member; } - $this->ipsclass->DB->query( "SELECT m.*, g.* FROM ibf_members m - LEFT JOIN ibf_groups g ON ( m.mgroup=g.g_id ) - WHERE member_login_key='{$this->ipsclass->loginkey}' and id='{$this->ipsclass->member_id}'" ); + $this->ipsclass->DB->build_query( array( 'select' => 'm.*,g.*', + 'from' => array( 'members' => 'm' ), + 'where' => "m.member_login_key='{$this->ipsclass->loginkey}' and m.id='{$this->ipsclass->member_id}'", + 'limit' => array( 0, 1 ), + 'add_join' => array( 1 => array( 'type' => 'left', + 'from' => array( 'groups' => 'g' ), + 'where' => 'g.g_id=m.mgroup', + ) ) + ) ); + $this->ipsclass->DB->exec_query(); $member = $this->ipsclass->DB->fetch_row(); diff --git a/upload/upgrade/core/template.php b/upload/upgrade/core/template.php index 22fcff72..fafd22b2 100644 --- a/upload/upgrade/core/template.php +++ b/upload/upgrade/core/template.php @@ -1,133 +1,522 @@ - IPB UPGRADE TEMPLATE MODULES -| > Script written by Matt Mecham -| > Date started: 23rd April 2004 -+-------------------------------------------------------------------------- -*/ - -if ( ! defined( 'IN_IPB' ) ) -{ - print "

    Некорректный адрес

    Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; - exit(); -} - -class template -{ - var $content = ""; - - function output($title='') - { - $year = date("Y"); - print $this->print_top($title); - print $this->content; - print "



    Русская версия Invision Power Board © $year Invision Power Services, Inc.
    -
    - "; - exit(); - } - - //-------------------------------------- - - function print_top($title="") - { - - return " - - - Скрипт обновления Invision Power Board :: $title - - - - -
    Invision Power Board
    -
     
    -
    -
    - "; - - } -} +ipsclass =& $ipsclass; + + //----------------------------------------- + // Grab XML file and check + //----------------------------------------- + + if ( file_exists( INS_ROOT_PATH . 'installfiles/sequence.xml' ) ) + { + $config = implode( '', file( INS_ROOT_PATH . 'installfiles/sequence.xml' ) ); + $xml = new class_xml(); + + $config = $xml->xml_parse_document( $config ); + + //----------------------------------------- + // Loop through and sort out settings... + //----------------------------------------- + + foreach( $xml->xml_array['installdata']['action'] as $id => $entry ) + { + $_pages[ $entry['position']['VALUE'] ] = array( 'file' => $entry['file']['VALUE'], + 'menu' => $entry['menu']['VALUE'] ); + } + + ksort( $_pages ); + + foreach( $_pages as $position => $data ) + { + $this->install_pages[ $data['file'] ] = $data['menu']; + } + } + + $this->install_pages['done'] = 'Finish'; + + /* Set Current Page */ + $this->page_current = ( $this->ipsclass->input['p'] ) ? $this->ipsclass->input['p'] : 'login'; + + if( ! $this->install_pages[$this->page_current] ) + { + $this->page_current = 'login'; + } + } + + /** + * install_template::set_title + * + * Sets the title for the current page + * + * @var string $title + */ + function set_title( $title ) + { + $this->page_title = $title; + } + + /** + * install_template::append + * + * Adds to the main body output + * + * @var string $add + */ + + function append( $add ) + { + $this->page_content .= $add; + } + + + /** + * install_template::output + * + * Builds page and sends to browser + * + */ + function output() + { + /* Build Side Bar */ + $curr_reached = 0; + $this->progress = array(); + + foreach( $this->install_pages as $key => $page ) + { + if( $key == $this->page_current ) + { + $this->progress[] = array( 'step_doing', $page ); + $curr_reached = 1; + } + else if( $curr_reached ) + { + $this->progress[] = array( 'step_notdone', $page ); + } + else + { + $this->progress[] = array( 'step_done', $page ); + } + + } + + $this->page_template(); + } + + /*************************************************************** + * + * HTML TEMPLATE FUNCTIONS + * + **************************************************************/ + + // ------------------------------------------------------------ + // Main Template + // ------------------------------------------------------------ + function page_template() + { +echo << + + + IPS Upgrader + + + + + +

     

    +

     

    +

     

    +
    + + +
    +
    + +

    Welcome to the IPB Upgrader

    +
    +
    +
    +
    +

    {$this->install_pages[$this->page_current]}

    + +
      + +EOF; + +foreach( $this->progress as $p ) +{ +echo "
    • {$p[1]}
    • "; +} + +echo << +
    + +
    +
    +
    + +
    + +
    +

    {$this->product_name} Upgrade

    + +
    +
    +
    + + {$this->page_content} +
    +
    +
    +
    + +
    +
    +
    + +
    + +
    +EOF; + +if( ! $this->hide_next ) +{ +if( $this->next_action == 'disabled' ) +{ +echo << +EOF; +} +else if( $this->in_error == 1 ) +{ +echo << +EOF; +} +else +{ +echo << +EOF; +} +} + +echo << +
    +
    + + +
    +
    +
    + + + + + +EOF; + } + + // ------------------------------------------------------------ + // Login Page Template + // ------------------------------------------------------------ + function login_page( $msg='' ) + { + if ( $msg ) + { + $extra = "
    +
    +

    {$msg}

    +

    "; + } + + +return << +
    +
    + +
    +
    + Welcome to the upgrade routine for {$this->product_name}. This wizard will guide you through the upgrade process. +
    +
    +
    {$extra} +

    Verification Required - Please Log In

    + You must log in with your forums administrative log in details to access the upgrade system.
    +
    + + + + + + + + + +
    Your Forum Username:
    Your Forum Password:
    +EOF; + } + + // ------------------------------------------------------------ + // Overview Page Template + // ------------------------------------------------------------ + function overview_page( $current_version, $summary ) + { +return << +
    +
    + +
    +
    + Welcome to the upgrader for {$this->product_name}. This wizard will guide you through the upgrade process. +
    +
    +
    +

    Upgrade summary

    + Current version: $current_version.
    + This script will: $summary
    +
    +EOF; + } + + // ------------------------------------------------------------ + // EULA Page Template + // ------------------------------------------------------------ + function eula_page( $eula ) + { +return << + +check_eula = function() +{ + if( document.getElementById( 'eula' ).checked == true ) + { + return true; + } + else + { + alert( 'You must agree to the license before continuing' ); + return false; + } +} + +document.getElementById( 'install-form' ).onsubmit = check_eula; + + + +Please read and agree to the End User License Agreement before continuing.

    + + +
    + $eula +
    + I agree to the license agreement + + +EOF; + } + + + // ------------------------------------------------------------ + // Install Page Splash Template + // ------------------------------------------------------------ + function install_page() + { +return << +The upgrader is now ready to complete the upgrade of your {$this->product_name}. Click Start to +begin the automatic process!

    + + +

    + +
    + +
    +EOF; + } + + // ------------------------------------------------------------ + // Install Page Refresh Template + // ------------------------------------------------------------ + function install_page_refresh( $output=array() ) + { +$HTML = << +// + +
      +EOF; + +foreach( $output as $l ) +{ +$HTML .= << $l +EOF; +} + +$HTML .= << +
      +
      + +
      +EOF; + + return $HTML; + } + + // ------------------------------------------------------------ + // Install Progress Screen + // ------------------------------------------------------------ + function install_progress( $line ) + { +$HTML = << +EOF; + +foreach( $line as $l ) +{ +$HTML .= << $l +EOF; +} + +$HTML .= << +EOF; + + return $HTML; + } + + + // ------------------------------------------------------------ + // Install Skin Revert + // ------------------------------------------------------------ + function install_template_skinrevert( $skin_name="" ) + { +$HTML = <<

      Revert skin changes?


      + During upgrades, there are often changes to the skin templates to fix bugs or add new features.

      + If you do not revert changes you have made to your skin templates, you will not see the changes we have made, however if you have modified + your skin templates reverting the skin changes will cause you to lose the customizations you have made.

      + If you have not made many customizations to your skins, it is recommended that you choose to revert your skin changes.

      + If you have custom skins installed, or have heavily modified your skin templates, it is recommended that you use the skin difference tool + available in your admin control panel after the upgrade is complete to apply new changes to your templates instead.

      + +

      Do you wish to revert changes made to '{$skin_name}'?

      + +EOF; + + return $HTML; + } + + // ------------------------------------------------------------ + // Install Done Screen + // ------------------------------------------------------------ + function install_done( $url ) + { +$HTML .= << +   Upgrade complete!

      + Congratulations, your {$this->product_name} is now up to date and ready to use! Below are some + links you may find useful.


      +

      Useful Links

      + +EOF; + return $HTML; + } + + // ------------------------------------------------------------ + // Warning Message Template + // ------------------------------------------------------------ + function warning( $messages ) + { +$HTML = << +
      +
      +EOF; + +foreach( $messages as $msg ) +{ + $HTML .= "

      $msg

      "; +} + +$HTML .= <<
      + +EOF; + + $this->append( $HTML ); + } +} + ?> \ No newline at end of file diff --git a/upload/upgrade/custom/app.php b/upload/upgrade/custom/app.php new file mode 100644 index 00000000..1810c634 --- /dev/null +++ b/upload/upgrade/custom/app.php @@ -0,0 +1,389 @@ +ipsclass->input['p'] ) && $this->ipsclass->input['p'] != 'overview' ) + { + $this->ipsclass->member = $this->get_member(); + + if ( ! $this->ipsclass->member['id'] ) + { + $this->template->page_current = 'login'; + $this->template->message = "You do not have access to this tool."; + } + + if ( $this->ipsclass->return_md5_check() != $this->saved_data['securekey'] ) + { + $this->template->page_current = 'login'; + $this->template->message = "You do not have access to this tool."; + } + + if ( ! $this->ipsclass->member['g_access_cp'] ) + { + $this->template->page_current = 'login'; + $this->template->message = "You must be an admin to access this upgrade script."; + } + + if( $this->ipsclass->DB->field_exists( 'converge_id', 'members_converge' ) ) + { + if( !isset($this->saved_data['vid']) OR !($this->saved_data['vid'] < 10003) ) + { + $this->ipsclass->converge->converge_load_member( $this->ipsclass->member['email'] ); + } + } + } + } + + /*-------------------------------------------------------------------------*/ + // Get the current version and the next version to upgrade to.. + /*-------------------------------------------------------------------------*/ + + function get_version_latest() + { + $this->current_version = ''; + $this->current_upgrade = ''; + + $this->db_contents = $this->get_db_structure(); + $this->dir_contents = $this->get_dir_structure(); + + //-------------------------------- + // Get latest ID... + //-------------------------------- + $dir_versions = array_reverse($this->dir_contents); + $this->last_poss_id = array_shift( $dir_versions ); + + //-------------------------------- + // Get datafile + //-------------------------------- + + if ( file_exists( ROOT_PATH.'resources/version_history.php' ) ) + { + require_once( ROOT_PATH.'resources/version_history.php' ); + + $this->versions = $import_versions; + } + + //------------------------------------------ + // Copy & pop DB array and get next + // upgrade script + //------------------------------------------ + + $tmp = $this->db_contents; + + $this->current_version = array_pop( $tmp ); + + if ( ! $this->current_version ) + { + if ( $this->saved_data['vid'] ) + { + $this->current_version = intval($this->saved_data['vid']); + } + else if ( $this->ipsclass->DB->field_exists( 'sub_id', 'subscriptions' ) ) + { + $this->current_version = '10003'; + } + else if ( $this->ipsclass->DB->field_exists( 'perm_id', 'forum_perms' ) ) + { + $this->current_version = '10002'; + } + else + { + $this->current_version = '10001'; + } + } + + //------------------------------------------ + // Get the next upgrade script + //------------------------------------------ + + ksort( $this->dir_contents ); + + foreach( $this->dir_contents as $i => $a ) + { + if ( $this->current_version == '00000' ) + { + if ( $a > $this->current_upgrade ) + { + $this->current_upgrade = $a; + $this->modules_to_run[0] = $this->versions[ $a ]; + } + } + elseif ( $a > $this->current_version ) + { + if ( ! $this->current_upgrade ) + { + $this->current_upgrade = $a; + } + + $this->modules_to_run[] = $this->versions[ $a ]; + } + } + } + + /*-------------------------------------------------------------------------*/ + // GET INFO FROM THE DERTABASTIC + /*-------------------------------------------------------------------------*/ + + function get_db_structure() + { + $vers = array(); + + if ( $this->ipsclass->DB->field_exists ( "upgrade_id", "upgrade_history" ) ) + { + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'upgrade_history', 'order' => 'upgrade_version_id ASC' ) ); + $this->ipsclass->DB->simple_exec(); + + while( $r = $this->ipsclass->DB->fetch_row() ) + { + $vers[ $r['upgrade_version_id'] ] = $r['upgrade_version_id']; + } + } + + return $vers; + } + + /*-------------------------------------------------------------------------*/ + // Get dir structure.. + /*-------------------------------------------------------------------------*/ + + function get_dir_structure() + { + $return = array(); + + //------------------------------------------ + // Get the folder names + //------------------------------------------ + + $dh = opendir( INS_ROOT_PATH.'installfiles' ); + + while ( $file = readdir( $dh ) ) + { + if ( is_dir( INS_ROOT_PATH.'installfiles/'.$file ) ) + { + if ( $file != "." && $file != ".." ) + { + if ( strstr( $file, 'upg_' ) ) + { + $tmp = str_replace( "upg_", "", $file ); + $return[ $tmp ] = $tmp; + } + } + } + } + + closedir( $dh ); + + sort($return); + + return $return; + } + + + /** + * application_installer::cache_and_cleanup + * + * Final install step, allows for any remaining app specific functions + * + */ + function cache_and_cleanup() + { + //------------------------------------------------------------- + // BBCODE + //------------------------------------------------------------- + + $output[] = "Rebuilding bbcode cache..."; + + $this->ipsclass->cache['bbcode'] = array(); + + $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'custom_bbcode' ) ); + $bbcode = $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row($bbcode) ) + { + $this->ipsclass->cache['bbcode'][] = $r; + } + + $this->ipsclass->update_cache( array( 'name' => 'bbcode', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Forum cache + //------------------------------------------------------------- + + $output[] = "Rebuilding forum cache..."; + + $this->ipsclass->update_forum_cache(); + + //------------------------------------------------------------- + // Group Cache + //------------------------------------------------------------- + + $output[] = "Rebuilding group cache..."; + + $this->ipsclass->cache['group_cache'] = array(); + + $this->ipsclass->DB->simple_construct( array( 'select' => "*", + 'from' => 'groups' + ) ); + + $this->ipsclass->DB->simple_exec(); + + while ( $i = $this->ipsclass->DB->fetch_row() ) + { + $this->ipsclass->cache['group_cache'][ $i['g_id'] ] = $i; + } + + $this->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Systemvars + //------------------------------------------------------------- + + $output[] = "Rebuilding system cache..."; + + $this->ipsclass->cache['systemvars'] = array(); + + $result = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) ); + + $this->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); + $this->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600; + + $this->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); + + //----------------------------------------- + // Moderators + //----------------------------------------- + + $output[] = "Rebuilding moderator cache..."; + + $this->ipsclass->cache['moderators'] = array(); + + require_once( ROOT_PATH.'sources/action_admin/moderator.php' ); + $mod = new ad_moderator(); + $mod->ipsclass =& $this->ipsclass; + + $mod->rebuild_moderator_cache(); + + //----------------------------------------- + // Cal events / Birthdays + //----------------------------------------- + + $output[] = "Rebuilding calendar events/birthdays cache..."; + + require_once( ROOT_PATH . 'sources/action_admin/calendars.php' ); + $calendars = new ad_calendars(); + $calendars->ipsclass =& $this->ipsclass; + + $calendars->calendar_rebuildcache( 0 ); + $calendars->calendars_rebuildcache( 0 ); + + //------------------------------------------------------------- + // Ranks + //------------------------------------------------------------- + + $output[] = "Rebuilding ranks cache..."; + + $this->ipsclass->cache['ranks'] = array(); + + $this->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, posts', + 'from' => 'titles', + 'order' => "posts DESC", + ) ); + + $this->ipsclass->DB->simple_exec(); + + while ($i = $this->ipsclass->DB->fetch_row()) + { + $this->ipsclass->cache['ranks'][ $i['id'] ] = array( + 'TITLE' => $i['title'], + 'PIPS' => $i['pips'], + 'POSTS' => $i['posts'], + ); + } + + $this->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) ); + + + //------------------------------------------------------------- + // SETTINGS + //------------------------------------------------------------- + + $output[] = "Rebuilding settings cache..."; + + require_once( ROOT_PATH . 'sources/action_admin/settings.php' ); + $settings = new ad_settings(); + $settings->ipsclass =& $this->ipsclass; + + $settings->setting_rebuildcache(); + + //------------------------------------------------------------- + // EMOTICONS + //------------------------------------------------------------- + + $output[] = "Rebuilding emoticons cache..."; + + require_once( ROOT_PATH . 'sources/action_admin/emoticons.php' ); + $emoticons = new ad_emoticons(); + $emoticons->ipsclass =& $this->ipsclass; + + $emoticons->emoticon_rebuildcache(); + + //------------------------------------------------------------- + // LANGUAGES + //------------------------------------------------------------- + + $output[] = "Rebuilding languages cache..."; + + $this->ipsclass->cache['languages'] = array(); + + $this->ipsclass->DB->simple_construct( array( 'select' => 'ldir,lname', 'from' => 'languages' ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $this->ipsclass->cache['languages'][] = $r; + } + + $this->ipsclass->update_cache( array( 'name' => 'languages', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // ATTACHMENT TYPES + //------------------------------------------------------------- + + $output[] = "Rebuilding attachment types cache..."; + + $this->ipsclass->cache['attachtypes'] = array(); + + $this->ipsclass->DB->simple_construct( array( 'select' => 'atype_extension,atype_mimetype,atype_post,atype_photo,atype_img', 'from' => 'attachments_type', 'where' => "atype_photo=1 OR atype_post=1" ) ); + $this->ipsclass->DB->simple_exec(); + + while ( $r = $this->ipsclass->DB->fetch_row() ) + { + $this->ipsclass->cache['attachtypes'][ $r['atype_extension'] ] = $r; + } + + $this->ipsclass->update_cache( array( 'name' => 'attachtypes', 'array' => 1, 'deletefirst' => 1 ) ); + + return $output; + } +} + +?> \ No newline at end of file diff --git a/upload/upgrade/dbchecker.js b/upload/upgrade/dbchecker.js new file mode 100644 index 00000000..1c1f1035 --- /dev/null +++ b/upload/upgrade/dbchecker.js @@ -0,0 +1,91 @@ +/*-------------------------------------------------------------------------*/ +// Hide / Unhide menu elements +/*-------------------------------------------------------------------------*/ + +function ShowHide(id1, id2) +{ + if (id1 != '') toggleview(id1); + if (id2 != '') toggleview(id2); +} + +/*-------------------------------------------------------------------------*/ +// Get element by id +/*-------------------------------------------------------------------------*/ + +function my_getbyid(id) +{ + itm = null; + + if (document.getElementById) + { + itm = document.getElementById(id); + } + else if (document.all) + { + itm = document.all[id]; + } + else if (document.layers) + { + itm = document.layers[id]; + } + + return itm; +} + +/*-------------------------------------------------------------------------*/ +// Show/hide toggle +/*-------------------------------------------------------------------------*/ + +function toggleview(id) +{ + if ( ! id ) return; + + if ( itm = my_getbyid(id) ) + { + if (itm.style.display == "none") + { + my_show_div(itm); + } + else + { + my_hide_div(itm); + } + } +} + +/*-------------------------------------------------------------------------*/ +// Set DIV ID to hide +/*-------------------------------------------------------------------------*/ + +function my_hide_div(itm) +{ + if ( ! itm ) return; + + itm.style.display = "none"; +} + +/*-------------------------------------------------------------------------*/ +// Set DIV ID to show +/*-------------------------------------------------------------------------*/ + +function my_show_div(itm) +{ + if ( ! itm ) return; + + itm.style.display = ""; +} + +var all_queries = new Array(); + +function fix_all_dberrors() +{ + var url = 'index.php?p=install&sub=checkdb&saved_data='+save_data; + + for( var i=0; ivars = $INFO; - -//-------------------------------- -// The clocks a' tickin' -//-------------------------------- - -$Debug = new Debug; -$Debug->startTimer(); - -//-------------------------------- -// Load the DB driver and such -//-------------------------------- - -$ipsclass->init_db_connection(); - -//-------------------------------- -// Check to make sure we're not -// trying to update < 2.0.0 -//-------------------------------- - -if ( ! $ipsclass->DB->field_exists( 'sub_id', 'subscriptions' ) OR ! $ipsclass->DB->field_exists( 'perm_id', 'forum_perms' ) ) -{ - $ipsclass->boink_it( $INFO['board_url'].'/upgrade/upgrade.php' ); -} - -//-------------------------------- -// Set up our vars -//-------------------------------- - -$ipsclass->parse_incoming(); - -//-------------------------------- -// Set converge -//-------------------------------- - -$ipsclass->converge = new class_converge( $ipsclass->DB ); - -//-------------------------------- -// Get cache... -//-------------------------------- - -$ipsclass->init_load_cache(); - -//-------------------------------- -// Initialize the FUNC -//-------------------------------- - -$ipsclass->initiate_ipsclass(); - -//-------------------------------- -// Set up our vars -//-------------------------------- - -$ipsclass->core = new core_functions(); -$ipsclass->core->ipsclass =& $ipsclass; - -$ipsclass->template = new template(); -$ipsclass->template->ipsclass =& $ipsclass; - -//-------------------------------- -// Get dir contents -//-------------------------------- - -$ipsclass->dir_contents = $ipsclass->core->get_dir_structure(); - -//-------------------------------- -// Get DB contents -//-------------------------------- - -$ipsclass->db_contents = $ipsclass->core->get_db_structure(); - -//-------------------------------- -// Get latest ID... -//-------------------------------- - -# PHP 5.0.5 problem... -$tmp_var = array_reverse($ipsclass->dir_contents); -$ipsclass->last_poss_id = array_shift( $tmp_var ); - -//-------------------------------- -// OK to disCO -//-------------------------------- - -$ipsclass->safe_act = array( 'recache', 'acpperms', 'templates', 'templatescache', 'settings', 'finish' ); - -//-------------------------------- -// Get datafile -//-------------------------------- - -if ( ! $ipsclass->last_poss_id ) -{ - $ipsclass->core->login_screen( "Обнаружена ошибка — мы не можем определить текущую версию, или отсутствуют некоторые файлы, требуемые для обновления" ); -} - -if ( file_exists( THIS_PATH.'upg_'.$ipsclass->last_poss_id.'/version_history.php' ) ) -{ - require_once( THIS_PATH.'upg_'.$ipsclass->last_poss_id.'/version_history.php' ); - - $ipsclass->versions = $import_versions; -} -else -{ - $ipsclass->core->login_screen( "Невозможно найти требуемый файл: 'upg_{$ipsclass->last_poss_id}/version_history.php'"); -} - -//-------------------------------- -// Version logic check -//-------------------------------- - -$ipsclass->core->get_version_latest(); - -if ( ! $ipsclass->current_version ) -{ - $ipsclass->core->login_screen( "Невозможно найти требуемый файл" ); -} - -if ( ! $ipsclass->input['act'] ) -{ - if ( $ipsclass->current_version >= intval( $ipsclass->current_upgrade ) ) - { - $ipsclass->core->login_screen( "ОБНОВЛЕНИЕ НЕ ТРЕБУЕТСЯ! Вы имеете или последнюю версию форума или ваша версия новее той, до которой вы пытаетесь обновиться. :)" ); - } -} - -//-------------------------------- -// Get our loverly member -//-------------------------------- - -$ipsclass->member = $ipsclass->core->get_member(); - -//-------------------------------- -// Log in? -//-------------------------------- - -if ( $ipsclass->input['act'] != 'login' ) -{ - if ( ! $ipsclass->member['id'] ) - { - $ipsclass->core->login_screen("Вы не имеете доступ к этой системе обновления."); - } - - if ( $ipsclass->return_md5_check() != $ipsclass->securekey ) - { - $ipsclass->core->login_screen("Вы не имеете доступ к этой системе обновления!"); - } - - if ( ! $ipsclass->member['g_access_cp'] ) - { - $ipsclass->core->login_screen('Вы обязаны быть администратором для доступа к системе обновления!'); - } -} -else -{ - //---------------------------------- - // We must have submitted the form - // time to check some details. - //---------------------------------- - - if ( empty($ipsclass->input['username']) ) - { - $ipsclass->core->login_screen("Вы обязаны ввести ваше имя пользователя на форуме прежде, чем продолжить"); - } - - if ( empty($ipsclass->input['password']) ) - { - $ipsclass->core->login_screen("Вы обязаны ввести ваш пароль на форуме прежде, чем продолжить"); - } - - //---------------------------------- - // Attempt to get the details from the - // DB - //---------------------------------- - - $ipsclass->DB->query("SELECT m.*, g.* FROM ibf_members m, ibf_groups g WHERE LOWER(name)='".strtolower($ipsclass->input['username'])."' and m.mgroup=g.g_id"); - - $mem = $ipsclass->DB->fetch_row(); - - //---------------------------------- - // Get perms - //---------------------------------- - - if ( empty($mem['id']) ) - { - $ipsclass->core->login_screen("Невозможно найти пользователя с указанным именем, пожалуйста перепроверьте данные и попробуйте снова"); - } - - //---------------------------------- - // Load converge member - //---------------------------------- - - $ipsclass->converge->converge_load_member($mem['email']); - - if ( ! $ipsclass->converge->member['converge_id'] ) - { - $ipsclass->core->login_screen("Невозможно найти пользователя с указанным именем, пожалуйста перепроверьте данные и попробуйте снова"); - } - - //---------------------------------- - // Check converge pass - //---------------------------------- - - $pass = md5( $ipsclass->input['password'] ); - - //------------------------------ - // Check password... - //------------------------------ - - if ( $ipsclass->converge->converge_authenticate_member( $pass ) != TRUE ) - { - $ipsclass->core->login_screen("Введенный пароль некорректный"); - } - else - { - if ( $mem['g_access_cp'] != 1 ) - { - $ipsclass->core->login_screen("Вы не имеет доступ к админцентру форума"); - } - else - { - - //---------------------------------- - // All is good, bounce onwards... - //---------------------------------- - - $ipsclass->member = $mem; - - $ipsclass->core->redirect( "index.php?act=work&loginkey={$mem['member_login_key']}&securekey=".$ipsclass->return_md5_check()."&mid={$mem['id']}", "Спасибо за авторизацию...." ); - } - } -} - -//=========================================================================== -// MAIN LOGIC... -//=========================================================================== - -//-------------------------------- -// Get and run upgrade script -//-------------------------------- - -if ( ! in_array( $ipsclass->input['act'], $ipsclass->safe_act ) ) -{ - if ( file_exists( THIS_PATH.'upg_'.$ipsclass->current_upgrade.'/version_upgrade.php' ) ) - { - require_once( THIS_PATH.'upg_'.$ipsclass->current_upgrade.'/version_upgrade.php' ); - $runme = new version_upgrade(); - $runme->ipsclass =& $ipsclass; - $runme->version_process(); - } - else - { - $ipsclass->core->login_screen( "Невозможно найти требуемый файл: 'upg_{$ipsclass->current_upgrade}/version_upgrade.php'"); - } -} - -// Module(work) -> done [ settings -> acpperms -> templatecomponents ] -> recache -> templates -> templatesrecache -> finish - -switch ($ipsclass->input['act']) -{ - case 'recache': - $ipsclass->core->rebuild_caches(); - break; - case 'templates': - $ipsclass->core->rebuild_templates(); - break; - case 'templatescache': - $ipsclass->core->rebuild_templates_cache(); - break; - case 'finish': - $ipsclass->core->upgrade_complete(); - break; - case 'done': - $ipsclass->core->module_complete(); - break; - case 'work': - $runme->auto_run(); - break; - default: - $ipsclass->core->login_screen(); - break; -} - - +vars = $INFO; + +//-------------------------------- +// Load the DB driver and such +//-------------------------------- + +$ipsclass->init_db_connection(); +$ipsclass->DB->return_die = 1; +$ipsclass->DB->obj['use_error_log'] = 0; + +//-------------------------------- +// Set up our vars +//-------------------------------- + +$ipsclass->parse_incoming(); + +$ipsclass->initiate_ipsclass(); + +//-------------------------------- +// Set converge +//-------------------------------- + +$ipsclass->converge = new class_converge( $ipsclass->DB ); + +//-------------------------------- +// Setup Main Installer Class +//-------------------------------- + +require( INS_ROOT_PATH . 'core/class_installer.php' ); +require( INS_ROOT_PATH . 'custom/app.php' ); + +$install = new application_installer(); +$install->ipsclass =& $ipsclass; +$install->read_config(); + +$install->template = new install_template( $ipsclass ); +$install->template->product_name = $install->product_name; +$install->template->product_version = $install->product_version; +$install->template->product_long_version = $install->product_long_version; + +//-------------------------------- +// Saved Data +//-------------------------------- +$install->saved_data = unserialize( stripslashes( $_POST['saved_data'] ) ); + +if( $ipsclass->input['sub'] == "checkdb" AND !$install->saved_data ) +{ + $install->saved_data = unserialize( stripslashes( urldecode($_GET['saved_data']) ) ); +} + +// ------------------------------- +// Run Install Step +// ------------------------------- + +$install->pre_process(); +$install->process(); +$install->post_process(); + +// ------------------------------- +// Output +// ------------------------------- +$install->template->saved_data = serialize( $install->saved_data ); +$install->template->output( $install->product_name, $install->product_version ); + ?> \ No newline at end of file diff --git a/upload/upgrade/install.css b/upload/upgrade/install.css new file mode 100644 index 00000000..849bf080 --- /dev/null +++ b/upload/upgrade/install.css @@ -0,0 +1,213 @@ +BODY +{ + background-color: #ffffff; + font-family: Verdana, Tahoma, "Lucida Sans", "Lucida Sans Unicode", Arial, Sans-serif; + font-size: 11px; +} + +#ipswrapper { + width: 100%; + margin: auto; +} + +.main_shell { + background-color: #6999DA; + border: 1px solid #24426A; + width: 606px; + margin-left:auto; + margin-right:auto; +} + +H1 { + margin: 0px; + background-image: url('images/title_bar.gif'); + padding: 7px 5px 6px 5px; + font-size: 13px; + color: #ffffff; + font-weight: bold; +} + +H2 { + margin: 0px; + font-size: 18px; +} + +H3 { + font-size: 11px; + margin: 0px; +} + +TABLE { + font-size: 10px; +} + +.content_shell { + + margin: 0px 3px 3px 3px; + border: 1px solid #24426A; + border-top: 3px solid #24426A; + background-image: url('images/main_bg.gif'); + background-repeat: repeat-x; + background-color: #EFF2F7; +} + +.package { + height: 417px; + background-image: url('images/package_bg.gif'); + background-repeat: no-repeat; + background-position: top-left; +} + +.content_wrap { + width: 70%; + height: 320px; + float: right; + margin: 6px 6px 4px 0px; + padding: 10px; + background-color: #ffffff; + border: 1px solid #000000; + line-height: 150%; + overflow-y:auto; + overflow-x:hidden; + -moz-border-radius: 10px; +} + +.install_info { + float: left; + margin: 10px 0px 0px 10px; + font-size: 12px; +} + +.install_info H3 { + font-size: 15px; + color: #6D87A9; +} + +.install_info UL { + margin: 0px; + margin-top: 15px; + padding-left: 25px; + list-style-type: none; +} + +#progress .step_done { + list-style-image: url('images/bullet_done.gif'); + color: #44638E; + font-style: italic; +} + +#progress .step_doing { + list-style-image: url('images/bullet_doing.gif'); + font-weight: bold; +} + +#progress .step_notdone { + list-style-image: url('images/bullet_notdone.gif'); +} + +.warning { + background-color: #EDF1AB; + border: 1px solid #6E704B; + padding: 5px; + font-weight: bold; + -moz-border-radius: 5px; + +} + +.hr { + margin: 4px 6px 0px 6px; + border-bottom: 1px solid #627686; +} + +.nav_button { + background-color: #B3C9E6; + border: 1px solid #24426A; + font-size: 12px; + padding: 3px 6px 3px 6px; + -moz-border-radius: 5px; +} + +.copyright { + width: 98%; + text-align: right; + font-size: 9px; + color: #9EA7B3; + padding-top: 3px; + padding-right: 5px; +} + +.eula { + height: 210px; + border: 1px solid #76774C; + background-color: #FDFDD3; + padding: 5px; + overflow: auto; +} + +#auto_progress LI { + list-style: none; + color: #029901; + font-size: 11px; + font-weight: bold; + padding: 3px; +} + +.done_text { + font-size: 14px; + font-weight: bold; +} + +#links { + margin: 0px; + padding: 5px; +} + +#links LI { + list-style: none; +} + +.float_img { + float: left; + margin-right: 5px; +} + +.info { + background-color: #DCE6F3; + border: 1px solid #5876A0; + padding: 4px; + line-height: 120%; + -moz-border-radius: 7px; + color: #1D3A60; +} + +.sql_form { + width: 100%; + font-size: 11px; + border-top: 1px solid #6A6A6A; + border-left: 1px solid #6A6A6A; + border-right: 1px solid #A8A8A8; + border-bottom: 1px solid #A8A8A8; +} + +FIELDSET { + border: 1px solid #2D4461; + background-color: #E6EBF1; + margin-top: 5px; + padding: 7px; + -moz-border-radius: 7px; + color: #2D4461; +} + +FIELDSET LEGEND { + font-weight: bold; +} + +TABLE .title { + color: #2D4461; + font-weight: bold; + padding-bottom: 3px; +} + +TABLE .content { + padding-bottom: 3px; +} \ No newline at end of file diff --git a/upload/upgrade/installfiles/config.xml b/upload/upgrade/installfiles/config.xml new file mode 100644 index 00000000..d7570317 --- /dev/null +++ b/upload/upgrade/installfiles/config.xml @@ -0,0 +1,63 @@ + + + Invision Power Board + 2.2 ALPHA 2 + 22001 + 1134742970 + Invision Power Services, Inc. +Invision Power Board Software +End User License Agreement (Version 2.2.x) + +LICENSE +Invision Power Services (IPS) grants you a non-exclusive license to use the Software on one installation to be accessable by one URL (web address) subject to the provisions in all sections of this Agreement. + +TERM +Invision Power Board is offered under yearly and lifetime licensing. Both license terms feature technical support and service plus access to upgrades to the software as they are available. In the event a one year license expires without being renewed, the software will remain completely functional but will be unsupported and no access to upgrades will be made available. + +SCOPE OF GRANT + +You may: + + * customize the Software's design and operation to suit the internal needs of your web site except to the extent not permitted in this Agreement + * produce and distribute modification instructions, Skin packs, or Language packs provided that they contain notification that the Skin and Language packs were exported from and originally created by Invision Power Board and/or IPS. The modifications instructions you personally create are not owned by IPS so long as they contain no proprietary coding from Invision Power Board. + * create applications which interface with the operation of the Software provided said application is an original work + + +You may not: + + * permit other individuals to use the Software except under the terms listed above + * reverse engineer, disassemble, or create derivative works based on the Software for distribution or usage outside your web site + * use the Software in such as way as to condone or encourage terrorism, promote or provide pirated Software, or any other form of illegal or damaging activity + * modify and/or remove any copyright notices or labels on the Software on each page (unless copyright output removal license is purchased) and in the header of each script source file + * distribute the Software + * distribute individual copies of files, libraries, or other programming material in the Software package + * distribute or modify proprietary graphics, HTML, or CSS packaged with the Software for use in Software applications other than Invision Power Board or web sites without written permission from IPS + * modify the software to function in more than one instance or location (URL, domain, subdomain, etc.) from a single set of source program files unless each location is separately licensed + + +DISCLAIMER OF WARRANTY +The Software is provided on an "AS IS" basis, without warranty of any kind, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement. The entire risk as to the quality and performance of the Software is borne by you. Should the Software prove defective, you and not IPS assume the entire cost of any service and repair. In addition, the security mechanisms implemented by IPS Software have inherent limitations, and you must determine that the Software sufficiently meets your requirements. This disclaimer of warranty constitutes an essential part of the Agreement. + +TITLE +Title, ownership rights, and intellectual property rights in the Software shall remain with IPS. The Software is protected by copyright laws and treaties. Title and related rights in the content generated through the Software is the property of the applicable content owner and may be protected by applicable law. This License gives IPS no rights to such content. + +TERMINATION +This Agreement will terminate automatically upon failure to comply with the limitations described herein or on written notice from an authorized representative of IPS. On termination, you must destroy all copies of the Software within 48 hours. Termination of the license due to noncompliance will not result in any refunds of license fees. + +MISCELLANEOUS +IPS reserves the right to publish a selected list of users of the Software. IPS reserves the right to change the terms of this Agreement at any time. Changes to the Agreement will be announced via email using the IPS email notification list. Failure to receive notification of a change does not make those changes invalid. A current copy of this Agreement will be available on the Invision Power Board web site. + +Skin packs and Language packs are defined as the group of code, text, and graphics that are exported from the Software using the provided functions of the Software Administration Control Panel. Integrated add-ons for Invision Power Board are released under this Agreement. Purchasing or downloading integrated add-ons constitute an additional, separate instance of this Agreement. + +Technical support will not be provided for third-party modifications to the Software including modifications to code, Skin packs, and Language packs to any license holder. If the Software is modified using a third-party modification instruction or otherwise, technical support may be refused to any license holder. + +PROPRIETARY LABELS +Authorization to remove or modify output of copyright notices can be obtained from IPS for a fee. This fee authorizes you to remove the output of copyright notices: it does not give you authorization to remove any copyright notices in the program source files or any other rights. + +GOVERNING LAW +This Agreement shall be governed by the Laws of the Commonwealth of Virginia and the Laws of the United States of America. Any action in regard to this Agreement or arising out of its terms and conditions shall be instituted and litigated in the Circuit Court of Bedford County. Each of the parties consents to jurisdiction in such Court and agrees that service of process as provided by the states and rules of civil procedures of the Commonwealth of Virginia shall be sufficient. (FTB) + +MANUFACTURER +Invision Power Services, Inc., 1115 Vista Park Drive Suite C, Forest, VA 24551. For questions, write to the above address, email info@invisionpower.com, or call 434-316-7201. + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/sequence.xml b/upload/upgrade/installfiles/sequence.xml new file mode 100644 index 00000000..45bdbe91 --- /dev/null +++ b/upload/upgrade/installfiles/sequence.xml @@ -0,0 +1,22 @@ + + + login + Login + 0 + + + overview + Overview + 1 + + + eula + EULA + 2 + + + install + Upgrade + 3 + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_10002/version_upgrade.php b/upload/upgrade/installfiles/upg_10002/version_upgrade.php new file mode 100644 index 00000000..a03a2f1d --- /dev/null +++ b/upload/upgrade/installfiles/upg_10002/version_upgrade.php @@ -0,0 +1,2672 @@ + IPB UPGRADE 1.1 -> 2.0 SQL STUFF! +| > Script written by Matt Mecham +| > Date started: 21st April 2004 +| > Interesting fact: Turin Brakes are also good ++-------------------------------------------------------------------------- +*/ + +class version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->install->saved_data['workact'] ) + { + case 'step_1': + $this->step_1(); + break; + case 'step_2': + $this->step_2(); + break; + case 'step_3': + $this->step_3(); + break; + case 'step_4': + $this->step_4(); + break; + case 'step_5': + $this->step_5(); + break; + case 'step_6': + $this->step_6(); + break; + case 'step_7': + $this->step_7(); + break; + case 'step_8': + $this->step_8(); + break; + case 'step_9': + $this->step_9(); + break; + case 'step_10': + $this->step_10(); + break; + case 'step_11': + $this->step_11(); + break; + case 'step_12': + $this->step_12(); + break; + case 'step_13': + $this->step_13(); + break; + case 'step_14': + $this->step_14(); + break; + case 'step_15': + $this->step_15(); + break; + case 'step_16': + $this->step_16(); + break; + case 'step_17': + $this->step_17(); + break; + case 'step_18': + $this->step_18(); + break; + case 'step_19': + $this->step_19(); + break; + case 'step_20': + $this->step_20(); + break; + case 'step_21': + $this->step_21(); + break; + case 'step_22': + $this->step_22(); + break; + case 'step_23': + $this->step_23(); + break; + case 'step_24': + $this->step_24(); + break; + + default: + $this->step_1(); + break; + } + if ( $this->install->saved_data['workact'] ) + { + $this->install->saved_data['vid'] = $this->install->current_version; + + return false; + } + else + { + return true; + } + } + + /*-------------------------------------------------------------------------*/ + // STEP 1: COPY AND POPULATE BACK UP FORUMS TABLE + /*-------------------------------------------------------------------------*/ + + function step_1() + { + $this->install->saved_data['st'] = 0; + + $SQL[] = "DROP TABLE if exists ".SQL_PREFIX."forums_perms;"; + + $SQL[]="CREATE TABLE ".SQL_PREFIX."forum_perms( + perm_id int(10) auto_increment NOT NULL, + perm_name varchar(250) NOT NULL, + PRIMARY KEY(perm_id) + );"; + + $SQL[] = "DROP TABLE if exists ".SQL_PREFIX."forums_bak;"; + + $table = $this->install->ipsclass->DB->sql_get_table_schematic( 'forums' ); + + $SQL[] = str_replace( SQL_PREFIX."forums", SQL_PREFIX."forums_bak", $table['Create Table'] ); + + $SQL[] = "INSERT INTO ".SQL_PREFIX."forums_bak SELECT * FROM ".SQL_PREFIX."forums"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ''; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $oq = $this->install->ipsclass->DB->query("SELECT g_id, g_title FROM ".SQL_PREFIX."groups ORDER BY g_id"); + + while( $r = $this->install->ipsclass->DB->fetch_row($oq) ) + { + $nq = $this->install->ipsclass->DB->query("REPLACE INTO ".SQL_PREFIX."forum_perms SET perm_id={$r['g_id']}, perm_name='{$r['g_title']} Mask'"); + $bq = $this->install->ipsclass->DB->query("UPDATE ".SQL_PREFIX."groups SET g_perm_id={$r['g_id']} WHERE g_id={$r['g_id']}"); + } + + $this->install->ipsclass->DB->query("update ".SQL_PREFIX."messages SET read_state=1 where vid='sent'"); + + $this->install->ipsclass->DB->query("DROP TABLE if exists ".SQL_PREFIX."attachments"); + + $this->install->message = "Forums table backed up - creating new tables next....

      $this->sqlcount queries run...."; + + $this->install->saved_data['workact'] = 'step_2'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 2: DROP FORUMS TABLE, CREATE NEW TABLES + /*-------------------------------------------------------------------------*/ + + function step_2() + { + $SQL[] = "CREATE TABLE ".SQL_PREFIX."attachments ( + attach_id int(10) NOT NULL auto_increment, + attach_ext varchar(10) NOT NULL default '', + attach_file varchar(250) NOT NULL default '', + attach_location varchar(250) NOT NULL default '', + attach_thumb_location varchar(250) NOT NULL default '', + attach_thumb_width smallint(5) NOT NULL default '0', + attach_thumb_height smallint(5) NOT NULL default '0', + attach_is_image tinyint(1) NOT NULL default '0', + attach_hits int(10) NOT NULL default '0', + attach_date int(10) NOT NULL default '0', + attach_temp tinyint(1) NOT NULL default '0', + attach_pid int(10) NOT NULL default '0', + attach_post_key varchar(32) NOT NULL default '0', + attach_msg int(10) NOT NULL default '0', + attach_member_id mediumint(8) NOT NULL default '0', + attach_approved int(10) NOT NULL default '1', + attach_filesize int(10) NOT NULL default '0', + PRIMARY KEY (attach_id), + KEY attach_pid (attach_pid), + KEY attach_msg (attach_msg), + KEY attach_post_key (attach_post_key), + KEY attach_mid_size (attach_member_id, attach_filesize) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."message_text ( + msg_id int(10) NOT NULL auto_increment, + msg_date int(10) default NULL, + msg_post text default '', + msg_cc_users text default '', + msg_sent_to_count smallint(5) NOT NULL default '0', + msg_deleted_count smallint(5) NOT NULL default '0', + msg_post_key varchar(32) NOT NULL default '0', + msg_author_id mediumint(8) NOT NULL default '0', + PRIMARY KEY (msg_id), + KEY msg_date (msg_date), + KEY msg_sent_to_count (msg_sent_to_count), + KEY msg_deleted_count (msg_deleted_count) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."message_topics ( + mt_id int(10) NOT NULL auto_increment, + mt_msg_id int(10) NOT NULL default '0', + mt_date int(10) NOT NULL default '0', + mt_title varchar(255) NOT NULL default '', + mt_from_id mediumint(8) NOT NULL default '0', + mt_to_id mediumint(8) NOT NULL default '0', + mt_owner_id mediumint(8) NOT NULL default '0', + mt_vid_folder varchar(32) NOT NULL default '', + mt_read tinyint(1) NOT NULL default '0', + mt_hasattach smallint(5) NOT NULL default '0', + mt_hide_cc tinyint(1) default '0', + mt_tracking tinyint(1) default '0', + mt_user_read int(10) default '0', + PRIMARY KEY (mt_id), + KEY mt_from_id (mt_from_id), + KEY mt_owner_id (mt_owner_id, mt_to_id, mt_vid_folder) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."skin_sets ( + set_skin_set_id int(10) NOT NULL auto_increment, + set_name varchar(150) NOT NULL default '', + set_image_dir varchar(200) NOT NULL default '', + set_hidden tinyint(1) NOT NULL default '0', + set_default tinyint(1) NOT NULL default '0', + set_css_method varchar(100) NOT NULL default 'inline', + set_skin_set_parent smallint(5) NOT NULL default '-1', + set_author_email varchar(255) NOT NULL default '', + set_author_name varchar(255) NOT NULL default '', + set_author_url varchar(255) NOT NULL default '', + set_css mediumtext NOT NULL default '', + set_wrapper mediumtext NOT NULL default '', + set_css_updated int(10) NOT NULL default '0', + set_cache_css mediumtext NOT NULL default '', + set_cache_macro mediumtext NOT NULL default '', + set_cache_wrapper mediumtext NOT NULL default '', + set_emoticon_folder varchar(60) NOT NULL default 'default', + PRIMARY KEY(set_skin_set_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."skin_templates_cache ( + template_id varchar(32) NOT NULL default '', + template_group_name varchar(255) NOT NULL default '', + template_group_content mediumtext NOT NULL default '', + template_set_id int(10) NOT NULL default '0', + primary key (template_id), + KEY template_set_id (template_set_id), + KEY template_group_name (template_group_name) + );"; + + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."mail_queue( + mail_id int(10) auto_increment NOT NULL, + mail_date int(10) NOT NULL default '0', + mail_to varchar(255) NOT NULL default '', + mail_from varchar(255) NOT NULL default '', + mail_subject text NOT NULL default '', + mail_content text NOT NULL default '', + mail_type varchar(200) NOT NULL default '', + PRIMARY KEY (mail_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."task_manager ( + task_id int(10) auto_increment NOT NULL, + task_title varchar(255) NOT NULL default '', + task_file varchar(255) NOT NULL default '', + task_next_run int(10) NOT NULL default 0, + task_week_day tinyint(1) NOT NULL default '-1', + task_month_day smallint(2) NOT NULL default '-1', + task_hour smallint(2) NOT NULL default '-1', + task_minute smallint(2) NOT NULL default '-1', + task_cronkey varchar(32) NOT NULL default '', + task_log tinyint(1) NOT NULL default '0', + task_description text NOT NULL default '', + task_enabled tinyint(1) NOT NULL default '1', + task_key varchar(30) NOT NULL default '', + task_safemode tinyint(1) NOT NULL default 0, + PRIMARY KEY(task_id), + KEY task_next_run (task_next_run) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."task_logs ( + log_id int(10) auto_increment NOT NULL, + log_title varchar(255) NOT NULL default '', + log_date int(10) NOT NULL default '0', + log_ip varchar(16) NOT NULL default '0', + log_desc text NOT NULL default '', + PRIMARY KEY(log_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."custom_bbcode ( + bbcode_id int(10) NOT NULL auto_increment, + bbcode_title varchar(255) NOT NULL default '', + bbcode_desc text NOT NULL default '', + bbcode_tag varchar(255) NOT NULL default '', + bbcode_replace text NOT NULL default '', + bbcode_useoption tinyint(1) NOT NULL default 0, + bbcode_example text NOT NULL default '', + PRIMARY KEY (bbcode_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."conf_settings ( + conf_id int(10) NOT NULL auto_increment, + conf_title varchar(255) NOT NULL default '', + conf_description text NOT NULL default '', + conf_group smallint(3) NOT NULL default 0, + conf_type varchar(255) NOT NULL default '', + conf_key varchar(255) NOT NULL default '', + conf_value text NOT NULL default '', + conf_default text NOT NULL default '', + conf_extra text NOT NULL default '', + conf_evalphp text NOT NULL default '', + conf_protected tinyint(1) NOT NULL default '0', + conf_position smallint(3) NOT NULL default '0', + conf_start_group varchar(255) NOT NULL default '', + conf_end_group tinyint(1) NOT NULL default '0', + conf_help_key varchar(255) NOT NULL default '0', + conf_add_cache tinyint(1) NOT NULL default '1', + PRIMARY KEY (conf_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."conf_settings_titles ( + conf_title_id smallint(3) NOT NULL auto_increment, + conf_title_title varchar(255) NOT NULL default '', + conf_title_desc text NOT NULL default '', + conf_title_count smallint(3) NOT NULL default '0', + conf_title_noshow tinyint(1) NOT NULL default '0', + conf_title_keyword varchar(200) NOT NULL default '', + PRIMARY KEY(conf_title_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."topics_read ( + read_tid int(10) NOT NULL default '0', + read_mid mediumint(8) NOT NULL default '0', + read_date int(10) NOT NULL default '0', + UNIQUE KEY read_tid_mid( read_tid, read_mid ) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."banfilters ( + ban_id int(10) NOT NULL auto_increment, + ban_type varchar(10) NOT NULL default 'ip', + ban_content text NOT NULL default '', + ban_date int(10) NOT NULL default '0', + PRIMARY KEY (ban_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."attachments_type ( + atype_id int(10) NOT NULL auto_increment, + atype_extension varchar(18) NOT NULL default '', + atype_mimetype varchar(255) NOT NULL default '', + atype_post tinyint(1) NOT NULL default '1', + atype_photo tinyint(1) NOT NULL default '0', + atype_img text NOT NULL default '', + PRIMARY KEY (atype_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."members_converge ( + converge_id int(10) auto_increment NOT NULL, + converge_email varchar(250) NOT NULL default '', + converge_joined int(10) NOT NULL default 0, + converge_pass_hash varchar(32) NOT NULL default '', + converge_pass_salt varchar(5) NOT NULL default '', + PRIMARY KEY( converge_id ) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."announcements ( + announce_id int(10) UNSIGNED NOT NULL auto_increment, + announce_title varchar(255) NOT NULL default '', + announce_post text NOT NULL default '', + announce_forum text NOT NULL default '', + announce_member_id mediumint(8) UNSIGNED NOT NULL default '0', + announce_html_enabled tinyint(1) NOT NULL default '0', + announce_views int(10) UNSIGNED NOT NULL default '0', + announce_start int(10) UNSIGNED NOT NULL default '0', + announce_end int(10) UNSIGNED NOT NULL default '0', + announce_active tinyint(1) NOT NULL default '1', + PRIMARY KEY (announce_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."mail_error_logs ( + mlog_id int(10) auto_increment NOT NULL, + mlog_date int(10) NOT NULL default '0', + mlog_to varchar(250) NOT NULL default '', + mlog_from varchar(250) NOT NULL default '', + mlog_subject varchar(250) NOT NULL default '', + mlog_content varchar(250) NOT NULL default '', + mlog_msg text NOT NULL default '', + mlog_code varchar(200) NOT NULL default '', + mlog_smtp_msg text NOT NULL default '', + PRIMARY KEY (mlog_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."bulk_mail ( + mail_id int(10) NOT NULL auto_increment, + mail_subject varchar(255) NOT NULL default '', + mail_content mediumtext NOT NULL default '', + mail_groups mediumtext NOT NULL default '', + mail_honor tinyint(1) NOT NULL default '1', + mail_opts mediumtext NOT NULL default '', + mail_start int(10) NOT NULL default '0', + mail_updated int(10) NOT NULL default '0', + mail_sentto int(10) NOT NULL default '0', + mail_active tinyint(1) NOT NULL default '0', + mail_pergo smallint(5) NOT NULL default '0', + PRIMARY KEY (mail_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."upgrade_history ( + upgrade_id int(10) NOT NULL auto_increment, + upgrade_version_id int(10) NOT NULL default 0, + upgrade_version_human varchar(200) NOT NULL default '', + upgrade_date int(10) NOT NULL default '0', + upgrade_mid int(10) NOT NULL default '0', + upgrade_notes text NOT NULL default '', + PRIMARY KEY (upgrade_id) + );"; + + $SQL[] = "DROP TABLE ".SQL_PREFIX."forums;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."forums ( + id smallint(5) NOT NULL default '0', + topics mediumint(6) default '0', + posts mediumint(6) default '0', + last_post int(10) default NULL, + last_poster_id mediumint(8) NOT NULL default '0', + last_poster_name varchar(32) default NULL, + name varchar(128) NOT NULL default '', + description text, + position tinyint(2) default NULL, + use_ibc tinyint(1) default NULL, + use_html tinyint(1) default NULL, + status varchar(10) default NULL, + password varchar(32) default NULL, + last_title varchar(128) default NULL, + last_id int(10) default NULL, + sort_key varchar(32) default NULL, + sort_order varchar(32) default NULL, + prune tinyint(3) default NULL, + show_rules tinyint(1) default NULL, + preview_posts tinyint(1) default NULL, + allow_poll tinyint(1) NOT NULL default '1', + allow_pollbump tinyint(1) NOT NULL default '0', + inc_postcount tinyint(1) NOT NULL default '1', + skin_id int(10) default NULL, + parent_id mediumint(5) default '-1', + sub_can_post tinyint(1) default '1', + quick_reply tinyint(1) default '0', + redirect_url varchar(250) default '', + redirect_on tinyint(1) NOT NULL default '0', + redirect_hits int(10) NOT NULL default '0', + redirect_loc varchar(250) default '', + rules_title varchar(255) NOT NULL default '', + rules_text text NOT NULL, + topic_mm_id varchar(250) NOT NULL default '', + notify_modq_emails text default '', + permission_custom_error text NOT NULL default '', + permission_array mediumtext NOT NULL default '', + permission_showtopic tinyint(1) NOT NULL default '0', + queued_topics mediumint(6) NOT NULL default '0', + queued_posts mediumint(6) NOT NULL default '0', + PRIMARY KEY (id), + KEY position (position, parent_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscriptions ( + sub_id smallint(5) NOT NULL auto_increment, + sub_title varchar(250) NOT NULL default '', + sub_desc text, + sub_new_group mediumint(8) NOT NULL default 0, + sub_length smallint(5) NOT NULL default '1', + sub_unit varchar(2) NOT NULL default 'm', + sub_cost decimal(10,2) NOT NULL default '0.00', + sub_run_module varchar(250) NOT NULL default '', + PRIMARY KEY (sub_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_extra ( + subextra_id smallint(5) NOT NULL auto_increment, + subextra_sub_id smallint(5) NOT NULL default '0', + subextra_method_id smallint(5) NOT NULL default '0', + subextra_product_id varchar(250) NOT NULL default '0', + subextra_can_upgrade tinyint(1) NOT NULL default '0', + subextra_recurring tinyint(1) NOT NULL default '0', + subextra_custom_1 text, + subextra_custom_2 text, + subextra_custom_3 text, + subextra_custom_4 text, + subextra_custom_5 text, + PRIMARY KEY(subextra_id) + );"; + + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_trans ( + subtrans_id int(10) NOT NULL auto_increment, + subtrans_sub_id smallint(5) NOT NULL default '0', + subtrans_member_id mediumint(8) NOT NULL default '0', + subtrans_old_group smallint(5) NOT NULL default '0', + subtrans_paid decimal(10,2) NOT NULL default '0.00', + subtrans_cumulative decimal(10,2) NOT NULL default '0.00', + subtrans_method varchar(20) NOT NULL default '', + subtrans_start_date int(11) NOT NULL default '0', + subtrans_end_date int(11) NOT NULL default '0', + subtrans_state varchar(200) NOT NULL default '', + subtrans_trxid varchar(200) NOT NULL default '', + subtrans_subscrid varchar(200) NOT NULL default '', + subtrans_currency varchar(10) NOT NULL default 'USD', + PRIMARY KEY (subtrans_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_logs ( + sublog_id int(10) NOT NULL auto_increment, + sublog_date int(10) NOT NULL default '0', + sublog_member_id mediumint(8) NOT NULL default '0', + sublog_transid int(10) NOT NULL default '0', + sublog_ipaddress varchar(16) NOT NULL default '', + sublog_data text, + sublog_postdata text, + PRIMARY KEY (sublog_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_methods ( + submethod_id smallint(5) NOT NULL auto_increment, + submethod_title varchar(250) NOT NULL default '', + submethod_name varchar(20) NOT NULL default '', + submethod_email varchar(250) NOT NULL default '', + submethod_sid text, + submethod_custom_1 text, + submethod_custom_2 text, + submethod_custom_3 text, + submethod_custom_4 text, + submethod_custom_5 text, + submethod_is_cc tinyint(1) NOT NULL default '0', + submethod_is_auto tinyint(1) NOT NULL default '0', + submethod_desc text, + submethod_logo text, + submethod_active tinyint(1) NOT NULL default '0', + submethod_use_currency varchar(10) NOT NULL default 'USD', + PRIMARY KEY (submethod_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_currency ( + subcurrency_code varchar(10) NOT NULL, + subcurrency_desc varchar(250) NOT NULL default '', + subcurrency_exchange decimal(16, 8) NOT NULL, + subcurrency_default tinyint(1) NOT NULL default '0', + PRIMARY KEY(subcurrency_code) + );"; + + $SQL[]="CREATE TABLE ".SQL_PREFIX."validating ( + vid varchar(32) NOT NULL, + member_id mediumint(8) NOT NULL, + real_group smallint(3) NOT NULL default '0', + temp_group smallint(3) NOT NULL default '0', + entry_date int(10) NOT NULL default '0', + coppa_user tinyint(1) NOT NULL default '0', + lost_pass tinyint(1) NOT NULL default '0', + new_reg tinyint(1) NOT NULL default '0', + email_chg tinyint(1) NOT NULL default '0', + ip_address varchar(16) NOT NULL default '0', + PRIMARY KEY(vid), + KEY new_reg(new_reg) + );"; + + $SQL[]="create table ".SQL_PREFIX."cache_store ( + cs_key varchar(255) NOT NULL default '', + cs_value text NOT NULL default '', + cs_extra varchar(255) NOT NULL default '', + PRIMARY KEY(cs_key) + );"; + + $SQL[]="create table ".SQL_PREFIX."email_logs ( + email_id int(10) NOT NULL auto_increment, + email_subject varchar(255) NOT NULL, + email_content text NOT NULL, + email_date int(10) NOT NULL default '0', + from_member_id mediumint(8) NOT NULL default '0', + from_email_address varchar(250) NOT NULL, + from_ip_address varchar(16) NOT NULL default '127.0.0.1', + to_member_id mediumint(8) NOT NULL default '0', + to_email_address varchar(250) NOT NULL, + topic_id int(10) NOT NULL default '0', + PRIMARY KEY(email_id), + KEY from_member_id(from_member_id), + KEY email_date(email_date) + );"; + + $SQL[]="CREATE TABLE ".SQL_PREFIX."topic_mmod ( + mm_id smallint(5) NOT NULL auto_increment, + mm_title varchar(250) NOT NULL, + mm_enabled tinyint(1) NOT NULL default '0', + topic_state varchar(10) NOT NULL default 'leave', + topic_pin varchar(10) NOT NULL default 'leave', + topic_move smallint(5) NOT NULL default '0', + topic_move_link tinyint(1) NOT NULL default '0', + topic_title_st varchar(250) NOT NULL default '', + topic_title_end varchar(250) NOT NULL default '', + topic_reply tinyint(1) NOT NULL default '0', + topic_reply_content text NOT NULL default '', + topic_reply_postcount tinyint(1) NOT NULL default '0', + PRIMARY KEY(mm_id) + );"; + + $SQL[]="create table ".SQL_PREFIX."spider_logs ( + sid int(10) NOT NULL auto_increment, + bot varchar(255) NOT NULL default '', + query_string text NOT NULL default '', + entry_date int(10) NOT NULL default '0', + ip_address varchar(16) NOT NULL default '', + PRIMARY KEY(sid) + );"; + + + + $SQL[]="CREATE TABLE ".SQL_PREFIX."warn_logs ( + wlog_id int(10) auto_increment NOT NULL, + wlog_mid mediumint(8) NOT NULL default '0', + wlog_notes text NOT NULL default '', + wlog_contact varchar(250) NOT NULL default 'none', + wlog_contact_content text NOT NULL default '', + wlog_date int(10) NOT NULL default '0', + wlog_type varchar(6) NOT NULL default 'pos', + wlog_addedby mediumint(8) NOT NULL default '0', + PRIMARY KEY(wlog_id) + );"; + + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $oq = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."rules"); + + if( !$this->install->ipsclass->DB->failed ) + { + while ( $r = $this->install->ipsclass->DB->fetch_row($oq) ) + { + $nq = $this->install->ipsclass->DB->query("UPDATE ".SQL_PREFIX."forums SET rules_title='{$r['title']}', rules_text='{$r['body']}' WHERE id={$r['fid']}"); + } + } + + $this->install->ipsclass->DB->query("drop table if exists ".SQL_PREFIX."rules"); + + $this->install->message = "New tables created. Altering tables (Part 1, section 1 - post table)

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_3'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 3: ALTER POST TABLE + /*-------------------------------------------------------------------------*/ + + function step_3() + { + $SQL[] = "alter table ".SQL_PREFIX."posts add post_parent int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts ADD post_key varchar(32) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts add post_htmlstate smallint(1) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Post table altered, altering topic table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_4'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 4: ALTER TOPIC TABLE + /*-------------------------------------------------------------------------*/ + + function step_4() + { + $SQL[] = "alter table ".SQL_PREFIX."topics ADD topic_hasattach smallint(5) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topics change posts posts int(10) default null, change views views int(10) default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Topic table altered, altering members table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_5'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 5: ALTER MEMBERS TABLE + /*-------------------------------------------------------------------------*/ + + function step_5() + { + $SQL[] = "alter table ".SQL_PREFIX."members add login_anonymous varchar(3) NOT NULL default '0&0';"; + $SQL[] = "alter table ".SQL_PREFIX."members add ignored_users text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members add mgroup_others varchar(255) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra + ADD aim_name varchar(40) NOT NULL default '', + ADD icq_number int(15) NOT NULL default '0', + ADD website varchar(250) NOT NULL default '', + ADD yahoo varchar(40) NOT NULL default '', + ADD interests text NOT NULL default '', + ADD msnname varchar(200) NOT NULL default '', + ADD vdirs text NOT NULL default '', + ADD location varchar(250) NOT NULL default '', + ADD signature text NOT NULL default '', + ADD avatar_location varchar(128) NOT NULL default '', + ADD avatar_size varchar(9) NOT NULL default '', + ADD avatar_type varchar(15) NOT NULL default 'local';"; + $SQL[] = "alter table ".SQL_PREFIX."members add member_login_key varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members change password legacy_password varchar(32) NOT NULL default '';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members ADD org_supmod TINYINT(1) DEFAULT '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members ADD org_perm_id varchar(255) DEFAULT '';"; + $SQL[] = "alter table ".SQL_PREFIX."members drop validate_key;"; + $SQL[] = "alter table ".SQL_PREFIX."members drop new_pass;"; + $SQL[] = "alter table ".SQL_PREFIX."members drop prev_group;"; + $SQL[] = "alter table ".SQL_PREFIX."members add temp_ban varchar(100);"; + $SQL[] = "alter table ".SQL_PREFIX."members change allow_post restrict_post varchar(100) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."members change mod_posts mod_posts varchar(100) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."members add warn_lastwarn int(10) not null default '0' after warn_level;"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra add photo_type varchar(10) default '';"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra add photo_location varchar(255) default '';"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra add photo_dimensions varchar(200) default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members add integ_msg varchar(250) default '';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Members table altered, other tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_6'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 6: ALTER OTHER TABLES + /*-------------------------------------------------------------------------*/ + + function step_6() + { + $SQL[] = "alter table ".SQL_PREFIX."macro rename ibf_skin_macro;"; + $SQL[] = "alter table ".SQL_PREFIX."skin_macro change can_remove macro_can_remove tinyint(1) default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."groups add g_bypass_badwords tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."cache_store change cs_value cs_value mediumtext NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."cache_store add cs_array tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."sessions add in_error tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topic_mmod add mm_forums text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."groups change g_icon g_icon text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."emoticons add emo_set varchar(64) NOT NULL default 'default';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change ID session_id varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change IP_ADDRESS session_ip_address varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change MEMBER_NAME session_member_name varchar(250) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change MEMBER_ID session_member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change SESSION_KEY session_member_login_key varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change LOCATION session_location varchar(64) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change LOG_IN_TIME session_log_in_time int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change RUNNING_TIME session_running_time int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."forum_tracker add forum_track_type varchar(100) NOT NULL default 'delayed';"; + $SQL[] = "alter table ".SQL_PREFIX."tracker add topic_track_type varchar(100) NOT NULL default 'delayed';"; + + $SQL[] = "delete from ".SQL_PREFIX."members where id=0 LIMIT 1;"; + $SQL[] = "delete from ".SQL_PREFIX."member_extra where id=0 limit 1;"; + + $SQL[] = "ALTER TABLE ".SQL_PREFIX."groups ADD g_perm_id varchar(255) NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."groups ADD g_photo_max_vars VARCHAR(200) DEFAULT '100:250:250';"; + $SQL[] = "alter table ".SQL_PREFIX."groups add g_dohtml tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."groups add g_edit_topic tinyint(1) NOT NULL DEFAULT '0';"; + $SQL[] = "alter table ".SQL_PREFIX."groups add g_email_limit varchar(15) NOT NULL DEFAULT '10:15';"; + + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add end_day int(2), add end_month int(2), add end_year int(4);"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add end_unix_stamp int(10);"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add event_ranged tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add event_repeat tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add repeat_unit char(2) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add event_bgcolor varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events add event_color varchar(32) NOT NULL default '';"; + + $SQL[] = "alter table ".SQL_PREFIX."skins add css_method varchar(100) default 'inline';"; + $SQL[] = "alter table ".SQL_PREFIX."css add updated int(10) default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."search_results add query_cache text;"; + + $SQL[] = "alter table ".SQL_PREFIX."moderators add can_mm tinyint(1) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Other tables altered, converting forums next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_7'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 7: IMPORT FORUMS + /*-------------------------------------------------------------------------*/ + + function step_7() + { + $this->install->ipsclass->DB->return_die = 1; + + //----------------------------------------- + // Convert existing forums + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."forums_bak ORDER BY id"); + + while( $r = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $perm_array = addslashes(serialize(array( + 'start_perms' => $r['start_perms'], + 'reply_perms' => $r['reply_perms'], + 'read_perms' => $r['read_perms'], + 'upload_perms' => $r['upload_perms'], + 'show_perms' => $r['read_perms'] + ) ) ); + + $this->install->ipsclass->DB->do_insert( 'forums', array ( + 'id' => $r['id'], + 'position' => $r['position'], + 'topics' => $r['topics'], + 'posts' => $r['posts'], + 'last_post' => $r['last_post'], + 'last_poster_id' => $r['last_poster_id'], + 'last_poster_name' => $r['last_poster_name'], + 'name' => $r['name'], + 'description' => $r['description'], + 'use_ibc' => $r['use_ibc'], + 'use_html' => $r['use_html'], + 'status' => $r['status'], + 'password' => $r['password'], + 'last_id' => $r['last_id'], + 'last_title' => $r['last_title'], + 'sort_key' => $r['sort_key'], + 'sort_order' => $r['sort_order'], + 'prune' => $r['prune'], + 'show_rules' => $r['show_rules'], + 'preview_posts' => $r['preview_posts'], + 'allow_poll' => $r['allow_poll'], + 'allow_pollbump' => $r['allow_pollbump'], + 'inc_postcount' => $r['inc_postcount'], + 'parent_id' => $r['parent_id'], + 'sub_can_post' => $r['sub_can_post'], + 'quick_reply' => $r['quick_reply'], + 'redirect_on' => $r['redirect_on'], + 'redirect_hits' => $r['redirect_hits'], + 'redirect_url' => $r['redirect_url'], + 'redirect_loc' => $r['redirect_loc'], + 'rules_title' => $r['rules_title'], + 'rules_text' => $r['rules_text'], + 'notify_modq_emails' => $r['notify_modq_emails'], + 'permission_array' => $perm_array, + 'permission_showtopic' => '', + 'permission_custom_error' => '', + ) ); + } + + //----------------------------------------- + // Convert categories + //----------------------------------------- + + $this->install->ipsclass->DB->query("SELECT MAX(id) as max FROM ".SQL_PREFIX."forums"); + $max = $this->install->ipsclass->DB->fetch_row(); + + $fid = $max['max']; + + $o = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."categories WHERE id > 0"); + + while( $r = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $fid++; + + $perm_array = addslashes(serialize(array( + 'start_perms' => '*', + 'reply_perms' => '*', + 'read_perms' => '*', + 'upload_perms' => '*', + 'show_perms' => '*', + ) ) ); + + $this->install->ipsclass->DB->do_insert( 'forums', array( + 'id' => $fid, + 'position' => $r['position'], + 'name' => $r['name'], + 'sub_can_post' => 0, + 'permission_array' => $perm_array, + 'parent_id' => -1, + ) ); + + //----------------------------------------- + // Update old categories + //----------------------------------------- + + $n = $this->install->ipsclass->DB->query("SELECT id FROM ".SQL_PREFIX."forums_bak WHERE category={$r['id']} AND parent_id = -1"); + + $ids = array(); + + while( $c = $this->install->ipsclass->DB->fetch_row($n) ) + { + $ids[] = $c['id']; + } + + if ( count($ids) ) + { + $this->install->ipsclass->DB->do_update( 'forums', array( 'parent_id' => $fid ), 'id IN ('.implode(',',$ids).')' ); + } + } + + $this->install->message = "Forums converted, converting attachments next...

      $fid forums converted...."; + $this->install->saved_data['workact'] = 'step_8'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 8: CONVERT ATTACHMENTS + /*-------------------------------------------------------------------------*/ + + function step_8() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( "select" => '*', + 'from' => 'posts', + 'where' => "attach_file != ''", + 'limit' => array( $start, $lend ) ) ); + + $outer = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while( $r = $this->install->ipsclass->DB->fetch_row( $outer ) ) + { + $image = 0; + $ext = strtolower( str_replace( ".", "", substr( $r['attach_file'], strrpos( $r['attach_file'], '.' ) ) ) ); + $postkey = md5( $r['post_date'].','.$r['pid'] ); + + if ( in_array( $ext, array( 'gif', 'jpeg', 'jpg', 'png' ) ) ) + { + $image = 1; + } + + $this->install->ipsclass->DB->do_insert( 'attachments', array( 'attach_ext' => $ext, + 'attach_file' => $r['attach_file'], + 'attach_location' => $r['attach_id'], + 'attach_is_image' => $image, + 'attach_hits' => $r['attach_hits'], + 'attach_date' => $r['post_date'], + 'attach_pid' => $r['pid'], + 'attach_post_key' => $postkey, + 'attach_member_id' => $r['author_id'], + 'attach_approved' => 1, + 'attach_filesize' => @filesize( ROOT_PATH.'uploads/'.$r['attach_id'] ), + ) ); + + $this->install->ipsclass->DB->do_update( 'posts', array( 'post_key' => $postkey ), 'pid='.$r['pid'] ); + $this->install->ipsclass->DB->simple_exec_query( array( 'update' => 'topics', 'set' => 'topic_hasattach=topic_hasattach+1', 'where' => 'tid='.$r['topic_id'] ) ); + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Attachments $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_8'; + } + else + { + $this->install->message = "Attachments converted, converting members..."; + $this->install->saved_data['workact'] = 'step_9'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 9: CONVERT MEMBERS + /*-------------------------------------------------------------------------*/ + + function step_9() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query( $this->sql_members( $start, $end ) ); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( $r['mextra'] ) + { + $this->install->ipsclass->DB->do_update( 'member_extra', + array( 'aim_name' => $r['aim_name'], + 'icq_number' => $r['icq_number'], + 'website' => $r['website'], + 'yahoo' => $r['yahoo'], + 'interests' => $r['interests'], + 'msnname' => $r['msnname'], + 'vdirs' => $r['vdirs'], + 'location' => $r['location'], + 'signature' => $r['signature'], + 'avatar_location' => $r['avatar'], + 'avatar_size' => $r['avatar_size'], + 'avatar_type' => preg_match( "/^upload\:/", $r['avatar'] ) ? 'upload' : ( preg_match( "#^http://#", $r['avatar'] ) ? 'url' : 'local' ) + ), 'id='.$r['mextra'] ); + } + else + { + $this->install->ipsclass->DB->do_insert( 'member_extra', + array( 'id' => $r['id'], + 'aim_name' => $r['aim_name'], + 'icq_number' => $r['icq_number'], + 'website' => $r['website'], + 'yahoo' => $r['yahoo'], + 'interests' => $r['interests'], + 'msnname' => $r['msnname'], + 'vdirs' => $r['vdirs'], + 'location' => $r['location'], + 'signature' => $r['signature'], + 'avatar_location' => $r['avatar'], + 'avatar_size' => $r['avatar_size'], + 'avatar_type' => preg_match( "/^upload\:/", $r['avatar'] ) ? 'upload' : ( preg_match( "#^http://#", $r['avatar'] ) ? 'url' : 'local' ) + ) ); + } + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Members adjusted $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_9'; + } + else + { + $this->install->message = "Members converted, making members email addresses safe for converge..."; + $this->install->saved_data['workact'] = 'step_10'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 10: CHECK EMAIL ADDRESSES + /*-------------------------------------------------------------------------*/ + + function step_10() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query( $this->sql_members_email( $lend ) ); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( $r['count'] < 2 ) + { + break; + } + else + { + $dupe_emails[] = $r['email']; + } + } + + if ( count( $dupe_emails ) ) + { + foreach( $dupe_emails as $email ) + { + $first = 0; + + $this->install->ipsclass->DB->build_query( array( 'select' => 'id,name,email', 'from' => 'members', 'where' => "email='{$email}'", 'order' => 'joined' ) ); + $this->install->ipsclass->DB->exec_query(); + + while( $r = $this->install->ipsclass->DB->fetch_row() ) + { + // First? + + if ( ! $first ) + { + $first = 1; + continue; + } + else + { + // later dupe.. + + $push_auth[] = $r['id']; + } + } + } + + if ( count( $push_auth ) ) + { + $this->install->ipsclass->DB->do_update( 'member_extra', array( 'bio' => 'dupemail' ), 'id IN ('.implode(",", $push_auth).")" ); + $this->install->ipsclass->DB->query( $this->sql_members_email_update( $push_auth ) ); + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Members email addresses checked $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_10'; + } + else + { + $this->install->message = "Members email addresses checked, adding to converge..."; + $this->install->saved_data['workact'] = 'step_11'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 11: CONVERGE + /*-------------------------------------------------------------------------*/ + + function step_11() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + $max = 0; + + $this->install->ipsclass->DB->build_query( array( 'select' => 'id', 'from' =>'members', 'where' => "id > {$end}" ) ); + $this->install->ipsclass->DB->exec_query(); + + $max = $this->install->ipsclass->DB->fetch_row(); + + $o = $this->install->ipsclass->DB->query( $this->sql_members_converge( $start, $end ) ); + + $found = 0; + + //----------------------------------------- + // Do it... + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( ! $r['cid'] or ! $r['id'] ) + { + $r['password'] = $r['password'] ? $r['password'] : $r['legacy_password']; + + $salt = $this->install->ipsclass->converge->generate_password_salt(5); + $salt = str_replace( '\\', "\\\\", $salt ); + + $this->install->ipsclass->DB->do_insert( 'members_converge', + array( 'converge_id' => $r['id'], + 'converge_email' => strtolower($r['email']), + 'converge_joined' => $r['joined'], + 'converge_pass_hash' => md5( md5($salt) . $r['password'] ), + 'converge_pass_salt' => $salt + ) ); + + $this->install->ipsclass->DB->do_update( 'members', array( 'member_login_key' => $this->install->ipsclass->converge->generate_auto_log_in_key(), 'email' => strtolower($r['email']) ), 'id='.$r['id'] ); + } + + $found++; + } + + if ( ! $found and ! $max['id'] ) + { + $this->install->message = "Converge completed, converting personal messages..."; + $this->install->saved_data['workact'] = 'step_12'; + $this->install->saved_data['st'] = 0; + } + else + { + $this->install->saved_data['st'] = $end; + $this->install->message = "Converge added: $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_11'; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 12: CONVERT PMs + /*-------------------------------------------------------------------------*/ + + function step_12() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'messages', 'limit' => array( $start, $lend ) ) ); + $o = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( ! $r['msg_date'] ) + { + $r['msg_date'] = $r['read_date']; + } + + if ( $r['vid'] != 'sent' ) + { + $this->install->ipsclass->DB->do_insert( 'message_text', + array( 'msg_date' => $r['msg_date'], + 'msg_post' => stripslashes($r['message']), + 'msg_cc_users' => $r['cc_users'], + 'msg_author_id' => $r['from_id'], + 'msg_sent_to_count' => 1, + 'msg_deleted_count' => 0, + ) ); + + $msg_id = $this->install->ipsclass->DB->get_insert_id(); + + $this->install->ipsclass->DB->do_insert( 'message_topics', + array( 'mt_msg_id' => $msg_id, + 'mt_date' => $r['msg_date'], + 'mt_title' => $r['title'], + 'mt_from_id' => $r['from_id'], + 'mt_to_id' => $r['recipient_id'], + 'mt_vid_folder' => $r['vid'], + 'mt_read' => $r['read_state'], + 'mt_tracking' => $r['tracking'], + 'mt_owner_id' => $r['recipient_id'], + ) ); + } + else + { + $this->install->ipsclass->DB->do_insert( 'message_text', + array( 'msg_date' => $r['msg_date'], + 'msg_post' => stripslashes($r['message']), + 'msg_cc_users' => $r['cc_users'], + 'msg_author_id' => $r['from_id'], + 'msg_sent_to_count' => 1, + 'msg_deleted_count' => 0, + ) ); + + $msg_id = $this->install->ipsclass->DB->get_insert_id(); + + $this->install->ipsclass->DB->do_insert( 'message_topics', + array( 'mt_msg_id' => $msg_id, + 'mt_date' => $r['msg_date'], + 'mt_title' => $r['title'], + 'mt_from_id' => $r['from_id'], + 'mt_to_id' => $r['recipient_id'], + 'mt_vid_folder' => $r['vid'], + 'mt_read' => $r['read_state'], + 'mt_tracking' => $r['tracking'], + 'mt_owner_id' => $r['from_id'], + ) ); + } + + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Personal messages: $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_12'; + } + else + { + $this->install->message = "Personal messages converted, proceeding to update topic multi-moderation..."; + $this->install->saved_data['workact'] = 'step_13'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 13: CONVERT TOPIC MULTI_MODS + /*-------------------------------------------------------------------------*/ + + function step_13() + { + $this->install->ipsclass->DB->return_die = 1; + + $this->install->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'forums' ) ); + $f = $this->install->ipsclass->DB->exec_query(); + + $final = array(); + + while ( $r = $this->install->ipsclass->DB->fetch_row($f) ) + { + $mmids = preg_split( "/,/", $r['topic_mm_id'], -1, PREG_SPLIT_NO_EMPTY ); + + if ( is_array( $mmids ) ) + { + foreach( $mmids as $m ) + { + $final[ $m ][] = $r['id']; + } + } + } + + $real_final = array(); + + foreach( $final as $id => $forums_ids ) + { + $ff = implode( ",",$forums_ids ); + + $this->install->ipsclass->DB->do_update( 'topic_mmod', array( 'mm_forums' => $ff ), 'mm_id='.$id ); + } + + $this->install->message = "Topic multi-moderation converted, alterting tables, stage 2..."; + $this->install->saved_data['workact'] = 'step_14'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 14: ALTER POST TABLE II + /*-------------------------------------------------------------------------*/ + + function step_14() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."posts DROP attach_id, DROP attach_hits, DROP attach_type, DROP attach_file;"; + $SQL[] = "alter table ".SQL_PREFIX."posts change queued queued tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts drop forum_id;"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Post table altered, altering topic table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_15'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 15: ALTER TOPIC TABLE II + /*-------------------------------------------------------------------------*/ + + function step_15() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics add topic_firstpost int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topics add topic_queuedposts int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics DROP INDEX forum_id;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics ADD INDEX forum_id(forum_id,approved,pinned);"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics ADD INDEX(last_post);"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Topic table altered, altering members table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_16'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 16: ALTER MEMBERS TABLE II + /*-------------------------------------------------------------------------*/ + + function step_16() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members add has_blog TINYINT(1) NOT NULL default '0'"; + $SQL[] = "alter table ".SQL_PREFIX."members add sub_end int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members DROP msg_from_id, DROP msg_msg_id;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members DROP org_supmod, DROP integ_msg;"; + $SQL[] = "alter table ".SQL_PREFIX."members DROP aim_name, DROP icq_number, DROP website, DROP yahoo, DROP interests, + DROP msnname, DROP vdirs, DROP signature, DROP location, DROP avatar, DROP avatar_size;"; + $SQL[] = "alter table ".SQL_PREFIX."members change auto_track auto_track varchar(50) default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."members add subs_pkg_chosen smallint(3) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members change temp_ban temp_ban varchar(100) default '0'"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members change msg_total msg_total smallint(5) default '0'"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Members table altered, other tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_17'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 17: ALTER OTHERS TABLE II + /*-------------------------------------------------------------------------*/ + + function step_17() + { + $SQL[] = "alter table ".SQL_PREFIX."groups add g_attach_per_post int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topic_mmod add topic_approve tinyint(1) NOT NULL default '0';"; + + $SQL[] = "alter table ".SQL_PREFIX."groups add g_can_msg_attach tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."pfields_data + change fid pf_id smallint(5) NOT NULL auto_increment, + change ftitle pf_title varchar(250) NOT NULL default '', + change fdesc pf_desc varchar(250) NOT NULL default '', + change fcontent pf_content text NOT NULL default '', + change ftype pf_type varchar(250) NOT NULL default '', + change freq pf_not_null tinyint(1) NOT NULL default '0', + change fhide pf_member_hide tinyint(1) NOT NULL default '0', + change fmaxinput pf_max_input smallint(6) NOT NULL default '0', + change fedit pf_member_edit tinyint(1) NOT NULL default '0', + change forder pf_position smallint(6) NOT NULL default '0', + change fshowreg pf_show_on_reg tinyint(1) NOT NULL default '0', + add pf_input_format text NOT NULL default '', + add pf_admin_only tinyint(1) NOT NULL default '0', + add pf_topic_format text NOT NULL default '';"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Other tables altered, inserting data next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_18'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 18: SAFE INSERTS + /*-------------------------------------------------------------------------*/ + + function step_18() + { + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Left', 'Aligns content to the left of the post', 'left', '
      {content}
      ', 0, '[left]Left aligned text[/left]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Center', 'Aligns content to the center of the posting area.', 'center', '
      {content}
      ', 0, '[center]Centered Text[/center]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Topic Link', 'This tag provides an easy way to link to a topic', 'topic', '{content}', 1, '[topic=100]Click me![/topic]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Link', 'This tag provides an easy way to link to a post.', 'post', '{content}', 1, '[post=100]Click me![/post]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('CODEBOX', 'Use this BBCode tag to show a scrolling codebox. Useful for long sections of code.', 'codebox', '
      CODE
      {content}
      ', 0, '[codebox]long_code_here = '';[/codebox]');"; + + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='USD', subcurrency_desc='United States Dollars', subcurrency_exchange='1.00', subcurrency_default=1;"; + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='GBP', subcurrency_desc='United Kingdom Pounds', subcurrency_exchange=' 0.630776', subcurrency_default=0;"; + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='CAD', subcurrency_desc='Canada Dollars', subcurrency_exchange='1.37080', subcurrency_default=0;"; + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='EUR', subcurrency_desc='Euro', subcurrency_exchange='0.901517', subcurrency_default=0;"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('PayPal', 'paypal', '', '', '', '', '', '', '', 0, 1, 'All major credit cards accepted. See PayPal for more information.', '', 1, 'USD');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('NOCHEX', 'nochex', '', '', '', '', '', '', '', 0, 1, 'UK debit and credit cards, such as Switch, Solo and VISA Delta. All prices will be convereted into GBP (UK Pounds) upon ordering.', NULL, 1, 'GBP');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Post Service', 'manual', '', '', '', '', '', '', '', 0, 0, 'You can use this method if you wish to send us a check, postal order or international money order.', NULL, 1, 'USD');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('2CheckOut', '2checkout', '', '', '', '', '', '', '', 1, 1, 'All major credit cards accepted. See 2CheckOut for more information.', NULL, 1, 'USD');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Authorize.net', 'authorizenet', '', '', '', '', '', '', '', '1', '1', NULL, NULL, '1', 'USD');"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (1, 'pdf', 'application/pdf', 1, 0, 'folder_mime_types/pdf.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (2, 'png', 'image/png', 1, 1, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (3, 'viv', 'video/vivo', 1, 0, 'folder_mime_types/win_player.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (4, 'wmv', 'video/x-msvideo', 1, 0, 'folder_mime_types/win_player.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (5, 'html', 'application/octet-stream', 1, 0, 'folder_mime_types/html.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (6, 'ram', 'audio/x-pn-realaudio', 1, 0, 'folder_mime_types/real_audio.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (7, 'gif', 'image/gif', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (8, 'mpg', 'video/mpeg', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (9, 'ico', 'image/ico', 1, 0, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (10, 'tar', 'application/x-tar', 1, 0, 'folder_mime_types/zip.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (11, 'bmp', 'image/x-MS-bmp', 1, 0, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (12, 'tiff', 'image/tiff', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (13, 'rtf', 'text/richtext', 1, 0, 'folder_mime_types/rtf.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (14, 'hqx', 'application/mac-binhex40', 1, 0, 'folder_mime_types/stuffit.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (15, 'aiff', 'audio/x-aiff', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (31, 'zip', 'application/zip', 1, 0, 'folder_mime_types/zip.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (17, 'ps', 'application/postscript', 1, 0, 'folder_mime_types/eps.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (18, 'doc', 'application/msword', 1, 0, 'folder_mime_types/doc.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (19, 'mov', 'video/quicktime', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (20, 'ppt', 'application/powerpoint', 1, 0, 'folder_mime_types/ppt.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (21, 'wav', 'audio/x-wav', 1, 0, 'folder_mime_types/music.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (22, 'mp3', 'audio/x-mpeg', 1, 0, 'folder_mime_types/music.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (23, 'jpg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (24, 'txt', 'text/plain', 1, 0, 'folder_mime_types/txt.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (25, 'xml', 'text/xml', 1, 0, 'folder_mime_types/script.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (26, 'css', 'text/css', 1, 0, 'folder_mime_types/script.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (27, 'swf', 'application/x-shockwave-flash', 0, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (32, 'php', 'application/octet-stream', 1, 0, 'folder_mime_types/php.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (28, 'htm', 'application/octet-stream', 1, 0, 'folder_mime_types/html.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (29, 'jpeg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (33, 'gz', 'application/x-gzip', 1, 0, 'folder_mime_types/zip.gif');"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('skin_id_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('bbcode', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('moderators', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('multimod', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('banfilters', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('attachtypes', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('emoticons', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('forum_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('badwords', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('systemvars', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('ranks', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('group_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('stats', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('profilefields', 'a:0:{}', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('settings','', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('languages', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Master Skin Set', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Default Skin', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Pre-2.0 Skins', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + + + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'General Configuration', 'These settings control the basics of the board such as URLs and paths.', 17);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'CPU Saving & Optimization', 'This section allows certain features to be limited or removed to get more performance out of your board.', 16);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Date & Time Formats', 'This section contains the date and time formats used throughout the board.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'User Profiles', 'This section allows you to adjust your member\'s global permissions and other options.', 22);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Topics, Posts and Polls', 'These options control various elements when posting, reading topics and reading polls.', 32);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Security and Privacy', 'These options allow you to adjust the security and privacy options for your board.', 18);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Cookies', 'This section allows you to set the default cookie options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (8, 'COPPA Set-up', 'This section allows you to comply with COPPA.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Calendar & Birthdays', 'This section will allow you to set up the board calendar and its related options.', 8);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'News Set-up', 'This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Personal Message Set-up', 'This section allows you to control the global PM options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Email Set-up', 'This section will allow you to change the incoming and outgoing email addresses as well as the email method.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Warn Set-up', 'This section will allow you to set up the warning system.', 15);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Trash Can Set-up', 'The trashcan is a special forum in which topics are moved into instead of being deleted.', 6);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Board Offline / Online', 'Use this setting to turn switch your board online or offline and leave a message for your visitors.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Search Engine Spiders', 'This section will allow you to set up and maintain your search engine bot spider recognition settings.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Board Guidelines', 'This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines.', 4);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Converge Set Up', 'Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products.', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Full Text Search Set-Up', 'Full text searching is a very fast and very efficient way of searching large amounts of posts without maintaining a manual index. This may not be available for your system.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; + + + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (1, 'Registration benefits', 'To be able to use all the features on this board, the administrator will probably require that you register for a member account. Registration is free and only takes a moment to complete.\r
      \r
      During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail. \r
      \r
      In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.\r
      \r
      Once you have registered and logged in, you will have access to your personal messenger and your control panel.\r
      \r
      For more information on these items, please see the relevant sections in this documentation.', 'How to register and the added benefits of being a registered member.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (2, 'Cookies and cookie usage', 'Using cookies is optional, but strongly recommended. Cookies are used to track topics, showing you which topics have new replies since your last visit and to automatically log you in when you return.\r
      \r
      If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.\r
      \r
      Clearing Cookies\r
      \r
      You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.\r
      \r
      Removing Cookies in Internet Explorer for Windows\r
      \r
        \r
      • Close all open Internet Explorer Windows\r
      • Click on the \'start\' button\r
      • Move up to \'Find\' and click on \'Files and Folders\'\r
      • When the new window appears, type in the domain name of the board you are using into the \'containing text\' field. (If the boards address was \'http://www.invisionboard.com/forums/index.php\' you would enter \'invisionboard.com\' without the quotes)\r
      • In the \'look in\' box, type in C:WindowsCookies and press \'Find Now\'\r
      • After it has finished searching, highlight all files (click on a file then press CTRL+A) and delete them.\r
      \r
      \r
      Removing Cookies in Internet Explorer for Macintosh\r
      \r
        \r
      • With Internet Explorer active, choose \'Edit\' and then \'Preferences\' from the Macintosh menu bar at the top of the screen\r
      • When the preferences panel opens, choose \'Cookies\' found in the \'Receiving Files\' section.\r
      • When the cookie pane loads, look for the domain name of the board (If the boards address was \'http://www.invisionboard.com/forums/index.php\' look for \'invisionboard.com\' or \'www.invisionboard.com\'\r
      • For each cookie, click on the entry and press the delete button.\r
      \r
      \r
      Your cookies should now be removed. In some cases you may need to restart your computer for the changes to take effect.', 'The benefits of using cookies and how to remove cookies set by this board.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (3, 'Recovering lost or forgotten passwords', 'Security is a big feature on this board, and to that end, all passwords are encrypted when you register.\r
      This means that we cannot email your password to you as we hold no record of your \'uncrypted\' password. You can however, apply to have your password reset.\r
      \r
      To do this, click on the Lost Password link found on the log in page.\r
      \r
      Further instruction is available from there.', 'How to reset your password if you\'ve forgotton it.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (4, 'Your Control Panel (My Controls)', 'Your control panel is your own private board console. You can change how the board looks and feels as well as your own information from here.\r
      \r
      Subscriptions\r
      \r
      This is where you manage your topic and forums subscriptions. Please see the help file \'Email Notification of new messages\' for more information on how to subscribe to topics.\r
      \r
      Edit Profile Info\r
      \r
      This section allows you to add or edit your contact information and enter some personal information if you choose.\r
      \r
      Edit Signature\r
      \r
      A board \'signature\' is very similar to an email signature. This signature is attached to the foot of every message you post unless you choose to check the box that allows you to ommit the signature in the message you are posting. You may use BB Code if available and in some cases, pure HTML (if the board administrator allows it).\r
      \r
      Edit Avatar Settings\r
      \r
      An avatar is a little image that appears under your username when you view a topic or post you authored. If the administrator allows, you may either choose from the board gallery, enter a URL to an avatar stored on your server or upload an avatar to use. You may also set the width of the avatar to ensure that it\'s sized in proportion.\r
      \r
      Change Personal Photo\r
      \r
      This section will allow you to add a photograph to your profile. This will be displayed when a user clicks to view your profile, on the mini-profile screen and will also be linked to from the member list.\r
      \r
      Email Settings\r
      \r
      Hide my email address allows you to deny the ability for other users to send you an email from the board.\r
      Send me updates sent by the board administrator will allow the administrator to include your email address in any mailings they send out - this is used mostly for important updates and community information.\r
      Include a copy of the post when emailing me from a subscribed topic, this allows you to have the new post included in any reply to topic notifications.\r
      Send a confirmation email when I receive a new private message, this will send you an e-mail notification to your registered e-mail address each time you receive a private message on the board.\r
      Enable \'Email Notification\' by default?, this will automatically subscribe you to any topic that you make a reply to. You may unsubscribe from the \'Subscriptions\' section of My Controls if you wish.\r
      \r
      Board Settings\r
      \r
      From this section, you can set your time zone, choose to not see users signatures, avatars and posted images.\r
      You can choose to get a pop up window informing you when you have a new message and choose to show or hide the \'Fast Reply\' box where it is enabled.\r
      You are also able to choose display preferences for the number of topics/posts shown per page on the board.\r
      \r
      Skins and Languages\r
      \r
      If available, you can choose a skin style and language choice. This affects how the board is displayed so you may wish to preview the skin before submitting the form.\r
      \r
      Change Email Address\r
      \r
      At any time, you can change the email address that is registered to your account. In some cases, you will need to revalidate your account after changing your email address. If this is the case, you will be notified before your email address change is processed.\r
      \r
      Change Password\r
      \r
      You may change your password from this section. Please note that you will need to know your current password before you can change your password.', 'Editing contact information, personal information, avatars, signatures, board settings, languages and style choices.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (5, 'Email Notification of new messages', 'This board can notify you when a new reply is added to a topic. Many users find this useful to keep up to date on topics without the need to view the board to check for new messages.\r
      \r
      There are three ways to subscribe to a topic:\r
      \r
    • Click the \'Track This Topic\' link at the top of the topic that you wish to track\r
    • On the posting screen when replying to or creating a topic, check the \'Enable email notification of replies?\' checkbox\r
    • From the E-Mail settings section of your User CP (My Controls) check the \'Enable Email Notification by default?\' option, this will automatically subscribe you to any topic that you make a reply to\r
      \r
      Please note that to avoid multiple emails being sent to your email address, you will only get one e-mail for each topic you are subscribed to until the next time you visit the board.\r
      \r
      You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click the \'Subscribe to this forum\' link at the bottom of the forum that you wish to subscribe to.\r
      \r
      To unsubscribe from any forums or topics that you are subscribed to - just go to the \'Subscriptions\' section of \'My Controls\' and you can do this from there.', 'How to get emailed when a new reply is added to a topic.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (6, 'Your Personal Messenger', 'Your personal messenger acts much like an email account in that you can send and receive messages and store messages in folders.\r
      \r
      Send a new PM\r
      \r
      This will allow you to send a message to another member. If you have names in your contact list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a \'PM\' button on the board (from the member list or a post). If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line.\r
      If the administrator allows, you may use BB Code and HTML in your private message. If you choose to check the \'Add a copy of this message to you sent items folder\' box, a copy of the message will be saved for you for later reference. If you tick the \'Track this message?\' box, then the details of the message will be available in your \'Message Tracker\' where you will be able to see if/when it has been read.\r
      \r
      Go to Inbox\r
      \r
      Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.\r
      \r
      Empty PM Folders\r
      \r
      This option provides you with a quick and easy way to clear out all of your PM folders.\r
      \r
      Edit Storage Folders\r
      \r
      You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove \'Sent Items\' or \'Inbox\'.\r
      \r
      PM Buddies/Block List\r
      \r
      You may add in users names in this section, or edit any saved entries. You can also use this as a ban list, denying the named member the ability to message you.\r
      Names entered in this section will appear in the drop down list when sending a new PM, allowing you to quickly choose the members name when sending a message.\r
      \r
      Archive Messages\r
      \r
      If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft © Excel Format. This page is then emailed to your registered email address for your convenience.\r
      \r
      Saved (Unsent) PMs\r
      \r
      This area will allow you to go back to any PM\'s that you have chosen to save to be sent later.\r
      \r
      Message Tracker\r
      \r
      This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.', 'How to send personal messages, track them, edit your messenger folders and archive stored messages.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (7, 'Contacting the moderating team & reporting posts', 'Contacting the moderating team\r
      \r
      If you need to contact a moderator or simply wish to view the complete administration team, you can click the link \'The moderating team\' found at the bottom of the main board page (the first page you see when visiting the board), or from \'My Assistant\'.\r
      \r
      This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.\r
      \r
      If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.\r
      \r
      Reporting a post\r
      \r
      If the administrator has enabled this function on the board, you\'ll see a \'Report\' button in a post, next to the \'Quote\' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn\'t a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.', 'Where to find a list of the board moderators and administrators.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (8, 'Viewing members profile information', 'You can view a members profile at any time by clicking on their name when it is underlined (as a link) or by clicking on their name in a post within a topic.\r
      \r
      This will show you their profile page which contains their contact information (if they have entered some) and their \'active stats\'.\r
      \r
      You can also click on the \'Mini Profile\' button underneath their posts, this will show up a mini \'e-card\' with their contact information and a photograph if they have chosen to have one.', 'How to view members contact information.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (9, 'Viewing active topics and new posts', 'You can view which new topics have new replies today by clicking on the \'Today\'s Active Topics\' link found at the bottom of the main board page (the first page you see when visiting the board). You can set your own date criteria, choosing to view all topics with new replies during several date choices.\r
      \r
      The \'View New Posts\' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.', 'How to view all the topics which have a new reply today and the new posts made since your last visit.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (10, 'Searching Topics and Posts', 'The search feature is designed to allow you to quickly find topics and posts that contain the keywords you enter.\r
      \r
      There are two types of search form available, simple search and advanced search. You may switch between the two using the \'More Options\' and \'Simple Mode\' buttons.\r
      \r
      Simple Mode\r
      \r
      All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.\r
      \r
      Advanced Mode\r
      \r
      The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.\r
      \r
      If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.\r
      \r
      There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.', 'How to use the search feature.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (11, 'Logging in and out', 'If you have chosen not to remember your log in details in cookies, or you are accessing the board on another computer, you will need to log into the board to access your member profile and post with your registered name.\r
      \r
      When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.\r
      \r
      You can also choose to hide - this will keep your name from appearing in the active users list.\r
      \r
      Logging out is simply a matter of clicking on the \'Log Out\' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the \'Cookies\' help file for more information.', 'How to log in and out from the board and how to remain anonymous and not be shown on the active users list.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (13, 'My Assistant', 'This feature is sometimes referred to as a \'Browser Buddy\'. \r
      \r
      At the top it tells you how many posts have been made since you last visited the board.. Also underneath this the number of posts with replies that have been made in topics that the individual has also posted in.\r
      Click on the \'View\' link on either of the two sentences to see the posts.\r
      \r
      The next section is five links to useful features:\r
      \r
    • The link to the moderating team is basically a quick link to see all those that either administrate or moderate certain forums on the message board.\r
    • The link to \'Today\'s Active Topics\' shows you all the topics that have been created in the last 24 hours on the board.\r
    • Today\'s Top 10 Posters link shows you exactly as the name suggests. It shows you the amount of posts by the members and also their total percentage of the total posts made that day.\r
    • The overall Top 10 Posters link shows you the top 10 posters for the whole time that the board has been installed.\r
    • My last 10 posts links to the latest topics that you have made on the board. These are shortened on the page, to save space, and are linked to if you require to read more of them.\r
      \r
      The two search features allow you to search the whole board for certain words in a whole topic. It isn\'t as featured as the normal search option so it is not as comprehensive.\r
      \r
      The Help Search is just as comprehensive as the normal help section\'s search function and allows for quick searching of all the help topics on the board.', 'A comprehensive guide to use this handy little feature.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (12, 'Posting', 'There are three different posting screens available. The new topic button, visible in forums and in topics allows you to add a new topic to that particular forum. The new poll button (is the admin has enabled it) will also be viewable in topics and forums allowing you to create a new poll in the forum. When viewing a topic, there will be an add reply button, allowing you to add a new reply onto that particular topic. \r\n
      \r\n
      Posting new topics and replying\r\n
      \r\n
      When making a post, you will most likely have the option to use IBF code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the \'BB Code Help\' link under the emoticon box to launch the help window.\r\n
      \r\n
      On the left of the text entry box, there is the clickable emoticons box - you can click on these to add them to the content of your message (these are sometimes known as \'smilies\').\r\n
      \r\n
      There are three options available when making a post or a reply. \'Enable emoticons?\' if this is unchecked, then any text that would normally be converted into an emoticon will not be. \'Enable signature?\' allows you to choose whether or not you would like your signature to appear on that individual post. \'Enable email notification of replies?\' ticking this box will mean that you will receive e-mail updates to the topic, see the \'Email Notification of new messages\' help topic for more information on this.\r\n
      \r\n
      You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic.\r\n
      \r\n
      If the admin has enabled it, you will also see a file attachments option, this will allow you to attach a file to be uploaded when making a post. Click the browse button to select a file from your computer to be uploaded. If you upload an image file, it may be shown in the content of the post, all other file types will be linked to.\r\n
      \r\n
      Poll Options\r\n
      \r\n
      If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left.\r\n
      \r\n
      Quoting Posts\r\n
      \r\n
      Displayed above each post in a topic, there is a \'Quote\' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted.\r\n
      \r\n
      Editing Posts\r\n
      \r\n
      Above any posts that you have made, you may see an \'Edit\' button. Pressing this will allow you to edit the post that you had previously made. \r\n
      \r\n
      When editing you may see an option to \'Add the \'Edit by\' line in this post?\'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post.\r\n
      \r\n
      If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired.\r\n
      \r\n
      Fast Reply\r\n
      \r\n
      Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the \'More Options\' button will take you to the normal posting screen.', 'A guide to the features avaliable when posting on the boards.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (14, 'Member List', 'The member list, accessed via the \'Members\' link at the top of each page, is basically a listing of all of the members that have registered on the board. \r\n
      \r\n
      If you are looking to search for a particular member by all/part of their username, then in the drop down box at the bottom of the page, change the selection from \'Search All Available\' to \'Name Begins With\' or \'Name Contains\' and input all/part of their name in the text input field and press the \'Go!\' button. \r\n
      \r\n
      Also, at the bottom of the member list page, there are a number of sorting options available to alter the way in which the list is displayed. \r\n
      \r\n
      If a member has chosen to add a photo to their profile information, then a camera icon will appear next to their name, and you may click this to view the photo.', 'Explaining the different ways to sort and search through the list of members.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (15, 'Topic Options', 'At the bottom of each topic, there is a \'Topic Options\' button. Pressing this button will expand the topic options box. \r\n
      \r\n
      From this box, you can select from the following options: \r\n
      \r\n
    • Track this topic - this option will allow you to receive e-mail updates for the topic, see the \'Email Notification of new messages\' help file for more information on this \r\n
    • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages\' help file for more information on this \r\n
    • Download / Print this Topic - will show the topic in a number of different formats. \'Printer Friendly Version\' will display a version of the topic that is suitable for printing out. \'Download HTML Version\' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. \'Download Microsoft Word Version\' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.', 'A guide to the options avaliable when viewing a topic.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (16, 'Calendar', 'This board features it\'s very own calendar feature, which can be accessed via the calendar link at the top of the board.\r\n
      \r\n
      You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the \'Add New Event\' button to be taken to the event posting screen. There are three types of events that you can now add:\r\n
      \r\n
    • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.\r\n
    • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.\r\n
    • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.\r\n
      \r\n
      If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.\r\n
      \r\n
      Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.', 'More information on the boards calendar feature.');"; + + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Inserts completed, dropping old tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_19'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 19: DROPPING TABLES + /*-------------------------------------------------------------------------*/ + + function step_19() + { + $SQL[] = "DROP TABLE ".SQL_PREFIX."tmpl_names;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."forums_bak;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."categories;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."messages;"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Old tables dropped, optimization next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_20'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 20: OPTIMIZATION + /*-------------------------------------------------------------------------*/ + + function step_20() + { + $SQL[] = "alter table ".SQL_PREFIX."tracker change topic_id topic_id int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."tracker ADD INDEX(topic_id);"; + + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics CHANGE pinned pinned TINYINT( 1 ) DEFAULT '0' NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics CHANGE approved approved TINYINT( 1 ) DEFAULT '0' NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics ADD INDEX(topic_firstpost);"; + + $SQL[] = "alter table ".SQL_PREFIX."calendar_events change eventid eventid mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."calendar_events change userid userid mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."contacts change id id mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."contacts change contact_id contact_id mediumint(8) NOT NULL;"; + $SQL[] = "alter table ".SQL_PREFIX."contacts change member_id member_id mediumint(8) NOT NULL;"; + $SQL[] = "alter table ".SQL_PREFIX."faq change id id mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."forum_tracker change frid frid mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."forum_tracker change forum_id forum_id smallint(5) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."forums change last_poster_id last_poster_id mediumint(8) NOT NULL DEFAULT '0';"; + $SQL[] = "alter table ".SQL_PREFIX."languages change lid lid mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra change id id mediumint(8) NOT NULL;"; + $SQL[] = "alter table ".SQL_PREFIX."members change id id mediumint(8) NOT NULL;"; + $SQL[] = "alter table ".SQL_PREFIX."members change mgroup mgroup smallint(3) NOT NULL;"; + + + $SQL[] = "alter table ".SQL_PREFIX."moderator_logs change id id int(10) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."moderator_logs change topic_id topic_id int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."moderator_logs change post_id post_id int(10);"; + $SQL[] = "alter table ".SQL_PREFIX."moderator_logs change member_id member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."moderator_logs change ip_address ip_address VARCHAR(16) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."moderators change mid mid mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."moderators change member_id member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."pfields_content change member_id member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."polls change pid pid mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."polls change tid tid int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."polls change starter_id starter_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."polls change votes votes smallint(5) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."polls change forum_id forum_id smallint(5) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts change pid pid int(10) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."posts change author_id author_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts change topic_id topic_id int(10) NOT NULL default '0';"; + + $SQL[] = "alter table ".SQL_PREFIX."posts change ip_address ip_address varchar(16) NOT NULL DEFAULT '';"; + $SQL[] = "alter table ".SQL_PREFIX."posts change use_sig use_sig tinyint(1) NOT NULL DEFAULT '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts change use_emo use_emo tinyint(1) NOT NULL DEFAULT '0';"; + $SQL[] = "alter table ".SQL_PREFIX."sessions change member_id member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."sessions change in_forum in_forum smallint(5) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."stats change TOTAL_REPLIES TOTAL_REPLIES int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."stats change TOTAL_TOPICS TOTAL_TOPICS int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."stats change LAST_MEM_ID LAST_MEM_ID mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."stats change MEM_COUNT MEM_COUNT mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topics change tid tid int(10) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."topics change starter_id starter_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topics change last_poster_id last_poster_id mediumint(8) NOT NULL DEFAULT '0';"; + $SQL[] = "alter table ".SQL_PREFIX."tracker change trid trid mediumint(8) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."tracker change member_id member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."voters change vid vid int(10) NOT NULL auto_increment;"; + $SQL[] = "alter table ".SQL_PREFIX."voters change tid tid int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."voters change forum_id forum_id smallint(5) NOT NULL default '0';"; + + $SQL[] = "UPDATE ".SQL_PREFIX."members SET language=''"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Optimization started...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_21'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 21: OPTIMIZATION II + /*-------------------------------------------------------------------------*/ + + function step_21() + { + $SQL[] = "alter table ".SQL_PREFIX."posts drop index topic_id;"; + $SQL[] = "alter table ".SQL_PREFIX."posts drop index author_id;"; + $SQL[] = "alter table ".SQL_PREFIX."posts add index topic_id (topic_id, queued, pid);"; + $SQL[] = "alter table ".SQL_PREFIX."posts add index author_id( author_id, topic_id);"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."posts DROP INDEX forum_id, ADD INDEX(post_date);"; + + $SQL[] = "update ".SQL_PREFIX."members SET restrict_post=0"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Optimization completed, new skins import next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_22'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 22: IMPORT SKINS & SETTINGS + /*-------------------------------------------------------------------------*/ + + function step_22() + { + //----------------------------------------- + // Get old skins data + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skins' ) ); + $outer = $this->install->ipsclass->DB->simple_exec(); + + while( $r = $this->install->ipsclass->DB->fetch_row( $outer ) ) + { + //----------------------------------------- + // Get CSS + //----------------------------------------- + + $css = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'css', 'where' => 'cssid='.$r['css_id'] ) ); + + //----------------------------------------- + // Get Wrapper + //----------------------------------------- + + $wrapper = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'templates', 'where' => 'tmid='.$r['tmpl_id'] ) ); + + //----------------------------------------- + // Insert... + //----------------------------------------- + + $this->install->ipsclass->DB->do_insert( 'skin_sets', array( + 'set_name' => $r['sname'], + 'set_image_dir' => $r['img_dir'], + 'set_hidden' => 1, + 'set_default' => 0, + 'set_css_method' => 0, + 'set_skin_set_parent' => 3, + 'set_author_email' => '', + 'set_author_name' => 'IPB 2.0 Import', + 'set_author_url' => '', + 'set_css' => stripslashes($css['css_text']), + 'set_wrapper' => stripslashes($wrapper['template']), + 'set_emoticon_folder' => 'default', + ) ); + + $new_id = $this->install->ipsclass->DB->get_insert_id(); + + //----------------------------------------- + // Update templates + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_templates', array( 'set_id' => $new_id ), 'set_id='.$r['set_id'] ); + + //----------------------------------------- + // Update macros + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_macro', array( 'macro_set' => $new_id ), 'macro_set='.$r['set_id'] ); + } + + //----------------------------------- + // Get XML + //----------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + //----------------------------------- + // Get XML file (TEMPLATES) + //----------------------------------- + + $xmlfile = ROOT_PATH.'resources/ipb_templates.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (TEMPLATES) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (TEMPLATES) + //------------------------------- + + if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) + { + $this->install->error[] = "Error with ipb_templates.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $newrow = array(); + + $newrow['group_name'] = $entry[ 'group_name' ]['VALUE']; + $newrow['section_content'] = $entry[ 'section_content' ]['VALUE']; + $newrow['func_name'] = $entry[ 'func_name' ]['VALUE']; + $newrow['func_data'] = $entry[ 'func_data' ]['VALUE']; + $newrow['set_id'] = 1; + $newrow['updated'] = time(); + + $this->install->ipsclass->DB->do_insert( "skin_templates", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //------------------------------- + // GET MACRO + //------------------------------- + + $xmlfile = ROOT_PATH.'resources/macro.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (MACRO) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (MACRO) + //------------------------------- + + if ( ! is_array( $xml->xml_array['macroexport']['macrogroup']['macro'] ) ) + { + $this->install->error[] = "Error with macro.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $newrow = array(); + + $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; + $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; + $newrow['macro_set'] = 1; + + $this->install->ipsclass->DB->do_insert( "skin_macro", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //------------------------------- + // WRAPPER / CSS + //------------------------------- + + $xmlfile = ROOT_PATH.'resources/skinsets.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (WRAPPER/CSS) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (WRAPPER/CSS) + //------------------------------- + + if ( ! is_array( $xml->xml_array['export']['group']['row'] ) ) + { + $this->install->error[] = "Error with skinsets.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['export']['group']['row'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $entry['set_skin_set_id'] <> 1 ) + { + continue; + } + + $newrow = array(); + + $newrow['set_css'] = $entry[ 'set_css' ]['VALUE']; + $newrow['set_werapper'] = $entry[ 'set_wrapper' ]['VALUE']; + + $this->install->ipsclass->DB->do_update( "skin_sets", $wrapper_record, "set_skin_set_id=1" ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //----------------------------------------- + // Cleanup XML + //----------------------------------------- + + unset($xml); + + $this->install->message = "Skins imported, importing settings..."; + $this->install->saved_data['workact'] = 'step_23'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 23: IMPORT SETTINGS + /*-------------------------------------------------------------------------*/ + + function step_23() + { + global $INFO; + + //----------------------------------- + // Get XML + //----------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + //----------------------------------- + // Get XML file + //----------------------------------- + + $xmlfile = ROOT_PATH.'resources/settings.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // pArse + //------------------------------- + + $fields = array( 'conf_title', 'conf_description', 'conf_group', 'conf_type', 'conf_key', 'conf_value', 'conf_default', + 'conf_extra', 'conf_evalphp', 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', 'conf_help_key', 'conf_add_cache' ); + + + if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'] ) ) + { + $this->install->error[] = "Error with settings.xml - could not process XML properly"; + } + + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $entry ) + { + if ( ! $entry['conf_key']['VALUE'] ) + { + continue; + } + + $newrow = array(); + + $entry['conf_value']['VALUE'] = ""; + + if ( $INFO[ $entry['conf_key']['VALUE'] ] != "" and $INFO[ $entry['conf_key']['VALUE'] ] != $entry['conf_default']['VALUE'] ) + { + $entry['conf_value']['VALUE'] = $INFO[ $entry['conf_key']['VALUE'] ]; + } + + //----------------------------------- + // Special considerations? + //----------------------------------- + + if ( $entry['conf_key']['VALUE'] == 'img_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + else if ( $entry['conf_key']['VALUE'] == 'photo_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + else if ( $entry['conf_key']['VALUE'] == 'avatar_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + + //----------------------------------- + // Make PHP slashes safe + //----------------------------------- + + $entry['conf_evalphp']['VALUE'] = str_replace( '\\', '\\\\', $entry['conf_evalphp']['VALUE'] ); + + foreach( $fields as $f ) + { + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( "conf_settings", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + + unset($xml); + + $this->install->message = "Settings imported, recache & rebuild next..."; + $this->install->saved_data['workact'] = 'step_24'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 24: RECACHE & REBUILD + /*-------------------------------------------------------------------------*/ + + function step_24() + { + //----------------------------------- + // Get ACP library + //----------------------------------- + + require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); + $acp = new admin_cache_functions(); + $acp->ipsclass =& $this->install->ipsclass; + + //----------------------------------- + // Cache skins and shit + //----------------------------------- + + $acp->_rebuild_all_caches( array(2,3) ); + + //------------------------------------------------------------- + // Forum cache + //------------------------------------------------------------- + + $this->install->ipsclass->update_forum_cache(); + + //------------------------------------------------------------- + // Group Cache + //------------------------------------------------------------- + + $this->install->ipsclass->cache['group_cache'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => "*", + 'from' => 'groups' + ) ); + + $this->install->ipsclass->DB->simple_exec(); + + while ( $i = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['group_cache'][ $i['g_id'] ] = $i; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Systemvars + //------------------------------------------------------------- + + $this->install->ipsclass->cache['systemvars'] = array(); + + $result = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) ); + + $this->install->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); + $this->install->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600; + + $this->install->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Stats + //------------------------------------------------------------- + + $this->install->ipsclass->cache['stats'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(pid) as posts', 'from' => 'posts', 'where' => "queued <> 1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['total_replies'] = intval($r['posts']); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(tid) as topics', 'from' => 'topics', 'where' => "approved = 1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['total_topics'] = intval($r['topics']); + $stats['total_replies'] -= $stats['total_topics']; + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(id) as members', 'from' => 'members', 'where' => "mgroup <> '".$this->install->ipsclass->vars['auth_group']."'" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['mem_count'] = intval($r['members']); + + $this->install->ipsclass->cache['stats']['total_replies'] = $stats['total_replies']; + $this->install->ipsclass->cache['stats']['total_topics'] = $stats['total_topics']; + $this->install->ipsclass->cache['stats']['mem_count'] = $stats['mem_count']; + + $r = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name', + 'from' => 'members', + 'order' => 'id DESC', + 'limit' => '0,1' + ) ); + + $this->install->ipsclass->cache['stats']['last_mem_name'] = $r['name']; + $this->install->ipsclass->cache['stats']['last_mem_id'] = $r['id']; + + $this->install->ipsclass->update_cache( array( 'name' => 'stats', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Ranks + //------------------------------------------------------------- + + $this->install->ipsclass->cache['ranks'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, posts', + 'from' => 'titles', + 'order' => "posts DESC", + ) ); + + $this->install->ipsclass->DB->simple_exec(); + + while ($i = $this->install->ipsclass->DB->fetch_row()) + { + $this->install->ipsclass->cache['ranks'][ $i['id'] ] = array( + 'TITLE' => $i['title'], + 'PIPS' => $i['pips'], + 'POSTS' => $i['posts'], + ); + } + + $this->install->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) ); + + + //------------------------------------------------------------- + // SETTINGS + //------------------------------------------------------------- + + $this->install->ipsclass->cache['settings'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_add_cache=1' ) ); + $info = $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row($info) ) + { + $this->install->ipsclass->cache['settings'][ $r['conf_key'] ] = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default']; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'settings', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // EMOTICONS + //------------------------------------------------------------- + + $this->install->ipsclass->cache['emoticons'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'typed,image,clickable,emo_set', 'from' => 'emoticons' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['emoticons'][] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'emoticons', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // LANGUAGES + //------------------------------------------------------------- + + $this->install->ipsclass->cache['languages'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'ldir,lname', 'from' => 'languages' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['languages'][] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'languages', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // ATTACHMENT TYPES + //------------------------------------------------------------- + + $this->install->ipsclass->cache['attachtypes'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'atype_extension,atype_mimetype,atype_post,atype_photo,atype_img', 'from' => 'attachments_type', 'where' => "atype_photo=1 OR atype_post=1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['attachtypes'][ $r['atype_extension'] ] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'attachtypes', 'array' => 1, 'deletefirst' => 1 ) ); + + $this->install->message = "Data recached..."; + unset($this->install->saved_data['workact']); + unset($this->install->saved_data['st']); + unset($this->install->saved_data['vid']); + } + + + //#------------------------------------------------------------------------ + // OTHER SQL WORK + //#------------------------------------------------------------------------ + + function sql_members($a, $b) + { + return "SELECT m.*, me.id as mextra FROM ibf_members m LEFT JOIN ibf_member_extra me ON ( me.id=m.id ) LIMIT $a, $b"; + } + + function sql_members_email( $a ) + { + return "select id, name, email, count(email) as count from ibf_members group by email order by count desc LIMIT 0, $a"; + } + + function sql_members_email_update( $push_auth ) + { + return "UPDATE ibf_members SET email=concat( id, '-', email ) where id IN(".implode(",", $push_auth).")"; + } + + function sql_members_converge( $start, $end ) + { + return "SELECT m.*, c.converge_id as cid FROM ibf_members m LEFT JOIN ibf_members_converge c ON ( c.converge_id=m.id ) WHERE id >= $start and id < $end"; + } + +} + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_10003/version_upgrade.php b/upload/upgrade/installfiles/upg_10003/version_upgrade.php new file mode 100644 index 00000000..ddd5f7cb --- /dev/null +++ b/upload/upgrade/installfiles/upg_10003/version_upgrade.php @@ -0,0 +1,2465 @@ + IPB UPGRADE 1.1 -> 2.0 SQL STUFF! +| > Script written by Matt Mecham +| > Date started: 21st April 2004 +| > Interesting fact: Turin Brakes are also good ++-------------------------------------------------------------------------- +*/ + +class version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->install->saved_data['workact'] ) + { + case 'step_1': + $this->step_1(); + break; + case 'step_2': + $this->step_2(); + break; + case 'step_3': + $this->step_3(); + break; + case 'step_4': + $this->step_4(); + break; + case 'step_5': + $this->step_5(); + break; + case 'step_6': + $this->step_6(); + break; + case 'step_7': + $this->step_7(); + break; + case 'step_8': + $this->step_8(); + break; + case 'step_9': + $this->step_9(); + break; + case 'step_10': + $this->step_10(); + break; + case 'step_11': + $this->step_11(); + break; + case 'step_12': + $this->step_12(); + break; + case 'step_13': + $this->step_13(); + break; + case 'step_14': + $this->step_14(); + break; + case 'step_15': + $this->step_15(); + break; + case 'step_16': + $this->step_16(); + break; + case 'step_17': + $this->step_17(); + break; + case 'step_18': + $this->step_18(); + break; + case 'step_19': + $this->step_19(); + break; + case 'step_20': + $this->step_20(); + break; + case 'step_21': + $this->step_21(); + break; + case 'step_22': + $this->step_22(); + break; + case 'step_23': + $this->step_23(); + break; + case 'step_24': + $this->step_24(); + break; + + default: + $this->step_1(); + break; + } + if ( $this->install->saved_data['workact'] ) + { + $this->install->saved_data['vid'] = $this->install->current_version; + + return false; + } + else + { + return true; + } + } + + /*-------------------------------------------------------------------------*/ + // STEP 1: COPY AND POPULATE BACK UP FORUMS TABLE + /*-------------------------------------------------------------------------*/ + + function step_1() + { + $this->install->saved_data['st'] = 0; + + $table = $this->install->ipsclass->DB->sql_get_table_schematic( 'forums' ); + + $SQL[] = str_replace( SQL_PREFIX."forums", SQL_PREFIX."forums_bak", $table['Create Table'] ); + + $SQL[] = "INSERT INTO ".SQL_PREFIX."forums_bak SELECT * FROM ".SQL_PREFIX."forums"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + //----------------------------------------- + // Check... + //----------------------------------------- + + $this->install->ipsclass->DB->query( "SELECT COUNT(*) as count FROM ".SQL_PREFIX."forums_bak" ); + $count = $this->install->ipsclass->DB->fetch_row(); + + if ( intval( $count['count'] ) < 1 ) + { + $this->install->error[] = "The back-up forums table has not been populated successfully. Continuing this convert WILL delete all forums permanently. Contact technical support immediately."; + } + + $this->install->message = "Forums table backed up - creating new tables next....

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_2'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 2: DROP FORUMS TABLE, CREATE NEW TABLES + /*-------------------------------------------------------------------------*/ + + function step_2() + { + $SQL[] = "CREATE TABLE ".SQL_PREFIX."attachments ( + attach_id int(10) NOT NULL auto_increment, + attach_ext varchar(10) NOT NULL default '', + attach_file varchar(250) NOT NULL default '', + attach_location varchar(250) NOT NULL default '', + attach_thumb_location varchar(250) NOT NULL default '', + attach_thumb_width smallint(5) NOT NULL default '0', + attach_thumb_height smallint(5) NOT NULL default '0', + attach_is_image tinyint(1) NOT NULL default '0', + attach_hits int(10) NOT NULL default '0', + attach_date int(10) NOT NULL default '0', + attach_temp tinyint(1) NOT NULL default '0', + attach_pid int(10) NOT NULL default '0', + attach_post_key varchar(32) NOT NULL default '0', + attach_msg int(10) NOT NULL default '0', + attach_member_id mediumint(8) NOT NULL default '0', + attach_approved int(10) NOT NULL default '1', + attach_filesize int(10) NOT NULL default '0', + PRIMARY KEY (attach_id), + KEY attach_pid (attach_pid), + KEY attach_msg (attach_msg), + KEY attach_post_key (attach_post_key), + KEY attach_mid_size (attach_member_id, attach_filesize) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."message_text ( + msg_id int(10) NOT NULL auto_increment, + msg_date int(10) default 0, + msg_post text default '', + msg_cc_users text default '', + msg_sent_to_count smallint(5) NOT NULL default '0', + msg_deleted_count smallint(5) NOT NULL default '0', + msg_post_key varchar(32) NOT NULL default '0', + msg_author_id mediumint(8) NOT NULL default '0', + PRIMARY KEY (msg_id), + KEY msg_date (msg_date), + KEY msg_sent_to_count (msg_sent_to_count), + KEY msg_deleted_count (msg_deleted_count) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."message_topics ( + mt_id int(10) NOT NULL auto_increment, + mt_msg_id int(10) NOT NULL default '0', + mt_date int(10) NOT NULL default '0', + mt_title varchar(255) NOT NULL default '', + mt_from_id mediumint(8) NOT NULL default '0', + mt_to_id mediumint(8) NOT NULL default '0', + mt_owner_id mediumint(8) NOT NULL default '0', + mt_vid_folder varchar(32) NOT NULL default '', + mt_read tinyint(1) NOT NULL default '0', + mt_hasattach smallint(5) NOT NULL default '0', + mt_hide_cc tinyint(1) default '0', + mt_tracking tinyint(1) default '0', + mt_user_read int(10) default '0', + PRIMARY KEY (mt_id), + KEY mt_from_id (mt_from_id), + KEY mt_owner_id (mt_owner_id, mt_to_id, mt_vid_folder) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."skin_sets ( + set_skin_set_id int(10) NOT NULL auto_increment, + set_name varchar(150) NOT NULL default '', + set_image_dir varchar(200) NOT NULL default '', + set_hidden tinyint(1) NOT NULL default '0', + set_default tinyint(1) NOT NULL default '0', + set_css_method varchar(100) NOT NULL default 'inline', + set_skin_set_parent smallint(5) NOT NULL default '-1', + set_author_email varchar(255) NOT NULL default '', + set_author_name varchar(255) NOT NULL default '', + set_author_url varchar(255) NOT NULL default '', + set_css mediumtext NOT NULL default '', + set_wrapper mediumtext NOT NULL default '', + set_css_updated int(10) NOT NULL default '0', + set_cache_css mediumtext NOT NULL default '', + set_cache_macro mediumtext NOT NULL default '', + set_cache_wrapper mediumtext NOT NULL default '', + set_emoticon_folder varchar(60) NOT NULL default 'default', + PRIMARY KEY(set_skin_set_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."skin_templates_cache ( + template_id varchar(32) NOT NULL default '', + template_group_name varchar(255) NOT NULL default '', + template_group_content mediumtext NOT NULL default '', + template_set_id int(10) NOT NULL default '0', + primary key (template_id), + KEY template_set_id (template_set_id), + KEY template_group_name (template_group_name) + );"; + + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."mail_queue( + mail_id int(10) auto_increment NOT NULL, + mail_date int(10) NOT NULL default '0', + mail_to varchar(255) NOT NULL default '', + mail_from varchar(255) NOT NULL default '', + mail_subject text NOT NULL default '', + mail_content text NOT NULL default '', + mail_type varchar(200) NOT NULL default '', + PRIMARY KEY (mail_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."task_manager ( + task_id int(10) auto_increment NOT NULL, + task_title varchar(255) NOT NULL default '', + task_file varchar(255) NOT NULL default '', + task_next_run int(10) NOT NULL default '0', + task_week_day tinyint(1) NOT NULL default '-1', + task_month_day smallint(2) NOT NULL default '-1', + task_hour smallint(2) NOT NULL default '-1', + task_minute smallint(2) NOT NULL default '-1', + task_cronkey varchar(32) NOT NULL default '', + task_log tinyint(1) NOT NULL default '0', + task_description text NOT NULL default '', + task_enabled tinyint(1) NOT NULL default '1', + task_key varchar(30) NOT NULL default '', + task_safemode tinyint(1) NOT NULL default '0', + PRIMARY KEY(task_id), + KEY task_next_run (task_next_run) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."task_logs ( + log_id int(10) auto_increment NOT NULL, + log_title varchar(255) NOT NULL default '', + log_date int(10) NOT NULL default '0', + log_ip varchar(16) NOT NULL default '0', + log_desc text NOT NULL default '', + PRIMARY KEY(log_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."custom_bbcode ( + bbcode_id int(10) NOT NULL auto_increment, + bbcode_title varchar(255) NOT NULL default '', + bbcode_desc text NOT NULL default '', + bbcode_tag varchar(255) NOT NULL default '', + bbcode_replace text NOT NULL default '', + bbcode_useoption tinyint(1) NOT NULL default '0', + bbcode_example text NOT NULL default '', + PRIMARY KEY (bbcode_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."conf_settings ( + conf_id int(10) NOT NULL auto_increment, + conf_title varchar(255) NOT NULL default '', + conf_description text NOT NULL default '', + conf_group smallint(3) NOT NULL default '0', + conf_type varchar(255) NOT NULL default '', + conf_key varchar(255) NOT NULL default '', + conf_value text NOT NULL default '', + conf_default text NOT NULL default '', + conf_extra text NOT NULL default '', + conf_evalphp text NOT NULL default '', + conf_protected tinyint(1) NOT NULL default '0', + conf_position smallint(3) NOT NULL default '0', + conf_start_group varchar(255) NOT NULL default '', + conf_end_group tinyint(1) NOT NULL default '0', + conf_help_key varchar(255) NOT NULL default '0', + conf_add_cache tinyint(1) NOT NULL default '1', + PRIMARY KEY (conf_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."conf_settings_titles ( + conf_title_id smallint(3) NOT NULL auto_increment, + conf_title_title varchar(255) NOT NULL default '', + conf_title_desc text NOT NULL default '', + conf_title_count smallint(3) NOT NULL default '0', + conf_title_noshow tinyint(1) NOT NULL default '0', + conf_title_keyword varchar(200) NOT NULL default '', + PRIMARY KEY(conf_title_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."topics_read ( + read_tid int(10) NOT NULL default '0', + read_mid mediumint(8) NOT NULL default '0', + read_date int(10) NOT NULL default '0', + UNIQUE KEY read_tid_mid( read_tid, read_mid ) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."banfilters ( + ban_id int(10) NOT NULL auto_increment, + ban_type varchar(10) NOT NULL default 'ip', + ban_content text NOT NULL default '', + ban_date int(10) NOT NULL default '0', + PRIMARY KEY (ban_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."attachments_type ( + atype_id int(10) NOT NULL auto_increment, + atype_extension varchar(18) NOT NULL default '', + atype_mimetype varchar(255) NOT NULL default '', + atype_post tinyint(1) NOT NULL default '1', + atype_photo tinyint(1) NOT NULL default '0', + atype_img text NOT NULL default '', + PRIMARY KEY (atype_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."members_converge ( + converge_id int(10) auto_increment NOT NULL, + converge_email varchar(250) NOT NULL default '', + converge_joined int(10) NOT NULL default '0', + converge_pass_hash varchar(32) NOT NULL default '', + converge_pass_salt varchar(5) NOT NULL default '', + PRIMARY KEY( converge_id ) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."announcements ( + announce_id int(10) UNSIGNED NOT NULL auto_increment, + announce_title varchar(255) NOT NULL default '', + announce_post text NOT NULL default '', + announce_forum text NOT NULL default '', + announce_member_id mediumint(8) UNSIGNED NOT NULL default '0', + announce_html_enabled tinyint(1) NOT NULL default '0', + announce_views int(10) UNSIGNED NOT NULL default '0', + announce_start int(10) UNSIGNED NOT NULL default '0', + announce_end int(10) UNSIGNED NOT NULL default '0', + announce_active tinyint(1) NOT NULL default '1', + PRIMARY KEY (announce_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."mail_error_logs ( + mlog_id int(10) auto_increment NOT NULL, + mlog_date int(10) NOT NULL default '0', + mlog_to varchar(250) NOT NULL default '', + mlog_from varchar(250) NOT NULL default '', + mlog_subject varchar(250) NOT NULL default '', + mlog_content varchar(250) NOT NULL default '', + mlog_msg text NOT NULL default '', + mlog_code varchar(200) NOT NULL default '', + mlog_smtp_msg text NOT NULL default '', + PRIMARY KEY (mlog_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."bulk_mail ( + mail_id int(10) NOT NULL auto_increment, + mail_subject varchar(255) NOT NULL default '', + mail_content mediumtext NOT NULL default '', + mail_groups mediumtext NOT NULL default '', + mail_honor tinyint(1) NOT NULL default '1', + mail_opts mediumtext NOT NULL default '', + mail_start int(10) NOT NULL default '0', + mail_updated int(10) NOT NULL default '0', + mail_sentto int(10) NOT NULL default '0', + mail_active tinyint(1) NOT NULL default '0', + mail_pergo smallint(5) NOT NULL default '0', + PRIMARY KEY (mail_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."upgrade_history ( + upgrade_id int(10) NOT NULL auto_increment, + upgrade_version_id int(10) NOT NULL default '0', + upgrade_version_human varchar(200) NOT NULL default '', + upgrade_date int(10) NOT NULL default '0', + upgrade_mid int(10) NOT NULL default '0', + upgrade_notes text NOT NULL default '', + PRIMARY KEY (upgrade_id) + );"; + + $SQL[] = "DROP TABLE ".SQL_PREFIX."forums;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."forums ( + id smallint(5) NOT NULL default '0', + topics mediumint(6) default '0', + posts mediumint(6) default '0', + last_post int(10) default NULL, + last_poster_id mediumint(8) NOT NULL default '0', + last_poster_name varchar(32) default NULL, + name varchar(128) NOT NULL default '', + description text, + position tinyint(2) default NULL, + use_ibc tinyint(1) default NULL, + use_html tinyint(1) default NULL, + status varchar(10) default NULL, + password varchar(32) default NULL, + last_title varchar(128) default NULL, + last_id int(10) default NULL, + sort_key varchar(32) default NULL, + sort_order varchar(32) default NULL, + prune tinyint(3) default NULL, + show_rules tinyint(1) default NULL, + preview_posts tinyint(1) default NULL, + allow_poll tinyint(1) NOT NULL default '1', + allow_pollbump tinyint(1) NOT NULL default '0', + inc_postcount tinyint(1) NOT NULL default '1', + skin_id int(10) default NULL, + parent_id mediumint(5) default '-1', + sub_can_post tinyint(1) default '1', + quick_reply tinyint(1) default '0', + redirect_url varchar(250) default '', + redirect_on tinyint(1) NOT NULL default '0', + redirect_hits int(10) NOT NULL default '0', + redirect_loc varchar(250) default '', + rules_title varchar(255) NOT NULL default '', + rules_text text NOT NULL, + topic_mm_id varchar(250) NOT NULL default '', + notify_modq_emails text default '', + permission_custom_error text NOT NULL default '', + permission_array mediumtext NOT NULL default '', + permission_showtopic tinyint(1) NOT NULL default '0', + queued_topics mediumint(6) NOT NULL default '0', + queued_posts mediumint(6) NOT NULL default '0', + PRIMARY KEY (id), + KEY position (position, parent_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscriptions ( + sub_id smallint(5) NOT NULL auto_increment, + sub_title varchar(250) NOT NULL default '', + sub_desc text, + sub_new_group mediumint(8) NOT NULL default 0, + sub_length smallint(5) NOT NULL default '1', + sub_unit varchar(2) NOT NULL default 'm', + sub_cost decimal(10,2) NOT NULL default '0.00', + sub_run_module varchar(250) NOT NULL default '', + PRIMARY KEY (sub_id) + ) TYPE=MyISAM;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_extra ( + subextra_id smallint(5) NOT NULL auto_increment, + subextra_sub_id smallint(5) NOT NULL default '0', + subextra_method_id smallint(5) NOT NULL default '0', + subextra_product_id varchar(250) NOT NULL default '0', + subextra_can_upgrade tinyint(1) NOT NULL default '0', + subextra_recurring tinyint(1) NOT NULL default '0', + subextra_custom_1 text, + subextra_custom_2 text, + subextra_custom_3 text, + subextra_custom_4 text, + subextra_custom_5 text, + PRIMARY KEY(subextra_id) + ) TYPE=MyISAM;"; + + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_trans ( + subtrans_id int(10) NOT NULL auto_increment, + subtrans_sub_id smallint(5) NOT NULL default '0', + subtrans_member_id mediumint(8) NOT NULL default '0', + subtrans_old_group smallint(5) NOT NULL default '0', + subtrans_paid decimal(10,2) NOT NULL default '0.00', + subtrans_cumulative decimal(10,2) NOT NULL default '0.00', + subtrans_method varchar(20) NOT NULL default '', + subtrans_start_date int(11) NOT NULL default '0', + subtrans_end_date int(11) NOT NULL default '0', + subtrans_state varchar(200) NOT NULL default '', + subtrans_trxid varchar(200) NOT NULL default '', + subtrans_subscrid varchar(200) NOT NULL default '', + subtrans_currency varchar(10) NOT NULL default 'USD', + PRIMARY KEY (subtrans_id) + ) TYPE=MyISAM;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_logs ( + sublog_id int(10) NOT NULL auto_increment, + sublog_date int(10) NOT NULL default '0', + sublog_member_id mediumint(8) NOT NULL default '0', + sublog_transid int(10) NOT NULL default '', + sublog_ipaddress varchar(16) NOT NULL default '', + sublog_data text, + sublog_postdata text, + PRIMARY KEY (sublog_id) + ) TYPE=MyISAM;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_methods ( + submethod_id smallint(5) NOT NULL auto_increment, + submethod_title varchar(250) NOT NULL default '', + submethod_name varchar(20) NOT NULL default '', + submethod_email varchar(250) NOT NULL default '', + submethod_sid text, + submethod_custom_1 text, + submethod_custom_2 text, + submethod_custom_3 text, + submethod_custom_4 text, + submethod_custom_5 text, + submethod_is_cc tinyint(1) NOT NULL default '0', + submethod_is_auto tinyint(1) NOT NULL default '0', + submethod_desc text, + submethod_logo text, + submethod_active tinyint(1) NOT NULL default '0', + submethod_use_currency varchar(10) NOT NULL default 'USD', + PRIMARY KEY (submethod_id) + ) TYPE=MyISAM;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."subscription_currency ( + subcurrency_code varchar(10) NOT NULL, + subcurrency_desc varchar(250) NOT NULL default '', + subcurrency_exchange decimal(16, 8) NOT NULL, + subcurrency_default tinyint(1) NOT NULL default '0', + PRIMARY KEY(subcurrency_code) + ) TYPE=MyISAM;"; + + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "New tables created. Altering tables (Part 1, section 1 - post table)

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_3'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 3: ALTER POST TABLE + /*-------------------------------------------------------------------------*/ + + function step_3() + { + $SQL[] = "alter table ".SQL_PREFIX."posts add post_parent int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts ADD post_key varchar(32) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts add post_htmlstate smallint(1) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Post table altered, altering topic table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_4'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 4: ALTER TOPIC TABLE + /*-------------------------------------------------------------------------*/ + + function step_4() + { + $SQL[] = "alter table ".SQL_PREFIX."topics ADD topic_hasattach smallint(5) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Topic table altered, altering members table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_5'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 5: ALTER MEMBERS TABLE + /*-------------------------------------------------------------------------*/ + + function step_5() + { + $SQL[] = "alter table ".SQL_PREFIX."members add login_anonymous varchar(3) NOT NULL default '0&0';"; + $SQL[] = "alter table ".SQL_PREFIX."members add ignored_users text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members add mgroup_others varchar(255) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra + ADD aim_name varchar(40) NOT NULL default '', + ADD icq_number int(15) NOT NULL default '0', + ADD website varchar(250) NOT NULL default '', + ADD yahoo varchar(40) NOT NULL default '', + ADD interests text NOT NULL default '', + ADD msnname varchar(200) NOT NULL default '', + ADD vdirs text NOT NULL default '', + ADD location varchar(250) NOT NULL default '', + ADD signature text NOT NULL default '', + ADD avatar_location varchar(128) NOT NULL default '', + ADD avatar_size varchar(9) NOT NULL default '', + ADD avatar_type varchar(15) NOT NULL default 'local';"; + $SQL[] = "alter table ".SQL_PREFIX."members add member_login_key varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members change password legacy_password varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members add subs_pkg_chosen smallint(3) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Members table altered, other tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_6'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 6: ALTER OTHER TABLES + /*-------------------------------------------------------------------------*/ + + function step_6() + { + $SQL[] = "alter table ".SQL_PREFIX."macro rename ibf_skin_macro;"; + $SQL[] = "alter table ".SQL_PREFIX."skin_macro change can_remove macro_can_remove tinyint(1) default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."groups add g_bypass_badwords tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."cache_store change cs_value cs_value mediumtext NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."cache_store add cs_array tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."sessions add in_error tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topic_mmod add mm_forums text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."groups change g_icon g_icon text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."emoticons add emo_set varchar(64) NOT NULL default 'default';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change ID session_id varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change IP_ADDRESS session_ip_address varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change MEMBER_NAME session_member_name varchar(250) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change MEMBER_ID session_member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change SESSION_KEY session_member_login_key varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change LOCATION session_location varchar(64) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change LOG_IN_TIME session_log_in_time int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change RUNNING_TIME session_running_time int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."forum_tracker add forum_track_type varchar(100) NOT NULL default 'delayed';"; + $SQL[] = "alter table ".SQL_PREFIX."tracker add topic_track_type varchar(100) NOT NULL default 'delayed';"; + + $SQL[] = "delete from ".SQL_PREFIX."members where id=0 LIMIT 1;"; + $SQL[] = "delete from ".SQL_PREFIX."member_extra where id=0 limit 1;"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Other tables altered, converting forums next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_7'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 7: IMPORT FORUMS + /*-------------------------------------------------------------------------*/ + + function step_7() + { + $this->install->ipsclass->DB->return_die = 1; + + //----------------------------------------- + // Convert existing forums + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."forums_bak ORDER BY id"); + + while( $r = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $perm_array = addslashes(serialize(array( + 'start_perms' => $r['start_perms'], + 'reply_perms' => $r['reply_perms'], + 'read_perms' => $r['read_perms'], + 'upload_perms' => $r['upload_perms'], + 'show_perms' => $r['read_perms'] + ) ) ); + + $this->install->ipsclass->DB->do_insert( 'forums', array ( + 'id' => $r['id'], + 'position' => $r['position'], + 'topics' => $r['topics'], + 'posts' => $r['posts'], + 'last_post' => $r['last_post'], + 'last_poster_id' => $r['last_poster_id'], + 'last_poster_name' => $r['last_poster_name'], + 'name' => $r['name'], + 'description' => $r['description'], + 'use_ibc' => $r['use_ibc'], + 'use_html' => $r['use_html'], + 'status' => $r['status'], + 'password' => $r['password'], + 'last_id' => $r['last_id'], + 'last_title' => $r['last_title'], + 'sort_key' => $r['sort_key'], + 'sort_order' => $r['sort_order'], + 'prune' => $r['prune'], + 'show_rules' => $r['show_rules'], + 'preview_posts' => $r['preview_posts'], + 'allow_poll' => $r['allow_poll'], + 'allow_pollbump' => $r['allow_pollbump'], + 'inc_postcount' => $r['inc_postcount'], + 'parent_id' => $r['parent_id'], + 'sub_can_post' => $r['sub_can_post'], + 'quick_reply' => $r['quick_reply'], + 'redirect_on' => $r['redirect_on'], + 'redirect_hits' => $r['redirect_hits'], + 'redirect_url' => $r['redirect_url'], + 'redirect_loc' => $r['redirect_loc'], + 'rules_title' => $r['rules_title'], + 'rules_text' => $r['rules_text'], + 'notify_modq_emails' => $r['notify_modq_emails'], + 'permission_array' => $perm_array, + 'permission_showtopic' => '', + 'permission_custom_error' => '', + ) ); + } + + //----------------------------------------- + // Convert categories + //----------------------------------------- + + $this->install->ipsclass->DB->query("SELECT MAX(id) as max FROM ".SQL_PREFIX."forums"); + $max = $this->install->ipsclass->DB->fetch_row(); + + $fid = $max['max']; + + $o = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."categories WHERE id > 0"); + + while( $r = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $fid++; + + $perm_array = addslashes(serialize(array( + 'start_perms' => '*', + 'reply_perms' => '*', + 'read_perms' => '*', + 'upload_perms' => '*', + 'show_perms' => '*', + ) ) ); + + $this->install->ipsclass->DB->do_insert( 'forums', array( + 'id' => $fid, + 'position' => $r['position'], + 'name' => $r['name'], + 'sub_can_post' => 0, + 'permission_array' => $perm_array, + 'parent_id' => -1, + ) ); + + //----------------------------------------- + // Update old categories + //----------------------------------------- + + $n = $this->install->ipsclass->DB->query("SELECT id FROM ".SQL_PREFIX."forums_bak WHERE category={$r['id']} AND parent_id = -1"); + + $ids = array(); + + while( $c = $this->install->ipsclass->DB->fetch_row($n) ) + { + $ids[] = $c['id']; + } + + if ( count($ids) ) + { + $this->install->ipsclass->DB->do_update( 'forums', array( 'parent_id' => $fid ), 'id IN ('.implode(',',$ids).')' ); + } + } + + $this->install->message = "Forums converted, converting attachments next...

      $fid forums converted...."; + $this->install->saved_data['workact'] = 'step_8'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 8: CONVERT ATTACHMENTS + /*-------------------------------------------------------------------------*/ + + function step_8() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( "select" => '*', + 'from' => 'posts', + 'where' => "attach_file != ''", + 'limit' => array( $start, $lend ) ) ); + + $outer = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while( $r = $this->install->ipsclass->DB->fetch_row( $outer ) ) + { + $image = 0; + $ext = strtolower( str_replace( ".", "", substr( $r['attach_file'], strrpos( $r['attach_file'], '.' ) ) ) ); + $postkey = md5( $r['post_date'].','.$r['pid'] ); + + if ( in_array( $ext, array( 'gif', 'jpeg', 'jpg', 'png' ) ) ) + { + $image = 1; + } + + $this->install->ipsclass->DB->do_insert( 'attachments', array( 'attach_ext' => $ext, + 'attach_file' => $r['attach_file'], + 'attach_location' => $r['attach_id'], + 'attach_is_image' => $image, + 'attach_hits' => $r['attach_hits'], + 'attach_date' => $r['post_date'], + 'attach_pid' => $r['pid'], + 'attach_post_key' => $postkey, + 'attach_member_id' => $r['author_id'], + 'attach_approved' => 1, + 'attach_filesize' => @filesize( ROOT_PATH.'uploads/'.$r['attach_id'] ), + ) ); + + $this->install->ipsclass->DB->do_update( 'posts', array( 'post_key' => $postkey ), 'pid='.$r['pid'] ); + $this->install->ipsclass->DB->simple_exec_query( array( 'update' => 'topics', 'set' => 'topic_hasattach=topic_hasattach+1', 'where' => 'tid='.$r['topic_id'] ) ); + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Attachments $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_8'; + } + else + { + $this->install->message = "Attachments converted, converting members..."; + $this->install->saved_data['workact'] = 'step_9'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 9: CONVERT MEMBERS + /*-------------------------------------------------------------------------*/ + + function step_9() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query( $this->sql_members( $start, $end ) ); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( $r['mextra'] ) + { + $this->install->ipsclass->DB->do_update( 'member_extra', + array( 'aim_name' => $r['aim_name'], + 'icq_number' => $r['icq_number'], + 'website' => $r['website'], + 'yahoo' => $r['yahoo'], + 'interests' => $r['interests'], + 'msnname' => $r['msnname'], + 'vdirs' => $r['vdirs'], + 'location' => $r['location'], + 'signature' => $r['signature'], + 'avatar_location' => $r['avatar'], + 'avatar_size' => $r['avatar_size'], + 'avatar_type' => preg_match( "/^upload\:/", $r['avatar'] ) ? 'upload' : ( preg_match( "#^http://#", $r['avatar'] ) ? 'url' : 'local' ) + ), 'id='.$r['mextra'] ); + } + else + { + $this->install->ipsclass->DB->do_insert( 'member_extra', + array( 'id' => $r['id'], + 'aim_name' => $r['aim_name'], + 'icq_number' => $r['icq_number'], + 'website' => $r['website'], + 'yahoo' => $r['yahoo'], + 'interests' => $r['interests'], + 'msnname' => $r['msnname'], + 'vdirs' => $r['vdirs'], + 'location' => $r['location'], + 'signature' => $r['signature'], + 'avatar_location' => $r['avatar'], + 'avatar_size' => $r['avatar_size'], + 'avatar_type' => preg_match( "/^upload\:/", $r['avatar'] ) ? 'upload' : ( preg_match( "#^http://#", $r['avatar'] ) ? 'url' : 'local' ) + ) ); + } + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Members adjusted $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_9'; + } + else + { + $this->install->message = "Members converted, making members email addresses safe for converge..."; + $this->install->saved_data['workact'] = 'step_10'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 10: CHECK EMAIL ADDRESSES + /*-------------------------------------------------------------------------*/ + + function step_10() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query( $this->sql_members_email( $lend ) ); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( $r['count'] < 2 ) + { + break; + } + else + { + $dupe_emails[] = $r['email']; + } + } + + if ( count( $dupe_emails ) ) + { + foreach( $dupe_emails as $email ) + { + $first = 0; + + $this->install->ipsclass->DB->build_query( array( 'select' => 'id,name,email', 'from' => 'members', 'where' => "email='{$email}'", 'order' => 'joined' ) ); + $this->install->ipsclass->DB->exec_query(); + + while( $r = $this->install->ipsclass->DB->fetch_row() ) + { + // First? + + if ( ! $first ) + { + $first = 1; + continue; + } + else + { + // later dupe.. + + $push_auth[] = $r['id']; + } + } + } + + if ( count( $push_auth ) ) + { + $this->install->ipsclass->DB->do_update( 'member_extra', array( 'bio' => 'dupemail' ), 'id IN ('.implode(",", $push_auth).")" ); + $this->install->ipsclass->DB->query( $this->sql_members_email_update( $push_auth ) ); + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Members email addresses checked $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_10'; + } + else + { + $this->install->message = "Members email addresses checked, adding to converge..."; + $this->install->saved_data['workact'] = 'step_11'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 11: CONVERGE + /*-------------------------------------------------------------------------*/ + + function step_11() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + $max = 0; + + $this->install->ipsclass->DB->build_query( array( 'select' => 'id', 'from' =>'members', 'where' => "id > {$end}" ) ); + $this->install->ipsclass->DB->exec_query(); + + $max = $this->install->ipsclass->DB->fetch_row(); + + $o = $this->install->ipsclass->DB->query( $this->sql_members_converge( $start, $end ) ); + + $found = 0; + + //----------------------------------------- + // Do it... + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( ! $r['cid'] or ! $r['id'] ) + { + $r['password'] = $r['password'] ? $r['password'] : $r['legacy_password']; + + $salt = $this->install->ipsclass->converge->generate_password_salt(5); + $salt = str_replace( '\\', "\\\\", $salt ); + + $this->install->ipsclass->DB->do_insert( 'members_converge', + array( 'converge_id' => $r['id'], + 'converge_email' => strtolower($r['email']), + 'converge_joined' => $r['joined'], + 'converge_pass_hash' => md5( md5($salt) . $r['password'] ), + 'converge_pass_salt' => $salt + ) ); + + $this->install->ipsclass->DB->do_update( 'members', array( 'member_login_key' => $this->install->ipsclass->converge->generate_auto_log_in_key(), 'email' => strtolower($r['email']) ), 'id='.$r['id'] ); + } + + $found++; + } + + if ( ! $found and ! $max['id'] ) + { + $this->install->message = "Converge completed, converting personal messages..."; + $this->install->saved_data['workact'] = 'step_12'; + $this->install->saved_data['st'] = 0; + } + else + { + $this->install->saved_data['st'] = $end; + $this->install->message = "Converge added: $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_11'; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 12: CONVERT PMs + /*-------------------------------------------------------------------------*/ + + function step_12() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'messages', 'limit' => array( $start, $lend ) ) ); + $o = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( ! $r['msg_date'] ) + { + $r['msg_date'] = $r['read_date']; + } + + if ( $r['vid'] != 'sent' ) + { + $this->install->ipsclass->DB->do_insert( 'message_text', + array( 'msg_date' => $r['msg_date'], + 'msg_post' => stripslashes($r['message']), + 'msg_cc_users' => $r['cc_users'], + 'msg_author_id' => $r['from_id'], + 'msg_sent_to_count' => 1, + 'msg_deleted_count' => 0, + ) ); + + $msg_id = $this->install->ipsclass->DB->get_insert_id(); + + $this->install->ipsclass->DB->do_insert( 'message_topics', + array( 'mt_msg_id' => $msg_id, + 'mt_date' => $r['msg_date'], + 'mt_title' => $r['title'], + 'mt_from_id' => $r['from_id'], + 'mt_to_id' => $r['recipient_id'], + 'mt_vid_folder' => $r['vid'], + 'mt_read' => $r['read_state'], + 'mt_tracking' => $r['tracking'], + 'mt_owner_id' => $r['recipient_id'], + ) ); + } + else + { + $this->install->ipsclass->DB->do_insert( 'message_text', + array( 'msg_date' => $r['msg_date'], + 'msg_post' => stripslashes($r['message']), + 'msg_cc_users' => $r['cc_users'], + 'msg_author_id' => $r['from_id'], + 'msg_sent_to_count' => 1, + 'msg_deleted_count' => 0, + ) ); + + $msg_id = $this->install->ipsclass->DB->get_insert_id(); + + $this->install->ipsclass->DB->do_insert( 'message_topics', + array( 'mt_msg_id' => $msg_id, + 'mt_date' => $r['msg_date'], + 'mt_title' => $r['title'], + 'mt_from_id' => $r['from_id'], + 'mt_to_id' => $r['recipient_id'], + 'mt_vid_folder' => $r['vid'], + 'mt_read' => $r['read_state'], + 'mt_tracking' => $r['tracking'], + 'mt_owner_id' => $r['from_id'], + ) ); + } + + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Personal messages: $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_12'; + } + else + { + $this->install->message = "Personal messages converted, proceeding to update topic multi-moderation..."; + $this->install->saved_data['workact'] = 'step_13'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 13: CONVERT TOPIC MULTI_MODS + /*-------------------------------------------------------------------------*/ + + function step_13() + { + $this->install->ipsclass->DB->return_die = 1; + + $this->install->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'forums' ) ); + $f = $this->install->ipsclass->DB->exec_query(); + + $final = array(); + + while ( $r = $this->install->ipsclass->DB->fetch_row($f) ) + { + $mmids = preg_split( "/,/", $r['topic_mm_id'], -1, PREG_SPLIT_NO_EMPTY ); + + if ( is_array( $mmids ) ) + { + foreach( $mmids as $m ) + { + $final[ $m ][] = $r['id']; + } + } + } + + $real_final = array(); + + foreach( $final as $id => $forums_ids ) + { + $ff = implode( ",",$forums_ids ); + + $this->install->ipsclass->DB->do_update( 'topic_mmod', array( 'mm_forums' => $ff ), 'mm_id='.$id ); + } + + $this->install->message = "Topic multi-moderation converted, alterting tables, stage 2..."; + $this->install->saved_data['workact'] = 'step_14'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 14: ALTER POST TABLE II + /*-------------------------------------------------------------------------*/ + + function step_14() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."posts DROP attach_id, DROP attach_hits, DROP attach_type, DROP attach_file;"; + $SQL[] = "alter table ".SQL_PREFIX."posts change queued queued tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts drop forum_id;"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Post table altered, altering topic table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_15'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 15: ALTER TOPIC TABLE II + /*-------------------------------------------------------------------------*/ + + function step_15() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics add topic_firstpost int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topics add topic_queuedposts int(10) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Topic table altered, altering members table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_16'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 16: ALTER MEMBERS TABLE II + /*-------------------------------------------------------------------------*/ + + function step_16() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members add has_blog TINYINT(1) NOT NULL default '0'"; + $SQL[] = "alter table ".SQL_PREFIX."members add sub_end int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members DROP msg_from_id, DROP msg_msg_id;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members DROP org_supmod, DROP integ_msg;"; + $SQL[] = "alter table ".SQL_PREFIX."members DROP aim_name, DROP icq_number, DROP website, DROP yahoo, DROP interests, + DROP msnname, DROP vdirs, DROP signature, DROP location, DROP avatar, DROP avatar_size;"; + $SQL[] = "alter table ".SQL_PREFIX."members change auto_track auto_track varchar(50) default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members change temp_ban temp_ban varchar(100) default '0'"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members change msg_total msg_total smallint(5) default '0'"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Members table altered, other tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_17'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 17: ALTER OTHERS TABLE II + /*-------------------------------------------------------------------------*/ + + function step_17() + { + $SQL[] = "alter table ".SQL_PREFIX."groups add g_attach_per_post int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topic_mmod add topic_approve tinyint(1) NOT NULL default '0';"; + + $SQL[] = "alter table ".SQL_PREFIX."groups add g_can_msg_attach tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."pfields_data + change fid pf_id smallint(5) NOT NULL auto_increment, + change ftitle pf_title varchar(250) NOT NULL default '', + change fdesc pf_desc varchar(250) NOT NULL default '', + change fcontent pf_content text NOT NULL default '', + change ftype pf_type varchar(250) NOT NULL default '', + change freq pf_not_null tinyint(1) NOT NULL default '0', + change fhide pf_member_hide tinyint(1) NOT NULL default '0', + change fmaxinput pf_max_input smallint(6) NOT NULL default '0', + change fedit pf_member_edit tinyint(1) NOT NULL default '0', + change forder pf_position smallint(6) NOT NULL default '0', + change fshowreg pf_show_on_reg tinyint(1) NOT NULL default '0', + add pf_input_format text NOT NULL default '', + add pf_admin_only tinyint(1) NOT NULL default '0', + add pf_topic_format text NOT NULL default '';"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Other tables altered, inserting data next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_18'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 18: SAFE INSERTS + /*-------------------------------------------------------------------------*/ + + function step_18() + { + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Left', 'Aligns content to the left of the post', 'left', '
      {content}
      ', 0, '[left]Left aligned text[/left]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Center', 'Aligns content to the center of the posting area.', 'center', '
      {content}
      ', 0, '[center]Centered Text[/center]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Topic Link', 'This tag provides an easy way to link to a topic', 'topic', '{content}', 1, '[topic=100]Click me![/topic]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Link', 'This tag provides an easy way to link to a post.', 'post', '{content}', 1, '[post=100]Click me![/post]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('CODEBOX', 'Use this BBCode tag to show a scrolling codebox. Useful for long sections of code.', 'codebox', '
      CODE
      {content}
      ', 0, '[codebox]long_code_here = '';[/codebox]');"; + + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='USD', subcurrency_desc='United States Dollars', subcurrency_exchange='1.00', subcurrency_default=1;"; + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='GBP', subcurrency_desc='United Kingdom Pounds', subcurrency_exchange=' 0.630776', subcurrency_default=0;"; + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='CAD', subcurrency_desc='Canada Dollars', subcurrency_exchange='1.37080', subcurrency_default=0;"; + $SQL[] = "insert into ".SQL_PREFIX."subscription_currency SET subcurrency_code='EUR', subcurrency_desc='Euro', subcurrency_exchange='0.901517', subcurrency_default=0;"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('PayPal', 'paypal', '', '', '', '', '', '', '', 0, 1, 'All major credit cards accepted. See PayPal for more information.', '', 1, 'USD');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('NOCHEX', 'nochex', '', '', '', '', '', '', '', 0, 1, 'UK debit and credit cards, such as Switch, Solo and VISA Delta. All prices will be convereted into GBP (UK Pounds) upon ordering.', NULL, 1, 'GBP');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Post Service', 'manual', '', '', '', '', '', '', '', 0, 0, 'You can use this method if you wish to send us a check, postal order or international money order.', NULL, 1, 'USD');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('2CheckOut', '2checkout', '', '', '', '', '', '', '', 1, 1, 'All major credit cards accepted. See 2CheckOut for more information.', NULL, 1, 'USD');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Authorize.net', 'authorizenet', '', '', '', '', '', '', '', '1', '1', NULL, NULL, '1', 'USD');"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (1, 'pdf', 'application/pdf', 1, 0, 'folder_mime_types/pdf.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (2, 'png', 'image/png', 1, 1, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (3, 'viv', 'video/vivo', 1, 0, 'folder_mime_types/win_player.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (4, 'wmv', 'video/x-msvideo', 1, 0, 'folder_mime_types/win_player.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (5, 'html', 'application/octet-stream', 1, 0, 'folder_mime_types/html.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (6, 'ram', 'audio/x-pn-realaudio', 1, 0, 'folder_mime_types/real_audio.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (7, 'gif', 'image/gif', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (8, 'mpg', 'video/mpeg', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (9, 'ico', 'image/ico', 1, 0, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (10, 'tar', 'application/x-tar', 1, 0, 'folder_mime_types/zip.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (11, 'bmp', 'image/x-MS-bmp', 1, 0, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (12, 'tiff', 'image/tiff', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (13, 'rtf', 'text/richtext', 1, 0, 'folder_mime_types/rtf.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (14, 'hqx', 'application/mac-binhex40', 1, 0, 'folder_mime_types/stuffit.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (15, 'aiff', 'audio/x-aiff', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (31, 'zip', 'application/zip', 1, 0, 'folder_mime_types/zip.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (17, 'ps', 'application/postscript', 1, 0, 'folder_mime_types/eps.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (18, 'doc', 'application/msword', 1, 0, 'folder_mime_types/doc.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (19, 'mov', 'video/quicktime', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (20, 'ppt', 'application/powerpoint', 1, 0, 'folder_mime_types/ppt.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (21, 'wav', 'audio/x-wav', 1, 0, 'folder_mime_types/music.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (22, 'mp3', 'audio/x-mpeg', 1, 0, 'folder_mime_types/music.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (23, 'jpg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (24, 'txt', 'text/plain', 1, 0, 'folder_mime_types/txt.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (25, 'xml', 'text/xml', 1, 0, 'folder_mime_types/script.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (26, 'css', 'text/css', 1, 0, 'folder_mime_types/script.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (27, 'swf', 'application/x-shockwave-flash', 0, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (32, 'php', 'application/octet-stream', 1, 0, 'folder_mime_types/php.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (28, 'htm', 'application/octet-stream', 1, 0, 'folder_mime_types/html.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (29, 'jpeg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (33, 'gz', 'application/x-gzip', 1, 0, 'folder_mime_types/zip.gif');"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('skin_id_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('bbcode', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('moderators', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('multimod', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('banfilters', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('attachtypes', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('emoticons', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('forum_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('badwords', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('systemvars', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('ranks', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('group_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('stats', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('profilefields', 'a:0:{}', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('settings','', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('languages', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Master Skin Set', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Default Skin', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Pre-2.0 Skins', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + + + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'General Configuration', 'These settings control the basics of the board such as URLs and paths.', 17);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'CPU Saving & Optimization', 'This section allows certain features to be limited or removed to get more performance out of your board.', 16);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Date & Time Formats', 'This section contains the date and time formats used throughout the board.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'User Profiles', 'This section allows you to adjust your member\'s global permissions and other options.', 22);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Topics, Posts and Polls', 'These options control various elements when posting, reading topics and reading polls.', 32);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Security and Privacy', 'These options allow you to adjust the security and privacy options for your board.', 18);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Cookies', 'This section allows you to set the default cookie options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (8, 'COPPA Set-up', 'This section allows you to comply with COPPA.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Calendar & Birthdays', 'This section will allow you to set up the board calendar and its related options.', 8);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'News Set-up', 'This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Personal Message Set-up', 'This section allows you to control the global PM options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Email Set-up', 'This section will allow you to change the incoming and outgoing email addresses as well as the email method.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Warn Set-up', 'This section will allow you to set up the warning system.', 15);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Trash Can Set-up', 'The trashcan is a special forum in which topics are moved into instead of being deleted.', 6);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Board Offline / Online', 'Use this setting to turn switch your board online or offline and leave a message for your visitors.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Search Engine Spiders', 'This section will allow you to set up and maintain your search engine bot spider recognition settings.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Board Guidelines', 'This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines.', 4);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Converge Set Up', 'Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products.', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Full Text Search Set-Up', 'Full text searching is a very fast and very efficient way of searching large amounts of posts without maintaining a manual index. This may not be available for your system.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; + + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Inserts completed, dropping old tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_19'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 19: DROPPING TABLES + /*-------------------------------------------------------------------------*/ + + function step_19() + { + $SQL[] = "DROP TABLE ".SQL_PREFIX."tmpl_names;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."forums_bak;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."categories;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."messages;"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Old tables dropped, optimization next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_20'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 20: OPTIMIZATION + /*-------------------------------------------------------------------------*/ + + function step_20() + { + $SQL[] = "alter table ".SQL_PREFIX."tracker change topic_id topic_id int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."tracker ADD INDEX(topic_id);"; + + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics CHANGE pinned pinned TINYINT( 1 ) DEFAULT '0' NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics CHANGE approved approved TINYINT( 1 ) DEFAULT '0' NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics ADD INDEX(topic_firstpost);"; + + $SQL[] = "UPDATE ".SQL_PREFIX."members SET language=''"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Optimization started...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_21'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 21: OPTIMIZATION II + /*-------------------------------------------------------------------------*/ + + function step_21() + { + $SQL[] = "alter table ".SQL_PREFIX."posts drop index topic_id;"; + $SQL[] = "alter table ".SQL_PREFIX."posts drop index author_id;"; + $SQL[] = "alter table ".SQL_PREFIX."posts add index topic_id (topic_id, queued, pid);"; + $SQL[] = "alter table ".SQL_PREFIX."posts add index author_id( author_id, topic_id);"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."posts DROP INDEX forum_id, ADD INDEX(post_date);"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Optimization completed, new skins import next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_22'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 22: IMPORT SKINS & SETTINGS + /*-------------------------------------------------------------------------*/ + + function step_22() + { + //----------------------------------------- + // Get old skins data + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skins' ) ); + $outer = $this->install->ipsclass->DB->simple_exec(); + + while( $r = $this->install->ipsclass->DB->fetch_row( $outer ) ) + { + //----------------------------------------- + // Get CSS + //----------------------------------------- + + $css = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'css', 'where' => 'cssid='.$r['css_id'] ) ); + + //----------------------------------------- + // Get Wrapper + //----------------------------------------- + + $wrapper = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'templates', 'where' => 'tmid='.$r['tmpl_id'] ) ); + + //----------------------------------------- + // Insert... + //----------------------------------------- + + $this->install->ipsclass->DB->do_insert( 'skin_sets', array( + 'set_name' => $r['sname'], + 'set_image_dir' => $r['img_dir'], + 'set_hidden' => 1, + 'set_default' => 0, + 'set_css_method' => 0, + 'set_skin_set_parent' => 3, + 'set_author_email' => '', + 'set_author_name' => 'IPB 2.0 Import', + 'set_author_url' => '', + 'set_css' => stripslashes($css['css_text']), + 'set_wrapper' => stripslashes($wrapper['template']), + 'set_emoticon_folder' => 'default', + ) ); + + $new_id = $this->install->ipsclass->DB->get_insert_id(); + + //----------------------------------------- + // Update templates + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_templates', array( 'set_id' => $new_id ), 'set_id='.$r['set_id'] ); + + //----------------------------------------- + // Update macros + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_macro', array( 'macro_set' => $new_id ), 'macro_set='.$r['set_id'] ); + } + + //----------------------------------- + // Get XML + //----------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + //----------------------------------- + // Get XML file (TEMPLATES) + //----------------------------------- + + $xmlfile = ROOT_PATH.'resources/ipb_templates.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (TEMPLATES) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (TEMPLATES) + //------------------------------- + + if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) + { + $this->install->error[] = "Error with ipb_templates.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $newrow = array(); + + $newrow['group_name'] = $entry[ 'group_name' ]['VALUE']; + $newrow['section_content'] = $entry[ 'section_content' ]['VALUE']; + $newrow['func_name'] = $entry[ 'func_name' ]['VALUE']; + $newrow['func_data'] = $entry[ 'func_data' ]['VALUE']; + $newrow['set_id'] = 1; + $newrow['updated'] = time(); + + $this->install->ipsclass->DB->do_insert( "skin_templates", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //------------------------------- + // GET MACRO + //------------------------------- + + $xmlfile = ROOT_PATH.'resources/macro.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (MACRO) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (MACRO) + //------------------------------- + + if ( ! is_array( $xml->xml_array['macroexport']['macrogroup']['macro'] ) ) + { + $this->install->error[] = "Error with macro.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $newrow = array(); + + $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; + $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; + $newrow['macro_set'] = 1; + + $this->install->ipsclass->DB->do_insert( "skin_macro", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //------------------------------- + // WRAPPER / CSS + //------------------------------- + + $xmlfile = ROOT_PATH.'resources/skinsets.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (WRAPPER/CSS) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (WRAPPER/CSS) + //------------------------------- + + if ( ! is_array( $xml->xml_array['export']['group']['row'] ) ) + { + $this->install->error[] = "Error with skinsets.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['export']['group']['row'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $entry['set_skin_set_id'] <> 1 ) + { + continue; + } + + $newrow = array(); + + $newrow['set_css'] = $entry[ 'set_css' ]['VALUE']; + $newrow['set_werapper'] = $entry[ 'set_wrapper' ]['VALUE']; + + $this->install->ipsclass->DB->do_update( "skin_sets", $wrapper_record, "set_skin_set_id=1" ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //----------------------------------------- + // Cleanup XML + //----------------------------------------- + + unset($xml); + + $this->install->message = "Skins imported, importing settings..."; + $this->install->saved_data['workact'] = 'step_23'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 23: IMPORT SETTINGS + /*-------------------------------------------------------------------------*/ + + function step_23() + { + global $INFO; + + //----------------------------------- + // Get XML + //----------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + //----------------------------------- + // Get XML file + //----------------------------------- + + $xmlfile = ROOT_PATH.'resources/settings.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // pArse + //------------------------------- + + $fields = array( 'conf_title', 'conf_description', 'conf_group', 'conf_type', 'conf_key', 'conf_value', 'conf_default', + 'conf_extra', 'conf_evalphp', 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', 'conf_help_key', 'conf_add_cache' ); + + + if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'] ) ) + { + $this->install->error[] = "Error with settings.xml - could not process XML properly"; + } + + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $entry ) + { + if ( ! $entry['conf_key']['VALUE'] ) + { + continue; + } + + $newrow = array(); + + $entry['conf_value']['VALUE'] = ""; + + if ( $INFO[ $entry['conf_key']['VALUE'] ] != "" and $INFO[ $entry['conf_key']['VALUE'] ] != $entry['conf_default']['VALUE'] ) + { + $entry['conf_value']['VALUE'] = $INFO[ $entry['conf_key']['VALUE'] ]; + } + + //----------------------------------- + // Special considerations? + //----------------------------------- + + if ( $entry['conf_key']['VALUE'] == 'img_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + else if ( $entry['conf_key']['VALUE'] == 'photo_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + else if ( $entry['conf_key']['VALUE'] == 'avatar_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + + //----------------------------------- + // Make PHP slashes safe + //----------------------------------- + + $entry['conf_evalphp']['VALUE'] = str_replace( '\\', '\\\\', $entry['conf_evalphp']['VALUE'] ); + + foreach( $fields as $f ) + { + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( "conf_settings", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + + unset($xml); + + $this->install->message = "Settings imported, recache & rebuild next..."; + $this->install->saved_data['workact'] = 'step_24'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 24: RECACHE & REBUILD + /*-------------------------------------------------------------------------*/ + + function step_24() + { + //----------------------------------- + // Get ACP library + //----------------------------------- + + require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); + $acp = new admin_cache_functions(); + $acp->ipsclass =& $this->install->ipsclass; + + //----------------------------------- + // Cache skins and shit + //----------------------------------- + + $acp->_rebuild_all_caches( array(2,3) ); + + //------------------------------------------------------------- + // Forum cache + //------------------------------------------------------------- + + $this->install->ipsclass->update_forum_cache(); + + //------------------------------------------------------------- + // Group Cache + //------------------------------------------------------------- + + $this->install->ipsclass->cache['group_cache'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => "*", + 'from' => 'groups' + ) ); + + $this->install->ipsclass->DB->simple_exec(); + + while ( $i = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['group_cache'][ $i['g_id'] ] = $i; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Systemvars + //------------------------------------------------------------- + + $this->install->ipsclass->cache['systemvars'] = array(); + + $result = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) ); + + $this->install->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); + $this->install->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600; + + $this->install->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Stats + //------------------------------------------------------------- + + $this->install->ipsclass->cache['stats'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(pid) as posts', 'from' => 'posts', 'where' => "queued <> 1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['total_replies'] = intval($r['posts']); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(tid) as topics', 'from' => 'topics', 'where' => "approved = 1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['total_topics'] = intval($r['topics']); + $stats['total_replies'] -= $stats['total_topics']; + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(id) as members', 'from' => 'members', 'where' => "mgroup <> '".$this->install->ipsclass->vars['auth_group']."'" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['mem_count'] = intval($r['members']); + + $this->install->ipsclass->cache['stats']['total_replies'] = $stats['total_replies']; + $this->install->ipsclass->cache['stats']['total_topics'] = $stats['total_topics']; + $this->install->ipsclass->cache['stats']['mem_count'] = $stats['mem_count']; + + $r = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name', + 'from' => 'members', + 'order' => 'id DESC', + 'limit' => '0,1' + ) ); + + $this->install->ipsclass->cache['stats']['last_mem_name'] = $r['name']; + $this->install->ipsclass->cache['stats']['last_mem_id'] = $r['id']; + + $this->install->ipsclass->update_cache( array( 'name' => 'stats', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Ranks + //------------------------------------------------------------- + + $this->install->ipsclass->cache['ranks'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, posts', + 'from' => 'titles', + 'order' => "posts DESC", + ) ); + + $this->install->ipsclass->DB->simple_exec(); + + while ($i = $this->install->ipsclass->DB->fetch_row()) + { + $this->install->ipsclass->cache['ranks'][ $i['id'] ] = array( + 'TITLE' => $i['title'], + 'PIPS' => $i['pips'], + 'POSTS' => $i['posts'], + ); + } + + $this->install->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) ); + + + //------------------------------------------------------------- + // SETTINGS + //------------------------------------------------------------- + + $this->install->ipsclass->cache['settings'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_add_cache=1' ) ); + $info = $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row($info) ) + { + $this->install->ipsclass->cache['settings'][ $r['conf_key'] ] = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default']; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'settings', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // EMOTICONS + //------------------------------------------------------------- + + $this->install->ipsclass->cache['emoticons'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'typed,image,clickable,emo_set', 'from' => 'emoticons' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['emoticons'][] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'emoticons', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // LANGUAGES + //------------------------------------------------------------- + + $this->install->ipsclass->cache['languages'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'ldir,lname', 'from' => 'languages' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['languages'][] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'languages', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // ATTACHMENT TYPES + //------------------------------------------------------------- + + $this->install->ipsclass->cache['attachtypes'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'atype_extension,atype_mimetype,atype_post,atype_photo,atype_img', 'from' => 'attachments_type', 'where' => "atype_photo=1 OR atype_post=1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['attachtypes'][ $r['atype_extension'] ] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'attachtypes', 'array' => 1, 'deletefirst' => 1 ) ); + + $this->install->message = "Data recached..."; + unset($this->install->saved_data['workact']); + unset($this->install->saved_data['st']); + unset($this->install->saved_data['vid']); + } + + + //#------------------------------------------------------------------------ + // OTHER SQL WORK + //#------------------------------------------------------------------------ + + function sql_members($a, $b) + { + return "SELECT m.*, me.id as mextra FROM ibf_members m LEFT JOIN ibf_member_extra me ON ( me.id=m.id ) LIMIT $a, $b"; + } + + function sql_members_email( $a ) + { + return "select id, name, email, count(email) as count from ibf_members group by email order by count desc LIMIT 0, $a"; + } + + function sql_members_email_update( $push_auth ) + { + return "UPDATE ibf_members SET email=concat( id, '-', email ) where id IN(".implode(",", $push_auth).")"; + } + + function sql_members_converge( $start, $end ) + { + return "SELECT m.*, c.converge_id as cid FROM ibf_members m LEFT JOIN ibf_members_converge c ON ( c.converge_id=m.id ) WHERE id >= $start and id < $end"; + } + +} + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_10004/version_upgrade.php b/upload/upgrade/installfiles/upg_10004/version_upgrade.php new file mode 100644 index 00000000..e62315f3 --- /dev/null +++ b/upload/upgrade/installfiles/upg_10004/version_upgrade.php @@ -0,0 +1,2363 @@ + IPB UPGRADE 1.1 -> 2.0 SQL STUFF! +| > Script written by Matt Mecham +| > Date started: 21st April 2004 +| > Interesting fact: Turin Brakes are also good ++-------------------------------------------------------------------------- +*/ + +class version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->install->saved_data['workact'] ) + { + case 'step_1': + $this->step_1(); + break; + case 'step_2': + $this->step_2(); + break; + case 'step_3': + $this->step_3(); + break; + case 'step_4': + $this->step_4(); + break; + case 'step_5': + $this->step_5(); + break; + case 'step_6': + $this->step_6(); + break; + case 'step_7': + $this->step_7(); + break; + case 'step_8': + $this->step_8(); + break; + case 'step_9': + $this->step_9(); + break; + case 'step_10': + $this->step_10(); + break; + case 'step_11': + $this->step_11(); + break; + case 'step_12': + $this->step_12(); + break; + case 'step_13': + $this->step_13(); + break; + case 'step_14': + $this->step_14(); + break; + case 'step_15': + $this->step_15(); + break; + case 'step_16': + $this->step_16(); + break; + case 'step_17': + $this->step_17(); + break; + case 'step_18': + $this->step_18(); + break; + case 'step_19': + $this->step_19(); + break; + case 'step_20': + $this->step_20(); + break; + case 'step_21': + $this->step_21(); + break; + case 'step_22': + $this->step_22(); + break; + case 'step_23': + $this->step_23(); + break; + case 'step_24': + $this->step_24(); + break; + + default: + $this->step_1(); + break; + } + if ( $this->install->saved_data['workact'] ) + { + $this->install->saved_data['vid'] = $this->install->current_version; + + return false; + } + else + { + return true; + } + } + + /*-------------------------------------------------------------------------*/ + // STEP 1: COPY AND POPULATE BACK UP FORUMS TABLE + /*-------------------------------------------------------------------------*/ + + function step_1() + { + $this->install->saved_data['st'] = 0; + + $table = $this->install->ipsclass->DB->sql_get_table_schematic( 'forums' ); + + $SQL[] = str_replace( SQL_PREFIX."forums", SQL_PREFIX."forums_bak", $table['Create Table'] ); + + $SQL[] = "INSERT INTO ".SQL_PREFIX."forums_bak SELECT * FROM ".SQL_PREFIX."forums"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + //----------------------------------------- + // Check... + //----------------------------------------- + + $this->install->ipsclass->DB->query( "SELECT COUNT(*) as count FROM ".SQL_PREFIX."forums_bak" ); + $count = $this->install->ipsclass->DB->fetch_row(); + + if ( intval( $count['count'] ) < 1 ) + { + $this->install->error[] = "The back-up forums table has not been populated successfully. Continuing this convert WILL delete all forums permanently. Contact technical support immediately."; + } + + $this->install->message = "Forums table backed up - creating new tables next....

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_2'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 2: DROP FORUMS TABLE, CREATE NEW TABLES + /*-------------------------------------------------------------------------*/ + + function step_2() + { + $SQL[] = "DROP TABLE if exists ".SQL_PREFIX."attachments;"; + $SQL[] = "DROP TABLE if exists ".SQL_PREFIX."announcements;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."attachments ( + attach_id int(10) NOT NULL auto_increment, + attach_ext varchar(10) NOT NULL default '', + attach_file varchar(250) NOT NULL default '', + attach_location varchar(250) NOT NULL default '', + attach_thumb_location varchar(250) NOT NULL default '', + attach_thumb_width smallint(5) NOT NULL default '0', + attach_thumb_height smallint(5) NOT NULL default '0', + attach_is_image tinyint(1) NOT NULL default '0', + attach_hits int(10) NOT NULL default '0', + attach_date int(10) NOT NULL default '0', + attach_temp tinyint(1) NOT NULL default '0', + attach_pid int(10) NOT NULL default '0', + attach_post_key varchar(32) NOT NULL default '0', + attach_msg int(10) NOT NULL default '0', + attach_member_id mediumint(8) NOT NULL default '0', + attach_approved int(10) NOT NULL default '1', + attach_filesize int(10) NOT NULL default '0', + PRIMARY KEY (attach_id), + KEY attach_pid (attach_pid), + KEY attach_msg (attach_msg), + KEY attach_post_key (attach_post_key), + KEY attach_mid_size (attach_member_id, attach_filesize) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."message_text ( + msg_id int(10) NOT NULL auto_increment, + msg_date int(10) default 0, + msg_post text default '', + msg_cc_users text default '', + msg_sent_to_count smallint(5) NOT NULL default '0', + msg_deleted_count smallint(5) NOT NULL default '0', + msg_post_key varchar(32) NOT NULL default '0', + msg_author_id mediumint(8) NOT NULL default '0', + PRIMARY KEY (msg_id), + KEY msg_date (msg_date), + KEY msg_sent_to_count (msg_sent_to_count), + KEY msg_deleted_count (msg_deleted_count) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."message_topics ( + mt_id int(10) NOT NULL auto_increment, + mt_msg_id int(10) NOT NULL default '0', + mt_date int(10) NOT NULL default '0', + mt_title varchar(255) NOT NULL default '', + mt_from_id mediumint(8) NOT NULL default '0', + mt_to_id mediumint(8) NOT NULL default '0', + mt_owner_id mediumint(8) NOT NULL default '0', + mt_vid_folder varchar(32) NOT NULL default '', + mt_read tinyint(1) NOT NULL default '0', + mt_hasattach smallint(5) NOT NULL default '0', + mt_hide_cc tinyint(1) default '0', + mt_tracking tinyint(1) default '0', + mt_user_read int(10) default '0', + PRIMARY KEY (mt_id), + KEY mt_from_id (mt_from_id), + KEY mt_owner_id (mt_owner_id, mt_to_id, mt_vid_folder) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."skin_sets ( + set_skin_set_id int(10) NOT NULL auto_increment, + set_name varchar(150) NOT NULL default '', + set_image_dir varchar(200) NOT NULL default '', + set_hidden tinyint(1) NOT NULL default '0', + set_default tinyint(1) NOT NULL default '0', + set_css_method varchar(100) NOT NULL default 'inline', + set_skin_set_parent smallint(5) NOT NULL default '-1', + set_author_email varchar(255) NOT NULL default '', + set_author_name varchar(255) NOT NULL default '', + set_author_url varchar(255) NOT NULL default '', + set_css mediumtext NOT NULL default '', + set_wrapper mediumtext NOT NULL default '', + set_css_updated int(10) NOT NULL default '0', + set_cache_css mediumtext NOT NULL default '', + set_cache_macro mediumtext NOT NULL default '', + set_cache_wrapper mediumtext NOT NULL default '', + set_emoticon_folder varchar(60) NOT NULL default 'default', + PRIMARY KEY(set_skin_set_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."skin_templates_cache ( + template_id varchar(32) NOT NULL default '', + template_group_name varchar(255) NOT NULL default '', + template_group_content mediumtext NOT NULL default '', + template_set_id int(10) NOT NULL default '0', + primary key (template_id), + KEY template_set_id (template_set_id), + KEY template_group_name (template_group_name) + );"; + + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."mail_queue( + mail_id int(10) auto_increment NOT NULL, + mail_date int(10) NOT NULL default '0', + mail_to varchar(255) NOT NULL default '', + mail_from varchar(255) NOT NULL default '', + mail_subject text NOT NULL default '', + mail_content text NOT NULL default '', + mail_type varchar(200) NOT NULL default '', + PRIMARY KEY (mail_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."task_manager ( + task_id int(10) auto_increment NOT NULL, + task_title varchar(255) NOT NULL default '', + task_file varchar(255) NOT NULL default '', + task_next_run int(10) NOT NULL default '0', + task_week_day tinyint(1) NOT NULL default '-1', + task_month_day smallint(2) NOT NULL default '-1', + task_hour smallint(2) NOT NULL default '-1', + task_minute smallint(2) NOT NULL default '-1', + task_cronkey varchar(32) NOT NULL default '', + task_log tinyint(1) NOT NULL default '0', + task_description text NOT NULL default '', + task_enabled tinyint(1) NOT NULL default '1', + task_key varchar(30) NOT NULL default '', + task_safemode tinyint(1) NOT NULL default '0', + PRIMARY KEY(task_id), + KEY task_next_run (task_next_run) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."task_logs ( + log_id int(10) auto_increment NOT NULL, + log_title varchar(255) NOT NULL default '', + log_date int(10) NOT NULL default '0', + log_ip varchar(16) NOT NULL default '0', + log_desc text NOT NULL default '', + PRIMARY KEY(log_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."custom_bbcode ( + bbcode_id int(10) NOT NULL auto_increment, + bbcode_title varchar(255) NOT NULL default '', + bbcode_desc text NOT NULL default '', + bbcode_tag varchar(255) NOT NULL default '', + bbcode_replace text NOT NULL default '', + bbcode_useoption tinyint(1) NOT NULL default '0', + bbcode_example text NOT NULL default '', + PRIMARY KEY (bbcode_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."conf_settings ( + conf_id int(10) NOT NULL auto_increment, + conf_title varchar(255) NOT NULL default '', + conf_description text NOT NULL default '', + conf_group smallint(3) NOT NULL default '0', + conf_type varchar(255) NOT NULL default '', + conf_key varchar(255) NOT NULL default '', + conf_value text NOT NULL default '', + conf_default text NOT NULL default '', + conf_extra text NOT NULL default '', + conf_evalphp text NOT NULL default '', + conf_protected tinyint(1) NOT NULL default '0', + conf_position smallint(3) NOT NULL default '0', + conf_start_group varchar(255) NOT NULL default '', + conf_end_group tinyint(1) NOT NULL default '0', + conf_help_key varchar(255) NOT NULL default '0', + conf_add_cache tinyint(1) NOT NULL default '1', + PRIMARY KEY (conf_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."conf_settings_titles ( + conf_title_id smallint(3) NOT NULL auto_increment, + conf_title_title varchar(255) NOT NULL default '', + conf_title_desc text NOT NULL default '', + conf_title_count smallint(3) NOT NULL default '0', + conf_title_noshow tinyint(1) NOT NULL default '0', + conf_title_keyword varchar(200) NOT NULL default '', + PRIMARY KEY(conf_title_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."topics_read ( + read_tid int(10) NOT NULL default '0', + read_mid mediumint(8) NOT NULL default '0', + read_date int(10) NOT NULL default '0', + UNIQUE KEY read_tid_mid( read_tid, read_mid ) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."banfilters ( + ban_id int(10) NOT NULL auto_increment, + ban_type varchar(10) NOT NULL default 'ip', + ban_content text NOT NULL default '', + ban_date int(10) NOT NULL default '0', + PRIMARY KEY (ban_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."attachments_type ( + atype_id int(10) NOT NULL auto_increment, + atype_extension varchar(18) NOT NULL default '', + atype_mimetype varchar(255) NOT NULL default '', + atype_post tinyint(1) NOT NULL default '1', + atype_photo tinyint(1) NOT NULL default '0', + atype_img text NOT NULL default '', + PRIMARY KEY (atype_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."members_converge ( + converge_id int(10) auto_increment NOT NULL, + converge_email varchar(250) NOT NULL default '', + converge_joined int(10) NOT NULL default '0', + converge_pass_hash varchar(32) NOT NULL default '', + converge_pass_salt varchar(5) NOT NULL default '', + PRIMARY KEY( converge_id ) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."announcements ( + announce_id int(10) UNSIGNED NOT NULL auto_increment, + announce_title varchar(255) NOT NULL default '', + announce_post text NOT NULL default '', + announce_forum text NOT NULL default '', + announce_member_id mediumint(8) UNSIGNED NOT NULL default '0', + announce_html_enabled tinyint(1) NOT NULL default '0', + announce_views int(10) UNSIGNED NOT NULL default '0', + announce_start int(10) UNSIGNED NOT NULL default '0', + announce_end int(10) UNSIGNED NOT NULL default '0', + announce_active tinyint(1) NOT NULL default '1', + PRIMARY KEY (announce_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."mail_error_logs ( + mlog_id int(10) auto_increment NOT NULL, + mlog_date int(10) NOT NULL default '0', + mlog_to varchar(250) NOT NULL default '', + mlog_from varchar(250) NOT NULL default '', + mlog_subject varchar(250) NOT NULL default '', + mlog_content varchar(250) NOT NULL default '', + mlog_msg text NOT NULL default '', + mlog_code varchar(200) NOT NULL default '', + mlog_smtp_msg text NOT NULL default '', + PRIMARY KEY (mlog_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."bulk_mail ( + mail_id int(10) NOT NULL auto_increment, + mail_subject varchar(255) NOT NULL default '', + mail_content mediumtext NOT NULL default '', + mail_groups mediumtext NOT NULL default '', + mail_honor tinyint(1) NOT NULL default '1', + mail_opts mediumtext NOT NULL default '', + mail_start int(10) NOT NULL default '0', + mail_updated int(10) NOT NULL default '0', + mail_sentto int(10) NOT NULL default '0', + mail_active tinyint(1) NOT NULL default '0', + mail_pergo smallint(5) NOT NULL default '0', + PRIMARY KEY (mail_id) + );"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."upgrade_history ( + upgrade_id int(10) NOT NULL auto_increment, + upgrade_version_id int(10) NOT NULL default '0', + upgrade_version_human varchar(200) NOT NULL default '', + upgrade_date int(10) NOT NULL default '0', + upgrade_mid int(10) NOT NULL default '0', + upgrade_notes text NOT NULL default '', + PRIMARY KEY (upgrade_id) + );"; + + $SQL[] = "DROP TABLE ".SQL_PREFIX."forums;"; + + $SQL[] = "CREATE TABLE ".SQL_PREFIX."forums ( + id smallint(5) NOT NULL default '0', + topics mediumint(6) default '0', + posts mediumint(6) default '0', + last_post int(10) default NULL, + last_poster_id mediumint(8) NOT NULL default '0', + last_poster_name varchar(32) default NULL, + name varchar(128) NOT NULL default '', + description text, + position tinyint(2) default NULL, + use_ibc tinyint(1) default NULL, + use_html tinyint(1) default NULL, + status varchar(10) default NULL, + password varchar(32) default NULL, + last_title varchar(128) default NULL, + last_id int(10) default NULL, + sort_key varchar(32) default NULL, + sort_order varchar(32) default NULL, + prune tinyint(3) default NULL, + show_rules tinyint(1) default NULL, + preview_posts tinyint(1) default NULL, + allow_poll tinyint(1) NOT NULL default '1', + allow_pollbump tinyint(1) NOT NULL default '0', + inc_postcount tinyint(1) NOT NULL default '1', + skin_id int(10) default NULL, + parent_id mediumint(5) default '-1', + sub_can_post tinyint(1) default '1', + quick_reply tinyint(1) default '0', + redirect_url varchar(250) default '', + redirect_on tinyint(1) NOT NULL default '0', + redirect_hits int(10) NOT NULL default '0', + redirect_loc varchar(250) default '', + rules_title varchar(255) NOT NULL default '', + rules_text text NOT NULL, + topic_mm_id varchar(250) NOT NULL default '', + notify_modq_emails text default '', + permission_custom_error text NOT NULL default '', + permission_array mediumtext NOT NULL default '', + permission_showtopic tinyint(1) NOT NULL default '0', + queued_topics mediumint(6) NOT NULL default '0', + queued_posts mediumint(6) NOT NULL default '0', + PRIMARY KEY (id), + KEY position (position, parent_id) + );"; + + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "New tables created. Altering tables (Part 1, section 1 - post table)

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_3'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 3: ALTER POST TABLE + /*-------------------------------------------------------------------------*/ + + function step_3() + { + $SQL[] = "alter table ".SQL_PREFIX."posts add post_parent int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts ADD post_key varchar(32) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts add post_htmlstate smallint(1) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Post table altered, altering topic table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_4'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 4: ALTER TOPIC TABLE + /*-------------------------------------------------------------------------*/ + + function step_4() + { + $SQL[] = "alter table ".SQL_PREFIX."topics ADD topic_hasattach smallint(5) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Topic table altered, altering members table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_5'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 5: ALTER MEMBERS TABLE + /*-------------------------------------------------------------------------*/ + + function step_5() + { + $SQL[] = "alter table ".SQL_PREFIX."members add login_anonymous varchar(3) NOT NULL default '0&0';"; + $SQL[] = "alter table ".SQL_PREFIX."members add ignored_users text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members add mgroup_others varchar(255) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."member_extra + ADD aim_name varchar(40) NOT NULL default '', + ADD icq_number int(15) NOT NULL default '0', + ADD website varchar(250) NOT NULL default '', + ADD yahoo varchar(40) NOT NULL default '', + ADD interests text NOT NULL default '', + ADD msnname varchar(200) NOT NULL default '', + ADD vdirs text NOT NULL default '', + ADD location varchar(250) NOT NULL default '', + ADD signature text NOT NULL default '', + ADD avatar_location varchar(128) NOT NULL default '', + ADD avatar_size varchar(9) NOT NULL default '', + ADD avatar_type varchar(15) NOT NULL default 'local';"; + $SQL[] = "alter table ".SQL_PREFIX."members add member_login_key varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."members change password legacy_password varchar(32) NOT NULL default '';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Members table altered, other tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_6'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 6: ALTER OTHER TABLES + /*-------------------------------------------------------------------------*/ + + function step_6() + { + $SQL[] = "alter table ".SQL_PREFIX."macro rename ibf_skin_macro;"; + $SQL[] = "alter table ".SQL_PREFIX."skin_macro change can_remove macro_can_remove tinyint(1) default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."groups add g_bypass_badwords tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."cache_store change cs_value cs_value mediumtext NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."cache_store add cs_array tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."sessions add in_error tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topic_mmod add mm_forums text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."groups change g_icon g_icon text NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."emoticons add emo_set varchar(64) NOT NULL default 'default';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change ID session_id varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change IP_ADDRESS session_ip_address varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change MEMBER_NAME session_member_name varchar(250) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change MEMBER_ID session_member_id mediumint(8) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change SESSION_KEY session_member_login_key varchar(32) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change LOCATION session_location varchar(64) NOT NULL default '';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change LOG_IN_TIME session_log_in_time int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."admin_sessions change RUNNING_TIME session_running_time int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."forum_tracker add forum_track_type varchar(100) NOT NULL default 'delayed';"; + $SQL[] = "alter table ".SQL_PREFIX."tracker add topic_track_type varchar(100) NOT NULL default 'delayed';"; + + $SQL[] = "delete from ".SQL_PREFIX."members where id=0 LIMIT 1;"; + $SQL[] = "delete from ".SQL_PREFIX."member_extra where id=0 limit 1;"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Other tables altered, converting forums next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_7'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 7: IMPORT FORUMS + /*-------------------------------------------------------------------------*/ + + function step_7() + { + $this->install->ipsclass->DB->return_die = 1; + + //----------------------------------------- + // Convert existing forums + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."forums_bak ORDER BY id"); + + while( $r = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $perm_array = addslashes(serialize(array( + 'start_perms' => $r['start_perms'], + 'reply_perms' => $r['reply_perms'], + 'read_perms' => $r['read_perms'], + 'upload_perms' => $r['upload_perms'], + 'show_perms' => $r['read_perms'] + ) ) ); + + $this->install->ipsclass->DB->do_insert( 'forums', array ( + 'id' => $r['id'], + 'position' => $r['position'], + 'topics' => $r['topics'], + 'posts' => $r['posts'], + 'last_post' => $r['last_post'], + 'last_poster_id' => $r['last_poster_id'], + 'last_poster_name' => $r['last_poster_name'], + 'name' => $r['name'], + 'description' => $r['description'], + 'use_ibc' => $r['use_ibc'], + 'use_html' => $r['use_html'], + 'status' => $r['status'], + 'password' => $r['password'], + 'last_id' => $r['last_id'], + 'last_title' => $r['last_title'], + 'sort_key' => $r['sort_key'], + 'sort_order' => $r['sort_order'], + 'prune' => $r['prune'], + 'show_rules' => $r['show_rules'], + 'preview_posts' => $r['preview_posts'], + 'allow_poll' => $r['allow_poll'], + 'allow_pollbump' => $r['allow_pollbump'], + 'inc_postcount' => $r['inc_postcount'], + 'parent_id' => $r['parent_id'], + 'sub_can_post' => $r['sub_can_post'], + 'quick_reply' => $r['quick_reply'], + 'redirect_on' => $r['redirect_on'], + 'redirect_hits' => $r['redirect_hits'], + 'redirect_url' => $r['redirect_url'], + 'redirect_loc' => $r['redirect_loc'], + 'rules_title' => $r['rules_title'], + 'rules_text' => $r['rules_text'], + 'notify_modq_emails' => $r['notify_modq_emails'], + 'permission_array' => $perm_array, + 'permission_showtopic' => '', + 'permission_custom_error' => '', + ) ); + } + + //----------------------------------------- + // Convert categories + //----------------------------------------- + + $this->install->ipsclass->DB->query("SELECT MAX(id) as max FROM ".SQL_PREFIX."forums"); + $max = $this->install->ipsclass->DB->fetch_row(); + + $fid = $max['max']; + + $o = $this->install->ipsclass->DB->query("SELECT * FROM ".SQL_PREFIX."categories WHERE id > 0"); + + while( $r = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $fid++; + + $perm_array = addslashes(serialize(array( + 'start_perms' => '*', + 'reply_perms' => '*', + 'read_perms' => '*', + 'upload_perms' => '*', + 'show_perms' => '*', + ) ) ); + + $this->install->ipsclass->DB->do_insert( 'forums', array( + 'id' => $fid, + 'position' => $r['position'], + 'name' => $r['name'], + 'sub_can_post' => 0, + 'permission_array' => $perm_array, + 'parent_id' => -1, + ) ); + + //----------------------------------------- + // Update old categories + //----------------------------------------- + + $n = $this->install->ipsclass->DB->query("SELECT id FROM ".SQL_PREFIX."forums_bak WHERE category={$r['id']} AND parent_id = -1"); + + $ids = array(); + + while( $c = $this->install->ipsclass->DB->fetch_row($n) ) + { + $ids[] = $c['id']; + } + + if ( count($ids) ) + { + $this->install->ipsclass->DB->do_update( 'forums', array( 'parent_id' => $fid ), 'id IN ('.implode(',',$ids).')' ); + } + } + + $this->install->message = "Forums converted, converting attachments next...

      $fid forums converted...."; + $this->install->saved_data['workact'] = 'step_8'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 8: CONVERT ATTACHMENTS + /*-------------------------------------------------------------------------*/ + + function step_8() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( "select" => '*', + 'from' => 'posts', + 'where' => "attach_file != ''", + 'limit' => array( $start, $lend ) ) ); + + $outer = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while( $r = $this->install->ipsclass->DB->fetch_row( $outer ) ) + { + $image = 0; + $ext = strtolower( str_replace( ".", "", substr( $r['attach_file'], strrpos( $r['attach_file'], '.' ) ) ) ); + $postkey = md5( $r['post_date'].','.$r['pid'] ); + + if ( in_array( $ext, array( 'gif', 'jpeg', 'jpg', 'png' ) ) ) + { + $image = 1; + } + + $this->install->ipsclass->DB->do_insert( 'attachments', array( 'attach_ext' => $ext, + 'attach_file' => $r['attach_file'], + 'attach_location' => $r['attach_id'], + 'attach_is_image' => $image, + 'attach_hits' => $r['attach_hits'], + 'attach_date' => $r['post_date'], + 'attach_pid' => $r['pid'], + 'attach_post_key' => $postkey, + 'attach_member_id' => $r['author_id'], + 'attach_approved' => 1, + 'attach_filesize' => @filesize( ROOT_PATH.'uploads/'.$r['attach_id'] ), + ) ); + + $this->install->ipsclass->DB->do_update( 'posts', array( 'post_key' => $postkey ), 'pid='.$r['pid'] ); + $this->install->ipsclass->DB->simple_exec_query( array( 'update' => 'topics', 'set' => 'topic_hasattach=topic_hasattach+1', 'where' => 'tid='.$r['topic_id'] ) ); + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Attachments $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_8'; + } + else + { + $this->install->message = "Attachments converted, converting members..."; + $this->install->saved_data['workact'] = 'step_9'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 9: CONVERT MEMBERS + /*-------------------------------------------------------------------------*/ + + function step_9() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query( $this->sql_members( $start, $end ) ); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( $r['mextra'] ) + { + $this->install->ipsclass->DB->do_update( 'member_extra', + array( 'aim_name' => $r['aim_name'], + 'icq_number' => $r['icq_number'], + 'website' => $r['website'], + 'yahoo' => $r['yahoo'], + 'interests' => $r['interests'], + 'msnname' => $r['msnname'], + 'vdirs' => $r['vdirs'], + 'location' => $r['location'], + 'signature' => $r['signature'], + 'avatar_location' => $r['avatar'], + 'avatar_size' => $r['avatar_size'], + 'avatar_type' => preg_match( "/^upload\:/", $r['avatar'] ) ? 'upload' : ( preg_match( "#^http://#", $r['avatar'] ) ? 'url' : 'local' ) + ), 'id='.$r['mextra'] ); + } + else + { + $this->install->ipsclass->DB->do_insert( 'member_extra', + array( 'id' => $r['id'], + 'aim_name' => $r['aim_name'], + 'icq_number' => $r['icq_number'], + 'website' => $r['website'], + 'yahoo' => $r['yahoo'], + 'interests' => $r['interests'], + 'msnname' => $r['msnname'], + 'vdirs' => $r['vdirs'], + 'location' => $r['location'], + 'signature' => $r['signature'], + 'avatar_location' => $r['avatar'], + 'avatar_size' => $r['avatar_size'], + 'avatar_type' => preg_match( "/^upload\:/", $r['avatar'] ) ? 'upload' : ( preg_match( "#^http://#", $r['avatar'] ) ? 'url' : 'local' ) + ) ); + } + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Members adjusted $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_9'; + } + else + { + $this->install->message = "Members converted, making members email addresses safe for converge..."; + $this->install->saved_data['workact'] = 'step_10'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 10: CHECK EMAIL ADDRESSES + /*-------------------------------------------------------------------------*/ + + function step_10() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $o = $this->install->ipsclass->DB->query( $this->sql_members_email( $lend ) ); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( $r['count'] < 2 ) + { + break; + } + else + { + $dupe_emails[] = $r['email']; + } + } + + if ( count( $dupe_emails ) ) + { + foreach( $dupe_emails as $email ) + { + $first = 0; + + $this->install->ipsclass->DB->build_query( array( 'select' => 'id,name,email', 'from' => 'members', 'where' => "email='{$email}'", 'order' => 'joined' ) ); + $this->install->ipsclass->DB->exec_query(); + + while( $r = $this->install->ipsclass->DB->fetch_row() ) + { + // First? + + if ( ! $first ) + { + $first = 1; + continue; + } + else + { + // later dupe.. + + $push_auth[] = $r['id']; + } + } + } + + if ( count( $push_auth ) ) + { + $this->install->ipsclass->DB->do_update( 'member_extra', array( 'bio' => 'dupemail' ), 'id IN ('.implode(",", $push_auth).")" ); + $this->install->ipsclass->DB->query( $this->sql_members_email_update( $push_auth ) ); + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Members email addresses checked $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_10'; + } + else + { + $this->install->message = "Members email addresses checked, adding to converge..."; + $this->install->saved_data['workact'] = 'step_11'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 11: CONVERGE + /*-------------------------------------------------------------------------*/ + + function step_11() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + $max = 0; + + $this->install->ipsclass->DB->build_query( array( 'select' => 'id', 'from' =>'members', 'where' => "id > {$end}" ) ); + $this->install->ipsclass->DB->exec_query(); + + $max = $this->install->ipsclass->DB->fetch_row(); + + $o = $this->install->ipsclass->DB->query( $this->sql_members_converge( $start, $end ) ); + + $found = 0; + + //----------------------------------------- + // Do it... + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( ! $r['cid'] or ! $r['id'] ) + { + $r['password'] = $r['password'] ? $r['password'] : $r['legacy_password']; + + $salt = $this->install->ipsclass->converge->generate_password_salt(5); + $salt = str_replace( '\\', "\\\\", $salt ); + + $this->install->ipsclass->DB->do_insert( 'members_converge', + array( 'converge_id' => $r['id'], + 'converge_email' => strtolower($r['email']), + 'converge_joined' => $r['joined'], + 'converge_pass_hash' => md5( md5($salt) . $r['password'] ), + 'converge_pass_salt' => $salt + ) ); + + $this->install->ipsclass->DB->do_update( 'members', array( 'member_login_key' => $this->install->ipsclass->converge->generate_auto_log_in_key(), 'email' => strtolower($r['email']) ), 'id='.$r['id'] ); + } + + $found++; + } + + if ( ! $found and ! $max['id'] ) + { + $this->install->message = "Converge completed, converting personal messages..."; + $this->install->saved_data['workact'] = 'step_12'; + $this->install->saved_data['st'] = 0; + } + else + { + $this->install->saved_data['st'] = $end; + $this->install->message = "Converge added: $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_11'; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 12: CONVERT PMs + /*-------------------------------------------------------------------------*/ + + function step_12() + { + $this->install->ipsclass->DB->return_die = 1; + + $start = $start = intval($this->install->saved_data['st']) ? intval($this->install->saved_data['st']) : 0; + $lend = 300; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'messages', 'limit' => array( $start, $lend ) ) ); + $o = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows() ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + if ( ! $r['msg_date'] ) + { + $r['msg_date'] = $r['read_date']; + } + + if ( $r['vid'] != 'sent' ) + { + $this->install->ipsclass->DB->do_insert( 'message_text', + array( 'msg_date' => $r['msg_date'], + 'msg_post' => stripslashes($r['message']), + 'msg_cc_users' => $r['cc_users'], + 'msg_author_id' => $r['from_id'], + 'msg_sent_to_count' => 1, + 'msg_deleted_count' => 0, + ) ); + + $msg_id = $this->install->ipsclass->DB->get_insert_id(); + + $this->install->ipsclass->DB->do_insert( 'message_topics', + array( 'mt_msg_id' => $msg_id, + 'mt_date' => $r['msg_date'], + 'mt_title' => $r['title'], + 'mt_from_id' => $r['from_id'], + 'mt_to_id' => $r['recipient_id'], + 'mt_vid_folder' => $r['vid'], + 'mt_read' => $r['read_state'], + 'mt_tracking' => $r['tracking'], + 'mt_owner_id' => $r['recipient_id'], + ) ); + } + else + { + $this->install->ipsclass->DB->do_insert( 'message_text', + array( 'msg_date' => $r['msg_date'], + 'msg_post' => stripslashes($r['message']), + 'msg_cc_users' => $r['cc_users'], + 'msg_author_id' => $r['from_id'], + 'msg_sent_to_count' => 1, + 'msg_deleted_count' => 0, + ) ); + + $msg_id = $this->install->ipsclass->DB->get_insert_id(); + + $this->install->ipsclass->DB->do_insert( 'message_topics', + array( 'mt_msg_id' => $msg_id, + 'mt_date' => $r['msg_date'], + 'mt_title' => $r['title'], + 'mt_from_id' => $r['from_id'], + 'mt_to_id' => $r['recipient_id'], + 'mt_vid_folder' => $r['vid'], + 'mt_read' => $r['read_state'], + 'mt_tracking' => $r['tracking'], + 'mt_owner_id' => $r['from_id'], + ) ); + } + + } + + $this->install->saved_data['st'] = $end; + $this->install->message = "Personal messages: $start to $end completed...."; + $this->install->saved_data['workact'] = 'step_12'; + } + else + { + $this->install->message = "Personal messages converted, proceeding to update topic multi-moderation..."; + $this->install->saved_data['workact'] = 'step_13'; + $this->install->saved_data['st'] = 0; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 13: CONVERT TOPIC MULTI_MODS + /*-------------------------------------------------------------------------*/ + + function step_13() + { + $this->install->ipsclass->DB->return_die = 1; + + $this->install->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'forums' ) ); + $f = $this->install->ipsclass->DB->exec_query(); + + $final = array(); + + while ( $r = $this->install->ipsclass->DB->fetch_row($f) ) + { + $mmids = preg_split( "/,/", $r['topic_mm_id'], -1, PREG_SPLIT_NO_EMPTY ); + + if ( is_array( $mmids ) ) + { + foreach( $mmids as $m ) + { + $final[ $m ][] = $r['id']; + } + } + } + + $real_final = array(); + + foreach( $final as $id => $forums_ids ) + { + $ff = implode( ",",$forums_ids ); + + $this->install->ipsclass->DB->do_update( 'topic_mmod', array( 'mm_forums' => $ff ), 'mm_id='.$id ); + } + + $this->install->message = "Topic multi-moderation converted, alterting tables, stage 2..."; + $this->install->saved_data['workact'] = 'step_14'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 14: ALTER POST TABLE II + /*-------------------------------------------------------------------------*/ + + function step_14() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."posts DROP attach_id, DROP attach_hits, DROP attach_type, DROP attach_file;"; + $SQL[] = "alter table ".SQL_PREFIX."posts change queued queued tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."posts drop forum_id;"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Post table altered, altering topic table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_15'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 15: ALTER TOPIC TABLE II + /*-------------------------------------------------------------------------*/ + + function step_15() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics add topic_firstpost int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topics add topic_queuedposts int(10) NOT NULL default '0';"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Topic table altered, altering members table next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_16'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 16: ALTER MEMBERS TABLE II + /*-------------------------------------------------------------------------*/ + + function step_16() + { + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members add has_blog TINYINT(1) NOT NULL default '0'"; + $SQL[] = "alter table ".SQL_PREFIX."members add sub_end int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members DROP msg_from_id, DROP msg_msg_id;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members DROP org_supmod, DROP integ_msg;"; + $SQL[] = "alter table ".SQL_PREFIX."members DROP aim_name, DROP icq_number, DROP website, DROP yahoo, DROP interests, + DROP msnname, DROP vdirs, DROP signature, DROP location, DROP avatar, DROP avatar_size;"; + $SQL[] = "alter table ".SQL_PREFIX."members change auto_track auto_track varchar(50) default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members change temp_ban temp_ban varchar(100) default '0'"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."members change msg_total msg_total smallint(5) default '0'"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Members table altered, other tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_17'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 17: ALTER OTHERS TABLE II + /*-------------------------------------------------------------------------*/ + + function step_17() + { + $SQL[] = "alter table ".SQL_PREFIX."groups add g_attach_per_post int(10) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."topic_mmod add topic_approve tinyint(1) NOT NULL default '0';"; + + $SQL[] = "alter table ".SQL_PREFIX."groups add g_can_msg_attach tinyint(1) NOT NULL default '0';"; + $SQL[] = "alter table ".SQL_PREFIX."pfields_data + change fid pf_id smallint(5) NOT NULL auto_increment, + change ftitle pf_title varchar(250) NOT NULL default '', + change fdesc pf_desc varchar(250) NOT NULL default '', + change fcontent pf_content text NOT NULL default '', + change ftype pf_type varchar(250) NOT NULL default '', + change freq pf_not_null tinyint(1) NOT NULL default '0', + change fhide pf_member_hide tinyint(1) NOT NULL default '0', + change fmaxinput pf_max_input smallint(6) NOT NULL default '0', + change fedit pf_member_edit tinyint(1) NOT NULL default '0', + change forder pf_position smallint(6) NOT NULL default '0', + change fshowreg pf_show_on_reg tinyint(1) NOT NULL default '0', + add pf_input_format text NOT NULL default '', + add pf_admin_only tinyint(1) NOT NULL default '0', + add pf_topic_format text NOT NULL default '';"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Other tables altered, inserting data next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_18'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 18: SAFE INSERTS + /*-------------------------------------------------------------------------*/ + + function step_18() + { + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Left', 'Aligns content to the left of the post', 'left', '
      {content}
      ', 0, '[left]Left aligned text[/left]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Center', 'Aligns content to the center of the posting area.', 'center', '
      {content}
      ', 0, '[center]Centered Text[/center]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Topic Link', 'This tag provides an easy way to link to a topic', 'topic', '{content}', 1, '[topic=100]Click me![/topic]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Link', 'This tag provides an easy way to link to a post.', 'post', '{content}', 1, '[post=100]Click me![/post]');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('CODEBOX', 'Use this BBCode tag to show a scrolling codebox. Useful for long sections of code.', 'codebox', '
      CODE
      {content}
      ', 0, '[codebox]long_code_here = '';[/codebox]');"; + + + + $SQL[] = "INSERT INTO ".SQL_PREFIX."subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Authorize.net', 'authorizenet', '', '', '', '', '', '', '', '1', '1', NULL, NULL, '1', 'USD');"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (1, 'pdf', 'application/pdf', 1, 0, 'folder_mime_types/pdf.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (2, 'png', 'image/png', 1, 1, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (3, 'viv', 'video/vivo', 1, 0, 'folder_mime_types/win_player.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (4, 'wmv', 'video/x-msvideo', 1, 0, 'folder_mime_types/win_player.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (5, 'html', 'application/octet-stream', 1, 0, 'folder_mime_types/html.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (6, 'ram', 'audio/x-pn-realaudio', 1, 0, 'folder_mime_types/real_audio.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (7, 'gif', 'image/gif', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (8, 'mpg', 'video/mpeg', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (9, 'ico', 'image/ico', 1, 0, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (10, 'tar', 'application/x-tar', 1, 0, 'folder_mime_types/zip.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (11, 'bmp', 'image/x-MS-bmp', 1, 0, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (12, 'tiff', 'image/tiff', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (13, 'rtf', 'text/richtext', 1, 0, 'folder_mime_types/rtf.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (14, 'hqx', 'application/mac-binhex40', 1, 0, 'folder_mime_types/stuffit.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (15, 'aiff', 'audio/x-aiff', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (31, 'zip', 'application/zip', 1, 0, 'folder_mime_types/zip.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (17, 'ps', 'application/postscript', 1, 0, 'folder_mime_types/eps.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (18, 'doc', 'application/msword', 1, 0, 'folder_mime_types/doc.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (19, 'mov', 'video/quicktime', 1, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (20, 'ppt', 'application/powerpoint', 1, 0, 'folder_mime_types/ppt.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (21, 'wav', 'audio/x-wav', 1, 0, 'folder_mime_types/music.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (22, 'mp3', 'audio/x-mpeg', 1, 0, 'folder_mime_types/music.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (23, 'jpg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (24, 'txt', 'text/plain', 1, 0, 'folder_mime_types/txt.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (25, 'xml', 'text/xml', 1, 0, 'folder_mime_types/script.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (26, 'css', 'text/css', 1, 0, 'folder_mime_types/script.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (27, 'swf', 'application/x-shockwave-flash', 0, 0, 'folder_mime_types/quicktime.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (32, 'php', 'application/octet-stream', 1, 0, 'folder_mime_types/php.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (28, 'htm', 'application/octet-stream', 1, 0, 'folder_mime_types/html.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (29, 'jpeg', 'image/jpeg', 1, 1, 'folder_mime_types/gif.gif');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (33, 'gz', 'application/x-gzip', 1, 0, 'folder_mime_types/zip.gif');"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('skin_id_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('bbcode', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('moderators', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('multimod', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('banfilters', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('attachtypes', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('emoticons', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('forum_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('badwords', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('systemvars', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('ranks', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('group_cache', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('stats', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('profilefields', 'a:0:{}', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('settings','', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('languages', '', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; + + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Master Skin Set', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Default Skin', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Pre-2.0 Skins', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + + + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'General Configuration', 'These settings control the basics of the board such as URLs and paths.', 17);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'CPU Saving & Optimization', 'This section allows certain features to be limited or removed to get more performance out of your board.', 16);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Date & Time Formats', 'This section contains the date and time formats used throughout the board.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'User Profiles', 'This section allows you to adjust your member\'s global permissions and other options.', 22);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Topics, Posts and Polls', 'These options control various elements when posting, reading topics and reading polls.', 32);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Security and Privacy', 'These options allow you to adjust the security and privacy options for your board.', 18);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Cookies', 'This section allows you to set the default cookie options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (8, 'COPPA Set-up', 'This section allows you to comply with COPPA.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Calendar & Birthdays', 'This section will allow you to set up the board calendar and its related options.', 8);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'News Set-up', 'This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Personal Message Set-up', 'This section allows you to control the global PM options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Email Set-up', 'This section will allow you to change the incoming and outgoing email addresses as well as the email method.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Warn Set-up', 'This section will allow you to set up the warning system.', 15);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Trash Can Set-up', 'The trashcan is a special forum in which topics are moved into instead of being deleted.', 6);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Board Offline / Online', 'Use this setting to turn switch your board online or offline and leave a message for your visitors.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Search Engine Spiders', 'This section will allow you to set up and maintain your search engine bot spider recognition settings.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Board Guidelines', 'This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines.', 4);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Converge Set Up', 'Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products.', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Full Text Search Set-Up', 'Full text searching is a very fast and very efficient way of searching large amounts of posts without maintaining a manual index. This may not be available for your system.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; + + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Inserts completed, dropping old tables next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_19'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 19: DROPPING TABLES + /*-------------------------------------------------------------------------*/ + + function step_19() + { + $SQL[] = "DROP TABLE ".SQL_PREFIX."tmpl_names;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."forums_bak;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."categories;"; + $SQL[] = "DROP TABLE ".SQL_PREFIX."messages;"; + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + + $this->install->message = "Old tables dropped, optimization next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_20'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 20: OPTIMIZATION + /*-------------------------------------------------------------------------*/ + + function step_20() + { + $SQL[] = "alter table ".SQL_PREFIX."tracker change topic_id topic_id int(10) NOT NULL default '0';"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."tracker ADD INDEX(topic_id);"; + + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics CHANGE pinned pinned TINYINT( 1 ) DEFAULT '0' NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics CHANGE approved approved TINYINT( 1 ) DEFAULT '0' NOT NULL;"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."topics ADD INDEX(topic_firstpost);"; + + $SQL[] = "UPDATE ".SQL_PREFIX."members SET language=''"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Optimization started...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_21'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 21: OPTIMIZATION II + /*-------------------------------------------------------------------------*/ + + function step_21() + { + $SQL[] = "alter table ".SQL_PREFIX."posts drop index topic_id;"; + $SQL[] = "alter table ".SQL_PREFIX."posts drop index author_id;"; + $SQL[] = "alter table ".SQL_PREFIX."posts add index topic_id (topic_id, queued, pid);"; + $SQL[] = "alter table ".SQL_PREFIX."posts add index author_id( author_id, topic_id);"; + $SQL[] = "ALTER TABLE ".SQL_PREFIX."posts DROP INDEX forum_id, ADD INDEX(post_date);"; + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "Optimization completed, new skins import next...

      $this->sqlcount queries run...."; + $this->install->saved_data['workact'] = 'step_22'; + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br($output); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // STEP 22: IMPORT SKINS & SETTINGS + /*-------------------------------------------------------------------------*/ + + function step_22() + { + //----------------------------------------- + // Get old skins data + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skins' ) ); + $outer = $this->install->ipsclass->DB->simple_exec(); + + while( $r = $this->install->ipsclass->DB->fetch_row( $outer ) ) + { + //----------------------------------------- + // Get CSS + //----------------------------------------- + + $css = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'css', 'where' => 'cssid='.$r['css_id'] ) ); + + //----------------------------------------- + // Get Wrapper + //----------------------------------------- + + $wrapper = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'templates', 'where' => 'tmid='.$r['tmpl_id'] ) ); + + //----------------------------------------- + // Insert... + //----------------------------------------- + + $this->install->ipsclass->DB->do_insert( 'skin_sets', array( + 'set_name' => $r['sname'], + 'set_image_dir' => $r['img_dir'], + 'set_hidden' => 1, + 'set_default' => 0, + 'set_css_method' => 0, + 'set_skin_set_parent' => 3, + 'set_author_email' => '', + 'set_author_name' => 'IPB 2.0 Import', + 'set_author_url' => '', + 'set_css' => stripslashes($css['css_text']), + 'set_wrapper' => stripslashes($wrapper['template']), + 'set_emoticon_folder' => 'default', + ) ); + + $new_id = $this->install->ipsclass->DB->get_insert_id(); + + //----------------------------------------- + // Update templates + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_templates', array( 'set_id' => $new_id ), 'set_id='.$r['set_id'] ); + + //----------------------------------------- + // Update macros + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_macro', array( 'macro_set' => $new_id ), 'macro_set='.$r['set_id'] ); + } + + //----------------------------------- + // Get XML + //----------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + //----------------------------------- + // Get XML file (TEMPLATES) + //----------------------------------- + + $xmlfile = ROOT_PATH.'resources/ipb_templates.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (TEMPLATES) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (TEMPLATES) + //------------------------------- + + if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) + { + $this->install->error[] = "Error with ipb_templates.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $newrow = array(); + + $newrow['group_name'] = $entry[ 'group_name' ]['VALUE']; + $newrow['section_content'] = $entry[ 'section_content' ]['VALUE']; + $newrow['func_name'] = $entry[ 'func_name' ]['VALUE']; + $newrow['func_data'] = $entry[ 'func_data' ]['VALUE']; + $newrow['set_id'] = 1; + $newrow['updated'] = time(); + + $this->install->ipsclass->DB->do_insert( "skin_templates", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //------------------------------- + // GET MACRO + //------------------------------- + + $xmlfile = ROOT_PATH.'resources/macro.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (MACRO) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (MACRO) + //------------------------------- + + if ( ! is_array( $xml->xml_array['macroexport']['macrogroup']['macro'] ) ) + { + $this->install->error[] = "Error with macro.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $newrow = array(); + + $newrow['macro_value'] = $entry[ 'macro_value' ]['VALUE']; + $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; + $newrow['macro_set'] = 1; + + $this->install->ipsclass->DB->do_insert( "skin_macro", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //------------------------------- + // WRAPPER / CSS + //------------------------------- + + $xmlfile = ROOT_PATH.'resources/skinsets.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile (WRAPPER/CSS) + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // (WRAPPER/CSS) + //------------------------------- + + if ( ! is_array( $xml->xml_array['export']['group']['row'] ) ) + { + $this->install->error[] = "Error with skinsets.xml - could not process XML properly"; + } + else + { + foreach( $xml->xml_array['export']['group']['row'] as $entry ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + if( $entry['set_skin_set_id'] <> 1 ) + { + continue; + } + + $newrow = array(); + + $newrow['set_css'] = $entry[ 'set_css' ]['VALUE']; + $newrow['set_werapper'] = $entry[ 'set_wrapper' ]['VALUE']; + + $this->install->ipsclass->DB->do_update( "skin_sets", $wrapper_record, "set_skin_set_id=1" ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + } + + //----------------------------------------- + // Cleanup XML + //----------------------------------------- + + unset($xml); + + $this->install->message = "Skins imported, importing settings..."; + $this->install->saved_data['workact'] = 'step_23'; + } + + + /*-------------------------------------------------------------------------*/ + // STEP 23: IMPORT SETTINGS + /*-------------------------------------------------------------------------*/ + + function step_23() + { + global $INFO; + + //----------------------------------- + // Get XML + //----------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + //----------------------------------- + // Get XML file + //----------------------------------- + + $xmlfile = ROOT_PATH.'resources/settings.xml'; + + $setting_content = implode( "", file($xmlfile) ); + + //------------------------------- + // Unpack the datafile + //------------------------------- + + $xml->xml_parse_document( $setting_content ); + + //------------------------------- + // pArse + //------------------------------- + + $fields = array( 'conf_title', 'conf_description', 'conf_group', 'conf_type', 'conf_key', 'conf_value', 'conf_default', + 'conf_extra', 'conf_evalphp', 'conf_protected', 'conf_position', 'conf_start_group', 'conf_end_group', 'conf_help_key', 'conf_add_cache' ); + + + if ( ! is_array( $xml->xml_array['settingexport']['settinggroup']['setting'] ) ) + { + $this->install->error[] = "Error with settings.xml - could not process XML properly"; + } + + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $entry ) + { + if ( ! $entry['conf_key']['VALUE'] ) + { + continue; + } + + $newrow = array(); + + $entry['conf_value']['VALUE'] = ""; + + if ( $INFO[ $entry['conf_key']['VALUE'] ] != "" and $INFO[ $entry['conf_key']['VALUE'] ] != $entry['conf_default']['VALUE'] ) + { + $entry['conf_value']['VALUE'] = $INFO[ $entry['conf_key']['VALUE'] ]; + } + + //----------------------------------- + // Special considerations? + //----------------------------------- + + if ( $entry['conf_key']['VALUE'] == 'img_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + else if ( $entry['conf_key']['VALUE'] == 'photo_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + else if ( $entry['conf_key']['VALUE'] == 'avatar_ext' ) + { + $entry['conf_value']['VALUE'] = str_replace( '|', ',', $entry['conf_value']['VALUE'] ); + } + + //----------------------------------- + // Make PHP slashes safe + //----------------------------------- + + $entry['conf_evalphp']['VALUE'] = str_replace( '\\', '\\\\', $entry['conf_evalphp']['VALUE'] ); + + foreach( $fields as $f ) + { + $newrow[$f] = $entry[ $f ]['VALUE']; + } + + $this->install->ipsclass->DB->do_insert( "conf_settings", $newrow ); + + if ( $this->install->ipsclass->DB->failed ) + { + $query = array_pop( $this->install->ipsclass->DB->obj['cached_queries'] ); + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + } + + unset($xml); + + $this->install->message = "Settings imported, recache & rebuild next..."; + $this->install->saved_data['workact'] = 'step_24'; + } + + /*-------------------------------------------------------------------------*/ + // STEP 24: RECACHE & REBUILD + /*-------------------------------------------------------------------------*/ + + function step_24() + { + //----------------------------------- + // Get ACP library + //----------------------------------- + + require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' ); + $acp = new admin_cache_functions(); + $acp->ipsclass =& $this->install->ipsclass; + + //----------------------------------- + // Cache skins and shit + //----------------------------------- + + $acp->_rebuild_all_caches( array(2,3) ); + + //------------------------------------------------------------- + // Forum cache + //------------------------------------------------------------- + + $this->install->ipsclass->update_forum_cache(); + + //------------------------------------------------------------- + // Group Cache + //------------------------------------------------------------- + + $this->install->ipsclass->cache['group_cache'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => "*", + 'from' => 'groups' + ) ); + + $this->install->ipsclass->DB->simple_exec(); + + while ( $i = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['group_cache'][ $i['g_id'] ] = $i; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Systemvars + //------------------------------------------------------------- + + $this->install->ipsclass->cache['systemvars'] = array(); + + $result = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) ); + + $this->install->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] ); + $this->install->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600; + + $this->install->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Stats + //------------------------------------------------------------- + + $this->install->ipsclass->cache['stats'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(pid) as posts', 'from' => 'posts', 'where' => "queued <> 1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['total_replies'] = intval($r['posts']); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(tid) as topics', 'from' => 'topics', 'where' => "approved = 1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['total_topics'] = intval($r['topics']); + $stats['total_replies'] -= $stats['total_topics']; + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'count(id) as members', 'from' => 'members', 'where' => "mgroup <> '".$this->install->ipsclass->vars['auth_group']."'" ) ); + $this->install->ipsclass->DB->simple_exec(); + + $r = $this->install->ipsclass->DB->fetch_row(); + $stats['mem_count'] = intval($r['members']); + + $this->install->ipsclass->cache['stats']['total_replies'] = $stats['total_replies']; + $this->install->ipsclass->cache['stats']['total_topics'] = $stats['total_topics']; + $this->install->ipsclass->cache['stats']['mem_count'] = $stats['mem_count']; + + $r = $this->install->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name', + 'from' => 'members', + 'order' => 'id DESC', + 'limit' => '0,1' + ) ); + + $this->install->ipsclass->cache['stats']['last_mem_name'] = $r['name']; + $this->install->ipsclass->cache['stats']['last_mem_id'] = $r['id']; + + $this->install->ipsclass->update_cache( array( 'name' => 'stats', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // Ranks + //------------------------------------------------------------- + + $this->install->ipsclass->cache['ranks'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, posts', + 'from' => 'titles', + 'order' => "posts DESC", + ) ); + + $this->install->ipsclass->DB->simple_exec(); + + while ($i = $this->install->ipsclass->DB->fetch_row()) + { + $this->install->ipsclass->cache['ranks'][ $i['id'] ] = array( + 'TITLE' => $i['title'], + 'PIPS' => $i['pips'], + 'POSTS' => $i['posts'], + ); + } + + $this->install->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) ); + + + //------------------------------------------------------------- + // SETTINGS + //------------------------------------------------------------- + + $this->install->ipsclass->cache['settings'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings', 'where' => 'conf_add_cache=1' ) ); + $info = $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row($info) ) + { + $this->install->ipsclass->cache['settings'][ $r['conf_key'] ] = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default']; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'settings', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // EMOTICONS + //------------------------------------------------------------- + + $this->install->ipsclass->cache['emoticons'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'typed,image,clickable,emo_set', 'from' => 'emoticons' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['emoticons'][] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'emoticons', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // LANGUAGES + //------------------------------------------------------------- + + $this->install->ipsclass->cache['languages'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'ldir,lname', 'from' => 'languages' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['languages'][] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'languages', 'array' => 1, 'deletefirst' => 1 ) ); + + //------------------------------------------------------------- + // ATTACHMENT TYPES + //------------------------------------------------------------- + + $this->install->ipsclass->cache['attachtypes'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => 'atype_extension,atype_mimetype,atype_post,atype_photo,atype_img', 'from' => 'attachments_type', 'where' => "atype_photo=1 OR atype_post=1" ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $this->install->ipsclass->cache['attachtypes'][ $r['atype_extension'] ] = $r; + } + + $this->install->ipsclass->update_cache( array( 'name' => 'attachtypes', 'array' => 1, 'deletefirst' => 1 ) ); + + $this->install->message = "Data recached..."; + unset($this->install->saved_data['workact']); + unset($this->install->saved_data['st']); + unset($this->install->saved_data['vid']); + } + + + //#------------------------------------------------------------------------ + // OTHER SQL WORK + //#------------------------------------------------------------------------ + + function sql_members($a, $b) + { + return "SELECT m.*, me.id as mextra FROM ibf_members m LEFT JOIN ibf_member_extra me ON ( me.id=m.id ) LIMIT $a, $b"; + } + + function sql_members_email( $a ) + { + return "select id, name, email, count(email) as count from ibf_members group by email order by count desc LIMIT 0, $a"; + } + + function sql_members_email_update( $push_auth ) + { + return "UPDATE ibf_members SET email=concat( id, '-', email ) where id IN(".implode(",", $push_auth).")"; + } + + function sql_members_converge( $start, $end ) + { + return "SELECT m.*, c.converge_id as cid FROM ibf_members m LEFT JOIN ibf_members_converge c ON ( c.converge_id=m.id ) WHERE id >= $start and id < $end"; + } + +} + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20002/mysql_updates.php b/upload/upgrade/installfiles/upg_20002/mysql_updates.php new file mode 100644 index 00000000..7f7e1229 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20002/mysql_updates.php @@ -0,0 +1,126 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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(); +} + + +$SQL = array(); + +$SQL[]="create table ibf_announcements ( +announce_id int(10) UNSIGNED NOT NULL auto_increment, +announce_title varchar(255) NOT NULL default '', +announce_post text NOT NULL default '', +announce_forum text NOT NULL default '', +announce_member_id mediumint(8) UNSIGNED NOT NULL default '0', +announce_html_enabled tinyint(1) NOT NULL default '0', +announce_views int(10) UNSIGNED NOT NULL default '0', +announce_start int(10) UNSIGNED NOT NULL default '0', +announce_end int(10) UNSIGNED NOT NULL default '0', +announce_active tinyint(1) NOT NULL default '1', +PRIMARY KEY (announce_id) +);"; + +$SQL[]="INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, + task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) + VALUES ('Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, + 'Rebuilds cache and expires out of date announcements', 1);"; + +$SQL[]="CREATE TABLE ibf_bulk_mail ( + mail_id int(10) NOT NULL auto_increment, + mail_subject varchar(255) NOT NULL default '', + mail_content mediumtext NOT NULL default '', + mail_groups mediumtext NOT NULL default '', + mail_honor tinyint(1) NOT NULL default '1', + mail_opts mediumtext NOT NULL default '', + mail_start int(10) NOT NULL default '0', + mail_updated int(10) NOT NULL default '0', + mail_sentto int(10) NOT NULL default '0', + mail_active tinyint(1) NOT NULL default '0', + mail_pergo smallint(5) NOT NULL default '0', + PRIMARY KEY (mail_id) +);"; + + +$SQL[]="alter table ibf_task_manager add task_key varchar(30) NOT NULL default '', add task_safemode tinyint(1) NOT NULL default '';"; + +$SQL[]="INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, + conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, + conf_end_group, conf_help_key, conf_add_cache) VALUES ('Add '<' and '>' to 'to' and 'from' addresses?', + 'Some SMTP mailers require that email addresses are in the following format \'<\' address \'>\' (no quotes). + If you are getting errors in the mail error log, enabled this option', '12', 'yes_no', 'mail_wrap_brackets', '', '0', '', '', 1, 6, '', 0, '', 1);"; + +$SQL[]="create table ibf_mail_error_logs ( + mlog_id int(10) auto_increment NOT NULL, + mlog_date int(10) NOT NULL default '0', + mlog_to varchar(250) NOT NULL default '', + mlog_from varchar(250) NOT NULL default '', + mlog_subject varchar(250) NOT NULL default '', + mlog_content varchar(250) NOT NULL default '', + mlog_msg text NOT NULL default '', + mlog_code varchar(200) NOT NULL default '', + mlog_smtp_msg text NOT NULL default '', + PRIMARY KEY (mlog_id) +);"; + + +$SQL[]="alter table ibf_pfields_data +change fid pf_id smallint(5) NOT NULL auto_increment, +change ftitle pf_title varchar(250) NOT NULL default '', +change fdesc pf_desc varchar(250) NOT NULL default '', +change fcontent pf_content text NOT NULL default '', +change ftype pf_type varchar(250) NOT NULL default '', +change freq pf_not_null tinyint(1) NOT NULL default '0', +change fhide pf_member_hide tinyint(1) NOT NULL default '0', +change fmaxinput pf_max_input smallint(6) NOT NULL default '0', +change fedit pf_member_edit tinyint(1) NOT NULL default '0', +change forder pf_position smallint(6) NOT NULL default '0', +change fshowreg pf_show_on_reg tinyint(1) NOT NULL default '0', +add pf_input_format text NOT NULL default '', +add pf_admin_only tinyint(1) NOT NULL default '0', +add pf_topic_format text NOT NULL default '';"; + +$SQL[]="INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_set) VALUES ( 'POST_SNAPBACK', \"*\", 1);"; + +$SQL[]="alter table ibf_forum_tracker add forum_track_type varchar(100) NOT NULL default 'delayed';"; +$SQL[]="alter table ibf_tracker add topic_track_type varchar(100) NOT NULL default 'delayed';"; + +$SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; +$SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; +$SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Left', 'Aligns content to the left of the post', 'left', '
      {content}
      ', 0, '[left]Left aligned text[/left]');"; +$SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Center', 'Aligns content to the center of the posting area.', 'center', '
      {content}
      ', 0, '[center]Centered Text[/center]');"; +$SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Topic Link', 'This tag provides an easy way to link to a topic', 'topic', '{content}', 1, '[topic=100]Click me![/topic]');"; +$SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Link', 'This tag provides an easy way to link to a post.', 'post', '{content}', 1, '[post=100]Click me![/post]');"; + +$SQL[]="alter table ibf_members change auto_track auto_track varchar(50) default '0';"; + + +$SQL[]="alter table ibf_conf_settings_titles +add conf_title_noshow tinyint(1) NOT NULL default '0', +add conf_title_keyword varchar(200) NOT NULL default '0'"; + + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20002/version_history.php b/upload/upgrade/installfiles/upg_20002/version_history.php new file mode 100644 index 00000000..ef264b6e --- /dev/null +++ b/upload/upgrade/installfiles/upg_20002/version_history.php @@ -0,0 +1,13 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20003/version_history.php b/upload/upgrade/installfiles/upg_20003/version_history.php new file mode 100644 index 00000000..bbc00dcd --- /dev/null +++ b/upload/upgrade/installfiles/upg_20003/version_history.php @@ -0,0 +1,14 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20004/mysql_updates.php b/upload/upgrade/installfiles/upg_20004/mysql_updates.php new file mode 100644 index 00000000..930fd55c --- /dev/null +++ b/upload/upgrade/installfiles/upg_20004/mysql_updates.php @@ -0,0 +1,58 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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(); +} + + +$SQL = array(); + +$SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES ('IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('ENABLE IPB Portal?', 'If \'yes\', IPB Portal can be accessed via \'index.php?act=home\' or via the special \'index.php\' script (see documentation for more info).', '22', 'yes_no', 'csite_on', '', '1', '', '', 1, 1, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Portal Page Title?', 'This will appear inbetween the <title> elements on the page', '22', 'input', 'csite_title', '', 'IPB Portal', '', '', 1, 2, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Forums to export articles from', 'Separate forum ids with a comma for more than one', '22', 'input', 'csite_article_forum', '1,2,3,4,5,6', '', '', '', 1, 3, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Number of Articles to display in the main section', '', '22', 'input', 'csite_article_max', '', '15', '', '', 1, 4, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable Recent Articles?', 'This will show a list of recent topic titles on the IPB Portal page', '22', 'yes_no', 'csite_article_recent_on', '', '1', '', '', 1, 5, 'IPB Portal Recent Articles', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. no recent articles to show', '', '22', 'input', 'csite_article_recent_max', '', '5', '', '', 1, 6, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. length of topic titles', '', '22', 'input', 'csite_article_len', '', '30', '', '', 1, 7, '', 1, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Date format for articles', 'Same as PHP\'s date function', '22', 'input', 'csite_article_date', '', 'm-j-y H:i', '', '', 1, 3, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable Recent Discussions', '', '22', 'yes_no', 'csite_discuss_on', '', '1', '', '', 1, 9, 'IPB Portal Recent Discussions', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. no recent discussions to show', '', '22', 'input', 'csite_discuss_max', '', '10', '', '', 1, 10, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. length of topic titles', '', '22', 'input', 'csite_discuss_len', '', '30', '', '', 1, 11, '', 1, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show User / Guest Info box?', '', '22', 'yes_no', 'csite_pm_show', '', '1', '', '', 1, 12, 'IPB Portal Components', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show online users?', '', '22', 'yes_no', 'csite_online_show', '', '1', '', '', 1, 13, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show search box?', '', '22', 'yes_no', 'csite_search_show', '', '1', '', '', 1, 14, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable skin selection choice dropdown?', '', '22', 'yes_no', 'csite_skinchange_show', '', '1', '', '', 1, 15, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enter URL to poll topic for inclusion', 'Leave blank to not show a poll or the poll box', '22', 'input', 'csite_poll_url', '', '', '', '', 1, 17, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show Site Navigation Menu?', '', '22', 'yes_no', 'csite_nav_show', '', '1', '', '', 1, 18, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Site Navigation Menu Links', 'One per line in this format
      http://www.apple.com [Apple\'s Website]

      {board_url} will convert into your board', '22', 'textarea', 'csite_nav_contents', '', '{board_url} [Forums]\r\n{board_url}act=Search&CODE=getactive [Today\'s Active Topics]\r\n{board_url}act=Stats [Today\'s Top 10 Posters]\r\n{board_url}act=Stats&CODE=leaders [Contact Staff]', '', 'if ( $show == 1)\r\n{\r\n $value = preg_replace( \"/&(middot|quot|copy|amp)/\", \"&\\\\1\", $value );\r\n}', 1, 19, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show Affiliates / Favoured Sites box?', '', '22', 'yes_no', 'csite_fav_show', '', '0', '', '', 1, 20, '', 0, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show Affiliates / Favoured Sites box content', 'Raw HTML enabled', '22', 'textarea', 'csite_fav_contents', '', '', '', 'if ( $show == 1)\r\n{\r\n $value = preg_replace( \"/&(middot|quot|copy|amp)/\", \"&\\\\1\", $value );\r\n}', 1, 21, '', 1, '', 0);"; + + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20004/version_history.php b/upload/upgrade/installfiles/upg_20004/version_history.php new file mode 100644 index 00000000..5e808588 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20004/version_history.php @@ -0,0 +1,15 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20005/mysql_updates.php b/upload/upgrade/installfiles/upg_20005/mysql_updates.php new file mode 100644 index 00000000..e31add44 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20005/mysql_updates.php @@ -0,0 +1,38 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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(); +} + +$SQL = array(); + +$SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; +$SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; +$SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; + + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20005/version_history.php b/upload/upgrade/installfiles/upg_20005/version_history.php new file mode 100644 index 00000000..9b4a3ff8 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20005/version_history.php @@ -0,0 +1,16 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20006/mysql_updates.php b/upload/upgrade/installfiles/upg_20006/mysql_updates.php new file mode 100644 index 00000000..e29368d2 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20006/mysql_updates.php @@ -0,0 +1,80 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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(); +} + +$SQL = array(); + +$SQL[] = "alter table ibf_members add subs_pkg_chosen smallint(3) NOT NULL default '0';"; +$SQL[] = "alter table ibf_topic_mmod add topic_approve tinyint(1) NOT NULL default '0';"; +$SQL[] = "alter table ibf_groups add g_attach_per_post int(10) NOT NULL default '0';"; +$SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES ('Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; +$SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES ('IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; +$SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES ('IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; +$SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES ('Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; +$SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES ('Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Add '<' and '>' to 'to' and 'from' addresses?', 'Some SMTP mailers require that email addresses are in the following format \'<\' address \'>\' (no quotes). If you are getting errors in the mail error log, enabled this option', '12', 'yes_no', 'mail_wrap_brackets', '', '0', '', '', 1, 6, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Account Number?', 'Removing this number will remove all links / chat functionality within IPB.\r\n', '20', 'input', 'chat_account_no', '', '', '', '', 1, 1, 'Account Specifics', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Server?', '', '20', 'input', 'chat_server_addr', '', '', '', '', 1, 2, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable 'Who's Chatting?'', 'If enabled, this will show who\'s chatting in the chat room on your forums home page underneath the active users list.', '20', 'yes_no', 'chat_who_on', '', '1', '', '', 1, 3, 'Who's Chatting', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Hide Who's Chatting when no members are logged into chat?', '', '20', 'yes_no', 'chat_hide_whoschatting', '', '1', '', '', 1, 4, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Update local list no less than every:', 'The local list is updated from the master chat server by the frequency you set and cached locally.', '20', 'dropdown', '', '', '15', '5=5\r\n10=10\r\n15=15\r\n30=30', '', 1, 5, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Changed your IPChat control panel password?', 'If you have changed your IPChat control panel password, please add the new password here. Leave blank if it\'s not changed.', '20', 'input', 'chat_pass_md5', '', '', '', '', 1, 6, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('ENTER YOUR IPCHAT CONTROL PANEL PASSWORD', 'You must enter your IPChat control panel password to allow retrieval of the Who\'s Chatting list.', '20', 'input', 'chat_pass_md5_new', '', '', '', '', 1, 7, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (WIDTH)?', '', '20', 'input', 'chat_width', '', '600', '', '', 1, 8, 'Showing the chat room', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (HEIGHT)?', '', '20', 'input', 'chat_height', '', '350', '', '', 1, 9, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Pop-up Window Padding? (in px)', 'Allows window to open without scrollbars', '20', 'input', 'chat_poppad', '', '50', '', '', 1, 10, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Default Chat Room Interface Language?', '', '20', 'dropdown', 'chat_language', '', 'en', 'en=English\r\nar=Arabic\r\nde=German\r\nes=Spanish\r\nfr=French\r\nhr=Croation\r\nit=Italian\r\niw=Hebrew\r\nnl=Dutch\r\npl=Polish\r\npt=Portuguese', '', 1, 11, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Load the chat room in...?', '', '20', 'dropdown', 'chat_display', '', 'self', 'self=Normal IPB Page\r\nnew=New Pop Up Window', '', 1, 9, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow chat access to these groups', 'You may select more than one', '20', 'multi', 'chat_access_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat_access_groups\']) )\r\n {\r\n \$POST[\'chat_access_groups\'] = implode(\",\",\$POST[\'chat_access_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat_access_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat_access_groups\';\r\n}if ( \$show == 1 ) { \$key=\'chat_access_groups[]\'; }', 1, 13, 'Access Permissions', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow ADMIN access to these groups', 'You may select more than one - please choose carefully!', '20', 'multi', 'chat_admin_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat_admin_groups\']) )\r\n {\r\n \$POST[\'chat_admin_groups\'] = implode(\",\",\$POST[\'chat_admin_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat_admin_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat_admin_groups\';\r\n}if ( \$show == 1 ) { \$key=\'chat_admin_groups[]\'; }', 1, 14, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Account Number?', 'Removing this number will remove all links / chat functionality within IPB.\r\n', '21', 'input', 'chat04_account_no', '', '', '', '', 1, 1, 'Account Specifics', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room URL?', '', '21', 'input', 'chat04_whodat_server_addr', '', 'http://invision.parachat.com/cgi-bin/userlist/test', '', '', 1, 2, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable 'Who's Chatting?'', 'If enabled, this will show who\'s chatting in the chat room on your forums home page underneath the active users list.', '21', 'yes_no', 'chat04_who_on', '', '1', '', '', 1, 3, 'Who's Chatting', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Hide Who's Chatting when no members are logged into chat?', '', '21', 'yes_no', 'chat04_hide_whoschatting', '', '1', '', '', 1, 4, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Update local list no less than every:', 'The local list is updated from the master chat server by the frequency you set and cached locally.', '21', 'dropdown', 'chat04_who_save', '', '1', '1=1\r\n5=5\r\n10=10\r\n15=15\r\n30=30', '', 1, 5, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (WIDTH)?', '', '21', 'input', 'chat04_width', '', '600', '', '', 1, 8, 'Showing the chat room', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (HEIGHT)?', '', '21', 'input', 'chat04_height', '', '350', '', '', 1, 9, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Pop-up Window Padding? (in px)', 'Allows window to open without scrollbars', '21', 'input', 'chat04_poppad', '', '50', '', '', 1, 10, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Load the chat room in...?', '', '21', 'dropdown', 'chat04_display', '', 'self', 'self=Normal IPB Page\r\nnew=New Pop Up Window', '', 1, 9, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow chat access to these groups', 'You may select more than one', '21', 'multi', 'chat04_access_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat04_access_groups\']) )\r\n {\r\n \$POST[\'chat04_access_groups\'] = implode(\",\",\$POST[\'chat04_access_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat04_access_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat04_access_groups\';\r\n}', 1, 13, 'Access Permissions', 1, '', 1);"; + +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow poll creator to vote in own poll?', 'If set to \"yes\", the poll creator will have the option of voting in their own poll.', '5', 'yes_no', 'allow_creator_vote', '', '1', '', '', 1, 31, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Registration Terms & Rules', 'The content of this section will be displayed before a member can register a new account.\r\nHTML ENABLED', '17', 'textarea', 'reg_rules', '', 'Forum Terms & Rules\r\n\r\nPlease take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the \"Register\" button below. To cancel this registration, simply hit the \'back\' button on your browser.\r\n\r\nPlease remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message.\r\n\r\nThe messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary.\r\n\r\nYou agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person\'s privacy, or otherwise violative of any law.\r\n\r\nYou agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board.\r\n', '', '', 1, 5, 'Registration Terms & Rules', 1, '', 0);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show subscription packages when registering?', 'If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one.', '23', 'yes_no', 'subsm_show_reg', '', '1', '', '', 1, 1, 'Optional Purchase Upon Registration', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Force every member to require a subscriptions package', 'If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board.', '23', 'yes_no', 'subsm_enforce', '', '0', '', '', 1, 2, 'Force Package Purchase', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Member group to use after registration but before package purchase?', 'If you require that every member purchases a subscription, choose a group to move the member into once they have validated their registration prior to purchasing a subscriptions manager package.\r\nMembers in this group will see the \'Purchase Subscriptions\' page when logged in and if they don\'t already have a package.', '23', 'dropdown', 'subsm_nopkg_group', '', '1', '#show_groups#', '', 1, 3, '', 1, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Reported Post Notifications sent to', 'Where do you want reported post notifications to go?', '6', 'dropdown', 'reportpost_method', '', 'pm', 'email=Email\r\npm=Personal Message', '', 1, 19, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Display registered to line?', 'If enabled, you can optionally add a \"registered to\" line at the bottom of your board.', '24', 'yes_no', 'ipb_reg_show', '', '0', '', '', 1, 2, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show as registered to...', 'Examples: Matthew Mecham, IPS, Inc.', '24', 'input', 'ipb_reg_name', '', '', '', '', 1, 3, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Registered Licence Key', 'This is the IPB registraton key NOT your customer code or client center password. To get your key, log into your client center and click on \'Invision Power Board\' under \'Purchased Services\'.\r\n
      DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU\'RE SURE OF WHAT YOU\'RE DOING!', '24', 'input', 'ipb_reg_number', '', '', '', '', 1, 1, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Copyright Removal Key', 'Your copyright removal key obtained from IPS.', '25', 'input', 'ipb_copy_number', '', '', '', '', 1, 1, '', 0, '', 1);"; +$SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Copyright Purchased?', '', '25', 'yes_no', 'ips_cp_purchase', '', '0', '', '', 1, 2, '', 0, '', 1);"; + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20006/version_history.php b/upload/upgrade/installfiles/upg_20006/version_history.php new file mode 100644 index 00000000..e5c062e9 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20006/version_history.php @@ -0,0 +1,17 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20007/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_20007/ipb_settings_partial.xml new file mode 100644 index 00000000..6604ff60 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20007/ipb_settings_partial.xml @@ -0,0 +1,1139 @@ + + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + + + + 202 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on + + 1 + + + 1 + 1 + + 0 + + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + + + + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + + + + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + + + + 203 + Chat Room URL? + ]]> + 21 + input + chat04_whodat_server_addr + + http://invision.parachat.com/cgi-bin/userlist/test + + + 1 + 2 + + 1 + + 1 + + + + 247 + Copyright Purchased? + + 25 + yes_no + ips_cp_purchase + + 0 + + + 1 + 2 + + 0 + + 1 + + + + 243 + Display registered to line? + + 24 + yes_no + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + + + + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 0 + + + + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + + + + 190 + + + 20 + yes_no + chat_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + + + + 204 + + + 21 + yes_no + chat04_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + + + + 218 + Forums to export articles from + forum ids
      with a comma for more than one]]> + 22 + input + csite_article_forum + + + + + 1 + 3 + + 0 + + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + + + + 244 + Show as registered to... + Matthew Mecham, IPS, Inc.]]> + 24 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + + + + 191 + + + 20 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + + + + 219 + Number of Articles to display in the main section + + 22 + input + csite_article_max + + 15 + + + 1 + 4 + + 0 + + 0 + + + + 220 + Enable Recent Articles? + This will show a list of recent topic titles on the IPB Portal page + 22 + yes_no + csite_article_recent_on + + 1 + + + 1 + 5 + IPB Portal Recent Articles + 0 + + 0 + + + + 238 + + HTML ENABLED
      ]]> + 17 + textarea + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 5 + + 1 + + 0 + + + + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 + dropdown + chat_refresh_list + + 15 + 5=5 +10=10 +15=15 +30=30 + + 1 + 5 + + 1 + + 1 + + + + 206 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 21 + dropdown + chat04_who_save + + 1 + 1=1 +5=5 +10=10 +15=15 +30=30 + + 1 + 5 + + 1 + + 1 + + + + 193 + Changed your IPChat control panel password? + + 20 + input + chat_pass_md5 + + + + + 1 + 6 + + 0 + + 1 + + + + 221 + Max. no recent articles to show + + 22 + input + csite_article_recent_max + + 5 + + + 1 + 6 + + 0 + + 0 + + + + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 + input + chat_pass_md5_new + + + + + 1 + 7 + + 0 + + 1 + + + + 222 + Max. length of topic titles + + 22 + input + csite_article_len + + 30 + + + 1 + 7 + + 1 + + 0 + + + + 195 + Chat Room Dimensions (WIDTH)? + + 20 + input + chat_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + + + + 209 + Chat Room Dimensions (WIDTH)? + + 21 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + + + + 196 + Chat Room Dimensions (HEIGHT)? + + 20 + input + chat_height + + 350 + + + 1 + 9 + + 0 + + 1 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + + + + 224 + Enable Recent Discussions + + 22 + yes_no + csite_discuss_on + + 1 + + + 1 + 9 + IPB Portal Recent Discussions + 0 + + 0 + + + + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 9 + + 0 + + 1 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 9 + + 0 + + 1 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 + input + chat_poppad + + 50 + + + 1 + 10 + + 0 + + 1 + + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 10 + + 1 + + 1 + + + + 225 + Max. no recent discussions to show + + 22 + input + csite_discuss_max + + 10 + + + 1 + 10 + + 0 + + 0 + + + + 198 + Default Chat Room Interface Language? + + 20 + dropdown + chat_language + + en + en=English +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese + + 1 + 11 + + 1 + + 1 + + + + 226 + Max. length of topic titles + + 22 + input + csite_discuss_len + + 30 + + + 1 + 11 + + 1 + + 0 + + + + 227 + Show User / Guest Info box? + + 22 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + + + + 200 + Allow chat access to these groups + You may select more than one + 20 + multi + chat_access_groups + + + #show_groups# + + 1 + 13 + Access Permissions + 0 + + 1 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + + + + #show_groups# + + 1 + 13 + Access Permissions + 1 + + 1 + + + + 228 + Show online users? + + 22 + yes_no + csite_online_show + + 1 + + + 1 + 13 + + 0 + + 0 + + + + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 + multi + chat_admin_groups + + + #show_groups# + + 1 + 14 + + 1 + + 1 + + + + 229 + Show search box? + + 22 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + + + + 230 + Enable skin selection choice dropdown? + + 22 + yes_no + csite_skinchange_show + + 1 + + + 1 + 15 + + 0 + + 0 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 22 + input + csite_poll_url + + + + + 1 + 17 + + 0 + + 0 + + + + 233 + Show Site Navigation Menu? + + 22 + yes_no + csite_nav_show + + 1 + + + 1 + 18 + + 0 + + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 19 + + 0 + + 1 + + + + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

      {board_url} will convert into your board]]>
      + 22 + textarea + csite_nav_contents + + + + + 1 + 19 + + 0 + + 0 +
      + + + 235 + Show Affiliates / Favoured Sites box? + + 22 + yes_no + csite_fav_show + + 0 + + + 1 + 20 + + 0 + + 0 + + + + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 + textarea + csite_fav_contents + + + + + 1 + 21 + + 1 + + 0 + + + + 237 + Allow poll creator to vote in own poll? + + 5 + yes_no + allow_creator_vote + + 1 + + + 1 + 31 + + 0 + + 1 + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20007/mysql_updates.php b/upload/upgrade/installfiles/upg_20007/mysql_updates.php new file mode 100644 index 00000000..319d3888 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20007/mysql_updates.php @@ -0,0 +1,34 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PF1 -> PF 2 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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(); +} + +$SQL = array(); + +$SQL[] = "INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('CODEBOX', 'Use this BBCode tag to show a scrolling codebox. Useful for long sections of code.', 'codebox', '
      CODE
      {content}
      ', 0, '[codebox]long_code_here = '';[/codebox]');"; + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20007/version_history.php b/upload/upgrade/installfiles/upg_20007/version_history.php new file mode 100644 index 00000000..3ed7e281 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20007/version_history.php @@ -0,0 +1,18 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20008/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_20008/ipb_settings_partial.xml new file mode 100644 index 00000000..84b68061 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20008/ipb_settings_partial.xml @@ -0,0 +1,565 @@ + + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 2 + + 0 + + 1 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + + + + 1 + 2 + + 0 + + 1 + + + + 203 + Chat Room URL? + ]]> + 21 + input + chat04_whodat_server_addr + + --Not currently required-- + + + 1 + 3 + + 1 + + 1 + + + + 204 + + + 21 + yes_no + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 5 + + 0 + + 1 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 6 + + 0 + + 1 + + + + 206 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. In minutes. + 21 + dropdown + chat04_who_save + + 2 + 2=2 +5=5 +10=10 +15=15 +30=30 + + 1 + 6 + + 1 + + 1 + + + + 209 + Chat Room Dimensions (WIDTH)? + + 21 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + + + + 254 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) + 21 + dropdown + chat04_default_lang + + english.conf + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German + + 1 + 10 + + 0 + + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
      Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
      + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 +
      + + + 255 + + + 21 + yes_no + chat04_plainmode + + 0 + + + 1 + 11 + + 0 + + 0 + + + + 251 + Number of times per day a moderator can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 12 + + 0 + + 1 + + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 16 + Chat Room Style Options + 0 + + 0 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 17 + + 0 + + 0 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
      <param name="cmd.BeepLeave" value="true"> +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 + textarea + chat04_customparams + + + + + 1 + 18 + + 0 + + 0 +
      + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 18 + + 0 + + 1 + + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 19 + + 1 + + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + +
      + +
      \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20008/version_history.php b/upload/upgrade/installfiles/upg_20008/version_history.php new file mode 100644 index 00000000..8c0c9fca --- /dev/null +++ b/upload/upgrade/installfiles/upg_20008/version_history.php @@ -0,0 +1,19 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20009/components.php b/upload/upgrade/installfiles/upg_20009/components.php new file mode 100644 index 00000000..d03b6721 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20009/components.php @@ -0,0 +1,1356 @@ + + + +<% TITLE %> + +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
      +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
      + + +EOF; + + +$CSS = << 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(<#IMG_DIR#>/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(<#IMG_DIR#>/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.mcelltoday{ + border: 2px solid #8B0000; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +select{ + border: 0; + font-family: verdana, helvetica, sans-serif; + font-size: 12px; + margin: 0; + padding: 0; +} + +input.button{ + margin: 0; + width: auto; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(<#IMG_DIR#>/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 8px auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(<#IMG_DIR#>/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; + width: 98%; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; + width: 98%; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0; + margin: 0; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: transparent url(<#IMG_DIR#>/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + +td.formbuttonrow, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap, +#pmnotewrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + +#pmnotewrap{ + line-height: 135%; + margin: 0 0 5px 0; +} + +.errorwrap h4, +#pmnotewrap h4{ + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p, +#pmnotewrap p{ + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + +#pmnotewrap p.pmavatar{ + float: left; +} + +#pmnotewrap p.pmnotefoot{ + background: #E3C0C0; + border-top: 1px solid #992A2A; + text-align: right; +} + +#pmnotewrap a:link, +#pmnotewrap a:visited{ + background: transparent; + color: #992A2A; + text-decoration: underline; +} + +#pmnotewrap a:hover, +#pmnotewrap a:active{ + background: transparent; + color: #992A2A; + text-decoration: none; +} + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(<#IMG_DIR#>/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#logographic{ + background: transparent url(<#IMG_DIR#>/logo4.gif) no-repeat left; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#submenu p, +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#submenu p.home, +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#submenu a:link, +#submenu a:visited{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +#submenu a:hover, +#submenu a:active{ + background: transparent; + color: #5176B5; +} +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 8px 0 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +EOF; + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20009/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_20009/ipb_settings_partial.xml new file mode 100644 index 00000000..a6a80fef --- /dev/null +++ b/upload/upgrade/installfiles/upg_20009/ipb_settings_partial.xml @@ -0,0 +1,80 @@ + + + + + 218 + Forums to export articles from + You may select more than one. + 22 + multi + csite_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + + + + 265 + Caching PATH + This can be left blank +
      This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
      + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 +
      + + + 264 + Image URL + This can be left blank +
      This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
      + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 +
      +
      + +
      \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20009/mysql_updates.php b/upload/upgrade/installfiles/upg_20009/mysql_updates.php new file mode 100644 index 00000000..ab65fe3b --- /dev/null +++ b/upload/upgrade/installfiles/upg_20009/mysql_updates.php @@ -0,0 +1,15 @@ +/p_up.gif\' border=\'0\' alt=\'Go to the top of the page\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('P_CARD', '/p_card.gif\' border=\'0\' alt=\'Profile Card\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_AIM', '/profile_aim.gif\' border=\'0\' alt=\'AIM\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_ITEM', '/profile_item.gif\' border=\'0\' alt=\'Profile Item\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_MSN', '/profile_msn.gif\' border=\'0\' alt=\'MSN\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_ICQ', '/profile_icq.gif\' border=\'0\' alt=\'ICQ\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_YIM', '/profile_yahoo.gif\' border=\'0\' alt=\'Yahoo\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_CONTACT', '/icon_msg_nonew.gif\' border=\'0\' alt=\'Contact\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('BAR_LEFT', '/bar_left.gif\' border=\'0\' alt=\'*\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('BAR_RIGHT', '/bar_right.gif\' border=\'0\' alt=\'*\' />', 1, 1);"; +$SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('CAL_GOTO', '/cal_goto.gif\' border=\'0\' alt=\'Goto Month\' />', 1, 1);"; +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20009/version_history.php b/upload/upgrade/installfiles/upg_20009/version_history.php new file mode 100644 index 00000000..547c1bbb --- /dev/null +++ b/upload/upgrade/installfiles/upg_20009/version_history.php @@ -0,0 +1,20 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20009/version_upgrade.php b/upload/upgrade/installfiles/upg_20009/version_upgrade.php new file mode 100644 index 00000000..1f1fd9f4 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20009/version_upgrade.php @@ -0,0 +1,68 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PF3 -> PF 4 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // Upgrade templates + //-------------------------------- + + require_once( ROOT_PATH.'upgrade/installfiles/upg_20009/components.php' ); + + $this->install->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => $CSS, + 'set_cache_css' => $CSS, + 'set_wrapper' => $WRAPPER, + 'set_cache_wrapper' => $WRAPPER, + ), 'set_skin_set_id=1' ); + + $this->install->message = "Wrapper and CSS updated..."; + return true; + } + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20010/components.php b/upload/upgrade/installfiles/upg_20010/components.php new file mode 100644 index 00000000..512624b6 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20010/components.php @@ -0,0 +1,1349 @@ + + + +<% TITLE %> + +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
      +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
      + + +EOF; + + +$CSS = << 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(<#IMG_DIR#>/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(<#IMG_DIR#>/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.mcelltoday{ + border: 2px solid #8B0000; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +select{ + border: 0; + font-family: verdana, helvetica, sans-serif; + font-size: 12px; + margin: 0; + padding: 0; +} + +input.button{ + margin: 0; + width: auto; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(<#IMG_DIR#>/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 8px auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(<#IMG_DIR#>/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; + width: 98%; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; + width: 98%; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0; + margin: 0; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: transparent url(<#IMG_DIR#>/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + +td.formbuttonrow, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap, +#pmnotewrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + +#pmnotewrap{ + line-height: 135%; + margin: 0 0 5px 0; +} + +.errorwrap h4, +#pmnotewrap h4{ + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p, +#pmnotewrap p{ + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + +#pmnotewrap p.pmavatar{ + float: left; +} + +#pmnotewrap p.pmnotefoot{ + background: #E3C0C0; + border-top: 1px solid #992A2A; + text-align: right; +} + +#pmnotewrap a:link, +#pmnotewrap a:visited{ + background: transparent; + color: #992A2A; + text-decoration: underline; +} + +#pmnotewrap a:hover, +#pmnotewrap a:active{ + background: transparent; + color: #992A2A; + text-decoration: none; +} + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(<#IMG_DIR#>/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#submenu p, +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#submenu p.home, +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#submenu a:link, +#submenu a:visited{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +#submenu a:hover, +#submenu a:active{ + background: transparent; + color: #5176B5; +} +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 8px 0 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +EOF; + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20010/mysql_updates.php b/upload/upgrade/installfiles/upg_20010/mysql_updates.php new file mode 100644 index 00000000..e2f0500c --- /dev/null +++ b/upload/upgrade/installfiles/upg_20010/mysql_updates.php @@ -0,0 +1,11 @@ +/profile_icq.gif\' border=\'0\' alt=\'ICQ\' />', 1, 1);"; + +# Fix bug where "select * from members where temp_ban..." prevents NULL IS NOT NULL confusion + +$SQL[] = "ALTER TABLE ibf_members change temp_ban temp_ban varchar(100) default '0'"; +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20010/version_history.php b/upload/upgrade/installfiles/upg_20010/version_history.php new file mode 100644 index 00000000..87da359a --- /dev/null +++ b/upload/upgrade/installfiles/upg_20010/version_history.php @@ -0,0 +1,21 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20010/version_upgrade.php b/upload/upgrade/installfiles/upg_20010/version_upgrade.php new file mode 100644 index 00000000..8ff55c3f --- /dev/null +++ b/upload/upgrade/installfiles/upg_20010/version_upgrade.php @@ -0,0 +1,68 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PF3 -> PF 4 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // Upgrade templates + //-------------------------------- + + require_once( ROOT_PATH.'upgrade/installfiles/upg_20010/components.php' ); + + $this->install->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => $CSS, + 'set_cache_css' => $CSS, + 'set_wrapper' => $WRAPPER, + 'set_cache_wrapper' => $WRAPPER, + ), 'set_skin_set_id=1' ); + + + return true; + } + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20011/version_history.php b/upload/upgrade/installfiles/upg_20011/version_history.php new file mode 100644 index 00000000..c8e9f20e --- /dev/null +++ b/upload/upgrade/installfiles/upg_20011/version_history.php @@ -0,0 +1,22 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20012/mysql_updates.php b/upload/upgrade/installfiles/upg_20012/mysql_updates.php new file mode 100644 index 00000000..7f2a00ff --- /dev/null +++ b/upload/upgrade/installfiles/upg_20012/mysql_updates.php @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20012/version_history.php b/upload/upgrade/installfiles/upg_20012/version_history.php new file mode 100644 index 00000000..7f2fc82b --- /dev/null +++ b/upload/upgrade/installfiles/upg_20012/version_history.php @@ -0,0 +1,23 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20013/version_history.php b/upload/upgrade/installfiles/upg_20013/version_history.php new file mode 100644 index 00000000..115f6b41 --- /dev/null +++ b/upload/upgrade/installfiles/upg_20013/version_history.php @@ -0,0 +1,24 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_20014/version_history.php b/upload/upgrade/installfiles/upg_20014/version_history.php new file mode 100644 index 00000000..aaf52aff --- /dev/null +++ b/upload/upgrade/installfiles/upg_20014/version_history.php @@ -0,0 +1,25 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/components.php b/upload/upgrade/installfiles/upg_21003/components.php new file mode 100644 index 00000000..12f46233 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/components.php @@ -0,0 +1,1675 @@ + + + + + +<% TITLE %> +<% GENERATOR %> +<% CSS %> +<% JAVASCRIPT %> + + +
      +<% BOARD HEADER %> +<% MEMBER BAR %> +<% NAVIGATION %> + +<% BOARD %> +<% BOARD FOOTER %> +<% STATS %> +<% COPYRIGHT %> +
      + + +EOF; + +# DONT FORGET TO SWAP url(1/ FOR url(<#IMG_DIR>/) +$CSS = << 750px is a common fixed resolution size */ + width: 98%; +} + +/* + * ======================================== + * styles for pagination links + * ======================================== + */ + + +.pagelink, +.pagelinklast, +.pagecurrent, +.minipagelink, +.minipagelinklast{ + background: #F0F5FA; + border: 1px solid #072A66; + padding: 1px 3px 1px 3px; +} + +.pagelinklast, +.minipagelinklast{ + background: #DFE6EF; +} + + +.pagecurrent{ + background: #FFC9A5; +} + +.minipagelink, +.minipagelinklast{ + border: 1px solid #C2CFDF; + font-size: 10px; + margin: 0 1px 0 0; +} + +.pagelink a:active, +.pagelink a:visited, +.pagelink a:link, +.pagelinklast a:active, +.pagelinklast a:visited, +.pagelinklast a:link, +.pagecurrent a:active, +.pagecurrent a:visited, +.pagecurrent a:link, +.minipagelink a:active, +.minipagelink a:visited, +.minipagelink a:link, +.minipagelinklast a:active, +.minipagelinklast a:visited, +.minipagelinklast a:link{ + text-decoration: none; +} + +/* fake button effect for some links */ +.fauxbutton{ + background: #BFCDE0; + border: 1px solid #072A66; + font-size: 11px; + font-weight: bold; + padding: 4px; +} + +.fauxbutton a:link, +.fauxbutton a:visited, +.fauxbutton a:active{ + color: #222 !important; + text-decoration: none; +} + +.forumdesc, +.forumdesc a:link, +.forumdesc a:visited, +.forumdesc a:active{ + background: transparent; + font-size: 10px; + color: #666; + line-height: 135%; + margin: 2px 0 0 0; + padding: 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +.searchlite { + background-color:yellow; + font-weight:bold; + color: red; +} + +.activeusers{ + background: #FFF; + border: 1px solid #072A66; + color: #000; + margin: 0px; + padding: 1px; +} + +.activeuserposting a:link, +.activeuserposting a:visited, +.activeuserposting a:active, +.activeuserposting +{ + font-style:italic; + text-decoration: none; + border-bottom:1px dotted black; +} + +fieldset.search{ + line-height: 150%; + padding: 6px; +} + +label{ + cursor: pointer; +} + +img.attach{ + background: #808080 url(<#IMG_DIR#>/click2enlarge.gif) no-repeat top right; + border: 1px solid #808080; + margin: 0 2px 0 0; + padding: 11px 2px 2px 2px; +} + +.thumbwrap, +.thumbwrapp, +.fullimagewrap{ + border: 1px solid #072A66; + margin: 2px; +} + +.thumbwrapp{ + border: 2px solid #660707; +} + +.fullimagewrap{ + background: #F5F9FD; + text-align: center; + margin: 5px 0 5px 0; + padding: 5px; +} + +.thumbwrap h4, +.thumbwrapp h4{ + background: #DDE6F2; + border: 0 !important; + border-bottom: 1px solid #5176B5 !important; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.thumbwrap p, +.thumbwrapp p{ + background: #EEF2F7 !important; + border: 0 !important; + border-top: 1px solid #5176B5 !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrap p.alt, +.thumbwrapp p.alt{ + background: #DFE6EF !important; + margin: 0 !important; + padding: 5px !important; + text-align: left; +} + +.thumbwrapp p.pin{ + background: #EFDFDF !important; + text-align: center !important; +} + +.thumbwrap img.galattach, +.thumbwrapp img.galattach{ + background: #FFF url(<#IMG_DIR#>/img_larger.gif) no-repeat bottom right; + border: 1px solid #072A66; + margin: 5px; + padding: 2px 2px 10px 2px; +} + +li.helprow{ + margin: 0 0 10px 0; + padding: 0; +} + +ul#help{ + padding: 0 0 0 15px; +} + +.warngood, +.warnbad{ + color: #0B9500; + font-weight: bold; +} + +.warnbad{ + color: #DD0000; +} + +#padandcenter{ + margin: 0 auto 0 auto; + padding: 14px 0 14px 0; + text-align: center; +} + +#profilename{ + font-size: 28px; + font-weight: bold; +} + +#photowrap{ + padding: 6px; +} + +#phototitle{ + border-bottom: 1px solid #000; + font-size: 24px; +} + +#photoimg{ + margin: 15px 0 0 0; + text-align: center; +} + +#ucpmenu, +#ucpcontent{ + background: #F5F9FD; + border: 1px solid #345487; + line-height: 150%; +} + +#ucpmenu p{ + margin: 0; + padding: 2px 5px 6px 9px; +} + +#ucpmenu a:link, +#ucpmenu a:active, +#ucpmenu a:visited{ + text-decoration: none; +} + +#ucpcontent{ + width: auto; +} + +#ucpcontent p{ + margin: 0; + padding: 10px; +} + +.activeuserstrip{ + background: #BCD0ED; + padding: 6px; +} + +/* Topic View elements */ +.signature{ + background: transparent; + color: #339; + font-size: 10px; + line-height: 150%; +} + +.postdetails{ + font-size: 10px; + line-height:140%; +} + +.postcolor{ + font-size: 12px; + line-height: 160%; +} + +.normalname{ + color: #003; + font-size: 12px; + font-weight: bold; +} + +.normalname a:link, +.normalname a:visited, +.normalname a:active{ + font-size: 12px; +} + +.post1, +.bg1{ + background: #F5F9FD; +} + +.post2, +.bg3{ + background: #EEF2F7; +} + +.row2shaded, +.post1shaded { background-color: #DEDBE4 } +.row4shaded, +.post2shaded { background-color: #E3DFE7 } + +.row1{ + background: #DFE6EF; +} + +.row2{ + background: #E4EAF2; +} + +.darkrow1{ + background: #BCD0ED; + color: #3A4F6C; +} + +.darkrow3{ + background: #D1DCEB; + color: #3A4F6C; +} + +/* tableborders gives the white column / row lines effect */ +.plainborder, +.tablefill, +.tablepad{ + background: #F5F9FD; + border: 1px solid #345487; +} + +.tablefill, +.tablepad{ + padding: 6px; +} + +.tablepad{ + border: 0 !important; +} + +.wrapmini{ + float: left; + line-height: 1.5em; + width: 25%; +} + +.pagelinks{ + float: left; + line-height: 1.2em; + width: 35%; +} + +.desc{ + font-size: 11px; + color: #434951; +} + +.lastaction +{ + font-size: 10px; + color: #434951; +} + +.edit{ + font-size: 9px; +} + +.thin{ + border: 1px solid #FFF; + border-left: 0; + border-right: 0; + line-height: 150%; + margin: 2px 0 2px 0; + padding: 6px 0 6px 0; +} + +/* =================================================================================== */ +/* =================================================================================== */ +/* =================================================================================== */ + +/* + * ======================================== + * calendar styles + * ======================================== + */ + +.calmonths{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + font-size: 18px; + font-weight: bold; + margin: 5px 0 5px 0; + padding: 8px; + text-align: center; +} + +.weekday{ + font-size: 14px; + font-weight: bold; +} + +.calmonths a{ + text-decoration: none; +} + +.calday, +.calweekday{ + background: #DFE6EF; + color: #666; + font-size: 11px; + font-weight: bold; + margin: 0; + padding: 4px; + text-align: right; +} + +.calweekday{ + border-right: 1px solid #AAA; + color: #222; + font-size: 14px; + padding: 6px; + text-align: center; +} + +.celltodayshaded, +.celldateshaded, +.cellblank, +.celldate, +.celltoday, +.mcellblank, +.mcelldate, +.mcelltoday{ + background: #EEF2F7; + height: 100px; + margin: 0; + padding: 0; + vertical-align: top; +} + +.celltodayshaded, +.celldateshaded +{ + background: #E3DFE7; +} + +.mcellblank, +.mcelldate, +.mcelltoday{ + height: auto; +} + +.cellblank, +.mcellblank{ + background: #C2CFDF; +} + +.celltoday, +.celltodayshaded, +.mcelltoday{ + border: 2px solid #8B0000; +} + +.calranged +{ + border: 2px outset #C2CFDF; + background: #C2CFDF; + padding:4px; +} + +.calitem +{ + border-bottom: 1px dotted #C2CFDF; + padding:4px; +} + +/* + * ======================================== + * form styles + * ======================================== + */ + +.input-warn, +.input-green, +input, +textarea, +select{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: verdana, helvetica, sans-serif; + font-size: 11px; + margin: 5px; + padding: 2px; + vertical-align: middle; +} + +.input-warn, +.input-warn-content +{ + border: 1px solid #C00; +} + +.input-ok, +.input-ok-content +{ + border: 1px solid #0C0; +} + +.input-warn-content +{ + padding: 4px; + margin: 4px; + background-color: #FCC; +} + +.input-ok-content +{ + padding: 4px; + margin: 4px; + background-color: #CFC; +} + + +.input-text +{ + color: #900; +} + +select{ + border: 0; + font-family: verdana, helvetica, sans-serif; + font-size: 12px; + margin: 0; + padding: 0; +} + +input.button{ + margin: 0; + width: auto; +} + +optgroup option{ + font-family: verdana, helvetica, sans-serif; + font-size: 12px; +} + +.codebuttons{ + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 10px; + vertical-align: middle; + margin:2px; +} + +.textarea, +.searchinput, +.button, +.gobutton{ + background: #FFF; + border: 1px solid #4C77B6; + color: #000; + font-family: Verdana, Helvetica, Sans-Serif; + font-size: 11px; + padding: 2px; + vertical-align: middle; +} + +.button{ + background: #DFE6EF; +} + +.gobutton{ + background: transparent; + border: 0; + color: #072A66; + margin: 0; + vertical-align: middle; +} + +.radiobutton, +.checkbox, +.helpbox { + border: 0; + vertical-align: middle; +} + +/* + * class.formtable + * + * used for tabled forms + * technically tables should not be used for form display + * but, in the case of IPB a table is easier to work with + * for the average webmaster, who has little to no CSS knowledge. + * + */ + +.formtable{ + background: transparent; +} + +.formtable td, +.pformleft, +.pformleftw, +.pformright{ + background:#F5F9FD; + border: 1px solid #C2CFDF; + border-bottom: 0; + border-left: 0; + font-weight: bold; + margin: 1px 0 0 0; + padding: 6px; + width: 25%; +} + +.formtable td.wider, +.pformleftw, +.pformright{ + width: 40%; +} + +.formtable td.formright, +.pformright{ + border-right: 0px; + font-weight: normal; + width: auto; +} + +.formtable td.formtitle, +.formsubtitle{ + background: #D1DCEB; + border: 1px solid #9FB9D4; + border-bottom: 0; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +.formsubtitle{ + border: 0; + color: #3A4F6C; + font-weight: bold; + padding: 5px; +} + +.formtable td.formstrip{ + background: #DDE8F2; + border: 1px solid #9FB9D4; + border-left: 0; + border-right: 0; + font-weight: normal; +} + +/* + * ======================================== + * new style quote and code wrappers MATT's DESIGN + * ======================================== + */ + +.quotetop{ + background: #E4EAF2 url(<#IMG_DIR#>/css_img_quote.gif) no-repeat right; + border: 1px dotted #000; + border-bottom: 0; + border-left: 4px solid #8394B2; + color: #000; + font-weight: bold; + font-size: 10px; + margin: 8px auto 0 auto; + padding: 3px; +} + +.quotemain{ + background: #FAFCFE; + border: 1px dotted #000; + border-left: 4px solid #8394B2; + border-top: 0; + color: #465584; + padding: 4px; + margin: 0 auto 8px auto; +} + +.codetop, +.sqltop, +.htmltop{ + background: #FDDBCC url(<#IMG_DIR#>/css_img_code.gif) no-repeat right; + color: #000; + font-weight: bold; + margin: 0 auto 0 auto; + padding: 3px; + width: 98%; +} + +.codemain, +.sqlmain, +.htmlmain{ + background: #FAFCFE; + border: 1px dotted #000; + color: #465584; + font-family: Courier, Courier New, Verdana, Arial; + margin: 0 auto 0 auto; + padding: 2px; + width: 98%; +} + +/* + * ======================================== + * old school quote and code styles - backwards compatibility + * ======================================== + */ + +#QUOTE, +#CODE{ + background: #FAFCFE; + border: 1px solid #000; + color: #465584; + font-family: Verdana, Arial; + font-size: 11px; + padding: 2px; + white-space: normal; +} + +#CODE{ + font-family: Courier, Courier New, Verdana, Arial; +} + +/* + * ======================================== + * All New Styles + * ======================================== + */ +.cleared{ + clear: both; +} + +.borderwrap, +.borderwrapm{ /* this will affect the outlining border of all the tables and boxes through-out the skin. */ + background: #FFF; + border: 1px solid #072A66; + padding: 0px; + margin: 0px; +} + +.borderwrapm{ + margin: 5px; +} + +.borderwrap h3, +.maintitle, +.maintitlecollapse{ + background: url(<#IMG_DIR#>/tile_cat.gif); + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + color: #FFF; + font-size: 12px; + font-weight: bold; + margin: 0px; + padding: 8px; +} + +.maintitlecollapse{ + border: 1px solid #FFF; +} + +.maintitle p, +.maintitlecollapse p, +.formsubtitle p{ + background: transparent !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; +} + +.maintitle p.expand, +.maintitle p.goto, +.maintitlecollapse p.expand, +.formsubtitle p.members{ + float: right; + width: auto !important; +} + +.maintitle a:link, +.maintitle a:visited, +.maintitlecollapse a:link, +.maintitlecollapse a:visited{ + background: transparent; + color: #FFF; + text-decoration: none; +} + +.maintitle a:hover, +.maintitle a:active, +.maintitlecollapse a:hover, +.maintitlecollapse a:active{ + background: transparent; + color: #F1F1F1; +} + +table th, +.borderwrap table th, +.subtitle, +.subtitlediv, +.postlinksbar{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} + +.subtitlediv{ + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + text-align: right; +} + +.borderwrap table th a:link, +.subtitle a:link, +.subtitlediv a:link, +.borderwrap table th a:visited, +.subtitle a:visited, +.subtitlediv a:visited, +.borderwrap table th a:active, +.subtitle a:active, +.subtitlediv a:active, +.borderwrap table th a:hover, +.subtitle a:hover, +.subtitlediv a:hover{ + background: transparent; + color: #3A4F6C; + text-decoration: none; +} + +.borderwrap h4{ + background: #DDE6F2; + border: 1px solid #FFF; + border-bottom: 1px solid #5176B5; + border-top: 1px solid #5176B5; + color: #5176B5; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.borderwrap p{ + background: #F9F9F9; + border: 1px solid #CCC; + margin: 5px; + padding: 10px; + text-align: left; +} + +td.formbuttonrow, +.borderwrap p.formbuttonrow, +.borderwrap p.formbuttonrow1{ + background: #D1DCEB !important; + border: 1px solid #FFF; + border-top: 1px solid #5176B5; + margin: 0px !important; + padding: 5px !important; + text-align: center; +} + +td.formbuttonrow{ + border-bottom: 0; + border-left: 0; + border-right: 0; +} + +.borderwrap p.formbuttonrow1{ + background: #F9F9F9 !important; + border: 0; + border-top: 1px solid #CCC; +} + +.bar, +.barb, +.barc{ + background: #DFE6EF; + border: 1px solid #FFF; +} + +.barc{ + border-bottom: 0; +} + +.bar p, +.barb p, +.barc p{ + background: transparent; + border: 0; + color: #222; + font-size: 11px; + margin: 0; + padding: 5px; + text-align: left; +} + +.barb p{ + text-align: right; +} + +.bar p.over, +.bar p.overs, +.barc p.over, +.barc p.overs{ + float: right; +} + +.barb p.over, +.barb p.overs{ + float: left; +} + +.bar p.overs, +.barb p.overs, +.barc p.overs{ + position: relative; + top: 5px; +} + +.catend{ + background: #8394B2; + color: #000; + font-size: 1px; + height: 5px; +} + +.newslink{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 0; + width: 100%; +} + +.newslink td{ + color: #222; + font-size: 10px; + padding: 5px 5px 5px 10px; +} + +.newslink span{ + background: transparent; + color: #072A66; + font-style: italic; + font-weight: normal; +} + +.newslink input{ + background: #FFF; + border: 1px solid #999; + color: #072A66; + font-size: 10px; + padding: 3px; + vertical-align: middle; + width: auto; +} + +.newslink input.button{ + background: transparent; + border: 0; + color: #072A66; + vertical-align: middle; +} + +.fieldwrap{ + background: #F9F9F9; + border: 1px solid #CCC; + border-top: 0; + margin: 5px; + padding: 0; + text-align: left; +} + +.fieldwrap h4{ + background: #EEE; + border: 1px solid #CCC; + border-left: 0; + border-right: 0; + color: #444; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap { + background: #F2DDDD; + border: 1px solid #992A2A; + border-top: 0; + margin: 5px; + padding: 0; +} + + +.errorwrap h4 { + background: #E3C0C0; + border: 1px solid #992A2A; + border-left: 0; + border-right: 0; + color: #992A2A; + font-size: 12px; + font-weight: bold; + margin: 0; + padding: 5px; +} + +.errorwrap p { + background: transparent; + border: 0; + color: #992A2A; + margin: 0; + padding: 8px; +} + + +.ruleswrap{ + background: #F2DDDD; + border: 1px solid #992A2A; + color: #992A2A; + margin: 5px 0 5px 0; + padding: 5px; +} + +#redirectwrap{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 200px auto 0 auto; + text-align: left; + width: 500px; +} + +#redirectwrap h4{ + background: #D0DDEA; + border-bottom: 1px solid #C2CFDF; + color: #3A4F6C; + font-size: 14px; + margin: 0; + padding: 5px; +} + +#redirectwrap p{ + margin: 0; + padding: 5px; +} + +#redirectwrap p.redirectfoot{ + background: #E3EBF4; + border-top: 1px solid #C2CFDF; + text-align: center; +} + + +#gfooter{ + background: #8394B2; + margin: 5px 0 5px 0; + padding: 0; + width: 100%; +} + +#gfooter td{ + color: #FFF; + font-size: 10px; + padding: 4px; +} + +#gfooter a:link, +#gfooter a:visited{ + color: #FFF; +} + +#logostrip{ + background: #3860BB url(<#IMG_DIR#>/tile_back.gif); + border: 1px solid #FFF; + height: 68px; + margin: 0; + padding: 0; +} + +#logographic{ + background: transparent url(<#IMG_DIR#>/logo4.gif) no-repeat left; + height: 68px; + margin: 0; + padding: 0; +} + +#submenu{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border: 1px solid #FFF; + border-top: 0; + color: #3A4F6C; + margin: 0; +} + +#userlinks, +#userlinksguest{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + margin: 5px 0 5px 0; + padding: 0 5px 0 5px; +} + +#userlinksguest{ + background: #F4E7EA; + border: 1px solid #986265; +} + +#submenu p, +#userlinks p, +#userlinksguest p{ + background: transparent !important; + border: 0 !important; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0 !important; + padding: 7px 0 7px 0; + text-align: right; +} + +#userlinks p, +#userlinksguest p{ + font-weight: normal; + letter-spacing: 0; +} + +#submenu p.home, +#userlinks p.home, +#userlinksguest p.home{ + float: left; +} + +#userlinksguest p.pcen{ + text-align: center; +} + +#submenu a:link, +#submenu a:visited{ + background: transparent; + color: #3A4F6C; + padding: 0 6px 0 6px; + text-decoration: none; +} + +#submenu a:hover, +#submenu a:active{ + background: transparent; + color: #5176B5; +} + +#navstrip{ + background: transparent; + color: #999; + font-size: 12px; + font-weight: bold; + margin: 0 0 5px 0; + padding: 14px 0px 8px 0px; +} + +#navstrip a:link, +#navstrip a:visited{ + background: transparent; + color: #222; + text-decoration: none; +} + +#navstrip a:hover, +#navstrip a:active{ + background: transparent; + color: #5176B5; +} + +.toplinks{ + background: transparent; + color: #000; + margin: 0; + padding: 0 0 5px 0; + text-align: right; +} + +.toplinks span{ + background: #F0F5FA; + border: 1px solid #C2CFDF; + border-bottom: 0; + color: #000; + font-size: 10px; + font-weight: bold; + margin: 0 10px 0 0; + padding: 5px; +} + +.copyright{ + background: #EEE; + font-size: 11px; + margin: 0 0 5px 0; + padding: 8px; +} + +/* + * ======================================== + * print page styles + * ======================================== + */ + +#print{ + margin: 20px auto 20px auto; + padding: 0; + text-align: left; + width: 85%; +} + +#print h1, +#print h2, +#print h3, +#print h4, +#print p{ + color: #036; + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 8px; +} + +#print h2, +#print h3, +#print p{ + border-bottom: 1px solid #999; + font-size: 11px; + font-weight: normal; +} + +#print h3{ + background: #F5F5F5; + font-size: 12px; + font-weight: bold; + margin: 0 0 10px 0; +} + +#print h4{ + background: #F9F9F9; + font-size: 11px; +} + +#print p{ + margin: 0 0 5px 0; + padding: 10px; +} + +#print p.printcopy{ + border: 0; + color: #000; + text-align: center; +} + +/* ============================================================== */ +/* RTE STYLES +/* ============================================================== */ + +.rteimage { + /*background: #D3D3D3;*/ + /*border: 1px outset transparent*/; + cursor: pointer; + cursor: hand; + padding:1px; +} + +.rteImageRaised { + /*background: #D3D3D3;*/ + border: 1px outset; + cursor: pointer; + cursor: hand; + padding:0px; +} + +.rteImageLowered { + /*background: #D3D3D3;*/ + border: 1px inset; + cursor: pointer; + cursor: hand; + padding:0px; +} + +.rteimage:hover { + background: #EBEBEB; + cursor: pointer; + cursor: hand; +} + +.rteVertSep { + margin: 0 4px 0 4px; +} + +.rteBack { + background: #D3D3D3; + border: 1px outset; + letter-spacing: 0; + padding: 2px; +} + +/* used in ips_rte.js - do not remove */ +.rtebottombutton +{ + font-size:10px; + border:1px solid #777; + border-top:0px; + padding:3px; + margin:0px; + background-color: #EBEBEB; +} + +/* used in ips_rte.js - do not remove */ +.rtebottombuttonon +{ + font-size:10px; + border:1px solid #777; + border-top:0px; + padding:3px; + margin:0px; + background-color: #D3D3D3; +} + +.rtebuttonbar1 { + /*background: #D3D3D3;*/ + background-image: url(<#IMG_DIR#>/folder_rte_images/rte_tile.gif); + border: 1px solid gray; + border-bottom:0px; + letter-spacing: 0; + padding: 2px; + height:26px; +} + +.rtebuttonbar2 { + /*background: #D3D3D3;*/ + background-image: url(<#IMG_DIR#>/folder_rte_images/rte_tile.gif); + border: 1px solid gray; + border-top:1px solid gray; + letter-spacing: 0; + padding: 2px; + height:26px; +} + +.rtebuttonbar1 tbody tr td, +.rtebuttonbar1 tr td, +.rtebuttonbar2 tbody tr td, +.rtebuttonbar2 tr td, +.rteBack tbody tr td, +.rteBack tr td +{ + /*background: #D3D3D3;*/ + padding: 0; +} + +.rteDiv { + display: block; + position: relative; + padding:0px; + margin:0px; +} + +.rteiframe +{ + border:1px solid #777; + background-color:#FFF; +} + +.rteselectbox +{ + font-size:11px; +} + + +.dny-edit-title +{ + border:0px; + padding:3px; + margin:0px; + background: #D1DCEB; + color: #3A4F6C; +} + + +/* ======================================== */ +/* TABS +/* ======================================== */ + +.tabon +{ + border-top:1px solid #999; + border-left:1px solid #999; + border-right:1px solid #999; + background-color:#FFF; + padding:8px; + padding-bottom:9px; + font-size:10px; + float:left; + width:auto; + margin-top:3px; +} + +.taboff +{ + border-top: 1px solid #777; + border-left: 1px solid #777; + border-right: 1px solid #777; + background-color: #B5C3D9; + color: #333; + padding: 8px; + font-size:10px; + float: left; + width: auto; + margin-top:3px; +} + +.tabon a:link, +.tabon a:visited, +.tabon a:active +{ + text-decoration:none; + color: #000; +} + +.taboff a:link, +.taboff a:visited, +.taboff a:active +{ + text-decoration:none; + color: #333; +} + +.mya-back +{ + background: #072A66; + margin:1px; +} + +.mya-content +{ + background: #FFF; + padding:8px; + margin:1px; + border: 1px solid #777; +} + +/* -------------------------------- */ +/* Create PM box defaults */ +/* -------------------------------- */ + +.iframeshim +{ + position:absolute; + display:none; + background: #FFF; + filter:alpha(opacity=0); + border:0px; + width:auto; + height:auto; +} + + + +/* -------------------------------- */ +/* Experimental */ +/* -------------------------------- */ + +.popupmenu +{ + background: #F0F5FA; + border: 1px solid #3A4F6C; + text-align:left; + font-size:10px; + white-space:nowrap; + /*padding:3px 5px 3px 3px;*/ + /*width:300px;*/ +} + +.popupmenu-item +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; + border-bottom: 1px solid #C2CFDF; +} + +.popupmenu-item-last +{ + padding: 5px; + /*margin-top:4px;*/ + white-space: nowrap; +} + +.popmenubutton +{ + width:120px; + white-space:nowrap; + background-color: #C2CFDF; + border:1px solid #3A4F6C; + color: #3A4F6C; + font-weight:bold; + float:right; + height:18px; + text-align:center; + margin:0px; + font-size:11px; + padding:3px; +} + + +.popmenubutton a:link, +.popmenubutton a:visited, +.popupmenu-item a:link, +.popupmenu-item a:visited, +.popupmenu-item-last a:link, +.popupmenu-item-last a:visited +{ + color: #3A4F6C; + text-decoration: none; +} + +.popmenubutton a:hover, +.popupmenu-item a:hover, +.popupmenu-item-last a:hover +{ + color: #5176B5; + text-decoration: none; +} + +.popupmenu-category +{ + background: transparent url(<#IMG_DIR#>/tile_sub.gif); + border-top: 1px solid #5176B5; + border-bottom: 1px solid #5176B5; + color: #3A4F6C; + font-size: 10px; + font-weight: bold; + letter-spacing: 1px; + margin: 0; + padding: 5px; +} +EOF; + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/ipb_acpperms.xml b/upload/upgrade/installfiles/upg_21003/ipb_acpperms.xml new file mode 100644 index 00000000..8e0b25e7 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/ipb_acpperms.xml @@ -0,0 +1,845 @@ + + + + + recache + tools + admin + + + + remove + admin + adminlog + + + + add + content + attach + + + + edit + content + attach + + + + remove + content + attach + + + + export + content + attach + + + + import + content + attach + + + + stats + content + attach + + + + search + content + attach + + + + bw-add + content + babw + + + + bw-remove + content + babw + + + + bw-edit + content + babw + + + + bw-export + content + babw + + + + bw-import + content + babw + + + + ban-view + content + babw + + + + ban-add + content + babw + + + + ban-remove + content + babw + + + + add + content + bbcode + + + + edit + content + bbcode + + + + remove + content + bbcode + + + + export + content + bbcode + + + + import + content + bbcode + + + + remove + content + calendars + + + + add + content + calendars + + + + edit + content + calendars + + + + recache + content + calendars + + + + add + admin + components + + + + edit + admin + components + + + + export + admin + components + + + + import + admin + components + + + + remove + admin + emailerror + + + + remove + admin + emaillog + + + + export + lookandfeel + emoticons + + + + import + lookandfeel + emoticons + + + + edit + lookandfeel + emoticons + + + + add + lookandfeel + emoticons + + + + remove + lookandfeel + emoticons + + + + upload + lookandfeel + emoticons + + + + add + content + forum + + + + edit + content + forum + + + + permedit + content + forum + + + + reorder + content + forum + + + + remove + content + forum + + + + recount + content + forum + + + + empty + content + forum + + + + rules + content + forum + + + + skin + content + forum + + + + add + content + group + + + + edit + content + group + + + + remove + content + group + + + + perms + content + group + + + + edit + tools + help + + + + add + tools + help + + + + remove + tools + help + + + + add + lookandfeel + lang + + + + edit + lookandfeel + lang + + + + remove + lookandfeel + lang + + + + export + lookandfeel + lang + + + + import + lookandfeel + lang + + + + add + tools + login + + + + edit + tools + login + + + + diagnostics + tools + login + + + + export + tools + login + + + + import + tools + login + + + + edit + content + mem + + + + suspend + content + mem + + + + add + content + mem + + + + remove + content + mem + + + + title-view + content + mem + + + + title-edit + content + mem + + + + title-add + content + mem + + + + title-remove + content + mem + + + + mod + content + mem + + + + ban + content + mem + + + + view + content + mtools + + + + add + content + mod + + + + edit + content + mod + + + + remove + content + mod + + + + remove + admin + modlog + + + + add + content + multimod + + + + edit + content + multimod + + + + remove + content + multimod + + + + install + content + msubs + + + + edit + content + msubs + + + + remove + content + msubs + + + + add + content + msubs + + + + search + content + msubs + + + + edit + tools + portal + + + + add + tools + postoffice + + + + edit + tools + postoffice + + + + send + tools + postoffice + + + + remove + tools + postoffice + + + + add + content + field + + + + edit + content + field + + + + remove + content + field + + + + recount + tools + rebuild + + + + rebuild + tools + rebuild + + + + add + content + rssexport + + + + edit + content + rssexport + + + + recache + content + rssexport + + + + remove + content + rssexport + + + + add + content + rssimport + + + + edit + content + rssimport + + + + recache + content + rssimport + + + + remove + content + rssimport + + + + edit + tools + op + + + + remove + tools + op + + + + add + tools + op + + + + export + tools + op + + + + search + tools + op + + + + import + tools + op + + + + edit + lookandfeel + style + + + + rundiff + lookandfeel + skindiff + + + + export + lookandfeel + skindiff + + + + remove + lookandfeel + skindiff + + + + export + lookandfeel + import + + + + import + lookandfeel + import + + + + edit + lookandfeel + image + + + + remove + lookandfeel + image + + + + add + lookandfeel + image + + + + add + lookandfeel + sets + + + + edit + lookandfeel + sets + + + + remove + lookandfeel + sets + + + + rebuild + lookandfeel + sets + + + + edit + lookandfeel + templ + + + + remove + lookandfeel + templ + + + + add + lookandfeel + templ + + + + edit + lookandfeel + wrap + + + + recache + lookandfeel + skintools + + + + changemember + lookandfeel + skintools + + + + search + lookandfeel + skintools + + + + remove + admin + spiderlog + + + + show + admin + stats + + + + edit + tools + task + + + + add + tools + task + + + + remove + tools + task + + + + runnow + tools + task + + + + log + tools + task + + + + view + admin + warnlog + + + + remove + admin + warnlog + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21003/ipb_settings_partial.xml new file mode 100644 index 00000000..3ccaaa08 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/ipb_settings_partial.xml @@ -0,0 +1,5674 @@ + + + + + 1 + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. + 0 + + + + 174 + Show link in header to guidelines? + + 17 + yes_no + gl_show + + 0 + + + 1 + 1 + + 0 + + 1 + boardguidelines + 0 + + + + 175 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 17 + input + gl_link + + + + + 1 + 2 + + 0 + + 1 + boardguidelines + 0 + + + + 176 + Title to use in header? + + 17 + input + gl_title + + + + + 1 + 3 + + 0 + + 1 + boardguidelines + 0 + + + + 177 + If not using external link; guidelines/rules text + HTML Enabled + 17 + textarea + gl_guidelines + + + + + 1 + 4 + + 0 + + 0 + boardguidelines + 0 + + + + 238 + + HTML ENABLED]]> + 17 + textarea + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 5 + + 1 + + 0 + boardguidelines + 0 + + + + 1 + boardoffline + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. + 0 + + + + 163 + Turn the board offline? + + 15 + yes_no + board_offline + + 0 + + + 1 + 1 + + 0 + + 1 + boardoffline + 0 + + + + 164 + The offline message to display + + 15 + textarea + offline_msg + + + + + 1 + 2 + + 0 + + 0 + boardoffline + 0 + + + + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + 0 + + + + 122 + Show birthdays on the main calendar view? + + 9 + yes_no + show_bday_calendar + + 1 + + + 1 + 1 + + 0 + + 1 + calendar + 0 + + + + 123 + + + 9 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 124 + Auto hide when no birthdays to show? + + 9 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 125 + Show forthcoming calendar events? + + 9 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 126 + Auto hide when no events to show? + + 9 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 127 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 9 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 128 + + This applies to view calendar / post event. + 9 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 129 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 9 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + 340 + + + 18 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + 0 + + + + 343 + Prohibit Display Names from selecting Log In names + + 18 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + 0 + + + + 184 + Log in with user name or email address? + Which identifiable piece of information do you wish to require your members to use when logging in? + 18 + dropdown + converge_login_method + + username + username=User Name +email=Email Address + + 1 + 5 + + 0 + + 1 + converge + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + 116 + Cookie Domain + .your-domain.com for global cookie]]> + 7 + input + cookie_domain + + + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 117 + Cookie Name Prefix + Allows multiple boards on one host. + 7 + input + cookie_id + + + + + 1 + 2 + + 0 + + 1 + cookies + 0 + + + + 118 + Cookie Path + Relative path from domain to root IBF dir + 7 + input + cookie_path + + + + + 1 + 3 + + 0 + + 1 + cookies + 0 + + + + 1 + coppa + COPPA Set-up + COPPA
      .]]> + 0 + + + + 119 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 8 + yes_no + use_coppa + + 0 + + + 1 + 1 + + 0 + + 1 + coppa + 0 + + + + 120 + Fax number to receive COPPA forms + + 8 + input + coppa_fax + + + + + 1 + 2 + + 0 + + 1 + coppa + 0 + + + + 121 + Mail address to receive COPPA forms + + 8 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + 24 + Allow custom profile field info be used in TopicView? + + 2 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 22 + Cache calendar and birthdays? + + 2 + yes_no + cache_calendar + + 1 + + + 1 + 2 + + 0 + 0 + 1 + cpusaving + 0 + + + + 20 + + + 2 + input + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 181 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 2 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 316 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 2 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 25 + Mark topics a user has posted when displaying a forum? + + 2 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 26 + + This save 1 query per forum view + 2 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + (This save 1 query per topic view) + 2 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 19 + Show Active Users + + 2 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 29 + Allow users (where allowed) to use search? + + 2 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 23 + Show Board Totals? + Show the board totals at the footer of the board index page. + 2 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 28 + Server Load Limit + Can be left blank for no limit]]> + 2 + input + load_limit + + + + + 1 + 10 + + 0 + 0 + 1 + cpusaving + 0 + + + + 32 + Print HTTP no-cache headers? + (This will stop browsers caching pages) + 2 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 30 + + Leave blank to return full post with proper formatting]]> + 2 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 2 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + 34 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 3 + dropdown + time_offset + + 0 + + $words ) + { + if (preg_match("/^time_(\\S+)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 35 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 3 + input + time_adjust + + 0 + + ipsclass->get_date(time(), 'LONG',1); +$r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ); +}]]> + 1 + 2 + + 1 + 0 + 1 + date + 0 + + + + 36 + Short time format + PHP Date]]> + 3 + input + clock_short + + jS F Y - h:i A + + + 1 + 3 + + 0 + 0 + 1 + date + 0 + + + + 37 + Join date time format + PHP Date]]> + 3 + input + clock_joined + + j-F y + + + 1 + 4 + + 0 + 0 + 1 + date + 0 + + + + 38 + Long time format + PHP Date]]> + 3 + input + clock_long + + M j Y, h:i A + + + 1 + 5 + + 0 + 0 + 1 + date + 0 + + + + 39 + Use relative dates? + + 3 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 40 + Relative time format + + 3 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 333 + DST Auto Detection + + 3 + yes_no + time_dst_auto_correction + + 1 + + + 1 + 8 + DST Correction + 1 + + 1 + date + 0 + + + + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + 135 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 12 + input + email_in + + + + + 1 + 1 + Email Addresses + 0 + + 1 + email + 0 + + + + 136 + Board outgoing email address + This is the email address that all mail appears to come from. + 12 + input + email_out + + + + + 1 + 2 + + 1 + + 1 + email + 0 + + + + 137 + Mail Delivery Method + + 12 + dropdown + mail_method + + mail + mail=PHP Mail() +smtp=SMTP + + 1 + 3 + + 0 + + 1 + email + 0 + + + + 138 + Over-ride SMTP Host? + + 12 + input + smtp_host + + localhost + + + 1 + 4 + SMTP Set-up + 0 + + 1 + email + 0 + + + + 139 + Over-ride SMTP Port? + Default is 25 + 12 + input + smtp_port + + 25 + + + 1 + 5 + + 0 + + 1 + email + 0 + + + + 187 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 12 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 140 + SMTP UserName + + 12 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 337 + PHP Mail Extra Options + + 12 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 + + + + 1 + general + General Configuration + These settings control the basics of the board such as URLs and paths. + 0 + + + + 4 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 1 + input + board_name + + Invision Power Board + + + 1 + 1 + + 0 + 0 + 1 + general + 0 + + + + 6 + Website Name + + 1 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 7 + Website Address + + 1 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 9 + Upload URL + + 1 + input + upload_url + + + + + 1 + 5 + Other URLs and Paths + 0 + 0 + 1 + general + 0 + + + + 11 + + This is a path, not a URL. + 1 + input + upload_dir + + + upload_dir + + 1 + 7 + + 0 + 0 + 1 + general + 0 + + + + 265 + Caching PATH + This can be left blank +
      This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
      + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 338 + Document character set + Enter the document character set for all HTML pages. + 1 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 264 + Image URL + This can be left blank +
      This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
      + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 12 + Print HTTP Headers? + + 1 + yes_no + print_headers + + 0 + + + 1 + 9 + + 1 + 0 + 1 + general + 0 + + + + 14 + Type of auto-redirect + + 1 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection + 0 + 0 + 1 + general + 0 + + + + 183 + + + 1 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 + + 1 + general + 0 + + + + 15 + Debug level + This controls the debug information shown at the footer of your board. + 1 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 13 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 1 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 16 + Enable SQL Debug Mode + + 1 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 17 + Use Safe Mode Skins? + + 1 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 + + + + 18 + Number Formatting + (EG: USA & UK use a comma)]]> + 1 + dropdown + number_format + + , + + + 1 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 345 + Decimal Seperator + Character used to seperate decimals in numbers. + 1 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 182 + GD Version + + 1 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 + + 0 + + 1 + general + 0 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + 202 + Chat Room Account Number (Group Name)? + Removing this number will remove all links / chat functionality within IPB. + + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + 0 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + + + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 203 + Chat Room URL? + ]]> + 21 + input + chat04_whodat_server_addr + + --Not currently required-- + + + 1 + 3 + + 1 + + 1 + chat04 + 0 + + + + 204 + + + 21 + yes_no + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + chat04 + 0 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 5 + + 0 + + 1 + chat04 + 0 + + + + 206 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. In minutes. + 21 + dropdown + chat04_who_save + + 2 + 2=2 +5=5 +10=10 +15=15 +30=30 + + 1 + 6 + + 1 + + 1 + chat04 + 0 + + + + 209 + Chat Room Dimensions (WIDTH)? + + 21 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat04 + 0 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat04 + 0 + + + + 255 + + + 21 + yes_no + chat04_plainmode + + 0 + + + 1 + 11 + + 0 + + 0 + chat04 + 0 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 12 + + 0 + + 1 + chat04 + 0 + + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 16 + Chat Room Style Options + 0 + + 0 + chat04 + 0 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
      <param name="cmd.BeepLeave" value="true"> +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 + textarea + chat04_customparams + + + + + 1 + 18 + + 0 + + 0 + chat04 + 0 +
      + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 19 + + 1 + + 0 + chat04 + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat + 0 + + + + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 190 + + + 20 + yes_no + chat_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + chat + 0 + + + + 191 + + + 20 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + chat + 0 + + + + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 + dropdown + chat_refresh_list + + 15 + 5=5 +10=10 +15=15 +30=30 + + 1 + 5 + + 1 + + 1 + chat + 0 + + + + 193 + Changed your IPChat control panel password? + + 20 + input + chat_pass_md5 + + + + + 1 + 6 + + 0 + + 1 + chat + 0 + + + + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 + input + chat_pass_md5_new + + + + + 1 + 7 + + 0 + + 1 + chat + 0 + + + + 195 + Chat Room Dimensions (WIDTH)? + + 20 + input + chat_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat + 0 + + + + 196 + Chat Room Dimensions (HEIGHT)? + + 20 + input + chat_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 + input + chat_poppad + + 50 + + + 1 + 10 + + 0 + + 1 + chat + 0 + + + + 198 + Default Chat Room Interface Language? + + 20 + dropdown + chat_language + + en + en=English +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese + + 1 + 11 + + 1 + + 1 + chat + 0 + + + + 200 + Allow chat access to these groups + You may select more than one + 20 + multi + chat_access_groups + + + #show_groups# + + 1 + 13 + Access Permissions + 0 + + 1 + chat + 0 + + + + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 + multi + chat_admin_groups + + + #show_groups# + + 1 + 14 + + 1 + + 1 + chat + 0 + + + + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 247 + Turn off copyright? + + 25 + yes_no + ips_cp_purchase + + 0 + + + 1 + 2 + + 0 + + 1 + ipbcopyright + 0 + + + + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on + + 1 + + + 1 + 1 + + 0 + + 1 + ipbportal + 0 + + + + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 0 + ipbportal + 0 + + + + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + ipbportal + 0 + + + + 227 + Show User / Guest Info box? + + 22 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + ipbportal + 0 + + + + 229 + Show search box? + + 22 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + ipbportal + 0 + + + + 230 + Enable skin selection choice dropdown? + + 22 + yes_no + csite_skinchange_show + + 1 + + + 1 + 15 + + 0 + + 0 + ipbportal + 0 + + + + 233 + Show Site Navigation Menu? + + 22 + yes_no + csite_nav_show + + 1 + + + 1 + 18 + + 0 + + 0 + ipbportal + 0 + + + + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

      {board_url} will convert into your board]]>
      + 22 + textarea + csite_nav_contents + + + + + 1 + 19 + + 0 + + 0 + ipbportal + 0 +
      + + + 235 + Show Affiliates / Favoured Sites box? + + 22 + yes_no + csite_fav_show + + 0 + + + 1 + 20 + + 0 + + 0 + ipbportal + 0 + + + + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 + textarea + csite_fav_contents + + + + + 1 + 21 + + 1 + + 0 + ipbportal + 0 + + + + 1 + ipbreg + IPB Registration + This section will allow you to edit your IPB registered licence settings. + 1 + + + + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + ipbreg + 0 + + + + 243 + Display registered to line? + + 24 + yes_no + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + ipbreg + 0 + + + + 244 + Show as licensed to... + Matthew Mecham
      , IPS, Inc.]]> + 24 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + ipbreg + 0 + + + + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + 130 + Export news topics from which forum? + + 10 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 131 + + + 10 + yes_no + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + 132 + Allow BBCode in messages? + + 11 + yes_no + msg_allow_code + + 1 + + + 1 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 133 + Allow HTML in messages? + + 11 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 134 + Max. number of messages to show per page when viewing message list + The default is 50. + 11 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 31 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + 218 + Forums to export articles from + You may select more than one. + 30 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 219 + Number of articles to show + + 30 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 224 + Number of topics to show + + 30 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 0 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + 165 + Enable the search engine spider recognition? + + 16 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 166 + Log all spider visits? + + 16 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 167 + Treat spider/bot as part of which group? + + 16 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 168 + Force spider/bot to use skin + + 16 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 169 + Show spider/bot in the active users list? + + 16 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 171 + Show spider as anonymous + + 16 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 172 + Spider Bot User-Agent + bot=Human Name format.(one per line)
      Example: googlebot=Google.com]]>
      + 16 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
      + + + 1 + searchsetup + Search Set-Up + + 0 + + + + 185 + Type of search to use? + +
      +]]>
      + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
      + + + 186 + Default Search Mode? + This setting will only take effect if using full text searching + 19 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 31 + Minimum search word length + + 19 + input + min_search_word + + 4 + min_search_word + + 1 + 13 + + 0 + 0 + 1 + searchsetup + 0 + + + + 334 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 19 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + 93 + Enable Script/Bot Flood Control? + + 6 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 1 + + 1 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 98 + Allow dynamic images? + + 6 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 331 + + + 6 + yes_no + login_change_key + + 0 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 99 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 6 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 332 + + + 6 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 100 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 6 + yes_no + match_browser + + 0 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 101 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 6 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 102 + Allow images to be posted? + Advanced programmers can force images to run as scripts. IBF limits damage by this method however. This should only be disabled as an extreme measure. + 6 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 103 + Allow flash movies in posts and avatars? + + 6 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 105 + New registration email validation? + + 6 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 106 + + + 6 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 107 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 6 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 108 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 6 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 109 + Disable new registrations? + + 6 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 111 + + Removes the ability for your members to report a post. + 6 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 112 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 6 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 113 + Allow users to browse the Active Users list? + + 6 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 114 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 6 + yes_no + disable_admin_anon + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 115 + Disable root admin group viewing online users IP address in online user list? + + 6 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + 63 + Number of topics per forum page + + 5 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 69 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 5 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 329 + Number of rating votes required to show + + 5 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 68 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 5 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 64 + + + 5 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 65 + Topic prefix for PINNED topics + + 5 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 66 + Topic prefix for MOVED topics + + 5 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 67 + Topic prefix for POLLS + + 5 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 335 + Topic Title Max Length + Maximum topic title length allowed. + 5 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 70 + Number of posts per topic page + + 5 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 179 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 5 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 178 + Default Topic View Mode + + 5 + dropdown + topicmode_default + + linear + linear=Standard +threaded=Outline +linearplus=Linear Plus + + 1 + 22 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 344 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 5 + multi + cannot_ignore_groups + + 4 + #show_groups# + + 1 + 23 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 71 + Order posts within a topic by + + 5 + dropdown + post_order_column + + pid + pid=Post ID +post_date=Post Date + + 1 + 24 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 72 + Order posts within a topic by + + 5 + dropdown + post_order_sort + + asc + asc=Ascending (0-9) +desc=Descending (9-0) + + 1 + 25 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 74 + Max. no. emoticons per post + + 5 + input + max_emos + + 10 + + + 1 + 40 + Making a Post + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 75 + Max. no. images per post + + 5 + input + max_images + + 10 + + + 1 + 41 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 76 + + + 5 + input + max_post_length + + 100 + + + 1 + 42 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 77 + Max. width of posted Flash movies (in pixels) + + 5 + input + max_w_flash + + 199 + + + 1 + 43 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 87 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 5 + input + post_wordwrap + + 80 + + + 1 + 45 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 73 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 5 + input + emo_per_row + + 3 + + + 1 + 46 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 330 + Allow members to use Rich Text Editing? + + 5 + yes_no + posting_allow_rte + + 1 + + + 1 + 47 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 317 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 5 + input + max_quotes_per_post + + 10 + + + 1 + 48 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 336 + + n
      minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 5 + input + post_merge_conc + + 10 + + + 1 + 49 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 84 + Stop Quote Embedding? + ..]]> + 5 + yes_no + strip_quotes + + 1 + + + 1 + 49 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 79 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 5 + input + img_ext + + gif,jpeg,jpg,png + + + 1 + 50 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 80 + Show uploaded images in post as images? + + 5 + yes_no + show_img_upload + + 1 + + + 1 + 60 + Attached Image Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 81 + Show thumbnail of attached image? + + 5 + yes_no + siu_thumb + + 1 + siu_thumb + + 1 + 61 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 180 + + + 5 + input + siu_width + + 100 + + + 1 + 62 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 83 + + + 5 + input + siu_height + + 100 + + + 1 + 63 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 85 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 + input + guest_name_pre + + Guest_ + + + 1 + 70 + Guest Username + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 86 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 + input + guest_name_suf + + _* + + + 1 + 71 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 88 + + + 5 + yes_no + poll_tags + + 1 + + + 1 + 80 + Poll Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 89 + Maximum number of poll choices allowed? + + 5 + input + max_poll_choices + + 20 + + + 1 + 81 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 90 + Allow members to view the results of a poll without losing their vote? + + 5 + yes_no + allow_result_view + + 1 + + + 1 + 82 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 237 + Allow poll creator to vote in own poll? + + 5 + yes_no + allow_creator_vote + + 1 + + + 1 + 83 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 92 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 5 + input + startpoll_cutoff + + 24 + + + 1 + 84 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + + + + 157 + Enable the trashcan? + + 14 + yes_no + forum_trash_can_enable + + 1 + + + 1 + 1 + + 0 + + 1 + trashcansetup + 0 + + + + 158 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 14 + dropdown + forum_trash_can_id + + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 159 + Use trashcan for ROOT administrators? + + 14 + yes_no + forum_trash_can_use_radmin + + 1 + + + 1 + 3 + + 0 + + 1 + trashcansetup + 0 + + + + 160 + Use trashcan for normal administrators? + + 14 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 + + + + 161 + Use trashcan for global moderators? + + 14 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 + + + + 162 + Use trashcan for forum moderators? + + 14 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 + + + + 1 + userprofiles + User Profiles + + 0 + + + + 41 + Allow members to choose skins? + + 4 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 42 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 4 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 43 + Maximum length (in bytes) for the location field entry + + 4 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 44 + Maximum length (in bytes) for the interests field entry + + 4 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 45 + Maximum length (in bytes) for user signatures + + 4 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 46 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 4 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 47 + Allow BBCode in signatures? + + 4 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 48 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 49 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
      Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
      + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
      + + + 53 + Allow the use of avatars? + + 4 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 54 + Allowed avatar image extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 55 + Allow users to use remote URL avatars? + + 4 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 56 + Max. file size for avatar uploads? (K) + + 4 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 57 + Maximum avatar dimensions + xHEIGHT)]]> + 4 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 58 + Default sizes for gallery avatars? + xHEIGHT)]]> + 4 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 59 + Number of columns for the avatar gallery? + + 4 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 51 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 52 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 4 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 60 + Allow GUESTS to view signatures? + + 4 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 61 + Allow GUESTS to view posted images? + + 4 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 62 + Allow GUESTS to view user avatars? + + 4 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + + + 1 + warnsetup + Warn Set-up + This section will allow you to set up the warning system. + 0 + + + + 142 + Enable the warning system? + + 13 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 143 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 13 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 144 + Maximum Warn Level + + 13 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 145 + Protected Groups + You may choose more than one.]]> + 13 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 146 + Allow all other non-protected groups to see their own warn level and reasons? + + 13 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 147 + Allow warnings to continue once the minimum or maximum has been reached? + + 13 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 148 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 13 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day a moderator can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 153 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 154 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 155 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 156 + Number of times per day a global moderator can warn a single member + + 13 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/mysql_updates.php b/upload/upgrade/installfiles/upg_21003/mysql_updates.php new file mode 100644 index 00000000..0b786656 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/mysql_updates.php @@ -0,0 +1,224 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/mysql_updates_1.php b/upload/upgrade/installfiles/upg_21003/mysql_updates_1.php new file mode 100644 index 00000000..1aec6adb --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/mysql_updates_1.php @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/mysql_updates_2.php b/upload/upgrade/installfiles/upg_21003/mysql_updates_2.php new file mode 100644 index 00000000..848f6128 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/mysql_updates_2.php @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/mysql_updates_3.php b/upload/upgrade/installfiles/upg_21003/mysql_updates_3.php new file mode 100644 index 00000000..53899a2a --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/mysql_updates_3.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/mysql_updates_4.php b/upload/upgrade/installfiles/upg_21003/mysql_updates_4.php new file mode 100644 index 00000000..589d84e0 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/mysql_updates_4.php @@ -0,0 +1,41 @@ +, '', 'a:3:{s:9:\"perm_read\";s:1:\"*\";s:9:\"perm_post\";s:3:\"4,3\";s:10:\"perm_nomod\";s:0:\"\";}');"; + +$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (1, 'IPB Internal', 'The standard method of authentication', 'internal', '', '', 'passthrough', '', <%time%>, 0, 1, 1, 1, 0, 1);"; +$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (2, 'LDAP Authentication', 'LDAP / Active Directory Authentication', 'ldap', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; +$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (3, 'External Database', 'Authentication via an external database', 'external', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; + +$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Update Topic Views Counter', 'updateviews.php', <%time%>, -1, -1, 3, -1, 'ddce954b5ba1c163bc627ca20725b595', 0, 'Used when topic views are not incremented immediately', 1, 'updateviews', 0, 0);"; +$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Subscription Expiration Notification', 'expiresubs.php', <%time%>, -1, -1, 1, 0, '21fa5f52cf9122c6fe940e1c6dac0b5a', 1, 'Sends out an email to all members who have a subscription due to expire', 1, 'expiresubs', 0, 0);"; +$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'RSS Import Update', 'rssimport.php', <%time%>, -1, -1, -1, 30, '8f17dc0ba334e5f18e762f154365a578', 0, 'Imports any new RSS articles', 1, 'rssimport', 1, 0);"; + +$SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Expire Paid Subscriptions', 'doexpiresubs.php', 1121212800, -1, -1, 0, 0, 'bb57399ea05eb9240b42d5d5f53575fb', 1, 'Unsubscribes members from their subscribed packages', 1, 'doexpiresubs', 1)"; + + +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (1, 'Invision Gallery', 'Invision Power Services', 'http://www.invisiongallery.com', '1.3.0', 1113309894, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'gallery', 'gallery', 'Complete gallery system for your members', '{ipb.lang[\'gallery\']}', '{ipb.base_url}act=module&module=gallery', 1);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (2, 'Invision Community Blog', 'Invision Power Services', 'http://www.invisionblog.com', '1.1.2', 1113310263, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'blog', 'blog', 'Blogging addition for your members', '{ipb.lang[\'blog\']}', '{ipb.base_url}automodule=blog', -1);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (3, 'Invision Chat (ParaChat)', 'Invision Power Services', 'http://chat.invisionsitetools.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatpara', 'chatpara', 'Full real-time chat system for your members', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatpara', 2);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (4, 'Invision Copyright Removal', 'Invision Power Services', 'http://www.invisionboard.com', '2.1', 1113314009, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 1, 1, 'copyright', 'copyright', 'Allows the copyright notices to be removed from the board\'s output', '', '', 3);"; + +$SQL[] ="DELETE FROM ibf_conf_settings WHERE conf_key IN ( 'csite_article_forum' , 'csite_article_max', 'csite_article_recent_on', + 'csite_article_recent_max', 'csite_article_len', 'csite_discuss_on', + 'csite_discuss_max' , 'csite_discuss_len', 'csite_poll_url', + 'csite_online_show', 'poll_disable_noreply' );"; + +# UPDATE KNOWN CONF_TITLE KEYS +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='general' WHERE conf_title_id=1"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='boardoffline' WHERE conf_title_id=15"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='calendar' WHERE conf_title_id=9"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='converge' WHERE conf_title_id=18"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='coppa' WHERE conf_title_id=8"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='cpusaving' WHERE conf_title_id=2"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='date' WHERE conf_title_id=3"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='email' WHERE conf_title_id=12"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='searchsetup' WHERE conf_title_id=19"; + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/version_history.php b/upload/upgrade/installfiles/upg_21003/version_history.php new file mode 100644 index 00000000..0eb4b0e4 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/version_history.php @@ -0,0 +1,26 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21003/version_upgrade.php b/upload/upgrade/installfiles/upg_21003/version_upgrade.php new file mode 100644 index 00000000..7211d8a5 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21003/version_upgrade.php @@ -0,0 +1,485 @@ + IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->install->saved_data['workact'] ) + { + case 'sql': + $this->upgrade_sql(1); + break; + case 'sql1': + $this->upgrade_sql(1); + break; + case 'sql2': + $this->upgrade_sql(2); + break; + case 'sql3': + $this->upgrade_sql(3); + break; + case 'sql4': + $this->upgrade_sql(4); + break; + case 'polls': + $this->convert_polls(); + break; + case 'calevents': + $this->convert_calevents(); + break; + case 'skin': + $this->add_skin(); + break; + + default: + $this->upgrade_sql(1); + break; + } + + if ( $this->install->saved_data['workact'] ) + { + return false; + } + else + { + return true; + } + } + + + /*-------------------------------------------------------------------------*/ + // SQL: 0 + /*-------------------------------------------------------------------------*/ + + function upgrade_sql( $id=1 ) + { + $man = 0; // Manual upgrade ? intval( $this->install->ipsclass->input['man'] ); + $cnt = 0; + $SQL = array(); + $file = '_updates_'.$id.'.php'; + $output = ""; + + if ( file_exists( ROOT_PATH . 'upgrade/installfiles/upg_21003/' . strtolower($this->install->ipsclass->vars['sql_driver']) . $file ) ) + { + require_once( ROOT_PATH . 'upgrade/installfiles/upg_21003/' . strtolower($this->install->ipsclass->vars['sql_driver']) . $file ); + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $query = str_replace( "<%time%>", time(), $query ); + + if( $this->install->saved_data['man'] AND !in_array( $id, array(3,4) ) ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "$this->sqlcount queries run...."; + } + + //-------------------------------- + // Next page... + //-------------------------------- + + $this->install->saved_data['st'] = 0; + + if ( $id != 4 ) + { + $nextid = $id + 1; + $this->install->saved_data['workact'] = 'sql'.$nextid; + } + else + { + $this->install->saved_data['workact'] = 'polls'; + } + + if( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // POLLS + /*-------------------------------------------------------------------------*/ + + function convert_polls() + { + $start = intval($this->install->saved_data['st']) > 0 ? intval($this->install->saved_data['st']) : 0; + $lend = 50; + $end = $start + $lend; + $max = intval($this->install->saved_data['max']); + $converted = intval($this->install->saved_data['conv']); + + //----------------------------------------- + // First off.. grab number of polls to convert + //----------------------------------------- + + if ( ! $max ) + { + $total = $this->install->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as max', + 'from' => 'topics', + 'where' => "poll_state IN ('open', 'close', 'closed')" ) ); + + $max = $total['max']; + } + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'topics', + 'where' => "poll_state IN ('open', 'close', 'closed' )", + 'limit' => array( 0, $lend ) ) ); + $o = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows($o) ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + $converted++; + + $new_poll = array( 1 => array() ); + + $poll_data = $this->install->ipsclass->DB->build_and_exec_query( array( 'select' => '*', + 'from' => 'polls', + 'where' => "tid=".$r['tid'] + ) ); + if ( ! $poll_data['pid'] ) + { + continue; + } + + if ( ! $poll_data['poll_question'] ) + { + $poll_data['poll_question'] = $r['title']; + } + + //----------------------------------------- + // Kick start new poll + //----------------------------------------- + + $new_poll[1]['question'] = $poll_data['poll_question']; + + //----------------------------------------- + // Get OLD polls + //----------------------------------------- + + $poll_answers = unserialize( stripslashes( $poll_data['choices'] ) ); + + reset($poll_answers); + + foreach ( $poll_answers as $entry ) + { + $id = $entry[0]; + $choice = $entry[1]; + $votes = $entry[2]; + + $total_votes += $votes; + + if ( strlen($choice) < 1 ) + { + continue; + } + + $new_poll[ 1 ]['choice'][ $id ] = $choice; + $new_poll[ 1 ]['votes'][ $id ] = $votes; + } + + //----------------------------------------- + // Got something? + //----------------------------------------- + + if ( count( $new_poll[1]['choice'] ) ) + { + $this->install->ipsclass->DB->do_update( 'polls' , array( 'choices' => serialize( $new_poll ) ), 'tid='.$r['tid'] ); + $this->install->ipsclass->DB->do_update( 'topics', array( 'poll_state' => 1 ), 'tid='.$r['tid'] ); + } + + //----------------------------------------- + // All done? + //----------------------------------------- + + if ( $converted >= $max ) + { + $done = 1; + continue; + } + } + } + else + { + $done = 1; + } + + + if ( ! $done ) + { + $this->install->message = "Polls: $start to $end completed...."; + $this->install->saved_data['workact'] = 'polls'; + $this->install->saved_data['st'] = $end; + $this->install->saved_data['max'] = $max; + $this->install->saved_data['conv'] = $converted; + return FALSE; + } + else + { + $this->install->message = "Polls converted, proceeding to calendar events..."; + $this->install->saved_data['workact'] = 'calevents'; + return FALSE; + } + } + + + /*-------------------------------------------------------------------------*/ + // CALENDAR EVENTS + /*-------------------------------------------------------------------------*/ + + function convert_calevents() + { + $start = intval($this->install->saved_data['st']) > 0 ? intval($this->install->saved_data['st']) : 0; + $lend = 50; + $end = $start + $lend; + + //----------------------------------------- + // In steps... + //----------------------------------------- + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'calendar_events', + 'limit' => array( $start, $lend ) ) ); + $o = $this->install->ipsclass->DB->simple_exec(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows($o) ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while ( $r = $this->install->ipsclass->DB->fetch_row($o) ) + { + $recur_remap = array( 'w' => 1, + 'm' => 2, + 'y' => 3 ); + + $begin_date = $this->install->ipsclass->date_getgmdate( $r['unix_stamp'] ); + $end_date = $this->install->ipsclass->date_getgmdate( $r['end_unix_stamp'] ); + + if ( ! $begin_date OR ! $end_date ) + { + continue; + } + + $day = $begin_date['mday']; + $month = $begin_date['mon']; + $year = $begin_date['year']; + + $end_day = $end_date['mday']; + $end_month = $end_date['mon']; + $end_year = $end_date['year']; + + $_final_unix_from = gmmktime(0, 0, 0, $month, $day, $year ); + + //----------------------------------------- + // Recur or ranged... + //----------------------------------------- + + if ( $r['event_repeat'] OR $r['event_ranged'] ) + { + $_final_unix_to = gmmktime(23, 59, 59, $end_month, $end_day, $end_year); + } + else + { + $_final_unix_to = 0; + } + + $new_event = array( 'event_calendar_id' => 1, + 'event_member_id' => $r['userid'], + 'event_content' => $r['event_text'], + 'event_title' => $r['title'], + 'event_smilies' => $r['show_emoticons'], + 'event_perms' => $r['read_perms'], + 'event_private' => $r['priv_event'], + 'event_approved' => 1, + 'event_unixstamp' => $r['unix_stamp'], + 'event_recurring' => ( $r['event_repeat'] && $recur_remap[ $r['repeat_unit'] ] ) ? $recur_remap[ $r['repeat_unit'] ] : 0, + 'event_tz' => 0, + 'event_unix_from' => $_final_unix_from, + 'event_unix_to' => $_final_unix_to ); + + //----------------------------------------- + // INSERT + //----------------------------------------- + + $this->install->ipsclass->DB->do_insert( 'cal_events', $new_event ); + } + + $this->install->message = "Calendar events: $start to $end completed...."; + $this->install->saved_data['workact'] = 'calevents'; + $this->install->saved_data['st'] = $end; + return FALSE; + } + else + { + $this->install->message = "Calendar events converted, Creating new IPB 2.1 skin..."; + $this->install->saved_data['workact'] = 'skin'; + return FALSE; + } + } + + + + /*-------------------------------------------------------------------------*/ + // CALENDAR EVENTS + /*-------------------------------------------------------------------------*/ + + function add_skin() + { + //----------------------------------------- + // Get default wrapper + //----------------------------------------- + + if ( file_exists( ROOT_PATH.'upgrade/installfiles/upg_21003/components.php' ) ) + { + require_once( ROOT_PATH.'upgrade/installfiles/upg_21003/components.php' ); + } + + //----------------------------------------- + // Turn off all other skins + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_sets', array( 'set_default' => 0 ) ); + + //----------------------------------------- + // Insert new skin... + //----------------------------------------- + + $this->install->ipsclass->DB->return_die = 1; + $this->install->ipsclass->DB->allow_sub_select = 1; + + $this->install->ipsclass->DB->do_insert( 'skin_sets', array( + 'set_name' => 'IPB 2.1 Default', + 'set_image_dir' => 1, + 'set_hidden' => 0, + 'set_default' => 1, + 'set_css_method' => 0, + 'set_skin_set_parent' => -1, + 'set_author_email' => '', + 'set_author_name' => 'IPB 2.1 Default', + 'set_author_url' => '', + 'set_css' => $CSS, + 'set_cache_css' => $CSS, + 'set_wrapper' => $WRAPPER, + 'set_cache_wrapper' => $WRAPPER, + 'set_emoticon_folder' => 'default', + ) ); + + $new_id = $this->install->ipsclass->DB->get_insert_id(); + + //----------------------------------------- + // Remove member's choice + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'members', array( 'skin' => '' ) ); + + //----------------------------------------- + // Done... + //----------------------------------------- + + $this->install->message = "2.1 skin created..."; + unset($this->install->saved_data['workact']); + unset($this->install->saved_data['vid']); + + return TRUE; + } + + + + + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21004/ipb_acpperms.xml b/upload/upgrade/installfiles/upg_21004/ipb_acpperms.xml new file mode 100644 index 00000000..abb54960 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21004/ipb_acpperms.xml @@ -0,0 +1,845 @@ + + + + + recache + tools + admin + + + + remove + admin + adminlog + + + + add + content + attach + + + + edit + content + attach + + + + remove + content + attach + + + + export + content + attach + + + + import + content + attach + + + + stats + content + attach + + + + search + content + attach + + + + bw-add + content + babw + + + + bw-remove + content + babw + + + + bw-edit + content + babw + + + + bw-export + content + babw + + + + bw-import + content + babw + + + + ban-view + content + babw + + + + ban-add + content + babw + + + + ban-remove + content + babw + + + + add + content + bbcode + + + + edit + content + bbcode + + + + remove + content + bbcode + + + + export + content + bbcode + + + + import + content + bbcode + + + + remove + content + calendars + + + + add + content + calendars + + + + edit + content + calendars + + + + recache + content + calendars + + + + add + admin + components + + + + edit + admin + components + + + + export + admin + components + + + + import + admin + components + + + + remove + admin + emailerror + + + + remove + admin + emaillog + + + + export + lookandfeel + emoticons + + + + import + lookandfeel + emoticons + + + + edit + lookandfeel + emoticons + + + + add + lookandfeel + emoticons + + + + remove + lookandfeel + emoticons + + + + upload + lookandfeel + emoticons + + + + add + content + forum + + + + edit + content + forum + + + + permedit + content + forum + + + + reorder + content + forum + + + + remove + content + forum + + + + recount + content + forum + + + + empty + content + forum + + + + rules + content + forum + + + + skin + content + forum + + + + add + content + group + + + + edit + content + group + + + + remove + content + group + + + + perms + content + group + + + + edit + tools + help + + + + add + tools + help + + + + remove + tools + help + + + + add + lookandfeel + lang + + + + edit + lookandfeel + lang + + + + remove + lookandfeel + lang + + + + export + lookandfeel + lang + + + + import + lookandfeel + lang + + + + add + tools + loginauth + + + + edit + tools + loginauth + + + + diagnostics + tools + loginauth + + + + export + tools + loginauth + + + + import + tools + loginauth + + + + edit + content + mem + + + + suspend + content + mem + + + + add + content + mem + + + + remove + content + mem + + + + title-view + content + mem + + + + title-edit + content + mem + + + + title-add + content + mem + + + + title-remove + content + mem + + + + mod + content + mem + + + + ban + content + mem + + + + view + content + mtools + + + + add + content + mod + + + + edit + content + mod + + + + remove + content + mod + + + + remove + admin + modlog + + + + add + content + multimod + + + + edit + content + multimod + + + + remove + content + multimod + + + + install + content + msubs + + + + edit + content + msubs + + + + remove + content + msubs + + + + add + content + msubs + + + + search + content + msubs + + + + edit + tools + portal + + + + add + tools + postoffice + + + + edit + tools + postoffice + + + + send + tools + postoffice + + + + remove + tools + postoffice + + + + add + content + field + + + + edit + content + field + + + + remove + content + field + + + + recount + tools + rebuild + + + + rebuild + tools + rebuild + + + + add + content + rssexport + + + + edit + content + rssexport + + + + recache + content + rssexport + + + + remove + content + rssexport + + + + add + content + rssimport + + + + edit + content + rssimport + + + + recache + content + rssimport + + + + remove + content + rssimport + + + + edit + tools + op + + + + remove + tools + op + + + + add + tools + op + + + + export + tools + op + + + + search + tools + op + + + + import + tools + op + + + + edit + lookandfeel + style + + + + rundiff + lookandfeel + skindiff + + + + export + lookandfeel + skindiff + + + + remove + lookandfeel + skindiff + + + + export + lookandfeel + import + + + + import + lookandfeel + import + + + + edit + lookandfeel + image + + + + remove + lookandfeel + image + + + + add + lookandfeel + image + + + + add + lookandfeel + sets + + + + edit + lookandfeel + sets + + + + remove + lookandfeel + sets + + + + rebuild + lookandfeel + sets + + + + edit + lookandfeel + templ + + + + remove + lookandfeel + templ + + + + add + lookandfeel + templ + + + + edit + lookandfeel + wrap + + + + recache + lookandfeel + skintools + + + + changemember + lookandfeel + skintools + + + + search + lookandfeel + skintools + + + + remove + admin + spiderlog + + + + show + admin + stats + + + + edit + tools + task + + + + add + tools + task + + + + remove + tools + task + + + + runnow + tools + task + + + + log + tools + task + + + + view + admin + warnlog + + + + remove + admin + warnlog + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21004/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21004/ipb_settings_partial.xml new file mode 100644 index 00000000..3e418647 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21004/ipb_settings_partial.xml @@ -0,0 +1,5649 @@ + + + + + 1 + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. + 0 + + + + 174 + Show link in header to guidelines? + + 17 + yes_no + gl_show + + 0 + + + 1 + 1 + + 0 + + 1 + boardguidelines + 0 + + + + 175 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 17 + input + gl_link + + + + + 1 + 2 + + 0 + + 1 + boardguidelines + 0 + + + + 176 + Title to use in header? + + 17 + input + gl_title + + + + + 1 + 3 + + 0 + + 1 + boardguidelines + 0 + + + + 177 + If not using external link; guidelines/rules text + HTML Enabled + 17 + textarea + gl_guidelines + + + + + 1 + 4 + + 0 + + 0 + boardguidelines + 0 + + + + 238 + + HTML ENABLED]]> + 17 + textarea + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 5 + + 1 + + 0 + boardguidelines + 0 + + + + 1 + boardoffline + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. + 0 + + + + 163 + Turn the board offline? + + 15 + yes_no + board_offline + + 0 + + + 1 + 1 + + 0 + + 1 + boardoffline + 0 + + + + 164 + The offline message to display + + 15 + textarea + offline_msg + + + + + 1 + 2 + + 0 + + 0 + boardoffline + 0 + + + + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + 0 + + + + 122 + Show birthdays on the main calendar view? + + 9 + yes_no + show_bday_calendar + + 1 + + + 1 + 1 + + 0 + + 1 + calendar + 0 + + + + 123 + + + 9 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 124 + Auto hide when no birthdays to show? + + 9 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 125 + Show forthcoming calendar events? + + 9 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 126 + Auto hide when no events to show? + + 9 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 127 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 9 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 128 + + This applies to view calendar / post event. + 9 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 129 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 9 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + 340 + + + 18 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + 0 + + + + 343 + Prohibit Display Names from selecting Log In names + + 18 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + 0 + + + + 184 + Log in with user name or email address? + Which identifiable piece of information do you wish to require your members to use when logging in? + 18 + dropdown + converge_login_method + + username + username=User Name +email=Email Address + + 1 + 5 + + 0 + + 1 + converge + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + 116 + Cookie Domain + .your-domain.com for global cookie]]> + 7 + input + cookie_domain + + + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 117 + Cookie Name Prefix + Allows multiple boards on one host. + 7 + input + cookie_id + + + + + 1 + 2 + + 0 + + 1 + cookies + 0 + + + + 118 + Cookie Path + Relative path from domain to root IBF dir + 7 + input + cookie_path + + + + + 1 + 3 + + 0 + + 1 + cookies + 0 + + + + 1 + coppa + COPPA Set-up + COPPA.]]> + 0 + + + + 119 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 8 + yes_no + use_coppa + + 0 + + + 1 + 1 + + 0 + + 1 + coppa + 0 + + + + 120 + Fax number to receive COPPA forms + + 8 + input + coppa_fax + + + + + 1 + 2 + + 0 + + 1 + coppa + 0 + + + + 121 + Mail address to receive COPPA forms + + 8 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + 24 + Allow custom profile field info be used in TopicView? + + 2 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 22 + Cache calendar and birthdays? + + 2 + yes_no + cache_calendar + + 1 + + + 1 + 2 + + 0 + 0 + 1 + cpusaving + 0 + + + + 20 + + + 2 + input + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 181 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 2 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 316 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 2 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 25 + Mark topics a user has posted when displaying a forum? + + 2 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 26 + + This save 1 query per forum view + 2 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + (This save 1 query per topic view) + 2 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 19 + Show Active Users + + 2 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 29 + Allow users (where allowed) to use search? + + 2 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 23 + Show Board Totals? + Show the board totals at the footer of the board index page. + 2 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 28 + Server Load Limit + Can be left blank for no limit]]> + 2 + input + load_limit + + + + + 1 + 10 + + 0 + 0 + 1 + cpusaving + 0 + + + + 32 + Print HTTP no-cache headers? + (This will stop browsers caching pages) + 2 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 30 + + Leave blank to return full post with proper formatting]]> + 2 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 2 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + 34 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 3 + dropdown + time_offset + + 0 + + $words ) + { + if (preg_match("/^time_(\\S+)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 35 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 3 + input + time_adjust + + 0 + + ipsclass->get_date(time(), 'LONG',1); +$r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ); +}]]> + 1 + 2 + + 1 + 0 + 1 + date + 0 + + + + 36 + Short time format + PHP Date]]> + 3 + input + clock_short + + jS F Y - h:i A + + + 1 + 3 + + 0 + 0 + 1 + date + 0 + + + + 37 + Join date time format + PHP Date]]> + 3 + input + clock_joined + + j-F y + + + 1 + 4 + + 0 + 0 + 1 + date + 0 + + + + 38 + Long time format + PHP Date]]> + 3 + input + clock_long + + M j Y, h:i A + + + 1 + 5 + + 0 + 0 + 1 + date + 0 + + + + 39 + Use relative dates? + + 3 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 40 + Relative time format + + 3 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 333 + DST Auto Detection + + 3 + yes_no + time_dst_auto_correction + + 1 + + + 1 + 8 + DST Correction + 1 + + 1 + date + 0 + + + + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + 135 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 12 + input + email_in + + + + + 1 + 1 + Email Addresses + 0 + + 1 + email + 0 + + + + 136 + Board outgoing email address + This is the email address that all mail appears to come from. + 12 + input + email_out + + + + + 1 + 2 + + 1 + + 1 + email + 0 + + + + 137 + Mail Delivery Method + + 12 + dropdown + mail_method + + mail + mail=PHP Mail() +smtp=SMTP + + 1 + 3 + + 0 + + 1 + email + 0 + + + + 138 + Over-ride SMTP Host? + + 12 + input + smtp_host + + localhost + + + 1 + 4 + SMTP Set-up + 0 + + 1 + email + 0 + + + + 139 + Over-ride SMTP Port? + Default is 25 + 12 + input + smtp_port + + 25 + + + 1 + 5 + + 0 + + 1 + email + 0 + + + + 187 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 12 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 140 + SMTP UserName + + 12 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 337 + PHP Mail Extra Options + + 12 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 + + + + 1 + general + General Configuration + These settings control the basics of the board such as URLs and paths. + 0 + + + + 4 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 1 + input + board_name + + Invision Power Board + + + 1 + 1 + + 0 + 0 + 1 + general + 0 + + + + 6 + Website Name + + 1 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 7 + Website Address + + 1 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 9 + Upload URL + + 1 + input + upload_url + + + + + 1 + 5 + Other URLs and Paths + 0 + 0 + 1 + general + 0 + + + + 11 + + This is a path, not a URL. + 1 + input + upload_dir + + + upload_dir + + 1 + 7 + + 0 + 0 + 1 + general + 0 + + + + 265 + Caching PATH + This can be left blank +
      This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
      + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 338 + Document character set + Enter the document character set for all HTML pages. + 1 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 264 + Image URL + This can be left blank +
      This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
      + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 12 + Print HTTP Headers? + + 1 + yes_no + print_headers + + 0 + + + 1 + 9 + + 1 + 0 + 1 + general + 0 + + + + 14 + Type of auto-redirect + + 1 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection + 0 + 0 + 1 + general + 0 + + + + 183 + + + 1 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 + + 1 + general + 0 + + + + 15 + Debug level + This controls the debug information shown at the footer of your board. + 1 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 13 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 1 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 16 + Enable SQL Debug Mode + + 1 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 17 + Use Safe Mode Skins? + + 1 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 + + + + 18 + Number Formatting + (EG: USA & UK use a comma)]]> + 1 + dropdown + number_format + + , + + + 1 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 345 + Decimal Seperator + Character used to seperate decimals in numbers. + 1 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 182 + GD Version + + 1 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 + + 0 + + 1 + general + 0 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + 202 + Chat Room Account Number (Group Name)? + Removing this number will remove all links / chat functionality within IPB. + + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + 0 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + + + + 1 + 2 + + 1 + + 1 + chat04 + 0 + + + + 204 + + + 21 + yes_no + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + chat04 + 0 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 5 + + 1 + + 1 + chat04 + 0 + + + + 209 + Chat Room Dimensions (WIDTH)? + + 21 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat04 + 0 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat04 + 0 + + + + 255 + + + 21 + yes_no + chat04_plainmode + + 0 + + + 1 + 11 + + 0 + + 0 + chat04 + 0 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 12 + + 0 + + 1 + chat04 + 0 + + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 16 + Chat Room Style Options + 0 + + 0 + chat04 + 0 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
      <param name="cmd.BeepLeave" value="true"> +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 + textarea + chat04_customparams + + + + + 1 + 18 + + 0 + + 0 + chat04 + 0 +
      + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 19 + + 1 + + 0 + chat04 + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat + 0 + + + + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 190 + + + 20 + yes_no + chat_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + chat + 0 + + + + 191 + + + 20 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + chat + 0 + + + + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 + dropdown + chat_refresh_list + + 15 + 5=5 +10=10 +15=15 +30=30 + + 1 + 5 + + 1 + + 1 + chat + 0 + + + + 193 + Changed your IPChat control panel password? + + 20 + input + chat_pass_md5 + + + + + 1 + 6 + + 0 + + 1 + chat + 0 + + + + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 + input + chat_pass_md5_new + + + + + 1 + 7 + + 0 + + 1 + chat + 0 + + + + 195 + Chat Room Dimensions (WIDTH)? + + 20 + input + chat_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat + 0 + + + + 196 + Chat Room Dimensions (HEIGHT)? + + 20 + input + chat_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 + input + chat_poppad + + 50 + + + 1 + 10 + + 0 + + 1 + chat + 0 + + + + 198 + Default Chat Room Interface Language? + + 20 + dropdown + chat_language + + en + en=English +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese + + 1 + 11 + + 1 + + 1 + chat + 0 + + + + 200 + Allow chat access to these groups + You may select more than one + 20 + multi + chat_access_groups + + + #show_groups# + + 1 + 13 + Access Permissions + 0 + + 1 + chat + 0 + + + + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 + multi + chat_admin_groups + + + #show_groups# + + 1 + 14 + + 1 + + 1 + chat + 0 + + + + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 247 + Turn off copyright? + + 25 + yes_no + ips_cp_purchase + + 0 + + + 1 + 2 + + 0 + + 1 + ipbcopyright + 0 + + + + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on + + 1 + + + 1 + 1 + + 0 + + 1 + ipbportal + 0 + + + + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 0 + ipbportal + 0 + + + + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + ipbportal + 0 + + + + 227 + Show User / Guest Info box? + + 22 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + ipbportal + 0 + + + + 229 + Show search box? + + 22 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + ipbportal + 0 + + + + 230 + Enable skin selection choice dropdown? + + 22 + yes_no + csite_skinchange_show + + 1 + + + 1 + 15 + + 0 + + 0 + ipbportal + 0 + + + + 233 + Show Site Navigation Menu? + + 22 + yes_no + csite_nav_show + + 1 + + + 1 + 18 + + 0 + + 0 + ipbportal + 0 + + + + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

      {board_url} will convert into your board]]>
      + 22 + textarea + csite_nav_contents + + + + + 1 + 19 + + 0 + + 0 + ipbportal + 0 +
      + + + 235 + Show Affiliates / Favoured Sites box? + + 22 + yes_no + csite_fav_show + + 0 + + + 1 + 20 + + 0 + + 0 + ipbportal + 0 + + + + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 + textarea + csite_fav_contents + + + + + 1 + 21 + + 1 + + 0 + ipbportal + 0 + + + + 1 + ipbreg + IPB Registration + This section will allow you to edit your IPB registered licence settings. + 1 + + + + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + ipbreg + 0 + + + + 243 + Display registered to line? + + 24 + yes_no + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + ipbreg + 0 + + + + 244 + Show as licensed to... + Matthew Mecham
      , IPS, Inc.]]> + 24 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + ipbreg + 0 + + + + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + 130 + Export news topics from which forum? + + 10 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 131 + + + 10 + yes_no + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + 132 + Allow BBCode in messages? + + 11 + yes_no + msg_allow_code + + 1 + + + 1 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 133 + Allow HTML in messages? + + 11 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 134 + Max. number of messages to show per page when viewing message list + The default is 50. + 11 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 31 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + 218 + Forums to export articles from + You may select more than one. + 30 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 219 + Number of articles to show + + 30 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 224 + Number of topics to show + + 30 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 0 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + 165 + Enable the search engine spider recognition? + + 16 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 166 + Log all spider visits? + + 16 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 167 + Treat spider/bot as part of which group? + + 16 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 168 + Force spider/bot to use skin + + 16 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 169 + Show spider/bot in the active users list? + + 16 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 171 + Show spider as anonymous + + 16 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 172 + Spider Bot User-Agent + bot=Human Name format.(one per line)
      Example: googlebot=Google.com]]>
      + 16 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
      + + + 1 + searchsetup + Search Set-Up + + 0 + + + + 185 + Type of search to use? + +
      +]]>
      + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
      + + + 186 + Default Search Mode? + This setting will only take effect if using full text searching + 19 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 31 + Minimum search word length + + 19 + input + min_search_word + + 4 + min_search_word + + 1 + 13 + + 0 + 0 + 1 + searchsetup + 0 + + + + 334 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 19 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + 93 + Enable Script/Bot Flood Control? + + 6 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 1 + + 1 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 98 + Allow dynamic images? + + 6 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 331 + + + 6 + yes_no + login_change_key + + 0 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 99 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 6 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 332 + + + 6 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 100 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 6 + yes_no + match_browser + + 0 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 101 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 6 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 102 + Allow images to be posted? + Advanced programmers can force images to run as scripts. IBF limits damage by this method however. This should only be disabled as an extreme measure. + 6 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 103 + Allow flash movies in posts and avatars? + + 6 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 105 + New registration email validation? + + 6 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 106 + + + 6 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 107 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 6 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 108 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 6 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 109 + Disable new registrations? + + 6 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 111 + + Removes the ability for your members to report a post. + 6 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 112 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 6 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 113 + Allow users to browse the Active Users list? + + 6 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 114 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 6 + yes_no + disable_admin_anon + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 115 + Disable root admin group viewing online users IP address in online user list? + + 6 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + 63 + Number of topics per forum page + + 5 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 69 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 5 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 329 + Number of rating votes required to show + + 5 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 68 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 5 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 64 + + + 5 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 65 + Topic prefix for PINNED topics + + 5 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 66 + Topic prefix for MOVED topics + + 5 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 67 + Topic prefix for POLLS + + 5 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 335 + Topic Title Max Length + Maximum topic title length allowed. + 5 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 70 + Number of posts per topic page + + 5 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 179 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 5 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 178 + Default Topic View Mode + + 5 + dropdown + topicmode_default + + linear + linear=Standard +threaded=Outline +linearplus=Linear Plus + + 1 + 22 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 344 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 5 + multi + cannot_ignore_groups + + 4 + #show_groups# + + 1 + 23 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 71 + Order posts within a topic by + + 5 + dropdown + post_order_column + + pid + pid=Post ID +post_date=Post Date + + 1 + 24 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 72 + Order posts within a topic by + + 5 + dropdown + post_order_sort + + asc + asc=Ascending (0-9) +desc=Descending (9-0) + + 1 + 25 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 74 + Max. no. emoticons per post + + 5 + input + max_emos + + 10 + + + 1 + 40 + Making a Post + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 75 + Max. no. images per post + + 5 + input + max_images + + 10 + + + 1 + 41 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 76 + + + 5 + input + max_post_length + + 100 + + + 1 + 42 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 77 + Max. width of posted Flash movies (in pixels) + + 5 + input + max_w_flash + + 199 + + + 1 + 43 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 87 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 5 + input + post_wordwrap + + 80 + + + 1 + 45 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 73 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 5 + input + emo_per_row + + 3 + + + 1 + 46 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 330 + Allow members to use Rich Text Editing? + + 5 + yes_no + posting_allow_rte + + 1 + + + 1 + 47 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 317 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 5 + input + max_quotes_per_post + + 10 + + + 1 + 48 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 336 + + n
      minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 5 + input + post_merge_conc + + 10 + + + 1 + 49 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 84 + Stop Quote Embedding? + ..]]> + 5 + yes_no + strip_quotes + + 1 + + + 1 + 49 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 79 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 5 + input + img_ext + + gif,jpeg,jpg,png + + + 1 + 50 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 80 + Show uploaded images in post as images? + + 5 + yes_no + show_img_upload + + 1 + + + 1 + 60 + Attached Image Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 81 + Show thumbnail of attached image? + + 5 + yes_no + siu_thumb + + 1 + siu_thumb + + 1 + 61 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 180 + + + 5 + input + siu_width + + 100 + + + 1 + 62 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 83 + + + 5 + input + siu_height + + 100 + + + 1 + 63 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 85 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 + input + guest_name_pre + + Guest_ + + + 1 + 70 + Guest Username + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 86 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 + input + guest_name_suf + + _* + + + 1 + 71 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 88 + + + 5 + yes_no + poll_tags + + 1 + + + 1 + 80 + Poll Options + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 347 + Max. Poll Questions Per Poll + Enter the maximum number of questions you wish to allow your members to create in a single poll. + 5 + input + max_poll_questions + + 3 + + + 1 + 81 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 89 + Maximum number of poll choices allowed? + + 5 + input + max_poll_choices + + 20 + + + 1 + 81 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 90 + Allow members to view the results of a poll without losing their vote? + + 5 + yes_no + allow_result_view + + 1 + + + 1 + 82 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 237 + Allow poll creator to vote in own poll? + + 5 + yes_no + allow_creator_vote + + 1 + + + 1 + 83 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 92 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 5 + input + startpoll_cutoff + + 24 + + + 1 + 84 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + + + + 157 + Enable the trashcan? + + 14 + yes_no + forum_trash_can_enable + + 1 + + + 1 + 1 + + 0 + + 1 + trashcansetup + 0 + + + + 158 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 14 + dropdown + forum_trash_can_id + + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 159 + Use trashcan for ROOT administrators? + + 14 + yes_no + forum_trash_can_use_radmin + + 1 + + + 1 + 3 + + 0 + + 1 + trashcansetup + 0 + + + + 160 + Use trashcan for normal administrators? + + 14 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 + + + + 161 + Use trashcan for global moderators? + + 14 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 + + + + 162 + Use trashcan for forum moderators? + + 14 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 + + + + 1 + userprofiles + User Profiles + + 0 + + + + 41 + Allow members to choose skins? + + 4 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 42 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 4 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 43 + Maximum length (in bytes) for the location field entry + + 4 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 44 + Maximum length (in bytes) for the interests field entry + + 4 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 45 + Maximum length (in bytes) for user signatures + + 4 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 46 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 4 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 47 + Allow BBCode in signatures? + + 4 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 48 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 49 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
      Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
      + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
      + + + 53 + Allow the use of avatars? + + 4 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 54 + Allowed avatar image extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 55 + Allow users to use remote URL avatars? + + 4 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 56 + Max. file size for avatar uploads? (K) + + 4 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 57 + Maximum avatar dimensions + xHEIGHT)]]> + 4 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 58 + Default sizes for gallery avatars? + xHEIGHT)]]> + 4 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 59 + Number of columns for the avatar gallery? + + 4 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 51 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 52 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 4 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 60 + Allow GUESTS to view signatures? + + 4 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 61 + Allow GUESTS to view posted images? + + 4 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 62 + Allow GUESTS to view user avatars? + + 4 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + + + 1 + warnsetup + Warn Set-up + This section will allow you to set up the warning system. + 0 + + + + 142 + Enable the warning system? + + 13 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 143 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 13 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 144 + Maximum Warn Level + + 13 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 145 + Protected Groups + You may choose more than one.]]> + 13 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 146 + Allow all other non-protected groups to see their own warn level and reasons? + + 13 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 147 + Allow warnings to continue once the minimum or maximum has been reached? + + 13 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 148 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 13 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day a moderator can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 153 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 154 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 155 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 156 + Number of times per day a global moderator can warn a single member + + 13 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21004/version_history.php b/upload/upgrade/installfiles/upg_21004/version_history.php new file mode 100644 index 00000000..5e9239ef --- /dev/null +++ b/upload/upgrade/installfiles/upg_21004/version_history.php @@ -0,0 +1,27 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21005/mysql_updates.php b/upload/upgrade/installfiles/upg_21005/mysql_updates.php new file mode 100644 index 00000000..be288bd4 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21005/mysql_updates.php @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21005/version_history.php b/upload/upgrade/installfiles/upg_21005/version_history.php new file mode 100644 index 00000000..4ca4c478 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21005/version_history.php @@ -0,0 +1,28 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21006/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21006/ipb_settings_partial.xml new file mode 100644 index 00000000..8878eb0a --- /dev/null +++ b/upload/upgrade/installfiles/upg_21006/ipb_settings_partial.xml @@ -0,0 +1,108 @@ + + + + + 340 + + + 18 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + + + + 185 + Type of search to use? + +
      +]]>
      + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup +
      + + + 343 + Prohibit Display Names from selecting Log In names + + 18 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + 1 + searchsetup + Search Set-Up + + 0 + +
      + +
      \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21006/version_history.php b/upload/upgrade/installfiles/upg_21006/version_history.php new file mode 100644 index 00000000..fecf4478 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21006/version_history.php @@ -0,0 +1,29 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21007/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21007/ipb_settings_partial.xml new file mode 100644 index 00000000..620f613b --- /dev/null +++ b/upload/upgrade/installfiles/upg_21007/ipb_settings_partial.xml @@ -0,0 +1,142 @@ + + + + + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + ipbreg + + + + 243 + Display registered to line? + + 24 + yes_no + ipb_reg_show + + 0 + + + 1 + 2 + + 0 + + 1 + ipbreg + + + + 244 + Show as licensed to... + Matthew Mecham
      , IPS, Inc.]]> + 24 + input + ipb_reg_name + + + + + 1 + 3 + + 0 + + 1 + ipbreg + + + + 330 + Allow members to use Rich Text Editing? + + 5 + yes_no + posting_allow_rte + + 1 + + + 1 + 100 + Editor Settings + 0 + + 1 + topicspostsandpolls + + + + 348 + + + 5 + input + rte_width + + 650px + + + 1 + 101 + + 0 + + 1 + topicspostsandpolls + + + + 349 + + + 5 + input + rte_pm_width + + 500px + + + 1 + 102 + + 1 + + 1 + topicspostsandpolls + + + + 1 + ipbreg + IPB Licence Settings + This section will allow you to edit your IPB registered licence settings. + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21007/mysql_updates.php b/upload/upgrade/installfiles/upg_21007/mysql_updates.php new file mode 100644 index 00000000..4445b05a --- /dev/null +++ b/upload/upgrade/installfiles/upg_21007/mysql_updates.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21007/version_history.php b/upload/upgrade/installfiles/upg_21007/version_history.php new file mode 100644 index 00000000..ed4133b7 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21007/version_history.php @@ -0,0 +1,30 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21007/version_upgrade.php b/upload/upgrade/installfiles/upg_21007/version_upgrade.php new file mode 100644 index 00000000..3c57ecd2 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21007/version_upgrade.php @@ -0,0 +1,114 @@ + IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //----------------------------------------- + // Remove dupe categories + //----------------------------------------- + + $title_id_to_keep = array(); + $title_id_to_delete = array(); + $title_deleted_count = 0; + $msg = ''; + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'conf_settings_titles', 'order' => 'conf_title_id DESC' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + if ( $title_id_to_keep[ $r['conf_title_title'] ] ) + { + $title_id_to_delete[ $r['conf_title_id'] ] = $r['conf_title_id']; + } + else + { + $title_id_to_keep[ $r['conf_title_title'] ] = $r['conf_title_id']; + } + } + + if ( count( $title_id_to_delete ) ) + { + $this->install->ipsclass->DB->simple_exec_query( array( 'delete' => 'conf_settings_titles', 'where' => 'conf_title_id IN ('.implode( ',', $title_id_to_delete ).')' ) ); + } + + $title_deleted_count = intval( count($title_id_to_delete) ); + + //----------------------------------------- + // Update this parachat component + //----------------------------------------- + + if ( $this->install->ipsclass->vars['chat04_account_no'] ) + { + require_once( ROOT_PATH . 'sources/api/api_core.php' ); + require_once( ROOT_PATH . 'sources/api/api_components.php' ); + + $api = new api_components(); + $api->ipsclass =& $this->install->ipsclass; + + $fields = array( 'com_enabled' => 1, + 'com_menu_data' => array( 0 => array( 'menu_text' => 'Chat Settings', + 'menu_url' => 'code=chatsettings', + 'menu_permbit' => 'edit' ) ) ); + + $api->acp_component_update( 'chatpara', $fields ); + } + + $this->install->message = "$title_deleted_count duplicate settings deleted"; + + if( $this->install->ipsclass->vars['chat04_account_no'] ) + { + $this->install->message .= "

      Parachat component updated"; + } + + return true; + } + + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21008/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21008/ipb_settings_partial.xml new file mode 100644 index 00000000..707a3955 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21008/ipb_settings_partial.xml @@ -0,0 +1,61 @@ + + + + + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page + + 1 + 9 + + 0 + + 1 + chat + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page + + 1 + 12 + + 0 + + 1 + chat04 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21008/mysql_updates.php b/upload/upgrade/installfiles/upg_21008/mysql_updates.php new file mode 100644 index 00000000..6919377f --- /dev/null +++ b/upload/upgrade/installfiles/upg_21008/mysql_updates.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21008/version_history.php b/upload/upgrade/installfiles/upg_21008/version_history.php new file mode 100644 index 00000000..18724948 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21008/version_history.php @@ -0,0 +1,31 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + '21008' => '2.1.2', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21008/version_upgrade.php b/upload/upgrade/installfiles/upg_21008/version_upgrade.php new file mode 100644 index 00000000..772a9734 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21008/version_upgrade.php @@ -0,0 +1,81 @@ + IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //----------------------------------------- + // Update this parachat component + //----------------------------------------- + + if ( $this->install->ipsclass->vars['chat04_account_no'] ) + { + require_once( ROOT_PATH . 'sources/api/api_core.php' ); + require_once( ROOT_PATH . 'sources/api/api_components.php' ); + + $api = new api_components(); + $api->ipsclass =& $this->install->ipsclass; + + $fields = array( 'com_enabled' => 1, + 'com_menu_data' => array( 0 => array( 'menu_text' => 'Chat Settings', + 'menu_url' => 'code=chatsettings', + 'menu_permbit' => 'edit' ) ) ); + + $api->acp_component_update( 'chatpara', $fields ); + } + + if( $this->install->ipsclass->vars['chat04_account_no'] ) + { + $this->install->message = "Parachat component updated"; + } + + return true; + } + + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21009/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21009/ipb_settings_partial.xml new file mode 100644 index 00000000..66daadaa --- /dev/null +++ b/upload/upgrade/installfiles/upg_21009/ipb_settings_partial.xml @@ -0,0 +1,34 @@ + + + + + 109 + IPB Registered License Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 15 + input + ipb_reg_number + + + + + 1 + 1 + + 0 + + 1 + ipbreg + + + + 1 + ipbreg + IPB License Settings + This section will allow you to edit your IPB registered license settings. + 0 + + + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21009/mysql_updates.php b/upload/upgrade/installfiles/upg_21009/mysql_updates.php new file mode 100644 index 00000000..208ecde1 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21009/mysql_updates.php @@ -0,0 +1,35 @@ +\r
      During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail. \r
      \r
      In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.\r
      \r
      Once you have registered and logged in, you will have access to your personal messenger and your control panel.\r
      \r
      For more information on these items, please see the relevant sections in this documentation.', description='How to register and the added benefits of being a registered member.' WHERE id=1"; +$UPDATES[] = "UPDATE ibf_faq SET title='Cookies and cookie usage', text='Using cookies is optional, but strongly recommended. Cookies are used to track topics, showing you which topics have new replies since your last visit and to automatically log you in when you return.\r
      \r
      If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.\r
      \r
      Clearing Cookies\r
      \r
      You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.\r
      \r
      Removing Cookies in Internet Explorer for Windows\r
      \r
        \r
      • Close all open Internet Explorer Windows\r
      • Click on the \'start\' button\r
      • Move up to \'Find\' and click on \'Files and Folders\'\r
      • When the new window appears, type in the domain name of the board you are using into the \'containing text\' field. (If the boards address was \'http://www.invisionboard.com/forums/index.php\' you would enter \'invisionboard.com\' without the quotes)\r
      • In the \'look in\' box, type in C:WindowsCookies and press \'Find Now\'\r
      • After it has finished searching, highlight all files (click on a file then press CTRL+A) and delete them.\r
      \r
      \r
      Removing Cookies in Internet Explorer for Macintosh\r
      \r
        \r
      • With Internet Explorer active, choose \'Edit\' and then \'Preferences\' from the Macintosh menu bar at the top of the screen\r
      • When the preferences panel opens, choose \'Cookies\' found in the \'Receiving Files\' section.\r
      • When the cookie pane loads, look for the domain name of the board (If the boards address was \'http://www.invisionboard.com/forums/index.php\' look for \'invisionboard.com\' or \'www.invisionboard.com\'\r
      • For each cookie, click on the entry and press the delete button.\r
      \r
      \r
      Your cookies should now be removed. In some cases you may need to restart your computer for the changes to take effect.', description='The benefits of using cookies and how to remove cookies set by this board.' WHERE id=2"; +$UPDATES[] = "UPDATE ibf_faq SET title='Recovering lost or forgotten passwords', text='Security is a big feature on this board, and to that end, all passwords are encrypted when you register.\r
      This means that we cannot email your password to you as we hold no record of your \'uncrypted\' password. You can however, apply to have your password reset.\r
      \r
      To do this, click on the Lost Password link found on the log in page.\r
      \r
      Further instruction is available from there.', description='How to reset your password if you\'ve forgotten it.' WHERE id=3"; +$UPDATES[] = "UPDATE ibf_faq SET title='Your Control Panel (My Controls)', text='Your control panel is your own private board console. You can change how the board looks and feels as well as your own information from here.\r
      \r
      Subscriptions\r
      \r
      This is where you manage your topic and forums subscriptions. Please see the help file \'Email Notification of new messages\' for more information on how to subscribe to topics.\r
      \r
      Edit Profile Info\r
      \r
      This section allows you to add or edit your contact information and enter some personal information if you choose.\r
      \r
      Edit Signature\r
      \r
      A board \'signature\' is very similar to an email signature. This signature is attached to the foot of every message you post unless you choose to check the box that allows you to ommit the signature in the message you are posting. You may use BB Code if available and in some cases, pure HTML (if the board administrator allows it).\r
      \r
      Edit Avatar Settings\r
      \r
      An avatar is a little image that appears under your username when you view a topic or post you authored. If the administrator allows, you may either choose from the board gallery, enter a URL to an avatar stored on your server or upload an avatar to use. You may also set the width of the avatar to ensure that it\'s sized in proportion.\r
      \r
      Change Personal Photo\r
      \r
      This section will allow you to add a photograph to your profile. This will be displayed when a user clicks to view your profile, on the mini-profile screen and will also be linked to from the member list.\r
      \r
      Email Settings\r
      \r
      Hide my email address allows you to deny the ability for other users to send you an email from the board.\r
      Send me updates sent by the board administrator will allow the administrator to include your email address in any mailings they send out - this is used mostly for important updates and community information.\r
      Include a copy of the post when emailing me from a subscribed topic, this allows you to have the new post included in any reply to topic notifications.\r
      Send a confirmation email when I receive a new private message, this will send you an e-mail notification to your registered e-mail address each time you receive a private message on the board.\r
      Enable \'Email Notification\' by default?, this will automatically subscribe you to any topic that you make a reply to. You may unsubscribe from the \'Subscriptions\' section of My Controls if you wish.\r
      \r
      Board Settings\r
      \r
      From this section, you can set your time zone, choose to not see users signatures, avatars and posted images.\r
      You can choose to get a pop up window informing you when you have a new message and choose to show or hide the \'Fast Reply\' box where it is enabled.\r
      You are also able to choose display preferences for the number of topics/posts shown per page on the board.\r
      \r
      Change Email Address\r
      \r
      At any time, you can change the email address that is registered to your account. In some cases, you will need to revalidate your account after changing your email address. If this is the case, you will be notified before your email address change is processed.\r
      \r
      Change Password\r
      \r
      You may change your password from this section. Please note that you will need to know your current password before you can change your password.', description='Editing contact information, personal information, avatars, signatures, board settings, languages and style choices.' WHERE id=4"; +$UPDATES[] = "UPDATE ibf_faq SET title='Email Notification of new messages', text='This board can notify you when a new reply is added to a topic. Many users find this useful to keep up to date on topics without the need to view the board to check for new messages.\r
      \r
      There are three ways to subscribe to a topic:\r
        \r
      • Click the \'Track This Topic\' link at the top of the topic that you wish to track
      • \r
      • On the posting screen when replying to or creating a topic, check the \'Enable email notification of replies?\' checkbox
      • \r
      • From the E-Mail settings section of your User CP (My Controls) check the \'Enable Email Notification by default?\' option, this will automatically subscribe you to any topic that you make a reply to
      • \r
      Please note that to avoid multiple emails being sent to your email address, you will only get one e-mail for each topic you are subscribed to until the next time you visit the board.\r
      \r
      You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click the \'Subscribe to this forum\' link at the bottom of the forum that you wish to subscribe to.\r
      \r
      To unsubscribe from any forums or topics that you are subscribed to - just go to the \'Subscriptions\' section of \'My Controls\' and you can do thi from there.', description='How to get emailed when a new reply is added to a topic.' WHERE id=5"; +$UPDATES[] = "UPDATE ibf_faq SET title='Your Personal Messenger', text='Your personal messenger acts much like an email account in that you can send and receive messages and store messages in folders.\r
      \r
      Compose a New PM\r
      \r
      This will allow you to send a message to another member. If you have names in your contact list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a \'PM\' button on the board (from the member list or a post). If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line.\r
      If the administrator allows, you may use BB Code and HTML in your private message. If you choose to check the \'Add a copy of this message to you sent items folder\' box, a copy of the message will be saved for you for later reference. If you tick the \'Track this message?\' box, then the details of the message will be available in your \'Message Tracker\' where you will be able to see if/when it has been read.\r
      \r
      \r
      \r
      Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.\r
      \r
      Empty PM Folders\r
      \r
      This option provides you with a quick and easy way to clear out all of your PM folders.\r
      \r
      Edit Storage Folders\r
      \r
      You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove \'Sent Items\' or \'Inbox\'.\r
      \r
      PM Buddies/Block List\r
      \r
      You may add in users names in this section, or edit any saved entries. You can also use this as a ban list, denying the named member the ability to message you.\r
      Names entered in this section will appear in the drop down list when sending a new PM, allowing you to quickly choose the members name when sending a message.\r
      \r
      Archive Messages\r
      \r
      If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft © Excel Format. This page is then emailed to your registered email address for your convenience.\r
      \r
      Saved (Unsent) PMs\r
      \r
      This area will allow you to go back to any PM\'s that you have chosen to save to be sent later.\r
      \r
      Message Tracker\r
      \r
      This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.', description='How to send personal messages, track them, edit your messenger folders and archive stored messages.' WHERE id=6"; +$UPDATES[] = "UPDATE ibf_faq SET title='Contacting the moderating team & reporting posts', text='Contacting the moderating team\r
      \r
      If you need to contact a moderator or simply wish to view the complete administration team, you can click the link \'The moderating team\' found at the bottom of the main board page (the first page you see when visiting the board), or from \'My Assistant\'.\r
      \r
      This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.\r
      \r
      If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.\r
      \r
      Reporting a post\r
      \r
      If the administrator has enabled this function on the board, you\'ll see a \'Report\' button in a post, next to the \'Quote\' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn\'t a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.', description='Where to find a list of the board moderators and administrators.' WHERE id=7"; +$UPDATES[] = "UPDATE ibf_faq SET title='Viewing members profile information', text='You can view a members profile at any time by clicking on their name when it is underlined (as a link) or by clicking on their name in a post within a topic.\r
      \r
      This will show you their profile page which contains their contact information (if they have entered some) and their \'active stats\'.\r
      \r
      You can also click on the \'Mini Profile\' button underneath their posts, this will show up a mini \'e-card\' with their contact information and a photograph if they have chosen to have one.', description='How to view members contact information.' WHERE id=8"; +$UPDATES[] = "UPDATE ibf_faq SET title='Viewing active topics and new posts', text='You can view which new topics have new replies today by clicking on the \'Today\'s Active Topics\' link found at the bottom of the main board page (the first page you see when visiting the board). You can set your own date criteria, choosing to view all topics with new replies during several date choices.\r
      \r
      The \'View New Posts\' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.', description='How to view all the topics which have a new reply today and the new posts made since your last visit.' WHERE id=9"; +$UPDATES[] = "UPDATE ibf_faq SET title='Searching Topics and Posts', text='The search feature is designed to allow you to quickly find topics and posts that contain the keywords you enter.\r
      \r
      There are two types of search form available, simple search and advanced search. You may switch between the two using the \'More Options\' and \'Simple Mode\' buttons.\r
      \r
      Simple Mode\r
      \r
      All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.\r
      \r
      Advanced Mode\r
      \r
      The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.\r
      \r
      If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.\r
      \r
      There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.', description='How to use the search feature.' WHERE id=10"; +$UPDATES[] = "UPDATE ibf_faq SET title='Logging in and out', text='If you have chosen not to remember your log in details in cookies, or you are accessing the board on another computer, you will need to log into the board to access your member profile and post with your registered name.\r
      \r
      When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.\r
      \r
      You can also choose to hide - this will keep your name from appearing in the active users list.\r
      \r
      Logging out is simply a matter of clicking on the \'Log Out\' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the \'Cookies\' help file for more information.', description='How to log in and out from the board and how to remain anonymous and not be shown on the active users list.' WHERE id=11"; +$UPDATES[] = "UPDATE ibf_faq SET title='My Assistant', text='This feature is sometimes referred to as a \'Browser Buddy\'. \r
      \r
      At the top it tells you how many posts have been made since you last visited the board.. Also underneath this the number of posts with replies that have been made in topics that the individual has also posted in.\r
      Click on the \'View\' link on either of the two sentences to see the posts.\r
      \r
      The next section is five links to useful features:\r
        \r
      • The link to the moderating team is basically a quick link to see all those that either administrate or moderate certain forums on the message board.
      • \r
      • The link to \'Today\'s Active Topics\' shows you all the topics that have been created in the last 24 hours on the board.
      • \r
      • Today\'s Top 10 Posters link shows you exactly as the name suggests. It shows you the amount of posts by the members and also their total percentage of the total posts made that day.
      • \r
      • The overall Top 10 Posters link shows you the top 10 posters for the whole time that the board has been installed.
      • \r
      • My last 10 posts links to the latest topics that you have made on the board. These are shortened on the page, to save space, and are linked to if you require to read more of them.
      • \r
      The two search features allow you to search the whole board for certain words in a whole topic. It isn\'t as featured as the normal search option so it is not as comprehensive.\r
      \r
      The Help Search is just as comprehensive as the normal help section\'s search function and allows for quick searching of all the help topics on the board.', description='A comprehensive guide to use this handy little feature.' WHERE id=12"; +$UPDATES[] = "UPDATE ibf_faq SET title='Posting', text='There are three different posting screens available. The new topic button, visible in forums and in topics allows you to add a new topic to that particular forum. The new poll button (if the admin has enabled it) will also be viewable in topics and forums allowing you to create a new poll in the forum. When viewing a topic, there will be an add reply button, allowing you to add a new reply onto that particular topic. \r\n
      \r\n
      Posting new topics and replying\r\n
      \r\n
      When making a post, you will most likely have the option to use IBF code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the \'BB Code Help\' link under the emoticon box to launch the help window.\r\n
      \r\n
      On the left of the text entry box, there is the clickable emoticons box - you can click on these to add them to the content of your message (these are sometimes known as \'smilies\').\r\n
      \r\n
      There are three options available when making a post or a reply. \'Enable emoticons?\' if this is unchecked, then any text that would normally be converted into an emoticon will not be. \'Enable signature?\' allows you to choose whether or not you would like your signature to appear on that individual post. \'Enable email notification of replies?\' ticking this box will mean that you will receive e-mail updates to the topic, see the \'Email Notification of new messages\' help topic for more information on this.\r\n
      \r\n
      You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic.\r\n
      \r\n
      If the admin has enabled it, you will also see a file attachments option, this will allow you to attach a file to be uploaded when making a post. Click the browse button to select a file from your computer to be uploaded. If you upload an image file, it may be shown in the content of the post, all other file types will be linked to.\r\n
      \r\n
      Poll Options\r\n
      \r\n
      If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left.\r\n
      \r\n
      Quoting Posts\r\n
      \r\n
      Displayed below each post in a topic, there is a \'Quote\' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted.\r\n
      \r\n
      Editing Posts\r\n
      \r\n
      Above any posts that you have made, you may see an \'Edit\' button. Pressing this will allow you to edit the post that you had previously made. \r\n
      \r\n
      When editing you may see an option to \'Add the \'Edit by\' line in this post?\'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post.\r\n
      \r\n
      If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired.\r\n
      \r\n
      Fast Reply\r\n
      \r\n
      Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the \'More Options\' button will take you to the normal posting screen.', description='A guide to the features avaliable when posting on the boards.' WHERE id=13"; +$UPDATES[] = "UPDATE ibf_faq SET title='Member List', text='The member list, accessed via the \'Members\' link at the top of each page, is basically a listing of all of the members that have registered on the board. \r\n
      \r\n
      If you are looking to search for a particular member by all/part of their username, then in the drop down box at the bottom of the page, change the selection from \'Search All Available\' to \'Name Begins With\' or \'Name Contains\' and input all/part of their name in the text input field and press the \'Go!\' button. \r\n
      \r\n
      Also, at the bottom of the member list page, there are a number of sorting options available to alter the way in which the list is displayed. \r\n
      \r\n
      If a member has chosen to add a photo to their profile information, then a camera icon will appear next to their name, and you may click this to view the photo.', description='Explaining the different ways to sort and search through the list of members.' WHERE id=14"; +$UPDATES[] = "UPDATE ibf_faq SET title='Topic Options', text='At the bottom of each topic, there is a \'Topic Options\' button. Pressing this button will expand the topic options box. \r
      \r
      From this box, you can select from the following options: \r
        \r
      • Track this topic - this option will allow you to receive e-mail updates for the topic, see the \'Email Notification of new messages\' help file for more information on this
      • \r
      • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages\' help file for more information on this
      • \r
      • Download / Print this Topic - will show the topic in a number of different formats. \'Printer Friendly Version\' will display a version of the topic that is suitable for printing out. \'Download HTML Version\' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. \'Download Microsoft Word Version\' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.
      • \r
      ', description='A guide to the options avaliable when viewing a topic.' WHERE id=15"; +$UPDATES[] = "UPDATE ibf_faq SET title='Calendar', text='This board features it\'s very own calendar feature, which can be accessed via the calendar link at the top of the board.\r
      \r
      You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the \'Add New Event\' button to be taken to the event posting screen. There are three types of events that you can now add:\r
        \r
      • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.
      • \r
      • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.
      • \r
      • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.
      • \r
      If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.\r
      \r
      Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.', description='More information on the boards calendar feature.' WHERE id=16"; + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21009/version_history.php b/upload/upgrade/installfiles/upg_21009/version_history.php new file mode 100644 index 00000000..73d33bea --- /dev/null +++ b/upload/upgrade/installfiles/upg_21009/version_history.php @@ -0,0 +1,32 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + '21008' => '2.1.2', + '21009' => '2.1.3', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21009/version_upgrade.php b/upload/upgrade/installfiles/upg_21009/version_upgrade.php new file mode 100644 index 00000000..cba68e74 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21009/version_upgrade.php @@ -0,0 +1,92 @@ + IPB UPGRADE MODULE:: IPB 2.1.2 -> 2.1.3 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + if( $this->install->saved_data['helpfiles'] ) + { + $UPDATES = array(); + $file = '_updates.php'; + $cnt = 0; + + if ( file_exists( ROOT_PATH . 'upgrade/installfiles/upg_21003/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ) ) + { + require_once( ROOT_PATH . 'upgrade/installfiles/upg_21003/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + + $this->install->error = array(); + $this->sqlcount = 0; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $UPDATES as $q ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $this->install->ipsclass->DB->query( $q ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "$this->sqlcount help files updated...."; + } + + return true; + + } + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21010/mysql_updates.php b/upload/upgrade/installfiles/upg_21010/mysql_updates.php new file mode 100644 index 00000000..811682f8 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21010/mysql_updates.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21010/version_history.php b/upload/upgrade/installfiles/upg_21010/version_history.php new file mode 100644 index 00000000..630b0059 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21010/version_history.php @@ -0,0 +1,33 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + '21008' => '2.1.2', + '21009' => '2.1.3', + '21010' => '2.1.4', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21011/ipb_settings_partial.xml b/upload/upgrade/installfiles/upg_21011/ipb_settings_partial.xml new file mode 100644 index 00000000..c74d5d60 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21011/ipb_settings_partial.xml @@ -0,0 +1,497 @@ + + + + + 252 + Allowed avatar image URL extensions + Seperate with comma (gif,png,jpeg) etc + 27 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + + + + 37 + Print HTTP no-cache headers? + Note: The setting 'Print HTTP Headers?' found under General Configuration needs to be enabled for this setting to have any effect.]]> + 7 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + + + + 1 + userprofiles + User Profiles + + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + 202 + Chat Site ID / Account No. + If you are using Parachat v7 or greater, enter your site ID (1234, for example). If you are using an older version of Parachat please enter your group number (ip0000, for example) + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + + + + 351 + Custom Applet Codebase URL + This should be left blank unless you have a local +ParaChat Server installation or hosted ParaChat Enterprise solution.]]> + 21 + input + parachat_codebase_url + + + + + 1 + 2 + + 0 + + 1 + chat04 + + + + 350 + Chat Room Version + + 21 + dropdown + parachat_version + + 6 + 6=Parachat v6 or below +7=Parachat v7 or greater + + 1 + 3 + + 1 + + 1 + chat04 + + + + 204 + + + 21 + yes_no + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + chat04 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting + + 1 + + + 1 + 5 + + 1 + + 1 + chat04 + + + + 209 + Chat Room Dimensions (WIDTH)? + + 21 + input + chat04_width + + 600 + + + 1 + 8 + Showing the chat room + 0 + + 1 + chat04 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat04 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page + + 1 + 12 + + 0 + + 1 + chat04 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
      <param name="cmd.BeepLeave" value="true"> +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 + textarea + chat04_customparams + + + + + 1 + 13 + + 0 + + 0 + chat04 +
      + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + + + + 254 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) + 21 + dropdown + chat04_default_lang + + english.conf + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German + + 1 + 99 + Version 6 Settings (Not required for v7) + 0 + + 0 + chat04 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 100 + + 0 + + 1 + chat04 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + Lobby + + + 1 + 2 + + 0 + + 1 + chat04 + + + + 255 + + + 21 + yes_no + chat04_plainmode + + 0 + + + 1 + 102 + + 0 + + 0 + chat04 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 130 + + 0 + + 0 + chat04 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 131 + + 0 + + 0 + chat04 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 132 + + 0 + + 0 + chat04 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 133 + + 0 + + 0 + chat04 + + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 135 + + 1 + + 0 + chat04 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + +
      + +
      \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21011/mysql_updates.php b/upload/upgrade/installfiles/upg_21011/mysql_updates.php new file mode 100644 index 00000000..299c2efa --- /dev/null +++ b/upload/upgrade/installfiles/upg_21011/mysql_updates.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21011/version_history.php b/upload/upgrade/installfiles/upg_21011/version_history.php new file mode 100644 index 00000000..80844c61 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21011/version_history.php @@ -0,0 +1,34 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + '21008' => '2.1.2', + '21009' => '2.1.3', + '21010' => '2.1.4', + '21011' => '2.1.5', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21012/version_history.php b/upload/upgrade/installfiles/upg_21012/version_history.php new file mode 100644 index 00000000..36e7f8cb --- /dev/null +++ b/upload/upgrade/installfiles/upg_21012/version_history.php @@ -0,0 +1,35 @@ + '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', + '20001' => '2.0.0 PDR 1', + '20002' => '2.0.0 PDR 2', + '20003' => '2.0.0 PDR 3', + '20004' => '2.0.0 PDR 4', + '20005' => '2.0.0 PDR 5', + '20006' => '2.0.0 PF 1', + '20007' => '2.0.0 PF 2', + '20008' => '2.0.0 PF 3', + '20009' => '2.0.0 PF 4', + '20010' => '2.0.0 FINAL', + '20011' => '2.0.1 FINAL', + '20012' => '2.0.2 FINAL', + '20013' => '2.0.3 FINAL', + '20014' => '2.0.4 FINAL', + '21003' => '2.1.0 BETA 5', + '21004' => '2.1.0 RC 1', + '21005' => '2.1.0 RC 2', + '21006' => '2.1.0 FINAL', + '21007' => '2.1.1', + '21008' => '2.1.2', + '21009' => '2.1.3', + '21010' => '2.1.4', + '21011' => '2.1.5', + '21012' => '2.1.6', + ); + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_21013/index.html b/upload/upgrade/installfiles/upg_21013/index.html new file mode 100644 index 00000000..8c7fe211 --- /dev/null +++ b/upload/upgrade/installfiles/upg_21013/index.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/upload/upgrade/upg_21013/version_history.php b/upload/upgrade/installfiles/upg_21013/version_history.php similarity index 88% rename from upload/upgrade/upg_21013/version_history.php rename to upload/upgrade/installfiles/upg_21013/version_history.php index 7655fe08..8c75e87c 100644 --- a/upload/upgrade/upg_21013/version_history.php +++ b/upload/upgrade/installfiles/upg_21013/version_history.php @@ -1,6 +1,10 @@ '1.1.0', + '10002' => '1.2.0', + '10003' => '1.3.0', + '10004' => '1.3.1', '20001' => '2.0.0 PDR 1', '20002' => '2.0.0 PDR 2', '20003' => '2.0.0 PDR 3', diff --git a/upload/upgrade/installfiles/upg_22005/index.html b/upload/upgrade/installfiles/upg_22005/index.html new file mode 100644 index 00000000..8c7fe211 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22005/index.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22005/mysql_updates.php b/upload/upgrade/installfiles/upg_22005/mysql_updates.php new file mode 100644 index 00000000..9d9c8ed6 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22005/mysql_updates.php @@ -0,0 +1,111 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22005/mysql_updates_1.php b/upload/upgrade/installfiles/upg_22005/mysql_updates_1.php new file mode 100644 index 00000000..92ebcdc0 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22005/mysql_updates_1.php @@ -0,0 +1,36 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22005/mysql_updates_2.php b/upload/upgrade/installfiles/upg_22005/mysql_updates_2.php new file mode 100644 index 00000000..4c80fa40 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22005/mysql_updates_2.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22005/mysql_updates_3.php b/upload/upgrade/installfiles/upg_22005/mysql_updates_3.php new file mode 100644 index 00000000..062e36a4 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22005/mysql_updates_3.php @@ -0,0 +1,50 @@ +PayPal for more information.' WHERE LOWER(submethod_name)='paypal';"; + +$SQL[] ="UPDATE ibf_groups SET g_photo_max_vars='100:150:150';"; + +$SQL[] ="UPDATE ibf_attachments SET attach_rel_id=attach_pid, attach_rel_module='post' where attach_pid > 0;"; +$SQL[] ="UPDATE ibf_attachments SET attach_rel_id=attach_msg, attach_rel_module='msg' where attach_msg > 0;"; + +$SQL[] ="UPDATE ibf_login_methods SET login_settings = '1', login_installed = '1' WHERE login_folder_name='ldap';"; +$SQL[] ="UPDATE ibf_login_methods SET login_settings = '1', login_installed = '1' WHERE login_folder_name='external';"; + +$SQL[] ="INSERT INTO ibf_login_methods (login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES ('IP.Converge', 'Internal Use Only', 'ipconverge', '', '', 'passthrough', '', 0, 0, 0, 1, 1, 0, 1);"; +$SQL[] ="UPDATE ibf_forums SET permission_showtopic=1 WHERE parent_id='-1';"; + +# MEMBERS +$SQL[] = "UPDATE ibf_members SET members_l_display_name=LOWER(members_display_name);"; +$SQL[] = "UPDATE ibf_members SET members_l_username=LOWER(name);"; + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22005/version_upgrade.php b/upload/upgrade/installfiles/upg_22005/version_upgrade.php new file mode 100644 index 00000000..c2dd5bba --- /dev/null +++ b/upload/upgrade/installfiles/upg_22005/version_upgrade.php @@ -0,0 +1,492 @@ + IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // What are we doing? + //-------------------------------- + + switch( $this->install->saved_data['workact'] ) + { + case 'sql': + $this->upgrade_sql(1); + break; + case 'sql1': + $this->upgrade_sql(1); + break; + case 'sql2': + $this->upgrade_sql(2); + break; + case 'sql3': + $this->upgrade_sql(3); + break; + case 'sql4': + $this->upgrade_sql(4); + break; + case 'forums': + $this->update_forums(); + break; + case 'finish': + $this->finish_up(); + break; + case 'skin': + $this->add_skin(); + break; + case 'update_template_bits': + $this->update_template_bits(); + break; + + default: + $this->upgrade_sql(1); + break; + } + + if ( $this->install->saved_data['workact'] ) + { + return false; + } + else + { + return true; + } + } + + + /*-------------------------------------------------------------------------*/ + // SQL: 0 + /*-------------------------------------------------------------------------*/ + + function upgrade_sql( $id=1 ) + { + $man = 0; // Manual upgrade ? intval( $this->install->ipsclass->input['man'] ); + $cnt = 0; + $SQL = array(); + $file = '_updates_'.$id.'.php'; + $output = ""; + + if ( file_exists( ROOT_PATH . 'upgrade/installfiles/upg_22005/' . strtolower($this->install->ipsclass->vars['sql_driver']) . $file ) ) + { + require_once( ROOT_PATH . 'upgrade/installfiles/upg_22005/' . strtolower($this->install->ipsclass->vars['sql_driver']) . $file ); + + $this->install->error = array(); + $this->sqlcount = 0; + $output = ""; + + $this->install->ipsclass->DB->return_die = 1; + + foreach( $SQL as $query ) + { + $this->install->ipsclass->DB->allow_sub_select = 1; + $this->install->ipsclass->DB->error = ''; + + $query = str_replace( "<%time%>", time(), $query ); + + if ( $this->install->saved_data['man'] ) + { + $output .= preg_replace("/\sibf_(\S+?)([\s\.,]|$)/", " ".$this->install->ipsclass->DB->obj['sql_tbl_prefix']."\\1\\2", preg_replace( "/\s{1,}/", " ", $query ) )."\n\n"; + } + else + { + $this->install->ipsclass->DB->query( $query ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = $query."

      ".$this->install->ipsclass->DB->error; + } + else + { + $this->sqlcount++; + } + } + } + + $this->install->message = "$this->sqlcount queries run...."; + } + + //-------------------------------- + // Next page... + //-------------------------------- + + $this->install->saved_data['st'] = 0; + + if ( $id != 4 ) + { + $nextid = $id + 1; + $this->install->saved_data['workact'] = 'sql'.$nextid; + } + else + { + $this->install->saved_data['workact'] = 'forums'; + } + + if ( $this->install->saved_data['man'] AND $output ) + { + $this->install->message .= "

      Please run these queries in your MySQL database before continuing..


      ".nl2br(htmlspecialchars($output)); + $this->install->do_man = 1; + } + } + + + /*-------------------------------------------------------------------------*/ + // Update forums + /*-------------------------------------------------------------------------*/ + + function update_forums() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $ignore_me = array( 'redirect_url', 'redirect_loc', 'rules_text', 'permission_custom_error', 'notify_modq_emails' ); + + if ( isset($this->install->ipsclass->vars['forum_cache_minimum']) AND $this->install->ipsclass->vars['forum_cache_minimum'] ) + { + $ignore_me[] = 'description'; + $ignore_me[] = 'rules_title'; + } + + $this->install->ipsclass->cache['forum_cache'] = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', + 'from' => 'forums', + 'order' => 'parent_id, position' + ) ); + $o = $this->install->ipsclass->DB->simple_exec(); + + while( $f = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + $fr = array(); + + $perms = unserialize(stripslashes($f['permission_array'])); + + //----------------------------------------- + // Stuff we don't need... + //----------------------------------------- + + if ( $f['parent_id'] == -1 ) + { + $fr['id'] = $f['id']; + $fr['sub_can_post'] = $f['sub_can_post']; + $fr['name'] = $f['name']; + $fr['parent_id'] = $f['parent_id']; + $fr['show_perms'] = $perms['show_perms']; + $fr['skin_id'] = $f['skin_id']; + $fr['permission_showtopic'] = $f['permission_showtopic']; + } + else + { + foreach( $f as $k => $v ) + { + if ( in_array( $k, $ignore_me ) ) + { + continue; + } + else + { + if ( $v != "" ) + { + $fr[ $k ] = $v; + } + } + } + + $fr['read_perms'] = isset($perms['read_perms']) ? $perms['read_perms'] : ''; + $fr['reply_perms'] = isset($perms['reply_perms']) ? $perms['reply_perms'] : ''; + $fr['start_perms'] = isset($perms['start_perms']) ? $perms['start_perms'] : ''; + $fr['upload_perms'] = isset($perms['upload_perms']) ? $perms['upload_perms'] : ''; + $fr['download_perms'] = $perms['upload_perms']; + $fr['show_perms'] = isset($perms['show_perms']) ? $perms['show_perms'] : ''; + + unset($fr['permission_array']); + } + + $this->install->ipsclass->cache['forum_cache'][ $fr['id'] ] = $fr; + + $perm_array = addslashes(serialize(array( + 'start_perms' => $fr['start_perms'], + 'reply_perms' => $fr['reply_perms'], + 'read_perms' => $fr['read_perms'], + 'upload_perms' => $fr['upload_perms'], + 'download_perms' => $fr['download_perms'], + 'show_perms' => $fr['show_perms'] + ) ) ); + + //----------------------------------------- + // Add to save array + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'forums', array( 'permission_array' => $perm_array ), 'id='.$fr['id'] ); + + } + + $this->install->ipsclass->update_cache( array( 'name' => 'forum_cache', 'array' => 1, 'deletefirst' => 1, 'donow' => 0 ) ); + + $this->install->message = "Download permissions added, Converting template bit HTML logic..."; + $this->install->saved_data['workact'] = 'update_template_bits'; + } + + /*-------------------------------------------------------------------------*/ + // Update template bits + /*-------------------------------------------------------------------------*/ + + function update_template_bits() + { + //----------------------------------------- + // INIT + //----------------------------------------- + + $updated = 0; + $_bits = array(); + $start = $this->install->saved_data['st']; + $lend = 25; + $end = $start + $lend; + $done = 0; + + //----------------------------------------- + // Get API class + //----------------------------------------- + + require_once( ROOT_PATH . 'sources/api/api_skins.php' ); + $api = new api_skins; + $api->ipsclass =& $this->ipsclass; + + //----------------------------------------- + // OK.. + //----------------------------------------- + + $this->install->ipsclass->DB->build_query( array( 'select' => '*', + 'from' => 'skin_templates', + 'order' => 'suid ASC', + 'limit' => array( $start, $lend ) ) ); + + $o = $this->install->ipsclass->DB->exec_query(); + + //----------------------------------------- + // Do it... + //----------------------------------------- + + if ( $this->install->ipsclass->DB->get_num_rows($o) ) + { + //----------------------------------------- + // Got some to convert! + //----------------------------------------- + + while( $row = $this->install->ipsclass->DB->fetch_row( $o ) ) + { + if ( preg_match( "#ipb\.|skin_update_template_bit( $row['section_content'] ); + + if ( $section_content AND $section_content != $row['section_content'] ) + { + $updated++; + $this->install->ipsclass->DB->do_update( 'skin_templates', array( 'section_content' => $section_content ), 'suid=' . $row['suid'] ); + } + } + } + } + else + { + $done = 1; + } + + //----------------------------------------- + // Done? + //----------------------------------------- + + if ( ! $done ) + { + $this->install->message = "Template bits: $start to $end completed. $updated updated..."; + $this->install->saved_data['workact'] = 'update_template_bits'; + $this->install->saved_data['st'] = $end; + return FALSE; + } + else + { + $this->install->message = "Template bits updated, finishing up..."; + $this->install->saved_data['workact'] = 'finish'; + return FALSE; + } + } + + /*-------------------------------------------------------------------------*/ + // Update forums + /*-------------------------------------------------------------------------*/ + + function finish_up() + { + //----------------------------------------- + // Has gallery? + //----------------------------------------- + + $this->install->ipsclass->DB->return_die = 1; + $this->install->ipsclass->DB->error = ''; + + $table = 'members'; + + if ( ! $this->install->ipsclass->DB->field_exists( 'has_gallery', $table ) ) + { + $this->install->ipsclass->DB->sql_add_field( 'members', 'has_gallery', 'INT(1)', '0' ); + + if ( $this->install->ipsclass->DB->error ) + { + $this->install->error[] = "ALTER TABLE {$this->install->ipsclass->DB->obj['sql_tbl_prefix']}members ADD has_gallery INT(1) default 0

      ".$this->install->ipsclass->DB->error; + } + } + + $test = $this->install->ipsclass->DB->build_and_exec_query( array( 'select' => 'count(*) as rows', + 'from' => 'cache_store', + 'where' => "cs_key='calendars'" + ) ); + + if ( ! $test['rows'] ) + { + $this->install->ipsclass->DB->do_insert( 'cache_store', array( 'cs_key' => 'calendars' ) ); + } + + //----------------------------------------- + // Rebuild group caches. + //----------------------------------------- + + require_once( ROOT_PATH . 'sources/action_admin/groups.php' ); + $groups = new ad_groups(); + $groups->ipsclass =& $this->install->ipsclass; + + $groups->rebuild_group_cache(); + + $this->install->message = "Clean up performed, Creating new IPB 2.2.0 skin..."; + $this->install->saved_data['workact'] = 'skin'; + } + + /*-------------------------------------------------------------------------*/ + // Add new skin + /*-------------------------------------------------------------------------*/ + + function add_skin() + { + //----------------------------------------- + // Get default wrapper + //----------------------------------------- + + $xml = new class_xml(); + $xml->lite_parser = 1; + + $content = implode( "", file( ROOT_PATH . 'resources/skinsets.xml' ) ); + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Get CSS and WRAPPER + //----------------------------------------- + + $CSS = $xml->xml_array['export']['group']['row'][0]['set_css']['VALUE']; + $WRAPPER = $xml->xml_array['export']['group']['row'][0]['set_cache_wrapper']['VALUE']; + + //----------------------------------------- + // Turn off all other skins + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'skin_sets', array( 'set_default' => 0 ) ); + + //----------------------------------------- + // Insert new skin... + //----------------------------------------- + + $this->install->ipsclass->DB->return_die = 1; + $this->install->ipsclass->DB->allow_sub_select = 1; + + $this->install->ipsclass->DB->do_insert( 'skin_sets', array( + 'set_name' => 'IPB 2.2.0 Default', + 'set_image_dir' => 1, + 'set_hidden' => 0, + 'set_default' => 1, + 'set_css_method' => 0, + 'set_skin_set_parent' => -1, + 'set_author_email' => '', + 'set_author_name' => 'IPB 2.2.0 Default', + 'set_author_url' => '', + 'set_cache_css' => $CSS, + 'set_cache_wrapper' => $WRAPPER, + 'set_emoticon_folder' => 'default', + ) ); + + $this->install->saved_data['new_skin'] = $this->install->ipsclass->DB->get_insert_id(); + + //----------------------------------------- + // Update parent skin's CSS + //----------------------------------------- + + $this->install->ipsclass->DB->return_die = 1; + $this->install->ipsclass->DB->allow_sub_select = 1; + + $this->install->ipsclass->DB->do_update( 'skin_sets', array( + 'set_cache_css' => $CSS, + 'set_css' => $CSS, + 'set_cache_wrapper' => $WRAPPER, + 'set_wrapper' => $WRAPPER, + ), "set_skin_set_id=1" ); + + //----------------------------------------- + // Remove member's choice + //----------------------------------------- + + $this->install->ipsclass->DB->do_update( 'members', array( 'skin' => '' ) ); + + //----------------------------------------- + // Done... + //----------------------------------------- + + $this->install->message = "2.2.0 skin created..."; + unset($this->install->saved_data['workact']); + unset($this->install->saved_data['vid']); + + return TRUE; + } + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22006/index.html b/upload/upgrade/installfiles/upg_22006/index.html new file mode 100644 index 00000000..8c7fe211 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22006/index.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22006/mysql_updates.php b/upload/upgrade/installfiles/upg_22006/mysql_updates.php new file mode 100644 index 00000000..856664f3 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22006/mysql_updates.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/upload/upgrade/installfiles/upg_22006/version_upgrade.php b/upload/upgrade/installfiles/upg_22006/version_upgrade.php new file mode 100644 index 00000000..7963a3a0 --- /dev/null +++ b/upload/upgrade/installfiles/upg_22006/version_upgrade.php @@ -0,0 +1,166 @@ + IPB UPGRADE MODULE:: IPB 2.0.0 PF3 -> PF 4 +| > Script written by Matt Mecham +| > Date started: 23rd April 2004 +| > "So what, pop is dead - it's no great loss. + So many facelifts, it's face flew off" ++-------------------------------------------------------------------------- +*/ + +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 version_upgrade +{ + var $install; + + /*-------------------------------------------------------------------------*/ + // CONSTRUCTOR + /*-------------------------------------------------------------------------*/ + + function version_upgrade( & $install ) + { + $this->install = & $install; + } + + /*-------------------------------------------------------------------------*/ + // Auto run.. + /*-------------------------------------------------------------------------*/ + + function auto_run() + { + //-------------------------------- + // Upgrade BBCode + //-------------------------------- + + require_once( ROOT_PATH . 'sources/action_admin/bbcode.php' ); + $bbcode = new ad_bbcode(); + $bbcode->ipsclass =& $this->install->ipsclass; + + //----------------------------------------- + // Get BBCode.... + //----------------------------------------- + + if ( $FH = @fopen( ROOT_PATH . 'resources/bbcode.xml', 'rb' ) ) + { + $content = @fread( $FH, filesize( ROOT_PATH . 'resources/bbcode.xml' ) ); + @fclose( $FH ); + } + + //----------------------------------------- + // Get xml mah-do-dah + //----------------------------------------- + + require_once( KERNEL_PATH.'class_xml.php' ); + + $xml = new class_xml(); + + //----------------------------------------- + // Unpack the datafile + //----------------------------------------- + + $xml->xml_parse_document( $content ); + + //----------------------------------------- + // Get current custom bbcodes + //----------------------------------------- + + $tags = array(); + + $this->install->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'custom_bbcode' ) ); + $this->install->ipsclass->DB->simple_exec(); + + while ( $r = $this->install->ipsclass->DB->fetch_row() ) + { + $tags[ $r['bbcode_tag'] ] = 1; + } + + //----------------------------------------- + // pArse + //----------------------------------------- + + if ( ! is_array( $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'][0] ) ) + { + $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'][0] = $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode']; + } + + foreach( $xml->xml_array['bbcodeexport']['bbcodegroup']['bbcode'] as $entry ) + { + $bbcode_title = $entry['bbcode_title']['VALUE']; + $bbcode_desc = $entry['bbcode_desc']['VALUE']; + $bbcode_tag = $entry['bbcode_tag']['VALUE']; + $bbcode_replace = $entry['bbcode_replace']['VALUE']; + $bbcode_useoption = $entry['bbcode_useoption']['VALUE']; + $bbcode_example = $entry['bbcode_example']['VALUE']; + $bbcode_switch_option = $entry['bbcode_switch_option']['VALUE']; + $bbcode_add_into_menu = $entry['bbcode_add_into_menu']['VALUE']; + $bbcode_menu_option_text = $entry['bbcode_menu_option_text']['VALUE']; + $bbcode_menu_content_text = $entry['bbcode_menu_content_text']['VALUE']; + + if ( $tags[ $bbcode_tag ] ) + { + $bbarray = array( + 'bbcode_title' => $bbcode_title, + 'bbcode_desc' => $bbcode_desc, + 'bbcode_tag' => $bbcode_tag, + 'bbcode_replace' => $this->install->ipsclass->txt_safeslashes($bbcode_replace), + 'bbcode_useoption' => $bbcode_useoption, + 'bbcode_example' => $bbcode_example, + 'bbcode_switch_option' => $bbcode_switch_option, + 'bbcode_add_into_menu' => $bbcode_add_into_menu, + 'bbcode_menu_option_text' => $bbcode_menu_option_text, + 'bbcode_menu_content_text' => $bbcode_menu_content_text, + ); + + $this->install->ipsclass->DB->do_update( 'custom_bbcode', $bbarray, "bbcode_tag='".$bbcode_tag."'" ); + + continue; + } + + if ( $bbcode_tag ) + { + $bbarray = array( + 'bbcode_title' => $bbcode_title, + 'bbcode_desc' => $bbcode_desc, + 'bbcode_tag' => $bbcode_tag, + 'bbcode_replace' => $this->install->ipsclass->txt_safeslashes($bbcode_replace), + 'bbcode_useoption' => $bbcode_useoption, + 'bbcode_example' => $bbcode_example, + 'bbcode_switch_option' => $bbcode_switch_option, + 'bbcode_add_into_menu' => $bbcode_add_into_menu, + 'bbcode_menu_option_text' => $bbcode_menu_option_text, + 'bbcode_menu_content_text' => $bbcode_menu_content_text, + ); + + $this->install->ipsclass->DB->do_insert( 'custom_bbcode', $bbarray ); + } + } + + $bbcode->bbcode_rebuildcache(); + + $this->install->message = "BBCode rebuilt and recached..."; + + return true; + } + +} + + +?> \ No newline at end of file diff --git a/upload/upgrade/ips_xmlhttprequest.js b/upload/upgrade/ips_xmlhttprequest.js new file mode 100644 index 00000000..c558f9a1 --- /dev/null +++ b/upload/upgrade/ips_xmlhttprequest.js @@ -0,0 +1,333 @@ +//------------------------------------------------------------------------------ +// IPS XML HTTP REQUEST +//------------------------------------------------------------------------------ +// Supports Safari, Mozilla 1.3+ (Firefox, etc) and IE 5.5+ +// (c) 2005 Invision Power Services, Inc. +// http://www.invisionpower.com +//------------------------------------------------------------------------------ + +/*--------------------------------------------*/ +// New object +/*--------------------------------------------*/ + +function ajax_request() +{ + this.isIE = false; + this.allow_use = use_enhanced_js ? true : false; + this.xmlhandler = null; + this.error_string = ''; + this.nocache = true; + this.do_request_functon = function() {} + this.loading_fired = 0; + this.centerdiv = null; +} + +/*--------------------------------------------*/ +// Initiate +/*--------------------------------------------*/ + +ajax_request.prototype.xml_init = function() +{ + try + { + //------------------------------------------------ + // Moz, Safari, Opera + //------------------------------------------------ + + this.xmlhandler = new XMLHttpRequest(); + this.ie = false; + this.allow_use = true; + return true; + } + catch(e) + { + try + { + //------------------------------------------------ + // IE + //------------------------------------------------ + + this.xmlhandler = new ActiveXObject('Microsoft.XMLHTTP'); + this.ie = true; + this.allow_use = true; + return true; + } + catch(e) + { + this.ie = true; + this.allow_use = false; + return false; + } + } +} + +/*--------------------------------------------*/ +// Actually send data +/*--------------------------------------------*/ + +ajax_request.prototype.process = function( url, type, post ) +{ + //------------------------------------------------ + // The 'post' variable needs to be in the following format: + // + // var=content&var2=content&var3=content + // + // All values need to be escaped with encodeURIComponent(); + //------------------------------------------------ + + type = type == "POST" ? "POST" : "GET"; + + //------------------------------------------------ + // Use nocache where possible... + //------------------------------------------------ + + if ( this.nocache == true && type == 'GET' ) + { + url = this.nocache_url( url ); + } + + //------------------------------------------------ + // Make sure we're initialized + //------------------------------------------------ + + if ( ! this.xmlhandler ) + { + this.xml_init(); + } + + //------------------------------------------------ + // Only go when ready + //------------------------------------------------ + + if ( ! this.readystate_not_ready() ) + { + this.xmlhandler.open(type, url, true); + + if ( type == "GET" ) + { + this.xmlhandler.send(null); + } + else + { + if ( typeof( this.xmlhandler.setRequestHeader ) != "undefined" ) + { + this.xmlhandler.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } + + this.xmlhandler.send( post ); + } + + if ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) + { + return true; + } + } + + return false; +} + +/*--------------------------------------------*/ +// retrieve text of an XML document element, including +// elements using namespaces +/*--------------------------------------------*/ + +ajax_request.prototype.get_element_text_ns = function(prefix, local, parentElem, index) +{ + var result = ""; + + if ( prefix && this.isIE ) + { + //------------------------------- + // IE + //------------------------------- + + result = parentElem.getElementsByTagName(prefix + ":" + local)[index]; + } + else + { + //------------------------------- + // Safari, Gecko + //------------------------------- + + result = parentElem.getElementsByTagName(local)[index]; + } + + if ( result ) + { + if (result.childNodes.length > 1) + { + return result.childNodes[1].nodeValue; + } + else + { + return result.firstChild.nodeValue; + } + } + else + { + return "n/a"; + } +} + +/*--------------------------------------------*/ +// Make sure URL is not cached +/*--------------------------------------------*/ + +ajax_request.prototype.nocache_url = function (url) +{ + var sep = ( -1 < url.indexOf("?") ) ? "&" : "?"; + var mydate = new Date(); + var newurl = url + sep + "__=" + mydate.getTime(); + return newurl; +} + +/*--------------------------------------------*/ +// Takes an array of: +// array[ field ] = value +// and returns a nice encoded POST string +/*--------------------------------------------*/ + +ajax_request.prototype.format_for_post = function( arrayfields ) +{ + var str = ''; + + try + { + for( var i in arrayfields ) + { + str += i + '=' + this.encodeurl(arrayfields[i]) + '&'; + } + } + catch(e) + { + } + + return str; +} + +/*--------------------------------------------*/ +// Hand roll encode URL to UTF-8 +/*--------------------------------------------*/ + +ajax_request.prototype.encodeurl = function( url ) +{ + //------------------------------- + // Ensure we have a string + //------------------------------- + + url = url.toString(); + + var regcheck = url.match(/[\x90-\xFF]/g); + + if ( regcheck ) + { + for (var i = 0; i < i.length; i++) + { + url = url.replace(regcheck[i], '%u00' + (regcheck[i].charCodeAt(0) & 0xFF).toString(16).toUpperCase()); + } + } + + return escape(url).replace(/\+/g, "%2B"); +} + + +/*--------------------------------------------*/ +// Check to ensure ready state-ness +/*--------------------------------------------*/ + +ajax_request.prototype.readystate_not_ready = function() +{ + return ( this.xmlhandler.readyState && ( this.xmlhandler.readyState < 4 ) ); +} + +/*--------------------------------------------*/ +// Check to ensure ready state-ness +/*--------------------------------------------*/ + +ajax_request.prototype.readystate_ready_and_ok = function() +{ + return ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) ? true : false; +} + +/*--------------------------------------------*/ +// Onready state change event handler +/*--------------------------------------------*/ + +ajax_request.prototype.onreadystatechange = function( event ) +{ + //------------------------------------------------ + // Make sure we're initialized + //------------------------------------------------ + + if ( ! this.xmlhandler ) + { + this.xml_init(); + } + + //------------------------------------------------ + // Make sure its a function event + //------------------------------------------------ + + if ( typeof(event) == 'function' ) + { + this.xmlhandler.onreadystatechange = event; + } +} + +/*--------------------------------------------*/ +// Show loading layer +/*--------------------------------------------*/ + +ajax_request.prototype.show_loading = function( message ) +{ + if ( ! this.loading_fired ) + { + this.loading_fired = 1; + + //------------------------------------------------ + // Change text? + //------------------------------------------------ + + if ( message ) + { + document.getElementById( 'loading-layer-text' ).innerHTML = message; + } + + this.centerdiv = new center_div(); + this.centerdiv.divname = 'loading-layer'; + this.centerdiv.move_div(); + } + + return; +} + +/*--------------------------------------------*/ +// Hide loading layer +/*--------------------------------------------*/ + +ajax_request.prototype.hide_loading = function() +{ + try + { + if ( this.centerdiv && this.centerdiv.divobj ) + { + this.centerdiv.hide_div(); + } + } + catch(e) + { + } + + this.loading_fired = 0; + + return; +} + +/*--------------------------------------------*/ +// IPB thinks we can use fancy JS, lets see... +/*--------------------------------------------*/ + +if ( use_enhanced_js ) +{ + use_enhanced_js = ajax_request.prototype.xml_init() ? 1 : 0; +} \ No newline at end of file diff --git a/upload/upgrade/manual_upgradekit/readme.txt b/upload/upgrade/manual_upgradekit/readme.txt index 4fbd5c57..f6863e87 100644 --- a/upload/upgrade/manual_upgradekit/readme.txt +++ b/upload/upgrade/manual_upgradekit/readme.txt @@ -1,102 +1,108 @@ -INVISION POWER BOARD 1.3 -> 2.0.0 РУЧНОЕ ОБНОВЛЕНИЕ ---------------------------------------------------- - -Этот набор был создан специально для ручного обновления через SHELL больших форумов. Потому что при обновлении -существуют тяжелые медленные запросы к базе. - ------------------------------------------------------------------------------------------------------ -ВАЖНО: Мы рекомендуем самостоятельно пользоваться этим ручным обновлением только если вы понимаете -основные SQL запросы и как их выполнять! ------------------------------------------------------------------------------------------------------ - -Предполагается, что вы прочитали текст инструкции по обновлению, а также сделали резервную копию файлов и базы данных. -Если вы еще ничего не сделали резервную копию — прочтите файл «upgradefromipb_1x.html» из дистрибутива. - ------------------------------------------------------------------------------------------------------ -ВАЖНО: ЗНАЧИМОСТЬ ПРАВ НА ФАЙЛЫ. ------------------------------------------------------------------------------------------------------ - -При обновлении вы должны иметь корректно установленные права на файлы и папки (chmod), включая этот дистрибутив. -Требуемые значения chmod прав представлены в файле Documentation/Installation Guide/install_guide.html -(нажмите на ссылку Структура & CHMOD). Рекомендуем полностью прочесть представленную там информацию. - - ------------------------------------------------------------------------------------------------------ -ВАЖНО: ВЫ ДОЛЖНЫ ОБЯЗАТЕЛЬНО СДЕЛАТЬ РЕЗЕРВНУЮ КОПИЮ БАЗЫ ПЕРЕД ТЕМ, КАК ИСПОЛЬЗОВАТЬ ЭТИ ИНСТРУКЦИИ. ------------------------------------------------------------------------------------------------------ - -Для выполнения обновления вы должны использовать коммандную строку, PHP скрипты и SQL файлы. - -Во-первых, загрузите файлы sql_1.sql и sql_2.sql в корневую директорию вашего IPB (туда, где находится index.php) - ------------------------------------------------------------------------------------------------------ -ВАЖНО: sql_1.sql и sql_2.sql имеют запросы со стандартным префиксом таблиц 'ibf_'. Если префикс таблиц -в вашей базе данных другой, пожалуйста пройдитесь по этим двум файлам и замените 'ibf_' на ваш префикс! ------------------------------------------------------------------------------------------------------ - -Итак, на первом этапе вы должны войти в mysql через SHELL. - ------------------------------------------------- -Когда вы будете иметь открытым новое окно терминала, наберите там: - -mysql -u{username} -p{password} - -(заменив в этой фразе {username} на ваше SQL имя пользователя и {password} на ваш SQL пароль) ------------------------------------------------- -Затем введите: - -use {database} - -(заменив {database} на имя вашей SQL базы данных) ------------------------------------------------- -Вы должны увидеть сообщение: - -> Reading table information for completion of table and column names -> You can turn off this feature to get a quicker startup with -A -> -> Database changed ---------------------------------------------------- -Теперь вы должны выполнять первый SQL файл. Введите: - -source /home/website/public_html/forums/sql_1.sql - -(заменив /home/website/public_html/forums/ на реальный путь на вашем сервере к вашему файлу) - -Пожалуйста помните, что MySQL может обрабатывать SQL команды этого файла несколько минут, пока процесс завершится. -Вы должны будете видеть следующую информацию, возвращаемую на экран SSH клиента при обработке этого файла - -> Query OK, 121133 rows affected (11 min 6.27 sec) -> Records: 121133 Duplicates: 0 Warnings: 0 -> - -Ничего не делайте, пока mysql возвращает это. Время обработки зависит от размера базы... - ---------------------------------------------------- -Далее необходимо выполнить через браузер несколько этапов стандартного скрипта обновления, -скопируйте в адресную строку вашего браузера URL адрес, введенный ниже (заменив {yourdomain.com/forum} -на URL вашего форума): - -{yourdomain.com/forum}/upgrade/upgrade.php?act=work&version=103&step=7&dieafterstep=13 - -Это может занять немало времени при больших форумах, ждите. ------------------------------------------------- -Теперь вы должны выполнять второй SQL файл. Введите: - -source /home/website/public_html/forums/sql_2.sql - -(заменив /home/website/public_html/forums/ на реальный путь на вашем сервере к вашему файлу) ------------------------------------------------- -Далее необходимо выполнить через браузер еще несколько этапов стандартного скрипта обновления, -скопируйте в адресную строку вашего браузера URL адрес, введенный ниже (заменив {yourdomain.com/forum} -на URL вашего форума): - -{yourdomain.com/forum}/upgrade/upgrade.php?act=work&version=103&step=22 - -Это может занять немало времени при больших форумах, ждите. -Эти этапы вставят ваши шаблоны и настройки и завершат обновление. ------------------------------------------------- - -Все, теперь вы можете запустить ваш IPB v2! - -Для обновления до IPB 2.1.6, после этого вы будете переадресованы на upgrade/index.php и вы должны будете пробежаться -и по представленным там этапам... \ No newline at end of file +INVISION POWER BOARD 1.3 -> 2.0.0 MANUAL UPGRADE +------------------------------------------------ + +This file is intended to allow you to upgrade your Invision Power Board manually via shell which +is ideal for those with large boards where allowing a script to run several queries can time out. + +----------------------------------------------------------------------------------------------------- +IMPORTANT: It is assumed that you are comfortable with SQL and shell and understand the basic concepts +of paths, files and source SQL files. +----------------------------------------------------------------------------------------------------- + +It is assumed that you have read the upgrade text and you have backed up your database and files before +proceeding. If you haven't backed up - read the file "Documents/upgradefromipb_1x.html" from the download +zip. + +----------------------------------------------------------------------------------------------------- +IMPORTANT: FILE PERMISSIONS MATTER. +----------------------------------------------------------------------------------------------------- + +In order to upgrade properly, you will need to ensure you have set the correct file permissions on the +files and folders included with this package. On Windows, this involves checking the files read/write +attributes, while on Unix this means you should verify the CHMOD values for the files and folders. + +The required values are listed in Documents/Installation Guide/install_guide.html (click on the tab that +reads 'Structure & CHMOD'). You may wish to fully read over this guide as well, as it has other useful +information. + + +----------------------------------------------------------------------------------------------------- +IMPORTANT: PERFORM A BACKUP OF YOUR DATABASE BEFORE USING THESE INSTRUCTIONS. +----------------------------------------------------------------------------------------------------- + +To perform the update, we'll need to use a mixture of command line, PHP scripting and SQL source files. + +Firstly, upload sql_1.sql and sql_2.sql into the root IPB folder (the one with index.php in it) + +----------------------------------------------------------------------------------------------------- +IMPORTANT: sql_1.sql and sql_2.sql have queries with the default 'ibf_' table prefix. If your table +prefix is different, do a search and replace on those files to change 'ibf_' to your database prefix +----------------------------------------------------------------------------------------------------- + +The first step is to log onto mysql from shell. + +------------------------------------------------ +When you have a new terminal window open, type: + +mysql -u{username} -p{password} + +(Substituting {username} for your SQL username and {password} for you SQL password) +------------------------------------------------ +Then type: + +use {database} + +(Substituting {database} for your SQL database) +------------------------------------------------ +You should see a message like so: + +> Reading table information for completion of table and column names +> You can turn off this feature to get a quicker startup with -A +> +> Database changed +------------------------------------------------ +Now we'll run the first source file. Type: + +source /home/website/public_html/forums/sql_1.sql + +(Substituting /home/website/public_html/forums/ with your real path to this file) + +Please note that while MySQL is performing the SQL commands included in this file, it may take several +minutes before it is done processing. You should see output similar to the following return on your +screen while it is processing + +> Query OK, 121133 rows affected (11 min 6.27 sec) +> Records: 121133 Duplicates: 0 Warnings: 0 +> + +Do not proceed until a mysql prompt returns. It may seem like MySQL is "hanging", but often times it is +just a matter of how large the database is, and how long it takes to update the database. + +------------------------------------------------ +Now we'll need to run the installer - but we only want a few steps to run, so copy the URL below carefully +substituting {yourdomain.com/forum} with your real URL to your board: + +Go to: {yourdomain.com/forum}/upgrade/upgrade.php?act=work&version=103&step=7&dieafterstep=13 + +This may take a while for some large boards. +------------------------------------------------ +Now we'll run the second source file. Type: + +source /home/website/public_html/forums/sql_2.sql + +(Substituting /home/website/public_html/forums/ with your real path to this file) +------------------------------------------------ +Now we'll need to run the installer again - but we only want a few steps to run, so copy the URL below carefully +substituting {yourdomain.com/forum} with your real URL to your board: + +Go to: {yourdomain.com/forum}/upgrade/upgrade.php?act=work&version=103&step=22 + +This may take a while for some large boards. +This will insert your templates and settings and completes the upgrade +------------------------------------------------ + +That's it, you should now be running IPB 2! + +To upgrade to IPB 2.1, afterwards you will be redirected to upgrade/index.php and you should follow the onscreen +prompts from there. + diff --git a/upload/upgrade/manual_upgradekit/sql_2.sql b/upload/upgrade/manual_upgradekit/sql_2.sql index aee556cd..154f1632 100644 --- a/upload/upgrade/manual_upgradekit/sql_2.sql +++ b/upload/upgrade/manual_upgradekit/sql_2.sql @@ -28,21 +28,21 @@ change fshowreg pf_show_on_reg tinyint(1) NOT NULL default '0', add pf_input_format text NOT NULL default '', add pf_admin_only tinyint(1) NOT NULL default '0', add pf_topic_format text NOT NULL default ''; -INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (1, 'Ежечасная очистка форума', 'cleanout.php', 1079704080, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Удаление старых сессий, защитных регистрационных кодов, поисков', 1); -INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (3, 'Ежедневный пересчет статистики', 'rebuildstats.php', 1079740800, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Пересчет статистики форума', 1); -INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (6, 'Ежедневная очистка форума', 'dailycleanout.php', 1079751600, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Сокращает подписки на темы и старые записи прочтения тем', 1); -INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (8, 'Кеширование именинников и событий календаря', 'calendarevents.php', 1079725800, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Кеширование событий календаря и дней рождения форумчан', 1); -INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES ('Обновление объявлений', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1,'Обновление кеша и удаление оконченных объявлений', 1); -INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отправка рассылки пользователям', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Динамически назначается, нет необходимости изменять', 0, 'bulkmail', 1); -INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Ежедневный обзор тем и форума', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Ежедневная рассылка тем и обзора форума', 1, 'dailydigest', 0) -INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Еженедельный обзор тем и; форума', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Еженедельная рассылка тем и обзора форума', 1, 'weeklydigest', 0) -INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Указатель сообщения', 'Этот тэг показывает маленькое изображение, которое является ссылкой на цитируемое сообщение — используется, когда цитируются сообщения с форума. Открывается по умолчанию в том же окне.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]'); -INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По правому краю', 'Выравнивание текста по правому краю', 'right', '
      {content}
      ', 0, '[right]Любой текст здесь[/right]'); -INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По левому краю', 'Выравнивание текста по левому краю', 'left', '
      {content}
      ', 0, '[left]Этот текст будет использовать выравнивание по левому краю[/left]'); -INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По центру', 'Выравнивание текста по центру.', 'center', '
      {content}
      ', 0, '[center]Выравнивание текста будет по центру[/center]'); -INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Ссылка на тему', 'Этот тэг позволяет легко опубликовать ссылку на тему, зная лишь ее номер', 'topic', '{content}', 1, '[topic=100]Нажми на меня![/topic]'); -INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Ссылка на сообщение', 'Этот тэг позволяет легко опубликовать ссылку на сообщение, зная лишь его номер.', 'post', '{content}', 1, '[post=100]Нажми на меня![/post]'); -#INSERT INTO ibf_subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Authorize.net', 'authorizenet', '', '', '', '', '', '', '', '1', '1', NULL, NULL, '1', 'USD'); +INSERT INTO ibf_task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0); +INSERT INTO ibf_task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0); +INSERT INTO ibf_task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0); +INSERT INTO ibf_task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0); +INSERT INTO ibf_task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1); +INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1); +INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0); +INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0); +INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]'); +INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]'); +INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Left', 'Aligns content to the left of the post', 'left', '
      {content}
      ', 0, '[left]Left aligned text[/left]'); +INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Center', 'Aligns content to the center of the posting area.', 'center', '
      {content}
      ', 0, '[center]Centered Text[/center]'); +INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Topic Link', 'This tag provides an easy way to link to a topic', 'topic', '{content}', 1, '[topic=100]Click me![/topic]'); +INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Link', 'This tag provides an easy way to link to a post.', 'post', '{content}', 1, '[post=100]Click me![/post]'); +INSERT INTO ibf_subscription_methods (submethod_title, submethod_name, submethod_email, submethod_sid, submethod_custom_1, submethod_custom_2, submethod_custom_3, submethod_custom_4, submethod_custom_5, submethod_is_cc, submethod_is_auto, submethod_desc, submethod_logo, submethod_active, submethod_use_currency) VALUES ('Authorize.net', 'authorizenet', '', '', '', '', '', '', '', '1', '1', NULL, NULL, '1', 'USD'); INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (1, 'pdf', 'application/pdf', 1, 0, 'folder_mime_types/pdf.gif'); INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (2, 'png', 'image/png', 1, 1, 'folder_mime_types/quicktime.gif'); INSERT INTO ibf_attachments_type (atype_id, atype_extension, atype_mimetype, atype_post, atype_photo, atype_img) VALUES (3, 'viv', 'video/vivo', 1, 0, 'folder_mime_types/win_player.gif'); diff --git a/upload/upgrade/pre_20000/10001_mysql_queries.php b/upload/upgrade/pre_20000/10001_mysql_queries.php index e359d121..80539b83 100644 --- a/upload/upgrade/pre_20000/10001_mysql_queries.php +++ b/upload/upgrade/pre_20000/10001_mysql_queries.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE 1.1 -> 2.0 SQL STUFF! @@ -426,14 +420,14 @@ class upgrade_sql { global $DB, $std, $ibforums; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Ежечасная очистка форума', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Удаление старых сессий, защитных регистрационных кодов, поисков',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Ежедневный пересчет статистики', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Пересчет статистики форума',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Ежедневная очистка форума', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Сокращает подписки на темы и старые записи прочтения тем',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Кеширование именинников и событий календаря', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Кеширование событий календаря и дней рождения форумчан',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Обновление объявлений', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Обновление кеша и удаление оконченных объявлений', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отправка рассылки пользователям', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Динамически назначается, нет необходимости изменять', 0, 'bulkmail', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Ежедневный обзор тем и форума', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Ежедневная рассылка тем и обзора форума', 1, 'dailydigest', 0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Еженедельный обзор тем и форума', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Еженедельная рассылка тем и обзора форума', 1, 'weeklydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; @@ -504,55 +498,55 @@ class upgrade_sql $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Главный стиль', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Стандартный стиль', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Старые стили (до 2.0)', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Master Skin Set', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Default Skin', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Pre-2.0 Skins', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'Глобальные Настройки форума', 'Это основные настройки форума, такие как название форума, сайта, пути форума и т.д.', 17);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'Настройки Быстродействия', 'Позволяют ограничивать или отключать некоторые ресурсоемкие возможности форума для увеличения скорости работы вашего форума, а так же уменьшения нагрузки на сервер.', 16);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Формат даты и времени', 'Настройки формата отображения даты и времени на форуме.', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'Профили пользователей', 'Глобальные настройки профиля пользователей, аватар и фотографии.', 22);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Темы, Сообщения и Опросы', 'Группа опций для настройки параметров отображения тем, а так же ограничений при отправке сообщений, опросов.', 32);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Настройки Безопасности', 'Опции, позволяющие Вам контролировать уровень безопасности Вашего форума.', 18);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Настройка Cookies', 'Группа опций по настройке cookies. Следует изменять при нестабильной работе авторизации на форуме.', 3);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow) VALUES (8, 'Установка COPPA', 'Этот блок необходим, если вы хотите включить использование COPPA. В России не актуально.', 3, 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Календарь и дни рождения', 'Настройки отображения календаря и блока именинников форума.', 8);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'Настройка Новостей форума', 'Позволяет выбрать новостной раздел форума, откуда будут экспортироваться новости, как самим форумом, так и ssi.php.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Личные сообщения', 'Глобальные настройки системы личных сообщений форума.', 3);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Настройки E-mail', 'Позволяют настраивать служебные E-mail адреса форума, выбирать метод для отправки почты (PHP mail(), SMTP) с форума', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Система Предупреждений', 'Настройки системы предупреждений пользователей, администрацией форума.', 15);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Настройки Корзины', 'Корзина — специальный форум, в который перемещаются темы после удаления, тем самым оставляя возможность восстановить тему при ее случайном удалении.', 6);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Включение / Выключение форума', 'Группа опций для включения/выключения форума. Если форум находится в выключенном состоянии, то доступ к нему будут иметь только администраторы. Полезно при проведении технических работ на форуме.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Поисковые боты', 'Группа опций, отвечающих за настройку системы слежения за поисковыми ботами. Позволяет добавлять новых ботов, включать и отключать ведение журнала посещений ботов.', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Правила форума', 'Настройки, позволяющие менять тексты правил форума выдаваемых при регистрации и глобальных правил форума.', 4);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Тип авторизации', ' ', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Поисковая Система форума', 'Группа опций для настройки функционирования посиковой системы. Позволяет переключить тип поиска (обычный/полнотекстовый) и тип формы поиска.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Настройки Invision Chat (легальная версия)', 'Это позволяет настроить интеграцию вашей легальной версии Invision Chat.', 14, 1, 'chat');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Настройки Invision Chat', 'Это позволяет настроить интеграцию вашего Invision Chat (версии 2004+)', 10, 1, 'chat04');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'Портал', 'Эти настройки позволят Вам включить/отключить и настроить IPB Портал.', 20, 0, 'ipbportal');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Менеджер рассылок (не для России)', 'Эта настройки относятся к менеджеру рассылок. В России не актуально.', 3, 1, 'subsmanager');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'Регистрация IPB', 'Этот блок позволяет вам работать с настройками лицензии на IPB.', 3, 1, 'ipbreg');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Удаление копирайта', 'Этот блок позволяет ввести ключ активации услуги удаления копирайта.', 2, 1, 'ipbcopyright');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'General Configuration', 'These settings control the basics of the board such as URLs and paths.', 17);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'CPU Saving & Optimization', 'This section allows certain features to be limited or removed to get more performance out of your board.', 16);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Date & Time Formats', 'This section contains the date and time formats used throughout the board.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'User Profiles', 'This section allows you to adjust your member\'s global permissions and other options.', 22);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Topics, Posts and Polls', 'These options control various elements when posting, reading topics and reading polls.', 32);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Security and Privacy', 'These options allow you to adjust the security and privacy options for your board.', 18);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Cookies', 'This section allows you to set the default cookie options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (8, 'COPPA Set-up', 'This section allows you to comply with COPPA.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Calendar & Birthdays', 'This section will allow you to set up the board calendar and its related options.', 8);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'News Set-up', 'This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Personal Message Set-up', 'This section allows you to control the global PM options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Email Set-up', 'This section will allow you to change the incoming and outgoing email addresses as well as the email method.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Warn Set-up', 'This section will allow you to set up the warning system.', 15);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Trash Can Set-up', 'The trashcan is a special forum in which topics are moved into instead of being deleted.', 6);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Board Offline / Online', 'Use this setting to turn switch your board online or offline and leave a message for your visitors.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Search Engine Spiders', 'This section will allow you to set up and maintain your search engine bot spider recognition settings.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Board Guidelines', 'This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines.', 4);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Converge Set Up', 'Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products.', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Full Text Search Set-Up', 'Full text searching is a very fast and very efficient way of searching large amounts of posts without maintaining a manual index. This may not be available for your system.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; $SQL[] = "INSERT INTO ".SQL_PREFIX."upgrade_history (upgrade_id, upgrade_version_id, upgrade_version_human, upgrade_date, upgrade_mid, upgrade_notes) VALUES ('', '".THIS_LONG_VERSION."', '".THIS_HUMAN_VERSION."', '0', '0', '');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (1, 'Преимущества регистрации', 'Для полноценного использования всех функций форума, Администратор требует зарегистрироваться на форуме. Регистрация на форуме абсолютно бесплатна и отнимет у Вас всего лишь пару минут.\r
      \r
      При регистрации необходимо обязательно указать Ваш реальный e-mail адрес. Администратор может потребовать от Вас подтверждения Вашей регистрации по указанному Вами email адресу. Если данное требование администратора включено, Вы будете извещены об этом во время регистрации. Если Вы по какой-то причине не получили письма для активации, зайдите на форум и в правой верхней части форума, воспользуйтесь ссылкой \'Выслать повторно письмо для активации\'.\r
      \r
      Также возможно, что администратор сам должен будет одобрить Вашу регистрацию. Об этом Вы также будете извещены во время регистрации.\r
      \r
      После завершения регистрации и успешной авторизации, Вы получите доступ к Вашей панели управления и к личному ящику для форума, сокращенное название которого - PM.\r
      \r
      Более подробные сведения обо всех функциях и характеристиках форума, Вы сможете узнать в секции помощи по форуму', 'Как зарегистрироваться и дополнительные преимущества зарегистрированных пользователей.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (2, 'Cookies и их использование', 'Использование cookies не является обязательным, но очень рекомендуется. Cookies необходимы для того, чтобы прослеживать за темами, подписываться на них, узнавать каждый раз о новых темах и сообщениях, их количестве и для автоматической авторизации на форуме при каждом посещении форума.\r
      \r
      Если в Вашем компьютере нет возможности использования системы cookie, для корректного использования форума, то, форум автоматически будет добавлять ко всем ссылкам ID Вашего сеанса посещения, для удобства использования форума\r
      \r
      Очистка Cookies\r
      \r
      Вы можете удалить все Ваши cookies, если нажмете на ссылку, находящуюся в нижней части главной страницы форума (это самая первая страница форума). Если у Вас это не сработает, то возможно Вам необходимо проделать это вручную.\r
      \r
      Удаление Cookies для пользователей Internet Explorer для Windows\r
      \r
        \r
      • Закройте все окна Internet Explorer\r
      • Нажмите на кнопку \'Пуск\r
      • Перейдите в меню \'Найти\' и выберите \'Файлы и папки\'\r
      • После открытия проводника, введите название домена форума в поле \'Искать текст\'. (Например, если адрес форума \'http://www.invisionboard.com/forums/index.php\' то Вы должны ввести \'invisionboard.com\' без кавычек)\r
      • В поле \'где искать\' выберите C:WindowsCookies и нажмите кнопку \'Найти\'\r
      • После завершения поиска, выделите все найденные файлы (для выделения всех файлов одновременно, можете использовать комбинацию горячих клавиш CTRL+A) и удалите их.\r
      \r
      \r
      Удаление Cookies для пользователей Internet Explorer для Macintosh\r
      \r
        \r
      • Откройте окно Internet Explorer, зайдите в меню \'Правка\' и выберите \'Настройки\'\r
      • После открытия панели настроек, зайдите в меню \'Cookies\' в секции \'Принятые файлы\'.\r
      • После полной загрузки панели cookie, найдите там доменное имя форума (Если адрес форума \'http://www.invisionboard.com/forums/index.php\' ищите \'invisionboard.com\' или \'www.invisionboard.com\'\r
      • Войдите в каждый cookie и нажмите кнопку удаления.\r
      \r
      \r
      Теперь все Ваши cookies удалены. В некоторых случаях, для вступления изменений в силу, необходимо перезагрузить компьютер.', 'Преимущества использования cookies и удаление cookies, установленных форумом.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (3, 'Восстановление утерянного или забытого пароля', 'Главной характеристикой форума, является безопасность и поэтому, все пароли пользователей кодируются при регистрации.\r
      Это означает, что мы не в состоянии выслать Вам, Ваш забытый пароль, т.к. \'раскодировка\' пароля невозможна. Но, тем не менее, Вы можете восстановить свой пароль.\r
      \r
      Для восстановления пароля, зайдите по ссылке Восстановление забытого пароля, которая находится на странице авторизации.\r
      \r
      С дальнейшей инструкцией по восстановлению, Вы можете ознакомиться уже там.', 'Инструкция по восстановлению забытого пароля.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (4, 'Ваша панель управления (Мой профиль)', 'Панель управления форума, является частной, для каждого пользователя форума. Здесь Вы можете изменить и настроить различные функции форума.\r
      \r
      Подписки\r
      \r
      На этой странице, Вы можете настраивать Ваши подписки на темы и форумы. Для более подробного ознакомления, с инструкциями по подписке на темы, читайте раздел помощи \'Уведомление по e-mail о новых сообщениях\'.\r
      \r
      Редактирование профиля\r
      \r
      В этой секции Вы можете добавить или отредактировать различную дополнительную информацию о себе.\r
      \r
      Редактирование подписи\r
      \r
      Использование \'подписи\' на форуме, аналогично тому, как Вы используете подпись в Ваших письмах, отправляемых Вами с Вашего e-mail адреса. Ваша подпись будет добавлена к концу каждого Вашего сообщения на форуме, но в некоторых сообщениях, Вы можете отменить добавление подписи, просто сняв галочку в поле добавления подписи под формой отправки сообщения. Вы даже можете использовать в подписи коды форума, а в некоторых случаях даже и чистый HTML (если только администратор разрешил данную функцию).\r
      \r
      Настройки аватара\r
      \r
      Аватар - это небольшая картинка, которая будет отображена под Вашим именем, в каждом Вашем сообщении на форуме. В зависимости от настроек форума, установленных администратором, Вы можете выбрать аватар в галерее аватаров форума, либо ввести ссылку на аватар, находящийся на другом сайте/сервере, либо загрузить личный аватар с Вашего компьютера. Вы также можете установить высоту и ширину аватара, если Ваш аватар отображается не так, как бы Вам хотелось.\r
      \r
      Изменение личной фотографии\r
      \r
      В этой секции, Вы можете добавить фотографию в Ваш профиль. Ваша фотография, будет доступна при просмотре Вашего профиля пользователями, на странице мини профиля, а также, в списке пользователей форума, будет присутствовать ссылка на Вашу фотографию в виде изображения фотоаппарата.\r
      \r
      Настройки e-mail\r
      \r
      При установке галочки в поле Скрыть мой e-mail адрес, пользователи форума не смогут отправлять Вам из форума письма на Ваш e-mail адрес.\r
      Сообщать мне обо всех изменениях, проводимых администратором форума Эта функция для добавления Вашего e-mail адреса в список рассылок. Каждый раз, при каких-либо важных изменениях, дополнениях на форуме, Администратор форума будет сразу извещать Вас об этом.\r
      Добавлять копию сообщения из подписанных тем в отправляемое письмо-уведомление При включении этого, текст нового сообщения из подписанной темы будет отправлен Вам на e-mail.\r
      Уведомлять меня по e-mail при получении новых личных писемДобавлять копию сообщения из подписанных тем в отправляемое письмо-уведомление При включении этого, Вы будете уведомлены по e-mail о каждом новом приватном письме, отправленном кем-то из пользователей на Ваш на Личный ящик форума.\r
      Включить \'E-mail Уведомления\' по умолчанию? При включении этого, Вы будете получать уведомления о всех новых темах и сообщениях на форуме. Вы можете отписаться от всего, зайдя по ссылке \'Подписки\' в Вашей панели управления.\r
      \r
      Настройки форума\r
      \r
      В этой секции Вы можете настроить Ваш часовой пояс, запретить отображение подписи пользователей, отображение аватаров и изображений в сообщениях.\r
      Здесь же Вы можете выбрать, чтобы при получении новых писем на личный ящик (PM) форума, у Вас выскакивало новое окно-оповещение, а также выбрать отображение или скрытие формы \'Быстрого ответа\', если она включена администратором.\r
      Вы также можете сами установить кол-во отображаемых тем/сообщений, за страницу форума/темы соответственно.\r
      \r
      Стили и Языки\r
      \r
      Здесь Вы можете выбрать другой стиль и язык интерфейса форума. Перед изменением стиля, Вы можете предварительно просмотреть вид этого стиля.\r
      \r
      Изменить e-mail адрес\r
      \r
      Здесь Вы можете в любое время изменить Ваш e-mail адрес, указанный Вами при регистрации на форуме. В некоторых случаях, для изменения e-mail адреса, от Вас могут потребовать подтверждение изменения и переактивацию вашей учетной записи. Если данное требование включено, то перед изменением Вы будете заранее извещены об этом.\r
      \r
      Изменить пароль\r
      \r
      В этой секции Вы можете изменить Ваш пароль. Но учтите, что перед изменением Вашего пароля на новый, Вы должны будете ввести Ваш старый пароль.', 'Редактирование контактной и персональной информации, аватаров, подписи, настроек форума, а также выбор стиля и языка интерфейса форума.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (5, 'Уведомление на e-mail о новых сообщениях', 'На форуме существует возможность уведомлять Вас о новых сообщениях в темах. Многие пользователи с успехом используют эту функцию для своевременного извещения о том, что в теме имеются новые сообщения.\r
      \r
      Существует 3 способа подписки на тему:\r
      \r
    • Нажатием на ссылку \'Слежение за этой темой\', находящуюся в верхней части каждой темы.\r
    • С помощью установки галочки в окошко \'Уведомлять по e-mail о новых сообщениях?\', находящееся под формой ответа в темы.\r
    • Через пункт настройки e-mail в Вашей панели управления (Мой профиль), установив галочку на опции \'Включить E-mail Уведомление по умолчанию?\', после чего Вы будете автоматически подписываться на все темы, в которые Вы ответите.\r
      \r
      Но имейте ввиду, что, во избежание повтора писем, отправляемых на Ваш e-mail адрес, Вы будете получать только одно письмо для каждой подписанной темы, независимо от кол-ва новых ответов в эту тему, до тех пор, пока не посетите данную тему.\r
      \r
      Вы также можете подписаться на любой из разделов форума и при появлении новой темы в этом разделе, Вы будете уведомлены об этом. Для подписки на раздел, нажмите на ссылку \'Подписка на этот форум\', находящуюся в нижней части каждого форума.\r
      \r
      Для отмены подписки на любой из разделов или тем, на которые Вы подписаны, зайдите в \'Мой профиль\' и в меню \'Мои подписки\', Вы можете отписаться от всего, что угодно.', 'Как подписаться на тему, для уведомления по e-mail при новых ответах.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (6, 'Ваш личный ящик (PM)', 'Ваш личный ящик на форуме, действует аналогично e-mail ящику. Здесь Вы можете получать и отправлять письма пользователям форума, хранить Ваши письма в папках, создавать, редактировать и удалять папки.\r
      \r
      Отправка нового письма\r
      \r
      Отсюда Вы можете отправить письмо пользователю форума. Если в Вашем списке контактов имеются имена пользователей, Вы можете выбрать имя оттуда или ввести имя получателя вручную. Если Вы нажмете в каком-либо сообщении в темах или в списке пользователей на кнопку \'PM\' то имя пользователя будет автоматически добавлено в графу получателя Вашего письма. Если Администратор форума разрешил отправлять письма нескольким пользователям одновременно, Вы можете ввести имена нескольких пользователей, - по одному имени на строку, в окошке Копии пользователям.\r
      В некоторых случаях, если это разрешено Администратором, Вы даже можете использовать коды форума и HTML в тексте Ваших писем. Вы также можете выбрать пункт \'Добавить копию этого письма в папку Исходящие\' для сохранения копии письма в папке отправленных писем. При установке галочки в окошке \'Проследить за этим письмом?\', Вы сможете прослеживать через пункт меню \'Слежение за письмами\' состояние того, что прочитано ли Ваше письмо адресатом.\r
      \r
      Переход в папку Входящие\r
      \r
      Вы попадете в папку Входящих писем, на которую поступают все отправленные Вам письма. Нажав на заголовок письма, Вы сможете прочесть пришедшее Вам письмо. После прочтения, Вы можете удалять или перемещать письма в другие папки.\r
      \r
      Очистка папок РМ\r
      \r
      Через эту опцию, Вы можете быстро удалить все письма из любых Ваших папок.\r
      \r
      Редактировать папки\r
      \r
      Здесь Вы можете переименовывать, удалять или создавать новые папки для сортировки Ваших писем так, как Вам будет более удобно. Вы не можете удалять только 2 папки, созданные самим форумом это папка \'Исходящие\' и \'Входящие\'.\r
      \r
      Список Друзей/Врагов\r
      \r
      Вы можете добавить в Ваш контактный лист имена Ваших друзей, а также внести в черный список имена Ваших недругов, от которых Вы не желаете получать письма.\r
      При отправке писем, Вы будете способны быстро выбрать имя получателя в выпадающем списке, если Вы до этого ввели его имя в Ваш список друзей\r
      \r
      Архивация писем\r
      \r
      Если Ваш Личный Ящик переполнен и в связи с этим Вы не в состоянии получать новые письма, то Вы сможете произвести архивацию писем. Все Ваши письма будут скомпилированы на одной странице в формате HTML или Microsoft © Excel, а затем высланы на Ваш e-mail адрес, указанный Вами при регистрации на форуме.\r
      \r
      Неотправленные письма\r
      \r
      Здесь Вы можете вернуться к любому письму, которое Вы решили сохранить, для отправки его позже.\r
      \r
      Слежение за письмами\r
      \r
      На этой странице, появляются все письма, за которыми Вы решили проследить. Все данные о том, прочитаны ли Ваши письма получателями и когда они прочитаны, - появляются здесь. Также, если Вы передумали, и если письмо пока не прочитано получателем, Вы можете удалить это письмо, .', 'Отправка личных сообщений, редактирование папок Личного Ящика, слежение за письмами, архивация сохраненных сообщений.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (7, 'Контакт с администрацией и доклад модератору о сообщениях', 'Контакт с администрацией\r
      \r
      Для связи с модератором или просто для просмотра списка Администрации форума, нажмите на ссылку \'Администрация\', находящуюся в нижней части главной страницы форума или на странице \'Мой помощник\'.\r
      \r
      В этом списке Вы увидите имена всех Администраторов (это Главные Администраторы форума, имеющие доступ ко всем функциям), Супермодераторов (это команда модераторов, имеющих возможность модерирования всех разделов форума) и Модераторов (это модераторы, модерирующие индивидуальные разделы форума, в которые они назначены).\r
      \r
      Для связи по поводу пользовательских данных, необходимо связаться непосредственно с Администратором форума, а для связи по поводу тем или сообщений, обращайтесь к Супермодератором или Модераторам.\r
      \r
      Доклад модератору о сообщении\r
      \r
      Если Администратор форума включил эту функцию, Вы увидите кнопку \'Сообщить модератору\', в каждом сообщении темы, рядом с кнопкой \'Цитата\'. При помощи этой функции, Вы сможете быстро доложить о сообщении модератору данного раздела форума (или Администратору, - если в данном форуме нет назначенных модераторов). Используйте эту функцию только в том случае, если Вы видите какие-либо нарушения правил форума в данном сообщении. Запрещено использовать эту функцию, для простых переговоров с модератором!. Для переговоров, Вы можете использовать PM (Личный ящик форума).', 'Где найти список Администраторов и Модераторов форума.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (8, 'Просмотр информации профиля пользователей', 'Для просмотра данных профиля любого пользователя, нажмите на имя этого пользователя, если имя подчеркнуто (в виде ссылки), либо нажмите на ссылку \'Профиль\', находящуюся под именем каждого пользователя, в темах.\r
      \r
      После нажатия, Вы попадете на страницу профиля пользователя, в которой Вы увидите всю контактную информацию, все данные (если он ввел их), а также \'Статистику активности на форуме\' данного пользователя.\r
      \r
      Вы также можете нажать на кнопку \'Мини профиль\', находящуюся в нижней части сообщения любого из пользователей и, тем самым Вы попадете на страницу \'Мини профиля\', где также можете увидеть контактную информацию пользователя и, если он загрузил фотографию на форум, - его фотографию.', 'Где можно найти контактную информацию пользователя.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (9, 'Просмотр активных тем и новых сообщений', 'Вы можете быстро просмотреть список сегодняшних активных тем (это темы, имеющие новые ответы), нажав на ссылку \'Активные темы\', находящуюся в нижней части Главной страницы форума. Там же, Вы можете установить свои критерии поиска по дате, для поиска активных тем, обновленных в течение нескольких дней.\r
      \r
      Ссылка \'Новые сообщения\', находящаяся в верхней части страницы форума, покажет Вам все новые сообщения, с момента Вашего последнего посещения форума.', 'Где можно просмотреть список сегодняшних активных тем и новые сообщения, появившиеся с момента Вашего последнего посещения форума.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (10, 'Поиск тем и сообщений', 'Функция поиска, предназначена для быстрого поиска тем и сообщений, по введенным Вами ключевым словам.\r
      \r
      Имеются 2 доступных типа поиска, простой поиск и расширенный поиск. Вы можете переключаться между ними, при помощи кнопок \'Расширенный поиск\' и \'Простой поиск\'.\r
      \r
      Простой поиск\r
      \r
      Здесь Вы должны ввести ключевое слово для поиска и выбрать форум(ы), в которых хотите найти что-то по этому слову, (для выбора нескольких форумов одновременно, необходимо кликать по их названиям, удерживая клавишу Ctrl, а пользователи Mac, должны удерживать клавишу Shift/Apple), затем выбрать порядок сортировки найденного и произвести поиск.\r
      \r
      Расширенный поиск\r
      \r
      На странице расширенного поиска, у Вас появится возможность использования дополнительных критериев поиска, значительно улучшающих функцию поиска. Дополнительно к поиску по ключевому слову, Вы сможете произвести поиск по имени пользователя, а также возможно использование сразу обоих комбинаций. Можно увеличить критерии поиска, посредством выбора диапазона дат, а также выбрать порядок сортировки найденного. Также имеется 2 вида отображения результатов поиска - в виде отображения полного текста сообщения и в виде ссылки на тему. Вид отображения Вы можете заранее указать, на странице поиска.\r
      \r
      Администратор может включить минимальное время, известное под названием - Флуд-контроль, которое Вы должны будете прождать, для повторного поиска.\r
      \r
      На форуме имеется также поисковая формочка, известная под названием - Фильтр поиска, находящаяся в нижней части каждого раздела, через которую Вы сможете произвести быстрый поиск в конкретном разделе форума.', 'Как воспользоваться функцией поиска.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (11, 'Авторизация и Выход из форума', 'Во время авторизации на форуме, Вы можете установить функцию запонимания Ваших данных через cookies, а если Вы зашли на форум с чужого компьютера, Вам надо будет авторизовываться снова.\r
      \r
      Но не используйте функцию запоминания cookies, если заходите с чужого компьютера.\r
      \r
      Вы можете также выбрать функцию скрытия, поставив галочку в окошке Скрытность. И тогда Ваше имя не будет отображаться в списке Кто в онлайне.\r
      \r
      Выход из форума, производится простым нажатием на ссылку Выход. Если вдруг Вы обнаружите, что выход не сработал, возможно Вы должны будете удалить Ваши cookies. Читайте раздел помощи про \'Cookies\', для дополнительной информации.', 'Как авторизоваться, выйти из форума, а также как скрыть свое имя из списка пользователей, находящихся на форуме.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (13, 'Мой помощник', 'В верхней части форума, находится ссылка \'Мой помощник\', нажав на которую, у Вас откроется страница, через которую Вы сможете узнать, сколько имеется новых сообщений с момента Вашего последнего посещения форума. На следующей строке, Вы увидите информацию о том, сколько из этих сообщений, являются ответами в тему, созданную Вами.\r
      Нажатием на ссылку \'Просмотр\', в любой из этих двух строк, Вы сможете просмотреть эти сообщения.\r
      \r
      Следующая секция на этой странице - это пять полезных ссылок со следующими функциями:\r
      \r
    • Ссылка Администрация, покажет Вам список Администраторов и модераторов форума.\r
    • Ссылка \'Активные темы\', покажет Вам список тем, созданных за последние 24 часа.\r
    • Ссылка \'10 авторов сегодня\', покажет Вам, имена Активных пользователей за последний день и кол-во их сообщений за этот день, а также процент их сообщений за сегодня и общее кол-во их сообщений на форуме.\r
    • Ссылка \'Лучшие 10 авторов\', покажет Вам имена лучшей десятки пользователей, имеющих самое рекордное кол-во сообщений на форуме, со дня создания форума.\r
    • Ссылка \'10 моих посл. сообщений\', покажет Вам 10 Ваших последних сообщений, с обрезанным текстом самих сообщений. Если Вы захотите увидеть полный текст какого-то из этих 10 сообщений, Вы можете нажать на ссылку, ведущую в тему, в которой находится данное сообщение.\r
      \r
      И последняя секция на этой странице, это секция поиска по форуму, через которое Вы сможете найти конкретное сообщение, имеющее ключевое слово, введенное Вами.\r
      \r
      Следующее окошко поиска, найдет Вам конкретный раздел помощи по форуму, посредством ввода интересующего Вас ключевого слова.', 'Полный справочник по использованию этой маленькой, но удобной функции.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (12, 'Сообщения', 'На форуме доступны 3 разные формы создания сообщений. Кнопка \'Новая тема\', находящаяся в каждом разделе форума и на странице тем, предназначена для создания новой темы. Кнопка \'Новый опрос\', (если опросы допущены Администратором), также видимая в каждом разделе форума и на странице тем, предназначена для создания новой темы-голосования. При просмотре темы, Вы увидите кнопку \'Ответить\', которая предназначена для добавления Вашего сообщения в данную тему. \r\n
      \r\n
      Создание новой темы и ответ в тему\r\n
      \r\n
      При написании сообщений, Вас вероятно заинтересуют Коды форума. Данные коды, предназначены для различного форматирования текстов Ваших сообщений. Для более подробной информации по использованию кодов форума, воспользуйтесь кнопкой \'Помощь по кодам\', находящуюся рядом с окошком для написания сообщения.\r\n
      \r\n
      С левой стороны от окна для ввода текста сообщения, имеется таблица со смайликами. Для добавления любого смайлика к тексту Вашего сообщения, нажмите на этот смайлик и его код будет автоматически добавлен в нужное место текста.\r\n
      \r\n
      Имеются 3 опции сообщения, доступные при создании темы или ответе в тему. При отключении опции \'Включить смайлики?\', коды смайликов не будут преобразованы в изображения. Опция \'Включить подпись?\', предназначена для добавления текста Вашей подписи к каждому сообщению на форуме. При установке галочки в окошке опции \'Включить уведомление на e-mail при ответах?\', на Ваш e-mail адрес будет поступать информация, каждый раз, при новых ответах в данныую тему. Для более подробной информации по этой функции, читайте раздел помощи \'Уведомление на e-mail о новых сообщениях\'.\r\n
      \r\n
      Также для Вас доступен выбор иконки сообщения, при создании тем или ответах в темы. Выбранная Вами иконка будет отображаться слева от названия Вашей темы, в списке тем форума, а если выбрать иконку при ответе в тему, Ваша иконка будет отображаться над Вашим сообщением, слева от даты написания сообщения.\r\n
      \r\n
      Если Администратор форума включил функцию присоединений, Вы увидите формочку для присоединения файла к Вашему сообщению. Для присоединения файла, нажмите на кнопку Обзор и выберите файл на Вашем компьютере, для загрузки этот файла. Если Вы загружаете файл изображения, данное изображения будет отображено под текстом Вашего сообщения, а при загрузке всех других типов файлов, под текстом Вашего сообщения, будет прописана ссылка для скачивания этого файла.\r\n
      \r\n
      Установки опроса\r\n
      \r\n
      При создании нового опроса, под полями для ввода названия и описания темы, Вы увидите 2 дополнительных поля. Первое поле, служит для ввода в нем вопроса Вашего голосования. Второе, текстовое поле, служит для ввода пунктов опроса. Необходимо вводить по одному пункту на строку. Максмимально допустимое кол-во пунктов, отображается слева от окна ввода пунктов опроса.\r\n
      \r\n
      Цитирование сообщений\r\n
      \r\n
      Над каждым сообщением в теме, имеется кнопка \'Цитата\'. При нажатии на эту кнопку, Вы сможете ответить в тему, с цитированием того сообщения, над которым нажали данную кнопку. Таким образом, при нажатии на эту кнопку, Вы попадете на страницу ответа в тему, где под формой ответа, Вы увидите дополнительное текстовое окно, с текстом процитированного сообщения, которое Вы можете отредактировать на Ваше усмотрение.\r\n
      \r\n
      Редактирование сообщений\r\n
      \r\n
      Над каждым сообщением, написанным Вами, Вы увидите кнопку \'Редактирование\'. При нажатии на эту кнопку, Вы сможете отредактировать текст Вашего сообщения, независимо от того, когда Вы это сообщение писали. \r\n
      \r\n
      При редактировании своего сообщения, Вы можете увидеть опцию \'Добавить надпись Отредактировано в это сообщение?\'. При установке галочки в этой опции, под Вашим отредактированным сообщением появится надпись, информирующая о том, что Вы редактировали это сообщение, с датой редактирования. Если Вы не видите эту опцию, значит данная информаиця о редактировании будет добавлена автоматически.\r\n
      \r\n
      Если Вы не видите кнопку для редактирования Вашего сообщения, то возможно, что Администратор форума отключил данную функцию, либо установил лимит времени, по истечении которого, редактирование сообщения уже невозможно.', 'Руководство по функциям, при написании сообщений.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (14, 'Список пользователей', 'Список пользователей, доступный через ссылку \'Пользователи\', находящуюся в верхней части каждой страницы форума, - это полный список всех пользователей, зарегистрированных на форуме.\r\n
      \r\n
      Для поиска конкретного пользователя по части или по полному имени, в выпадающем меню, находящимся в нижней части списка пользователей, измените пункт \'Найти всех доступных\' на \'Имя начинается с\' или \'Имя содержит\', затем введите часть имени или полное имя в текстовое поле и нажмите на кнопку \'ОК!\'. \r\n
      \r\n
      Также доступны несколько опций сортировки найденного, которые Вы можете использовать, как Вам будет удобно. \r\n
      \r\n
      В последней колонке списка пользователей, напротив имен пользователей, которые загрузили фотографию в свой профиль, будет отображаться изображение в виде фотоаппарата', 'Просмотр и поиск пользователей через список пользователей и возможность сортировки найденного.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (15, 'Опции темы', 'В нижней части каждой темы, имеется кнопка \'Опции темы\'. При нажатии на эту кнопку, раскроется меню с опциями темы. \r\n
      \r\n
      В этом меню, Вы можете использовать следующие опции: \r\n
      \r\n
    • Подписаться на тему - эта опция служит для получения уведомлений на e-mail, об обновлении темы. Для более подробной информации по этой части, читайте раздел помощи \'Уведомление на e-mail о новых сообщениях\'. \r\n
    • Подписка на этот форум - эта опция служит для получения уведомлений на e-mail, о любых новых темах, созданных в этом форуме. Для более подробной информации по этой части, читайте раздел помощи \'Уведомление на e-mail о новых сообщениях\'. \r\n
    • Скачать/Распечатать тему - эта опция отобразит данную тему в других различных форматах. \'Версия для печати\' отобразит тему в том виде, в котором она будет распечатана на принтере. \'Скачать HTML версию\', позволит Вам скачать данную тему на Ваш жесткий диск, для дальнейшего просмотра и чтения содержимого этой темы, без необходимости входа в интернет. \'Скачать версию в формате Microsoft Word\', позволит Вам скачать данную тему на Ваш жесткий диск и затем открыть ее в популярном, известном приложении Microsoft Word, для просмотра и чтения содержимого этой темы, без необходимости входа в интернет.', 'Руководство по доступным опциям, при просмотре тем.');"; - $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (16, 'Календарь', 'На форуме имеется функция календаря, ссылка на который находится в верхней части форума.\r\n
      \r\n
      Вы можете добавлять персональные события в календарь, которые будут видны только Вам. Для добавления нового события, используйте кнопку \'Добавить событие\'. Имеется возможность создания трех видов событий:\r\n
      \r\n
    • Однодневное событие - для добавления этого вида, используйте первое поле, указав в нем дату события.\r\n
    • Многодневное событие - это вид события, предусмотренный на несколько дней, для добавления этого вида, используйте второе поле, указав в нем дату начала и дату окончания события. Здесь же присутствуют две дополнительные опции, для выбора цвета фона и цвета текста отображаемого события.\r\n
    • Чередующееся событие - этот вид события будет начат с момента его добавления и Вы можете в нем указать еженедельный, ежемесячный или ежегодный интервал чередования. Для добавления этого вида, используйте третье поле.\r\n
      \r\n
      Если это допущено Администратором форума, Вы также можете добавлять общественное событие, которое будет видно не только Вам, а всем пользователям форума.\r\n
      \r\n
      Также, Вы можете указать дату Вашего рождения через страницу Вашего профиля и, если Администратор включил эту возможность, то дата Вашего рождения появится в виде ссылки в календаре, в день Вашего рождения.', 'Информация по использованию функции календаря форума.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (1, 'Registration benefits', 'To be able to use all the features on this board, the administrator will probably require that you register for a member account. Registration is free and only takes a moment to complete.\r
      \r
      During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail. \r
      \r
      In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.\r
      \r
      Once you have registered and logged in, you will have access to your personal messenger and your control panel.\r
      \r
      For more information on these items, please see the relevant sections in this documentation.', 'How to register and the added benefits of being a registered member.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (2, 'Cookies and cookie usage', 'Using cookies is optional, but strongly recommended. Cookies are used to track topics, showing you which topics have new replies since your last visit and to automatically log you in when you return.\r
      \r
      If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.\r
      \r
      Clearing Cookies\r
      \r
      You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.\r
      \r
      Removing Cookies in Internet Explorer for Windows\r
      \r
        \r
      • Close all open Internet Explorer Windows\r
      • Click on the \'start\' button\r
      • Move up to \'Find\' and click on \'Files and Folders\'\r
      • When the new window appears, type in the domain name of the board you are using into the \'containing text\' field. (If the boards address was \'http://www.invisionboard.com/forums/index.php\' you would enter \'invisionboard.com\' without the quotes)\r
      • In the \'look in\' box, type in C:WindowsCookies and press \'Find Now\'\r
      • After it has finished searching, highlight all files (click on a file then press CTRL+A) and delete them.\r
      \r
      \r
      Removing Cookies in Internet Explorer for Macintosh\r
      \r
        \r
      • With Internet Explorer active, choose \'Edit\' and then \'Preferences\' from the Macintosh menu bar at the top of the screen\r
      • When the preferences panel opens, choose \'Cookies\' found in the \'Receiving Files\' section.\r
      • When the cookie pane loads, look for the domain name of the board (If the boards address was \'http://www.invisionboard.com/forums/index.php\' look for \'invisionboard.com\' or \'www.invisionboard.com\'\r
      • For each cookie, click on the entry and press the delete button.\r
      \r
      \r
      Your cookies should now be removed. In some cases you may need to restart your computer for the changes to take effect.', 'The benefits of using cookies and how to remove cookies set by this board.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (3, 'Recovering lost or forgotten passwords', 'Security is a big feature on this board, and to that end, all passwords are encrypted when you register.\r
      This means that we cannot email your password to you as we hold no record of your \'uncrypted\' password. You can however, apply to have your password reset.\r
      \r
      To do this, click on the Lost Password link found on the log in page.\r
      \r
      Further instruction is available from there.', 'How to reset your password if you\'ve forgotton it.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (4, 'Your Control Panel (My Controls)', 'Your control panel is your own private board console. You can change how the board looks and feels as well as your own information from here.\r
      \r
      Subscriptions\r
      \r
      This is where you manage your topic and forums subscriptions. Please see the help file \'Email Notification of new messages\' for more information on how to subscribe to topics.\r
      \r
      Edit Profile Info\r
      \r
      This section allows you to add or edit your contact information and enter some personal information if you choose.\r
      \r
      Edit Signature\r
      \r
      A board \'signature\' is very similar to an email signature. This signature is attached to the foot of every message you post unless you choose to check the box that allows you to ommit the signature in the message you are posting. You may use BB Code if available and in some cases, pure HTML (if the board administrator allows it).\r
      \r
      Edit Avatar Settings\r
      \r
      An avatar is a little image that appears under your username when you view a topic or post you authored. If the administrator allows, you may either choose from the board gallery, enter a URL to an avatar stored on your server or upload an avatar to use. You may also set the width of the avatar to ensure that it\'s sized in proportion.\r
      \r
      Change Personal Photo\r
      \r
      This section will allow you to add a photograph to your profile. This will be displayed when a user clicks to view your profile, on the mini-profile screen and will also be linked to from the member list.\r
      \r
      Email Settings\r
      \r
      Hide my email address allows you to deny the ability for other users to send you an email from the board.\r
      Send me updates sent by the board administrator will allow the administrator to include your email address in any mailings they send out - this is used mostly for important updates and community information.\r
      Include a copy of the post when emailing me from a subscribed topic, this allows you to have the new post included in any reply to topic notifications.\r
      Send a confirmation email when I receive a new private message, this will send you an e-mail notification to your registered e-mail address each time you receive a private message on the board.\r
      Enable \'Email Notification\' by default?, this will automatically subscribe you to any topic that you make a reply to. You may unsubscribe from the \'Subscriptions\' section of My Controls if you wish.\r
      \r
      Board Settings\r
      \r
      From this section, you can set your time zone, choose to not see users signatures, avatars and posted images.\r
      You can choose to get a pop up window informing you when you have a new message and choose to show or hide the \'Fast Reply\' box where it is enabled.\r
      You are also able to choose display preferences for the number of topics/posts shown per page on the board.\r
      \r
      Skins and Languages\r
      \r
      If available, you can choose a skin style and language choice. This affects how the board is displayed so you may wish to preview the skin before submitting the form.\r
      \r
      Change Email Address\r
      \r
      At any time, you can change the email address that is registered to your account. In some cases, you will need to revalidate your account after changing your email address. If this is the case, you will be notified before your email address change is processed.\r
      \r
      Change Password\r
      \r
      You may change your password from this section. Please note that you will need to know your current password before you can change your password.', 'Editing contact information, personal information, avatars, signatures, board settings, languages and style choices.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (5, 'Email Notification of new messages', 'This board can notify you when a new reply is added to a topic. Many users find this useful to keep up to date on topics without the need to view the board to check for new messages.\r
      \r
      There are three ways to subscribe to a topic:\r
      \r
    • Click the \'Track This Topic\' link at the top of the topic that you wish to track\r
    • On the posting screen when replying to or creating a topic, check the \'Enable email notification of replies?\' checkbox\r
    • From the E-Mail settings section of your User CP (My Controls) check the \'Enable Email Notification by default?\' option, this will automatically subscribe you to any topic that you make a reply to\r
      \r
      Please note that to avoid multiple emails being sent to your email address, you will only get one e-mail for each topic you are subscribed to until the next time you visit the board.\r
      \r
      You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click the \'Subscribe to this forum\' link at the bottom of the forum that you wish to subscribe to.\r
      \r
      To unsubscribe from any forums or topics that you are subscribed to - just go to the \'Subscriptions\' section of \'My Controls\' and you can do this from there.', 'How to get emailed when a new reply is added to a topic.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (6, 'Your Personal Messenger', 'Your personal messenger acts much like an email account in that you can send and receive messages and store messages in folders.\r
      \r
      Send a new PM\r
      \r
      This will allow you to send a message to another member. If you have names in your contact list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a \'PM\' button on the board (from the member list or a post). If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line.\r
      If the administrator allows, you may use BB Code and HTML in your private message. If you choose to check the \'Add a copy of this message to you sent items folder\' box, a copy of the message will be saved for you for later reference. If you tick the \'Track this message?\' box, then the details of the message will be available in your \'Message Tracker\' where you will be able to see if/when it has been read.\r
      \r
      Go to Inbox\r
      \r
      Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.\r
      \r
      Empty PM Folders\r
      \r
      This option provides you with a quick and easy way to clear out all of your PM folders.\r
      \r
      Edit Storage Folders\r
      \r
      You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove \'Sent Items\' or \'Inbox\'.\r
      \r
      PM Buddies/Block List\r
      \r
      You may add in users names in this section, or edit any saved entries. You can also use this as a ban list, denying the named member the ability to message you.\r
      Names entered in this section will appear in the drop down list when sending a new PM, allowing you to quickly choose the members name when sending a message.\r
      \r
      Archive Messages\r
      \r
      If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft © Excel Format. This page is then emailed to your registered email address for your convenience.\r
      \r
      Saved (Unsent) PMs\r
      \r
      This area will allow you to go back to any PM\'s that you have chosen to save to be sent later.\r
      \r
      Message Tracker\r
      \r
      This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.', 'How to send personal messages, track them, edit your messenger folders and archive stored messages.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (7, 'Contacting the moderating team & reporting posts', 'Contacting the moderating team\r
      \r
      If you need to contact a moderator or simply wish to view the complete administration team, you can click the link \'The moderating team\' found at the bottom of the main board page (the first page you see when visiting the board), or from \'My Assistant\'.\r
      \r
      This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.\r
      \r
      If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.\r
      \r
      Reporting a post\r
      \r
      If the administrator has enabled this function on the board, you\'ll see a \'Report\' button in a post, next to the \'Quote\' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn\'t a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.', 'Where to find a list of the board moderators and administrators.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (8, 'Viewing members profile information', 'You can view a members profile at any time by clicking on their name when it is underlined (as a link) or by clicking on their name in a post within a topic.\r
      \r
      This will show you their profile page which contains their contact information (if they have entered some) and their \'active stats\'.\r
      \r
      You can also click on the \'Mini Profile\' button underneath their posts, this will show up a mini \'e-card\' with their contact information and a photograph if they have chosen to have one.', 'How to view members contact information.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (9, 'Viewing active topics and new posts', 'You can view which new topics have new replies today by clicking on the \'Today\'s Active Topics\' link found at the bottom of the main board page (the first page you see when visiting the board). You can set your own date criteria, choosing to view all topics with new replies during several date choices.\r
      \r
      The \'View New Posts\' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.', 'How to view all the topics which have a new reply today and the new posts made since your last visit.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (10, 'Searching Topics and Posts', 'The search feature is designed to allow you to quickly find topics and posts that contain the keywords you enter.\r
      \r
      There are two types of search form available, simple search and advanced search. You may switch between the two using the \'More Options\' and \'Simple Mode\' buttons.\r
      \r
      Simple Mode\r
      \r
      All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.\r
      \r
      Advanced Mode\r
      \r
      The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.\r
      \r
      If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.\r
      \r
      There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.', 'How to use the search feature.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (11, 'Logging in and out', 'If you have chosen not to remember your log in details in cookies, or you are accessing the board on another computer, you will need to log into the board to access your member profile and post with your registered name.\r
      \r
      When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.\r
      \r
      You can also choose to hide - this will keep your name from appearing in the active users list.\r
      \r
      Logging out is simply a matter of clicking on the \'Log Out\' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the \'Cookies\' help file for more information.', 'How to log in and out from the board and how to remain anonymous and not be shown on the active users list.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (13, 'My Assistant', 'This feature is sometimes referred to as a \'Browser Buddy\'. \r
      \r
      At the top it tells you how many posts have been made since you last visited the board.. Also underneath this the number of posts with replies that have been made in topics that the individual has also posted in.\r
      Click on the \'View\' link on either of the two sentences to see the posts.\r
      \r
      The next section is five links to useful features:\r
      \r
    • The link to the moderating team is basically a quick link to see all those that either administrate or moderate certain forums on the message board.\r
    • The link to \'Today\'s Active Topics\' shows you all the topics that have been created in the last 24 hours on the board.\r
    • Today\'s Top 10 Posters link shows you exactly as the name suggests. It shows you the amount of posts by the members and also their total percentage of the total posts made that day.\r
    • The overall Top 10 Posters link shows you the top 10 posters for the whole time that the board has been installed.\r
    • My last 10 posts links to the latest topics that you have made on the board. These are shortened on the page, to save space, and are linked to if you require to read more of them.\r
      \r
      The two search features allow you to search the whole board for certain words in a whole topic. It isn\'t as featured as the normal search option so it is not as comprehensive.\r
      \r
      The Help Search is just as comprehensive as the normal help section\'s search function and allows for quick searching of all the help topics on the board.', 'A comprehensive guide to use this handy little feature.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (12, 'Posting', 'There are three different posting screens available. The new topic button, visible in forums and in topics allows you to add a new topic to that particular forum. The new poll button (is the admin has enabled it) will also be viewable in topics and forums allowing you to create a new poll in the forum. When viewing a topic, there will be an add reply button, allowing you to add a new reply onto that particular topic. \r\n
      \r\n
      Posting new topics and replying\r\n
      \r\n
      When making a post, you will most likely have the option to use IBF code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the \'BB Code Help\' link under the emoticon box to launch the help window.\r\n
      \r\n
      On the left of the text entry box, there is the clickable emoticons box - you can click on these to add them to the content of your message (these are sometimes known as \'smilies\').\r\n
      \r\n
      There are three options available when making a post or a reply. \'Enable emoticons?\' if this is unchecked, then any text that would normally be converted into an emoticon will not be. \'Enable signature?\' allows you to choose whether or not you would like your signature to appear on that individual post. \'Enable email notification of replies?\' ticking this box will mean that you will receive e-mail updates to the topic, see the \'Email Notification of new messages\' help topic for more information on this.\r\n
      \r\n
      You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic.\r\n
      \r\n
      If the admin has enabled it, you will also see a file attachments option, this will allow you to attach a file to be uploaded when making a post. Click the browse button to select a file from your computer to be uploaded. If you upload an image file, it may be shown in the content of the post, all other file types will be linked to.\r\n
      \r\n
      Poll Options\r\n
      \r\n
      If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left.\r\n
      \r\n
      Quoting Posts\r\n
      \r\n
      Displayed above each post in a topic, there is a \'Quote\' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted.\r\n
      \r\n
      Editing Posts\r\n
      \r\n
      Above any posts that you have made, you may see an \'Edit\' button. Pressing this will allow you to edit the post that you had previously made. \r\n
      \r\n
      When editing you may see an option to \'Add the \'Edit by\' line in this post?\'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post.\r\n
      \r\n
      If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired.\r\n
      \r\n
      Fast Reply\r\n
      \r\n
      Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the \'More Options\' button will take you to the normal posting screen.', 'A guide to the features avaliable when posting on the boards.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (14, 'Member List', 'The member list, accessed via the \'Members\' link at the top of each page, is basically a listing of all of the members that have registered on the board. \r\n
      \r\n
      If you are looking to search for a particular member by all/part of their username, then in the drop down box at the bottom of the page, change the selection from \'Search All Available\' to \'Name Begins With\' or \'Name Contains\' and input all/part of their name in the text input field and press the \'Go!\' button. \r\n
      \r\n
      Also, at the bottom of the member list page, there are a number of sorting options available to alter the way in which the list is displayed. \r\n
      \r\n
      If a member has chosen to add a photo to their profile information, then a camera icon will appear next to their name, and you may click this to view the photo.', 'Explaining the different ways to sort and search through the list of members.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (15, 'Topic Options', 'At the bottom of each topic, there is a \'Topic Options\' button. Pressing this button will expand the topic options box. \r\n
      \r\n
      From this box, you can select from the following options: \r\n
      \r\n
    • Track this topic - this option will allow you to receive e-mail updates for the topic, see the \'Email Notification of new messages\' help file for more information on this \r\n
    • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages\' help file for more information on this \r\n
    • Download / Print this Topic - will show the topic in a number of different formats. \'Printer Friendly Version\' will display a version of the topic that is suitable for printing out. \'Download HTML Version\' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. \'Download Microsoft Word Version\' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.', 'A guide to the options avaliable when viewing a topic.');"; + $SQL[] = "REPLACE INTO ".SQL_PREFIX."faq VALUES (16, 'Calendar', 'This board features it\'s very own calendar feature, which can be accessed via the calendar link at the top of the board.\r\n
      \r\n
      You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the \'Add New Event\' button to be taken to the event posting screen. There are three types of events that you can now add:\r\n
      \r\n
    • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.\r\n
    • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.\r\n
    • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.\r\n
      \r\n
      If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.\r\n
      \r\n
      Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.', 'More information on the boards calendar feature.');"; $this->error = array(); diff --git a/upload/upgrade/pre_20000/10002_mysql_queries.php b/upload/upgrade/pre_20000/10002_mysql_queries.php index b51e085e..fcba7674 100644 --- a/upload/upgrade/pre_20000/10002_mysql_queries.php +++ b/upload/upgrade/pre_20000/10002_mysql_queries.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE 1.2 -> 2.0 SQL STUFF! @@ -374,14 +368,14 @@ class upgrade_sql { global $DB, $std, $ibforums; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Ежечасная очистка форума', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Удаление старых сессий, защитных регистрационных кодов, поисков',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Ежедневный пересчет статистики', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Пересчет статистики форума',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Ежедневная очистка форума', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Сокращает подписки на темы и старые записи прочтения тем',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Кеширование именинников и событий календаря', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Кеширование событий календаря и дней рождения форумчан',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Обновление объявлений', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Обновление кеша и удаление оконченных объявлений', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отправка рассылки пользователям', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Динамически назначается, нет необходимости изменять', 0, 'bulkmail', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Ежедневный обзор тем и форума', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Ежедневная рассылка тем и обзора форума', 1, 'dailydigest', 0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Еженедельный обзор тем и форума', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Еженедельная рассылка тем и обзора форума', 1, 'weeklydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; @@ -452,36 +446,36 @@ class upgrade_sql $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Главный стиль', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Стандартный стиль', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Старые стили (до 2.0)', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Master Skin Set', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Default Skin', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Pre-2.0 Skins', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'Глобальные Настройки форума', 'Это основные настройки форума, такие как название форума, сайта, пути форума и т.д.', 17);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'Настройки Быстродействия', 'Позволяют ограничивать или отключать некоторые ресурсоемкие возможности форума для увеличения скорости работы вашего форума, а так же уменьшения нагрузки на сервер.', 16);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Формат даты и времени', 'Настройки формата отображения даты и времени на форуме.', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'Профили пользователей', 'Глобальные настройки профиля пользователей, аватар и фотографии.', 22);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Темы, Сообщения и Опросы', 'Группа опций для настройки параметров отображения тем, а так же ограничений при отправке сообщений, опросов.', 32);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Настройки Безопасности', 'Опции, позволяющие Вам контролировать уровень безопасности Вашего форума.', 18);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Настройка Cookies', 'Группа опций по настройке cookies. Следует изменять при нестабильной работе авторизации на форуме.', 3);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow) VALUES (8, 'Установка COPPA', 'Этот блок необходим, если вы хотите включить использование COPPA. В России не актуально.', 3, 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Календарь и дни рождения', 'Настройки отображения календаря и блока именинников форума.', 8);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'Настройка Новостей форума', 'Позволяет выбрать новостной раздел форума, откуда будут экспортироваться новости, как самим форумом, так и ssi.php.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Личные сообщения', 'Глобальные настройки системы личных сообщений форума.', 3);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Настройки E-mail', 'Позволяют настраивать служебные E-mail адреса форума, выбирать метод для отправки почты (PHP mail(), SMTP) с форума', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Система Предупреждений', 'Настройки системы предупреждений пользователей, администрацией форума.', 15);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Настройки Корзины', 'Корзина — специальный форум, в который перемещаются темы после удаления, тем самым оставляя возможность восстановить тему при ее случайном удалении.', 6);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Включение / Выключение форума', 'Группа опций для включения/выключения форума. Если форум находится в выключенном состоянии, то доступ к нему будут иметь только администраторы. Полезно при проведении технических работ на форуме.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Поисковые боты', 'Группа опций, отвечающих за настройку системы слежения за поисковыми ботами. Позволяет добавлять новых ботов, включать и отключать ведение журнала посещений ботов.', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Правила форума', 'Настройки, позволяющие менять тексты правил форума выдаваемых при регистрации и глобальных правил форума.', 4);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Тип авторизации', ' ', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Поисковая Система форума', 'Группа опций для настройки функционирования посиковой системы. Позволяет переключить тип поиска (обычный/полнотекстовый) и тип формы поиска.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Настройки Invision Chat (легальная версия)', 'Это позволяет настроить интеграцию вашей легальной версии Invision Chat.', 14, 1, 'chat');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Настройки Invision Chat', 'Это позволяет настроить интеграцию вашего Invision Chat (версии 2004+)', 10, 1, 'chat04');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'Портал', 'Эти настройки позволят Вам включить/отключить и настроить IPB Портал.', 20, 0, 'ipbportal');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Менеджер рассылок (не для России)', 'Эта настройки относятся к менеджеру рассылок. В России не актуально.', 3, 1, 'subsmanager');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'Регистрация IPB', 'Этот блок позволяет вам работать с настройками лицензии на IPB.', 3, 1, 'ipbreg');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Удаление копирайта', 'Этот блок позволяет ввести ключ активации услуги удаления копирайта.', 2, 1, 'ipbcopyright');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'General Configuration', 'These settings control the basics of the board such as URLs and paths.', 17);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'CPU Saving & Optimization', 'This section allows certain features to be limited or removed to get more performance out of your board.', 16);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Date & Time Formats', 'This section contains the date and time formats used throughout the board.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'User Profiles', 'This section allows you to adjust your member\'s global permissions and other options.', 22);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Topics, Posts and Polls', 'These options control various elements when posting, reading topics and reading polls.', 32);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Security and Privacy', 'These options allow you to adjust the security and privacy options for your board.', 18);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Cookies', 'This section allows you to set the default cookie options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (8, 'COPPA Set-up', 'This section allows you to comply with COPPA.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Calendar & Birthdays', 'This section will allow you to set up the board calendar and its related options.', 8);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'News Set-up', 'This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Personal Message Set-up', 'This section allows you to control the global PM options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Email Set-up', 'This section will allow you to change the incoming and outgoing email addresses as well as the email method.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Warn Set-up', 'This section will allow you to set up the warning system.', 15);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Trash Can Set-up', 'The trashcan is a special forum in which topics are moved into instead of being deleted.', 6);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Board Offline / Online', 'Use this setting to turn switch your board online or offline and leave a message for your visitors.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Search Engine Spiders', 'This section will allow you to set up and maintain your search engine bot spider recognition settings.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Board Guidelines', 'This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines.', 4);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Converge Set Up', 'Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products.', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Full Text Search Set-Up', 'Full text searching is a very fast and very efficient way of searching large amounts of posts without maintaining a manual index. This may not be available for your system.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; $SQL[] = "INSERT INTO ".SQL_PREFIX."upgrade_history (upgrade_id, upgrade_version_id, upgrade_version_human, upgrade_date, upgrade_mid, upgrade_notes) VALUES ('', '".THIS_LONG_VERSION."', '".THIS_HUMAN_VERSION."', '0', '0', '');"; @@ -1390,7 +1384,7 @@ class upgrade_sql if ( intval( $count['count'] ) < 1 ) { - print "Сохраненная копия таблицы с форумами не была нормально сделана. Продолжение этого обновления приведет к удалению всех форумов. Напишите в техническую поддержку для помощи!"; + print "The back-up forums table has not been populated successfully. Continuing this convert WILL delete all forums permanently. Contact technical support immediately."; exit(); } } diff --git a/upload/upgrade/pre_20000/10003_mysql_queries.php b/upload/upgrade/pre_20000/10003_mysql_queries.php index a39dd30b..d86d0a7e 100644 --- a/upload/upgrade/pre_20000/10003_mysql_queries.php +++ b/upload/upgrade/pre_20000/10003_mysql_queries.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE 1.3 -> 2.0 SQL STUFF! @@ -374,14 +368,14 @@ class upgrade_sql { global $DB, $std, $ibforums; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Ежечасная очистка форума', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Удаление старых сессий, защитных регистрационных кодов, поисков',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Ежедневный пересчет статистики', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Пересчет статистики форума',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Ежедневная очистка форума', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Сокращает подписки на темы и старые записи прочтения тем',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Кеширование именинников и событий календаря', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Кеширование событий календаря и дней рождения форумчан',1,'',0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Обновление объявлений', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Обновление кеша и удаление оконченных объявлений', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отправка рассылки пользователям', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Динамически назначается, нет необходимости изменять', 0, 'bulkmail', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Ежедневный обзор тем и форума', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Ежедневная рассылка тем и обзора форума', 1, 'dailydigest', 0);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Еженедельный обзор тем и форума', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Еженедельная рассылка тем и обзора форума', 1, 'weeklydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (1, 'Hourly Clean Out', 'cleanout.php', 1076074920, -1, -1, -1, 59, '2a7d083832daa123b73a68f9c51fdb29', 1, 'Kill old sessions, reg images, searches',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (2, 'Daily Stats Rebuild', 'rebuildstats.php', 1076112000, -1, -1, 0, 0, '640b9a6c373ff207bc1b1100a98121af', 1, 'Rebuilds board statistics',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (3, 'Daily Clean Out', 'dailycleanout.php', 1076122800, -1, -1, 3, 0, 'e71b52f3ff9419abecedd14b54e692c4', 1, 'Prunes topic subscriptions',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager VALUES (4, 'Birthday and Events Cache', 'calendarevents.php', 1076100960, -1, -1, 12, -1, '2c148c9bd754d023a7a19dd9b1535796', 1, 'Caches calendar events & birthdays',1,'',0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_id, task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) VALUES (9, 'Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, 'Rebuilds cache and expires out of date announcements', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; $SQL[] = "INSERT INTO ".SQL_PREFIX."custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; @@ -446,36 +440,36 @@ class upgrade_sql $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('birthdays', 'a:0:{}', '', 1);"; $SQL[] = "INSERT INTO ".SQL_PREFIX."cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('calendar', 'a:0:{}', '', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Главный стиль', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Стандартный стиль', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Старые стили (до 2.0)', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (1, 'IPB Master Skin Set', '1', 0, 0, '0', -1, '', '', '', '', '', '', 1079109298, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (2, 'IPB Default Skin', '1', 0, 1, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."skin_sets (set_skin_set_id, set_name, set_image_dir, set_hidden, set_default, set_css_method, set_skin_set_parent, set_author_email, set_author_name, set_author_url, set_css, set_cache_macro, set_wrapper, set_css_updated, set_cache_css, set_cache_wrapper, set_emoticon_folder) VALUES (3, 'IPB Pre-2.0 Skins', '1', 0, 0, '0', -1, 'ipbauto@invisionboard.com', 'Invision Power Services', 'www.invisionboard.com', '', '', '', 1074679074, '', '', 'default');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'Глобальные Настройки форума', 'Это основные настройки форума, такие как название форума, сайта, пути форума и т.д.', 17);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'Настройки Быстродействия', 'Позволяют ограничивать или отключать некоторые ресурсоемкие возможности форума для увеличения скорости работы вашего форума, а так же уменьшения нагрузки на сервер.', 16);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Формат даты и времени', 'Настройки формата отображения даты и времени на форуме.', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'Профили пользователей', 'Глобальные настройки профиля пользователей, аватар и фотографии.', 22);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Темы, Сообщения и Опросы', 'Группа опций для настройки параметров отображения тем, а так же ограничений при отправке сообщений, опросов.', 32);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Настройки Безопасности', 'Опции, позволяющие Вам контролировать уровень безопасности Вашего форума.', 18);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Настройка Cookies', 'Группа опций по настройке cookies. Следует изменять при нестабильной работе авторизации на форуме.', 3);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow) VALUES (8, 'Установка COPPA', 'Этот блок необходим, если вы хотите включить использование COPPA. В России не актуально.', 3, 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Календарь и дни рождения', 'Настройки отображения календаря и блока именинников форума.', 8);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'Настройка Новостей форума', 'Позволяет выбрать новостной раздел форума, откуда будут экспортироваться новости, как самим форумом, так и ssi.php.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Личные сообщения', 'Глобальные настройки системы личных сообщений форума.', 3);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Настройки E-mail', 'Позволяют настраивать служебные E-mail адреса форума, выбирать метод для отправки почты (PHP mail(), SMTP) с форума', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Система Предупреждений', 'Настройки системы предупреждений пользователей, администрацией форума.', 15);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Настройки Корзины', 'Корзина — специальный форум, в который перемещаются темы после удаления, тем самым оставляя возможность восстановить тему при ее случайном удалении.', 6);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Включение / Выключение форума', 'Группа опций для включения/выключения форума. Если форум находится в выключенном состоянии, то доступ к нему будут иметь только администраторы. Полезно при проведении технических работ на форуме.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Поисковые боты', 'Группа опций, отвечающих за настройку системы слежения за поисковыми ботами. Позволяет добавлять новых ботов, включать и отключать ведение журнала посещений ботов.', 7);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Правила форума', 'Настройки, позволяющие менять тексты правил форума выдаваемых при регистрации и глобальных правил форума.', 4);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Тип авторизации', ' ', 1);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Поисковая Система форума', 'Группа опций для настройки функционирования посиковой системы. Позволяет переключить тип поиска (обычный/полнотекстовый) и тип формы поиска.', 2);"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Настройки Invision Chat (легальная версия)', 'Это позволяет настроить интеграцию вашей легальной версии Invision Chat.', 14, 1, 'chat');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Настройки Invision Chat', 'Это позволяет настроить интеграцию вашего Invision Chat (версии 2004+)', 10, 1, 'chat04');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'Портал', 'Эти настройки позволят Вам включить/отключить и настроить IPB Портал.', 20, 0, 'ipbportal');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Менеджер рассылок (не для России)', 'Эта настройки относятся к менеджеру рассылок. В России не актуально.', 3, 1, 'subsmanager');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'Регистрация IPB', 'Этот блок позволяет вам работать с настройками лицензии на IPB.', 3, 1, 'ipbreg');"; - $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Удаление копирайта', 'Этот блок позволяет ввести ключ активации услуги удаления копирайта.', 2, 1, 'ipbcopyright');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (1, 'General Configuration', 'These settings control the basics of the board such as URLs and paths.', 17);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (2, 'CPU Saving & Optimization', 'This section allows certain features to be limited or removed to get more performance out of your board.', 16);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (3, 'Date & Time Formats', 'This section contains the date and time formats used throughout the board.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (4, 'User Profiles', 'This section allows you to adjust your member\'s global permissions and other options.', 22);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (5, 'Topics, Posts and Polls', 'These options control various elements when posting, reading topics and reading polls.', 32);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (6, 'Security and Privacy', 'These options allow you to adjust the security and privacy options for your board.', 18);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (7, 'Cookies', 'This section allows you to set the default cookie options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (8, 'COPPA Set-up', 'This section allows you to comply with COPPA.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (9, 'Calendar & Birthdays', 'This section will allow you to set up the board calendar and its related options.', 8);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (10, 'News Set-up', 'This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (11, 'Personal Message Set-up', 'This section allows you to control the global PM options.', 3);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (12, 'Email Set-up', 'This section will allow you to change the incoming and outgoing email addresses as well as the email method.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (13, 'Warn Set-up', 'This section will allow you to set up the warning system.', 15);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (14, 'Trash Can Set-up', 'The trashcan is a special forum in which topics are moved into instead of being deleted.', 6);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (15, 'Board Offline / Online', 'Use this setting to turn switch your board online or offline and leave a message for your visitors.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (16, 'Search Engine Spiders', 'This section will allow you to set up and maintain your search engine bot spider recognition settings.', 7);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (17, 'Board Guidelines', 'This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines.', 4);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (18, 'Converge Set Up', 'Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products.', 1);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count) VALUES (19, 'Full Text Search Set-Up', 'Full text searching is a very fast and very efficient way of searching large amounts of posts without maintaining a manual index. This may not be available for your system.', 2);"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ".SQL_PREFIX."conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; $SQL[] = "INSERT INTO ".SQL_PREFIX."upgrade_history (upgrade_id, upgrade_version_id, upgrade_version_human, upgrade_date, upgrade_mid, upgrade_notes) VALUES ('', '".THIS_LONG_VERSION."', '".THIS_HUMAN_VERSION."', '0', '0', '');"; @@ -1304,7 +1298,7 @@ class upgrade_sql if ( intval( $count['count'] ) < 1 ) { - print "Сохраненная копия таблицы с форумами не была нормально сделана. Продолжение этого обновления приведет к удалению всех форумов. Напишите в техническую поддержку для помощи!"; + print "The back-up forums table has not been populated successfully. Continuing this convert WILL delete all forums permanently. Contact technical support immediately."; exit(); } } diff --git a/upload/upgrade/upg_20002/version_upgrade.php b/upload/upgrade/upg_20002/version_upgrade.php index 12d3ad30..46e9427f 100644 --- a/upload/upgrade/upg_20002/version_upgrade.php +++ b/upload/upgrade/upg_20002/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20002'; var $upgrade_from = '20001'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -109,18 +104,34 @@ class version_upgrade $cnt = 0; $sql = $this->_get_sql(); + $this->ipsclass->DB->return_die = 1; + foreach( $sql as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } //-------------------------------- // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -134,15 +145,15 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); @@ -174,8 +185,8 @@ class version_upgrade $SQL[]="INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled) - VALUES ('Обновление объявлений', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, - 'Обновление кеша и удаление оконченных объявлений', 1);"; + VALUES ('Announcements Update', 'announcements.php', 1080747660, -1, -1, 4, -1, 'e82f2c19ab1ed57c140fccf8aea8b9fe', 1, + 'Rebuilds cache and expires out of date announcements', 1);"; $SQL[]="CREATE TABLE ibf_bulk_mail ( mail_id int(10) NOT NULL auto_increment, @@ -197,8 +208,9 @@ class version_upgrade $SQL[]="INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, - conf_end_group, conf_help_key, conf_add_cache) VALUES ('Добавлять «<» и «>» к полям «Кому» и «Обратный адрес» в отправляемых письмах?', - 'Некоторые SMTP сервера требует, чтобы e-mail адреса были в угловых скобках. Если вы получаете ошибку в журнале почтовых ошибок, включите эту опцию.', '12', 'yes_no', 'mail_wrap_brackets', '', '0', '', '', 1, 6, '', 0, '', 1);"; + conf_end_group, conf_help_key, conf_add_cache) VALUES ('Add '<' and '>' to 'to' and 'from' addresses?', + 'Some SMTP mailers require that email addresses are in the following format \'<\' address \'>\' (no quotes). + If you are getting errors in the mail error log, enabled this option', '12', 'yes_no', 'mail_wrap_brackets', '', '0', '', '', 1, 6, '', 0, '', 1);"; $SQL[]="create table ibf_mail_error_logs ( mlog_id int(10) auto_increment NOT NULL, @@ -235,12 +247,12 @@ class version_upgrade $SQL[]="alter table ibf_forum_tracker add forum_track_type varchar(100) NOT NULL default 'delayed';"; $SQL[]="alter table ibf_tracker add topic_track_type varchar(100) NOT NULL default 'delayed';"; - $SQL[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Указатель сообщения', 'Этот тэг показывает маленькое изображение, которое является ссылкой на цитируемое сообщение — используется, когда цитируются сообщения с форума. Открывается по умолчанию в том же окне.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; - $SQL[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По правому краю', 'Выравнивание текста по правому краю', 'right', '
      {content}
      ', 0, '[right]Любой текст здесь[/right]');"; - $SQL[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По левому краю', 'Выравнивание текста по левому краю', 'left', '
      {content}
      ', 0, '[left]Этот текст будет использовать выравнивание по левому краю[/left]');"; - $SQL[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('По центру', 'Выравнивание текста по центру.', 'center', '
      {content}
      ', 0, '[center]Выравнивание текста будет по центру[/center]');"; - $SQL[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Ссылка на тему', 'Этот тэг позволяет легко опубликовать ссылку на тему, зная лишь ее номер', 'topic', '{content}', 1, '[topic=100]Нажми на меня![/topic]');"; - $SQL[] ="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Ссылка на сообщение', 'Этот тэг позволяет легко опубликовать ссылку на сообщение, зная лишь его номер.', 'post', '{content}', 1, '[post=100]Нажми на меня![/post]');"; + $SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Snap Back', 'This tag displays a little linked image which links back to a post - used when quoting posts from the board. Opens in same window by default.', 'snapback', '<{POST_SNAPBACK}>', 0, '[snapback]100[/snapback]');"; + $SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Right', 'Aligns content to the right of the posting area', 'right', '
      {content}
      ', 0, '[right]Some text here[/right]');"; + $SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Left', 'Aligns content to the left of the post', 'left', '
      {content}
      ', 0, '[left]Left aligned text[/left]');"; + $SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Center', 'Aligns content to the center of the posting area.', 'center', '
      {content}
      ', 0, '[center]Centered Text[/center]');"; + $SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Topic Link', 'This tag provides an easy way to link to a topic', 'topic', '{content}', 1, '[topic=100]Click me![/topic]');"; + $SQL[]="INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Post Link', 'This tag provides an easy way to link to a post.', 'post', '{content}', 1, '[post=100]Click me![/post]');"; $SQL[]="alter table ibf_members change auto_track auto_track varchar(50) default '0';"; diff --git a/upload/upgrade/upg_20003/version_upgrade.php b/upload/upgrade/upg_20003/version_upgrade.php index 1ff71dea..8231bccc 100644 --- a/upload/upgrade/upg_20003/version_upgrade.php +++ b/upload/upgrade/upg_20003/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '20003'; var $upgrade_from = '20002'; - var $first_step = 'обновит ваши шаблоны.'; + var $first_step = 'update your templates.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -99,15 +93,15 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_20004/version_upgrade.php b/upload/upgrade/upg_20004/version_upgrade.php index b98542a6..b45f5572 100644 --- a/upload/upgrade/upg_20004/version_upgrade.php +++ b/upload/upgrade/upg_20004/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20004'; var $upgrade_from = '20003'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -109,18 +104,34 @@ class version_upgrade $cnt = 0; $sql = $this->_get_sql(); + $this->ipsclass->DB->return_die = 1; + foreach( $sql as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } //-------------------------------- // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -134,15 +145,15 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); @@ -158,28 +169,28 @@ class version_upgrade $SQL = array(); - $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Портал', 'Эта настройки позволяют включить и настроить ваш IPB Портал.', 20, 0, 'ipbportal');"; + $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (22,'IPB Portal', 'These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers.', 20, 0, 'ipbportal');"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Включить IPB портал?', 'Если «Да»,IPB Портал будет доступен, используя следующую запись в URL строке — index.php?act=home, или через специальный php файл, который можно взять из директории /Tools_and_Scripts/ дистрибутива с форумом.', '22', 'yes_no', 'csite_on', '', '1', '', '', 1, 1, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Заголовок страницы портала', 'Это название будет выводиться в тэге <title>, то есть, в заголовке окна браузера.', '22', 'input', 'csite_title', '', 'IPB Портал', '', '', 1, 2, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Форумы для экспорта новостей', 'Форумы, темы из которых будут экспортироваться в портал, как новости. Вы можете выбрать несколько форумов, используя «Ctrl».', '22', 'input', 'csite_article_forum', '1,2,3,4,5,6', '', '', '', 1, 3, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Количество новостей, отображаемых в основном блоке', '', '22', 'input', 'csite_article_max', '', '15', '', '', 1, 4, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Включить последние новости (малый блок)?', 'Этот пункт будет отображать маленький блок заголовков последних новостей в портале.', '22', 'yes_no', 'csite_article_recent_on', '', '1', '', '', 1, 5, 'Маленький блок последних новостей', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Максимальное количество последних новостей', '', '22', 'input', 'csite_article_recent_max', '', '5', '', '', 1, 6, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Максимальная длина заголовков новостей', '', '22', 'input', 'csite_article_len', '', '30', '', '', 1, 7, '', 1, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Формат времени для новостей', 'Подробнее о датах времени на официальном сайте PHP: Даты в PHP.', '22', 'input', 'csite_article_date', '', 'j.n.Y, G:i', '', '', 1, 3, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Включить последние темы?', '', '22', 'yes_no', 'csite_discuss_on', '', '1', '', '', 1, 9, 'Последние обсуждения', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Максимальное количество последних тем', '', '22', 'input', 'csite_discuss_max', '', '10', '', '', 1, 10, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Максимальная длина заголовков тем', '', '22', 'input', 'csite_discuss_len', '', '30', '', '', 1, 11, '', 1, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать блок информации пользователя/гостя?', '', '22', 'yes_no', 'csite_pm_show', '', '1', '', '', 1, 12, 'Компоненты портала', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать блок активных пользователей?', '', '22', 'yes_no', 'csite_online_show', '', '1', '', '', 1, 13, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать блок с формой поиска?', '', '22', 'yes_no', 'csite_search_show', '', '1', '', '', 1, 14, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать блок с выпадающем меню выбора стиля?', '', '22', 'yes_no', 'csite_skinchange_show', '', '1', '', '', 1, 15, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Введите URL адрес темы с опросом', 'Оставьте поле пустым, если не хотите выводить в портал отдельным блоком опрос', '22', 'input', 'csite_poll_url', '', '', '', '', 1, 17, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать навигационное меню?', '', '22', 'yes_no', 'csite_nav_show', '', '1', '', '', 1, 18, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Ссылки навигационного меню', 'Используйте одну ссылку на строку, вводите в следующем формате:
      http://www.yandex.ru [Яndex]

      Запись {board_url} будет заменена на URL вашего форума', '22', 'textarea', 'csite_nav_contents', '', '{board_url} [Форумыы]\r\n{board_url}act=Search&CODE=getactive [Активные темы]\r\n{board_url}act=Stats [Лучшие сегодня]\r\n{board_url}act=Stats&CODE=leaders [Администрация]', '', 'if ( $show == 1)\r\n{\r\n $value = preg_replace( \"/&(middot|quot|copy|amp)/\", \"&\\\\1\", $value );\r\n}', 1, 19, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать блок с рекомендуемыми ссылками?', 'Например, ссылки на сайты ваших партнеров.', '22', 'yes_no', 'csite_fav_show', '', '0', '', '', 1, 20, '', 0, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Содержание блока с рекомендуемыми ссылками', 'HTML включе', '22', 'textarea', 'csite_fav_contents', '', '', '', 'if ( $show == 1)\r\n{\r\n $value = preg_replace( \"/&(middot|quot|copy|amp)/\", \"&\\\\1\", $value );\r\n}', 1, 21, '', 1, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('ENABLE IPB Portal?', 'If \'yes\', IPB Portal can be accessed via \'index.php?act=home\' or via the special \'index.php\' script (see documentation for more info).', '22', 'yes_no', 'csite_on', '', '1', '', '', 1, 1, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Portal Page Title?', 'This will appear inbetween the <title> elements on the page', '22', 'input', 'csite_title', '', 'IPB Portal', '', '', 1, 2, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Forums to export articles from', 'Separate forum ids with a comma for more than one', '22', 'input', 'csite_article_forum', '1,2,3,4,5,6', '', '', '', 1, 3, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Number of Articles to display in the main section', '', '22', 'input', 'csite_article_max', '', '15', '', '', 1, 4, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable Recent Articles?', 'This will show a list of recent topic titles on the IPB Portal page', '22', 'yes_no', 'csite_article_recent_on', '', '1', '', '', 1, 5, 'IPB Portal Recent Articles', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. no recent articles to show', '', '22', 'input', 'csite_article_recent_max', '', '5', '', '', 1, 6, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. length of topic titles', '', '22', 'input', 'csite_article_len', '', '30', '', '', 1, 7, '', 1, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Date format for articles', 'Same as PHP\'s date function', '22', 'input', 'csite_article_date', '', 'm-j-y H:i', '', '', 1, 3, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable Recent Discussions', '', '22', 'yes_no', 'csite_discuss_on', '', '1', '', '', 1, 9, 'IPB Portal Recent Discussions', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. no recent discussions to show', '', '22', 'input', 'csite_discuss_max', '', '10', '', '', 1, 10, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Max. length of topic titles', '', '22', 'input', 'csite_discuss_len', '', '30', '', '', 1, 11, '', 1, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show User / Guest Info box?', '', '22', 'yes_no', 'csite_pm_show', '', '1', '', '', 1, 12, 'IPB Portal Components', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show online users?', '', '22', 'yes_no', 'csite_online_show', '', '1', '', '', 1, 13, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show search box?', '', '22', 'yes_no', 'csite_search_show', '', '1', '', '', 1, 14, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable skin selection choice dropdown?', '', '22', 'yes_no', 'csite_skinchange_show', '', '1', '', '', 1, 15, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enter URL to poll topic for inclusion', 'Leave blank to not show a poll or the poll box', '22', 'input', 'csite_poll_url', '', '', '', '', 1, 17, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show Site Navigation Menu?', '', '22', 'yes_no', 'csite_nav_show', '', '1', '', '', 1, 18, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Site Navigation Menu Links', 'One per line in this format
      http://www.apple.com [Apple\'s Website]

      {board_url} will convert into your board', '22', 'textarea', 'csite_nav_contents', '', '{board_url} [Forums]\r\n{board_url}act=Search&CODE=getactive [Today\'s Active Topics]\r\n{board_url}act=Stats [Today\'s Top 10 Posters]\r\n{board_url}act=Stats&CODE=leaders [Contact Staff]', '', 'if ( $show == 1)\r\n{\r\n $value = preg_replace( \"/&(middot|quot|copy|amp)/\", \"&\\\\1\", $value );\r\n}', 1, 19, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show Affiliates / Favoured Sites box?', '', '22', 'yes_no', 'csite_fav_show', '', '0', '', '', 1, 20, '', 0, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show Affiliates / Favoured Sites box content', 'Raw HTML enabled', '22', 'textarea', 'csite_fav_contents', '', '', '', 'if ( $show == 1)\r\n{\r\n $value = preg_replace( \"/&(middot|quot|copy|amp)/\", \"&\\\\1\", $value );\r\n}', 1, 21, '', 1, '', 0);"; return $SQL; diff --git a/upload/upgrade/upg_20005/version_upgrade.php b/upload/upgrade/upg_20005/version_upgrade.php index 9102da21..7206e139 100644 --- a/upload/upgrade/upg_20005/version_upgrade.php +++ b/upload/upgrade/upg_20005/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20005'; var $upgrade_from = '20004'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -109,18 +104,34 @@ class version_upgrade $cnt = 0; $sql = $this->_get_sql(); + $this->ipsclass->DB->return_die = 1; + foreach( $sql as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } //-------------------------------- // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -134,15 +145,16 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      + "; $this->ipsclass->template->output(); @@ -157,9 +169,10 @@ class version_upgrade $SQL = array(); - $SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отправка рассылки пользователям', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Динамически назначается, нет необходимости изменять', 0, 'bulkmail', 1);"; - $SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Ежедневный обзор тем и форума', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Ежедневная рассылка тем и обзора форума', 1, 'dailydigest', 0);"; - $SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Еженедельный обзор тем и форума', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Еженедельная рассылка тем и обзора форума', 1, 'weeklydigest', 0);"; + $SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Send Bulk Mail', 'bulkmail.php', 1086706080, -1, -1, -1, -1, '61359ac93eb93ebbd935a4e275ade2db', 0, 'Dynamically assigned, no need to edit or change', 0, 'bulkmail', 1);"; + $SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Daily Topic & Forum Digest', 'dailydigest.php', 1086912600, -1, -1, 0, 10, '723cab2aae32dd5d04898b1151038846', 1, 'Emails out daily topic & forum digest emails', 1, 'dailydigest', 0);"; + $SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Weekly Topic & Forum Digest', 'weeklydigest.php', 1087096200, 0, -1, 3, 10, '7e7fccd07f781bdb24ac108d26612931', 1, 'Emails weekly topic & forum digest emails', 1, 'weeklydigest', 0);"; + return $SQL; } diff --git a/upload/upgrade/upg_20006/version_upgrade.php b/upload/upgrade/upg_20006/version_upgrade.php index bfbc35eb..d28e574c 100644 --- a/upload/upgrade/upg_20006/version_upgrade.php +++ b/upload/upgrade/upg_20006/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PDR1 -> PDR 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20006'; var $upgrade_from = '20005'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -109,18 +104,34 @@ class version_upgrade $cnt = 0; $sql = $this->_get_sql(); + $this->ipsclass->DB->return_die = 1; + foreach( $sql as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } //-------------------------------- // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -134,15 +145,16 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      + "; $this->ipsclass->template->output(); @@ -165,49 +177,49 @@ class version_upgrade $SQL[] = "alter table ibf_topic_mmod add topic_approve tinyint(1) NOT NULL default '0';"; $SQL[] = "alter table ibf_groups add g_attach_per_post int(10) NOT NULL default '0';"; - $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Менеджер рассылок (не для России)', 'Эта настройки относятся к менеджеру рассылок. В России не актуально.', 3, 1, 'subsmanager');"; - $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'Регистрация IPB', 'Этот блок позволяет вам работать с настройками лицензии на IPB.', 3, 1, 'ipbreg');"; - $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Удаление копирайта', 'Этот блок позволяет ввести ключ активации услуги удаления копирайта.', 2, 1, 'ipbcopyright');"; - $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Настройки Invision Chat (легальная версия)', 'Это позволяет настроить интеграцию вашей легальной версии Invision Chat.', 14, 1, 'chat');"; - $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id, conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Настройки Invision Chat', 'Это позволяет настроить интеграцию вашего Invision Chat (версии 2004+)', 10, 1, 'chat04');"; + $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id,conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (23,'Subscriptions Manager', 'These settings control various subscription manager features.', 3, 0, 'subsmanager');"; + $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id,conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (24,'IPB Registration', 'This section will allow you to edit your IPB registered licence settings.', 3, 1, 'ipbreg');"; + $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id,conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (25,'IPB Copyright Removal', 'This section allows you to manage your copyright removal key.', 2, 1, 'ipbcopyright');"; + $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id,conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (20,'Invision Chat Settings (Legacy Version)', 'This will allow you to customize your Invision Chat integration settings for the legacy edition.', 14, 1, 'chat');"; + $SQL[] = "INSERT INTO ibf_conf_settings_titles (conf_title_id,conf_title_title, conf_title_desc, conf_title_count, conf_title_noshow, conf_title_keyword) VALUES (21,'Invision Chat Settings', 'This will allow you to customize your Invision Chat integration settings for the new 2004 edition', 10, 1, 'chat04');"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Добавлять «<» и «>» к полям «Кому» и «Обратный адрес» в отправляемых письмах?', 'Некоторые SMTP сервера требует, чтобы e-mail адреса были в угловых скобках. Если вы получаете ошибка в журнале почтовых ошибок, включите эту опцию.', '12', 'yes_no', 'mail_wrap_brackets', '', '0', '', '', 1, 6, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Номер учетной записи комнаты чата?', 'Удаление этого номера удалит все ссылки / чат функционирует без IPB.\r\n', '20', 'input', 'chat_account_no', '', '', '', '', 1, 1, 'Настройки учетной записи', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Сервер комнаты чата?', '', '20', 'input', 'chat_server_addr', '', '', '', '', 1, 2, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Включить 'Кто в чате?'', 'Если эту опцию включить, то на главной странице форума в блоке статистики будет показываться блок с пользователям, кто сейчас находится в чате.', '20', 'yes_no', 'chat_who_on', '', '1', '', '', 1, 3, 'Кто в чате', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Скрывать «Кто в чате», когда нет пользователей в чате?', '', '20', 'yes_no', 'chat_hide_whoschatting', '', '1', '', '', 1, 4, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Обновлять локальный список не менее, чем каждые:', 'Локальный список обновляется от основного сервера чата с установленной вами частотой и кешируется локально. В минутах.', '20', 'dropdown', '', '', '15', '5=5\r\n10=10\r\n15=15\r\n30=30', '', 1, 5, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Изменение пароля панели управления IPChat?', 'Если вы изменили ваш пароль от панели управления IPChat пожалуйста добавьте новый пароль здесь. Оставьте поле пустым, если не изменяли.', '20', 'input', 'chat_pass_md5', '', '', '', '', 1, 6, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('ВВЕДИТЕ ВАШ ПАРОЛЬ К ПАНЕЛИ УПРАВЛЕНИЯ IPCHAT', 'Вы обязаны ввести ваш паролья к панели управления IPChat для разрешения определения списка «Кто в чате».', '20', 'input', 'chat_pass_md5_new', '', '', '', '', 1, 7, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Размеры комнаты чата (ШИРИНА)?', '', '20', 'input', 'chat_width', '', '600', '', '', 1, 8, 'Отображение комнаты чата', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Размеры комнаты чата (ВЫСОТА)?', '', '20', 'input', 'chat_height', '', '350', '', '', 1, 9, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Pop-up окно комнаты чата фиксированных размеров? (в пикселях)', 'Разрешить открывать окно без полос прокрутки', '20', 'input', 'chat_poppad', '', '50', '', '', 1, 10, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Язык интерфейса чата по умолчанию?', '', '20', 'dropdown', 'chat_language', '', 'ru', 'en=English\r\nar=Арабский\r\nde=Немецкий\r\nes=Испанский\r\nfr=Французский\r\nhr=Хорватский\r\nit=Итальянский\r\niw=Иврит\r\nnl=Датский\r\npl=Польский\r\npt=Португальский', '', 1, 11, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Загружать комнату чата в...?', '', '20', 'dropdown', 'chat_display', '', 'self', 'self=Нормальной IPB странице\r\nnew=В новом окне (Pop-Up)', '', 1, 9, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Разрешить доступ в чат для этих групп', 'Вы можете выбирать более, чем одну', '20', 'multi', 'chat_access_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat_access_groups\']) )\r\n {\r\n \$POST[\'chat_access_groups\'] = implode(\",\",\$POST[\'chat_access_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat_access_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat_access_groups\';\r\n}if ( \$show == 1 ) { \$key=\'chat_access_groups[]\'; }', 1, 13, 'Права доступа', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Разрешить права администратора этим группам', 'Вы можете выбирать более, чем одну — пожалуйста, выбирайте внимательно!', '20', 'multi', 'chat_admin_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat_admin_groups\']) )\r\n {\r\n \$POST[\'chat_admin_groups\'] = implode(\",\",\$POST[\'chat_admin_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat_admin_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat_admin_groups\';\r\n}if ( \$show == 1 ) { \$key=\'chat_admin_groups[]\'; }', 1, 14, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Номер учетной записи комнаты чата (название группы)?', 'Удаление этого номера удалит все ссылки / чат функционирует без IPB.\r\n', '21', 'input', 'chat04_account_no', '', '', '', '', 1, 1, 'Настройки учетной записи', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('URL адрес комнаты чата?', '', '21', 'input', 'chat04_whodat_server_addr', '', 'http://invision.parachat.com/cgi-bin/userlist/test', '', '', 1, 2, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Включить 'Кто в чате?'', 'Если эту опцию включить, то на главной странице форума в блоке статистики будет показываться блок с пользователям, кто сейчас находится в чате.', '21', 'yes_no', 'chat04_who_on', '', '1', '', '', 1, 3, 'Кто в чате', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Add '<' and '>' to 'to' and 'from' addresses?', 'Some SMTP mailers require that email addresses are in the following format \'<\' address \'>\' (no quotes). If you are getting errors in the mail error log, enabled this option', '12', 'yes_no', 'mail_wrap_brackets', '', '0', '', '', 1, 6, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Account Number?', 'Removing this number will remove all links / chat functionality within IPB.\r\n', '20', 'input', 'chat_account_no', '', '', '', '', 1, 1, 'Account Specifics', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Server?', '', '20', 'input', 'chat_server_addr', '', '', '', '', 1, 2, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable 'Who's Chatting?'', 'If enabled, this will show who\'s chatting in the chat room on your forums home page underneath the active users list.', '20', 'yes_no', 'chat_who_on', '', '1', '', '', 1, 3, 'Who's Chatting', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Hide Who's Chatting when no members are logged into chat?', '', '20', 'yes_no', 'chat_hide_whoschatting', '', '1', '', '', 1, 4, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Update local list no less than every:', 'The local list is updated from the master chat server by the frequency you set and cached locally.', '20', 'dropdown', '', '', '15', '5=5\r\n10=10\r\n15=15\r\n30=30', '', 1, 5, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Changed your IPChat control panel password?', 'If you have changed your IPChat control panel password, please add the new password here. Leave blank if it\'s not changed.', '20', 'input', 'chat_pass_md5', '', '', '', '', 1, 6, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('ENTER YOUR IPCHAT CONTROL PANEL PASSWORD', 'You must enter your IPChat control panel password to allow retrieval of the Who\'s Chatting list.', '20', 'input', 'chat_pass_md5_new', '', '', '', '', 1, 7, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (WIDTH)?', '', '20', 'input', 'chat_width', '', '600', '', '', 1, 8, 'Showing the chat room', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (HEIGHT)?', '', '20', 'input', 'chat_height', '', '350', '', '', 1, 9, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Pop-up Window Padding? (in px)', 'Allows window to open without scrollbars', '20', 'input', 'chat_poppad', '', '50', '', '', 1, 10, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Default Chat Room Interface Language?', '', '20', 'dropdown', 'chat_language', '', 'en', 'en=English\r\nar=Arabic\r\nde=German\r\nes=Spanish\r\nfr=French\r\nhr=Croation\r\nit=Italian\r\niw=Hebrew\r\nnl=Dutch\r\npl=Polish\r\npt=Portuguese', '', 1, 11, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Load the chat room in...?', '', '20', 'dropdown', 'chat_display', '', 'self', 'self=Normal IPB Page\r\nnew=New Pop Up Window', '', 1, 9, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow chat access to these groups', 'You may select more than one', '20', 'multi', 'chat_access_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat_access_groups\']) )\r\n {\r\n \$POST[\'chat_access_groups\'] = implode(\",\",\$POST[\'chat_access_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat_access_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat_access_groups\';\r\n}if ( \$show == 1 ) { \$key=\'chat_access_groups[]\'; }', 1, 13, 'Access Permissions', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow ADMIN access to these groups', 'You may select more than one - please choose carefully!', '20', 'multi', 'chat_admin_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat_admin_groups\']) )\r\n {\r\n \$POST[\'chat_admin_groups\'] = implode(\",\",\$POST[\'chat_admin_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat_admin_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat_admin_groups\';\r\n}if ( \$show == 1 ) { \$key=\'chat_admin_groups[]\'; }', 1, 14, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Account Number?', 'Removing this number will remove all links / chat functionality within IPB.\r\n', '21', 'input', 'chat04_account_no', '', '', '', '', 1, 1, 'Account Specifics', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room URL?', '', '21', 'input', 'chat04_whodat_server_addr', '', 'http://invision.parachat.com/cgi-bin/userlist/test', '', '', 1, 2, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Enable 'Who's Chatting?'', 'If enabled, this will show who\'s chatting in the chat room on your forums home page underneath the active users list.', '21', 'yes_no', 'chat04_who_on', '', '1', '', '', 1, 3, 'Who's Chatting', 0, '', 1);"; $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Hide Who's Chatting when no members are logged into chat?', '', '21', 'yes_no', 'chat04_hide_whoschatting', '', '1', '', '', 1, 4, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Обновлять локальный список не менее, чем каждые:', 'Локальный список обновляется от основного сервера чата с установленной вами частотой и кешируется локально. В минутах.', '21', 'dropdown', 'chat04_who_save', '', '1', '1=1\r\n5=5\r\n10=10\r\n15=15\r\n30=30', '', 1, 5, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Размеры комнаты чата (ШИРИНА)?', '', '21', 'input', 'chat04_width', '', '600', '', '', 1, 8, 'Отображение комнаты чата', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Размеры комнаты чата (ВЫСОТА)?', '', '21', 'input', 'chat04_height', '', '350', '', '', 1, 9, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Pop-up окно комнаты чата фиксированных размеров? (в пикселях)', 'Разрешить открывать окно без полос прокрутки', '21', 'input', 'chat04_poppad', '', '50', '', '', 1, 10, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Загружать комнату чата в...?', '', '21', 'dropdown', 'chat04_display', '', 'self', 'self=Нормальной IPB странице\r\nnew=Новом окне (Pop-Up)', '', 1, 9, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Разрешить доступ в чат для этих групп', 'Вы можете выбирать более, чем одну', '21', 'multi', 'chat04_access_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat04_access_groups\']) )\r\n {\r\n \$POST[\'chat04_access_groups\'] = implode(\",\",\$POST[\'chat04_access_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat04_access_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat04_access_groups\';\r\n}', 1, 13, 'Права доступа', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Update local list no less than every:', 'The local list is updated from the master chat server by the frequency you set and cached locally.', '21', 'dropdown', 'chat04_who_save', '', '1', '1=1\r\n5=5\r\n10=10\r\n15=15\r\n30=30', '', 1, 5, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (WIDTH)?', '', '21', 'input', 'chat04_width', '', '600', '', '', 1, 8, 'Showing the chat room', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Dimensions (HEIGHT)?', '', '21', 'input', 'chat04_height', '', '350', '', '', 1, 9, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Chat Room Pop-up Window Padding? (in px)', 'Allows window to open without scrollbars', '21', 'input', 'chat04_poppad', '', '50', '', '', 1, 10, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Load the chat room in...?', '', '21', 'dropdown', 'chat04_display', '', 'self', 'self=Normal IPB Page\r\nnew=New Pop Up Window', '', 1, 9, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow chat access to these groups', 'You may select more than one', '21', 'multi', 'chat04_access_groups', '', '', '#show_groups#', 'if ( \$save == 1)\r\n{\r\n if ( is_array(\$POST[\'chat04_access_groups\']) )\r\n {\r\n \$POST[\'chat04_access_groups\'] = implode(\",\",\$POST[\'chat04_access_groups\']);\r\n }\r\n else\r\n {\r\n \$POST[\'chat04_access_groups\'] = '';\r\n }\r\n \r\n \$key = \'chat04_access_groups\';\r\n}', 1, 13, 'Access Permissions', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Разрешить создателю опроса голосовать в нем?', '5', 'yes_no', 'allow_creator_vote', '', '1', '', '', 1, 31, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Регистрационные правила и положения', 'Содержание этой секции будет отображено пользователям перед тем, как они непосредственно перейдут к заполнению полей при регистрации.\r\nHTML Включен', '17', 'textarea', 'reg_rules', '', 'Правила и положения форума\r\n\r\nПожалуйста уделите немного внимания и прочтите краткие правила, указанные ниже. Если вы принимаете их и желаете продолжить процесс регистрации, отметьте свое согласие и нажмите кнопку «Регистрация». Для отмены регистрации нажмите кнопку «Назад» в вашем браузере.\r\n\r\nПожалуйста помните, что мы не отвечаем на все публикуемые сообщения.\r\n\r\nНа форуме отсутствует предварительная проверка открываемых тем и публикаций. Как только вы отправляете сообщение — оно сразу публикуется на форуме. Администрация форума снимает с себя ответственность за содержание сообщений, публикуемых пользователями. Ответственность за содержание сообщения несет только его автор.\r\n\r\nНа форуме запрещено:\r\nотправка сообщений не по содержанию форума/темы, оскорбления и угрозы в адрес пользователей форума, пропаганда расовой, национальной и религиозной вражды; реклама и самореклама; ненормативная лексика, сексуальные домогательства и т.д.\r\n\r\nНарушители правил будут строго наказаны модераторами или администраторами форума и им будет закрыт доступ на форум.\r\n\r\nСогласившись с правилами, вы соглашаетесь не публиковать любой материал, защищенный авторским правом, если авторское право не принадлежит вам.\r\n', '', '', 1, 5, 'Правила и положения форума', 1, '', 0);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать пакеты подписки при регистрации пользователя?', 'Если этот пункт включен, пакеты подписки будут показываться на странице регистрации, и пользователь сможет выбрать нужный пакет...', '23', 'yes_no', 'subsm_show_reg', '', '1', '', '', 1, 1, 'Опционально во время регистрации', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Требовать от каждого пользователя выбора пакета подписки', 'Если пункт включен, пользователь должен будет обязательно выбрать какой-то пакет подписки при регистрации.', '23', 'yes_no', 'subsm_enforce', '', '0', '', '', 1, 2, 'Force Package Purchase', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Группа пользователей, в которую попадет пользователь после регистрации и до оплаты пакета?', 'Если этот пункт включить, то каждый регистрирующийся пользователь будет попадать в указанную группу пользователей, пока не оплатит выбранный пакет...', '23', 'dropdown', 'subsm_nopkg_group', '', '1', '#show_groups#', '', 1, 3, '', 1, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Каким способом администратору получать жалобы?', 'Куда вы хотите получать жалобы от пользователей?', '6', 'dropdown', 'reportpost_method', '', 'pm', 'email=На email\r\npm=Личным сообщением', '', 1, 19, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Отображать информацию о том, на кого зарегистрирован ваш IPB?', 'Если этот пункт включен, то в нижней части вашего форума будет отображаться строчка — «Зарегистрировано на: ...».', '24', 'yes_no', 'ipb_reg_show', '', '0', '', '', 1, 2, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Показывать «Зарегистрировано на...»', 'Примеры: Иван Петров или Компания Invision Power Services', '24', 'input', 'ipb_reg_name', '', '', '', '', 1, 3, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Регистрационный ключ', 'НЕ УДАЛЯЙТЕ И НЕ ИЗМЕНЯЙТЕ ЭТОТ КЛЮЧ, ПОКА ВЫ НА 100% НЕ УВЕРЕНЫ В ТОМ, ЧТО ВЫ ДЕЛАЕТЕ!', '24', 'input', 'ipb_reg_number', '', '', '', '', 1, 1, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Ключ удаления копирайта IPB', 'Ваш ключ для удаления копирайта IPB, полученный от IPS.', '25', 'input', 'ipb_copy_number', '', '', '', '', 1, 1, '', 0, '', 1);"; - $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Отключить копирайт?', '', '25', 'yes_no', 'ips_cp_purchase', '', '0', '', '', 1, 2, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Allow poll creator to vote in own poll?', 'If set to \"yes\", the poll creator will have the option of voting in their own poll.', '5', 'yes_no', 'allow_creator_vote', '', '1', '', '', 1, 31, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Registration Terms & Rules', 'The content of this section will be displayed before a member can register a new account.\r\nHTML ENABLED', '17', 'textarea', 'reg_rules', '', 'Forum Terms & Rules\r\n\r\nPlease take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the \"Register\" button below. To cancel this registration, simply hit the \'back\' button on your browser.\r\n\r\nPlease remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message.\r\n\r\nThe messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary.\r\n\r\nYou agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person\'s privacy, or otherwise violative of any law.\r\n\r\nYou agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board.\r\n', '', '', 1, 5, 'Registration Terms & Rules', 1, '', 0);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show subscription packages when registering?', 'If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one.', '23', 'yes_no', 'subsm_show_reg', '', '1', '', '', 1, 1, 'Optional Purchase Upon Registration', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Force every member to require a subscriptions package', 'If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board.', '23', 'yes_no', 'subsm_enforce', '', '0', '', '', 1, 2, 'Force Package Purchase', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Member group to use after registration but before package purchase?', 'If you require that every member purchases a subscription, choose a group to move the member into once they have validated their registration prior to purchasing a subscriptions manager package.\r\nMembers in this group will see the \'Purchase Subscriptions\' page when logged in and if they don\'t already have a package.', '23', 'dropdown', 'subsm_nopkg_group', '', '1', '#show_groups#', '', 1, 3, '', 1, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Reported Post Notifications sent to', 'Where do you want reported post notifications to go?', '6', 'dropdown', 'reportpost_method', '', 'pm', 'email=Email\r\npm=Personal Message', '', 1, 19, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Display registered to line?', 'If enabled, you can optionally add a \"registered to\" line at the bottom of your board.', '24', 'yes_no', 'ipb_reg_show', '', '0', '', '', 1, 2, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Show as registered to...', 'Examples: Matthew Mecham, IPS, Inc.', '24', 'input', 'ipb_reg_name', '', '', '', '', 1, 3, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Registered Licence Key', 'This is the IPB registraton key NOT your customer code or client center password. To get your key, log into your client center and click on \'Invision Power Board\' under \'Purchased Services\'.\r\n
      DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU\'RE SURE OF WHAT YOU\'RE DOING!', '24', 'input', 'ipb_reg_number', '', '', '', '', 1, 1, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('IPB Copyright Removal Key', 'Your copyright removal key obtained from IPS.', '25', 'input', 'ipb_copy_number', '', '', '', '', 1, 1, '', 0, '', 1);"; + $SQL[] = "INSERT INTO ibf_conf_settings (conf_title, conf_description, conf_group, conf_type, conf_key, conf_value, conf_default, conf_extra, conf_evalphp, conf_protected, conf_position, conf_start_group, conf_end_group, conf_help_key, conf_add_cache) VALUES ('Copyright Purchased?', '', '25', 'yes_no', 'ips_cp_purchase', '', '0', '', '', 1, 2, '', 0, '', 1);"; return $SQL; } diff --git a/upload/upgrade/upg_20007/ipb_settings_partial.xml b/upload/upgrade/upg_20007/ipb_settings_partial.xml index c876145e..6604ff60 100644 --- a/upload/upgrade/upg_20007/ipb_settings_partial.xml +++ b/upload/upgrade/upg_20007/ipb_settings_partial.xml @@ -1,10 +1,10 @@ - + - 91 - ????? ??????? ?????? ??????? ????? - ???????? ????? ?????? ?????? ??? ?????? / ??? ????????????? ??? IPB. + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. 20 input @@ -15,16 +15,16 @@ 1 1 - ????????? ??????? ?????? + Account Specifics 0 1 - 71 - ????? ??????? ?????? ??????? ???? (???????? ??????)? - ???????? ????? ?????? ?????? ??? ?????? / ??? ????????????? ??? IPB. + 202 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. 21 input @@ -35,16 +35,16 @@ 1 1 - ????????? ??????? ?????? + Account Specifics 0 1 - 107 - ???????? IPB ??????? - + 216 + ENABLE IPB Portal? + 22 yes_no csite_on @@ -61,9 +61,9 @@ - 105 - ???? ???????? ????????? IPB - ??? ???? ??? ???????? ????????? IPB, ?????????? ?? IPS. + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. 25 input ipb_copy_number @@ -80,9 +80,10 @@ - 127 - IPB ??????????????? ???? - + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> 24 input ipb_reg_number @@ -99,9 +100,9 @@ - 162 - ?????????? ?????? ???????? ??? ??????????? ????????????? - ???? ???? ????? ???????, ?????? ???????? ????? ???????????? ?? ???????? ???????????, ? ???????????? ?????? ??????? ?????? ?????... + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. 23 yes_no subsm_show_reg @@ -111,15 +112,15 @@ 1 1 - ??????????? ?? ????? ??????????? + Optional Purchase Upon Registration 1 1 - 92 - ?????? ??????? ????? + 189 + Chat Room Server? ]]> 20 input @@ -137,18 +138,18 @@ - 74 - URL ????? ??????? ????? + 203 + Chat Room URL? ]]> 21 input chat04_whodat_server_addr - --Not currently required-- + http://invision.parachat.com/cgi-bin/userlist/test 1 - 3 + 2 1 @@ -156,8 +157,8 @@ - 106 - ????????? ????????? + 247 + Copyright Purchased? 25 yes_no @@ -175,9 +176,9 @@ - 128 - ?????????? ?????????? ? ???, ?? ???? ??????????????? ??? IPB? - + 243 + Display registered to line? + 24 yes_no ipb_reg_show @@ -193,11 +194,10 @@ 1 - - 163 - ????????? ?? ??????? ???????????? ?????? ?????? ???????? - ???? ????? ???????, ???????????? ?????? ????? ??????????? ??????? ?????-?? ????? ???????? ??? ???????????. + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. 23 yes_no subsm_enforce @@ -207,21 +207,21 @@ 1 2 - ?????????? ??????? + Force Package Purchase 0 1 - 108 - ????????? ???????? ??????? - + 217 + IPB Portal Page Title? + 22 input csite_title - ?????? IPB + IPB Portal 1 @@ -233,14 +233,14 @@ - 109 - ?????? ??????? ??? ???????? - ???? ? PHP.]]> + 223 + Date format for articles + Same as PHP's date function]]> 22 input csite_article_date - j.n.Y, G:i + m-j-y H:i 1 @@ -252,9 +252,9 @@ - 93 - - + 190 + + 20 yes_no chat_who_on @@ -264,16 +264,16 @@ 1 3 - + 0 1 - 75 - - + 204 + + 21 yes_no chat04_who_on @@ -282,40 +282,24 @@ 1 - 4 - + 3 + 0 1 - 110 - ?????? ??? ???????? ???????? - + 218 + Forums to export articles from + forum ids with a comma for more than one]]> 22 - multi + input csite_article_forum - #show_forums# - + + 1 3 @@ -325,9 +309,10 @@ $key = 'csite_article_forum[]'; - 164 - ?????? ?????????????, ? ??????? ??????? ???????????? ????? ??????????? ? ?? ?????? ??????? - + 241 + Member group to use after registration but before package purchase? + 23 dropdown subsm_nopkg_group @@ -344,9 +329,9 @@ $key = 'csite_article_forum[]'; - 129 - - + 244 + Show as registered to... + Matthew Mecham
      , IPS, Inc.]]> 24 input ipb_reg_name @@ -363,8 +348,8 @@ $key = 'csite_article_forum[]'; - 94 - + 191 + 20 yes_no @@ -382,8 +367,8 @@ $key = 'csite_article_forum[]'; - 76 - + 205 + 21 yes_no @@ -393,7 +378,7 @@ $key = 'csite_article_forum[]'; 1 - 5 + 4 0 @@ -401,8 +386,8 @@ $key = 'csite_article_forum[]'; - 111 - ?????????? ????????, ???????????? ? ???????? ????? + 219 + Number of Articles to display in the main section 22 input @@ -420,9 +405,9 @@ $key = 'csite_article_forum[]'; - 112 - ???????? ????????? ??????? (????? ????)? - ???? ????? ????? ?????????? ????????? ???? ?????????? ????????? ???????? ? ???????. + 220 + Enable Recent Articles? + This will show a list of recent topic titles on the IPB Portal page 22 yes_no csite_article_recent_on @@ -432,49 +417,47 @@ $key = 'csite_article_forum[]'; 1 5 - ????????? ???? ????????? ???????? + IPB Portal Recent Articles 0 0 - 5 - ??????????????? ??????? ? ????????? - HTML ???????]]> + 238 + + HTML ENABLED]]> 17 textarea reg_rules - ??????? ? ????????? ?????? + Forum Terms & Rules -?????????? ??????? ??????? ???????? ? ???????? ??????? ???????, ????????? ????. ???? ?? ?????????? ?? ? ??????? ?????????? ??????? ???????????, ???????? ???? ???????? ? ??????? ?????? «???????????». ??? ?????? ??????????? ??????? ?????? «?????» ? ????? ????????. +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. -?????????? ???????, ??? ?? ?? ???????? ?? ??? ??????????? ?????????. +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. -?? ?????? ??????????? ??????????????? ???????? ??????????? ??? ? ??????????. ??? ?????? ?? ??????????? ????????? — ??? ????? ??????????? ?? ??????. ????????????? ?????? ??????? ? ???? ??????????????? ?? ?????????? ?????????, ??????????? ??????????????. ??????????????? ?? ?????????? ????????? ????? ?????? ??? ?????. +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. -?? ?????? ?????????: -???????? ????????? ?? ?? ?????????? ??????/????, ??????????? ? ?????? ? ????? ????????????? ??????, ?????????? ???????, ???????????? ? ??????????? ??????; ??????? ? ???????????; -????????????? ???????, ??????????? ?????????????? ? ?.?. +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. -?????????? ?????? ????? ?????? ???????? ???????????? ??? ???????????????? ?????? ? ?? ????? ?????? ?????? ?? ?????. - -???????????? ? ?????????, ?? ???????????? ?? ??????????? ????? ????????, ?????????? ????????? ??????, ???? ????????? ????? ?? ??????????? ???.]]> +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> 1 5 - ??????? ? ????????? ?????? + 1 0 - 95 - ????????? ????????? ?????? ?? ?????, ??? ??????: - ????????? ?????? ??????????? ?? ????????? ??????? ???? ? ????????????? ???? ???????? ? ?????????? ????????. ? ???????. + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. 20 dropdown chat_refresh_list @@ -494,22 +477,22 @@ $key = 'csite_article_forum[]'; - 77 - ????????? ????????? ?????? ?? ?????, ??? ??????: - ????????? ?????? ??????????? ?? ????????? ??????? ???? ? ????????????? ???? ???????? ? ?????????? ????????. ? ???????. + 206 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. 21 dropdown chat04_who_save - 2 - 2=2 + 1 + 1=1 5=5 10=10 15=15 30=30 1 - 6 + 5 1 @@ -517,18 +500,18 @@ $key = 'csite_article_forum[]'; - 97 - ??????? ??? ?????? ? ?????? ?????????? IPCHAT - + 193 + Changed your IPChat control panel password? + 20 input - chat_pass_md5_new + chat_pass_md5 1 - 7 + 6 0 @@ -536,8 +519,8 @@ $key = 'csite_article_forum[]'; - 113 - ???????????? ?????????? ????????? ???????? + 221 + Max. no recent articles to show 22 input @@ -555,9 +538,9 @@ $key = 'csite_article_forum[]'; - 97 - ??????? ??? ?????? ? ?????? ?????????? IPCHAT - + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + 20 input chat_pass_md5_new @@ -574,8 +557,8 @@ $key = 'csite_article_forum[]'; - 114 - ???????????? ????? ?????????? ???????? + 222 + Max. length of topic titles 22 input @@ -593,8 +576,8 @@ $key = 'csite_article_forum[]'; - 98 - ??????? ??????? ???? (??????)? + 195 + Chat Room Dimensions (WIDTH)? 20 input @@ -605,15 +588,15 @@ $key = 'csite_article_forum[]'; 1 8 - ??????????? ??????? ???? + Showing the chat room 0 1 - 78 - ??????? ??????? ???? (??????)? + 209 + Chat Room Dimensions (WIDTH)? 21 input @@ -624,15 +607,15 @@ $key = 'csite_article_forum[]'; 1 8 - ??????????? ??????? ???? + Showing the chat room 0 1 - 99 - ??????? ??????? ???? (??????)? + 196 + Chat Room Dimensions (HEIGHT)? 20 input @@ -650,8 +633,8 @@ $key = 'csite_article_forum[]'; - 79 - ??????? ??????? ???? (??????)? + 210 + Chat Room Dimensions (HEIGHT)? 21 input @@ -669,8 +652,8 @@ $key = 'csite_article_forum[]'; - 115 - ???????? ????????? ????? + 224 + Enable Recent Discussions 22 yes_no @@ -681,23 +664,23 @@ $key = 'csite_article_forum[]'; 1 9 - ????????? ?????????? + IPB Portal Recent Discussions 0 0 - 100 - ????????? ??????? ???? ?...? + 199 + Load the chat room in...? 20 dropdown chat_display self - self=?????????? IPB ???????? -new=? ????? ???? (Pop-Up) + self=Normal IPB Page +new=New Pop Up Window 1 9 @@ -708,19 +691,19 @@ new=? ????? ???? (Pop-Up) - 82 - ????????? ??????? ???? ?...? + 213 + Load the chat room in...? 21 dropdown chat04_display self - self=?????????? IPB ???????? -new=????? ???? (Pop-Up) + self=Normal IPB Page +new=New Pop Up Window 1 - 12 + 9 0 @@ -728,9 +711,9 @@ new=????? ???? (Pop-Up) - 101 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars 20 input chat_poppad @@ -747,9 +730,9 @@ new=????? ???? (Pop-Up) - 83 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars 21 input chat04_poppad @@ -758,7 +741,7 @@ new=????? ???? (Pop-Up) 1 - 14 + 10 1 @@ -766,8 +749,8 @@ new=????? ???? (Pop-Up) - 116 - ???????????? ?????????? ????????? ??? + 225 + Max. no recent discussions to show 22 input @@ -785,8 +768,8 @@ new=????? ???? (Pop-Up) - 102 - ???? ?????????? ???? ?? ?????????? + 198 + Default Chat Room Interface Language? 20 dropdown @@ -794,16 +777,16 @@ new=????? ???? (Pop-Up) en en=English -ar=???????? -de=???????? -es=????????? -fr=??????????? -hr=?????????? -it=??????????? -iw=????? -nl=??????? -pl=???????? -pt=????????????? +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese 1 11 @@ -814,8 +797,8 @@ pt=????????????? - 117 - ???????????? ????? ?????????? ??? + 226 + Max. length of topic titles 22 input @@ -833,8 +816,8 @@ pt=????????????? - 118 - ?????????? ???? ?????????? ????????????/?????? + 227 + Show User / Guest Info box? 22 yes_no @@ -845,16 +828,16 @@ pt=????????????? 1 12 - ?????????? ??????? + IPB Portal Components 0 0 - 103 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? + 200 + Allow chat access to these groups + You may select more than one 20 multi chat_access_groups @@ -880,19 +863,19 @@ if ( $show == 1 ) }]]> 1 13 - ????? ??????? + Access Permissions 0 1 - 90 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? + 214 + Allow chat access to these groups + You may select more than one 21 multi - chat04_access_groups + #show_groups# @@ -908,22 +891,18 @@ if ( $show == 1 ) } $key = 'chat04_access_groups'; -} -if ( $show == 1 ) -{ -$key = 'chat04_access_groups[]'; }]]> 1 - 25 - ????? ??????? + 13 + Access Permissions 1 1 - 119 - ?????????? ???? ???????? ?????????????? + 228 + Show online users? 22 yes_no @@ -941,9 +920,9 @@ $key = 'chat04_access_groups[]'; - 104 - ????????? ????? ?????????????? ???? ??????? - ?? ?????? ???????? ?????, ??? ???? — ?????????? ????????? ???????????! + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! 20 multi chat_admin_groups @@ -976,8 +955,8 @@ if ( $show == 1 ) - 120 - ?????????? ???? ? ?????? ??????? + 229 + Show search box? 22 yes_no @@ -995,8 +974,8 @@ if ( $show == 1 ) - 121 - ?????????? ???? ? ?????????? ???? ?????? ?????? + 230 + Enable skin selection choice dropdown? 22 yes_no @@ -1014,9 +993,9 @@ if ( $show == 1 ) - 122 - ??????? URL ????? ? ???? ? ??????? - ???????? ???? ??????, ???? ?? ?????? ???????? ? ?????? ????????? ?????? ????? + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box 22 input csite_poll_url @@ -1033,8 +1012,8 @@ if ( $show == 1 ) - 123 - ?????????? ????????????? ????? + 233 + Show Site Navigation Menu? 22 yes_no @@ -1052,16 +1031,16 @@ if ( $show == 1 ) - 157 - ????? ???????? ?????????????? ???????? ??????? - ???? ?? ?????? ???????? ?????? ?? ?????????????? + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? 6 dropdown reportpost_method pm - email=?? email -pm=?????? ?????????? + email=Email +pm=Personal Message 1 19 @@ -1072,17 +1051,17 @@ pm=?????? ?????????? - 124 - ?????? ?????????????? ???? - http://www.yandex.ru [?ndex]

      ?????? {board_url} ????? ???????? ?? URL ?????? ??????]]>
      + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

      {board_url} will convert into your board]]>
      22 textarea csite_nav_contents - +
      - 125 - ?????????? ???? ? ?????????????? ????????? - ????????, ?????? ?? ????? ????? ?????????. + 235 + Show Affiliates / Favoured Sites box? + 22 yes_no csite_fav_show @@ -1116,9 +1095,9 @@ pm=?????? ?????????? - 126 - ?????????? ????? ? ?????????????? ???????? - HTML ??????? + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled 22 textarea csite_fav_contents @@ -1138,9 +1117,9 @@ pm=?????? ?????????? - 195 - ????????? ????????? ?????? ?????????? ? ???? - + 237 + Allow poll creator to vote in own poll? + 5 yes_no allow_creator_vote diff --git a/upload/upgrade/upg_20007/version_upgrade.php b/upload/upgrade/upg_20007/version_upgrade.php index 655f145f..d021a08a 100644 --- a/upload/upgrade/upg_20007/version_upgrade.php +++ b/upload/upgrade/upg_20007/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PF1 -> PF 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20007'; var $upgrade_from = '20006'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -109,18 +104,34 @@ class version_upgrade $cnt = 0; $sql = $this->_get_sql(); + $this->ipsclass->DB->return_die = 1; + foreach( $sql as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } //-------------------------------- // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -134,15 +145,15 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); @@ -159,8 +170,8 @@ class version_upgrade $SQL = array(); - $SQL[] = "INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('Блок кода', 'Этот тэг будет показывать блок кода с полосой прокрутки. Применяется для больших блоков с исходным кодом программы.', 'codebox', '
      Исходный код
      {content}
      ', 0, '[codebox]long_code_here = '';[/codebox]');"; - + $SQL[] = "INSERT INTO ibf_custom_bbcode (bbcode_title, bbcode_desc, bbcode_tag, bbcode_replace, bbcode_useoption, bbcode_example) VALUES ('CODEBOX', 'Use this BBCode tag to show a scrolling codebox. Useful for long sections of code.', 'codebox', '
      CODE
      {content}
      ', 0, '[codebox]long_code_here = '';[/codebox]');"; + return $SQL; } diff --git a/upload/upgrade/upg_20008/ipb_settings_partial.xml b/upload/upgrade/upg_20008/ipb_settings_partial.xml index b8c26df5..84b68061 100644 --- a/upload/upgrade/upg_20008/ipb_settings_partial.xml +++ b/upload/upgrade/upg_20008/ipb_settings_partial.xml @@ -1,10 +1,10 @@ - + - 72 - ??? ??????? ???? - ??? ??? ?????????? ???? ???? + 253 + Chat Room Type + This is the type of chat service you purchased 21 dropdown chat04_servicetype @@ -22,9 +22,9 @@ premium=Premium - 73 - ??????? ???? ?? ????????? - ??? ??????? ????, ? ??????? ??????? ????????????, ????? ? ???. + 252 + Default Chat Room + This is the room that your chat users will be logged into first 21 input chat04_default_room @@ -41,8 +41,8 @@ premium=Premium - 74 - URL ????? ??????? ????? + 203 + Chat Room URL? ]]> 21 input @@ -60,9 +60,9 @@ premium=Premium - 75 - - + 204 + + 21 yes_no chat04_who_on @@ -72,15 +72,15 @@ premium=Premium 1 4 - + 0 1 - 76 - + 205 + 21 yes_no @@ -96,10 +96,30 @@ premium=Premium 1 + - 77 - ????????? ????????? ?????? ?? ?????, ??? ??????: - ????????? ?????? ??????????? ?? ????????? ??????? ???? ? ????????????? ???? ???????? ? ?????????? ????????. ? ???????. + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 6 + + 0 + + 1 + + + + 206 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. In minutes. 21 dropdown chat04_who_save @@ -120,8 +140,8 @@ premium=Premium - 78 - ??????? ??????? ???? (??????)? + 209 + Chat Room Dimensions (WIDTH)? 21 input @@ -132,35 +152,16 @@ premium=Premium 1 8 - ??????????? ??????? ???? + Showing the chat room 0 1 - 144 - ???????? ????????? IP-??????? ?? X_FORWARDED_FOR? - ???? ????? ????????, ?? IP-?????? ????????????? ????? ?????????? ??? ?? ?? ????????? X_FORWARDED_FOR. ?????????????? ??? ??????? ?????????? ? ????????? ?????, ????? ?? ??????? ?????????? ???????? IP-????? ????????????. - 6 - yes_no - xforward_matching - - 0 - - - 1 - 6 - - 1 - - 1 - - - - 234 - ????? ?? ?????????? ????????? ??????????? ???????????? ?????? ????? ?????? ??????????????? - ?????????????? ????? ??????????? ???????????? ?????? ??????!]]> + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> 13 yes_no warn_mod_ban @@ -170,15 +171,15 @@ premium=Premium 1 8 - ????? ??????????? ?????? + Forum Moderator Permissions 0 1 - 79 - ??????? ??????? ???? (??????)? + 210 + Chat Room Dimensions (HEIGHT)? 21 input @@ -196,9 +197,9 @@ premium=Premium - 235 - ????? ?? ?????????? ???????? ???????? ???? ??????????? ????????????? ????????? ????? ??????????? ? ????? (????? ?????? ??????????????)? - ?????????????? ????? ???????? ???????? ???????????? ??????!]]> + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> 13 yes_no warn_mod_modq @@ -215,9 +216,9 @@ premium=Premium - 213 - - + 50 + + Leave blank or enter 0 for no auto prune limit 4 input subs_autoprune @@ -227,27 +228,27 @@ premium=Premium 1 10 - ???????? ?? ???? ? ?????? + 0 0 1 - 80 - ???? ???? ??????????? ??????? ? ???????? ???? (?? ?????????) - ???? ??????????? ??????? + 254 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) 21 dropdown chat04_default_lang english.conf - english.conf=?????????? -spanish.conf=????????? -portuguese.conf=????????????? -italian.conf=??????????? -french.conf=??????????? -german.conf=???????? + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German 1 10 @@ -258,9 +259,9 @@ german.conf=???????? - 236 - ????? ?? ?????????? ????????? ???????????? ??????????? ?????????? ?????????/??? ?? ?????? (????? ?????? ??????????????)? - ?????????????? ????? ????????? ????????????? ??????????? ?????????? ????????? ??????!]]> + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> 13 yes_no warn_mod_post @@ -277,9 +278,9 @@ german.conf=???????? - 214 - ????????????? ??????????? ?? ?????? ????? - + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
      Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
      4 multi autoforum_sub_groups @@ -312,9 +313,9 @@ if ( $show == 1 )
      - 81 - - + 255 + + 21 yes_no chat04_plainmode @@ -331,8 +332,8 @@ if ( $show == 1 ) - 237 - ??????? ??? ?? ???? ????????? ????? ??????? ?????????????? ?????? ????????????? + 251 + Number of times per day a moderator can warn a single member 13 input @@ -350,16 +351,16 @@ if ( $show == 1 ) - 82 - ????????? ??????? ???? ?...? + 213 + Load the chat room in...? 21 dropdown chat04_display self - self=?????????? IPB ???????? -new=????? ???? (Pop-Up) + self=Normal IPB Page +new=New Pop Up Window 1 12 @@ -370,9 +371,9 @@ new=????? ???? (Pop-Up) - 83 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars 21 input chat04_poppad @@ -389,9 +390,9 @@ new=????? ???? (Pop-Up) - 84 - ???: ???? ???? - ??? ????????? ????? ???? ?????? ???? ??????? ??????????? ???? ????? (RGB). + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. 21 input chat04_style_applet_bg @@ -408,9 +409,9 @@ new=????? ???? (Pop-Up) - 85 - ???: ???? ????????? ????? - ??? ????????? ????? ????????? ????? ?????? ???? ??????? ??????????? ???? ????? (RGB). + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. 21 input chat04_style_applet_fg @@ -427,9 +428,9 @@ new=????? ???? (Pop-Up) - 86 - ???? ????: ???? ???? - ??? ????????? ????? ???? ?????? ???? ??????? ??????????? ???? ????? (RGB). + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. 21 input chat04_style_window_bg @@ -446,9 +447,9 @@ new=????? ???? (Pop-Up) - 87 - ???? ????: ???? ????????? ????? - ??? ????????? ????? ????????? ????? ?????? ???? ??????? ??????????? ???? ????? (RGB). + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. 21 input chat04_style_window_fg @@ -465,13 +466,13 @@ new=????? ???? (Pop-Up) - 88 - ?????????????? ????????? - + 261 + Additional PARAM information + <param name="cmd.BeepEnter" value="true">
      <param name="cmd.BeepLeave" value="true"> -
      ?????????? ???????? ???????????? ? Invision Chat ??? ????????? ????????? ??????????.]]>
      +
      Please refer to the Invision Chat documentation for more info.]]>
      21 textarea chat04_customparams @@ -488,9 +489,9 @@ new=????? ???? (Pop-Up)
      - 155 - ??????? ???? chr(0xCA)? - chr(0xCA) — ????????? ????????? «?????????» ??????? ? ?????????? ???????????? ??????. ?? ? ??????? ????? ???????????? ?? ???????????, ????? ????????.]]> + 110 + Remove chr(0xCA) from input? + 6 yes_no strip_space_chr @@ -507,9 +508,9 @@ new=????? ???? (Pop-Up) - 89 - ?????? ?????? ??? ?????? ? ???? - + 260 + Chat Room Font Size + 21 input chat04_style_font_size @@ -526,9 +527,9 @@ new=????? ???? (Pop-Up) - 90 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? + 214 + Allow chat access to these groups + You may select more than one 21 multi chat04_access_groups @@ -554,7 +555,7 @@ $key = 'chat04_access_groups[]'; }]]> 1 25 - ????? ??????? + Access Permissions 1 1 diff --git a/upload/upgrade/upg_20008/version_upgrade.php b/upload/upgrade/upg_20008/version_upgrade.php index 6a6d5f81..4d07d943 100644 --- a/upload/upgrade/upg_20008/version_upgrade.php +++ b/upload/upgrade/upg_20008/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PF1 -> PF 2 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20008'; var $upgrade_from = '20007'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -113,11 +108,20 @@ class version_upgrade { require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -125,8 +129,14 @@ class version_upgrade // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); - + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } /*-------------------------------------------------------------------------*/ @@ -139,15 +149,15 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_20009/components.php b/upload/upgrade/upg_20009/components.php index 84e9f58f..d03b6721 100644 --- a/upload/upgrade/upg_20009/components.php +++ b/upload/upgrade/upg_20009/components.php @@ -5,7 +5,7 @@ $WRAPPER = << <% TITLE %> - + <% GENERATOR %> <% CSS %> <% JAVASCRIPT %> @@ -466,7 +466,7 @@ ul#help{ .wrapmini{ float: left; line-height: 1.5em; - width: 30%; + width: 25%; } .pagelinks{ diff --git a/upload/upgrade/upg_20009/ipb_settings_partial.xml b/upload/upgrade/upg_20009/ipb_settings_partial.xml index a7f3a1ea..a6a80fef 100644 --- a/upload/upgrade/upg_20009/ipb_settings_partial.xml +++ b/upload/upgrade/upg_20009/ipb_settings_partial.xml @@ -1,10 +1,10 @@ - + - 110 - ?????? ??? ???????? ???????? - + 218 + Forums to export articles from + You may select more than one. 22 multi csite_article_forum @@ -36,11 +36,31 @@ $key = 'csite_article_forum[]'; 0 + + 265 + Caching PATH + This can be left blank +
      This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
      + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 +
      - 61 - URL ????? ? ???????????? - ????????????? ? ??????????
      ??? ??????? ???? ?? ??????? ????????? ??????????? ?? ?????? ??????? ??? ????? ???????????? ?????????? ??????.

      ???? ?? ??????? ????? ????, ?????????, ??? ?? ???????????? «??????».]]>
      + 264 + Image URL + This can be left blank +
      This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
      1 input ipb_img_url diff --git a/upload/upgrade/upg_20009/version_upgrade.php b/upload/upgrade/upg_20009/version_upgrade.php index eebfc75c..01c623a1 100644 --- a/upload/upgrade/upg_20009/version_upgrade.php +++ b/upload/upgrade/upg_20009/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PF3 -> PF 4 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20009'; var $upgrade_from = '20008'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -113,11 +108,20 @@ class version_upgrade { require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -139,7 +143,14 @@ class version_upgrade // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -153,15 +164,15 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_20010/components.php b/upload/upgrade/upg_20010/components.php index 75fadcc3..512624b6 100644 --- a/upload/upgrade/upg_20010/components.php +++ b/upload/upgrade/upg_20010/components.php @@ -5,7 +5,7 @@ $WRAPPER = << <% TITLE %> - + <% GENERATOR %> <% CSS %> <% JAVASCRIPT %> @@ -466,7 +466,7 @@ ul#help{ .wrapmini{ float: left; line-height: 1.5em; - width: 30%; + width: 25%; } .pagelinks{ diff --git a/upload/upgrade/upg_20010/mysql_updates.php b/upload/upgrade/upg_20010/mysql_updates.php index 4ed58346..e2f0500c 100644 --- a/upload/upgrade/upg_20010/mysql_updates.php +++ b/upload/upgrade/upg_20010/mysql_updates.php @@ -5,10 +5,6 @@ $SQL[] = "DELETE FROM ibf_skin_macro WHERE macro_value='PRO_ICQ' and macro_set=1"; $SQL[] = "INSERT INTO ibf_skin_macro (macro_value, macro_replace, macro_can_remove, macro_set) VALUES ('PRO_ICQ', '/profile_icq.gif\' border=\'0\' alt=\'ICQ\' />', 1, 1);"; -# Fix bug where update "msg_total=msg_total+1" doesn't update when msg_total is NULL - -$SQL[] = "ALTER TABLE ibf_members change msg_total msg_total smallint(5) default '0'"; - # Fix bug where "select * from members where temp_ban..." prevents NULL IS NOT NULL confusion $SQL[] = "ALTER TABLE ibf_members change temp_ban temp_ban varchar(100) default '0'"; diff --git a/upload/upgrade/upg_20010/version_upgrade.php b/upload/upgrade/upg_20010/version_upgrade.php index c30d0151..1616e146 100644 --- a/upload/upgrade/upg_20010/version_upgrade.php +++ b/upload/upgrade/upg_20010/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PF4 -> FINAL @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20010'; var $upgrade_from = '20009'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -113,11 +108,20 @@ class version_upgrade { require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -139,7 +143,14 @@ class version_upgrade // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -153,15 +164,15 @@ class version_upgrade $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_20011/version_upgrade.php b/upload/upgrade/upg_20011/version_upgrade.php index f26c8bf3..47271d53 100644 --- a/upload/upgrade/upg_20011/version_upgrade.php +++ b/upload/upgrade/upg_20011/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PF4 -> FINAL @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '20011'; var $upgrade_from = '20010'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -55,8 +49,6 @@ class version_upgrade function version_process() { - - $this->md5_check = $this->ipsclass->return_md5_check(); $this->base_url = "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}"; @@ -80,97 +72,23 @@ class version_upgrade function auto_run() { - - - //-------------------------------- - // What are we doing? - //-------------------------------- - - switch( $this->ipsclass->input['workact'] ) - { - case 'sql': - $this->upgrade_sql(); - break; - default: - $this->upgrade_intro(); - break; - } - } - - - /*-------------------------------------------------------------------------*/ - // SQL - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - - - $cnt = 0; - $SQL = array(); - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); - - foreach( $SQL as $q ) - { - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - //-------------------------------- - // Upgrade templates - //-------------------------------- - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ); - - $this->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => $CSS, - 'set_cache_css' => $CSS, - 'set_wrapper' => $WRAPPER, - 'set_cache_wrapper' => $WRAPPER, - ), 'set_skin_set_id=1' ); - } - - $cnt++; - - //-------------------------------- - // Next page... - //-------------------------------- - - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); - - } - - /*-------------------------------------------------------------------------*/ - // INTRO - /*-------------------------------------------------------------------------*/ - - function upgrade_intro() - { - - $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); - } + } diff --git a/upload/upgrade/upg_20012/version_upgrade.php b/upload/upgrade/upg_20012/version_upgrade.php index a8e43aff..8b5fa77d 100644 --- a/upload/upgrade/upg_20012/version_upgrade.php +++ b/upload/upgrade/upg_20012/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.0 PF4 -> FINAL @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '20012'; var $upgrade_from = '20011'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -55,8 +50,6 @@ class version_upgrade function version_process() { - - $this->md5_check = $this->ipsclass->return_md5_check(); $this->base_url = "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}"; @@ -80,8 +73,6 @@ class version_upgrade function auto_run() { - - //-------------------------------- // What are we doing? //-------------------------------- @@ -104,8 +95,6 @@ class version_upgrade function upgrade_sql() { - - $cnt = 0; $SQL = array(); @@ -113,11 +102,20 @@ class version_upgrade { require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -142,7 +140,14 @@ class version_upgrade // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } @@ -152,19 +157,17 @@ class version_upgrade function upgrade_intro() { - - $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_20013/version_upgrade.php b/upload/upgrade/upg_20013/version_upgrade.php index 2c4af1a9..8fd3dfc9 100644 --- a/upload/upgrade/upg_20013/version_upgrade.php +++ b/upload/upgrade/upg_20013/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '20013'; var $upgrade_from = '20012'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -55,8 +49,6 @@ class version_upgrade function version_process() { - - $this->md5_check = $this->ipsclass->return_md5_check(); $this->base_url = "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}"; @@ -80,97 +72,22 @@ class version_upgrade function auto_run() { - - - //-------------------------------- - // What are we doing? - //-------------------------------- - - switch( $this->ipsclass->input['workact'] ) - { - case 'sql': - $this->upgrade_sql(); - break; - default: - $this->upgrade_intro(); - break; - } - } - - - /*-------------------------------------------------------------------------*/ - // SQL - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - - - $cnt = 0; - $SQL = array(); - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); - - foreach( $SQL as $q ) - { - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - //-------------------------------- - // Upgrade templates - //-------------------------------- - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ); - - $this->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => $CSS, - 'set_cache_css' => $CSS, - 'set_wrapper' => $WRAPPER, - 'set_cache_wrapper' => $WRAPPER, - ), 'set_skin_set_id=1' ); - } - - $cnt++; - - //-------------------------------- - // Next page... - //-------------------------------- - - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); - - } - - /*-------------------------------------------------------------------------*/ - // INTRO - /*-------------------------------------------------------------------------*/ - - function upgrade_intro() - { - - $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); - } - + } diff --git a/upload/upgrade/upg_20014/version_upgrade.php b/upload/upgrade/upg_20014/version_upgrade.php index f10d873f..57c5800e 100644 --- a/upload/upgrade/upg_20014/version_upgrade.php +++ b/upload/upgrade/upg_20014/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '20014'; var $upgrade_from = '20013'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -80,97 +74,23 @@ class version_upgrade function auto_run() { - - - //-------------------------------- - // What are we doing? - //-------------------------------- - - switch( $this->ipsclass->input['workact'] ) - { - case 'sql': - $this->upgrade_sql(); - break; - default: - $this->upgrade_intro(); - break; - } - } - - - /*-------------------------------------------------------------------------*/ - // SQL - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - - - $cnt = 0; - $SQL = array(); - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); - - foreach( $SQL as $q ) - { - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - //-------------------------------- - // Upgrade templates - //-------------------------------- - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ); - - $this->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => $CSS, - 'set_cache_css' => $CSS, - 'set_wrapper' => $WRAPPER, - 'set_cache_wrapper' => $WRAPPER, - ), 'set_skin_set_id=1' ); - } - - $cnt++; - - //-------------------------------- - // Next page... - //-------------------------------- - - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); - - } - - /*-------------------------------------------------------------------------*/ - // INTRO - /*-------------------------------------------------------------------------*/ - - function upgrade_intro() - { - - $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; $this->ipsclass->template->output(); - } + } diff --git a/upload/upgrade/upg_21003/components.php b/upload/upgrade/upg_21003/components.php index 939fb8ba..12f46233 100644 --- a/upload/upgrade/upg_21003/components.php +++ b/upload/upgrade/upg_21003/components.php @@ -474,7 +474,7 @@ ul#help{ .wrapmini{ float: left; line-height: 1.5em; - width: 30%; + width: 25%; } .pagelinks{ diff --git a/upload/upgrade/upg_21003/ipb_acpperms.xml b/upload/upgrade/upg_21003/ipb_acpperms.xml index 4822cf0f..8e0b25e7 100644 --- a/upload/upgrade/upg_21003/ipb_acpperms.xml +++ b/upload/upgrade/upg_21003/ipb_acpperms.xml @@ -1,4 +1,4 @@ - + diff --git a/upload/upgrade/upg_21003/ipb_settings_partial.xml b/upload/upgrade/upg_21003/ipb_settings_partial.xml index db8bbaec..3ccaaa08 100644 --- a/upload/upgrade/upg_21003/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21003/ipb_settings_partial.xml @@ -1,379 +1,19 @@ - + - 16 - - ????????????, ??????????? ?? ?? ????? ???????????? ??? ??????????? ?? ??????. ??? ?????????, ????? ???????????? ?? ?????????? ?????? ???????????.]]> - 4 - yes_no - auth_allow_dnames - - 1 - - - 1 - 1 - ????????? ????????????? ????? - 0 - - 1 - converge + 1 + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. + 0 - 19 - Cookie ????? - .your-domain.ru ??? ?????????? cookies.]]> - 5 - input - cookie_domain - - - - - 1 - 1 - - 0 - - 1 - cookies - - - - 48 - E-mail ????? ??? ???? ???????? ????? - ???? E-mail ????? ????? ?????????????? ??? ?????? ????? ? ????????????? ??????. - 9 - input - email_in - - - - - 1 - 1 - E-mail ?????? - 0 - - 1 - email - - - - 112 - ???????? IPB ??????? - - 16 - yes_no - csite_on - - 1 - - - 1 - 1 - - 0 - - 1 - ipbportal - - - - 142 - ???????? ?????? ?? ????? (???????? ??????????? ? ?.?.)? - ??? ????? ??????? ?? ????????????? ??????? ????????? ???????? ??? ??? ???????????, ????? e-mail ?????? ? ?.?, ?? ????????, ????????, ???????? ??????????? ??????. - 23 - dropdown - bot_antispam - - gif - 0=??? -gif=??????????? ????? (?? ??????? ??????????? ???????) -gd=??????????? (????????? GD ??????????) - - 1 - 1 - - 1 - s_reg_antispam - 1 - securityandprivacy - - - - 208 - ???????? ???????? - - 26 - yes_no - forum_trash_can_enable - - 1 - - - 1 - 1 - - 0 - - 1 - trashcansetup - - - - 237 - ???????? ??????? ??????????????? - - 28 - yes_no - warn_on - - 1 - - - 1 - 1 - - 0 - - 1 - warnsetup - - - - 131 - ???????? ???????? ?? ?????????? ?????? ?? ??????? - - 21 - yes_no - spider_sense - - 1 - - - 1 - 1 - - 0 - - 1 - searchenginespiders - - - - 6 - ????????? ?????? - - 2 - yes_no - board_offline - - 0 - - - 1 - 1 - - 0 - - 1 - boardoffline - - - - 122 - ?? ?????? ?????? ?????????????? ???????? + 174 + Show link in header to guidelines? 17 - dropdown - news_forum_id - - - #show_forums# - - 1 - 1 - - 0 - - 1 - newssetup - - - - 22 - ???????????? ??????????????? ??????? COPPA? - COPPA ?? ????? ??????, ??? ??????????? ????? ?? 13 ??? ????? ??????????? ?????????? ?????????? ?????????. ?? ????????? ??? ??????.]]> - 6 - yes_no - use_coppa - - 0 - - - 1 - 1 - - 0 - - 1 - coppa - - - - 138 - ????? ??? ?????? ????????????? -

      ]]>
      - 22 - dropdown - search_sql_method - - man - ftext=?????????????? -man=??????? - ipsclass->admin->get_mysql_version(); - if ( $this->ipsclass->mysql_version < 32323 ) - { - $full_text = "?????????????? ????? ?????????? ?? ????? ???????."; - } - else - { - $full_text = "?????????????? ????? ????????"; - } - - if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) - { - $index = "??????? ??????????????? ?????? ?? ???????: Build indexes now!"; - } - else - { - $index = "??????? ??????????????? ?????? ???????"; - } - - $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); - $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); -}]]> - 1 - 1 - - 0 - - 1 - searchsetup -
      - - - 107 - ???? ???????? ????????? IPB - ??? ???? ??? ???????? ????????? IPB, ?????????? ?? IPS. - 13 - input - ipb_copy_number - - - - - 1 - 1 - - 0 - - 1 - - - - - 167 - ?????????? ???, ???????????? ? ?????? ??? ?????? - - 25 - input - display_max_topics - - 30 - - - 1 - 1 - ???????? ??? - 0 - 0 - 1 - topicspostsandpolls - - - - 57 - ???????? ?????? ?????? - - 10 - input - board_name - - Invision Power Board - - - 1 - 1 - ???????? ? ?????? - 0 - 0 - 1 - general - - - - 75 - ????? ??????? ?????? ??????? ???? (???????? ??????)? - ???????? ????? ?????? ?????? ??? ?????? / ??? ????????????? ??? IPB. - - 11 - input - chat04_account_no - - - - - 1 - 1 - ????????? ??????? ?????? - 0 - - 1 - - - - - 93 - ????? ??????? ?????? ??????? ????? - ???????? ????? ?????? ?????? ??? ?????? / ??? ????????????? ??? IPB. - - 12 - input - chat_account_no - - - - - 1 - 1 - ??????? ?????? - 0 - - 1 - - - - - 1 - ???????? ?????? ?? ??????? ?????? ? ??????? ????? ??????? ??????? - - 1 yes_no gl_show @@ -387,225 +27,14 @@ man=??????? 1 boardguidelines + 0 - 25 - ?????????? ?????????????? ???? ??????? ??? ????????? ???? - - 7 - yes_no - custom_profile_topic - - 1 - - - 1 - 1 - ???????? ???????? ?? SQL-???? - 0 - 0 - 1 - cpusaving - - - - 8 - ?????????? ??????????? ?? ??????? ???????? ?????????? - ????? ? ????????? ?????????? ??????????? ??? ??????? ???. - 3 - yes_no - show_bday_calendar - - 1 - - - 1 - 1 - - 0 - - 1 - calendar - - - - 164 - ?????????? ?????? ???????? ??? ??????????? ????????????? - ???? ???? ????? ???????, ?????? ???????? ????? ???????????? ?? ???????? ???????????, ? ???????????? ?????? ??????? ?????? ?????... - 24 - yes_no - subsm_show_reg - - 0 - - - 1 - 1 - ??????????? ?? ????? ??????????? - 1 - - 1 - subsmanager - - - - 124 - ????????? BB ???? ? ?????? ??????????? - - 18 - yes_no - msg_allow_code - - 1 - - - 1 - 1 - - 0 - - 1 - personalmessagesetup - - - - 214 - ????????? ????????????? ???????? ????? ??????? - - 27 - yes_no - allow_skins - - 1 - - - 1 - 1 - ?????????? ????????? ??????? ????????????? - 0 - 0 - 1 - userprofiles - - - - 40 - ??????? ???? ???????: - ???? ?? ??????? ?????????? ??????? ????, ? ????? ???????? ?? 1 ???, ?? ??? ??-?? ???????? ?? ??????/?????? ?????, ? ???? ???????????? ????? ????????? ??? ? ????? ?????????? ?????? ? ???????.]]> - 8 - dropdown - time_offset - - 0 - - $words ) - { - if (preg_match("/^time_(\\S+)$/", $off, $match)) - { - $dropdown[] = array( $match[1], $words ); - } - } -}]]> - 1 - 1 - ????????????? ??????? ?? ?????? - 0 - 0 - 1 - date - - - - 20 - Cookie ??????? - ????????? ????????? ??????? ????????? ??????? ?? ????? ?????. - 5 - input - cookie_id - - - - - 1 - 2 - - 0 - - 1 - cookies - - - - 49 - E-mail ????? ??? ???? ????????? ????? - ???? E-mail ????? ????? ?????????????? ? ???? «???????? ?????» ??? ?????, ???????????? ? ??????. - 9 - input - email_out - - - - - 1 - 2 - - 1 - - 1 - email - - - - 132 - ????? ?????? ????????? ????????? ?????? - ???? ?? ????????????? ??????? ?????? ????? ??????? ???????? ?? ?????????? ??????, ????????? ??? ?????, ??? ????????? ???????? ???????? ???????. - 21 - yes_no - spider_visit - - 1 - - - 1 - 2 - - 0 - - 1 - searchenginespiders - - - - 139 - ??? ????? ?????? ?? ?????????? - ??? ????????? ????? ???????? ?????? ???? ?? ??????????? ?????????????? ?????. - 22 - dropdown - search_default_method - - simple - simple=??????? -adv=??????????? - - 1 - 2 - - 0 - - 1 - searchsetup - - - - 2 - ??????? http:// ?????? ?? ???????? ? ????????? ??????? - ??????? ??????? ????? (URL) ?????? ??????! - 1 + 175 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 17 input gl_link @@ -619,17 +48,122 @@ adv=??????????? 1 boardguidelines + 0 - 113 - ????????? ???????? ??????? - - 16 + 176 + Title to use in header? + + 17 input - csite_title + gl_title - ?????? IPB + + + + 1 + 3 + + 0 + + 1 + boardguidelines + 0 + + + + 177 + If not using external link; guidelines/rules text + HTML Enabled + 17 + textarea + gl_guidelines + + + + + 1 + 4 + + 0 + + 0 + boardguidelines + 0 + + + + 238 + + HTML ENABLED]]> + 17 + textarea + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 5 + + 1 + + 0 + boardguidelines + 0 + + + + 1 + boardoffline + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. + 0 + + + + 163 + Turn the board offline? + + 15 + yes_no + board_offline + + 0 + + + 1 + 1 + + 0 + + 1 + boardoffline + 0 + + + + 164 + The offline message to display + + 15 + textarea + offline_msg + + 1 @@ -638,19 +172,297 @@ adv=??????????? 0 0 - ipbportal + boardoffline + 0 - 209 - ????? ????? ????? ????????? - ?????, ?????????? ??? ???????, ?????? ????? ??????????? ????? ??????? ?? ??????/??????/?????. ? ?????? ?? ?????? ?? ?????? ???? ?????? ?????? ????????????????? ??????? ? ???????? ?? ?????? ? ????? ??? ???? ?????. - 26 + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + 0 + + + + 122 + Show birthdays on the main calendar view? + + 9 + yes_no + show_bday_calendar + + 1 + + + 1 + 1 + + 0 + + 1 + calendar + 0 + + + + 123 + + + 9 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 124 + Auto hide when no birthdays to show? + + 9 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 125 + Show forthcoming calendar events? + + 9 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 126 + Auto hide when no events to show? + + 9 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 127 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 9 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 128 + + This applies to view calendar / post event. + 9 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 129 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 9 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + 340 + + + 18 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + 0 + + + + 343 + Prohibit Display Names from selecting Log In names + + 18 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + 0 + + + + 184 + Log in with user name or email address? + Which identifiable piece of information do you wish to require your members to use when logging in? + 18 dropdown - forum_trash_can_id + converge_login_method + + username + username=User Name +email=Email Address + + 1 + 5 + + 0 + + 1 + converge + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + 116 + Cookie Domain + .your-domain.com for global cookie]]> + 7 + input + cookie_domain - #show_forums# + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 117 + Cookie Name Prefix + Allows multiple boards on one host. + 7 + input + cookie_id + + + 1 2 @@ -658,18 +470,140 @@ adv=??????????? 0 1 - trashcansetup + cookies + 0 - 215 - ?????????? ?????????, ??????????? ??????? ????????????, ????? ???????? ??????????? ???????? ???? ?????? - ??????? 0, ????? ????????? ????????? ??? ??????????? - 27 + 118 + Cookie Path + Relative path from domain to root IBF dir + 7 input - post_titlechange + cookie_path - 500 + + + + 1 + 3 + + 0 + + 1 + cookies + 0 + + + + 1 + coppa + COPPA Set-up + COPPA.]]> + 0 + + + + 119 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 8 + yes_no + use_coppa + + 0 + + + 1 + 1 + + 0 + + 1 + coppa + 0 + + + + 120 + Fax number to receive COPPA forms + + 8 + input + coppa_fax + + + + + 1 + 2 + + 0 + + 1 + coppa + 0 + + + + 121 + Mail address to receive COPPA forms + + 8 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + 24 + Allow custom profile field info be used in TopicView? + + 2 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 22 + Cache calendar and birthdays? + + 2 + yes_no + cache_calendar + + 1 1 @@ -678,35 +612,329 @@ adv=??????????? 0 0 1 - userprofiles + cpusaving + 0 - 77 - ??????? ???? ?? ????????? - ??? ??????? ????, ? ??????? ??????? ????????????, ????? ? ???. - 11 + 20 + + + 2 input - chat04_default_room + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 181 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 2 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 316 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 2 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 25 + Mark topics a user has posted when displaying a forum? + + 2 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 26 + + This save 1 query per forum view + 2 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + (This save 1 query per topic view) + 2 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 19 + Show Active Users + + 2 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 29 + Allow users (where allowed) to use search? + + 2 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 23 + Show Board Totals? + Show the board totals at the footer of the board index page. + 2 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 28 + Server Load Limit + Can be left blank for no limit]]> + 2 + input + load_limit 1 - 2 + 10 0 - + 0 1 - chat04 + cpusaving 0 - 41 - ????????????? ??????? ??????? (? ???????) - ????? ?????? (? ?????? ???? ????????) ??????: <-T->]]> - 8 + 32 + Print HTTP no-cache headers? + (This will stop browsers caching pages) + 2 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 30 + + Leave blank to return full post with proper formatting]]> + 2 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 2 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + 34 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 3 + dropdown + time_offset + + 0 + + $words ) + { + if (preg_match("/^time_(\\S+)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 35 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 3 input time_adjust @@ -724,155 +952,174 @@ $r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ) 0 1 date + 0 - 26 - ??????????? ?????????? - ?? ????????????? ???????? ???? ?????, ???? ????? ????????? ?? ??????????. - 7 + 36 + Short time format + PHP Date]]> + 3 + input + clock_short + + jS F Y - h:i A + + + 1 + 3 + + 0 + 0 + 1 + date + 0 + + + + 37 + Join date time format + PHP Date]]> + 3 + input + clock_joined + + j-F y + + + 1 + 4 + + 0 + 0 + 1 + date + 0 + + + + 38 + Long time format + PHP Date]]> + 3 + input + clock_long + + M j Y, h:i A + + + 1 + 5 + + 0 + 0 + 1 + date + 0 + + + + 39 + Use relative dates? + + 3 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 40 + Relative time format + + 3 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 333 + DST Auto Detection + + 3 yes_no - cache_calendar + time_dst_auto_correction 1 1 - 2 - - 0 - 0 - 1 - cpusaving - - - - 238 - ??????????? ??????? ?????????????? - ????????????? ????? ?????????. ???? ?? ??????????? ????????????? ?????, ?? ??????????? ?? ???????????? ??????????? ????? ? ????????, ? ???????????? ????? ????????. - 28 - input - warn_min - - 0 - - - 1 - 2 - ?????? ?????????????? - 0 + 8 + DST Correction + 1 1 - warnsetup + date + 0 - 23 - ????? ????? COPPA, ?? ??????? ????? ????????? ??? ?????????? ?? ????????? - - 6 + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + 135 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 12 input - coppa_fax + email_in 1 - 2 - + 1 + Email Addresses 0 1 - coppa + email + 0 - 108 - ????????? ????????? - - 13 - yes_no - ips_cp_purchase - - 0 - - - 1 - 2 - - 0 - - 1 - - - - - 9 - ?????????? ??????????? ??????????? ?? ??????? ???????? ??????? - - 3 - yes_no - show_birthdays - - 1 - - - 1 - 2 - ??????????? ?????????? - 0 - - 1 - calendar - - - - 123 - ?????????? ?????? ?? ????????? ??????? ?? ??????? ???????? ??????? - - 17 - yes_no - index_news_link - - 0 - - - 1 - 2 - - 0 - - 1 - newssetup - - - - 125 - ????????? HTML ???? ? ?????? ??????????? - ???????????? ?????? ???????????? HTML ? ?????? ??????????. ?? ??????????? ????????? ???? ????? ? ????? ????????????. - 18 - yes_no - msg_allow_html - - 0 - - - 1 - 2 - - 0 - - 1 - personalmessagesetup - - - - 94 - ?????? ??????? ????? - ]]> + 136 + Board outgoing email address + This is the email address that all mail appears to come from. 12 input - chat_server_addr + email_out @@ -883,14 +1130,613 @@ $r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ) 1 1 - + email + 0 + + + + 137 + Mail Delivery Method + + 12 + dropdown + mail_method + + mail + mail=PHP Mail() +smtp=SMTP + + 1 + 3 + + 0 + + 1 + email + 0 + + + + 138 + Over-ride SMTP Host? + + 12 + input + smtp_host + + localhost + + + 1 + 4 + SMTP Set-up + 0 + + 1 + email + 0 + + + + 139 + Over-ride SMTP Port? + Default is 25 + 12 + input + smtp_port + + 25 + + + 1 + 5 + + 0 + + 1 + email + 0 + + + + 187 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 12 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 140 + SMTP UserName + + 12 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 337 + PHP Mail Extra Options + + 12 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 + + + + 1 + general + General Configuration + These settings control the basics of the board such as URLs and paths. + 0 + + + + 4 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 1 + input + board_name + + Invision Power Board + + + 1 + 1 + + 0 + 0 + 1 + general + 0 + + + + 6 + Website Name + + 1 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 7 + Website Address + + 1 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 9 + Upload URL + + 1 + input + upload_url + + + + + 1 + 5 + Other URLs and Paths + 0 + 0 + 1 + general + 0 + + + + 11 + + This is a path, not a URL. + 1 + input + upload_dir + + + upload_dir + + 1 + 7 + + 0 + 0 + 1 + general + 0 + + + + 265 + Caching PATH + This can be left blank +
      This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
      + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 338 + Document character set + Enter the document character set for all HTML pages. + 1 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 264 + Image URL + This can be left blank +
      This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
      + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 12 + Print HTTP Headers? + + 1 + yes_no + print_headers + + 0 + + + 1 + 9 + + 1 + 0 + 1 + general + 0 + + + + 14 + Type of auto-redirect + + 1 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection + 0 + 0 + 1 + general + 0 + + + + 183 + + + 1 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 + + 1 + general + 0 + + + + 15 + Debug level + This controls the debug information shown at the footer of your board. + 1 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 13 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 1 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 16 + Enable SQL Debug Mode + + 1 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 17 + Use Safe Mode Skins? + + 1 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 + + + + 18 + Number Formatting + (EG: USA & UK use a comma)]]> + 1 + dropdown + number_format + + , + + + 1 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 345 + Decimal Seperator + Character used to seperate decimals in numbers. + 1 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 182 + GD Version + + 1 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 + + 0 + + 1 + general + 0 + + + + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + 202 + Chat Room Account Number (Group Name)? + Removing this number will remove all links / chat functionality within IPB. + + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + 0 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + + + + 1 + 2 + + 0 + + 1 + chat04 + 0 203 - ?????? ??????? ????? + Chat Room URL? ]]> - 12 + 21 input chat04_whodat_server_addr @@ -908,608 +1754,10 @@ $r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ) - 7 - ?????????, ??????? ??????????? ????? ?????????? ???? ????????????? - - 2 - textarea - offline_msg - - - - - 1 - 2 - - 0 - - 0 - boardoffline - - - - 76 - ??? ??????? ???? - ??? ??? ?????????? ???? ???? - 11 - dropdown - chat04_servicetype - - - advanced=Advanced -premium=Premium - - 1 - 2 - - 0 - - 1 - - - - - 165 - ????????? ?? ??????? ???????????? ?????? ?????? ???????? - ???? ????? ???????, ???????????? ?????? ????? ??????????? ??????? ?????-?? ????? ???????? ??? ???????????. - 24 - yes_no - subsm_enforce - - 0 - - - 1 - 2 - Force Package Purchase - 0 - - 1 - subsmanager - - - - 168 - ??????? ????????? ???????????????/?????????????? ?????? ? ????????? ???? - ??????????!!!!! ????? ???????? ?? ??????????!.]]> - 25 - yes_no - etfilter_punct - - 0 - - - 1 - 2 - - 0 - 0 - 1 - topicspostsandpolls - - - - 21 - Cookie ???? - ????c???????? ???? ?? ????? ?????? ?? ??????? ????? ?????? IPB (??? ????? ???? index.php). - 5 - input - cookie_path - - - - - 1 - 3 - - 0 - - 1 - cookies - - - - 128 - ?? ????? ??????? ?????????????? ???????? - ?? ?????? ???????? ????????? ???????. - 20 - multi - recent_topics_article_forum - - - #show_forums# - - 1 - 3 - - 0 - - 0 - - - - - 169 - ??????? ?????? ????????? ??? ??????????? ???????? ???? - - 25 - input - topic_rating_needed - - 1 - - - 1 - 3 - - 0 - - 1 - topicspostsandpolls - - - - 17 - ????????? ???????????? ????? ?? ????????? ???? ???????????? - - 4 - yes_no - auth_dnames_nologinname - - 1 - - - 1 - 3 - - 1 - - 1 - converge - - - - 29 - ????????? ?????????? ?????????? ??? ?????????? - ???? "??", ?? ??????? ?????????? ??? ????? ??????????? ? ?????? ?????????? ????. ???? "???", ?????????? ?????????? ????? ???????????? ? ?????? ??????? ? ??????????? ?????? 6 ?????. ??????????? ?????? ????? ????????? ?????????? ???????????? ????? ??? ??????? ???????. - 7 - yes_no - update_topic_views_immediately - - 1 - - - 1 - 3 - - 0 - - 1 - cpusaving - - - - 10 - ????????????? ????????, ????? ? ??????? ???? ??? ???????????? - - 3 - yes_no - autohide_bday - - 0 - - - 1 - 3 - - 1 - - 1 - calendar - - - - 24 - ????? ????????? ????? COPPA, ?? ??????? ????? ????????? ??? ?????????? ?? ????????? - - 6 - textarea - coppa_address - - - - - 1 - 3 - - 0 - - 1 - coppa - - - - 95 - - ???? ??? ????? ????????, ?? ?? ??????? ???????? ?????? ? ????? ?????????? ????? ???????????? ???? ? ?????????????, ??? ?????? ????????? ? ????. - 12 - yes_no - chat_who_on - - 1 - - - 1 - 3 - ??? ? ???? - 0 - - 1 - - - - - 166 - ?????? ?????????????, ? ??????? ??????? ???????????? ????? ??????????? ? ?? ?????? ??????? - ???? ???? ????? ????????, ?? ?????? ???????????????? ???????????? ????? ???????? ? ????????? ?????? ?????????????, ???? ?? ??????? ????????? ?????... - 24 - dropdown - subsm_nopkg_group - - 1 - #show_groups# - - 1 - 3 - - 1 - - 1 - subsmanager - - - - 3 - ?????????, ???????????? ? ??????? ?????? - - 1 - input - gl_title - - - - - 1 - 3 - - 0 - - 1 - boardguidelines - - - - 170 - ????????? ????????????? ?????? ????????? ???? ? ????????? ???? - ??????? ???? ????? ???????? ?? ??????? ???? - ??????? ????????? ??????? ?????? ?? ???????]]> - 25 - yes_no - etfilter_shout - - 0 - - - 1 - 3 - - 0 - 0 - 1 - topicspostsandpolls - - - - 210 - ???????????? ??????? ??? ???????? ???????????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 - yes_no - forum_trash_can_use_radmin - - 1 - - - 1 - 3 - - 0 - - 1 - trashcansetup - - - - 133 - ? ????? ?????? ????????????? ???????? ????????? ?????? - ???? ????? ??????? ???, ??? ?? ?????? ????????? ?????????????? ????????? ??? ??????, ??????? ????? ???????????? ????????? ????, ????????, ?????????? ?????? ????? ? ????????? ???????? ?????? ? ?.?. + 204 + + 21 - dropdown - spider_group - - 2 - #show_groups# - - 1 - 3 - - 0 - - 1 - searchenginespiders - - - - 42 - ??????? ?????? - ???? ? PHP.]]> - 8 - input - clock_short - - j.n.Y, G:i - - - 1 - 3 - - 0 - 0 - 1 - date - - - - 216 - - - 27 - input - max_location_length - - 1000 - - - 1 - 3 - - 0 - 0 - 1 - userprofiles - - - - 126 - ???????????? ?????????? ?????? ????????? ?? ???????? ??? ????????? ?????? ????????? - 50]]> - 18 - input - show_max_msg_list - - 50 - - - 1 - 3 - - 0 - - 1 - personalmessagesetup - - - - 239 - ???????????? ??????? ?????????????? - - 28 - input - warn_max - - 10 - - - 1 - 3 - - 1 - - 1 - warnsetup - - - - 50 - ????? ???????? ????? - ???? ??????? PHP mail() ??????????, ???????? ????? SMTP. ???? ?? ?? ??????, ??? ???????, ???????? ? ?????? ???????-??????????. - 9 - dropdown - mail_method - - mail - mail=PHP Mail() -smtp=SMTP - - 1 - 3 - - 0 - - 1 - email - - - - 58 - ???????? ?????? ????? - ??? ?????????? ????? ? ???? ?????????? ????, ? ??????? ????? ??????? ?????? ???????? ?????? ?? ??? ????. - 10 - input - home_name - - - - - 1 - 3 - - 0 - 0 - 1 - general - - - - 27 - ??????? ????? ??????? ???????????? ? ???????? - ??????? ????? ?????????? ?????, ? ??????? ???????? ????? ?????????? ???????? ?? ?????? ???????????? ??? ??? ????? ????????? ? ??????? ?? ??????. - 7 - input - au_cutoff - - 15 - - - 1 - 3 - - 0 - 0 - 1 - cpusaving - - - - 114 - ?????? ??????? ??? ???????? - ???? ? PHP.]]> - 16 - input - csite_article_date - - j.n.Y, G:i - - - 1 - 3 - - 0 - - 0 - ipbportal - - - - 28 - ???????? ??????????? ??? ? ???? ?????? - ?????????? ????, ? ??????? ???????? ????? ????? ??????? ?????????? ? ??????????? ????????????? ????? ? ???? ??????. ??? ??????? ??????? ?? ??????????? ????????? ???????? ?? ????? 7 ????. ??????? ? ???? 0 (????) ??? ?????????? ??????????? ???????????? ??????????? ??? ? ??????? ???? ??????. - 7 - input - db_topic_read_cutoff - - 7 - - - 1 - 3 - - 0 - - 1 - cpusaving - - - - 129 - ?????????? ???????? ??? ??????????? - - 20 - input - recent_topics_article_max - - 15 - - - 1 - 4 - ????????? ??????? - 1 - - 0 - - - - - 51 - SMTP ???? - - 9 - input - smtp_host - - localhost - - - 1 - 4 - ????????? SMTP ??????? - 0 - - 1 - email - - - - 59 - ????? ?????? ?????: - - 10 - input - home_url - - - - - 1 - 4 - - 1 - 0 - 1 - general - - - - 78 - - ???? ??? ????? ????????, ?? ?? ??????? ???????? ?????? ? ????? ?????????? ????? ???????????? ???? ? ?????????????, ??? ?????? ????????? ? ????. - 11 yes_no chat04_who_on @@ -1518,233 +1766,19 @@ smtp=SMTP 1 4 - ??? ? ???? + 0 1 - + chat04 + 0 - 240 - ?????????? ?????? - ?? ?????? ???????????? ??????? ????? ????? (????????? «Ctrl»).]]> - 28 - multi - warn_protected - - - #show_groups# - 1 - 4 - - 0 - - 1 - warnsetup - - - - 211 - ???????????? ??????? ??? ?????? ???????????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 - yes_no - forum_trash_can_use_admin - - 1 - - - 1 - 4 - - 0 - - 1 - trashcansetup - - - - 134 - ????? ????? ???????????? ???????????? - ??? ??????? ???, ??? ?? ?????? ??????? ?????? ???????????????? ????? ??? ????????? ?????, ????? ????????? ?????? ?????? ? ???????? ??????????????? ?????? ??????. + 205 + + 21 - dropdown - spider_suit - - - #show_skins# - - 1 - 4 - - 0 - - 1 - searchenginespiders - - - - 171 - - - 25 - input - hot_topic - - 15 - - - 1 - 4 - - 1 - 0 - 1 - topicspostsandpolls - - - - 217 - - - 27 - input - max_interest_length - - 1000 - - - 1 - 4 - - 0 - 0 - 1 - userprofiles - - - - 11 - ???????? ??????? ??????????? ???????? - ????? ????? ???????? ??????????? ??????? ????????? ?? ??????? ????????. - 3 - yes_no - show_calendar - - 1 - - - 1 - 4 - ??????? ??????????? ??????? - 0 - - 1 - calendar - - - - 30 - ???????? ????, ????????? ?????????????, ??? ????????? ??????? - - 7 - yes_no - show_user_posted - - 1 - - - 1 - 4 - - 1 - 0 - 1 - cpusaving - - - - 96 - - - 12 - yes_no - chat_hide_whoschatting - - 1 - - - 1 - 4 - - 0 - - 1 - - - - - 4 - ????? ?????? ?????? (???? ?? ??????????? ??????? ??????) - HTML ??????? - 1 - textarea - gl_guidelines - - - - - 1 - 4 - - 0 - - 0 - boardguidelines - - - - 43 - ?????? ???? ??????????? - ???? ? PHP.]]> - 8 - input - clock_joined - - j.n.Y - - - 1 - 4 - - 0 - 0 - 1 - date - - - - 79 - - - 11 yes_no chat04_hide_whoschatting @@ -1763,9 +1797,9 @@ if ( $show == 1 ) 206 - ????????? ????????? ?????? ??????: - ????????? ?????? ??????????? ? ????????? ???? ????????. ? ??????. - 11 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. In minutes. + 21 dropdown chat04_who_save @@ -1787,131 +1821,376 @@ if ( $show == 1 ) - 52 - SMTP ???? - - 9 + 209 + Chat Room Dimensions (WIDTH)? + + 21 input - smtp_port + chat04_width - 25 + 600 1 - 5 + 8 + Showing the chat room + 0 + + 1 + chat04 + 0 + + + + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 0 1 - email + chat04 + 0 - 60 - URL ? ????? ??? ????????: - URL ????? ????? ????? /uploads/, ???? ????? ??????????? ????????????? ?????, ??????????, ??????? ? ?.?. - 10 - input - upload_url - - - - - 1 - 5 - URL ?????? ? ???? - 0 - 0 - 1 - general - - - - 12 - ????????????? ????????, ????? ??? ??????????? ??????? ? ???????????? - - 3 + 255 + + + 21 yes_no - autohide_calendar + chat04_plainmode 0 1 - 5 + 11 0 - 1 - calendar + 0 + chat04 + 0 - 18 - ???????????????? ???????????? ??: + 213 + Load the chat room in...? - 4 + 21 dropdown - converge_login_method + chat04_display - username - username=????? ???????????? (login) -email=E-mail + self + self=Normal IPB Page +new=New Pop Up Window 1 - 5 + 12 0 1 - converge + chat04 + 0 - 212 - ???????????? ??????? ??? ????????????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 16 + Chat Room Style Options + 0 + + 0 + chat04 + 0 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
      <param name="cmd.BeepLeave" value="true"> +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 + textarea + chat04_customparams + + + + + 1 + 18 + + 0 + + 0 + chat04 + 0 +
      + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 19 + + 1 + + 0 + chat04 + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat + 0 + + + + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 190 + + + 20 yes_no - forum_trash_can_use_smod + chat_who_on 1 1 - 5 + 3 + + 0 + + 1 + chat + 0 + + + + 191 + + + 20 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 0 1 - trashcansetup + chat + 0 - 218 - ???????????? ????? ??????? ???????????? (???-?? ????????) - - 27 - input - max_sig_length - - 10000 - - - 1 - 5 - - 0 - 0 - 1 - userprofiles - - - - 97 - ????????? ????????? ?????? ?? ?????, ??? ??????: - ????????? ?????? ??????????? ?? ????????? ??????? ???? ? ????????????? ???? ???????? ? ?????????? ????????. ? ???????. - 12 + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 dropdown chat_refresh_list @@ -1927,188 +2206,15 @@ email=E-mail 1 1 - + chat + 0 - 31 - - ??? ???????? ???? ?????? ??? ????????? ?????? ??? ??????. - 7 - yes_no - no_au_forum - - 0 - no_au_forum - - 1 - 5 - ?????????? ???????????? - 0 - 0 - 1 - cpusaving - - - - 135 - ?????????? ????????? ????? ? ?????? ???????? ?????????????? - - 21 - yes_no - spider_active - - 1 - - - 1 - 5 - ?????? ???????? ????????????? - 0 - - 1 - searchenginespiders - - - - 44 - ?????? ?????? - ???? ? PHP.]]> - 8 - input - clock_long - - j.n.Y, G:i - - - 1 - 5 - - 0 - 0 - 1 - date - - - - 241 - ????????? ???????????? ?????? ???? ??????? ? ??????? ??????????????? - ??? ????????? ?????? ????? ???????????? ????? ?????? ?? ??????? ?????????????? ? ???????, ?? ??????? ??? ?? ????????. - 28 - yes_no - warn_show_own - - 0 - - - 1 - 5 - - 0 - - 1 - warnsetup - - - - 5 - ??????????????? ??????? ? ????????? - HTML ???????]]> - 1 - textarea - reg_rules - - ??????? ? ????????? ?????? - -??????????, ??????? ??????? ???????? ? ???????? ??????? ???????, ????????? ????. ???? ?? ?????????? ?? ? ??????? ?????????? ??????? ???????????, ???????? ???? ???????? ? ??????? ?????? «???????????». ??? ?????? ??????????? ??????? ?????? «?????» ? ????? ????????. - -??????????, ???????, ??? ?? ?? ???????? ?? ??? ??????????? ?????????. - -?? ?????? ??????????? ??????????????? ???????? ??????????? ??? ? ??????????. ??? ?????? ?? ??????????? ????????? - ??? ????? ??????????? ?? ??????. ????????????? ?????? ??????? ? ???? ??????????????? ?? ?????????? ?????????, ??????????? ??????????????. ??????????????? ?? ?????????? ????????? ????? ?????? ??? ?????. - -?? ?????? ?????????: -???????? ????????? ?? ?? ?????????? ??????/????, ??????????? ? ?????? ? ????? ????????????? ??????, ?????????? ???????, ???????????? ? ??????????? ??????; ??????? ? ???????????; -????????????? ???????, ??????????? ?????????????? ? ?.?. - -?????????? ?????? ????? ?????? ???????? ???????????? ??? ???????????????? ?????? ? ?? ????? ?????? ?????? ?? ?????. - -???????????? ? ?????????, ?? ???????????? ?? ??????????? ????? ????????, ?????????? ????????? ??????, ???? ????????? ????? ?? ??????????? ???.]]> - - - 1 - 5 - ??????? ? ????????? ?????? - 1 - - 0 - boardguidelines - - - - 54 - SMTP ??? ???????????? - - 9 - input - smtp_user - - - - - 1 - 6 - - 0 - - 1 - email - - - - 53 - » ? ????? «????» ? «???????? ?????» ? ???????????? ????????]]> - ????????? SMTP ??????? ???????, ????? e-mail ?????? ???? ? ??????? ???????. ???? ?? ????????? ?????? ? ??????? ???????? ??????, ???????? ??? ?????. - 9 - yes_no - mail_wrap_brackets - - 0 - - - 1 - 6 - - 0 - - 1 - email - - - - 13 - ?? ??????? ???? ?? ??????? ???????? ???? - ??????? ????? ????. ? ???????? ????? ?????????? ???? ?? ??????? ??? ????? ???????????? ? ??????????????? ????? ?? ??????? ???????? ??????. - 3 - input - calendar_limit - - 5 - - - 1 - 6 - - 1 - - 1 - calendar - - - - 98 - ????????? ?????? ?????? ?????????? IPChat? - ???? ?? ???????? ??? ?????? ?? ?????? ?????????? IPChat, ??????????, ???????? ????? ?????? ?????. ???????? ???? ??????, ???? ?? ????????. - 12 + 193 + Changed your IPChat control panel password? + + 20 input chat_pass_md5 @@ -2121,137 +2227,15 @@ email=E-mail 0 1 - + chat + 0 - 213 - ???????????? ??????? ??? ???????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 - yes_no - forum_trash_can_use_mod - - 1 - - - 1 - 6 - - 0 - - 1 - trashcansetup - - - - 45 - ???????????? ????????????? ????? - - 8 - dropdown - time_use_relative - - 1 - - - 1 - 6 - ????????????? ???? - 0 - 0 - 1 - date - - - - 32 - - ??? ???????? ???? ?????? ??? ????????? ????. - 7 - yes_no - no_au_topic - - 0 - - - 1 - 6 - - 0 - 0 - 1 - cpusaving - - - - 136 - ?????????? ????????? ?????, ??? ??????? ?????????????? - ??? ????????? ????, ??????????? ?? ??????, ????? ????? ? ?????? ???????? ????????????? ?????? ???????????????. - 21 - yes_no - spider_anon - - 0 - - - 1 - 6 - - 1 - - 1 - searchenginespiders - - - - 219 - ????????? HTML ? ???????? - ?? ??????????? ???????? ?????? ?????, ???? ?? ?? ????????? ???? ?????????????, ??????? ????? ????????? ???? ???????. - 27 - yes_no - sig_allow_html - - 0 - - - 1 - 6 - - 0 - 0 - 1 - userprofiles - - - - 242 - ????????? ?????????? ????????????? ???????????? ??? ?????????? ?? ?????????????/???????????? ?????? ??????????????? - - 28 - yes_no - warn_past_max - - 0 - - - 1 - 6 - - 0 - - 1 - warnsetup - - - - 99 - ??????? ??? ?????? ? ?????? ?????????? IPCHAT - - 12 + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 input chat_pass_md5_new @@ -2264,369 +2248,15 @@ email=E-mail 0 1 - + chat + 0 - 14 - ????????? ??? ????????? - ????????? ??? ? ,??????????????, ??????????? ????? ????? ????????? ? ???? ???????????? ???????, ? ????? ??? ??????. - 3 - input - start_year - - 2001 - - - 1 - 7 - - 0 - - 1 - calendar - - - - 243 - ??????????? ?????????? ?????? ?????????????? + 195 + Chat Room Dimensions (WIDTH)? - 28 - dropdown - warn_show_rating - - 0 - - - 1 - 7 - - 0 - - 1 - warnsetup - - - - 33 - - - 7 - yes_no - show_active - - 1 - - - 1 - 7 - - 0 - 0 - 1 - cpusaving - - - - 61 - ???? ? ????? /uploads/ - ??? ???? ?? ??????? ?? ?????, ?? ?????? ? URL ???????. - 10 - input - upload_dir - - - upload_dir - - 1 - 7 - - 0 - 0 - 1 - general - - - - 220 - ????????? BB ???? ? ???????? - - 27 - yes_no - sig_allow_ibc - - 1 - - - 1 - 7 - - 0 - 0 - 1 - userprofiles - - - - 137 - - -«?????????? ??????? ?? user-agent»=«??? ???? ??? ??????????? ?? ??????», ????????:
      googlebot=Google Bot -]]>
      - 21 - textarea - search_engine_bots - - googlebot=Google Bot -slurp@inktomi=Hot Bot -archive_org=Archive.org Bot -Ask Jeeves=Ask Jeeves Bot -Lycos=Lycos Bot -WhatUSeek=What You Seek Bot -ia_archiver=IA.Archiver Bot -GigaBlast=Gigablast Bot -Gigabot=Gigablast Bot -Yandex=Yandex Bot -Yahoo!=Yahoo Bot -Yahoo-MMCrawler=Yahoo-MMCrawler Bot -TurtleScanner=TurtleScanner Bot -TurnitinBot=TurnitinBot -ZipppBot=ZipppBot -StackRambler=StackRambler Bot -oBot=oBot -rambler=Rambler Bot -Jetbot=Jet Bot -NaverBot=Naver Bot -libwww=Punto Bot -aport=Aport Bot -msnbot=MSN Bot -MnoGoSearch=mnoGoSearch Bot -booch=Booch Bot -Openbot=Openfind Bot -scooter=Altavista Bot -WebCrawler=Fast Bot -WebZIP=WebZIP Bot -GetSmart=GetSmart Bot -grub-client=GrubClient Bot -Vampire=Net_Vampire Bot - - - - 1 - 7 - - 0 - - 1 - searchenginespiders -
      - - - 46 - ?????? ?????????????? ???????: - - 8 - input - time_use_relative_format - - {--}, G:i - - - 1 - 7 - - 1 - 0 - 1 - date - - - - 63 - ????????? ??????? ?????? - ??????? ???????? ?????????, ? ??????? ????? ???????????? ??? HTML ???????? ??????. - 10 - input - gb_char_set - - windows-1251 - - - 1 - 8 - - 0 - - 1 - general - - - - 47 - ????-??????????? ???????? ?? ?????? ????? - - 8 - yes_no - time_dst_auto_correction - - 1 - - - 1 - 8 - ??????? ?? ?????? ????? (DST) - 1 - - 1 - date - - - - 56 - ?????????????? ????? PHP Mail - - 9 - input - php_mail_extra - - - - - 1 - 8 - ????????? PHP Mail - 1 - - 1 - email - - - - 64 - URL ????? ? ???????????? - ????????????? ? ??????????
      ??? ??????? ???? ?? ??????? ????????? ??????????? ?? ?????? ??????? ??? ????? ???????????? ?????????? ??????.

      ???? ?? ??????? ????? ????, ?????????, ??? ?? ???????????? «??????».
      ?? ?????????? ???? ?????, ???? ?? ??????? ? ???????????? ????!]]>
      - 10 - input - ipb_img_url - - - - - 1 - 8 - - 0 - - 1 - general -
      - - - 221 - ?????????? ?????????, ?? ???????? ????, ?????????? ????????????? ? ?????????? ??????? - ??????: 5,15,20,25,30]]> - 27 - input - postpage_contents - - 5,10,15,20,25,30,35,40 - - - 1 - 8 - - 0 - 0 - 1 - userprofiles - - - - 244 - ????? ?? ?????????? ????????? ??????????? ???????????? ?????? ????? ?????? ??????????????? - ?????????????? ????? ??????????? ???????????? ?????? ??????!]]> - 28 - yes_no - warn_mod_ban - - 1 - - - 1 - 8 - ????? ??????????? ?????? - 0 - - 1 - warnsetup - - - - 15 - ?? ??????? ??? ????????? ?????????? - - 3 - input - year_limit - - 5 - - - 1 - 8 - - 0 - - 1 - calendar - - - - 62 - ???? ? ?????????? ?????? - ????????????? ? ??????????
      ??? ??????? ??? ???????? ???? ?? ???????? ??? ?????? IPB ?????? (/skin_cache/, /style_avatars/, /style_emoticons/, /style_images/), ????? ????????? ? ???????????? ??????????? ?????????.
      ???? ?? ??????? ????? ????, ?????????, ??? ?? ????????????? «??????».
      ?? ?????????? ???? ?????, ???? ?? ??????? ? ???????????? ????!]]>
      - 10 - input - ipb_cache_path - - - - - 1 - 8 - - 0 - - 1 - general -
      - - - 80 - ??????? ??????? ???? (??????)? - - 11 - input - chat04_width - - 600 - - - 1 - 8 - ??????????? ??????? ???? - 0 - - 1 - - - - - 100 - ??????? ??????? ???? (??????)? - - 12 + 20 input chat_width @@ -2635,180 +2265,20 @@ Vampire=Net_Vampire Bot 1 8 - ??????????? ??????? ???? + Showing the chat room 0 1 - + chat + 0 - 34 - ????????? ????????????? (??? ?????????) ???????????? ??????? ?? ??????? + 196 + Chat Room Dimensions (HEIGHT)? - 7 - yes_no - allow_search - - 1 - - - 1 - 8 - - 0 - 0 - 1 - cpusaving - - - - 130 - ?????????? ???????????? ??? - 20 input - recent_topics_discuss_number - - 1 - - - 1 - 9 - ????????? ?????????? - 0 - - 0 - - - - - 102 - ????????? ??????? ???? ?...? - - 12 - dropdown - chat_display - - self - self=?????????? IPB ???????? -new=????? pop-up ???? - - 1 - 9 - - 0 - - 1 - - - - - 222 - ?????????? ???, ?? ???????? ??????, ?????????? ????????????? ? ?????????? ??????? - ??????: 5,15,20,25,30]]> - 27 - input - topicpage_contents - - 5,10,15,20,25,30,35,40 - - - 1 - 9 - - 1 - 0 - 1 - userprofiles - - - - 245 - ????? ?? ?????????? ???????? ???????? ???? ??????????? ????????????? ????????? ????? ??????????? ? ????? (????? ?????? ??????????????)? - ?????????????? ????? ???????? ???????? ???????????? ??????!]]> - 28 - yes_no - warn_mod_modq - - 1 - - - 1 - 9 - - 0 - - 1 - warnsetup - - - - 35 - ?????????? ???? ?? ??????????? ??????? - ?????????? ???? ?? ??????????? ? ?????? ????? ??????? ???????? ??????. - 7 - yes_no - show_totals - - 1 - - - 1 - 9 - - 1 - 0 - 1 - cpusaving - - - - 65 - ????????????? ?????????? HTTP ?????????? - ????????? NT ??????? ???????, ????? ??? ??????? ???? ?????????. - 10 - yes_no - print_headers - - 0 - - - 1 - 9 - - 1 - 0 - 1 - general - - - - 81 - ??????? ??????? ???? (??????)? - - 11 - input - chat04_height - - 350 - - - 1 - 9 - - 0 - - 1 - - - - - 101 - ??????? ??????? ???? (??????)? - - 12 - input chat_height 350 @@ -2820,14 +2290,37 @@ new=????? pop-up ???? 0 1 - + chat + 0 - 103 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? - 12 + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 input chat_poppad @@ -2840,267 +2333,30 @@ new=????? pop-up ???? 0 1 - + chat + 0 - 223 - - ???????? ?????? ??? ??????? 0, ????? ??? ????? ????????? - 27 - input - subs_autoprune - - 0 - - - 1 - 10 - ???????? ?? ???? ? ?????? - 0 - 0 - 1 - userprofiles - - - - 36 - ????? ???????? ??????? - ????? ????? ???????? ????????? ? ?????????? ???????, ????? ????? ????? ????????. ?? ?????? ????? ???????? ???? ??????, ????? ?? ???????????? ??????????? ??????. - 7 - input - load_limit - - - - - 1 - 10 - - 0 - 0 - 1 - cpusaving - - - - 246 - ????? ?? ?????????? ????????? ???????????? ??????????? ?????????? ?????????/??? ?? ?????? (????? ?????? ??????????????)? - ?????????????? ????? ????????? ????????????? ??????????? ?????????? ????????? ??????!]]> - 28 - yes_no - warn_mod_post - - 1 - - - 1 - 10 - - 0 - - 1 - warnsetup - - - - 172 - ??????? ?????? ??? - ?????, ???????????? ????? ????????? ???? ? ????? ????????. ?????? ???? ?????? ? ??????? ????? ?????? ???? ??? ? ??????. - 25 - input - pre_pinned - - ?????: - - - 1 - 10 - ???????? ??? - 0 - 0 - 1 - topicspostsandpolls - - - - 143 - ????????? ???????????? ???????????? - ????????? ????????????? ??????????? ???????????? ???????????, ????????? CGI ?????????. ??? ????? ???? ????????????, ????????, ??? ???????? ????????? ??????????? ? ??????? ? ?.?., ?? ???????????? ????? ?????? ??????????? ??????????? ???????, ??????? ????? ???????? ???????????? ??????. - 23 - yes_no - allow_dynamic_img - - 0 - - - 1 - 10 - - 0 - - 1 - securityandprivacy - - - - 224 - ????????????? ??????????? ?? ?????? ????? - - 27 - multi - autoforum_sub_groups - - - #show_groups# - - 1 - 11 - - 1 - - 1 - userprofiles - - - - 83 - - - 11 - yes_no - chat04_plainmode - - 0 - - - 1 - 11 - - 0 - - 0 - - - - - 144 - ???????? ????????? IP-??????? ?? X_FORWARDED_FOR? - ???? ????? ????????, ?? IP-?????? ????????????? ????? ?????????? ??? ?? ?? ????????? X_FORWARDED_FOR. ?????????????? ??? ??????? ?????????? ? ????????? ?????, ????? ?? ??????? ?????????? ???????? IP-????? ????????????. - 23 - yes_no - xforward_matching - - 0 - - - 1 - 11 - - 0 - - 1 - securityandprivacy - - - - 173 - ??????? ???????????? ??? - - 25 - input - pre_moved - - ??????????: - - - 1 - 11 - - 0 - 0 - 1 - topicspostsandpolls - - - - 247 - ??????? ??? ?? ???? ????????? ????? ??????? ?????????????? ?????? ????????????? + 198 + Default Chat Room Interface Language? - 28 - input - warn_mod_day - - 3 - - - 1 - 11 - - 1 - - 1 - warnsetup - - - - 66 - ??? ????????????? - - 10 - dropdown - header_redirect - - location - location=? ?????????????? ????????? Location: (*nix) -refresh=? ?????????????? ????????? Refresh: (Windows) -html=HTML META ????????????? (???? ???????? ???? ?? ????????) - - 1 - 11 - ????????? ????????????? - 0 - 0 - 1 - general - - - - 104 - ???? ?????????? ???? ?? ?????????? - - 12 + 20 dropdown chat_language en en=English -ar=???????? -de=???????? -es=????????? -fr=??????????? -hr=?????????? -it=??????????? -iw=????? -nl=??????? -pl=???????? -pt=????????????? +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese 1 11 @@ -3108,255 +2364,15 @@ pt=????????????? 1 1 - + chat + 0 - 145 - - - 23 - yes_no - login_change_key - - 0 - - - 1 - 12 - - 0 - - 1 - securityandprivacy - - - - 84 - ????????? ??????? ???? ?...? - - 11 - dropdown - chat04_display - - self - self=?????????? IPB ???????? -new=????? pop-up ???? - - 1 - 12 - - 0 - - 1 - - - - - 248 - ????? ?? ??????????????? ????????? ??????????? ???????????? ?????? ????? ?????? ??????????????? - ?????????????? ????? ??????????? ???????????? ?????? ??????! - 28 - yes_no - warn_gmod_ban - - 1 - - - 1 - 12 - ????? ???????????????? - 0 - - 1 - warnsetup - - - - 115 - ?????????? ???? ?????????? ????????????/?????? - - 16 - yes_no - csite_pm_show - - 1 - - - 1 - 12 - ?????????? ??????? - 0 - - 0 - ipbportal - - - - 174 - ??????? ??????? - ?????, ???????????? ????? ????????? ???? ? ????? ????????. ??? ????, ? ??????? ???? ?????, ?????????? ???. - 25 - input - pre_polls - - ?????: - - - 1 - 12 - - 0 - 0 - 1 - topicspostsandpolls - - - - 225 - ????????? ???????????? ???????? - - 27 - yes_no - avatars_on - - 1 - - - 1 - 12 - ??????? ? ?????????? - 0 - 0 - 1 - userprofiles - - - - 67 - ?????? ???????? ?????????????? - ????????? ?????? ???????????? ???????? ?????????????, ??????? ???????? ??? ??????????? ????????????? ? ??? ????????? ????????, ? ?????? ???????????? ??? ?? ?????? ????????. ?????????? ? ????? ???????? ???????. - 10 - yes_no - ipb_remove_redirect_pages - - 0 - - - 1 - 12 - - 1 - - 1 - general - - - - 175 - ???????????? ????? ????????? ??? - ???????????? ??????????? ????? ????????? ???. - 25 - input - topic_title_max_len - - 150 - - - 1 - 13 - - 1 - - 1 - topicspostsandpolls - - - - 146 - ???????????? ?????? (? ????????) - ?????????? ?????? ????????? ????? ????????? ????? ??????. ??? ?????? ?????, ??? ?????? ??????????? ????????? ??????. - 23 - input - session_expiration - - 3600 - - - 1 - 13 - - 0 - - 1 - securityandprivacy - - - - 140 - ??????????? ????? ??????? ??? ?????? (? ????????): - - 22 - input - min_search_word - - 4 - min_search_word - - 1 - 13 - - 0 - 0 - 1 - searchsetup - - - - 249 - ????? ?? ??????????????? ???????? ???????? ???? ??????????? ????????????? ????????? ????? ??????????? ? ????? (????? ?????? ??????????????)? - ?????????????? ????? ??????????? ???????????? ?????? ??????! - 28 - yes_no - warn_gmod_modq - - 1 - - - 1 - 13 - - 0 - - 1 - warnsetup - - - - 226 - ??????????? ?????????? ?????? ??? ???????? - ?????????? ??????? (gif,jpeg,jpg,png) ? ?.?. - 27 - input - avatar_ext - - gif,jpg,jpeg,png - - - 1 - 13 - - 0 - 0 - 1 - userprofiles - - - - 105 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? - 12 + 200 + Allow chat access to these groups + You may select more than one + 20 multi chat_access_groups @@ -3381,217 +2397,19 @@ if ( $show == 1 ) }]]> 1 13 - ????? ??????? + Access Permissions 0 1 - + chat + 0 - 147 - - - 23 - yes_no - match_ipaddress - - 1 - - - 1 - 14 - - 0 - - 1 - securityandprivacy - - - - 85 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? - 11 - input - chat04_poppad - - 50 - - - 1 - 14 - - 1 - - 1 - - - - - 141 - ???????? ????? ?????????: ?????????? ??????? - ?? ??????? ?????? ? ?????? ??? ????????????? ?????? '???????? ????' ??? '???????? ????? ?????????'. ?? ?????? ???????? ????????? ???????.]]> - 22 - multi - vnp_block_forums - - - #show_forums# - - 1 - 14 - - 0 - - 1 - searchsetup - - - - 250 - ????? ?? ??????????????? ????????? ???????????? ??????????? ?????????? ?????????/??? ?? ?????? (????? ?????? ??????????????)? - ?????????????? ????? ??????????? ???????????? ?????? ??????! - 28 - yes_no - warn_gmod_post - - 1 - - - 1 - 14 - - 0 - - 1 - warnsetup - - - - 69 - ????????? GZIP ??????? - GZIP ???????? ???????? ??????? ? ????????? ??????, ?? ????????? ??????? ?? ???????????? ???? ?????. - 10 - yes_no - disable_gzip - - 0 - - - 1 - 14 - - 0 - 0 - 1 - general - - - - 68 - ?????????? ????????? - - 10 - dropdown - debug_level - - 0 - - - 1 - 14 - - 0 - 0 - 1 - general - - - - 37 - - ???? ????? ???????? ????????? ?? ?????????? ???????? ??????. - 7 - yes_no - nocache - - 1 - - - 1 - 14 - ?????????? ??????? - 0 - 0 - 1 - cpusaving - - - - 116 - ?????????? ???? ? ?????? ??????? - - 16 - yes_no - csite_search_show - - 1 - - - 1 - 14 - - 0 - - 0 - ipbportal - - - - 227 - ????????? ????????????? ???????????? ????????? URL ?????? ????????? - ???? ??? ????? ????????, ?? ???????????? ????? ?? ????????? ?? ????? ??????, ? ?????? ??????? ?? ???? ?????? - 27 - yes_no - avatar_url - - 1 - - - 1 - 14 - - 0 - 0 - 1 - userprofiles - - - - 106 - ????????? ????? ?????????????? ???? ??????? - ?? ?????? ???????? ?????, ??? ????, ??????????, ????????? ???????????! - 12 + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 multi chat_admin_groups @@ -3620,54 +2438,186 @@ if ( $show == 1 ) 1 1 - + chat + 0 - 70 - ???????? ????? ??????? SQL? - - 10 + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 247 + Turn off copyright? + + 25 yes_no - sql_debug + ips_cp_purchase 0 1 - 15 + 2 0 - 0 + 1 - general + ipbcopyright + 0 - 228 - ???????????? ?????? ???????????? ????? ??????? (? ??????????) - - 27 - input - avup_size_max + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on - 50 + 1 1 - 15 + 1 0 - 0 + 1 - userprofiles + ipbportal + 0 - 117 - ?????????? ???? ? ?????????? ???? ?????? ?????? + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 0 + ipbportal + 0 + + + + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + ipbportal + 0 + + + + 227 + Show User / Guest Info box? - 16 + 22 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + ipbportal + 0 + + + + 229 + Show search box? + + 22 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + ipbportal + 0 + + + + 230 + Enable skin selection choice dropdown? + + 22 yes_no csite_skinchange_show @@ -3681,363 +2631,14 @@ if ( $show == 1 ) 0 ipbportal + 0 - 148 - ????????? USER_AGENT ???????? ????????????? - ??? ????? ???????? ???? ??????? ?????? ????????????. ?? ???? ???? ???-?? ?????? ????????? ?????? ??????? ????????????, ?? ????? ??? ???????? ???????? ?? ???????? ?????????????? ????????? ??????? ????????????-??????. - 23 - yes_no - match_browser - - 0 - - - 1 - 15 - - 1 - - 1 - securityandprivacy - - - - 251 - ??????? ??? ?? ???? ?????????????? ????? ??????? ?????????????? ?????? ????????????? + 233 + Show Site Navigation Menu? - 28 - input - warn_gmod_day - - 3 - - - 1 - 15 - - 1 - - 1 - warnsetup - - - - 38 - ??????? ???????? ?????????? ????????? ???????? ? ??????????? ??????? - ? ??????????? ?????? ????????? ????? ????????? ????????? ????? ??????????? ????????. ??? ??????? ?? ?????? ???????????? ????? ???????? ?? ???????? ? ?????? ??????????? ?????????. ???????? ???? ????? ??????, ???? ??????, ????? ??? ?????? ?????? ?????????? ????????? ?????????... - 7 - input - search_post_cut - - - - - 1 - 15 - - 0 - 0 - 1 - cpusaving - - - - 71 - ???????????? ?????????? ????? ??????? - ?????????? ????? ?????? ?? ???????? ?? ? PHP ????? ? ????? /skin_cache/, ? ?????????? ??? ???????? ?????? ???? ??????.]]> - 10 - yes_no - safe_mode_skins - - 0 - - - 1 - 16 - - 0 - 0 - 1 - general - - - - 229 - ???????????? ??????? ??????? - x??????), ??? x - ????? ??????????? ????????]]> - 27 - input - avatar_dims - - 90x90 - - - 1 - 16 - - 0 - 0 - 1 - userprofiles - - - - 39 - ??????? ????????? ?? ?????????? ???? ???????? ?? ???????? - ??????? ???????????? ??? ??????? ?????????? ???????? ? ??????????? -. - 7 - yes_no - short_forum_jump - - 0 - short_forum_jump - - 1 - 16 - - 1 - 0 - 1 - cpusaving - - - - 86 - ???: ???? ???? - ??? ????????? ????? ???? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_applet_bg - - #BCD0ED - - - 1 - 16 - ????? ????? ??????? ???? - 0 - - 0 - - - - - 127 - ??????? URL ???? ? ????????????? ??????? - ???????? ??????, ???? ?? ??????, ????? ??????????? ???? ? ??????? - 19 - input - poll_poll_url - - - - - 1 - 17 - - 0 - - 0 - - - - - 89 - ???? ????: ???? ????????? ????? - ??? ????????? ????? ????????? ????? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_window_fg - - #345487 - - - 1 - 17 - - 0 - - 0 - - - - - 88 - ???? ????: ???? ???? - ??? ????????? ????? ???? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_window_bg - - #F5F9FD - - - 1 - 17 - - 0 - - 0 - - - - - 230 - ??????? ?? ????????? ??? ??????? ???????? - x??????), ??? x - ????? ??????????? ????????]]> - 27 - input - avatar_def - - 80x80 - - - 1 - 17 - - 0 - 0 - 1 - userprofiles - - - - 72 - ?????????????? ???????? ????????: - - 10 - dropdown - number_format - - space - none=?? ????????? -space=?????? -,=, -.=. - - 1 - 17 - ?????????????? ????? - 0 - 0 - 1 - general - - - - 87 - ???: ???? ????????? ????? - ??? ????????? ????? ????????? ????? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_applet_fg - - #345487 - - - 1 - 17 - - 0 - - 0 - - - - - 73 - ??????????? ????? ?? ??????? ????? ????? - ??????, ???????????? ??? ?????????? ????? ?? ??????? ????? ? ?????? ?? ??????. - 10 - dropdown - decimal_seperator - - . - .=. -,=, - - 1 - 18 - - 1 - - 1 - general - - - - 74 - ?????? GD ?????????? - - 10 - dropdown - gd_version - - 2 - 1=GD1 -2=GD2 - - 1 - 19 - - 0 - - 1 - general - - - - 90 - ?????????????? ????????? - -<param name="cmd.BeepEnter" value="true"> -
      <param name="cmd.BeepLeave" value="true"> -
      ??????????, ???????? ???????????? ? Invision Chat ??? ????????? ????????? ??????????.]]>
      - 11 - textarea - chat04_customparams - - - - - 1 - 18 - - 0 - - 0 - -
      - - - 231 - ?????????? ???????? ??? ??????? ???????? - - 27 - input - av_gal_cols - - 5 - - - 1 - 18 - - 0 - 0 - 1 - userprofiles - - - - 118 - ?????????? ????????????? ????? - - 16 + 22 yes_no csite_nav_show @@ -4051,64 +2652,25 @@ space=?????? 0 ipbportal + 0 - 91 - ?????? ?????? ??? ?????? ? ???? - ??? ????????? ??????? ??????, ???????????? ? ????, ??????????? ??? ?????. - 11 - input - chat04_style_font_size - - 10 - - - 1 - 19 - - 1 - - 0 - - - - - 232 - ??????????? ?????????? ?????? ??? ?????????? - ?????????? ??????? (gif,jpeg,jpg,png) ? ?.?. - 27 - input - photo_ext - - gif,jpg,jpeg,png - - - 1 - 19 - - 0 - 0 - 1 - userprofiles - - - - 119 - ?????? ?????????????? ???? - http://www.yandex.ru [?ndex]

      ?????? {board_url} ????? ???????? ?? URL ?????? ??????]]>
      - 16 + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

      {board_url} will convert into your board]]>
      + 22 textarea csite_nav_contents - + 1 19 @@ -4117,53 +2679,14 @@ space=?????? 0 ipbportal + 0
      - 176 - ?????????? ?????????, ??????????? ?? ????? ???????? ???? - - 25 - input - display_max_posts - - 20 - - - 1 - 20 - ???????? ????????? - 0 - 0 - 1 - topicspostsandpolls - - - - 233 - ????????? ?????????????? ????????? ???????? ??????? ??????????/????????? - ???????????? ?????????? ????? ???????? ??????? ??????????? ???????. - 27 - yes_no - disable_ipbsize - - 0 - - - 1 - 20 - - 1 - 0 - 1 - userprofiles - - - - 120 - ?????????? ???? ? ?????????????? ????????? - ????????, ?????? ?? ????? ????? ?????????. - 16 + 235 + Show Affiliates / Favoured Sites box? + + 22 yes_no csite_fav_show @@ -4177,53 +2700,14 @@ space=?????? 0 ipbportal + 0 - 177 - ??????????? ?????: ?????????? ?????????, ??????????? ?? ????? ???????? - ??? ????? ????????? ??????????????, ??????? ????????? ????? ?????????? ?? ????? ???????? ???? ? ??????????? ??????. ??? ???????? ????????? ???????? ?? ?????? ??? ????????? ????? ??????? ??? ????? ????????. - 25 - input - threaded_per_page - - 100 - - - 1 - 21 - - 0 - - 1 - topicspostsandpolls - - - - 234 - ????????? ?????? ?????? ???????? - - 27 - yes_no - guests_sig - - 1 - - - 1 - 21 - ????????? ??? ?????? - 0 - 0 - 1 - userprofiles - - - - 121 - ?????????? ????? ? ?????????????? ???????? - HTML ??????? - 16 + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 textarea csite_fav_contents @@ -4240,22 +2724,23 @@ space=?????? 0 ipbportal + 0 1 ipbreg - IPB ???????? - ????????? ????????????? ????????? ????????. + IPB Registration + This section will allow you to edit your IPB registered licence settings. 1 - 109 - IPB ??????????????? ???? - ?? ???????? ? ?? ????????? ???? ????, ???? ?? ?? 100% ?? ??????? ? ???, ??? ?? ???????!]]> - 15 + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 input ipb_reg_number @@ -4273,10 +2758,10 @@ space=?????? - 110 - ?????????? ?????????? ? ???, ?? ???? ??????????????? ??? IPB? - - 15 + 243 + Display registered to line? + + 24 yes_no ipb_reg_show @@ -4294,10 +2779,10 @@ space=?????? - 111 - - ???????: ???? ?????? ??? ???????? Invision Power Services - 15 + 244 + Show as licensed to... + Matthew Mecham, IPS, Inc.]]> + 24 input ipb_reg_name @@ -4315,37 +2800,1337 @@ space=?????? - 235 - ????????? ?????? ?????? ??????????? ? ?????????? ???????????? + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + 130 + Export news topics from which forum? - 27 + 10 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 131 + + + 10 yes_no - guests_img + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + 132 + Allow BBCode in messages? + + 11 + yes_no + msg_allow_code 1 1 - 22 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 133 + Allow HTML in messages? + + 11 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 134 + Max. number of messages to show per page when viewing message list + The default is 50. + 11 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 31 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + 218 + Forums to export articles from + You may select more than one. + 30 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 219 + Number of articles to show + + 30 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 224 + Number of topics to show + + 30 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 0 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + 165 + Enable the search engine spider recognition? + + 16 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 166 + Log all spider visits? + + 16 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 167 + Treat spider/bot as part of which group? + + 16 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 168 + Force spider/bot to use skin + + 16 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 169 + Show spider/bot in the active users list? + + 16 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 171 + Show spider as anonymous + + 16 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 172 + Spider Bot User-Agent + bot=Human Name format.(one per line)
      Example: googlebot=Google.com]]>
      + 16 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
      + + + 1 + searchsetup + Search Set-Up + + 0 + + + + 185 + Type of search to use? + +
      +]]>
      + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
      + + + 186 + Default Search Mode? + This setting will only take effect if using full text searching + 19 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 31 + Minimum search word length + + 19 + input + min_search_word + + 4 + min_search_word + + 1 + 13 0 0 1 - userprofiles + searchsetup + 0 + + + + 334 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 19 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + 93 + Enable Script/Bot Flood Control? + + 6 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 1 + + 1 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 98 + Allow dynamic images? + + 6 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 331 + + + 6 + yes_no + login_change_key + + 0 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 99 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 6 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 332 + + + 6 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 100 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 6 + yes_no + match_browser + + 0 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 101 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 6 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 102 + Allow images to be posted? + Advanced programmers can force images to run as scripts. IBF limits damage by this method however. This should only be disabled as an extreme measure. + 6 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 103 + Allow flash movies in posts and avatars? + + 6 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 105 + New registration email validation? + + 6 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 106 + + + 6 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 107 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 6 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 108 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 6 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 109 + Disable new registrations? + + 6 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 111 + + Removes the ability for your members to report a post. + 6 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 112 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 6 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 113 + Allow users to browse the Active Users list? + + 6 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 114 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 6 + yes_no + disable_admin_anon + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 115 + Disable root admin group viewing online users IP address in online user list? + + 6 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + 63 + Number of topics per forum page + + 5 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 69 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 5 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 329 + Number of rating votes required to show + + 5 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 68 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 5 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 64 + + + 5 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 65 + Topic prefix for PINNED topics + + 5 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 66 + Topic prefix for MOVED topics + + 5 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 67 + Topic prefix for POLLS + + 5 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 335 + Topic Title Max Length + Maximum topic title length allowed. + 5 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 70 + Number of posts per topic page + + 5 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 179 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 5 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 178 - ????? ????????? ??? ?? ????????? - - 25 + Default Topic View Mode + + 5 dropdown topicmode_default linear - linear=??????????? -threaded=??????????? -linearplus=???????? + linear=Standard +threaded=Outline +linearplus=Linear Plus 1 22 @@ -4354,13 +4139,14 @@ linearplus=???????? 1 topicspostsandpolls + 0 - 179 - ????????????? ?????????????: ?????????????? ?????? - ???????????? ????????? ????? ?? ?????? ???? ????????????. - 25 + 344 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 5 multi cannot_ignore_groups @@ -4390,39 +4176,20 @@ $key = 'cannot_ignore_groups[]'; 1 topicspostsandpolls + 0 - 236 - ????????? ?????? ?????? ??????? ?????????????? + 71 + Order posts within a topic by - 27 - yes_no - guests_ava - - 1 - - - 1 - 23 - - 1 - 0 - 1 - userprofiles - - - - 180 - ??????????? ????????? ?? - - 25 + 5 dropdown post_order_column pid - pid=?????? -post_date=???? ?????????? + pid=Post ID +post_date=Post Date 1 24 @@ -4431,55 +4198,20 @@ post_date=???? ?????????? 0 1 topicspostsandpolls + 0 - 92 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? - 11 - multi - chat04_access_groups - - - #show_groups# - - 1 - 25 - ????? ??????? - 1 - - 1 - - - - - 181 - ??????????? ????????? ?? + 72 + Order posts within a topic by - 25 + 5 dropdown post_order_sort asc - asc=??????????? (0-9) -desc=???????? (9-0) + asc=Ascending (0-9) +desc=Descending (9-0) 1 25 @@ -4488,96 +4220,14 @@ desc=???????? (9-0) 0 1 topicspostsandpolls + 0 - 149 - ???????????? ?????????? ????? ??? ???????? ?????? ????????????? - - 23 - yes_no - use_mail_form - - 1 - - - 1 - 30 - - 0 - - 1 - securityandprivacy - - - - 150 - ????????? ??????????? ???????????? - ??????? ???????????? ????? ????? ????? ??????????? ????????? ???????. IPB ??????????? ???????? ????????? ??????????? ????? ??? ?????. ?????????? ??? ????? ?????? ? ????? ??????? ???????. - 23 - yes_no - allow_images - - 1 - - - 1 - 31 - - 0 - - 1 - securityandprivacy - - - - 151 - ????????? Flash ?????? ? ?????????? ? ????????? - - 23 - yes_no - allow_flash - - 0 - - - 1 - 32 - - 1 - - 1 - securityandprivacy - - - - 152 - ???????????? ????????? ??????? ??????? ?????????????? - ?? ?????? ???????? ????????? ??????? ??????? ??????? ??????????????? ??? ?????? ?????? ?????????, ????? ??????? ????? ???????????? ???? ????? ???????????? ???? ??????? ?????? ????? ??????????? ??????, ?????????? ?? ?? e-mail. - 23 - dropdown - reg_auth_type - - 0 - admin_user=????????? ?? e-mail, ????? ??????????????? -user=????????? ????????????? ?? e-mail -admin=????????? ??????????????? -0=??? - - 1 - 40 - - 0 - - 1 - securityandprivacy - - - - 182 - ???????????? ?????????? ??????? ? ????? ????????? - - 25 + 74 + Max. no. emoticons per post + + 5 input max_emos @@ -4586,18 +4236,19 @@ admin=????????? ??????????????? 1 40 - ???????? ????????? + Making a Post 0 0 1 topicspostsandpolls + 0 - 183 - ???????????? ?????????? ??????????? ? ????? ????????? - - 25 + 75 + Max. no. images per post + + 5 input max_images @@ -4611,33 +4262,14 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 153 - - - 23 - input - validate_day_prune - - 0 - - - 1 - 41 - - 0 - - 1 - securityandprivacy - - - - 184 - ???????????? ?????? ????????? (? ??????????) - - 25 + 76 + + + 5 input max_post_length @@ -4651,57 +4283,18 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 154 - ?????????? ?????????????? ??? ??????????? ?????? ????????????? - ???? ???????? ??? ?????, ????? ????? ?????????? ?????? ?? e-mail ? ???????? ??????????????, ????? ???????????? ??????? ???????????????? ?? ??????. - 23 - yes_no - new_reg_notify - - 0 - - - 1 - 42 - - 0 - - 1 - securityandprivacy - - - - 155 - ?????????? ????????????? ?????????????? ??? ????????????????, ????? ??????? ?????? - ???? ????? ????????, ??? ????? ?????? ????? ????? ??? ?????????????????? ??? ????, ????? ??????? ?????. - 23 - yes_no - force_login - - 0 - - - 1 - 43 - - 0 - - 1 - securityandprivacy - - - - 186 - ???????????? ?????? ?????????????? ? ????????? Flash ?????? - ?? ????????? - 200]]> - 25 + 77 + Max. width of posted Flash movies (in pixels) + + 5 input max_w_flash - 200 + 199 1 @@ -4711,33 +4304,14 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 156 - ????????? ???????????? - ????????? ??????????? ????? ????????????? ?? ????? ??????. - 23 - yes_no - no_reg - - 0 - - - 1 - 44 - - 0 - - 1 - securityandprivacy - - - - 187 - ???????????? ?????????? ???????? ? ?????? - ????????????? ??????? 80-100.]]> - 25 + 87 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 5 input post_wordwrap @@ -4751,33 +4325,14 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 157 - ??????? ???? chr(0xCA)? - chr(0xCA) - ????????? ????????? «?????????» ??????? ? ?????????? ???????????? ??????. ?? ? ??????? ????? ???????????? ?? ???????????, ????? ????????.]]> - 23 - yes_no - strip_space_chr - - 0 - - - 1 - 45 - - 0 - - 1 - securityandprivacy - - - - 188 - ?????????? ??????? ? ????? ?????? ??????? ??????? ??? ???????? ????/???????? ????????? - - 25 + 73 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 5 input emo_per_row @@ -4791,39 +4346,19 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 158 - - ????????? ??????????? ????? ????????????? ???????? ?????? ? ???????????? ?????????. - 23 + 330 + Allow members to use Rich Text Editing? + + 5 yes_no - disable_reportpost + posting_allow_rte - 0 + 1 - - 1 - 46 - - 0 - - 1 - securityandprivacy - - - - 159 - ????? ???????? ?????????????? ???????? ??????? - ???? ?? ?????? ???????? ?????? ?? ?????????????? - 23 - dropdown - reportpost_method - - pm - email=?? email -pm=?????? ?????????? 1 47 @@ -4831,14 +4366,15 @@ pm=?????? ?????????? 0 1 - securityandprivacy + topicspostsandpolls + 0 - 189 - ???????????? ????? ????? ? ????? ????????? - ????????? ???? ?????, ?? ?????????? ????? ??????? ?????????? ????? ? ?????????, ??? ????????? ????????? «???????» ????????? ?????????. - 25 + 317 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 5 input max_quotes_per_post @@ -4852,35 +4388,16 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 160 - - ?? ?????? ???????? ???? ?????? ??? ?????????? ????-????????.]]> - 23 - input - flood_control - - 0 - - - 1 - 48 - - 1 - - 1 - securityandprivacy - - - - 190 - - n
      ?????, ?? ??? ????????? ???????????? ? ????. -??????? ???-?? ?????, ? ??????? ??????? ????? ????????? ???????????. -??????? 0, ????? ????????? ?????.]]> - 25 + 336 + + n
      minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 5 input post_merge_conc @@ -4894,13 +4411,14 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 191 - ????????? ??????????? ?????? - ??? ????? ????? ??????? ????? ?????????? ????? ??? ??????????? ?????????, ??????????? ??????. :) - 25 + 84 + Stop Quote Embedding? + ..]]> + 5 yes_no strip_quotes @@ -4914,13 +4432,15 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 192 - ??????????? ? ?????????? ? ?????????? ?????????? ?????? ??????????? - ?????????? ??, ????????? ??????? (gif,jpeg,jpg)]]> - 25 + 79 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 5 input img_ext @@ -4934,73 +4454,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 161 - ????????? ????????????? ????????????? ?????? ???????? ?????????????? - ???? ???????? ??? ?????, ?? ???????????? ?? ?????? ????????????? ?????? ???????? ?????????????, ??? ??? ?????????, ??? ??? ?????? ?? ??????. - 23 - yes_no - allow_online_list - - 1 - - - 1 - 50 - ??????????? - 0 - - 1 - securityandprivacy - - - - 162 - ????????? ??????????? ???????? ?????? ??????????????? ?????? ????????? ????????????? ? ???????? - ??????? ???????????? ????? * ????? ????? ???????????? - 23 - yes_no - disable_admin_anon - - 0 - - - 1 - 51 - - 0 - - 1 - securityandprivacy - - - - 163 - ????????? ??????????? ???????? ?????? ??????????????? ?????? IP-?????? ????????????? ? ???????? - - 23 - yes_no - disable_online_ip - - 0 - - - 1 - 53 - - 1 - - 1 - securityandprivacy - - - - 193 - ?????????? ????????????? ??????????? ? ?????????? - ??? ?????????? ???? ????? ????????????? ??????????? ????? ????????? ? ?????? ????????? ??? ??????. - 25 + 80 + Show uploaded images in post as images? + + 5 yes_no show_img_upload @@ -5009,18 +4470,19 @@ pm=?????? ?????????? 1 60 - ????? ????????????? ??????????? + Attached Image Options 0 0 1 topicspostsandpolls + 0 - 194 - ?????????? ?????? ????????????? ???????????? - ???? ????? ???? ????????, ?? ????????? ??? ? ???? ????? ?????????? ? ????????? ?????? ??????????? ????? ?????????????? ???????????, ??????? ???????? ?????? ? ??????? ??????? ???????????. ????? ?? ??????????? ????? ???????????? ???????? ??????????????? ???????????. - 25 + 81 + Show thumbnail of attached image? + + 5 yes_no siu_thumb @@ -5034,13 +4496,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 195 - - ???? ??? ????? ???? ????????, ?? ?? ?????? ????? ?????????? ???????????? ?????? ??????. ???? ????????????? ??????????? ????? ?????? ?? ????????, ?? ?? ????? ???????? ????? ?????????? ??? ?????-???? ???????? ? ???. - 25 + 180 + + + 5 input siu_width @@ -5054,13 +4517,14 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 196 - - ???? ??? ????? ???? ????????, ?? ?? ?????? ????? ?????????? ???????????? ?????? ??????. ???? ????????????? ??????????? ????? ?????? ?? ????????, ?? ?? ????? ???????? ????? ?????????? ??? ?????-???? ???????? ? ???. - 25 + 83 + + + 5 input siu_height @@ -5074,33 +4538,35 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 197 - - ??? ??? ??? ???????, ????? ????????? ????? ??????????? ?? ?????, ??????? ? ?????? ??????????????????? ????????????, ??? ???????? ????? ? ?? ????????... ??? ????? ??????? ????? ??????????, ??? ???????????? ???????? ????????. - 25 + 85 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 input guest_name_pre - ?????_ + Guest_ 1 70 - ???????? ? ???????? ??? ???? ?????? + Guest Username 0 0 1 topicspostsandpolls + 0 - 198 - - ??? ??? ??? ???????, ????? ????????? ????? ??????????? ?? ?????, ??????? ? ?????? ??????????????????? ????????????, ??? ???????? ????? ? ?? ????????... ??? ????? ??????? ????? ??????????, ??? ???????????? ???????? ????????. - 25 + 86 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 input guest_name_suf @@ -5114,13 +4580,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 199 - + 88 + - 25 + 5 yes_no poll_tags @@ -5129,18 +4596,19 @@ pm=?????? ?????????? 1 80 - ????????? ??????? + Poll Options 0 0 1 topicspostsandpolls + 0 - 201 - ???????????? ?????????? ????????? ?????? ? ?????? - - 25 + 89 + Maximum number of poll choices allowed? + + 5 input max_poll_choices @@ -5154,13 +4622,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 202 - ????????? ????????????? ????????????? ?????????? ??????, ?? ????? ????? ?????? ? ???? + 90 + Allow members to view the results of a poll without losing their vote? - 25 + 5 yes_no allow_result_view @@ -5174,13 +4643,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 203 - ????????? ????????? ?????? ?????????? ? ???? - - 25 + 237 + Allow poll creator to vote in own poll? + + 5 yes_no allow_creator_vote @@ -5194,13 +4664,14 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 204 - ?????????? ????? ? ??????? ???????? ????, ? ??????? ??????? ??? ????????? ??????? ??????????? ???????? ? ??? ????? - ??? ????? ?? ???????????????? ?? ??????????????? ? ????????????????. ??? ???? ?????????, ????? ???????. :) - 25 + 92 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 5 input startpoll_cutoff @@ -5218,222 +4689,986 @@ pm=?????? ?????????? - 205 - ????????? ????????????? ???????????? Rich Text ????????? - - 25 + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + + + + 157 + Enable the trashcan? + + 14 yes_no - posting_allow_rte + forum_trash_can_enable 1 1 - 100 - ????????? ????????? + 1 + 0 1 - topicspostsandpolls + trashcansetup 0 - 207 - - - 25 - input - rte_pm_width + 158 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 14 + dropdown + forum_trash_can_id - 500px + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 159 + Use trashcan for ROOT administrators? + + 14 + yes_no + forum_trash_can_use_radmin + + 1 1 - 102 + 3 - 1 + 0 1 - topicspostsandpolls - - - - 1 - converge - ????????? Converge - Converge - ?????? ??????? ??????????? ??? ???? ????????? ????????. ??? ????????? ????? ???? ??????????? ??? ???? IPS ?????????. - 0 - - - - 1 - cookies - ????????? Cookies - ?????? ????? ?? ????????? cookies. ??????? ???????? ??? ???????????? ?????? ??????????? ?? ??????. - 0 - - - - 1 - email - ????????? E-mail - ????????? ??????????? ????????? E-mail ?????? ??????, ???????? ????? ??? ???????? ????? (PHP mail(), SMTP) ? ??????. - 0 - - - - 1 - httpapi - IPB HTTP-API ????????? - ????????? ??? ?????????? ???????? HTTP-API - 0 - - - - 1 - ipbportal - IPB ?????? - ??? ????????? ???????? ??? ????????/????????? ? ????????? IPB ??????. - 0 - - - - 1 - securityandprivacy - ????????? ???????????? - ?????, ??????????? ??? ?????????????? ??????? ???????????? ?????? ??????. - 0 - - - - 1 trashcansetup - ????????? ??????? - ??????? - ??????????? ?????, ? ??????? ???????????? ???? ????? ????????, ??? ????? ???????? ??????????? ???????????? ???? ??? ?? ????????? ????????. - 0 + 0 - 1 - warnsetup - ??????? ?????????????? - ????????? ??????? ?????????????? ?????????????, ?????????????? ??????. - 0 + 160 + Use trashcan for normal administrators? + + 14 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 - 1 - searchenginespiders - ????????? ???? - ?????? ?????, ?????????? ?? ????????? ??????? ???????? ?? ?????????? ??????. ????????? ????????? ????? ?????, ???????? ? ????????? ??????? ??????? ????????? ?????. - 0 + 161 + Use trashcan for global moderators? + + 14 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 - 1 - boardoffline - ????????? / ?????????? ?????? - ?????? ????? ??? ?????????/?????????? ??????. ???? ????? ????????? ? ??????????? ?????????, ?? ?????? ? ???? ????? ????? ?????? ??????????????. ??????? ??? ?????????? ??????????? ????? ?? ??????. - 0 - - - - 1 - newssetup - ????????? ???????? ?????? - ????????? ??????? ????????? ?????? ??????, ?????? ????? ???????????????? ???????, ??? ????? ???????, ??? ? ssi.php. - 0 - - - - 1 - coppa - ????????? COPPA - COPPA. ? ?????? ?? ?????????!]]> - 1 - - - - 1 - searchsetup - ????????? ??????? ?????? - - 0 - - - - 1 - topicspostsandpolls - ????, ????????? ? ?????? - ?????? ????? ??? ????????? ?????????? ??????????? ???, ? ??? ?? ??????????? ??? ???????? ?????????, ???????. - 0 - - - - 1 - general - ?????????? ????????? ?????? - ??? ???????? ????????? ??????, ????? ??? ???????? ??????, ?????, ???? ?????? ? ?.?. - 0 - - - - 1 - boardguidelines - ??????? ?????? - ?????????, ??????????? ?????? ?????? ?????? ?????? ?????????? ??? ??????????? ? ?????????? ?????? ??????. - 0 - - - - 1 - cpusaving - - ????????? ???????????? ??? ????????? ????????? ???????????? ??????????? ?????? ??? ?????????? ???????? ?????? ?????? ??????, ? ??? ?? ?????????? ???????? ?? ??????. - 0 - - - - 1 - calendar - - ????????? ??????????? ????????? ? ????? ??????????? ??????.. - 0 - - - - 1 - subsmanager - ???????? ???????? (?? ??? ??????) - ?????????? ?????????? ????????. ? ?????? ?? ????????. - 1 - - - - 1 - personalmessagesetup - ?????? ????????? - ?????????? ????????? ??????? ?????? ????????? ??????. - 0 + 162 + Use trashcan for forum moderators? + + 14 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 1 userprofiles - ??????? ????????????? - + User Profiles + 0 + + 41 + Allow members to choose skins? + + 4 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 42 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 4 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 43 + Maximum length (in bytes) for the location field entry + + 4 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 44 + Maximum length (in bytes) for the interests field entry + + 4 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 45 + Maximum length (in bytes) for user signatures + + 4 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 46 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 4 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 47 + Allow BBCode in signatures? + + 4 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 48 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 49 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
      Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
      + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
      + + + 53 + Allow the use of avatars? + + 4 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 54 + Allowed avatar image extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 55 + Allow users to use remote URL avatars? + + 4 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 56 + Max. file size for avatar uploads? (K) + + 4 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 57 + Maximum avatar dimensions + xHEIGHT)]]> + 4 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 58 + Default sizes for gallery avatars? + xHEIGHT)]]> + 4 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 59 + Number of columns for the avatar gallery? + + 4 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 51 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 52 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 4 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 60 + Allow GUESTS to view signatures? + + 4 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 61 + Allow GUESTS to view posted images? + + 4 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 62 + Allow GUESTS to view user avatars? + + 4 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + 1 - date - - ????????? ??????? ??????????? ???? ? ??????? ?? ??????. + warnsetup + Warn Set-up + This section will allow you to set up the warning system. 0 + + 142 + Enable the warning system? + + 13 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 143 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 13 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 144 + Maximum Warn Level + + 13 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 145 + Protected Groups + You may choose more than one.]]> + 13 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 146 + Allow all other non-protected groups to see their own warn level and reasons? + + 13 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 147 + Allow warnings to continue once the minimum or maximum has been reached? + + 13 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 148 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 13 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day a moderator can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 153 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 154 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 155 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 156 + Number of times per day a global moderator can warn a single member + + 13 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 + \ No newline at end of file diff --git a/upload/upgrade/upg_21003/mysql_updates_4.php b/upload/upgrade/upg_21003/mysql_updates_4.php index 08a3f2c5..589d84e0 100644 --- a/upload/upgrade/upg_21003/mysql_updates_4.php +++ b/upload/upgrade/upg_21003/mysql_updates_4.php @@ -2,25 +2,25 @@ # Nothing of interest! -$SQL[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('portal', 'a:6:{s:5:\"blogs\";a:5:{s:8:\"pc_title\";s:30:\"Invision Community Blog\";s:7:\"pc_desc\";s:40:\"Показ информации от блога в портале\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:25:\"blogs_show_last_updated_x\";a:2:{i:0;s:25:\"blogs_show_last_updated_x\";i:1;s:30:\"Shows the last X updated blogs\";}}s:6:\"pc_key\";s:5:\"blogs\";}s:8:\"calendar\";a:5:{s:8:\"pc_title\";s:29:\"Invision Power Board Календарь\";s:7:\"pc_desc\";s:46:\"Отображает мини-календарь для текущего месяца\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:27:\"calendar_show_current_month\";a:2:{i:0;s:27:\"calendar_show_current_month\";i:1;s:38:\"Показывает календарь на текущий месяц\";}}s:6:\"pc_key\";s:8:\"calendar\";}s:7:\"gallery\";a:5:{s:8:\"pc_title\";s:22:\"Invision Power Gallery\";s:7:\"pc_desc\";s:54:\"Отображает на портале информацию с галереи\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:25:\"gallery_show_random_image\";a:2:{i:0;s:25:\"gallery_show_random_image\";i:1;s:44:\"Показывается случайное изображение из пользовательской галереи\";}}s:6:\"pc_key\";s:7:\"gallery\";}s:12:\"online_users\";a:5:{s:8:\"pc_title\";s:33:\"Invision Power Board Активные Пользователи\";s:7:\"pc_desc\";s:49:\"Показывае имена текущих пользователей в онлайне\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:17:\"online_users_show\";a:2:{i:0;s:17:\"online_users_show\";i:1;s:22:\"Показывает активных пользователей\";}}s:6:\"pc_key\";s:12:\"online_users\";}s:4:\"poll\";a:5:{s:8:\"pc_title\";s:25:\"Invision Power Board Опрос\";s:7:\"pc_desc\";s:23:\"Показывает выбранный опрос\";s:19:\"pc_settings_keyword\";s:11:\"portal_poll\";s:18:\"pc_exportable_tags\";a:1:{s:14:\"poll_show_poll\";a:2:{i:0;s:14:\"poll_show_poll\";i:1;s:22:\"Shows the request poll\";}}s:6:\"pc_key\";s:4:\"poll\";}s:13:\"recent_topics\";a:5:{s:8:\"pc_title\";s:34:\"Invision Power Board Последние Темы\";s:7:\"pc_desc\";s:47:\"Показывает последние темы с первым сообщением в них\";s:19:\"pc_settings_keyword\";s:20:\"portal_recent_topics\";s:18:\"pc_exportable_tags\";a:2:{s:20:\"recent_topics_last_x\";a:2:{i:0;s:20:\"recent_topics_last_x\";i:1;s:63:\"Показывает X последних тем с первым сообщением в них из выбранных форумов\";}s:32:\"recent_topics_discussions_last_x\";a:2:{i:0;s:32:\"recent_topics_discussions_last_x\";i:1;s:54:\"Показывает X заголовков тем из всех видимых форумов\";}}s:6:\"pc_key\";s:13:\"recent_topics\";}}', '', 1);"; +$SQL[] = "INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('portal', 'a:6:{s:5:\"blogs\";a:5:{s:8:\"pc_title\";s:30:\"Invision Power Community Blogs\";s:7:\"pc_desc\";s:40:\"Shows IPB Blog information on the portal\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:25:\"blogs_show_last_updated_x\";a:2:{i:0;s:25:\"blogs_show_last_updated_x\";i:1;s:30:\"Shows the last X updated blogs\";}}s:6:\"pc_key\";s:5:\"blogs\";}s:8:\"calendar\";a:5:{s:8:\"pc_title\";s:29:\"Invision Power Board Calendar\";s:7:\"pc_desc\";s:46:\"Displays a mini calendar for the current month\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:27:\"calendar_show_current_month\";a:2:{i:0;s:27:\"calendar_show_current_month\";i:1;s:38:\"Shows a calendar for the current month\";}}s:6:\"pc_key\";s:8:\"calendar\";}s:7:\"gallery\";a:5:{s:8:\"pc_title\";s:22:\"Invision Power Gallery\";s:7:\"pc_desc\";s:54:\"Shows Invision Power Gallery information on the portal\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:25:\"gallery_show_random_image\";a:2:{i:0;s:25:\"gallery_show_random_image\";i:1;s:44:\"Shows a random image from a member\'s gallery\";}}s:6:\"pc_key\";s:7:\"gallery\";}s:12:\"online_users\";a:5:{s:8:\"pc_title\";s:33:\"Invision Power Board Online Users\";s:7:\"pc_desc\";s:49:\"Shows the current name and number of online users\";s:19:\"pc_settings_keyword\";s:0:\"\";s:18:\"pc_exportable_tags\";a:1:{s:17:\"online_users_show\";a:2:{i:0;s:17:\"online_users_show\";i:1;s:22:\"Shows the online users\";}}s:6:\"pc_key\";s:12:\"online_users\";}s:4:\"poll\";a:5:{s:8:\"pc_title\";s:25:\"Invision Power Board Poll\";s:7:\"pc_desc\";s:23:\"Shows the selected poll\";s:19:\"pc_settings_keyword\";s:11:\"portal_poll\";s:18:\"pc_exportable_tags\";a:1:{s:14:\"poll_show_poll\";a:2:{i:0;s:14:\"poll_show_poll\";i:1;s:22:\"Shows the request poll\";}}s:6:\"pc_key\";s:4:\"poll\";}s:13:\"recent_topics\";a:5:{s:8:\"pc_title\";s:34:\"Invision Power Board Recent Topics\";s:7:\"pc_desc\";s:47:\"Shows IPB recent topics with topic\'s first post\";s:19:\"pc_settings_keyword\";s:20:\"portal_recent_topics\";s:18:\"pc_exportable_tags\";a:2:{s:20:\"recent_topics_last_x\";a:2:{i:0;s:20:\"recent_topics_last_x\";i:1;s:63:\"Shows the last X topics with full post from the selected forums\";}s:32:\"recent_topics_discussions_last_x\";a:2:{i:0;s:32:\"recent_topics_discussions_last_x\";i:1;s:54:\"Shows the last X topic titles from ALL viewable forums\";}}s:6:\"pc_key\";s:13:\"recent_topics\";}}', '', 1);"; -$SQL[] ="INSERT INTO ibf_cal_calendars (cal_id, cal_title, cal_moderate, cal_position, cal_event_limit, cal_bday_limit, cal_rss_export, cal_rss_export_days, cal_rss_export_max, cal_rss_update, cal_rss_update_last, cal_rss_cache, cal_permissions) VALUES (1, 'Основной календарь', 1, 0, 2, 1, 1, 14, 20, 1440, <%time%>, '', 'a:3:{s:9:\"perm_read\";s:1:\"*\";s:9:\"perm_post\";s:3:\"4,3\";s:10:\"perm_nomod\";s:0:\"\";}');"; +$SQL[] ="INSERT INTO ibf_cal_calendars (cal_id, cal_title, cal_moderate, cal_position, cal_event_limit, cal_bday_limit, cal_rss_export, cal_rss_export_days, cal_rss_export_max, cal_rss_update, cal_rss_update_last, cal_rss_cache, cal_permissions) VALUES (1, 'Community Calendar', 1, 0, 2, 1, 1, 14, 20, 1440, <%time%>, '', 'a:3:{s:9:\"perm_read\";s:1:\"*\";s:9:\"perm_post\";s:3:\"4,3\";s:10:\"perm_nomod\";s:0:\"\";}');"; -$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (1, 'Внутренняя авторизация IPB', 'Стандартный метод авторизации', 'internal', '', '', 'passthrough', '', <%time%>, 0, 1, 1, 1, 0, 1);"; -$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (2, 'LDAP Авторизация', 'LDAP / Авторизация Active Directory', 'ldap', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; -$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (3, 'Внешняя база данных', 'Авторизация через внешнюю базу данных', 'external', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; +$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (1, 'IPB Internal', 'The standard method of authentication', 'internal', '', '', 'passthrough', '', <%time%>, 0, 1, 1, 1, 0, 1);"; +$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (2, 'LDAP Authentication', 'LDAP / Active Directory Authentication', 'ldap', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; +$SQL[] ="INSERT INTO ibf_login_methods (login_id, login_title, login_description, login_folder_name, login_maintain_url, login_register_url, login_type, login_alt_login_html, login_date, login_settings, login_enabled, login_safemode, login_installed, login_replace_form, login_allow_create) VALUES (3, 'External Database', 'Authentication via an external database', 'external', '', '', 'passthrough', '', <%time%>, 0, 0, 1, 0, 0, 1);"; -$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Обновление счетчика просмотров тем', 'updateviews.php', <%time%>, -1, -1, 3, -1, 'ddce954b5ba1c163bc627ca20725b595', 0, 'Используется, когда просмотры тем не обновляются в реальном времени', 1, 'updateviews', 0, 0);"; -$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Уведомление об истечении подписок', 'expiresubs.php', <%time%>, -1, -1, 1, 0, '21fa5f52cf9122c6fe940e1c6dac0b5a', 1, 'Отправляет письмо пользователям, у которых закончилась подписка', 1, 'expiresubs', 0, 0);"; -$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Обновление RSS Импорта', 'rssimport.php', <%time%>, -1, -1, -1, 30, '8f17dc0ba334e5f18e762f154365a578', 0, 'Импорт новых RSS записей', 1, 'rssimport', 1, 0);"; +$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Update Topic Views Counter', 'updateviews.php', <%time%>, -1, -1, 3, -1, 'ddce954b5ba1c163bc627ca20725b595', 0, 'Used when topic views are not incremented immediately', 1, 'updateviews', 0, 0);"; +$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'Subscription Expiration Notification', 'expiresubs.php', <%time%>, -1, -1, 1, 0, '21fa5f52cf9122c6fe940e1c6dac0b5a', 1, 'Sends out an email to all members who have a subscription due to expire', 1, 'expiresubs', 0, 0);"; +$SQL[] ="INSERT INTO ibf_task_manager VALUES ('', 'RSS Import Update', 'rssimport.php', <%time%>, -1, -1, -1, 30, '8f17dc0ba334e5f18e762f154365a578', 0, 'Imports any new RSS articles', 1, 'rssimport', 1, 0);"; -$SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Отписка от заказов (не для России)', 'doexpiresubs.php', 1121212800, -1, -1, 0, 0, 'bb57399ea05eb9240b42d5d5f53575fb', 1, 'Отписать пользователей от заказанных пакетов', 1, 'doexpiresubs', 1)"; +$SQL[] = "INSERT INTO ibf_task_manager (task_title, task_file, task_next_run, task_week_day, task_month_day, task_hour, task_minute, task_cronkey, task_log, task_description, task_enabled, task_key, task_safemode) VALUES ('Expire Paid Subscriptions', 'doexpiresubs.php', 1121212800, -1, -1, 0, 0, 'bb57399ea05eb9240b42d5d5f53575fb', 1, 'Unsubscribes members from their subscribed packages', 1, 'doexpiresubs', 1)"; -$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (1, 'Invision Gallery', 'Invision Power Services', 'http://www.invisiongallery.com', '1.3.0', 1113309894, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'gallery', 'gallery', 'Галерея для форума', '{ipb.lang[\'gallery\']}', '{ipb.base_url}act=module&module=gallery', 1);"; -$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (2, 'Invision Community Blog', 'Invision Power Services', 'http://www.invisionblog.com', '1.1.2', 1113310263, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'blog', 'blog', 'Система блогов для форума', '{ipb.lang[\'blog\']}', '{ipb.base_url}automodule=blog', -1);"; -$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (3, 'Invision Chat (ParaChat)', 'Invision Power Services', 'http://chat.invisionsitetools.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatpara', 'chatpara', 'Модуль чата для форума', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatpara', 2);"; -$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (4, 'Invision Copyright Removal', 'Invision Power Services', 'http://www.invisionboard.com', '2.1', 1113314009, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 1, 1, 'copyright', 'copyright', 'Разрешение на удаление копирайта', '', '', 3);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (1, 'Invision Gallery', 'Invision Power Services', 'http://www.invisiongallery.com', '1.3.0', 1113309894, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'gallery', 'gallery', 'Complete gallery system for your members', '{ipb.lang[\'gallery\']}', '{ipb.base_url}act=module&module=gallery', 1);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (2, 'Invision Community Blog', 'Invision Power Services', 'http://www.invisionblog.com', '1.1.2', 1113310263, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'blog', 'blog', 'Blogging addition for your members', '{ipb.lang[\'blog\']}', '{ipb.base_url}automodule=blog', -1);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (3, 'Invision Chat (ParaChat)', 'Invision Power Services', 'http://chat.invisionsitetools.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatpara', 'chatpara', 'Full real-time chat system for your members', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatpara', 2);"; +$SQL[] ="INSERT INTO ibf_components (com_id, com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES (4, 'Invision Copyright Removal', 'Invision Power Services', 'http://www.invisionboard.com', '2.1', 1113314009, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 1, 1, 'copyright', 'copyright', 'Allows the copyright notices to be removed from the board\'s output', '', '', 3);"; $SQL[] ="DELETE FROM ibf_conf_settings WHERE conf_key IN ( 'csite_article_forum' , 'csite_article_max', 'csite_article_recent_on', 'csite_article_recent_max', 'csite_article_len', 'csite_discuss_on', @@ -38,25 +38,4 @@ $SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='date' WHERE co $SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='email' WHERE conf_title_id=12"; $SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='searchsetup' WHERE conf_title_id=19"; -// IBResource added -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='userprofiles' WHERE conf_title_id=4"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='topicspostsandpolls' WHERE conf_title_id=5"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='securityandprivacy' WHERE conf_title_id=6"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='cookies' WHERE conf_title_id=7"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='newssetup' WHERE conf_title_id=10"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='personalmessagesetup' WHERE conf_title_id=11"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='warnsetup' WHERE conf_title_id=13"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='trashcansetup' WHERE conf_title_id=14"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='searchenginespiders' WHERE conf_title_id=16"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_keyword='boardguidelines' WHERE conf_title_id=17"; - -//IBResource added -$SQL[] = "UPDATE ibf_conf_settings SET conf_group='19' WHERE conf_key='min_search_word'"; -$SQL[] = "UPDATE ibf_conf_settings SET conf_type='dropdown', conf_extra='0=Нет\n1=Да ( Сегодня и Вчера )\n2=Да ( Последние X минут, Сегодня и Вчера)\n3=Да ( Полностью — минуты, часы и дни )' WHERE conf_key='time_use_relative'"; -// already fixed in upg/21005 -//$SQL[] = "UPDATE ibf_conf_settings SET conf_position='15' WHERE conf_key='max_h_flash'"; -$SQL[] = "UPDATE ibf_conf_settings SET conf_end_group='1' WHERE conf_key='startpoll_cutoff'"; -$SQL[] = "UPDATE ibf_conf_settings SET conf_evalphp='if ( \$show )\n{\n \$d_date = \$this->ipsclass->get_date(time(), \'LONG\',1);\n\$r[\'conf_description\'] = str_replace( \'<-T->\', \$d_date, \$r[\'conf_description\'] );\n}' WHERE conf_key='time_adjust'"; - - ?> \ No newline at end of file diff --git a/upload/upgrade/upg_21003/version_upgrade.php b/upload/upgrade/upg_21003/version_upgrade.php index 29607f2c..4d417dc3 100644 --- a/upload/upgrade/upg_21003/version_upgrade.php +++ b/upload/upgrade/upg_21003/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '21003'; var $upgrade_from = '20014'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц, а также сконвертирует опросы и календарные события.'; + var $first_step = 'update your database to include the new schematic modifications and convert polls and calendar events.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -141,7 +136,7 @@ class version_upgrade //----------------------------------------- $this->ipsclass->DB->do_insert( 'skin_sets', array( - 'set_name' => 'IPB 2.1 Стандартный стиль', + 'set_name' => 'IPB 2.1 Default', 'set_image_dir' => 1, 'set_hidden' => 0, 'set_default' => 1, @@ -170,7 +165,7 @@ class version_upgrade //----------------------------------------- $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "Стиль добавлен, переход к следующему этапу..." ); + "Skin added, proceeding to the next step..." ); } /*-------------------------------------------------------------------------*/ @@ -260,14 +255,14 @@ class version_upgrade $this->ipsclass->DB->do_insert( 'cal_events', $new_event ); } - $msg = "Календарные события: от $start до $end завершено...."; + $msg = "Calendar events: $start to $end completed...."; $this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}&workact=calevents&st={$end}", $msg ); } else { - $msg = "Календарные события сконвертированы. Создание нового IPB 2.1 стиля..."; + $msg = "Calendar events converted. Creating new IPB 2.1 skin..."; $this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}&workact=skin", $msg ); @@ -399,14 +394,14 @@ class version_upgrade if ( ! $done ) { - $msg = "Опросы: от $start до $end завершено...."; + $msg = "Polls: $start to $end completed...."; $this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}&workact=polls&st={$end}&max={$max}".'&conv='.$converted, $msg ); } else { - $msg = "Опросы сконвертированы, переходим к следующему этапу..."; + $msg = "Polls converted, proceeding to the next step..."; $this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}&workact=calevents&st=0", $msg ); @@ -429,6 +424,8 @@ class version_upgrade { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); @@ -444,6 +441,11 @@ class version_upgrade else { $this->ipsclass->DB->query( $q ); + + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } } $cnt++; @@ -467,14 +469,14 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      SQL запрос: Шаг $nextid
      +
      SQL Queries: Step $nextid
      - ПОЖАЛУЙСТА ЗАПУСТИТЕ ЭТИ ЗАПРОСЫ, ПРЕЖДЕ ЧЕМ ПРОДОЛЖИТЬ + PLEASE RUN THESE QUERIES BEFORE CONTINUING



      - +
      "; @@ -483,13 +485,27 @@ class version_upgrade } else { - $this->ipsclass->core->redirect( $url, "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "work&man={$man}&workact=sql".$nextid ); + } + else + { + $this->ipsclass->core->redirect( $url, "$cnt queries run...." ); + } } } else { - $this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}&workact=polls&st=0", - "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "work&workact=polls&st=0" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}&workact=polls&st=0", + "$cnt queries run...." ); + } } } @@ -501,26 +517,26 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}

      - Если вы имеете большую базу данных, желательно запутить SQL запросы вручную (для предотвращения ошибок в PHP), - пожалуйста нажмите сюда для подробностей. + If you have a large database and would prefer to run the SQL queries manually (to overcome PHP timeouts), + please click here to proceed.

      - +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_21004/ipb_acpperms.xml b/upload/upgrade/upg_21004/ipb_acpperms.xml index d8dc45b6..abb54960 100644 --- a/upload/upgrade/upg_21004/ipb_acpperms.xml +++ b/upload/upgrade/upg_21004/ipb_acpperms.xml @@ -1,4 +1,4 @@ - + diff --git a/upload/upgrade/upg_21004/ipb_settings_partial.xml b/upload/upgrade/upg_21004/ipb_settings_partial.xml index 1398154e..3e418647 100644 --- a/upload/upgrade/upg_21004/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21004/ipb_settings_partial.xml @@ -1,379 +1,19 @@ - - + + - 16 - - ????????????, ??????????? ?? ?? ????? ???????????? ??? ??????????? ?? ??????. ??? ?????????, ????? ???????????? ?? ?????????? ?????? ???????????.]]> - 4 - yes_no - auth_allow_dnames - - 1 - - - 1 - 1 - ????????? ????????????? ????? - 0 - - 1 - converge + 1 + boardguidelines + Board Guidelines + This section allows you to maintain your board guidelines. If enabled, a link will be added to the board header linking to the board guidelines. + 0 - 19 - Cookie ????? - .your-domain.ru ??? ?????????? cookies.]]> - 5 - input - cookie_domain - - - - - 1 - 1 - - 0 - - 1 - cookies - - - - 48 - E-mail ????? ??? ???? ???????? ????? - ???? E-mail ????? ????? ?????????????? ??? ?????? ????? ? ????????????? ??????. - 9 - input - email_in - - - - - 1 - 1 - E-mail ?????? - 0 - - 1 - email - - - - 112 - ???????? IPB ??????? - - 16 - yes_no - csite_on - - 1 - - - 1 - 1 - - 0 - - 1 - ipbportal - - - - 142 - ???????? ?????? ?? ????? (???????? ??????????? ? ?.?.)? - ??? ????? ??????? ?? ????????????? ??????? ????????? ???????? ??? ??? ???????????, ????? e-mail ?????? ? ?.?, ?? ????????, ????????, ???????? ??????????? ??????. - 23 - dropdown - bot_antispam - - gif - 0=??? -gif=??????????? ????? (?? ??????? ??????????? ???????) -gd=??????????? (????????? GD ??????????) - - 1 - 1 - - 1 - s_reg_antispam - 1 - securityandprivacy - - - - 208 - ???????? ???????? - - 26 - yes_no - forum_trash_can_enable - - 1 - - - 1 - 1 - - 0 - - 1 - trashcansetup - - - - 237 - ???????? ??????? ??????????????? - - 28 - yes_no - warn_on - - 1 - - - 1 - 1 - - 0 - - 1 - warnsetup - - - - 131 - ???????? ???????? ?? ?????????? ?????? ?? ??????? - - 21 - yes_no - spider_sense - - 1 - - - 1 - 1 - - 0 - - 1 - searchenginespiders - - - - 6 - ????????? ?????? - - 2 - yes_no - board_offline - - 0 - - - 1 - 1 - - 0 - - 1 - boardoffline - - - - 122 - ?? ?????? ?????? ?????????????? ???????? + 174 + Show link in header to guidelines? 17 - dropdown - news_forum_id - - - #show_forums# - - 1 - 1 - - 0 - - 1 - newssetup - - - - 22 - ???????????? ??????????????? ??????? COPPA? - COPPA ?? ????? ??????, ??? ??????????? ????? ?? 13 ??? ????? ??????????? ?????????? ?????????? ?????????. ?? ????????? ??? ??????.]]> - 6 - yes_no - use_coppa - - 0 - - - 1 - 1 - - 0 - - 1 - coppa - - - - 138 - ????? ??? ?????? ????????????? -

      ]]>
      - 22 - dropdown - search_sql_method - - man - ftext=?????????????? -man=??????? - ipsclass->admin->get_mysql_version(); - if ( $this->ipsclass->mysql_version < 32323 ) - { - $full_text = "?????????????? ????? ?????????? ?? ????? ???????."; - } - else - { - $full_text = "?????????????? ????? ????????"; - } - - if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) - { - $index = "??????? ??????????????? ?????? ?? ???????: Build indexes now!"; - } - else - { - $index = "??????? ??????????????? ?????? ???????"; - } - - $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); - $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); -}]]> - 1 - 1 - - 0 - - 1 - searchsetup -
      - - - 107 - ???? ???????? ????????? IPB - ??? ???? ??? ???????? ????????? IPB, ?????????? ?? IPS. - 13 - input - ipb_copy_number - - - - - 1 - 1 - - 0 - - 1 - - - - - 167 - ?????????? ???, ???????????? ? ?????? ??? ?????? - - 25 - input - display_max_topics - - 30 - - - 1 - 1 - ???????? ??? - 0 - 0 - 1 - topicspostsandpolls - - - - 57 - ???????? ?????? ?????? - - 10 - input - board_name - - Invision Power Board - - - 1 - 1 - ???????? ? ?????? - 0 - 0 - 1 - general - - - - 75 - ????? ??????? ?????? ??????? ???? (???????? ??????)? - ???????? ????? ?????? ?????? ??? ?????? / ??? ????????????? ??? IPB. - - 11 - input - chat04_account_no - - - - - 1 - 1 - ????????? ??????? ?????? - 0 - - 1 - - - - - 93 - ????? ??????? ?????? ??????? ????? - ???????? ????? ?????? ?????? ??? ?????? / ??? ????????????? ??? IPB. - - 12 - input - chat_account_no - - - - - 1 - 1 - ??????? ?????? - 0 - - 1 - - - - - 1 - ???????? ?????? ?? ??????? ?????? ? ??????? ????? ??????? ??????? - - 1 yes_no gl_show @@ -387,225 +27,14 @@ man=??????? 1 boardguidelines + 0 - 25 - ?????????? ?????????????? ???? ??????? ??? ????????? ???? - - 7 - yes_no - custom_profile_topic - - 1 - - - 1 - 1 - ???????? ???????? ?? SQL-???? - 0 - 0 - 1 - cpusaving - - - - 8 - ?????????? ??????????? ?? ??????? ???????? ?????????? - ????? ? ????????? ?????????? ??????????? ??? ??????? ???. - 3 - yes_no - show_bday_calendar - - 1 - - - 1 - 1 - - 0 - - 1 - calendar - - - - 164 - ?????????? ?????? ???????? ??? ??????????? ????????????? - ???? ???? ????? ???????, ?????? ???????? ????? ???????????? ?? ???????? ???????????, ? ???????????? ?????? ??????? ?????? ?????... - 24 - yes_no - subsm_show_reg - - 0 - - - 1 - 1 - ??????????? ?? ????? ??????????? - 1 - - 1 - subsmanager - - - - 124 - ????????? BB ???? ? ?????? ??????????? - - 18 - yes_no - msg_allow_code - - 1 - - - 1 - 1 - - 0 - - 1 - personalmessagesetup - - - - 214 - ????????? ????????????? ???????? ????? ??????? - - 27 - yes_no - allow_skins - - 1 - - - 1 - 1 - ?????????? ????????? ??????? ????????????? - 0 - 0 - 1 - userprofiles - - - - 40 - ??????? ???? ???????: - ???? ?? ??????? ?????????? ??????? ????, ? ????? ???????? ?? 1 ???, ?? ??? ??-?? ???????? ?? ??????/?????? ?????, ? ???? ???????????? ????? ????????? ??? ? ????? ?????????? ?????? ? ???????.]]> - 8 - dropdown - time_offset - - 0 - - $words ) - { - if (preg_match("/^time_(\\S+)$/", $off, $match)) - { - $dropdown[] = array( $match[1], $words ); - } - } -}]]> - 1 - 1 - ????????????? ??????? ?? ?????? - 0 - 0 - 1 - date - - - - 20 - Cookie ??????? - ????????? ????????? ??????? ????????? ??????? ?? ????? ?????. - 5 - input - cookie_id - - - - - 1 - 2 - - 0 - - 1 - cookies - - - - 49 - E-mail ????? ??? ???? ????????? ????? - ???? E-mail ????? ????? ?????????????? ? ???? «???????? ?????» ??? ?????, ???????????? ? ??????. - 9 - input - email_out - - - - - 1 - 2 - - 1 - - 1 - email - - - - 132 - ????? ?????? ????????? ????????? ?????? - ???? ?? ????????????? ??????? ?????? ????? ??????? ???????? ?? ?????????? ??????, ????????? ??? ?????, ??? ????????? ???????? ???????? ???????. - 21 - yes_no - spider_visit - - 1 - - - 1 - 2 - - 0 - - 1 - searchenginespiders - - - - 139 - ??? ????? ?????? ?? ?????????? - ??? ????????? ????? ???????? ?????? ???? ?? ??????????? ?????????????? ?????. - 22 - dropdown - search_default_method - - simple - simple=??????? -adv=??????????? - - 1 - 2 - - 0 - - 1 - searchsetup - - - - 2 - ??????? http:// ?????? ?? ???????? ? ????????? ??????? - ??????? ??????? ????? (URL) ?????? ??????! - 1 + 175 + External http:// link to guidlines page? + Enter the URL to a set of external guidelines or if you wish to add your guidelines below simply leave this box clear. + 17 input gl_link @@ -619,17 +48,122 @@ adv=??????????? 1 boardguidelines + 0 - 113 - ????????? ???????? ??????? - - 16 + 176 + Title to use in header? + + 17 input - csite_title + gl_title - ?????? IPB + + + + 1 + 3 + + 0 + + 1 + boardguidelines + 0 + + + + 177 + If not using external link; guidelines/rules text + HTML Enabled + 17 + textarea + gl_guidelines + + + + + 1 + 4 + + 0 + + 0 + boardguidelines + 0 + + + + 238 + + HTML ENABLED]]> + 17 + textarea + reg_rules + + Forum Terms & Rules + +Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser. + +Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message. + +The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary. + +You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law. + +You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board. +]]> + + + 1 + 5 + + 1 + + 0 + boardguidelines + 0 + + + + 1 + boardoffline + Board Offline / Online + Use this setting to turn switch your board online or offline and leave a message for your visitors. + 0 + + + + 163 + Turn the board offline? + + 15 + yes_no + board_offline + + 0 + + + 1 + 1 + + 0 + + 1 + boardoffline + 0 + + + + 164 + The offline message to display + + 15 + textarea + offline_msg + + 1 @@ -638,19 +172,297 @@ adv=??????????? 0 0 - ipbportal + boardoffline + 0 - 209 - ????? ????? ????? ????????? - ?????, ?????????? ??? ???????, ?????? ????? ??????????? ????? ??????? ?? ??????/??????/?????. ? ?????? ?? ?????? ?? ?????? ???? ?????? ?????? ????????????????? ??????? ? ???????? ?? ?????? ? ????? ??? ???? ?????. - 26 + 1 + calendar + + This section will allow you to set up the board calendar and its related options. + 0 + + + + 122 + Show birthdays on the main calendar view? + + 9 + yes_no + show_bday_calendar + + 1 + + + 1 + 1 + + 0 + + 1 + calendar + 0 + + + + 123 + + + 9 + yes_no + show_birthdays + + 1 + + + 1 + 2 + + 0 + + 1 + calendar + 0 + + + + 124 + Auto hide when no birthdays to show? + + 9 + yes_no + autohide_bday + + 0 + + + 1 + 3 + + 1 + + 1 + calendar + 0 + + + + 125 + Show forthcoming calendar events? + + 9 + yes_no + show_calendar + + 1 + + + 1 + 4 + Forcoming Calendar Events + 0 + + 1 + calendar + 0 + + + + 126 + Auto hide when no events to show? + + 9 + yes_no + autohide_calendar + + 0 + + + 1 + 5 + + 0 + + 1 + calendar + 0 + + + + 127 + + Controls how far into the future events are shown on the forcoming events block on board index view. + 9 + input + calendar_limit + + 5 + + + 1 + 6 + + 1 + + 1 + calendar + 0 + + + + 128 + + This applies to view calendar / post event. + 9 + input + start_year + + 2001 + + + 1 + 7 + + 0 + + 1 + calendar + 0 + + + + 129 + + Example: current year is 2002, you enter 5 - last choosable year = 2007]]> + 9 + input + year_limit + + 5 + + + 1 + 8 + + 0 + + 1 + calendar + 0 + + + + 1 + converge + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. + 0 + + + + 340 + + + 18 + yes_no + auth_allow_dnames + + 1 + + + 1 + 1 + Display Name Set-Up + 0 + + 1 + converge + 0 + + + + 343 + Prohibit Display Names from selecting Log In names + + 18 + yes_no + auth_dnames_nologinname + + 1 + + + 1 + 3 + + 1 + + 1 + converge + 0 + + + + 184 + Log in with user name or email address? + Which identifiable piece of information do you wish to require your members to use when logging in? + 18 dropdown - forum_trash_can_id + converge_login_method + + username + username=User Name +email=Email Address + + 1 + 5 + + 0 + + 1 + converge + 0 + + + + 1 + cookies + Cookies + This section allows you to set the default cookie options. + 0 + + + + 116 + Cookie Domain + .your-domain.com for global cookie]]> + 7 + input + cookie_domain - #show_forums# + + + 1 + 1 + + 0 + + 1 + cookies + 0 + + + + 117 + Cookie Name Prefix + Allows multiple boards on one host. + 7 + input + cookie_id + + + 1 2 @@ -658,18 +470,140 @@ adv=??????????? 0 1 - trashcansetup + cookies + 0 - 215 - ?????????? ?????????, ??????????? ??????? ????????????, ????? ???????? ??????????? ???????? ???? ?????? - ??????? 0, ????? ????????? ????????? ??? ??????????? - 27 + 118 + Cookie Path + Relative path from domain to root IBF dir + 7 input - post_titlechange + cookie_path - 500 + + + + 1 + 3 + + 0 + + 1 + cookies + 0 + + + + 1 + coppa + COPPA Set-up + COPPA.]]> + 0 + + + + 119 + Use COPPA registration system? + COPPA on your board will require children under the age of 13 to get parental consent via a faxed or mailed form.]]> + 8 + yes_no + use_coppa + + 0 + + + 1 + 1 + + 0 + + 1 + coppa + 0 + + + + 120 + Fax number to receive COPPA forms + + 8 + input + coppa_fax + + + + + 1 + 2 + + 0 + + 1 + coppa + 0 + + + + 121 + Mail address to receive COPPA forms + + 8 + textarea + coppa_address + + + + + 1 + 3 + + 0 + + 1 + coppa + 0 + + + + 1 + cpusaving + + This section allows certain features to be limited or removed to get more performance out of your board. + 0 + + + + 24 + Allow custom profile field info be used in TopicView? + + 2 + yes_no + custom_profile_topic + + 1 + + + 1 + 1 + Saving SQL Resources + 0 + 0 + 1 + cpusaving + 0 + + + + 22 + Cache calendar and birthdays? + + 2 + yes_no + cache_calendar + + 1 1 @@ -678,35 +612,329 @@ adv=??????????? 0 0 1 - userprofiles + cpusaving + 0 - 77 - ??????? ???? ?? ????????? - ??? ??????? ????, ? ??????? ??????? ????????????, ????? ? ???. - 11 + 20 + + + 2 input - chat04_default_room + au_cutoff + + 15 + + + 1 + 3 + + 0 + 0 + 1 + cpusaving + 0 + + + + 181 + Storing Read Topics in the Database + 0 (zero) to NOT store read topic info in the database.]]> + 2 + input + db_topic_read_cutoff + + 7 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 316 + Update Topic Views Immediately + If enabled, the topic views counter will be updated as one loads a topic. If not enabled, the topic views will be written to another table and the topic views updated every 6 hours. This will significantly reduce overhead on the topics table if you have a very busy board as it overcomes the write lock initiated when the topic counter is updated. + 2 + yes_no + update_topic_views_immediately + + 1 + + + 1 + 3 + + 0 + + 1 + cpusaving + 0 + + + + 25 + Mark topics a user has posted when displaying a forum? + + 2 + yes_no + show_user_posted + + 1 + + + 1 + 4 + + 1 + 0 + 1 + cpusaving + 0 + + + + 26 + + This save 1 query per forum view + 2 + yes_no + no_au_forum + + 0 + no_au_forum + + 1 + 5 + Turning Features Off + 0 + 0 + 1 + cpusaving + 0 + + + + 27 + + (This save 1 query per topic view) + 2 + yes_no + no_au_topic + + 0 + + + 1 + 6 + + 0 + 0 + 1 + cpusaving + 0 + + + + 19 + Show Active Users + + 2 + yes_no + show_active + + 1 + + + 1 + 7 + + 0 + 0 + 1 + cpusaving + 0 + + + + 29 + Allow users (where allowed) to use search? + + 2 + yes_no + allow_search + + 1 + + + 1 + 8 + + 0 + 0 + 1 + cpusaving + 0 + + + + 23 + Show Board Totals? + Show the board totals at the footer of the board index page. + 2 + yes_no + show_totals + + 1 + + + 1 + 9 + + 1 + 0 + 1 + cpusaving + 0 + + + + 28 + Server Load Limit + Can be left blank for no limit]]> + 2 + input + load_limit 1 - 2 + 10 0 - + 0 1 - chat04 + cpusaving 0 - 41 - ????????????? ??????? ??????? (? ???????) - ????? ?????? (? ?????? ???? ????????) ??????: <-T->]]> - 8 + 32 + Print HTTP no-cache headers? + (This will stop browsers caching pages) + 2 + yes_no + nocache + + 1 + + + 1 + 14 + Reducing HTML output + 0 + 0 + 1 + cpusaving + 0 + + + + 30 + + Leave blank to return full post with proper formatting]]> + 2 + input + search_post_cut + + + + + 1 + 15 + + 0 + 0 + 1 + cpusaving + 0 + + + + 33 + Show short forum jump list? + This will remove sub-forums from the drop down list - useful if you have many + 2 + yes_no + short_forum_jump + + 0 + short_forum_jump + + 1 + 16 + + 1 + 0 + 1 + cpusaving + 0 + + + + 1 + date + + This section contains the date and time formats used throughout the board. + 0 + + + + 34 + Native Server Time Zone + If you have chosen the correct timezone and the clock is an hour out, this is because of daylight savings time and your members can correct this by editing their 'Board settings' via their User Control Panel.]]> + 3 + dropdown + time_offset + + 0 + + $words ) + { + if (preg_match("/^time_(\\S+)$/", $off, $match)) + { + $dropdown[] = array( $match[1], $words ); + } + } +}]]> + 1 + 1 + Time Adjustments + 0 + 0 + 1 + date + 0 + + + + 35 + Server Time Adjustment (in minutes) + Board time (inc. above time zone and current adj.) is now: <-T->]]> + 3 input time_adjust @@ -724,535 +952,18 @@ $r['conf_description'] = str_replace( '<-T->', $d_date, $r['conf_description'] ) 0 1 date - - - - 26 - ??????????? ?????????? - ?? ????????????? ???????? ???? ?????, ???? ????? ????????? ?? ??????????. - 7 - yes_no - cache_calendar - - 1 - - - 1 - 2 - - 0 - 0 - 1 - cpusaving - - - - 238 - ??????????? ??????? ?????????????? - ????????????? ????? ?????????. ???? ?? ??????????? ????????????? ?????, ?? ??????????? ?? ???????????? ??????????? ????? ? ????????, ? ???????????? ????? ????????. - 28 - input - warn_min - - 0 - - - 1 - 2 - ?????? ?????????????? - 0 - - 1 - warnsetup - - - - 23 - ????? ????? COPPA, ?? ??????? ????? ????????? ??? ?????????? ?? ????????? - - 6 - input - coppa_fax - - - - - 1 - 2 - - 0 - - 1 - coppa - - - - 108 - ????????? ????????? - - 13 - yes_no - ips_cp_purchase - - 0 - - - 1 - 2 - - 0 - - 1 - - - - - 9 - ?????????? ??????????? ??????????? ?? ??????? ???????? ??????? - - 3 - yes_no - show_birthdays - - 1 - - - 1 - 2 - ??????????? ?????????? - 0 - - 1 - calendar - - - - 123 - ?????????? ?????? ?? ????????? ??????? ?? ??????? ???????? ??????? - - 17 - yes_no - index_news_link - - 0 - - - 1 - 2 - - 0 - - 1 - newssetup - - - - 125 - ????????? HTML ???? ? ?????? ??????????? - ???????????? ?????? ???????????? HTML ? ?????? ??????????. ?? ??????????? ????????? ???? ????? ? ????? ????????????. - 18 - yes_no - msg_allow_html - - 0 - - - 1 - 2 - - 0 - - 1 - personalmessagesetup - - - - 94 - ?????? ??????? ????? - ]]> - 12 - input - chat_server_addr - - - - - 1 - 2 - - 1 - - 1 - chat04 0 - 7 - ?????????, ??????? ??????????? ????? ?????????? ???? ????????????? - - 2 - textarea - offline_msg - - - - - 1 - 2 - - 0 - - 0 - boardoffline - - - - 76 - ??? ??????? ???? - ??? ??? ?????????? ???? ???? - 11 - dropdown - chat04_servicetype - - - advanced=Advanced -premium=Premium - - 1 - 2 - - 0 - - 1 - - - - - 165 - ????????? ?? ??????? ???????????? ?????? ?????? ???????? - ???? ????? ???????, ???????????? ?????? ????? ??????????? ??????? ?????-?? ????? ???????? ??? ???????????. - 24 - yes_no - subsm_enforce - - 0 - - - 1 - 2 - Force Package Purchase - 0 - - 1 - subsmanager - - - - 168 - ??????? ????????? ???????????????/?????????????? ?????? ? ????????? ???? - ??????????!!!!! ????? ???????? ?? ??????????!.]]> - 25 - yes_no - etfilter_punct - - 0 - - - 1 - 2 - - 0 - 0 - 1 - topicspostsandpolls - - - - 21 - Cookie ???? - ????c???????? ???? ?? ????? ?????? ?? ??????? ????? ?????? IPB (??? ????? ???? index.php). - 5 - input - cookie_path - - - - - 1 - 3 - - 0 - - 1 - cookies - - - - 128 - ?? ????? ??????? ?????????????? ???????? - ?? ?????? ???????? ????????? ???????. - 20 - multi - recent_topics_article_forum - - - #show_forums# - - 1 - 3 - - 0 - - 0 - - - - - 169 - ??????? ?????? ????????? ??? ??????????? ???????? ???? - - 25 - input - topic_rating_needed - - 1 - - - 1 - 3 - - 0 - - 1 - topicspostsandpolls - - - - 17 - ????????? ???????????? ????? ?? ????????? ???? ???????????? - - 4 - yes_no - auth_dnames_nologinname - - 1 - - - 1 - 3 - - 1 - - 1 - converge - - - - 29 - ????????? ?????????? ?????????? ??? ?????????? - ???? "??", ?? ??????? ?????????? ??? ????? ??????????? ? ?????? ?????????? ????. ???? "???", ?????????? ?????????? ????? ???????????? ? ?????? ??????? ? ??????????? ?????? 6 ?????. ??????????? ?????? ????? ????????? ?????????? ???????????? ????? ??? ??????? ???????. - 7 - yes_no - update_topic_views_immediately - - 1 - - - 1 - 3 - - 0 - - 1 - cpusaving - - - - 10 - ????????????? ????????, ????? ? ??????? ???? ??? ???????????? - + 36 + Short time format + PHP Date]]> 3 - yes_no - autohide_bday - - 0 - - - 1 - 3 - - 1 - - 1 - calendar - - - - 24 - ????? ????????? ????? COPPA, ?? ??????? ????? ????????? ??? ?????????? ?? ????????? - - 6 - textarea - coppa_address - - - - - 1 - 3 - - 0 - - 1 - coppa - - - - 95 - - ???? ??? ????? ????????, ?? ?? ??????? ???????? ?????? ? ????? ?????????? ????? ???????????? ???? ? ?????????????, ??? ?????? ????????? ? ????. - 12 - yes_no - chat_who_on - - 1 - - - 1 - 3 - ??? ? ???? - 0 - - 1 - - - - - 166 - ?????? ?????????????, ? ??????? ??????? ???????????? ????? ??????????? ? ?? ?????? ??????? - ???? ???? ????? ????????, ?? ?????? ???????????????? ???????????? ????? ???????? ? ????????? ?????? ?????????????, ???? ?? ??????? ????????? ?????... - 24 - dropdown - subsm_nopkg_group - - 1 - #show_groups# - - 1 - 3 - - 1 - - 1 - subsmanager - - - - 3 - ?????????, ???????????? ? ??????? ?????? - - 1 - input - gl_title - - - - - 1 - 3 - - 0 - - 1 - boardguidelines - - - - 170 - ????????? ????????????? ?????? ????????? ???? ? ????????? ???? - ??????? ???? ????? ???????? ?? ??????? ???? - ??????? ????????? ??????? ?????? ?? ???????]]> - 25 - yes_no - etfilter_shout - - 0 - - - 1 - 3 - - 0 - 0 - 1 - topicspostsandpolls - - - - 210 - ???????????? ??????? ??? ???????? ???????????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 - yes_no - forum_trash_can_use_radmin - - 1 - - - 1 - 3 - - 0 - - 1 - trashcansetup - - - - 133 - ? ????? ?????? ????????????? ???????? ????????? ?????? - ???? ????? ??????? ???, ??? ?? ?????? ????????? ?????????????? ????????? ??? ??????, ??????? ????? ???????????? ????????? ????, ????????, ?????????? ?????? ????? ? ????????? ???????? ?????? ? ?.?. - 21 - dropdown - spider_group - - 2 - #show_groups# - - 1 - 3 - - 0 - - 1 - searchenginespiders - - - - 42 - ??????? ?????? - ???? ? PHP.]]> - 8 input clock_short - j.n.Y, G:i + jS F Y - h:i A 1 @@ -1262,73 +973,172 @@ $key = 'recent_topics_article_forum[]'; 0 1 date + 0 - 216 - - - 27 + 37 + Join date time format + PHP Date]]> + 3 input - max_location_length + clock_joined - 1000 + j-F y 1 - 3 + 4 0 0 1 - userprofiles + date + 0 - 126 - ???????????? ?????????? ?????? ????????? ?? ???????? ??? ????????? ?????? ????????? - 50]]> - 18 + 38 + Long time format + PHP Date]]> + 3 input - show_max_msg_list + clock_long - 50 + M j Y, h:i A 1 - 3 + 5 0 + 0 + 1 + date + 0 + + + + 39 + Use relative dates? + + 3 + dropdown + time_use_relative + + 1 + + + 1 + 6 + Relative Dates + 0 + 0 + 1 + date + 0 + + + + 40 + Relative time format + + 3 + input + time_use_relative_format + + {--}, h:i A + + + 1 + 7 + + 1 + 0 + 1 + date + 0 + + + + 333 + DST Auto Detection + + 3 + yes_no + time_dst_auto_correction + + 1 + + + 1 + 8 + DST Correction + 1 + + 1 + date + 0 + + + + 1 + email + Email Set-up + This section will allow you to change the incoming and outgoing email addresses as well as the email method. + 0 + + + + 135 + Board incoming email address + This is the email address that all incoming mail is addressed to. + 12 + input + email_in + + + + + 1 + 1 + Email Addresses + 0 1 - personalmessagesetup + email + 0 - 239 - ???????????? ??????? ?????????????? - - 28 + 136 + Board outgoing email address + This is the email address that all mail appears to come from. + 12 input - warn_max + email_out - 10 + 1 - 3 + 2 1 1 - warnsetup + email + 0 - 50 - ????? ???????? ????? - ???? ??????? PHP mail() ??????????, ???????? ????? SMTP. ???? ?? ?? ??????, ??? ???????, ???????? ? ?????? ???????-??????????. - 9 + 137 + Mail Delivery Method + + 12 dropdown mail_method @@ -1343,113 +1153,14 @@ smtp=SMTP 1 email + 0 - 58 - ???????? ?????? ????? - ??? ?????????? ????? ? ???? ?????????? ????, ? ??????? ????? ??????? ?????? ???????? ?????? ?? ??? ????. - 10 - input - home_name - - - - - 1 - 3 - - 0 - 0 - 1 - general - - - - 27 - ??????? ????? ??????? ???????????? ? ???????? - ??????? ????? ?????????? ?????, ? ??????? ???????? ????? ?????????? ???????? ?? ?????? ???????????? ??? ??? ????? ????????? ? ??????? ?? ??????. - 7 - input - au_cutoff - - 15 - - - 1 - 3 - - 0 - 0 - 1 - cpusaving - - - - 114 - ?????? ??????? ??? ???????? - ???? ? PHP.]]> - 16 - input - csite_article_date - - j.n.Y, G:i - - - 1 - 3 - - 0 - - 0 - ipbportal - - - - 28 - ???????? ??????????? ??? ? ???? ?????? - ?????????? ????, ? ??????? ???????? ????? ????? ??????? ?????????? ? ??????????? ????????????? ????? ? ???? ??????. ??? ??????? ??????? ?? ??????????? ????????? ???????? ?? ????? 7 ????. ??????? ? ???? 0 (????) ??? ?????????? ??????????? ???????????? ??????????? ??? ? ??????? ???? ??????. - 7 - input - db_topic_read_cutoff - - 7 - - - 1 - 3 - - 0 - - 1 - cpusaving - - - - 129 - ?????????? ???????? ??? ??????????? - - 20 - input - recent_topics_article_max - - 15 - - - 1 - 4 - ????????? ??????? - 1 - - 0 - - - - - 51 - SMTP ???? - - 9 + 138 + Over-ride SMTP Host? + + 12 input smtp_host @@ -1458,319 +1169,19 @@ smtp=SMTP 1 4 - ????????? SMTP ??????? + SMTP Set-up 0 1 email + 0 - 59 - ????? ?????? ?????: - - 10 - input - home_url - - - - - 1 - 4 - - 1 - 0 - 1 - general - - - - 78 - - ???? ??? ????? ????????, ?? ?? ??????? ???????? ?????? ? ????? ?????????? ????? ???????????? ???? ? ?????????????, ??? ?????? ????????? ? ????. - 11 - yes_no - chat04_who_on - - 1 - - - 1 - 4 - ??? ? ???? - 0 - - 1 - - - - - 240 - ?????????? ?????? - ?? ?????? ???????????? ??????? ????? ????? (????????? «Ctrl»).]]> - 28 - multi - warn_protected - - - #show_groups# - 1 - 4 - - 0 - - 1 - warnsetup - - - - 211 - ???????????? ??????? ??? ?????? ???????????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 - yes_no - forum_trash_can_use_admin - - 1 - - - 1 - 4 - - 0 - - 1 - trashcansetup - - - - 134 - ????? ????? ???????????? ???????????? - ??? ??????? ???, ??? ?? ?????? ??????? ?????? ???????????????? ????? ??? ????????? ?????, ????? ????????? ?????? ?????? ? ???????? ??????????????? ?????? ??????. - 21 - dropdown - spider_suit - - - #show_skins# - - 1 - 4 - - 0 - - 1 - searchenginespiders - - - - 171 - - - 25 - input - hot_topic - - 15 - - - 1 - 4 - - 1 - 0 - 1 - topicspostsandpolls - - - - 217 - - - 27 - input - max_interest_length - - 1000 - - - 1 - 4 - - 0 - 0 - 1 - userprofiles - - - - 11 - ???????? ??????? ??????????? ???????? - ????? ????? ???????? ??????????? ??????? ????????? ?? ??????? ????????. - 3 - yes_no - show_calendar - - 1 - - - 1 - 4 - ??????? ??????????? ??????? - 0 - - 1 - calendar - - - - 30 - ???????? ????, ????????? ?????????????, ??? ????????? ??????? - - 7 - yes_no - show_user_posted - - 1 - - - 1 - 4 - - 1 - 0 - 1 - cpusaving - - - - 96 - - + 139 + Over-ride SMTP Port? + Default is 25 12 - yes_no - chat_hide_whoschatting - - 1 - - - 1 - 4 - - 0 - - 1 - - - - - 4 - ????? ?????? ?????? (???? ?? ??????????? ??????? ??????) - HTML ??????? - 1 - textarea - gl_guidelines - - - - - 1 - 4 - - 0 - - 0 - boardguidelines - - - - 43 - ?????? ???? ??????????? - ???? ? PHP.]]> - 8 - input - clock_joined - - j.n.Y - - - 1 - 4 - - 0 - 0 - 1 - date - - - - 79 - - - 11 - yes_no - chat04_hide_whoschatting - - 1 - - - 1 - 5 - - 0 - - 1 - chat04 - 0 - - - - 206 - ????????? ????????? ?????? ??????: - ????????? ?????? ??????????? ? ????????? ???? ????????. ? ??????. - 11 - dropdown - chat04_who_save - - 2 - 2=2 -5=5 -10=10 -15=15 -30=30 - - 1 - 6 - - 1 - - 1 - chat04 - 0 - - - - 52 - SMTP ???? - - 9 input smtp_port @@ -1784,13 +1195,148 @@ if ( $show == 1 ) 1 email + 0 - 60 - URL ? ????? ??? ????????: - URL ????? ????? ????? /uploads/, ???? ????? ??????????? ????????????? ?????, ??????????, ??????? ? ?.?. - 10 + 187 + + ' (no quotes). If you are getting errors in the mail error log, enabled this option]]> + 12 + yes_no + mail_wrap_brackets + + 0 + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 140 + SMTP UserName + + 12 + input + smtp_user + + + + + 1 + 6 + + 0 + + 1 + email + 0 + + + + 337 + PHP Mail Extra Options + + 12 + input + php_mail_extra + + + + + 1 + 8 + PHP Mail Settings + 1 + + 1 + email + 0 + + + + 1 + general + General Configuration + These settings control the basics of the board such as URLs and paths. + 0 + + + + 4 + Board Name + This is the name of the board. It is used as the first link in the navigation menu, etc. + 1 + input + board_name + + Invision Power Board + + + 1 + 1 + + 0 + 0 + 1 + general + 0 + + + + 6 + Website Name + + 1 + input + home_name + + + + + 1 + 3 + + 0 + 0 + 1 + general + 0 + + + + 7 + Website Address + + 1 + input + home_url + + + + + 1 + 4 + + 1 + 0 + 1 + general + 0 + + + + 9 + Upload URL + + 1 input upload_url @@ -1799,61 +1345,421 @@ if ( $show == 1 ) 1 5 - URL ?????? ? ???? + Other URLs and Paths 0 0 1 general + 0 + + + + 11 + + This is a path, not a URL. + 1 + input + upload_dir + + + upload_dir + + 1 + 7 + + 0 + 0 + 1 + general + 0 + + + + 265 + Caching PATH + This can be left blank +
      This is useful for specifing a PATH for the IPB written files (skin_cache, style_avatars, style_emoticons, style_images) when dealing with load balanced/clustered servers. If you enter a PATH, please ensure that it ends with a trailing slash]]>
      + 1 + input + ipb_cache_path + + + + + 1 + 8 + + 0 + + 1 + general + 0 +
      + + + 338 + Document character set + Enter the document character set for all HTML pages. + 1 + input + gb_char_set + + iso-8859-1 + + + 1 + 8 + + 0 + + 1 + general + 0 + + + + 264 + Image URL + This can be left blank +
      This can be used if you wish to serve images from a different server or when using clustered servers. Please ensure that you use a trailing slash and that it starts with http(s):// if entering a URL]]>
      + 1 + input + ipb_img_url + + + + + 1 + 8 + + 0 + + 1 + general + 0
      12 - ????????????? ????????, ????? ??? ??????????? ??????? ? ???????????? - - 3 + Print HTTP Headers? + + 1 yes_no - autohide_calendar + print_headers 0 1 - 5 + 9 + 1 + 0 + 1 + general + 0 + + + + 14 + Type of auto-redirect + + 1 + dropdown + header_redirect + + location + location=Location type (*nix savvy) +refresh=Refresh (Windows savvy) +html=HTML META redirect (If all else fails...) + + 1 + 11 + Page Redirection 0 + 0 + 1 + general + 0 + + + + 183 + + + 1 + yes_no + ipb_remove_redirect_pages + + 0 + + + 1 + 12 + + 1 1 - calendar + general + 0 + + + + 15 + Debug level + This controls the debug information shown at the footer of your board. + 1 + dropdown + debug_level + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 13 + Disable GZIP encoding? + GZIP enables faster page transfers and lower bandwidth use however some servers are not configured to allow it. + 1 + yes_no + disable_gzip + + 0 + + + 1 + 14 + + 0 + 0 + 1 + general + 0 + + + + 16 + Enable SQL Debug Mode + + 1 + yes_no + sql_debug + + 0 + + + 1 + 15 + + 0 + 0 + 1 + general + 0 + + + + 17 + Use Safe Mode Skins? + + 1 + yes_no + safe_mode_skins + + 0 + + + 1 + 16 + + 0 + 0 + 1 + general + 0 18 - ???????????????? ???????????? ??: - - 4 + Number Formatting + (EG: USA & UK use a comma)]]> + 1 dropdown - converge_login_method + number_format - username - username=????? ???????????? (login) -email=E-mail + , + 1 - 5 + 17 + Number Formatting + 0 + 0 + 1 + general + 0 + + + + 345 + Decimal Seperator + Character used to seperate decimals in numbers. + 1 + dropdown + decimal_seperator + + . + .=. +,=, + + 1 + 18 + + 1 + + 1 + general + 0 + + + + 182 + GD Version + + 1 + dropdown + gd_version + + 2 + 1=GD1 +2=GD2 + + 1 + 18 0 1 - converge + general + 0 - 212 - ???????????? ??????? ??? ????????????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 + 1 + chat04 + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition + 1 + + + + 202 + Chat Room Account Number (Group Name)? + Removing this number will remove all links / chat functionality within IPB. + + 21 + input + chat04_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat04 + 0 + + + + 253 + Chat Room Type + This is the type of chat service you purchased + 21 + dropdown + chat04_servicetype + + + advanced=Advanced +premium=Premium + + 1 + 2 + + 0 + + 1 + chat04 + 0 + + + + 252 + Default Chat Room + This is the room that your chat users will be logged into first + 21 + input + chat04_default_room + + + + + 1 + 2 + + 1 + + 1 + chat04 + 0 + + + + 204 + + + 21 yes_no - forum_trash_can_use_smod + chat04_who_on + + 1 + + + 1 + 4 + + 0 + + 1 + chat04 + 0 + + + + 205 + + + 21 + yes_no + chat04_hide_whoschatting 1 @@ -1861,37 +1767,384 @@ email=E-mail 1 5 - 0 + 1 1 - trashcansetup + chat04 + 0 - 218 - ???????????? ????? ??????? ???????????? (???-?? ????????) + 209 + Chat Room Dimensions (WIDTH)? - 27 + 21 input - max_sig_length + chat04_width - 10000 + 600 1 - 5 - + 8 + Showing the chat room 0 - 0 + 1 - userprofiles + chat04 + 0 - 97 - ????????? ????????? ?????? ?? ?????, ??? ??????: - ????????? ?????? ??????????? ?? ????????? ??????? ???? ? ????????????? ???? ???????? ? ?????????? ????????. ? ???????. - 12 + 210 + Chat Room Dimensions (HEIGHT)? + + 21 + input + chat04_height + + 350 + + + 1 + 9 + + 0 + + 1 + chat04 + 0 + + + + 255 + + + 21 + yes_no + chat04_plainmode + + 0 + + + 1 + 11 + + 0 + + 0 + chat04 + 0 + + + + 213 + Load the chat room in...? + + 21 + dropdown + chat04_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 12 + + 0 + + 1 + chat04 + 0 + + + + 211 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 + input + chat04_poppad + + 50 + + + 1 + 14 + + 1 + + 1 + chat04 + 0 + + + + 256 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 + input + chat04_style_applet_bg + + #BCD0ED + + + 1 + 16 + Chat Room Style Options + 0 + + 0 + chat04 + 0 + + + + 257 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 + input + chat04_style_applet_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 258 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 + input + chat04_style_window_bg + + #F5F9FD + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 259 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 + input + chat04_style_window_fg + + #345487 + + + 1 + 17 + + 0 + + 0 + chat04 + 0 + + + + 261 + Additional PARAM information + +<param name="cmd.BeepEnter" value="true"> +
      <param name="cmd.BeepLeave" value="true"> +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 + textarea + chat04_customparams + + + + + 1 + 18 + + 0 + + 0 + chat04 + 0 +
      + + + 260 + Chat Room Font Size + + 21 + input + chat04_style_font_size + + 10 + + + 1 + 19 + + 1 + + 0 + chat04 + 0 + + + + 214 + Allow chat access to these groups + You may select more than one + 21 + multi + chat04_access_groups + + + #show_groups# + + 1 + 25 + Access Permissions + 1 + + 1 + chat04 + 0 + + + + 1 + chat + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. + 1 + + + + 188 + Chat Room Account Number? + Removing this number will remove all links / chat functionality within IPB. + + 20 + input + chat_account_no + + + + + 1 + 1 + Account Specifics + 0 + + 1 + chat + 0 + + + + 189 + Chat Room Server? + ]]> + 20 + input + chat_server_addr + + + + + 1 + 2 + + 1 + + 1 + chat + 0 + + + + 190 + + + 20 + yes_no + chat_who_on + + 1 + + + 1 + 3 + + 0 + + 1 + chat + 0 + + + + 191 + + + 20 + yes_no + chat_hide_whoschatting + + 1 + + + 1 + 4 + + 0 + + 1 + chat + 0 + + + + 192 + Update local list no less than every: + The local list is updated from the master chat server by the frequency you set and cached locally. + 20 dropdown chat_refresh_list @@ -1907,188 +2160,15 @@ email=E-mail 1 1 - + chat + 0 - 31 - - ??? ???????? ???? ?????? ??? ????????? ?????? ??? ??????. - 7 - yes_no - no_au_forum - - 0 - no_au_forum - - 1 - 5 - ?????????? ???????????? - 0 - 0 - 1 - cpusaving - - - - 135 - ?????????? ????????? ????? ? ?????? ???????? ?????????????? - - 21 - yes_no - spider_active - - 1 - - - 1 - 5 - ?????? ???????? ????????????? - 0 - - 1 - searchenginespiders - - - - 44 - ?????? ?????? - ???? ? PHP.]]> - 8 - input - clock_long - - j.n.Y, G:i - - - 1 - 5 - - 0 - 0 - 1 - date - - - - 241 - ????????? ???????????? ?????? ???? ??????? ? ??????? ??????????????? - ??? ????????? ?????? ????? ???????????? ????? ?????? ?? ??????? ?????????????? ? ???????, ?? ??????? ??? ?? ????????. - 28 - yes_no - warn_show_own - - 0 - - - 1 - 5 - - 0 - - 1 - warnsetup - - - - 5 - ??????????????? ??????? ? ????????? - HTML ???????]]> - 1 - textarea - reg_rules - - ??????? ? ????????? ?????? - -??????????, ??????? ??????? ???????? ? ???????? ??????? ???????, ????????? ????. ???? ?? ?????????? ?? ? ??????? ?????????? ??????? ???????????, ???????? ???? ???????? ? ??????? ?????? «???????????». ??? ?????? ??????????? ??????? ?????? «?????» ? ????? ????????. - -??????????, ???????, ??? ?? ?? ???????? ?? ??? ??????????? ?????????. - -?? ?????? ??????????? ??????????????? ???????? ??????????? ??? ? ??????????. ??? ?????? ?? ??????????? ????????? - ??? ????? ??????????? ?? ??????. ????????????? ?????? ??????? ? ???? ??????????????? ?? ?????????? ?????????, ??????????? ??????????????. ??????????????? ?? ?????????? ????????? ????? ?????? ??? ?????. - -?? ?????? ?????????: -???????? ????????? ?? ?? ?????????? ??????/????, ??????????? ? ?????? ? ????? ????????????? ??????, ?????????? ???????, ???????????? ? ??????????? ??????; ??????? ? ???????????; -????????????? ???????, ??????????? ?????????????? ? ?.?. - -?????????? ?????? ????? ?????? ???????? ???????????? ??? ???????????????? ?????? ? ?? ????? ?????? ?????? ?? ?????. - -???????????? ? ?????????, ?? ???????????? ?? ??????????? ????? ????????, ?????????? ????????? ??????, ???? ????????? ????? ?? ??????????? ???.]]> - - - 1 - 5 - ??????? ? ????????? ?????? - 1 - - 0 - boardguidelines - - - - 54 - SMTP ??? ???????????? - - 9 - input - smtp_user - - - - - 1 - 6 - - 0 - - 1 - email - - - - 53 - » ? ????? «????» ? «???????? ?????» ? ???????????? ????????]]> - ????????? SMTP ??????? ???????, ????? e-mail ?????? ???? ? ??????? ???????. ???? ?? ????????? ?????? ? ??????? ???????? ??????, ???????? ??? ?????. - 9 - yes_no - mail_wrap_brackets - - 0 - - - 1 - 6 - - 0 - - 1 - email - - - - 13 - ?? ??????? ???? ?? ??????? ???????? ???? - ??????? ????? ????. ? ???????? ????? ?????????? ???? ?? ??????? ??? ????? ???????????? ? ??????????????? ????? ?? ??????? ???????? ??????. - 3 - input - calendar_limit - - 5 - - - 1 - 6 - - 1 - - 1 - calendar - - - - 98 - ????????? ?????? ?????? ?????????? IPChat? - ???? ?? ???????? ??? ?????? ?? ?????? ?????????? IPChat, ??????????, ???????? ????? ?????? ?????. ???????? ???? ??????, ???? ?? ????????. - 12 + 193 + Changed your IPChat control panel password? + + 20 input chat_pass_md5 @@ -2101,137 +2181,15 @@ email=E-mail 0 1 - + chat + 0 - 213 - ???????????? ??????? ??? ???????????? - ??? ???????? ???? ?????? ???????, ??? (????) ????? ???????????? ? ???????. - 26 - yes_no - forum_trash_can_use_mod - - 1 - - - 1 - 6 - - 0 - - 1 - trashcansetup - - - - 45 - ???????????? ????????????? ????? - - 8 - dropdown - time_use_relative - - 1 - - - 1 - 6 - ????????????? ???? - 0 - 0 - 1 - date - - - - 32 - - ??? ???????? ???? ?????? ??? ????????? ????. - 7 - yes_no - no_au_topic - - 0 - - - 1 - 6 - - 0 - 0 - 1 - cpusaving - - - - 136 - ?????????? ????????? ?????, ??? ??????? ?????????????? - ??? ????????? ????, ??????????? ?? ??????, ????? ????? ? ?????? ???????? ????????????? ?????? ???????????????. - 21 - yes_no - spider_anon - - 0 - - - 1 - 6 - - 1 - - 1 - searchenginespiders - - - - 219 - ????????? HTML ? ???????? - ?? ??????????? ???????? ?????? ?????, ???? ?? ?? ????????? ???? ?????????????, ??????? ????? ????????? ???? ???????. - 27 - yes_no - sig_allow_html - - 0 - - - 1 - 6 - - 0 - 0 - 1 - userprofiles - - - - 242 - ????????? ?????????? ????????????? ???????????? ??? ?????????? ?? ?????????????/???????????? ?????? ??????????????? - - 28 - yes_no - warn_past_max - - 0 - - - 1 - 6 - - 0 - - 1 - warnsetup - - - - 99 - ??????? ??? ?????? ? ?????? ?????????? IPCHAT - - 12 + 194 + ENTER YOUR IPCHAT CONTROL PANEL PASSWORD + + 20 input chat_pass_md5_new @@ -2244,369 +2202,15 @@ email=E-mail 0 1 - + chat + 0 - 14 - ????????? ??? ????????? - ????????? ??? ? ,??????????????, ??????????? ????? ????? ????????? ? ???? ???????????? ???????, ? ????? ??? ??????. - 3 - input - start_year - - 2001 - - - 1 - 7 - - 0 - - 1 - calendar - - - - 243 - ??????????? ?????????? ?????? ?????????????? + 195 + Chat Room Dimensions (WIDTH)? - 28 - dropdown - warn_show_rating - - 0 - - - 1 - 7 - - 0 - - 1 - warnsetup - - - - 33 - - - 7 - yes_no - show_active - - 1 - - - 1 - 7 - - 0 - 0 - 1 - cpusaving - - - - 61 - ???? ? ????? /uploads/ - ??? ???? ?? ??????? ?? ?????, ?? ?????? ? URL ???????. - 10 - input - upload_dir - - - upload_dir - - 1 - 7 - - 0 - 0 - 1 - general - - - - 220 - ????????? BB ???? ? ???????? - - 27 - yes_no - sig_allow_ibc - - 1 - - - 1 - 7 - - 0 - 0 - 1 - userprofiles - - - - 137 - - -«?????????? ??????? ?? user-agent»=«??? ???? ??? ??????????? ?? ??????», ????????:
      googlebot=Google Bot -]]>
      - 21 - textarea - search_engine_bots - - googlebot=Google Bot -slurp@inktomi=Hot Bot -archive_org=Archive.org Bot -Ask Jeeves=Ask Jeeves Bot -Lycos=Lycos Bot -WhatUSeek=What You Seek Bot -ia_archiver=IA.Archiver Bot -GigaBlast=Gigablast Bot -Gigabot=Gigablast Bot -Yandex=Yandex Bot -Yahoo!=Yahoo Bot -Yahoo-MMCrawler=Yahoo-MMCrawler Bot -TurtleScanner=TurtleScanner Bot -TurnitinBot=TurnitinBot -ZipppBot=ZipppBot -StackRambler=StackRambler Bot -oBot=oBot -rambler=Rambler Bot -Jetbot=Jet Bot -NaverBot=Naver Bot -libwww=Punto Bot -aport=Aport Bot -msnbot=MSN Bot -MnoGoSearch=mnoGoSearch Bot -booch=Booch Bot -Openbot=Openfind Bot -scooter=Altavista Bot -WebCrawler=Fast Bot -WebZIP=WebZIP Bot -GetSmart=GetSmart Bot -grub-client=GrubClient Bot -Vampire=Net_Vampire Bot - - - - 1 - 7 - - 0 - - 1 - searchenginespiders -
      - - - 46 - ?????? ?????????????? ???????: - - 8 - input - time_use_relative_format - - {--}, G:i - - - 1 - 7 - - 1 - 0 - 1 - date - - - - 63 - ????????? ??????? ?????? - ??????? ???????? ?????????, ? ??????? ????? ???????????? ??? HTML ???????? ??????. - 10 - input - gb_char_set - - windows-1251 - - - 1 - 8 - - 0 - - 1 - general - - - - 47 - ????-??????????? ???????? ?? ?????? ????? - - 8 - yes_no - time_dst_auto_correction - - 1 - - - 1 - 8 - ??????? ?? ?????? ????? (DST) - 1 - - 1 - date - - - - 56 - ?????????????? ????? PHP Mail - - 9 - input - php_mail_extra - - - - - 1 - 8 - ????????? PHP Mail - 1 - - 1 - email - - - - 64 - URL ????? ? ???????????? - ????????????? ? ??????????
      ??? ??????? ???? ?? ??????? ????????? ??????????? ?? ?????? ??????? ??? ????? ???????????? ?????????? ??????.

      ???? ?? ??????? ????? ????, ?????????, ??? ?? ???????????? «??????».
      ?? ?????????? ???? ?????, ???? ?? ??????? ? ???????????? ????!]]>
      - 10 - input - ipb_img_url - - - - - 1 - 8 - - 0 - - 1 - general -
      - - - 221 - ?????????? ?????????, ?? ???????? ????, ?????????? ????????????? ? ?????????? ??????? - ??????: 5,15,20,25,30]]> - 27 - input - postpage_contents - - 5,10,15,20,25,30,35,40 - - - 1 - 8 - - 0 - 0 - 1 - userprofiles - - - - 244 - ????? ?? ?????????? ????????? ??????????? ???????????? ?????? ????? ?????? ??????????????? - ?????????????? ????? ??????????? ???????????? ?????? ??????!]]> - 28 - yes_no - warn_mod_ban - - 1 - - - 1 - 8 - ????? ??????????? ?????? - 0 - - 1 - warnsetup - - - - 15 - ?? ??????? ??? ????????? ?????????? - - 3 - input - year_limit - - 5 - - - 1 - 8 - - 0 - - 1 - calendar - - - - 62 - ???? ? ?????????? ?????? - ????????????? ? ??????????
      ??? ??????? ??? ???????? ???? ?? ???????? ??? ?????? IPB ?????? (/skin_cache/, /style_avatars/, /style_emoticons/, /style_images/), ????? ????????? ? ???????????? ??????????? ?????????.
      ???? ?? ??????? ????? ????, ?????????, ??? ?? ????????????? «??????».
      ?? ?????????? ???? ?????, ???? ?? ??????? ? ???????????? ????!]]>
      - 10 - input - ipb_cache_path - - - - - 1 - 8 - - 0 - - 1 - general -
      - - - 80 - ??????? ??????? ???? (??????)? - - 11 - input - chat04_width - - 600 - - - 1 - 8 - ??????????? ??????? ???? - 0 - - 1 - - - - - 100 - ??????? ??????? ???? (??????)? - - 12 + 20 input chat_width @@ -2615,180 +2219,20 @@ Vampire=Net_Vampire Bot 1 8 - ??????????? ??????? ???? + Showing the chat room 0 1 - + chat + 0 - 34 - ????????? ????????????? (??? ?????????) ???????????? ??????? ?? ??????? + 196 + Chat Room Dimensions (HEIGHT)? - 7 - yes_no - allow_search - - 1 - - - 1 - 8 - - 0 - 0 - 1 - cpusaving - - - - 130 - ?????????? ???????????? ??? - 20 input - recent_topics_discuss_number - - 1 - - - 1 - 9 - ????????? ?????????? - 0 - - 0 - - - - - 102 - ????????? ??????? ???? ?...? - - 12 - dropdown - chat_display - - self - self=?????????? IPB ???????? -new=????? pop-up ???? - - 1 - 9 - - 0 - - 1 - - - - - 222 - ?????????? ???, ?? ???????? ??????, ?????????? ????????????? ? ?????????? ??????? - ??????: 5,15,20,25,30]]> - 27 - input - topicpage_contents - - 5,10,15,20,25,30,35,40 - - - 1 - 9 - - 1 - 0 - 1 - userprofiles - - - - 245 - ????? ?? ?????????? ???????? ???????? ???? ??????????? ????????????? ????????? ????? ??????????? ? ????? (????? ?????? ??????????????)? - ?????????????? ????? ???????? ???????? ???????????? ??????!]]> - 28 - yes_no - warn_mod_modq - - 1 - - - 1 - 9 - - 0 - - 1 - warnsetup - - - - 35 - ?????????? ???? ?? ??????????? ??????? - ?????????? ???? ?? ??????????? ? ?????? ????? ??????? ???????? ??????. - 7 - yes_no - show_totals - - 1 - - - 1 - 9 - - 1 - 0 - 1 - cpusaving - - - - 65 - ????????????? ?????????? HTTP ?????????? - ????????? NT ??????? ???????, ????? ??? ??????? ???? ?????????. - 10 - yes_no - print_headers - - 0 - - - 1 - 9 - - 1 - 0 - 1 - general - - - - 81 - ??????? ??????? ???? (??????)? - - 11 - input - chat04_height - - 350 - - - 1 - 9 - - 0 - - 1 - - - - - 101 - ??????? ??????? ???? (??????)? - - 12 - input chat_height 350 @@ -2800,14 +2244,37 @@ new=????? pop-up ???? 0 1 - + chat + 0 - 103 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? - 12 + 199 + Load the chat room in...? + + 20 + dropdown + chat_display + + self + self=Normal IPB Page +new=New Pop Up Window + + 1 + 9 + + 0 + + 1 + chat + 0 + + + + 197 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 20 input chat_poppad @@ -2820,267 +2287,30 @@ new=????? pop-up ???? 0 1 - + chat + 0 - 223 - - ???????? ?????? ??? ??????? 0, ????? ??? ????? ????????? - 27 - input - subs_autoprune - - 0 - - - 1 - 10 - ???????? ?? ???? ? ?????? - 0 - 0 - 1 - userprofiles - - - - 36 - ????? ???????? ??????? - ????? ????? ???????? ????????? ? ?????????? ???????, ????? ????? ????? ????????. ?? ?????? ????? ???????? ???? ??????, ????? ?? ???????????? ??????????? ??????. - 7 - input - load_limit - - - - - 1 - 10 - - 0 - 0 - 1 - cpusaving - - - - 246 - ????? ?? ?????????? ????????? ???????????? ??????????? ?????????? ?????????/??? ?? ?????? (????? ?????? ??????????????)? - ?????????????? ????? ????????? ????????????? ??????????? ?????????? ????????? ??????!]]> - 28 - yes_no - warn_mod_post - - 1 - - - 1 - 10 - - 0 - - 1 - warnsetup - - - - 172 - ??????? ?????? ??? - ?????, ???????????? ????? ????????? ???? ? ????? ????????. ?????? ???? ?????? ? ??????? ????? ?????? ???? ??? ? ??????. - 25 - input - pre_pinned - - ?????: - - - 1 - 10 - ???????? ??? - 0 - 0 - 1 - topicspostsandpolls - - - - 143 - ????????? ???????????? ???????????? - ????????? ????????????? ??????????? ???????????? ???????????, ????????? CGI ?????????. ??? ????? ???? ????????????, ????????, ??? ???????? ????????? ??????????? ? ??????? ? ?.?., ?? ???????????? ????? ?????? ??????????? ??????????? ???????, ??????? ????? ???????? ???????????? ??????. - 23 - yes_no - allow_dynamic_img - - 0 - - - 1 - 10 - - 0 - - 1 - securityandprivacy - - - - 224 - ????????????? ??????????? ?? ?????? ????? - - 27 - multi - autoforum_sub_groups - - - #show_groups# - - 1 - 11 - - 1 - - 1 - userprofiles - - - - 83 - - - 11 - yes_no - chat04_plainmode - - 0 - - - 1 - 11 - - 0 - - 0 - - - - - 144 - ???????? ????????? IP-??????? ?? X_FORWARDED_FOR? - ???? ????? ????????, ?? IP-?????? ????????????? ????? ?????????? ??? ?? ?? ????????? X_FORWARDED_FOR. ?????????????? ??? ??????? ?????????? ? ????????? ?????, ????? ?? ??????? ?????????? ???????? IP-????? ????????????. - 23 - yes_no - xforward_matching - - 0 - - - 1 - 11 - - 0 - - 1 - securityandprivacy - - - - 173 - ??????? ???????????? ??? - - 25 - input - pre_moved - - ??????????: - - - 1 - 11 - - 0 - 0 - 1 - topicspostsandpolls - - - - 247 - ??????? ??? ?? ???? ????????? ????? ??????? ?????????????? ?????? ????????????? + 198 + Default Chat Room Interface Language? - 28 - input - warn_mod_day - - 3 - - - 1 - 11 - - 1 - - 1 - warnsetup - - - - 66 - ??? ????????????? - - 10 - dropdown - header_redirect - - location - location=? ?????????????? ????????? Location: (*nix) -refresh=? ?????????????? ????????? Refresh: (Windows) -html=HTML META ????????????? (???? ???????? ???? ?? ????????) - - 1 - 11 - ????????? ????????????? - 0 - 0 - 1 - general - - - - 104 - ???? ?????????? ???? ?? ?????????? - - 12 + 20 dropdown chat_language en en=English -ar=???????? -de=???????? -es=????????? -fr=??????????? -hr=?????????? -it=??????????? -iw=????? -nl=??????? -pl=???????? -pt=????????????? +ar=Arabic +de=German +es=Spanish +fr=French +hr=Croation +it=Italian +iw=Hebrew +nl=Dutch +pl=Polish +pt=Portuguese 1 11 @@ -3088,255 +2318,15 @@ pt=????????????? 1 1 - + chat + 0 - 145 - - - 23 - yes_no - login_change_key - - 0 - - - 1 - 12 - - 0 - - 1 - securityandprivacy - - - - 84 - ????????? ??????? ???? ?...? - - 11 - dropdown - chat04_display - - self - self=?????????? IPB ???????? -new=????? pop-up ???? - - 1 - 12 - - 0 - - 1 - - - - - 248 - ????? ?? ??????????????? ????????? ??????????? ???????????? ?????? ????? ?????? ??????????????? - ?????????????? ????? ??????????? ???????????? ?????? ??????! - 28 - yes_no - warn_gmod_ban - - 1 - - - 1 - 12 - ????? ???????????????? - 0 - - 1 - warnsetup - - - - 115 - ?????????? ???? ?????????? ????????????/?????? - - 16 - yes_no - csite_pm_show - - 1 - - - 1 - 12 - ?????????? ??????? - 0 - - 0 - ipbportal - - - - 174 - ??????? ??????? - ?????, ???????????? ????? ????????? ???? ? ????? ????????. ??? ????, ? ??????? ???? ?????, ?????????? ???. - 25 - input - pre_polls - - ?????: - - - 1 - 12 - - 0 - 0 - 1 - topicspostsandpolls - - - - 225 - ????????? ???????????? ???????? - - 27 - yes_no - avatars_on - - 1 - - - 1 - 12 - ??????? ? ?????????? - 0 - 0 - 1 - userprofiles - - - - 67 - ?????? ???????? ?????????????? - ????????? ?????? ???????????? ???????? ?????????????, ??????? ???????? ??? ??????????? ????????????? ? ??? ????????? ????????, ? ?????? ???????????? ??? ?? ?????? ????????. ?????????? ? ????? ???????? ???????. - 10 - yes_no - ipb_remove_redirect_pages - - 0 - - - 1 - 12 - - 1 - - 1 - general - - - - 175 - ???????????? ????? ????????? ??? - ???????????? ??????????? ????? ????????? ???. - 25 - input - topic_title_max_len - - 150 - - - 1 - 13 - - 1 - - 1 - topicspostsandpolls - - - - 146 - ???????????? ?????? (? ????????) - ?????????? ?????? ????????? ????? ????????? ????? ??????. ??? ?????? ?????, ??? ?????? ??????????? ????????? ??????. - 23 - input - session_expiration - - 3600 - - - 1 - 13 - - 0 - - 1 - securityandprivacy - - - - 140 - ??????????? ????? ??????? ??? ?????? (? ????????): - - 22 - input - min_search_word - - 4 - min_search_word - - 1 - 13 - - 0 - 0 - 1 - searchsetup - - - - 249 - ????? ?? ??????????????? ???????? ???????? ???? ??????????? ????????????? ????????? ????? ??????????? ? ????? (????? ?????? ??????????????)? - ?????????????? ????? ??????????? ???????????? ?????? ??????! - 28 - yes_no - warn_gmod_modq - - 1 - - - 1 - 13 - - 0 - - 1 - warnsetup - - - - 226 - ??????????? ?????????? ?????? ??? ???????? - ?????????? ??????? (gif,jpeg,jpg,png) ? ?.?. - 27 - input - avatar_ext - - gif,jpg,jpeg,png - - - 1 - 13 - - 0 - 0 - 1 - userprofiles - - - - 105 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? - 12 + 200 + Allow chat access to these groups + You may select more than one + 20 multi chat_access_groups @@ -3361,217 +2351,19 @@ if ( $show == 1 ) }]]> 1 13 - ????? ??????? + Access Permissions 0 1 - + chat + 0 - 147 - - - 23 - yes_no - match_ipaddress - - 1 - - - 1 - 14 - - 0 - - 1 - securityandprivacy - - - - 85 - Pop-up ???? ??????? ???? ????????????? ????????? (? ????????) - ????????? ????????? ???? ??? ????? ????????? - 11 - input - chat04_poppad - - 50 - - - 1 - 14 - - 1 - - 1 - - - - - 141 - ???????? ????? ?????????: ?????????? ??????? - ?? ??????? ?????? ? ?????? ??? ????????????? ?????? '???????? ????' ??? '???????? ????? ?????????'. ?? ?????? ???????? ????????? ???????.]]> - 22 - multi - vnp_block_forums - - - #show_forums# - - 1 - 14 - - 0 - - 1 - searchsetup - - - - 250 - ????? ?? ??????????????? ????????? ???????????? ??????????? ?????????? ?????????/??? ?? ?????? (????? ?????? ??????????????)? - ?????????????? ????? ??????????? ???????????? ?????? ??????! - 28 - yes_no - warn_gmod_post - - 1 - - - 1 - 14 - - 0 - - 1 - warnsetup - - - - 69 - ????????? GZIP ??????? - GZIP ???????? ???????? ??????? ? ????????? ??????, ?? ????????? ??????? ?? ???????????? ???? ?????. - 10 - yes_no - disable_gzip - - 0 - - - 1 - 14 - - 0 - 0 - 1 - general - - - - 68 - ?????????? ????????? - - 10 - dropdown - debug_level - - 0 - - - 1 - 14 - - 0 - 0 - 1 - general - - - - 37 - - ???? ????? ???????? ????????? ?? ?????????? ???????? ??????. - 7 - yes_no - nocache - - 1 - - - 1 - 14 - ?????????? ??????? - 0 - 0 - 1 - cpusaving - - - - 116 - ?????????? ???? ? ?????? ??????? - - 16 - yes_no - csite_search_show - - 1 - - - 1 - 14 - - 0 - - 0 - ipbportal - - - - 227 - ????????? ????????????? ???????????? ????????? URL ?????? ????????? - ???? ??? ????? ????????, ?? ???????????? ????? ?? ????????? ?? ????? ??????, ? ?????? ??????? ?? ???? ?????? - 27 - yes_no - avatar_url - - 1 - - - 1 - 14 - - 0 - 0 - 1 - userprofiles - - - - 106 - ????????? ????? ?????????????? ???? ??????? - ?? ?????? ???????? ?????, ??? ????, ??????????, ????????? ???????????! - 12 + 201 + Allow ADMIN access to these groups + You may select more than one - please choose carefully! + 20 multi chat_admin_groups @@ -3600,54 +2392,186 @@ if ( $show == 1 ) 1 1 - + chat + 0 - 70 - ???????? ????? ??????? SQL? - - 10 + 1 + ipbcopyright + IPB Copyright Removal + This section allows you to manage your copyright removal key. + 1 + + + + 246 + IPB Copyright Removal Key + Your copyright removal key obtained from IPS. + 25 + input + ipb_copy_number + + + + + 1 + 1 + + 0 + + 1 + ipbcopyright + 0 + + + + 247 + Turn off copyright? + + 25 yes_no - sql_debug + ips_cp_purchase 0 1 - 15 + 2 0 - 0 + 1 - general + ipbcopyright + 0 - 228 - ???????????? ?????? ???????????? ????? ??????? (? ??????????) - - 27 - input - avup_size_max + 1 + httpapi + IPB HTTP-API Settings + Settings to manage the HTTP-API modules + 0 + + + + 1 + ipbportal + IPB Portal + These settings enable you to enable or disable IPB Portal and control the options IPB Portal offers. + 0 + + + + 216 + ENABLE IPB Portal? + + 22 + yes_no + csite_on - 50 + 1 1 - 15 + 1 0 - 0 + 1 - userprofiles + ipbportal + 0 - 117 - ?????????? ???? ? ?????????? ???? ?????? ?????? + 217 + IPB Portal Page Title? + + 22 + input + csite_title + + IPB Portal + + + 1 + 2 + + 0 + + 0 + ipbportal + 0 + + + + 223 + Date format for articles + Same as PHP's date function]]> + 22 + input + csite_article_date + + m-j-y H:i + + + 1 + 3 + + 0 + + 0 + ipbportal + 0 + + + + 227 + Show User / Guest Info box? - 16 + 22 + yes_no + csite_pm_show + + 1 + + + 1 + 12 + IPB Portal Components + 0 + + 0 + ipbportal + 0 + + + + 229 + Show search box? + + 22 + yes_no + csite_search_show + + 1 + + + 1 + 14 + + 0 + + 0 + ipbportal + 0 + + + + 230 + Enable skin selection choice dropdown? + + 22 yes_no csite_skinchange_show @@ -3661,363 +2585,14 @@ if ( $show == 1 ) 0 ipbportal + 0 - 148 - ????????? USER_AGENT ???????? ????????????? - ??? ????? ???????? ???? ??????? ?????? ????????????. ?? ???? ???? ???-?? ?????? ????????? ?????? ??????? ????????????, ?? ????? ??? ???????? ???????? ?? ???????? ?????????????? ????????? ??????? ????????????-??????. - 23 - yes_no - match_browser - - 0 - - - 1 - 15 - - 1 - - 1 - securityandprivacy - - - - 251 - ??????? ??? ?? ???? ?????????????? ????? ??????? ?????????????? ?????? ????????????? + 233 + Show Site Navigation Menu? - 28 - input - warn_gmod_day - - 3 - - - 1 - 15 - - 1 - - 1 - warnsetup - - - - 38 - ??????? ???????? ?????????? ????????? ???????? ? ??????????? ??????? - ? ??????????? ?????? ????????? ????? ????????? ????????? ????? ??????????? ????????. ??? ??????? ?? ?????? ???????????? ????? ???????? ?? ???????? ? ?????? ??????????? ?????????. ???????? ???? ????? ??????, ???? ??????, ????? ??? ?????? ?????? ?????????? ????????? ?????????... - 7 - input - search_post_cut - - - - - 1 - 15 - - 0 - 0 - 1 - cpusaving - - - - 71 - ???????????? ?????????? ????? ??????? - ?????????? ????? ?????? ?? ???????? ?? ? PHP ????? ? ????? /skin_cache/, ? ?????????? ??? ???????? ?????? ???? ??????.]]> - 10 - yes_no - safe_mode_skins - - 0 - - - 1 - 16 - - 0 - 0 - 1 - general - - - - 229 - ???????????? ??????? ??????? - x??????), ??? x - ????? ??????????? ????????]]> - 27 - input - avatar_dims - - 90x90 - - - 1 - 16 - - 0 - 0 - 1 - userprofiles - - - - 39 - ??????? ????????? ?? ?????????? ???? ???????? ?? ???????? - ??????? ???????????? ??? ??????? ?????????? ???????? ? ??????????? -. - 7 - yes_no - short_forum_jump - - 0 - short_forum_jump - - 1 - 16 - - 1 - 0 - 1 - cpusaving - - - - 86 - ???: ???? ???? - ??? ????????? ????? ???? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_applet_bg - - #BCD0ED - - - 1 - 16 - ????? ????? ??????? ???? - 0 - - 0 - - - - - 127 - ??????? URL ???? ? ????????????? ??????? - ???????? ??????, ???? ?? ??????, ????? ??????????? ???? ? ??????? - 19 - input - poll_poll_url - - - - - 1 - 17 - - 0 - - 0 - - - - - 89 - ???? ????: ???? ????????? ????? - ??? ????????? ????? ????????? ????? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_window_fg - - #345487 - - - 1 - 17 - - 0 - - 0 - - - - - 88 - ???? ????: ???? ???? - ??? ????????? ????? ???? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_window_bg - - #F5F9FD - - - 1 - 17 - - 0 - - 0 - - - - - 230 - ??????? ?? ????????? ??? ??????? ???????? - x??????), ??? x - ????? ??????????? ????????]]> - 27 - input - avatar_def - - 80x80 - - - 1 - 17 - - 0 - 0 - 1 - userprofiles - - - - 72 - ?????????????? ???????? ????????: - - 10 - dropdown - number_format - - space - none=?? ????????? -space=?????? -,=, -.=. - - 1 - 17 - ?????????????? ????? - 0 - 0 - 1 - general - - - - 87 - ???: ???? ????????? ????? - ??? ????????? ????? ????????? ????? ?????? ???? ??????? ??????????? ???? ????? (RGB). - 11 - input - chat04_style_applet_fg - - #345487 - - - 1 - 17 - - 0 - - 0 - - - - - 73 - ??????????? ????? ?? ??????? ????? ????? - ??????, ???????????? ??? ?????????? ????? ?? ??????? ????? ? ?????? ?? ??????. - 10 - dropdown - decimal_seperator - - . - .=. -,=, - - 1 - 18 - - 1 - - 1 - general - - - - 74 - ?????? GD ?????????? - - 10 - dropdown - gd_version - - 2 - 1=GD1 -2=GD2 - - 1 - 19 - - 0 - - 1 - general - - - - 90 - ?????????????? ????????? - -<param name="cmd.BeepEnter" value="true"> -
      <param name="cmd.BeepLeave" value="true"> -
      ??????????, ???????? ???????????? ? Invision Chat ??? ????????? ????????? ??????????.]]>
      - 11 - textarea - chat04_customparams - - - - - 1 - 18 - - 0 - - 0 - -
      - - - 231 - ?????????? ???????? ??? ??????? ???????? - - 27 - input - av_gal_cols - - 5 - - - 1 - 18 - - 0 - 0 - 1 - userprofiles - - - - 118 - ?????????? ????????????? ????? - - 16 + 22 yes_no csite_nav_show @@ -4031,64 +2606,25 @@ space=?????? 0 ipbportal + 0 - 91 - ?????? ?????? ??? ?????? ? ???? - ??? ????????? ??????? ??????, ???????????? ? ????, ??????????? ??? ?????. - 11 - input - chat04_style_font_size - - 10 - - - 1 - 19 - - 1 - - 0 - - - - - 232 - ??????????? ?????????? ?????? ??? ?????????? - ?????????? ??????? (gif,jpeg,jpg,png) ? ?.?. - 27 - input - photo_ext - - gif,jpg,jpeg,png - - - 1 - 19 - - 0 - 0 - 1 - userprofiles - - - - 119 - ?????? ?????????????? ???? - http://www.yandex.ru [?ndex]

      ?????? {board_url} ????? ???????? ?? URL ?????? ??????]]>
      - 16 + 234 + Site Navigation Menu Links + http://www.apple.com [Apple's Website]

      {board_url} will convert into your board]]>
      + 22 textarea csite_nav_contents - + 1 19 @@ -4097,53 +2633,14 @@ space=?????? 0 ipbportal + 0
      - 176 - ?????????? ?????????, ??????????? ?? ????? ???????? ???? - - 25 - input - display_max_posts - - 20 - - - 1 - 20 - ???????? ????????? - 0 - 0 - 1 - topicspostsandpolls - - - - 233 - ????????? ?????????????? ????????? ???????? ??????? ??????????/????????? - ???????????? ?????????? ????? ???????? ??????? ??????????? ???????. - 27 - yes_no - disable_ipbsize - - 0 - - - 1 - 20 - - 1 - 0 - 1 - userprofiles - - - - 120 - ?????????? ???? ? ?????????????? ????????? - ????????, ?????? ?? ????? ????? ?????????. - 16 + 235 + Show Affiliates / Favoured Sites box? + + 22 yes_no csite_fav_show @@ -4157,53 +2654,14 @@ space=?????? 0 ipbportal + 0 - 177 - ??????????? ?????: ?????????? ?????????, ??????????? ?? ????? ???????? - ??? ????? ????????? ??????????????, ??????? ????????? ????? ?????????? ?? ????? ???????? ???? ? ??????????? ??????. ??? ???????? ????????? ???????? ?? ?????? ??? ????????? ????? ??????? ??? ????? ????????. - 25 - input - threaded_per_page - - 100 - - - 1 - 21 - - 0 - - 1 - topicspostsandpolls - - - - 234 - ????????? ?????? ?????? ???????? - - 27 - yes_no - guests_sig - - 1 - - - 1 - 21 - ????????? ??? ?????? - 0 - 0 - 1 - userprofiles - - - - 121 - ?????????? ????? ? ?????????????? ???????? - HTML ??????? - 16 + 236 + Show Affiliates / Favoured Sites box content + Raw HTML enabled + 22 textarea csite_fav_contents @@ -4220,22 +2678,23 @@ space=?????? 0 ipbportal + 0 1 ipbreg - IPB ???????? - ????????? ????????????? ????????? ????????. + IPB Registration + This section will allow you to edit your IPB registered licence settings. 1 - 109 - IPB ??????????????? ???? - ?? ???????? ? ?? ????????? ???? ????, ???? ?? ?? 100% ?? ??????? ? ???, ??? ?? ???????!]]> - 15 + 245 + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> + 24 input ipb_reg_number @@ -4253,10 +2712,10 @@ space=?????? - 110 - ?????????? ?????????? ? ???, ?? ???? ??????????????? ??? IPB? - - 15 + 243 + Display registered to line? + + 24 yes_no ipb_reg_show @@ -4274,10 +2733,10 @@ space=?????? - 111 - - ???????: ???? ?????? ??? ???????? Invision Power Services - 15 + 244 + Show as licensed to... + Matthew Mecham, IPS, Inc.]]> + 24 input ipb_reg_name @@ -4295,37 +2754,1337 @@ space=?????? - 235 - ????????? ?????? ?????? ??????????? ? ?????????? ???????????? + 1 + newssetup + News Set-up + This section will allow you to specify the forum you wish to export news topics from to be used with ssi.php and IPDynamic Lite. + 0 + + + + 130 + Export news topics from which forum? - 27 + 10 + dropdown + news_forum_id + + + #show_forums# + + 1 + 1 + + 0 + + 1 + newssetup + 0 + + + + 131 + + + 10 yes_no - guests_img + index_news_link + + 0 + + + 1 + 2 + + 0 + + 1 + newssetup + 0 + + + + 1 + personalmessagesetup + Personal Message Set-up + This section allows you to control the global PM options. + 0 + + + + 132 + Allow BBCode in messages? + + 11 + yes_no + msg_allow_code 1 1 - 22 + 1 + + 0 + + 1 + personalmessagesetup + 0 + + + + 133 + Allow HTML in messages? + + 11 + yes_no + msg_allow_html + + 0 + + + 1 + 2 + + 0 + + 1 + personalmessagesetup + 0 + + + + 134 + Max. number of messages to show per page when viewing message list + The default is 50. + 11 + input + show_max_msg_list + + 50 + + + 1 + 3 + + 0 + + 1 + personalmessagesetup + 0 + + + + 1 + portal_poll + Portal: Poll + + 1 + + + + 232 + Enter URL to poll topic for inclusion + Leave blank to not show a poll or the poll box + 31 + input + poll_poll_url + + + + + 1 + 17 + + 0 + + 0 + portal_poll + 0 + + + + 1 + portal_recent_topics + Portal: Recent Topics + + 1 + + + + 218 + Forums to export articles from + You may select more than one. + 30 + multi + recent_topics_article_forum + + + #show_forums# + + 1 + 3 + + 0 + + 0 + portal_recent_topics + 0 + + + + 219 + Number of articles to show + + 30 + input + recent_topics_article_max + + 15 + + + 1 + 4 + Recent Topics Last X + 1 + + 0 + portal_recent_topics + 0 + + + + 224 + Number of topics to show + + 30 + input + recent_topics_discuss_number + + 1 + + + 1 + 9 + Recent Discussions Last X + 0 + + 0 + portal_recent_topics + 0 + + + + 1 + searchenginespiders + Search Engine Spiders + This section will allow you to set up and maintain your search engine bot spider recognition settings. + 0 + + + + 165 + Enable the search engine spider recognition? + + 16 + yes_no + spider_sense + + 1 + + + 1 + 1 + + 0 + + 1 + searchenginespiders + 0 + + + + 166 + Log all spider visits? + + 16 + yes_no + spider_visit + + 1 + + + 1 + 2 + + 0 + + 1 + searchenginespiders + 0 + + + + 167 + Treat spider/bot as part of which group? + + 16 + dropdown + spider_group + + 2 + #show_groups# + + 1 + 3 + + 0 + + 1 + searchenginespiders + 0 + + + + 168 + Force spider/bot to use skin + + 16 + dropdown + spider_suit + + + #show_skins# + + 1 + 4 + + 0 + + 1 + searchenginespiders + 0 + + + + 169 + Show spider/bot in the active users list? + + 16 + yes_no + spider_active + + 1 + + + 1 + 5 + Active Users List + 0 + + 1 + searchenginespiders + 0 + + + + 171 + Show spider as anonymous + + 16 + yes_no + spider_anon + + 0 + + + 1 + 6 + + 1 + + 1 + searchenginespiders + 0 + + + + 172 + Spider Bot User-Agent + bot=Human Name format.(one per line)
      Example: googlebot=Google.com]]>
      + 16 + textarea + search_engine_bots + + googlebot=Google.com +slurp@inktomi=Hot Bot +ask jeeves=Ask Jeeves +lycos=Lycos.com +whatuseek=What You Seek +ia_archiver=Archive.org + + + 1 + 7 + + 0 + + 1 + searchenginespiders + 0 +
      + + + 1 + searchsetup + Search Set-Up + + 0 + + + + 185 + Type of search to use? + +
      +]]>
      + 19 + dropdown + search_sql_method + + man + ftext=Full Text +man=Manual + ipsclass->admin->get_mysql_version(); + if ( $this->ipsclass->mysql_version < 32323 ) + { + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; + } + else + { + $full_text = "Full text available"; + } + + if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) + { + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; + } + else + { + $index = "Full text indexes found"; + } + + $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); + $r['conf_description'] = str_replace( "", $index, $r['conf_description'] ); +}]]> + 1 + 1 + + 0 + + 1 + searchsetup + 0 +
      + + + 186 + Default Search Mode? + This setting will only take effect if using full text searching + 19 + dropdown + search_default_method + + simple + simple=Simple Search +adv=Advanced Search + + 1 + 2 + + 0 + + 1 + searchsetup + 0 + + + + 31 + Minimum search word length + + 19 + input + min_search_word + + 4 + min_search_word + + 1 + 13 0 0 1 - userprofiles + searchsetup + 0 + + + + 334 + View New Posts: Block Forums + don't wish to search for new posts when using either the 'get active topics' or 'view new posts' links. You may select more than one.]]> + 19 + multi + vnp_block_forums + + + #show_forums# + + 1 + 14 + + 0 + + 1 + searchsetup + 0 + + + + 1 + securityandprivacy + Security and Privacy + These options allow you to adjust the security and privacy options for your board. + 0 + + + + 93 + Enable Script/Bot Flood Control? + + 6 + dropdown + bot_antispam + + gif + 0=None +gd=Advanced (Requires GD library) +gif=Normal (No special requirements) + + 1 + 1 + + 1 + s_reg_antispam + 1 + securityandprivacy + 0 + + + + 98 + Allow dynamic images? + + 6 + yes_no + allow_dynamic_img + + 0 + + + 1 + 10 + + 0 + + 1 + securityandprivacy + 0 + + + + 262 + Enable X_FORWARDED_FOR IP matching? + + 6 + yes_no + xforward_matching + + 0 + + + 1 + 11 + + 0 + + 1 + securityandprivacy + 0 + + + + 331 + + + 6 + yes_no + login_change_key + + 0 + + + 1 + 12 + + 0 + + 1 + securityandprivacy + 0 + + + + 99 + Session Expiration (in seconds) + Removes inactive sessions over the limit you specify. The lower the number the less chance of a session being hijacked. + 6 + input + session_expiration + + 3600 + + + 1 + 13 + + 0 + + 1 + securityandprivacy + 0 + + + + 332 + + + 6 + yes_no + match_ipaddress + + 1 + + + 1 + 14 + + 0 + + 1 + securityandprivacy + 0 + + + + 100 + + This further reduces the risk of session hijacking and tampering but it does mean that a user will have their session terminated if they use another browser at the same time. + 6 + yes_no + match_browser + + 0 + + + 1 + 15 + + 1 + + 1 + securityandprivacy + 0 + + + + 101 + Use secure mail form for member to member mails? + Hides the email address from other users and prevents email harvesting bots from gathering your members email addresses. + 6 + yes_no + use_mail_form + + 1 + + + 1 + 30 + + 0 + + 1 + securityandprivacy + 0 + + + + 102 + Allow images to be posted? + Advanced programmers can force images to run as scripts. IBF limits damage by this method however. This should only be disabled as an extreme measure. + 6 + yes_no + allow_images + + 1 + + + 1 + 31 + + 0 + + 1 + securityandprivacy + 0 + + + + 103 + Allow flash movies in posts and avatars? + + 6 + yes_no + allow_flash + + 0 + + + 1 + 32 + + 1 + + 1 + securityandprivacy + 0 + + + + 105 + New registration email validation? + + 6 + dropdown + reg_auth_type + + 0 + admin_user=User then Admin Validation +user=User Email Validation +admin=Admin Validation +0=None + + 1 + 40 + + 0 + + 1 + securityandprivacy + 0 + + + + 106 + + + 6 + input + validate_day_prune + + 0 + + + 1 + 41 + + 0 + + 1 + securityandprivacy + 0 + + + + 107 + Get notified when a new user registers via email? + This will send an email to the root administrator when a new user successfully registers on the board. + 6 + yes_no + new_reg_notify + + 0 + + + 1 + 42 + + 0 + + 1 + securityandprivacy + 0 + + + + 108 + Force guests to log in before allowing access to the board? + If set to yes, any guest must either log in or register before they can view the board. + 6 + yes_no + force_login + + 0 + + + 1 + 43 + + 0 + + 1 + securityandprivacy + 0 + + + + 109 + Disable new registrations? + + 6 + yes_no + no_reg + + 0 + + + 1 + 44 + + 0 + + 1 + securityandprivacy + 0 + + + + 110 + Remove chr(0xCA) from input? + + 6 + yes_no + strip_space_chr + + 0 + + + 1 + 45 + + 0 + + 1 + securityandprivacy + 0 + + + + 111 + + Removes the ability for your members to report a post. + 6 + yes_no + disable_reportpost + + 0 + + + 1 + 46 + + 0 + + 1 + securityandprivacy + 0 + + + + 242 + Reported Post Notifications sent to + Where do you want reported post notifications to go? + 6 + dropdown + reportpost_method + + pm + email=Email +pm=Personal Message + + 1 + 47 + + 0 + + 1 + securityandprivacy + 0 + + + + 112 + Flood control delay (in seconds) + Can be left blank for no flood control and does not apply to members which belong to a group that can bypass flood control.]]> + 6 + input + flood_control + + 0 + + + 1 + 48 + + 1 + + 1 + securityandprivacy + 0 + + + + 113 + Allow users to browse the Active Users list? + + 6 + yes_no + allow_online_list + + 1 + + + 1 + 50 + Privacy + 0 + + 1 + securityandprivacy + 0 + + + + 114 + Disable root admin group viewing anonymous online users? + Anonymous users have an asterisk after their name + 6 + yes_no + disable_admin_anon + + 0 + + + 1 + 51 + + 0 + + 1 + securityandprivacy + 0 + + + + 115 + Disable root admin group viewing online users IP address in online user list? + + 6 + yes_no + disable_online_ip + + 0 + + + 1 + 53 + + 1 + + 1 + securityandprivacy + 0 + + + + 1 + subsmanager + Subscriptions Manager + These settings control various subscription manager features. + 0 + + + + 239 + Show subscription packages when registering? + If enabled, the subscription packages will be shown in the registration page and the registering member will be able to select one. + 23 + yes_no + subsm_show_reg + + 0 + + + 1 + 1 + Optional Purchase Upon Registration + 1 + + 1 + subsmanager + 0 + + + + 240 + Force every member to require a subscriptions package + If enabled, the member must choose a package upon registration to proceed past the validating group and current members must purchase a subscription to view the board. + 23 + yes_no + subsm_enforce + + 0 + + + 1 + 2 + Force Package Purchase + 0 + + 1 + subsmanager + 0 + + + + 241 + Member group to use after registration but before package purchase? + + 23 + dropdown + subsm_nopkg_group + + 1 + #show_groups# + + 1 + 3 + + 1 + + 1 + subsmanager + 0 + + + + 1 + topicspostsandpolls + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. + 0 + + + + 63 + Number of topics per forum page + + 5 + input + display_max_topics + + 30 + + + 1 + 1 + Showing Topics + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 69 + Remove excess exclamation/question marks in topic titles? + Will turn: This!!!!! into This! + 5 + yes_no + etfilter_punct + + 0 + + + 1 + 2 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 329 + Number of rating votes required to show + + 5 + input + topic_rating_needed + + 1 + + + 1 + 3 + + 0 + + 1 + topicspostsandpolls + 0 + + + + 68 + Stop shouting in topic titles? + Will turn: CLICK HERE into Click Here + 5 + yes_no + etfilter_shout + + 0 + + + 1 + 3 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 64 + + + 5 + input + hot_topic + + 15 + + + 1 + 4 + + 1 + 0 + 1 + topicspostsandpolls + 0 + + + + 65 + Topic prefix for PINNED topics + + 5 + input + pre_pinned + + Pinned: + + + 1 + 10 + Topic Titles + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 66 + Topic prefix for MOVED topics + + 5 + input + pre_moved + + Moved: + + + 1 + 11 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 67 + Topic prefix for POLLS + + 5 + input + pre_polls + + Poll: + + + 1 + 12 + + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 335 + Topic Title Max Length + Maximum topic title length allowed. + 5 + input + topic_title_max_len + + 150 + + + 1 + 13 + + 1 + + 1 + topicspostsandpolls + 0 + + + + 70 + Number of posts per topic page + + 5 + input + display_max_posts + + 20 + + + 1 + 20 + Showing Posts + 0 + 0 + 1 + topicspostsandpolls + 0 + + + + 179 + Outline View: Number of posts per page + This controls how many posts are shown in the threaded tree per page. This helps to reduce server overhead on very large topics. + 5 + input + threaded_per_page + + 100 + + + 1 + 21 + + 0 + + 1 + topicspostsandpolls + 0 178 - ????? ????????? ??? ?? ????????? - - 25 + Default Topic View Mode + + 5 dropdown topicmode_default linear - linear=??????????? -threaded=??????????? -linearplus=???????? + linear=Standard +threaded=Outline +linearplus=Linear Plus 1 22 @@ -4334,13 +4093,14 @@ linearplus=???????? 1 topicspostsandpolls + 0 - 179 - ????????????? ?????????????: ?????????????? ?????? - ???????????? ????????? ????? ?? ?????? ???? ????????????. - 25 + 344 + Ignore Users: Protected Groups + Members of the groups selected will not be able to be ignored. + 5 multi cannot_ignore_groups @@ -4370,39 +4130,20 @@ $key = 'cannot_ignore_groups[]'; 1 topicspostsandpolls + 0 - 236 - ????????? ?????? ?????? ??????? ?????????????? + 71 + Order posts within a topic by - 27 - yes_no - guests_ava - - 1 - - - 1 - 23 - - 1 - 0 - 1 - userprofiles - - - - 180 - ??????????? ????????? ?? - - 25 + 5 dropdown post_order_column pid - pid=?????? -post_date=???? ?????????? + pid=Post ID +post_date=Post Date 1 24 @@ -4411,55 +4152,20 @@ post_date=???? ?????????? 0 1 topicspostsandpolls + 0 - 92 - ????????? ?????? ? ??? ??? ???? ????? - ?? ?????? ???????? ?????, ??? ???? - 11 - multi - chat04_access_groups - - - #show_groups# - - 1 - 25 - ????? ??????? - 1 - - 1 - - - - - 181 - ??????????? ????????? ?? + 72 + Order posts within a topic by - 25 + 5 dropdown post_order_sort asc - asc=??????????? (0-9) -desc=???????? (9-0) + asc=Ascending (0-9) +desc=Descending (9-0) 1 25 @@ -4468,96 +4174,14 @@ desc=???????? (9-0) 0 1 topicspostsandpolls + 0 - 149 - ???????????? ?????????? ????? ??? ???????? ?????? ????????????? - - 23 - yes_no - use_mail_form - - 1 - - - 1 - 30 - - 0 - - 1 - securityandprivacy - - - - 150 - ????????? ??????????? ???????????? - ??????? ???????????? ????? ????? ????? ??????????? ????????? ???????. IPB ??????????? ???????? ????????? ??????????? ????? ??? ?????. ?????????? ??? ????? ?????? ? ????? ??????? ???????. - 23 - yes_no - allow_images - - 1 - - - 1 - 31 - - 0 - - 1 - securityandprivacy - - - - 151 - ????????? Flash ?????? ? ?????????? ? ????????? - - 23 - yes_no - allow_flash - - 0 - - - 1 - 32 - - 1 - - 1 - securityandprivacy - - - - 152 - ???????????? ????????? ??????? ??????? ?????????????? - ?? ?????? ???????? ????????? ??????? ??????? ??????? ??????????????? ??? ?????? ?????? ?????????, ????? ??????? ????? ???????????? ???? ????? ???????????? ???? ??????? ?????? ????? ??????????? ??????, ?????????? ?? ?? e-mail. - 23 - dropdown - reg_auth_type - - 0 - admin_user=????????? ?? e-mail, ????? ??????????????? -user=????????? ????????????? ?? e-mail -admin=????????? ??????????????? -0=??? - - 1 - 40 - - 0 - - 1 - securityandprivacy - - - - 182 - ???????????? ?????????? ??????? ? ????? ????????? - - 25 + 74 + Max. no. emoticons per post + + 5 input max_emos @@ -4566,18 +4190,19 @@ admin=????????? ??????????????? 1 40 - ???????? ????????? + Making a Post 0 0 1 topicspostsandpolls + 0 - 183 - ???????????? ?????????? ??????????? ? ????? ????????? - - 25 + 75 + Max. no. images per post + + 5 input max_images @@ -4591,33 +4216,14 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 153 - - - 23 - input - validate_day_prune - - 0 - - - 1 - 41 - - 0 - - 1 - securityandprivacy - - - - 184 - ???????????? ?????? ????????? (? ??????????) - - 25 + 76 + + + 5 input max_post_length @@ -4631,57 +4237,18 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 154 - ?????????? ?????????????? ??? ??????????? ?????? ????????????? - ???? ???????? ??? ?????, ????? ????? ?????????? ?????? ?? e-mail ? ???????? ??????????????, ????? ???????????? ??????? ???????????????? ?? ??????. - 23 - yes_no - new_reg_notify - - 0 - - - 1 - 42 - - 0 - - 1 - securityandprivacy - - - - 155 - ?????????? ????????????? ?????????????? ??? ????????????????, ????? ??????? ?????? - ???? ????? ????????, ??? ????? ?????? ????? ????? ??? ?????????????????? ??? ????, ????? ??????? ?????. - 23 - yes_no - force_login - - 0 - - - 1 - 43 - - 0 - - 1 - securityandprivacy - - - - 186 - ???????????? ?????? ?????????????? ? ????????? Flash ?????? - ?? ????????? - 200]]> - 25 + 77 + Max. width of posted Flash movies (in pixels) + + 5 input max_w_flash - 200 + 199 1 @@ -4691,33 +4258,14 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 156 - ????????? ???????????? - ????????? ??????????? ????? ????????????? ?? ????? ??????. - 23 - yes_no - no_reg - - 0 - - - 1 - 44 - - 0 - - 1 - securityandprivacy - - - - 187 - ???????????? ?????????? ???????? ? ?????? - ????????????? ??????? 80-100.]]> - 25 + 87 + No. characters to word wrap on? + Prevents long unbroken words which distort tables. 80 - 100 is recommended + 5 input post_wordwrap @@ -4731,33 +4279,14 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 157 - ??????? ???? chr(0xCA)? - chr(0xCA) - ????????? ????????? «?????????» ??????? ? ?????????? ???????????? ??????. ?? ? ??????? ????? ???????????? ?? ???????????, ????? ????????.]]> - 23 - yes_no - strip_space_chr - - 0 - - - 1 - 45 - - 0 - - 1 - securityandprivacy - - - - 188 - ?????????? ??????? ? ????? ?????? ??????? ??????? ??? ???????? ????/???????? ????????? - - 25 + 73 + No. emoticons per clickable table row + The clickable emoticons box is shown in the full posting form page. + 5 input emo_per_row @@ -4771,39 +4300,19 @@ admin=????????? ??????????????? 0 1 topicspostsandpolls + 0 - 158 - - ????????? ??????????? ????? ????????????? ???????? ?????? ? ???????????? ?????????. - 23 + 330 + Allow members to use Rich Text Editing? + + 5 yes_no - disable_reportpost + posting_allow_rte - 0 + 1 - - 1 - 46 - - 0 - - 1 - securityandprivacy - - - - 159 - ????? ???????? ?????????????? ???????? ??????? - ???? ?? ?????? ???????? ?????? ?? ?????????????? - 23 - dropdown - reportpost_method - - pm - email=?? email -pm=?????? ?????????? 1 47 @@ -4811,14 +4320,15 @@ pm=?????? ?????????? 0 1 - securityandprivacy + topicspostsandpolls + 0 - 189 - ???????????? ????? ????? ? ????? ????????? - ????????? ???? ?????, ?? ?????????? ????? ??????? ?????????? ????? ? ?????????, ??? ????????? ????????? «???????» ????????? ?????????. - 25 + 317 + Max. Number Quotes Per Post + Use this to stop multiple quote embedding which can cause some browsers to hang or crash. + 5 input max_quotes_per_post @@ -4832,35 +4342,16 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 160 - - ?? ?????? ???????? ???? ?????? ??? ?????????? ????-????????.]]> - 23 - input - flood_control - - 0 - - - 1 - 48 - - 1 - - 1 - securityandprivacy - - - - 190 - - n
      ?????, ?? ??? ????????? ???????????? ? ????. -??????? ???-?? ?????, ? ??????? ??????? ????? ????????? ???????????. -??????? 0, ????? ????????? ?????.]]> - 25 + 336 + + n
      minutes, once after the other in a topic they will be merged into one post. +Enter the number of minutes to capture concurrent posts. +Enter 0 to not use.]]> + 5 input post_merge_conc @@ -4874,13 +4365,14 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 191 - ????????? ??????????? ?????? - ??? ????? ????? ??????? ????? ?????????? ????? ??? ??????????? ?????????, ??????????? ??????. :) - 25 + 84 + Stop Quote Embedding? + ..]]> + 5 yes_no strip_quotes @@ -4894,13 +4386,15 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 192 - ??????????? ? ?????????? ? ?????????? ?????????? ?????? ??????????? - ?????????? ??, ????????? ??????? (gif,jpeg,jpg)]]> - 25 + 79 + Valid postable image extensions + Seperate with comma (gif,jpeg,jpg)]]> + 5 input img_ext @@ -4914,73 +4408,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 161 - ????????? ????????????? ????????????? ?????? ???????? ?????????????? - ???? ???????? ??? ?????, ?? ???????????? ?? ?????? ????????????? ?????? ???????? ?????????????, ??? ??? ?????????, ??? ??? ?????? ?? ??????. - 23 - yes_no - allow_online_list - - 1 - - - 1 - 50 - ??????????? - 0 - - 1 - securityandprivacy - - - - 162 - ????????? ??????????? ???????? ?????? ??????????????? ?????? ????????? ????????????? ? ???????? - ??????? ???????????? ????? * ????? ????? ???????????? - 23 - yes_no - disable_admin_anon - - 0 - - - 1 - 51 - - 0 - - 1 - securityandprivacy - - - - 163 - ????????? ??????????? ???????? ?????? ??????????????? ?????? IP-?????? ????????????? ? ???????? - - 23 - yes_no - disable_online_ip - - 0 - - - 1 - 53 - - 1 - - 1 - securityandprivacy - - - - 193 - ?????????? ????????????? ??????????? ? ?????????? - ??? ?????????? ???? ????? ????????????? ??????????? ????? ????????? ? ?????? ????????? ??? ??????. - 25 + 80 + Show uploaded images in post as images? + + 5 yes_no show_img_upload @@ -4989,18 +4424,19 @@ pm=?????? ?????????? 1 60 - ????? ????????????? ??????????? + Attached Image Options 0 0 1 topicspostsandpolls + 0 - 194 - ?????????? ?????? ????????????? ???????????? - ???? ????? ???? ????????, ?? ????????? ??? ? ???? ????? ?????????? ? ????????? ?????? ??????????? ????? ?????????????? ???????????, ??????? ???????? ?????? ? ??????? ??????? ???????????. ????? ?? ??????????? ????? ???????????? ???????? ??????????????? ???????????. - 25 + 81 + Show thumbnail of attached image? + + 5 yes_no siu_thumb @@ -5014,13 +4450,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 195 - - ???? ??? ????? ???? ????????, ?? ?? ?????? ????? ?????????? ???????????? ?????? ??????. ???? ????????????? ??????????? ????? ?????? ?? ????????, ?? ?? ????? ???????? ????? ?????????? ??? ?????-???? ???????? ? ???. - 25 + 180 + + + 5 input siu_width @@ -5034,13 +4471,14 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 196 - - ???? ??? ????? ???? ????????, ?? ?? ?????? ????? ?????????? ???????????? ?????? ??????. ???? ????????????? ??????????? ????? ?????? ?? ????????, ?? ?? ????? ???????? ????? ?????????? ??? ?????-???? ???????? ? ???. - 25 + 83 + + + 5 input siu_height @@ -5054,33 +4492,35 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 197 - - ??? ??? ??? ???????, ????? ????????? ????? ??????????? ?? ?????, ??????? ? ?????? ??????????????????? ????????????, ??? ???????? ????? ? ?? ????????... ??? ????? ??????? ????? ??????????, ??? ???????????? ???????? ????????. - 25 + 85 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 input guest_name_pre - ?????_ + Guest_ 1 70 - ???????? ? ???????? ??? ???? ?????? + Guest Username 0 0 1 topicspostsandpolls + 0 - 198 - - ??? ??? ??? ???????, ????? ????????? ????? ??????????? ?? ?????, ??????? ? ?????? ??????????????????? ????????????, ??? ???????? ????? ? ?? ????????... ??? ????? ??????? ????? ??????????, ??? ???????????? ???????? ????????. - 25 + 86 + + This is for when a guest posts with a members name, it allows for a visual difference to prevent confusion + 5 input guest_name_suf @@ -5094,13 +4534,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 199 - + 88 + - 25 + 5 yes_no poll_tags @@ -5109,18 +4550,19 @@ pm=?????? ?????????? 1 80 - ????????? ??????? + Poll Options 0 0 1 topicspostsandpolls + 0 - 200 - ???????????? ?????????? ???????? ? ????? ?????? - ??????? ???????????? ?????????? ????????, ??????? ???????????? ????? ??????? ? ????? ??????. - 25 + 347 + Max. Poll Questions Per Poll + Enter the maximum number of questions you wish to allow your members to create in a single poll. + 5 input max_poll_questions @@ -5135,13 +4577,13 @@ pm=?????? ?????????? 1 topicspostsandpolls 0 - + - 201 - ???????????? ?????????? ????????? ?????? ? ?????? - - 25 + 89 + Maximum number of poll choices allowed? + + 5 input max_poll_choices @@ -5155,13 +4597,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 202 - ????????? ????????????? ????????????? ?????????? ??????, ?? ????? ????? ?????? ? ???? + 90 + Allow members to view the results of a poll without losing their vote? - 25 + 5 yes_no allow_result_view @@ -5175,13 +4618,14 @@ pm=?????? ?????????? 0 1 topicspostsandpolls + 0 - 203 - ????????? ????????? ?????? ?????????? ? ???? - - 25 + 237 + Allow poll creator to vote in own poll? + + 5 yes_no allow_creator_vote @@ -5195,13 +4639,14 @@ pm=?????? ?????????? 1 topicspostsandpolls + 0 - 204 - ?????????? ????? ? ??????? ???????? ????, ? ??????? ??????? ??? ????????? ??????? ??????????? ???????? ? ??? ????? - ??? ????? ?? ???????????????? ?? ??????????????? ? ????????????????. ??? ???? ?????????, ????? ???????. :) - 25 + 92 + Number of hours to keep open the ability for topic starters to attach a poll to their topic + Does not affect administrators or super moderators + 5 input startpoll_cutoff @@ -5219,222 +4664,986 @@ pm=?????? ?????????? - 205 - ????????? ????????????? ???????????? Rich Text ????????? - - 25 + 1 + trashcansetup + Trash Can Set-up + The trashcan is a special forum in which topics are moved into instead of being deleted. + 0 + + + + 157 + Enable the trashcan? + + 14 yes_no - posting_allow_rte + forum_trash_can_enable 1 1 - 100 - ????????? ????????? + 1 + 0 1 - topicspostsandpolls + trashcansetup 0 - 207 - - - 25 - input - rte_pm_width + 158 + Designate which forum to use as the trash can? + No special read/write/reply permissions are applied - please set up as if it were a normal forum. + 14 + dropdown + forum_trash_can_id - 500px + + #show_forums# + + 1 + 2 + + 0 + + 1 + trashcansetup + 0 + + + + 159 + Use trashcan for ROOT administrators? + + 14 + yes_no + forum_trash_can_use_radmin + + 1 1 - 102 + 3 - 1 + 0 1 - topicspostsandpolls - - - - 1 - converge - ????????? Converge - Converge - ?????? ??????? ??????????? ??? ???? ????????? ????????. ??? ????????? ????? ???? ??????????? ??? ???? IPS ?????????. - 0 - - - - 1 - cookies - ????????? Cookies - ?????? ????? ?? ????????? cookies. ??????? ???????? ??? ???????????? ?????? ??????????? ?? ??????. - 0 - - - - 1 - email - ????????? E-mail - ????????? ??????????? ????????? E-mail ?????? ??????, ???????? ????? ??? ???????? ????? (PHP mail(), SMTP) ? ??????. - 0 - - - - 1 - httpapi - IPB HTTP-API ????????? - ????????? ??? ?????????? ???????? HTTP-API - 0 - - - - 1 - ipbportal - IPB ?????? - ??? ????????? ???????? ??? ????????/????????? ? ????????? IPB ??????. - 0 - - - - 1 - securityandprivacy - ????????? ???????????? - ?????, ??????????? ??? ?????????????? ??????? ???????????? ?????? ??????. - 0 - - - - 1 trashcansetup - ????????? ??????? - ??????? - ??????????? ?????, ? ??????? ???????????? ???? ????? ????????, ??? ????? ???????? ??????????? ???????????? ???? ??? ?? ????????? ????????. - 0 + 0 - 1 - warnsetup - ??????? ?????????????? - ????????? ??????? ?????????????? ?????????????, ?????????????? ??????. - 0 + 160 + Use trashcan for normal administrators? + + 14 + yes_no + forum_trash_can_use_admin + + 1 + + + 1 + 4 + + 0 + + 1 + trashcansetup + 0 - 1 - searchenginespiders - ????????? ???? - ?????? ?????, ?????????? ?? ????????? ??????? ???????? ?? ?????????? ??????. ????????? ????????? ????? ?????, ???????? ? ????????? ??????? ??????? ????????? ?????. - 0 + 161 + Use trashcan for global moderators? + + 14 + yes_no + forum_trash_can_use_smod + + 1 + + + 1 + 5 + + 0 + + 1 + trashcansetup + 0 - 1 - boardoffline - ????????? / ?????????? ?????? - ?????? ????? ??? ?????????/?????????? ??????. ???? ????? ????????? ? ??????????? ?????????, ?? ?????? ? ???? ????? ????? ?????? ??????????????. ??????? ??? ?????????? ??????????? ????? ?? ??????. - 0 - - - - 1 - newssetup - ????????? ???????? ?????? - ????????? ??????? ????????? ?????? ??????, ?????? ????? ???????????????? ???????, ??? ????? ???????, ??? ? ssi.php. - 0 - - - - 1 - coppa - ????????? COPPA - COPPA. ? ?????? ?? ?????????!]]> - 1 - - - - 1 - searchsetup - ????????? ??????? ?????? - - 0 - - - - 1 - topicspostsandpolls - ????, ????????? ? ?????? - ?????? ????? ??? ????????? ?????????? ??????????? ???, ? ??? ?? ??????????? ??? ???????? ?????????, ???????. - 0 - - - - 1 - general - ?????????? ????????? ?????? - ??? ???????? ????????? ??????, ????? ??? ???????? ??????, ?????, ???? ?????? ? ?.?. - 0 - - - - 1 - boardguidelines - ??????? ?????? - ?????????, ??????????? ?????? ?????? ?????? ?????? ?????????? ??? ??????????? ? ?????????? ?????? ??????. - 0 - - - - 1 - cpusaving - - ????????? ???????????? ??? ????????? ????????? ???????????? ??????????? ?????? ??? ?????????? ???????? ?????? ?????? ??????, ? ??? ?? ?????????? ???????? ?? ??????. - 0 - - - - 1 - calendar - - ????????? ??????????? ????????? ? ????? ??????????? ??????.. - 0 - - - - 1 - subsmanager - ???????? ???????? (?? ??? ??????) - ?????????? ?????????? ????????. ? ?????? ?? ????????. - 1 - - - - 1 - personalmessagesetup - ?????? ????????? - ?????????? ????????? ??????? ?????? ????????? ??????. - 0 + 162 + Use trashcan for forum moderators? + + 14 + yes_no + forum_trash_can_use_mod + + 1 + + + 1 + 6 + + 0 + + 1 + trashcansetup + 0 1 userprofiles - ??????? ????????????? - + User Profiles + 0 + + 41 + Allow members to choose skins? + + 4 + yes_no + allow_skins + + 1 + + + 1 + 1 + Global User Profile Options + 0 + 0 + 1 + userprofiles + 0 + + + + 42 + Number of posts a member must have over before allowing them to change their member title? + Enter 0 to disable completely + 4 + input + post_titlechange + + 500 + + + 1 + 2 + + 0 + 0 + 1 + userprofiles + 0 + + + + 43 + Maximum length (in bytes) for the location field entry + + 4 + input + max_location_length + + 1000 + + + 1 + 3 + + 0 + 0 + 1 + userprofiles + 0 + + + + 44 + Maximum length (in bytes) for the interests field entry + + 4 + input + max_interest_length + + 1000 + + + 1 + 4 + + 0 + 0 + 1 + userprofiles + 0 + + + + 45 + Maximum length (in bytes) for user signatures + + 4 + input + max_sig_length + + 10000 + + + 1 + 5 + + 0 + 0 + 1 + userprofiles + 0 + + + + 46 + Allow HTML in signatures? + This is NOT recommended unless you trust all your members who can add a signature. + 4 + yes_no + sig_allow_html + + 0 + + + 1 + 6 + + 0 + 0 + 1 + userprofiles + 0 + + + + 47 + Allow BBCode in signatures? + + 4 + yes_no + sig_allow_ibc + + 1 + + + 1 + 7 + + 0 + 0 + 1 + userprofiles + 0 + + + + 48 + User selectable posts per page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + postpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 8 + + 0 + 0 + 1 + userprofiles + 0 + + + + 49 + User selectable topics per forum page dropdown contents + Example: 5,15,20,25,30]]> + 4 + input + topicpage_contents + + 5,10,15,20,25,30,35,40 + + + 1 + 9 + + 1 + 0 + 1 + userprofiles + 0 + + + + 50 + + Leave blank or enter 0 for no auto prune limit + 4 + input + subs_autoprune + + 0 + + + 1 + 10 + + 0 + 0 + 1 + userprofiles + 0 + + + + 263 + Automatically subscribe to every forum + new topics (not replies) in every forum available to them. This means that members having a selected PRIMARY group will be emailed everytime there is a new topic and they are not online to view it.
      Note This will only send the email to those who have chosen to 'Allow emails from the administrators'.]]>
      + 4 + multi + autoforum_sub_groups + + + #show_groups# + + 1 + 11 + + 1 + + 1 + userprofiles + 0 +
      + + + 53 + Allow the use of avatars? + + 4 + yes_no + avatars_on + + 1 + + + 1 + 12 + + 0 + 0 + 1 + userprofiles + 0 + + + + 54 + Allowed avatar image extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + avatar_ext + + gif,jpg,jpeg,png + + + 1 + 13 + + 0 + 0 + 1 + userprofiles + 0 + + + + 55 + Allow users to use remote URL avatars? + + 4 + yes_no + avatar_url + + 1 + + + 1 + 14 + + 0 + 0 + 1 + userprofiles + 0 + + + + 56 + Max. file size for avatar uploads? (K) + + 4 + input + avup_size_max + + 50 + + + 1 + 15 + + 0 + 0 + 1 + userprofiles + 0 + + + + 57 + Maximum avatar dimensions + xHEIGHT)]]> + 4 + input + avatar_dims + + 90x90 + + + 1 + 16 + + 0 + 0 + 1 + userprofiles + 0 + + + + 58 + Default sizes for gallery avatars? + xHEIGHT)]]> + 4 + input + avatar_def + + 80x80 + + + 1 + 17 + + 0 + 0 + 1 + userprofiles + 0 + + + + 59 + Number of columns for the avatar gallery? + + 4 + input + av_gal_cols + + 5 + + + 1 + 18 + + 0 + 0 + 1 + userprofiles + 0 + + + + 51 + Allowed photo URL extensions + Seperate with comma (gif,png,jpeg) etc + 4 + input + photo_ext + + gif,jpg,jpeg,png + + + 1 + 19 + + 0 + 0 + 1 + userprofiles + 0 + + + + 52 + Disable IPB auto sizing large photos/avatars? + This will ask the member to input their dimensions + 4 + yes_no + disable_ipbsize + + 0 + + + 1 + 20 + + 1 + 0 + 1 + userprofiles + 0 + + + + 60 + Allow GUESTS to view signatures? + + 4 + yes_no + guests_sig + + 1 + + + 1 + 21 + Guest Default Options + 0 + 0 + 1 + userprofiles + 0 + + + + 61 + Allow GUESTS to view posted images? + + 4 + yes_no + guests_img + + 1 + + + 1 + 22 + + 0 + 0 + 1 + userprofiles + 0 + + + + 62 + Allow GUESTS to view user avatars? + + 4 + yes_no + guests_ava + + 1 + + + 1 + 23 + + 1 + 0 + 1 + userprofiles + 0 + + 1 - date - - ????????? ??????? ??????????? ???? ? ??????? ?? ??????. + warnsetup + Warn Set-up + This section will allow you to set up the warning system. 0 + + 142 + Enable the warning system? + + 13 + yes_no + warn_on + + 1 + + + 1 + 1 + + 0 + + 1 + warnsetup + 0 + + + + 143 + Minimum Warn Level + Members always start with a zero warn level when registered.]]> + 13 + input + warn_min + + 0 + + + 1 + 2 + Warning Levels + 0 + + 1 + warnsetup + 0 + + + + 144 + Maximum Warn Level + + 13 + input + warn_max + + 10 + + + 1 + 3 + + 1 + + 1 + warnsetup + 0 + + + + 145 + Protected Groups + You may choose more than one.]]> + 13 + multi + warn_protected + + + #show_groups# + + 1 + 4 + + 0 + + 1 + warnsetup + 0 + + + + 146 + Allow all other non-protected groups to see their own warn level and reasons? + + 13 + yes_no + warn_show_own + + 0 + + + 1 + 5 + + 0 + + 1 + warnsetup + 0 + + + + 147 + Allow warnings to continue once the minimum or maximum has been reached? + + 13 + yes_no + warn_past_max + + 0 + + + 1 + 6 + + 0 + + 1 + warnsetup + 0 + + + + 148 + Type of visual indicator? + Controls which type of warn level meter is displayed. + 13 + dropdown + warn_show_rating + + 0 + level]]> + + 1 + 7 + + 0 + + 1 + warnsetup + 0 + + + + 248 + Moderators can ban via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_ban + + 1 + + + 1 + 8 + Forum Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 249 + Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_modq + + 1 + + + 1 + 9 + + 0 + + 1 + warnsetup + 0 + + + + 250 + Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel.]]> + 13 + yes_no + warn_mod_post + + 1 + + + 1 + 10 + + 0 + + 1 + warnsetup + 0 + + + + 251 + Number of times per day a moderator can warn a single member + + 13 + input + warn_mod_day + + 3 + + + 1 + 11 + + 1 + + 1 + warnsetup + 0 + + + + 153 + Global Moderators can ban via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_ban + + 1 + + + 1 + 12 + Global Moderator Permissions + 0 + + 1 + warnsetup + 0 + + + + 154 + Global Moderators can mod queue members via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_modq + + 1 + + + 1 + 13 + + 0 + + 1 + warnsetup + 0 + + + + 155 + Global Moderators can remove post rights via warn panel? + Admins can automatically do this via the warn panel. + 13 + yes_no + warn_gmod_post + + 1 + + + 1 + 14 + + 0 + + 1 + warnsetup + 0 + + + + 156 + Number of times per day a global moderator can warn a single member + + 13 + input + warn_gmod_day + + 3 + + + 1 + 15 + + 1 + + 1 + warnsetup + 0 + \ No newline at end of file diff --git a/upload/upgrade/upg_21004/version_upgrade.php b/upload/upgrade/upg_21004/version_upgrade.php index e079ddfa..00575652 100644 --- a/upload/upgrade/upg_21004/version_upgrade.php +++ b/upload/upgrade/upg_21004/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '21004'; var $upgrade_from = '21003'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -77,82 +71,31 @@ class version_upgrade /*-------------------------------------------------------------------------*/ function auto_run() - { - //-------------------------------- - // What are we doing? - // sql => DONE - //-------------------------------- - - switch( $this->ipsclass->input['workact'] ) - { - case 'sql': - $this->upgrade_sql(); - break; - default: - $this->upgrade_intro(); - break; - } - } - - - /*-------------------------------------------------------------------------*/ - // SQL: 0 - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - $man = intval( $this->ipsclass->input['man'] ); - $SQL = array(); - $file = '_updates.php'; - $cnt = 0; - - if ( file_exists( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ) ) - { - require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); - - foreach( $SQL as $q ) - { - $q = str_replace( "<%time%>", time(), $q ); - - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); - } - - /*-------------------------------------------------------------------------*/ - // INTRO - /*-------------------------------------------------------------------------*/ - - function upgrade_intro() { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} -

      - +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step} +
      +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } $this->ipsclass->template->output(); - } + } diff --git a/upload/upgrade/upg_21005/mysql_updates.php b/upload/upgrade/upg_21005/mysql_updates.php index 431b7bec..be288bd4 100644 --- a/upload/upgrade/upg_21005/mysql_updates.php +++ b/upload/upgrade/upg_21005/mysql_updates.php @@ -7,7 +7,7 @@ $SQL[] = "DELETE FROM ibf_conf_settings WHERE conf_key='max_poll_questions' AND $SQL[] = "DELETE FROM ibf_conf_settings WHERE conf_key IN( 'poll_disable_noreply', 'chat04_who_save', 'chat04_whodat_server_addr' );"; $SQL[] = "UPDATE ibf_conf_settings SET conf_group=12 WHERE conf_key='smtp_pass';"; $SQL[] = "UPDATE ibf_conf_settings SET conf_group=21 WHERE conf_key='chat04_default_lang';"; -$SQL[] = "UPDATE ibf_conf_settings SET conf_group=5, conf_position=15 WHERE conf_key='max_h_flash';"; +$SQL[] = "UPDATE ibf_conf_settings SET conf_group=5, conf_position=43 WHERE conf_key='max_h_flash';"; $SQL[] = "DELETE FROM ibf_components WHERE com_filename='registration';"; $SQL[] = "UPDATE ibf_components SET com_section='chatpara', com_filename='chatpara' where com_filename='chat';"; $SQL[] = "ALTER TABLE ibf_member_extra CHANGE icq_number icq_number varchar(40) NOT NULL default '';"; diff --git a/upload/upgrade/upg_21005/version_upgrade.php b/upload/upgrade/upg_21005/version_upgrade.php index fb0adc88..eaf40b52 100644 --- a/upload/upgrade/upg_21005/version_upgrade.php +++ b/upload/upgrade/upg_21005/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '21005'; var $upgrade_from = '21004'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -110,17 +105,33 @@ class version_upgrade { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } /*-------------------------------------------------------------------------*/ @@ -131,27 +142,27 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} -

      - +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step} +
      +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } $this->ipsclass->template->output(); - } + } } diff --git a/upload/upgrade/upg_21006/components.php b/upload/upgrade/upg_21006/components.php index 48517b66..92151cd2 100644 --- a/upload/upgrade/upg_21006/components.php +++ b/upload/upgrade/upg_21006/components.php @@ -474,7 +474,7 @@ ul#help{ .wrapmini{ float: left; line-height: 1.5em; - width: 30%; + width: 25%; } .pagelinks{ diff --git a/upload/upgrade/upg_21006/ipb_settings_partial.xml b/upload/upgrade/upg_21006/ipb_settings_partial.xml index 4dbbec58..8878eb0a 100644 --- a/upload/upgrade/upg_21006/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21006/ipb_settings_partial.xml @@ -1,10 +1,10 @@ - + 340 - - ????????????, ??????????? ?? ?? ????? ???????????? ??? ??????????? ?? ??????. ??? ?????????, ????? ???????????? ?? ?????????? ?????? ???????????.]]> + + 18 yes_no auth_allow_dnames @@ -14,7 +14,7 @@ 1 1 - ????????? ????????????? ????? + Display Name Set-Up 0 1 @@ -23,34 +23,37 @@ 185 - ????? ??? ?????? ????????????? -

      ]]>
      + Type of search to use? + +
      +]]>
      19 dropdown search_sql_method man - ftext=?????????????? -man=??????? + ftext=Full Text +man=Manual ipsclass->admin->get_mysql_version(); if ( $this->ipsclass->mysql_version < 32323 ) { - $full_text = "?????????????? ????? ?????????? ?? ????? ???????."; + $full_text = "FULL TEXT SEARCHING IS NOT AVAILABLE ON YOUR SERVER."; } else { - $full_text = "?????????????? ????? ????????"; + $full_text = "Full text available"; } if ( ! $this->ipsclass->admin->get_fulltextindex_status() ) { - $index = "??????? ??????????????? ?????? ?? ???????: Build indexes now!"; + $index = "NO FULL TEXT INDEXES FOUND: Build indexes now!"; } else { - $index = "??????? ??????????????? ?????? ???????"; + $index = "Full text indexes found"; } $r['conf_description'] = str_replace( "", $full_text, $r['conf_description'] ); @@ -67,8 +70,8 @@ man=??????? 343 - ????????? ???????????? ????? ?? ????????? ???? ???????????? - + Prohibit Display Names from selecting Log In names + 18 yes_no auth_dnames_nologinname @@ -83,349 +86,23 @@ man=??????? 1 converge - - - - ????????? ??????? ?????? - ??????? ???????? ?????????, ? ??????? ????? ???????????? ??? HTML ???????? ??????. - 1 - input - gb_char_set - - windows-1251 - - - 1 - 7 - - 0 - - 1 - general - - - - ??????????? ????? ?? ??????? ????? ????? - ??????, ???????????? ??? ?????????? ????? ?? ??????? ????? ? ?????? ?? ??????. - 1 - dropdown - decimal_seperator - - . - .=. -,=, - - 1 - 19 - - 1 - - 1 - general - - - - ????????? ?????????? ?????????? ??? ?????????? - ???? "??", ?? ??????? ?????????? ??? ????? ??????????? ? ?????? ?????????? ????. ???? "???", ?????????? ?????????? ????? ???????????? ? ?????? ??????? ? ??????????? ?????? 6 ?????. ??????????? ?????? ????? ????????? ?????????? ???????????? ????? ??? ??????? ???????. - 2 - yes_no - update_topic_views_immediately - - 1 - - - 1 - 3 - - 0 - - 1 - cpusaving - - - - - - 6 - yes_no - login_change_key - - 0 - - - 1 - 6 - - 0 - - 1 - securityandprivacy - - - - - - 6 - yes_no - match_ipaddress - - 1 - - - 1 - 7 - - 0 - - 1 - securityandprivacy - - - - ?????????????? ????? PHP Mail - - 12 - input - php_mail_extra - - - - - 1 - 8 - ????????? PHP Mail - 1 - - 1 - email - - - - ???????? ????? ?????????: ?????????? ??????? - ?? ??????? ?????? ? ?????? ??? ????????????? ?????? '???????? ????' ??? '???????? ????? ?????????'. ?? ?????? ???????? ????????? ???????.]]> - 19 - multi - vnp_block_forums - - - #show_forums# - - 1 - 14 - - 0 - - 1 - searchsetup - - - - ????-??????????? ???????? ?? ?????? ????? - - 3 - yes_no - time_dst_auto_correction - - 1 - - - 1 - 8 - ??????? ?? ?????? ????? (DST) - 1 - - 1 - date - - - - ??????? ?????? ????????? ??? ??????????? ???????? ???? - - 5 - input - topic_rating_needed - - 1 - - - 1 - 3 - - 0 - - 1 - topicspostsandpolls - - - - ???????????? ????? ????????? ??? - ???????????? ??????????? ????? ????????? ???. - 5 - input - topic_title_max_len - - 150 - - - 1 - 6 - - 0 - - 1 - topicspostsandpolls - - - - ????????????? ?????????????: ?????????????? ?????? - ???????????? ????????? ????? ?? ?????? ???? ????????????. - 5 - multi - cannot_ignore_groups - - 4 - #show_groups# - - 1 - 10 - - 0 - - 1 - topicspostsandpolls - - - - ???????????? ????? ????? ? ????? ????????? - ????????? ???? ?????, ?? ?????????? ????? ??????? ?????????? ????? ? ?????????, ??? ????????? ????????? «???????» ????????? ?????????. - 5 - input - max_quotes_per_post - - 10 - - - 1 - 19 - - 0 - - 1 - topicspostsandpolls - - - - - n ?????, ?? ??? ????????? ???????????? ? ????. -??????? ???-?? ?????, ? ??????? ??????? ????? ????????? ???????????. -??????? 0, ????? ????????? ?????.]]> - 5 - input - post_merge_conc - - 10 - - - 1 - 20 - - 0 - - 1 - topicspostsandpolls - - - - ???????????? ?????????? ???????? ? ????? ?????? - ??????? ???????????? ?????????? ????????, ??????? ???????????? ????? ??????? ? ????? ??????. - 5 - input - max_poll_questions - - 3 - - - 1 - 29 - - 0 - - 1 - topicspostsandpolls 1 converge - ????????? Converge - Converge - ?????? ??????? ??????????? ??? ???? ????????? ????????. ??? ????????? ????? ???? ??????????? ??? ???? IPS ?????????. + Converge Set Up + Converge is Invision Power Services central authentication method for all IPS applications. This allows you to have a single log-in for all your IPS products. 0 1 searchsetup - ????????? ??????? ?????? - + Search Set-Up + 0 - - - 1 - httpapi - IPB HTTP-API ????????? - ????????? ??? ?????????? ???????? HTTP-API - 0 - - - - 1 - portal_poll - ??????: ????? - ????????? ?????? ?????? ? ??????. - 1 - - - - 1 - portal_recent_topics - ??????: ????????? ?????????? - ????????? ?????? ????????? ?????????? ? ?????? - 1 - -
      \ No newline at end of file diff --git a/upload/upgrade/upg_21006/version_upgrade.php b/upload/upgrade/upg_21006/version_upgrade.php index 2680efd4..f2562aa8 100644 --- a/upload/upgrade/upg_21006/version_upgrade.php +++ b/upload/upgrade/upg_21006/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '21006'; var $upgrade_from = '21005'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -77,82 +71,29 @@ class version_upgrade /*-------------------------------------------------------------------------*/ function auto_run() - { - //-------------------------------- - // What are we doing? - // sql => DONE - //-------------------------------- - - switch( $this->ipsclass->input['workact'] ) - { - case 'sql': - $this->upgrade_sql(); - break; - default: - $this->upgrade_intro(); - break; - } - } - - - /*-------------------------------------------------------------------------*/ - // SQL: 0 - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - $man = intval( $this->ipsclass->input['man'] ); - $SQL = array(); - $file = '_updates.php'; - $cnt = 0; - - if ( file_exists( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ) ) - { - require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); - - foreach( $SQL as $q ) - { - $q = str_replace( "<%time%>", time(), $q ); - - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt запросов выполнено...." ); - } - - /*-------------------------------------------------------------------------*/ - // INTRO - /*-------------------------------------------------------------------------*/ - - function upgrade_intro() { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} -

      - +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step} +
      +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } $this->ipsclass->template->output(); - - } - + } } diff --git a/upload/upgrade/upg_21007/ipb_settings_partial.xml b/upload/upgrade/upg_21007/ipb_settings_partial.xml index 23cca426..620f613b 100644 --- a/upload/upgrade/upg_21007/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21007/ipb_settings_partial.xml @@ -1,10 +1,11 @@ - + 245 - IPB ??????????????? ???? - ?? ???????? ? ?? ????????? ???? ????, ???? ?? ?? 100% ?? ??????? ? ???, ??? ?? ???????! + IPB Registered Licence Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> 24 input ipb_reg_number @@ -20,11 +21,11 @@ 1 ipbreg - + 243 - ?????????? ?????????? ? ???, ?? ???? ??????????????? ??? IPB? - + Display registered to line? + 24 yes_no ipb_reg_show @@ -43,8 +44,8 @@ 244 - - ???????: ???? ?????? ??? ???????? Invision Power Services + Show as licensed to... + Matthew Mecham, IPS, Inc.]]> 24 input ipb_reg_name @@ -63,8 +64,8 @@ 330 - ????????? ????????????? ???????????? Rich Text ????????? - + Allow members to use Rich Text Editing? + 5 yes_no posting_allow_rte @@ -74,7 +75,7 @@ 1 100 - ????????? ????????? + Editor Settings 0 1 @@ -83,8 +84,8 @@ 348 - - + + 5 input rte_width @@ -103,8 +104,8 @@ 349 - - + + 5 input rte_pm_width @@ -124,16 +125,16 @@ 1 ipbreg - IPB ???????? - ????????? ????????????? ????????? ????????. + IPB Licence Settings + This section will allow you to edit your IPB registered licence settings. 0 1 topicspostsandpolls - ????, ????????? ? ?????? - ?????? ????? ??? ????????? ?????????? ??????????? ???, ? ??? ?? ??????????? ??? ???????? ?????????, ???????. + Topics, Posts and Polls + These options control various elements when posting, reading topics and reading polls. 0 diff --git a/upload/upgrade/upg_21007/version_upgrade.php b/upload/upgrade/upg_21007/version_upgrade.php index 5ce9efea..7428a81d 100644 --- a/upload/upgrade/upg_21007/version_upgrade.php +++ b/upload/upgrade/upg_21007/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '21007'; var $upgrade_from = '21006'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -110,13 +105,22 @@ class version_upgrade { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -171,8 +175,15 @@ class version_upgrade $api->acp_component_update( 'chatpara', $fields ); } - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$title_deleted_count одинаковых настроек групп удалено и $cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", + "$title_deleted_count duplicate setting groups removed and $cnt queries run...." ); + } } /*-------------------------------------------------------------------------*/ @@ -183,27 +194,27 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} -

      - +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step} +
      +

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      +
      Modules to run after this module: {$this->mod_to_run}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } $this->ipsclass->template->output(); - } + } } diff --git a/upload/upgrade/upg_21008/ipb_settings_partial.xml b/upload/upgrade/upg_21008/ipb_settings_partial.xml index 35de9c75..707a3955 100644 --- a/upload/upgrade/upg_21008/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21008/ipb_settings_partial.xml @@ -1,16 +1,16 @@ - + 199 - ????????? ??????? ???? ?...? + Load the chat room in...? 20 dropdown chat_display self - self=?????????? IPB ???????? + self=Normal IPB Page 1 9 @@ -19,18 +19,18 @@ 1 chat - + 213 - ????????? ??????? ???? ?...? + Load the chat room in...? 21 dropdown chat04_display self - self=?????????? IPB ???????? + self=Normal IPB Page 1 12 @@ -39,24 +39,23 @@ 1 chat04 - + 1 chat - Invision Chat ????????? (Legacy Version) - ???? ????? ????????? ???????? ??? Invision Chat. + Invision Chat Settings (Legacy Version) + This will allow you to customize your Invision Chat integration settings for the legacy edition. 1 1 chat04 - Invision Chat ????????? - ???? ????? ????????? ???????? ??? Invision Chat ?????? 2004 ????. + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition 1 - \ No newline at end of file diff --git a/upload/upgrade/upg_21008/mysql_updates.php b/upload/upgrade/upg_21008/mysql_updates.php index d568c915..6919377f 100644 --- a/upload/upgrade/upg_21008/mysql_updates.php +++ b/upload/upgrade/upg_21008/mysql_updates.php @@ -4,9 +4,9 @@ $SQL[] = "UPDATE ibf_conf_settings SET conf_value='self' WHERE conf_key='chat_display'"; $SQL[] = "UPDATE ibf_conf_settings SET conf_value='self' WHERE conf_key='chat04_display'"; -$SQL[] = "UPDATE ibf_conf_settings SET conf_title='Сколько раз за день модератор может ставить предупреждение одному пользователю?' WHERE conf_key='warn_mod_day'"; +$SQL[] = "UPDATE ibf_conf_settings SET conf_title='Number of times per day moderators can warn a single member' WHERE conf_key='warn_mod_day'"; $SQL[] = "DELETE FROM ibf_components WHERE com_filename='chatsigma'"; -$SQL[] ="INSERT INTO ibf_components (com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES ('SigmaChat', 'Invision Power Services', 'http://www.invisionpower.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:9:\"Подробнее\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatsigma', 'chatsigma', 'Модуль чата для форума', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatsigma', 5);"; - +$SQL[] = "INSERT INTO ibf_components (com_title, com_author, com_url, com_version, com_date_added, com_menu_data, com_enabled, com_safemode, com_section, com_filename, com_description, com_url_title, com_url_uri, com_position) VALUES ('SigmaChat', 'Invision Power Services', 'http://www.invisionpower.com', '2.1', 1113313895, 'a:1:{i:1;a:5:{s:9:\"menu_text\";s:24:\"Purchase and Information\";s:8:\"menu_url\";s:9:\"code=show\";s:13:\"menu_redirect\";i:0;s:12:\"menu_permbit\";s:0:\"\";s:13:\"menu_permlang\";s:0:\"\";}}', 0, 1, 'chatsigma', 'chatsigma', 'Full real-time chat system for your members', '{ipb.lang[\'live_chat\']}', '{ipb.base_url}autocom=chatsigma', 5);"; + ?> \ No newline at end of file diff --git a/upload/upgrade/upg_21008/version_upgrade.php b/upload/upgrade/upg_21008/version_upgrade.php index 6a48dcd2..627f6c0a 100644 --- a/upload/upgrade/upg_21008/version_upgrade.php +++ b/upload/upgrade/upg_21008/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.0.2 -> IPB 2.0.3 @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,10 +33,11 @@ class version_upgrade { var $this_version = '21008'; var $upgrade_from = '21007'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -110,13 +105,22 @@ class version_upgrade { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -140,8 +144,15 @@ class version_upgrade $api->acp_component_update( 'chatsigma', $fields ); } - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$title_deleted_count одинаковых настроек групп удалено и $cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", + "$title_deleted_count duplicate setting groups removed and $cnt queries run...." ); + } } /*-------------------------------------------------------------------------*/ @@ -152,25 +163,25 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } else { - $this->ipsclass->template->content .= " + $this->ipsclass->template->content .= "

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      "; } $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_21009/ipb_settings_partial.xml b/upload/upgrade/upg_21009/ipb_settings_partial.xml index 1313cf7e..66daadaa 100644 --- a/upload/upgrade/upg_21009/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21009/ipb_settings_partial.xml @@ -1,9 +1,11 @@ - + - IPB ??????????????? ???? - ?? ???????? ? ?? ????????? ???? ????, ???? ?? ?? 100% ?? ??????? ? ???, ??? ?? ???????! + 109 + IPB Registered License Key + DO NOT REMOVE OR EDIT THIS KEY UNLESS YOU'RE SURE OF WHAT YOU'RE DOING!]]> 15 input ipb_reg_number @@ -20,106 +22,13 @@ ipbreg - - ?? ????? ??????? ?????????????? ???????? - ?? ?????? ???????? ????????? ???????. - 20 - multi - recent_topics_article_forum - - - #show_forums# - - 1 - 3 - - 0 - - 0 - portal_recent_topics - - - - ?????????? ???????? ??? ??????????? - - 20 - input - recent_topics_article_max - - 15 - - - 1 - 4 - ????????? ??????? - 1 - - 0 - portal_recent_topics - - - - ?????????? ???????????? ??? - - 20 - input - recent_topics_discuss_number - - 1 - - - 1 - 9 - ????????? ?????????? - 0 - - 0 - portal_recent_topics - - - - ??????? URL ???? ? ????????????? ??????? - ???????? ??????, ???? ?? ??????, ????? ??????????? ???? ? ??????? - 19 - input - poll_poll_url - - - - - 1 - 17 - - 0 - - 0 - portal_poll - - 1 ipbreg - IPB ???????? - ????????? ????????????? ????????? ????????. + IPB License Settings + This section will allow you to edit your IPB registered license settings. 0 - \ No newline at end of file diff --git a/upload/upgrade/upg_21009/mysql_updates.php b/upload/upgrade/upg_21009/mysql_updates.php index bbed4cd8..208ecde1 100644 --- a/upload/upgrade/upg_21009/mysql_updates.php +++ b/upload/upgrade/upg_21009/mysql_updates.php @@ -5,7 +5,7 @@ $SQL[] = "ALTER TABLE ibf_forums ADD topicfilter VARCHAR( 32 ) DEFAULT 'all' NOT $SQL[] = "UPDATE ibf_forums SET topicfilter='all' WHERE topicfilter != 'all'"; $SQL[] = "ALTER TABLE ibf_message_topics ADD mt_addtosent TINYINT( 1 ) DEFAULT '0' NOT NULL AFTER mt_tracking"; -$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_title='IPB Лицензия', conf_title_desc='Позволяет редактировать настройки лицензии.' WHERE conf_title_keyword='ipbreg'"; +$SQL[] = "UPDATE ibf_conf_settings_titles SET conf_title_title='IPB License Settings', conf_title_desc='This section will allow you to edit your IPB registered license settings.' WHERE conf_title_keyword='ipbreg'"; $SQL[] = "ALTER TABLE ibf_cal_events ADD event_timeset VARCHAR( 6 ) DEFAULT '0' NOT NULL AFTER event_tz"; @@ -13,22 +13,23 @@ $SQL[] = "ALTER TABLE ibf_rss_import ADD rss_import_auth TINYINT( 1 ) DEFAULT '0 ADD rss_import_auth_user VARCHAR( 255 ) DEFAULT 'Not Needed' NOT NULL, ADD rss_import_auth_pass VARCHAR( 255 ) DEFAULT 'Not Needed' NOT NULL"; -/*$UPDATES[] = "UPDATE ibf_faq SET title='Registration benefits', text='To be able to use all the features on this board, the administrator will probably require that you register for a member account. Registration is free and only takes a moment to complete.\r
      \r
      During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail. \r
      \r
      In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.\r
      \r
      Once you have registered and logged in, you will have access to your personal messenger and your control panel.\r
      \r
      For more information on these items, please see the relevant sections in this documentation.', description='How to register and the added benefits of being a registered member.' WHERE id=1"; -$UPDATES[] = "UPDATE ibf_faq SET title='Cookies and cookie usage', text='Using cookies is optional, but strongly recommended. Cookies are used to track topics, showing you which topics have new replies since your last visit and to automatically log you in when you return.\r
      \r
      If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.\r
      \r
      Clearing Cookies\r
      \r
      You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.\r
      \r
      Removing Cookies in Internet Explorer for Windows\r
      \r
        \r
      • Close all open Internet Explorer Windows\r
      • Click on the \'start\' button\r
      • Move up to \'Find\' and click on \'Files and Folders\'\r
      • When the new window appears, type in the domain name of the board you are using into the \'containing text\' field. (If the boards address was \'http://www.invisionboard.com/forums/index.php\' you would enter \'invisionboard.com\' without the quotes)\r
      • In the \'look in\' box, type in C:WindowsCookies and press \'Find Now\'\r
      • After it has finished searching, highlight all files (click on a file then press CTRL+A) and delete them.\r
      \r
      \r
      Removing Cookies in Internet Explorer for Macintosh\r
      \r
        \r
      • With Internet Explorer active, choose \'Edit\' and then \'Preferences\' from the Macintosh menu bar at the top of the screen\r
      • When the preferences panel opens, choose \'Cookies\' found in the \'Receiving Files\' section.\r
      • When the cookie pane loads, look for the domain name of the board (If the boards address was \'http://www.invisionboard.com/forums/index.php\' look for \'invisionboard.com\' or \'www.invisionboard.com\'\r
      • For each cookie, click on the entry and press the delete button.\r
      \r
      \r
      Your cookies should now be removed. In some cases you may need to restart your computer for the changes to take effect.', description='The benefits of using cookies and how to remove cookies set by this board.' WHERE id=2"; -$UPDATES[] = "UPDATE ibf_faq SET title='Recovering lost or forgotten passwords', text='Security is a big feature on this board, and to that end, all passwords are encrypted when you register.\r
      This means that we cannot email your password to you as we hold no record of your \'uncrypted\' password. You can however, apply to have your password reset.\r
      \r
      To do this, click on the Lost Password link found on the log in page.\r
      \r
      Further instruction is available from there.', description='How to reset your password if you\'ve forgotten it.' WHERE id=3"; -$UPDATES[] = "UPDATE ibf_faq SET title='Your Control Panel (My Controls)', text='Your control panel is your own private board console. You can change how the board looks and feels as well as your own information from here.\r
      \r
      Subscriptions\r
      \r
      This is where you manage your topic and forums subscriptions. Please see the help file \'Email Notification of new messages\' for more information on how to subscribe to topics.\r
      \r
      Edit Profile Info\r
      \r
      This section allows you to add or edit your contact information and enter some personal information if you choose.\r
      \r
      Edit Signature\r
      \r
      A board \'signature\' is very similar to an email signature. This signature is attached to the foot of every message you post unless you choose to check the box that allows you to ommit the signature in the message you are posting. You may use BB Code if available and in some cases, pure HTML (if the board administrator allows it).\r
      \r
      Edit Avatar Settings\r
      \r
      An avatar is a little image that appears under your username when you view a topic or post you authored. If the administrator allows, you may either choose from the board gallery, enter a URL to an avatar stored on your server or upload an avatar to use. You may also set the width of the avatar to ensure that it\'s sized in proportion.\r
      \r
      Change Personal Photo\r
      \r
      This section will allow you to add a photograph to your profile. This will be displayed when a user clicks to view your profile, on the mini-profile screen and will also be linked to from the member list.\r
      \r
      Email Settings\r
      \r
      Hide my email address allows you to deny the ability for other users to send you an email from the board.\r
      Send me updates sent by the board administrator will allow the administrator to include your email address in any mailings they send out - this is used mostly for important updates and community information.\r
      Include a copy of the post when emailing me from a subscribed topic, this allows you to have the new post included in any reply to topic notifications.\r
      Send a confirmation email when I receive a new private message, this will send you an e-mail notification to your registered e-mail address each time you receive a private message on the board.\r
      Enable \'Email Notification\' by default?, this will automatically subscribe you to any topic that you make a reply to. You may unsubscribe from the \'Subscriptions\' section of My Controls if you wish.\r
      \r
      Board Settings\r
      \r
      From this section, you can set your time zone, choose to not see users signatures, avatars and posted images.\r
      You can choose to get a pop up window informing you when you have a new message and choose to show or hide the \'Fast Reply\' box where it is enabled.\r
      You are also able to choose display preferences for the number of topics/posts shown per page on the board.\r
      \r
      Change Email Address\r
      \r
      At any time, you can change the email address that is registered to your account. In some cases, you will need to revalidate your account after changing your email address. If this is the case, you will be notified before your email address change is processed.\r
      \r
      Change Password\r
      \r
      You may change your password from this section. Please note that you will need to know your current password before you can change your password.', description='Editing contact information, personal information, avatars, signatures, board settings, languages and style choices.' WHERE id=4"; -$UPDATES[] = "UPDATE ibf_faq SET title='Email Notification of new messages', text='This board can notify you when a new reply is added to a topic. Many users find this useful to keep up to date on topics without the need to view the board to check for new messages.\r
      \r
      There are three ways to subscribe to a topic:\r
        \r
      • Click the \'Track This Topic\' link at the top of the topic that you wish to track
      • \r
      • On the posting screen when replying to or creating a topic, check the \'Enable email notification of replies?\' checkbox
      • \r
      • From the E-Mail settings section of your User CP (My Controls) check the \'Enable Email Notification by default?\' option, this will automatically subscribe you to any topic that you make a reply to
      • \r
      Please note that to avoid multiple emails being sent to your email address, you will only get one e-mail for each topic you are subscribed to until the next time you visit the board.\r
      \r
      You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click the \'Subscribe to this forum\' link at the bottom of the forum that you wish to subscribe to.\r
      \r
      To unsubscribe from any forums or topics that you are subscribed to - just go to the \'Subscriptions\' section of \'My Controls\' and you can do thi from there.', description='How to get emailed when a new reply is added to a topic.' WHERE id=5"; -$UPDATES[] = "UPDATE ibf_faq SET title='Your Personal Messenger', text='Your personal messenger acts much like an email account in that you can send and receive messages and store messages in folders.\r
      \r
      Compose a New PM\r
      \r
      This will allow you to send a message to another member. If you have names in your contact list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a \'PM\' button on the board (from the member list or a post). If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line.\r
      If the administrator allows, you may use BB Code and HTML in your private message. If you choose to check the \'Add a copy of this message to you sent items folder\' box, a copy of the message will be saved for you for later reference. If you tick the \'Track this message?\' box, then the details of the message will be available in your \'Message Tracker\' where you will be able to see if/when it has been read.\r
      \r
      \r
      \r
      Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.\r
      \r
      Empty PM Folders\r
      \r
      This option provides you with a quick and easy way to clear out all of your PM folders.\r
      \r
      Edit Storage Folders\r
      \r
      You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove \'Sent Items\' or \'Inbox\'.\r
      \r
      PM Buddies/Block List\r
      \r
      You may add in users names in this section, or edit any saved entries. You can also use this as a ban list, denying the named member the ability to message you.\r
      Names entered in this section will appear in the drop down list when sending a new PM, allowing you to quickly choose the members name when sending a message.\r
      \r
      Archive Messages\r
      \r
      If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft © Excel Format. This page is then emailed to your registered email address for your convenience.\r
      \r
      Saved (Unsent) PMs\r
      \r
      This area will allow you to go back to any PM\'s that you have chosen to save to be sent later.\r
      \r
      Message Tracker\r
      \r
      This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.', description='How to send personal messages, track them, edit your messenger folders and archive stored messages.' WHERE id=6"; -$UPDATES[] = "UPDATE ibf_faq SET title='Contacting the moderating team & reporting posts', text='Contacting the moderating team\r
      \r
      If you need to contact a moderator or simply wish to view the complete administration team, you can click the link \'The moderating team\' found at the bottom of the main board page (the first page you see when visiting the board), or from \'My Assistant\'.\r
      \r
      This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.\r
      \r
      If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.\r
      \r
      Reporting a post\r
      \r
      If the administrator has enabled this function on the board, you\'ll see a \'Report\' button in a post, next to the \'Quote\' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn\'t a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.', description='Where to find a list of the board moderators and administrators.' WHERE id=7"; -$UPDATES[] = "UPDATE ibf_faq SET title='Viewing members profile information', text='You can view a members profile at any time by clicking on their name when it is underlined (as a link) or by clicking on their name in a post within a topic.\r
      \r
      This will show you their profile page which contains their contact information (if they have entered some) and their \'active stats\'.\r
      \r
      You can also click on the \'Mini Profile\' button underneath their posts, this will show up a mini \'e-card\' with their contact information and a photograph if they have chosen to have one.', description='How to view members contact information.' WHERE id=8"; -$UPDATES[] = "UPDATE ibf_faq SET title='Viewing active topics and new posts', text='You can view which new topics have new replies today by clicking on the \'Today\'s Active Topics\' link found at the bottom of the main board page (the first page you see when visiting the board). You can set your own date criteria, choosing to view all topics with new replies during several date choices.\r
      \r
      The \'View New Posts\' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.', description='How to view all the topics which have a new reply today and the new posts made since your last visit.' WHERE id=9"; -$UPDATES[] = "UPDATE ibf_faq SET title='Searching Topics and Posts', text='The search feature is designed to allow you to quickly find topics and posts that contain the keywords you enter.\r
      \r
      There are two types of search form available, simple search and advanced search. You may switch between the two using the \'More Options\' and \'Simple Mode\' buttons.\r
      \r
      Simple Mode\r
      \r
      All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.\r
      \r
      Advanced Mode\r
      \r
      The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.\r
      \r
      If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.\r
      \r
      There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.', description='How to use the search feature.' WHERE id=10"; -$UPDATES[] = "UPDATE ibf_faq SET title='Logging in and out', text='If you have chosen not to remember your log in details in cookies, or you are accessing the board on another computer, you will need to log into the board to access your member profile and post with your registered name.\r
      \r
      When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.\r
      \r
      You can also choose to hide - this will keep your name from appearing in the active users list.\r
      \r
      Logging out is simply a matter of clicking on the \'Log Out\' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the \'Cookies\' help file for more information.', description='How to log in and out from the board and how to remain anonymous and not be shown on the active users list.' WHERE id=11"; -$UPDATES[] = "UPDATE ibf_faq SET title='My Assistant', text='This feature is sometimes referred to as a \'Browser Buddy\'. \r
      \r
      At the top it tells you how many posts have been made since you last visited the board.. Also underneath this the number of posts with replies that have been made in topics that the individual has also posted in.\r
      Click on the \'View\' link on either of the two sentences to see the posts.\r
      \r
      The next section is five links to useful features:\r
        \r
      • The link to the moderating team is basically a quick link to see all those that either administrate or moderate certain forums on the message board.
      • \r
      • The link to \'Today\'s Active Topics\' shows you all the topics that have been created in the last 24 hours on the board.
      • \r
      • Today\'s Top 10 Posters link shows you exactly as the name suggests. It shows you the amount of posts by the members and also their total percentage of the total posts made that day.
      • \r
      • The overall Top 10 Posters link shows you the top 10 posters for the whole time that the board has been installed.
      • \r
      • My last 10 posts links to the latest topics that you have made on the board. These are shortened on the page, to save space, and are linked to if you require to read more of them.
      • \r
      The two search features allow you to search the whole board for certain words in a whole topic. It isn\'t as featured as the normal search option so it is not as comprehensive.\r
      \r
      The Help Search is just as comprehensive as the normal help section\'s search function and allows for quick searching of all the help topics on the board.', description='A comprehensive guide to use this handy little feature.' WHERE id=12"; -$UPDATES[] = "UPDATE ibf_faq SET title='Posting', text='There are three different posting screens available. The new topic button, visible in forums and in topics allows you to add a new topic to that particular forum. The new poll button (if the admin has enabled it) will also be viewable in topics and forums allowing you to create a new poll in the forum. When viewing a topic, there will be an add reply button, allowing you to add a new reply onto that particular topic. \r\n
      \r\n
      Posting new topics and replying\r\n
      \r\n
      When making a post, you will most likely have the option to use IBF code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the \'BB Code Help\' link under the emoticon box to launch the help window.\r\n
      \r\n
      On the left of the text entry box, there is the clickable emoticons box - you can click on these to add them to the content of your message (these are sometimes known as \'smilies\').\r\n
      \r\n
      There are three options available when making a post or a reply. \'Enable emoticons?\' if this is unchecked, then any text that would normally be converted into an emoticon will not be. \'Enable signature?\' allows you to choose whether or not you would like your signature to appear on that individual post. \'Enable email notification of replies?\' ticking this box will mean that you will receive e-mail updates to the topic, see the \'Email Notification of new messages\' help topic for more information on this.\r\n
      \r\n
      You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic.\r\n
      \r\n
      If the admin has enabled it, you will also see a file attachments option, this will allow you to attach a file to be uploaded when making a post. Click the browse button to select a file from your computer to be uploaded. If you upload an image file, it may be shown in the content of the post, all other file types will be linked to.\r\n
      \r\n
      Poll Options\r\n
      \r\n
      If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left.\r\n
      \r\n
      Quoting Posts\r\n
      \r\n
      Displayed below each post in a topic, there is a \'Quote\' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted.\r\n
      \r\n
      Editing Posts\r\n
      \r\n
      Above any posts that you have made, you may see an \'Edit\' button. Pressing this will allow you to edit the post that you had previously made. \r\n
      \r\n
      When editing you may see an option to \'Add the \'Edit by\' line in this post?\'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post.\r\n
      \r\n
      If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired.\r\n
      \r\n
      Fast Reply\r\n
      \r\n
      Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the \'More Options\' button will take you to the normal posting screen.', description='A guide to the features avaliable when posting on the boards.' WHERE id=13"; -$UPDATES[] = "UPDATE ibf_faq SET title='Member List', text='The member list, accessed via the \'Members\' link at the top of each page, is basically a listing of all of the members that have registered on the board. \r\n
      \r\n
      If you are looking to search for a particular member by all/part of their username, then in the drop down box at the bottom of the page, change the selection from \'Search All Available\' to \'Name Begins With\' or \'Name Contains\' and input all/part of their name in the text input field and press the \'Go!\' button. \r\n
      \r\n
      Also, at the bottom of the member list page, there are a number of sorting options available to alter the way in which the list is displayed. \r\n
      \r\n
      If a member has chosen to add a photo to their profile information, then a camera icon will appear next to their name, and you may click this to view the photo.', description='Explaining the different ways to sort and search through the list of members.' WHERE id=14"; -$UPDATES[] = "UPDATE ibf_faq SET title='Topic Options', text='At the bottom of each topic, there is a \'Topic Options\' button. Pressing this button will expand the topic options box. \r
      \r
      From this box, you can select from the following options: \r
        \r
      • Track this topic - this option will allow you to receive e-mail updates for the topic, see the \'Email Notification of new messages\' help file for more information on this
      • \r
      • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages\' help file for more information on this
      • \r
      • Download / Print this Topic - will show the topic in a number of different formats. \'Printer Friendly Version\' will display a version of the topic that is suitable for printing out. \'Download HTML Version\' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. \'Download Microsoft Word Version\' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.
      • \r
      ', description='A guide to the options avaliable when viewing a topic.' WHERE id=15"; -$UPDATES[] = "UPDATE ibf_faq SET title='Calendar', text='This board features it\'s very own calendar feature, which can be accessed via the calendar link at the top of the board.\r
      \r
      You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the \'Add New Event\' button to be taken to the event posting screen. There are three types of events that you can now add:\r
        \r
      • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.
      • \r
      • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.
      • \r
      • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.
      • \r
      If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.\r
      \r
      Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.', description='More information on the boards calendar feature.' WHERE id=16"; -*/ + +$UPDATES[] = "UPDATE ibf_faq SET title='Registration benefits', text='To be able to use all the features on this board, the administrator will probably require that you register for a member account. Registration is free and only takes a moment to complete.\r
      \r
      During registration, the administrator requires that you supply a valid email address. This is important as the administrator may require that you validate your registration via an email. If this is the case, you will be notified when registering. If your e-mail does not arrive, then on the member bar at the top of the page, there will be a link that will allow you to re-send the validation e-mail. \r
      \r
      In some cases, the administrator will need to approve your registration before you can use your member account fully. If this is the case you will be notified during registration.\r
      \r
      Once you have registered and logged in, you will have access to your personal messenger and your control panel.\r
      \r
      For more information on these items, please see the relevant sections in this documentation.', description='How to register and the added benefits of being a registered member.' WHERE id=1"; +$UPDATES[] = "UPDATE ibf_faq SET title='Cookies and cookie usage', text='Using cookies is optional, but strongly recommended. Cookies are used to track topics, showing you which topics have new replies since your last visit and to automatically log you in when you return.\r
      \r
      If your computer is unable to use the cookie system to browse the board correctly, then the board will automatically add in a session ID to each link to track you around the board.\r
      \r
      Clearing Cookies\r
      \r
      You can clear the cookies at any time by clicking on the link found at the bottom of the main board page (the first page you see when returning to the board). If this does not work for you, you may need to remove the cookies manually.\r
      \r
      Removing Cookies in Internet Explorer for Windows\r
      \r
        \r
      • Close all open Internet Explorer Windows\r
      • Click on the \'start\' button\r
      • Move up to \'Find\' and click on \'Files and Folders\'\r
      • When the new window appears, type in the domain name of the board you are using into the \'containing text\' field. (If the boards address was \'http://www.invisionboard.com/forums/index.php\' you would enter \'invisionboard.com\' without the quotes)\r
      • In the \'look in\' box, type in C:WindowsCookies and press \'Find Now\'\r
      • After it has finished searching, highlight all files (click on a file then press CTRL+A) and delete them.\r
      \r
      \r
      Removing Cookies in Internet Explorer for Macintosh\r
      \r
        \r
      • With Internet Explorer active, choose \'Edit\' and then \'Preferences\' from the Macintosh menu bar at the top of the screen\r
      • When the preferences panel opens, choose \'Cookies\' found in the \'Receiving Files\' section.\r
      • When the cookie pane loads, look for the domain name of the board (If the boards address was \'http://www.invisionboard.com/forums/index.php\' look for \'invisionboard.com\' or \'www.invisionboard.com\'\r
      • For each cookie, click on the entry and press the delete button.\r
      \r
      \r
      Your cookies should now be removed. In some cases you may need to restart your computer for the changes to take effect.', description='The benefits of using cookies and how to remove cookies set by this board.' WHERE id=2"; +$UPDATES[] = "UPDATE ibf_faq SET title='Recovering lost or forgotten passwords', text='Security is a big feature on this board, and to that end, all passwords are encrypted when you register.\r
      This means that we cannot email your password to you as we hold no record of your \'uncrypted\' password. You can however, apply to have your password reset.\r
      \r
      To do this, click on the Lost Password link found on the log in page.\r
      \r
      Further instruction is available from there.', description='How to reset your password if you\'ve forgotten it.' WHERE id=3"; +$UPDATES[] = "UPDATE ibf_faq SET title='Your Control Panel (My Controls)', text='Your control panel is your own private board console. You can change how the board looks and feels as well as your own information from here.\r
      \r
      Subscriptions\r
      \r
      This is where you manage your topic and forums subscriptions. Please see the help file \'Email Notification of new messages\' for more information on how to subscribe to topics.\r
      \r
      Edit Profile Info\r
      \r
      This section allows you to add or edit your contact information and enter some personal information if you choose.\r
      \r
      Edit Signature\r
      \r
      A board \'signature\' is very similar to an email signature. This signature is attached to the foot of every message you post unless you choose to check the box that allows you to ommit the signature in the message you are posting. You may use BB Code if available and in some cases, pure HTML (if the board administrator allows it).\r
      \r
      Edit Avatar Settings\r
      \r
      An avatar is a little image that appears under your username when you view a topic or post you authored. If the administrator allows, you may either choose from the board gallery, enter a URL to an avatar stored on your server or upload an avatar to use. You may also set the width of the avatar to ensure that it\'s sized in proportion.\r
      \r
      Change Personal Photo\r
      \r
      This section will allow you to add a photograph to your profile. This will be displayed when a user clicks to view your profile, on the mini-profile screen and will also be linked to from the member list.\r
      \r
      Email Settings\r
      \r
      Hide my email address allows you to deny the ability for other users to send you an email from the board.\r
      Send me updates sent by the board administrator will allow the administrator to include your email address in any mailings they send out - this is used mostly for important updates and community information.\r
      Include a copy of the post when emailing me from a subscribed topic, this allows you to have the new post included in any reply to topic notifications.\r
      Send a confirmation email when I receive a new private message, this will send you an e-mail notification to your registered e-mail address each time you receive a private message on the board.\r
      Enable \'Email Notification\' by default?, this will automatically subscribe you to any topic that you make a reply to. You may unsubscribe from the \'Subscriptions\' section of My Controls if you wish.\r
      \r
      Board Settings\r
      \r
      From this section, you can set your time zone, choose to not see users signatures, avatars and posted images.\r
      You can choose to get a pop up window informing you when you have a new message and choose to show or hide the \'Fast Reply\' box where it is enabled.\r
      You are also able to choose display preferences for the number of topics/posts shown per page on the board.\r
      \r
      Change Email Address\r
      \r
      At any time, you can change the email address that is registered to your account. In some cases, you will need to revalidate your account after changing your email address. If this is the case, you will be notified before your email address change is processed.\r
      \r
      Change Password\r
      \r
      You may change your password from this section. Please note that you will need to know your current password before you can change your password.', description='Editing contact information, personal information, avatars, signatures, board settings, languages and style choices.' WHERE id=4"; +$UPDATES[] = "UPDATE ibf_faq SET title='Email Notification of new messages', text='This board can notify you when a new reply is added to a topic. Many users find this useful to keep up to date on topics without the need to view the board to check for new messages.\r
      \r
      There are three ways to subscribe to a topic:\r
        \r
      • Click the \'Track This Topic\' link at the top of the topic that you wish to track
      • \r
      • On the posting screen when replying to or creating a topic, check the \'Enable email notification of replies?\' checkbox
      • \r
      • From the E-Mail settings section of your User CP (My Controls) check the \'Enable Email Notification by default?\' option, this will automatically subscribe you to any topic that you make a reply to
      • \r
      Please note that to avoid multiple emails being sent to your email address, you will only get one e-mail for each topic you are subscribed to until the next time you visit the board.\r
      \r
      You are also able to subscribe to each individual forum on the board, to be notified when a new topic is created in that particular forum. To enable this, click the \'Subscribe to this forum\' link at the bottom of the forum that you wish to subscribe to.\r
      \r
      To unsubscribe from any forums or topics that you are subscribed to - just go to the \'Subscriptions\' section of \'My Controls\' and you can do thi from there.', description='How to get emailed when a new reply is added to a topic.' WHERE id=5"; +$UPDATES[] = "UPDATE ibf_faq SET title='Your Personal Messenger', text='Your personal messenger acts much like an email account in that you can send and receive messages and store messages in folders.\r
      \r
      Compose a New PM\r
      \r
      This will allow you to send a message to another member. If you have names in your contact list, you can choose a name from it - or you may choose to enter a name in the relevant form field. This will be automatically filled in if you clicked a \'PM\' button on the board (from the member list or a post). If allowed, you may also be able to enter in multiple names in the box provided, will need to add one username per line.\r
      If the administrator allows, you may use BB Code and HTML in your private message. If you choose to check the \'Add a copy of this message to you sent items folder\' box, a copy of the message will be saved for you for later reference. If you tick the \'Track this message?\' box, then the details of the message will be available in your \'Message Tracker\' where you will be able to see if/when it has been read.\r
      \r
      \r
      \r
      Your inbox is where all new messages are sent to. Clicking on the message title will show you the message in a similar format to the board topic view. You can also delete or move messages from your inbox.\r
      \r
      Empty PM Folders\r
      \r
      This option provides you with a quick and easy way to clear out all of your PM folders.\r
      \r
      Edit Storage Folders\r
      \r
      You may rename, add or remove folders to store messages is, allowing you to organise your messages to your preference. You cannot remove \'Sent Items\' or \'Inbox\'.\r
      \r
      PM Buddies/Block List\r
      \r
      You may add in users names in this section, or edit any saved entries. You can also use this as a ban list, denying the named member the ability to message you.\r
      Names entered in this section will appear in the drop down list when sending a new PM, allowing you to quickly choose the members name when sending a message.\r
      \r
      Archive Messages\r
      \r
      If your messenger folders are full and you are unable to receive new messages, you can archive them off. This compiles the messages into a single HTML page or Microsoft © Excel Format. This page is then emailed to your registered email address for your convenience.\r
      \r
      Saved (Unsent) PMs\r
      \r
      This area will allow you to go back to any PM\'s that you have chosen to save to be sent later.\r
      \r
      Message Tracker\r
      \r
      This is the page that any messages that you have chosen to track will appear. Details of if and when they have been read by the recipient will appear here. This also gives you the chance to delete any messages that you have sent and not yet been read by the intended recipient.', description='How to send personal messages, track them, edit your messenger folders and archive stored messages.' WHERE id=6"; +$UPDATES[] = "UPDATE ibf_faq SET title='Contacting the moderating team & reporting posts', text='Contacting the moderating team\r
      \r
      If you need to contact a moderator or simply wish to view the complete administration team, you can click the link \'The moderating team\' found at the bottom of the main board page (the first page you see when visiting the board), or from \'My Assistant\'.\r
      \r
      This list will show you administrators (those who have administration control panel access), global moderators (those who can moderate in all forums) and the moderators of the individual forums.\r
      \r
      If you wish to contact someone about your member account, then contact an administrator - if you wish to contact someone about a post or topic, contact either a global moderator or the forum moderator.\r
      \r
      Reporting a post\r
      \r
      If the administrator has enabled this function on the board, you\'ll see a \'Report\' button in a post, next to the \'Quote\' button. This function will let you report the post to the forum moderator (or the administrator(s), if there isn\'t a specific moderator available). You can use this function when you think the moderator(s) should be aware of the existance of that post. However, do not use this to chat with the moderator(s)!. You can use the email function or the Personal Messenger function for that.', description='Where to find a list of the board moderators and administrators.' WHERE id=7"; +$UPDATES[] = "UPDATE ibf_faq SET title='Viewing members profile information', text='You can view a members profile at any time by clicking on their name when it is underlined (as a link) or by clicking on their name in a post within a topic.\r
      \r
      This will show you their profile page which contains their contact information (if they have entered some) and their \'active stats\'.\r
      \r
      You can also click on the \'Mini Profile\' button underneath their posts, this will show up a mini \'e-card\' with their contact information and a photograph if they have chosen to have one.', description='How to view members contact information.' WHERE id=8"; +$UPDATES[] = "UPDATE ibf_faq SET title='Viewing active topics and new posts', text='You can view which new topics have new replies today by clicking on the \'Today\'s Active Topics\' link found at the bottom of the main board page (the first page you see when visiting the board). You can set your own date criteria, choosing to view all topics with new replies during several date choices.\r
      \r
      The \'View New Posts\' link in the member bar at the top of each page, will allow you to view all of the topics which have new replies in since your last visit to the board.', description='How to view all the topics which have a new reply today and the new posts made since your last visit.' WHERE id=9"; +$UPDATES[] = "UPDATE ibf_faq SET title='Searching Topics and Posts', text='The search feature is designed to allow you to quickly find topics and posts that contain the keywords you enter.\r
      \r
      There are two types of search form available, simple search and advanced search. You may switch between the two using the \'More Options\' and \'Simple Mode\' buttons.\r
      \r
      Simple Mode\r
      \r
      All you need to do here is enter in a keyword into the search box, and select a forum(s) to search in. (to select multiple forums, hold down the control key on a PC, or the Shift/Apple key on a Mac) choose a sorting order and search.\r
      \r
      Advanced Mode\r
      \r
      The advanced search screen, will give you a much greater range of options to choose from to refine your search. In addition to searching by keyword, you are able to search by a members username or a combination of both. You can also choose to refine your search by selecting a date range, and there are a number of sorting options available. There are also two ways of displaying the search results, can either show the post text in full or just show a link to the topic, can choose this using the radio buttons available.\r
      \r
      If the administrator has enabled it, you may have a minimum amount of time to wait between searches, this is known as search flood control.\r
      \r
      There are also search boxes available at the bottom of each forum, to allow you to carry out a quick search of all of the topics within that particular forum.', description='How to use the search feature.' WHERE id=10"; +$UPDATES[] = "UPDATE ibf_faq SET title='Logging in and out', text='If you have chosen not to remember your log in details in cookies, or you are accessing the board on another computer, you will need to log into the board to access your member profile and post with your registered name.\r
      \r
      When you log in, you have the choice to save cookies that will log you in automatically when you return. Do not use this option on a shared computer for security.\r
      \r
      You can also choose to hide - this will keep your name from appearing in the active users list.\r
      \r
      Logging out is simply a matter of clicking on the \'Log Out\' link that is displayed when you are logged in. If you find that you are not logged out, you may need to manually remove your cookies. See the \'Cookies\' help file for more information.', description='How to log in and out from the board and how to remain anonymous and not be shown on the active users list.' WHERE id=11"; +$UPDATES[] = "UPDATE ibf_faq SET title='My Assistant', text='This feature is sometimes referred to as a \'Browser Buddy\'. \r
      \r
      At the top it tells you how many posts have been made since you last visited the board.. Also underneath this the number of posts with replies that have been made in topics that the individual has also posted in.\r
      Click on the \'View\' link on either of the two sentences to see the posts.\r
      \r
      The next section is five links to useful features:\r
        \r
      • The link to the moderating team is basically a quick link to see all those that either administrate or moderate certain forums on the message board.
      • \r
      • The link to \'Today\'s Active Topics\' shows you all the topics that have been created in the last 24 hours on the board.
      • \r
      • Today\'s Top 10 Posters link shows you exactly as the name suggests. It shows you the amount of posts by the members and also their total percentage of the total posts made that day.
      • \r
      • The overall Top 10 Posters link shows you the top 10 posters for the whole time that the board has been installed.
      • \r
      • My last 10 posts links to the latest topics that you have made on the board. These are shortened on the page, to save space, and are linked to if you require to read more of them.
      • \r
      The two search features allow you to search the whole board for certain words in a whole topic. It isn\'t as featured as the normal search option so it is not as comprehensive.\r
      \r
      The Help Search is just as comprehensive as the normal help section\'s search function and allows for quick searching of all the help topics on the board.', description='A comprehensive guide to use this handy little feature.' WHERE id=12"; +$UPDATES[] = "UPDATE ibf_faq SET title='Posting', text='There are three different posting screens available. The new topic button, visible in forums and in topics allows you to add a new topic to that particular forum. The new poll button (if the admin has enabled it) will also be viewable in topics and forums allowing you to create a new poll in the forum. When viewing a topic, there will be an add reply button, allowing you to add a new reply onto that particular topic. \r\n
      \r\n
      Posting new topics and replying\r\n
      \r\n
      When making a post, you will most likely have the option to use IBF code when posting. This will allow you to add various types of formatting to your messages. For more information on this, click the \'BB Code Help\' link under the emoticon box to launch the help window.\r\n
      \r\n
      On the left of the text entry box, there is the clickable emoticons box - you can click on these to add them to the content of your message (these are sometimes known as \'smilies\').\r\n
      \r\n
      There are three options available when making a post or a reply. \'Enable emoticons?\' if this is unchecked, then any text that would normally be converted into an emoticon will not be. \'Enable signature?\' allows you to choose whether or not you would like your signature to appear on that individual post. \'Enable email notification of replies?\' ticking this box will mean that you will receive e-mail updates to the topic, see the \'Email Notification of new messages\' help topic for more information on this.\r\n
      \r\n
      You also have the option to choose a post icon for the topic/post when creating one. This icon will appear next to the topic name on the topic listing in that forum, or will appear next to the date/time of the message if making a reply to a topic.\r\n
      \r\n
      If the admin has enabled it, you will also see a file attachments option, this will allow you to attach a file to be uploaded when making a post. Click the browse button to select a file from your computer to be uploaded. If you upload an image file, it may be shown in the content of the post, all other file types will be linked to.\r\n
      \r\n
      Poll Options\r\n
      \r\n
      If you have chosen to post a new poll, there will be an extra two option boxes at the top of the help screen. The first input box will allow you to enter the question that you are asking in the poll. The text field underneath is where you will input the choices for the poll. Simply enter a different option on each line. The maximum number of choices is set by the board admin, and this figure is displayed on the left.\r\n
      \r\n
      Quoting Posts\r\n
      \r\n
      Displayed below each post in a topic, there is a \'Quote\' button. Pressing this button will allow you to reply to a topic, and have the text from a particular reply quoted in your own reply. When you choose to do this, an extra text field will appear below the main text input box to allow you to edit the content of the post being quoted.\r\n
      \r\n
      Editing Posts\r\n
      \r\n
      Above any posts that you have made, you may see an \'Edit\' button. Pressing this will allow you to edit the post that you had previously made. \r\n
      \r\n
      When editing you may see an option to \'Add the \'Edit by\' line in this post?\'. If you tick this then it will show up in the posts that it has been edited and the time at which it was edited. If this option does not appear, then the edit by line will always be added to the post.\r\n
      \r\n
      If you are unable to see the edit button displayed on each post that you have made, then the administrator may have prevented you from editing posts, or the time limit for editing may have expired.\r\n
      \r\n
      Fast Reply\r\n
      \r\n
      Where it has been enabled, there will be a fast reply button on each topic. Clicking this will open up a posting box on the topic view screen, cutting down on the time required to load the main posting screen. Click the fast reply button to expand the reply box and type the post inside of there. Although the fast reply box is not expanded by default, you can choose the option to have it expanded by default, from the board settings section of your control panel. Pressing the \'More Options\' button will take you to the normal posting screen.', description='A guide to the features avaliable when posting on the boards.' WHERE id=13"; +$UPDATES[] = "UPDATE ibf_faq SET title='Member List', text='The member list, accessed via the \'Members\' link at the top of each page, is basically a listing of all of the members that have registered on the board. \r\n
      \r\n
      If you are looking to search for a particular member by all/part of their username, then in the drop down box at the bottom of the page, change the selection from \'Search All Available\' to \'Name Begins With\' or \'Name Contains\' and input all/part of their name in the text input field and press the \'Go!\' button. \r\n
      \r\n
      Also, at the bottom of the member list page, there are a number of sorting options available to alter the way in which the list is displayed. \r\n
      \r\n
      If a member has chosen to add a photo to their profile information, then a camera icon will appear next to their name, and you may click this to view the photo.', description='Explaining the different ways to sort and search through the list of members.' WHERE id=14"; +$UPDATES[] = "UPDATE ibf_faq SET title='Topic Options', text='At the bottom of each topic, there is a \'Topic Options\' button. Pressing this button will expand the topic options box. \r
      \r
      From this box, you can select from the following options: \r
        \r
      • Track this topic - this option will allow you to receive e-mail updates for the topic, see the \'Email Notification of new messages\' help file for more information on this
      • \r
      • Subscribe to this forum - will allow you to receive e-mail updates for any new topics posted in the forum, see the Notification of new messages\' help file for more information on this
      • \r
      • Download / Print this Topic - will show the topic in a number of different formats. \'Printer Friendly Version\' will display a version of the topic that is suitable for printing out. \'Download HTML Version\' will download a copy of the topic to your hard drive, and this can then be viewed in a web browser, without having to visit the board. \'Download Microsoft Word Version\' will allow you to download the file to your hard drive and open it up in the popular word processing application, Microsoft Word, for viewing offline.
      • \r
      ', description='A guide to the options avaliable when viewing a topic.' WHERE id=15"; +$UPDATES[] = "UPDATE ibf_faq SET title='Calendar', text='This board features it\'s very own calendar feature, which can be accessed via the calendar link at the top of the board.\r
      \r
      You are able to add your own personal events to the calendar - and these are only viewable by yourself. To add a new event, use the \'Add New Event\' button to be taken to the event posting screen. There are three types of events that you can now add:\r
        \r
      • A single day/one off event can be added using the first option, by just selecting the date for it to appear on.
      • \r
      • Ranged Event - is an event that spans across multiple days, to do this in addition to selecting the start date as above, will need to add the end date for the event. There are also options available to highlight the message on the calendar, useful if there is more than one ranged event being displayed at any one time.
      • \r
      • Recurring Event - is a one day event, that you can set to appear at set intervals on the calendar, either weekly, monthly or yearly.
      • \r
      If the admistrator allows you, you may also be able to add a public event, that will not just be shown to yourself, but will be viewable by everyone.\r
      \r
      Also, if the admistrator has chosen, there will be a link to all the birthdays happening on a particular day displayed on the calendar, and your birthday will appear if you have chosen to enter a date of birth in the Profile Info section of your control panel.', description='More information on the boards calendar feature.' WHERE id=16"; + ?> \ No newline at end of file diff --git a/upload/upgrade/upg_21009/version_upgrade.php b/upload/upgrade/upg_21009/version_upgrade.php index fc255eaa..d06a4001 100644 --- a/upload/upgrade/upg_21009/version_upgrade.php +++ b/upload/upgrade/upg_21009/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.1.2 -> 2.1.3 @@ -31,19 +25,19 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } - class version_upgrade { var $this_version = '21009'; var $upgrade_from = '21008'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -95,9 +89,6 @@ class version_upgrade case 'helpfiles': $this->upgrade_helpfiles(); break; - case 'skinrevert': - $this->revert_skin_changes(); - break; default: $this->upgrade_intro(); break; @@ -120,18 +111,34 @@ class version_upgrade { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $q = str_replace( "<%time%>", time(), $q ); $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } - $this->ipsclass->core->redirect( "{$this->base_url}&workact=cal", - "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "work&workact=cal" ); + } + else + { + $this->ipsclass->core->redirect( "{$this->base_url}&workact=cal", + "$cnt queries run...." ); + } } /*-------------------------------------------------------------------------*/ @@ -148,14 +155,14 @@ class version_upgrade { if( $event['event_tz'] ) { - $this->ipsclass->DB->query( "UPDATE ibf_cal_events SET event_tz=0 WHERE event_id='{$event['event_id']}'" ); + $this->ipsclass->DB->do_update( "cal_events", array( 'event_tz' => 0 ), "event_id='{$event['event_id']}'" ); $cnt++; } } } $this->ipsclass->core->redirect( "{$this->base_url}&workact=helpfiles", - "$cnt календарных событий обновлено...." ); + "$cnt calendar events updated...." ); } /*-------------------------------------------------------------------------*/ @@ -168,13 +175,14 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Вы желаете обновить файлы помощи?
      -
      Несколько файлов помощи были изменены от более ранних версий. Мы рекомендуем запустить обновление, так как для IPB 2.1.x старые файлы помощи в некоторых моментах уже не точны. - Если вы уже изменяли сами файлы помощи, то имейте ввиду, что при запуске обновления ваши изменения могут быть потеряны. - Этот шаг обновит первые 16 файлов помощи в вашей базе данных. Если вы не изменяли стандартные файлы помощи, а добавляли новые, то они не будут удалены... -

      Вы желаете обновить ваши файлы помощи? - +
      Do you wish to update your help files?
      +
      Some of the help files have changed from previous versions. If you are running a board that has been upgraded from a version prior to 2.1.0, you may optionally wish + to update your help files to reflect changes in the location of certain configuration settings and board features. If you have customized your help files, proceeding with this step WILL overwrite + those changes. This step will update the first 16 help files in your database, and the changes can not be undone. If you have not customized the default help files and/or you would like to update them now, + proceed with this step. Otherwise skip this step. +

      Do you wish to update your help files at this time? + "; $this->ipsclass->template->output(); } @@ -189,105 +197,38 @@ class version_upgrade { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); + $this->ipsclass->DB->return_die = 1; + foreach( $UPDATES as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; - } - } - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt файлов помощи обновлено...." ); - } - } - - - /*-------------------------------------------------------------------------*/ - // Revert Skin Changes - /*-------------------------------------------------------------------------*/ - - function revert_skin_changes() - { - if(! $this->ipsclass->input['do_update'] ) - { - $id = intval($this->ipsclass->input['skinid']) ? intval($this->ipsclass->input['skinid']) : 2; - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id={$id}" ) ); - if( !$default['set_skin_set_id'] ) - { - // Didn't find id 2, let's try by name - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_name='IPB Стандартный стиль'" ) ); - if( !$default['set_skin_set_id'] ) - { - // Didn't find by name either - $default = array(); - } - } - - if( count( $default ) ) - { - $this->ipsclass->template->content .= " -
      -
      Вы желаете возвратить стиль в стандартный вид (убрав все ваши изменения в нем)?
      -
      Во время обновлений часто бывают изменения в шаблонах IPB главного стиля, от которого ваши стили унаследованы. Если шаблоны вашего стиля не были изменены, они просто унаследуют изменения от шаблонов главного стиля. Для «IPB Стандартный стиль» это случится автоматически.

      - Другие стили, которые были импортированы вами, могут иметь свой собственный набор шаблонов, они могут, возможно, быть обновлены вручную. Если ваши шаблоны стиля не обновлены как положено, могут возникнуть проблемы... Например, вы можете увидеть javascript ошибки, или вы не сможете увидеть какие-то блоки, потому что они не будут найдены в ваших шаблонах... -

      - Шаблоны вашего Главного стиля будут обновлены автоматически в течение процесса обновления, однако, чтобы работало все нормально на стандартном стиле, любые изменения обязаны быть удалены. Если вы хотите сделать это вручную, вы можете пропустить этот этап, затем после обновления зайти в админцентр для удаления изменений... - Вам будет необходимо зайти в редактирование «IPB 2.1 Стандартный стиль» и выбрать «Обратить все изменения......» для измененных шаблонов. Также, система обновления может сделать это за вас.

      - Из-за различных возможностей HTML для нестандартных стилей, система обновления не сможет изменить эти стили для вас. После того, как обновление будет завершено, мы рекомендуем вам запустить утилиту «Генерировать отчет сравнения стилей...» в админцентре для определения изменений, внесенных в ваш стиль. -

      Вы желаете удалить внесенные в стиль изменения для «{$default['set_name']}»?
      (Если это не стандартный стиль, мы рекомендуем вам пропустить данный этап и обновить ваши шаблоны вручную) - - "; - } - else - { - $this->ipsclass->template->content .= "
      «IPB Стандартный стиль» не найден
      - Этот этап позволяет вам возвратить «IPB Стандартный стиль» в стандартный вид (убрать все ваши изменения в нем), это даст гарантию на то, что обновления стилей будут унаследованы должным образом. Ваш «IPB Стандартный стиль» не был найден.
      -

      - "; - } - $this->ipsclass->template->output(); - } - else - { - $man = intval( $this->ipsclass->input['man'] ); - $cnt = 0; - - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$man ) ); - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => "set_id=".$man ) ); - $outer = $this->ipsclass->DB->simple_exec(); - - if( $this->ipsclass->DB->get_num_rows($outer) ) - { - while( $r = $this->ipsclass->DB->fetch_row($outer) ) - { - if( $r['set_id'] == 1 ) + if ( $this->ipsclass->DB->error ) { - continue; + $this->error[] = $this->ipsclass->DB->error; } else { - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'suid='.$r['suid'] ) ); $cnt++; } } } - $next = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>".$man, 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) ); - if( $next['set_skin_set_id'] ) + if ( count($this->error) ) { - $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&skinid={$next['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); } else { $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); + "$cnt help files updated...." ); } } - } + } + + /*-------------------------------------------------------------------------*/ // INTRO /*-------------------------------------------------------------------------*/ @@ -296,25 +237,25 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } else { - $this->ipsclass->template->content .= " + $this->ipsclass->template->content .= "

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      "; } $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_21010/version_upgrade.php b/upload/upgrade/upg_21010/version_upgrade.php index 10455a69..e0f43848 100644 --- a/upload/upgrade/upg_21010/version_upgrade.php +++ b/upload/upgrade/upg_21010/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.1.2 -> 2.1.3 @@ -31,18 +25,19 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); -} +} class version_upgrade { var $this_version = '21010'; var $upgrade_from = '21009'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц'; + var $first_step = 'update your database to include the new schematic'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -109,170 +104,8 @@ class version_upgrade if ( file_exists( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ) ) { require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ); - - - // IBR Fix Portal Settings - - $query1 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_poll' LIMIT 0,1"); - if ( $portal_poll = $this->ipsclass->DB->fetch_row( $query1 ) ) - { - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'poll_poll_url\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt01 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_poll['conf_title_id'] ), 'conf_key=\'poll_poll_url\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Введите URL темы с импортируемым опросом', 'conf_group' => $portal_poll['conf_title_id'], 'conf_description' => 'Оставьте пустым, если не хотите, чтобы отображался блок с опросом', 'conf_type' => 'input', 'conf_key' => 'poll_poll_url', 'conf_protected' => '1', 'conf_position' => '17', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); - } - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings_titles', array( 'conf_title_keyword' => 'portal_poll', 'conf_title_title' => 'Портал: Опрос', 'conf_title_desc' => 'Настройки вывода опроса в портал.', 'conf_title_noshow' => '1' ) ); - $fix1 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_poll' LIMIT 0,1"); - if ( $pix1 = $this->ipsclass->DB->fetch_row( $fix1 ) ) - { - - - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'poll_poll_url\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $pixopt01 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix1['conf_title_id'] ), 'conf_key=\'poll_poll_url\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Введите URL темы с импортируемым опросом', 'conf_group' => $pix1['conf_title_id'], 'conf_description' => 'Оставьте пустым, если не хотите, чтобы отображался блок с опросом', 'conf_type' => 'input', 'conf_key' => 'poll_poll_url', 'conf_protected' => '1', 'conf_position' => '17', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); - } - - - } - } - - - $query2 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_recent_topics' LIMIT 0,1"); - if ( $portal_recent = $this->ipsclass->DB->fetch_row( $query2 ) ) - { - // 1 - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'recent_topics_discuss_number\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt02 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_discuss_number\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество отображаемых тем', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Количество отображаемых заголовков тем для портального тэга recent_discussions_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_discuss_number', 'conf_default' => '1','conf_protected' => '1', 'conf_position' => '9', 'conf_start_group' => 'Последние обсуждения', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); - } - - // 2 - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'recent_topics_article_forum\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt03 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_article_forum\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Из каких форумов экспортировать новости?', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Вы можете выбирать несколько форумов.', 'conf_type' => 'multi', 'conf_key' => 'recent_topics_article_forum', 'conf_extra' => '#show_forums#', 'conf_evalphp' => 'if ( $save == 1){ if ( is_array($_POST[\'recent_topics_article_forum\']) ) { $_POST[\'recent_topics_article_forum\'] = implode(\",\",$_POST[\'recent_topics_article_forum\']); } else { $_POST[\'recent_topics_article_forum\'] = \"\"; } $key = \'recent_topics_article_forum\';}if ( $show == 1 ){$key = \'recent_topics_article_forum[]\';}', 'conf_protected' => '1', 'conf_position' => '3', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); - } - - // 3 - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'recent_topics_article_max\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt04 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_article_max\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество новостей для отображения', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Количество тем, отображаемых в портальном тэге recent_topics_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_article_max', 'conf_default' => '15','conf_protected' => '1', 'conf_position' => '4', 'conf_start_group' => 'Последние новости', 'conf_end_group' => '1', 'conf_add_cache' => '0' ) ); - } - - - } - else - { - - - $this->ipsclass->DB->do_insert( 'conf_settings_titles', array( 'conf_title_keyword' => 'portal_recent_topics', 'conf_title_title' => 'Портал: Последние обсуждения', 'conf_title_desc' => 'Настройки вывода последних обсуждений в портал', 'conf_title_noshow' => '1' ) ); - $fix2 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_recent_topics' LIMIT 0,1"); - if ( $pix2 = $this->ipsclass->DB->fetch_row( $fix2 ) ) - { - // 1 - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'recent_topics_discuss_number\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt02 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_discuss_number\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество отображаемых тем', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Количество отображаемых заголовков тем для портального тэга recent_discussions_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_discuss_number', 'conf_default' => '1','conf_protected' => '1', 'conf_position' => '9', 'conf_start_group' => 'Последние обсуждения', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); - } - - // 2 - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'recent_topics_article_forum\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt03 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_article_forum\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Из каких форумов экспортировать новости?', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Вы можете выбирать несколько форумов.', 'conf_type' => 'multi', 'conf_key' => 'recent_topics_article_forum', 'conf_extra' => '#show_forums#', 'conf_evalphp' => 'if ( $save == 1){ if ( is_array($_POST[\'recent_topics_article_forum\']) ) { $_POST[\'recent_topics_article_forum\'] = implode(\",\",$_POST[\'recent_topics_article_forum\']); } else { $_POST[\'recent_topics_article_forum\'] = \"\"; } $key = \'recent_topics_article_forum\';}if ( $show == 1 ){$key = \'recent_topics_article_forum[]\';}', 'conf_protected' => '1', 'conf_position' => '3', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) ); - } - - // 3 - $this->ipsclass->DB->build_query( array( 'select' => 'conf_id', - 'from' => 'conf_settings', - 'where' => 'conf_key=\'recent_topics_article_max\'', - 'limit' => array( 0, 1 ) ) ); - $this->ipsclass->DB->exec_query(); - - if ( $opt04 = $this->ipsclass->DB->fetch_row() ) - { - $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_article_max\'' ); - } - else - { - $this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Количество новостей для отображения', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Количество тем, отображаемых в портальном тэге recent_topics_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_article_max', 'conf_default' => '15','conf_protected' => '1', 'conf_position' => '4', 'conf_start_group' => 'Последние новости', 'conf_end_group' => '1', 'conf_add_cache' => '0' ) ); - } - } - - - } - - // IBR Fix end + + $this->ipsclass->DB->return_die = 1; foreach( $SQL as $q ) { @@ -280,14 +113,30 @@ class version_upgrade $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", + "$cnt queries run...." ); + } } + + /*-------------------------------------------------------------------------*/ // INTRO /*-------------------------------------------------------------------------*/ @@ -296,25 +145,25 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } else { - $this->ipsclass->template->content .= " + $this->ipsclass->template->content .= "

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      "; } $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_21011/ipb_settings_partial.xml b/upload/upgrade/upg_21011/ipb_settings_partial.xml index 3335aee3..c74d5d60 100644 --- a/upload/upgrade/upg_21011/ipb_settings_partial.xml +++ b/upload/upgrade/upg_21011/ipb_settings_partial.xml @@ -3,8 +3,8 @@ 252 - Разрешенные расширения файлов для URL аватаров - Разделяйте запятой (gif,jpeg,jpg,png) и т.д. + Allowed avatar image URL extensions + Seperate with comma (gif,png,jpeg) etc 27 input avatar_ext @@ -23,8 +23,8 @@ 37 - - Внимание: Чтобы эта опция работала, необходимо, чтобы другая опция «Принудительно отправлять HTTP заголовки?» была включена.]]> + Print HTTP no-cache headers? + Note: The setting 'Print HTTP Headers?' found under General Configuration needs to be enabled for this setting to have any effect.]]> 7 yes_no nocache @@ -34,7 +34,7 @@ 1 14 - Уменьшение трафика + Reducing HTML output 0 0 1 @@ -44,23 +44,23 @@ 1 userprofiles - Профили пользователей - + User Profiles + 0 1 cpusaving - - Позволяют ограничивать или отключать некоторые ресурсоемкие возможности форума для увеличения скорости работы вашего форума, а так же уменьшения нагрузки на сервер. + + This section allows certain features to be limited or removed to get more performance out of your board. 0 202 Chat Site ID / Account No. - Если вы используете Parachat v7 и выше, введите ваш site ID. Если вы используете старую версию Parachat, пожалуйста введите ваш group number + If you are using Parachat v7 or greater, enter your site ID (1234, for example). If you are using an older version of Parachat please enter your group number (ip0000, for example) 21 input chat04_account_no @@ -70,7 +70,7 @@ 1 1 - Настройки учетной записи + Account Specifics 0 1 @@ -80,8 +80,8 @@ 351 Custom Applet Codebase URL - Этот пункт должен быть пустым до тех пор, пока вы имеете -ParaChat Server или ParaChat Enterprise hosted solution.]]> + This should be left blank unless you have a local +ParaChat Server installation or hosted ParaChat Enterprise solution.]]> 21 input parachat_codebase_url @@ -101,14 +101,14 @@ ParaChat Server 350 Chat Room Version - + 21 dropdown parachat_version 6 - 6=Parachat v6, и ниже -7=Parachat v7, и выше + 6=Parachat v6 or below +7=Parachat v7 or greater 1 3 @@ -121,9 +121,9 @@ ParaChat Server 204 - - - 8 + + + 21 yes_no chat04_who_on @@ -132,7 +132,7 @@ ParaChat Server 1 4 - + 0 1 @@ -141,9 +141,9 @@ ParaChat Server 205 - + - 11 + 21 yes_no chat04_hide_whoschatting @@ -161,9 +161,9 @@ ParaChat Server 209 - Размеры комнаты чата (ШИРИНА)? + Chat Room Dimensions (WIDTH)? - 11 + 21 input chat04_width @@ -172,7 +172,7 @@ ParaChat Server 1 8 - Отображение комнаты чата + Showing the chat room 0 1 @@ -181,9 +181,9 @@ ParaChat Server 210 - Размеры комнаты чата (ВЫСОТА)? + Chat Room Dimensions (HEIGHT)? - 11 + 21 input chat04_height @@ -201,14 +201,14 @@ ParaChat Server 213 - Загружать комнату чата в...? + Load the chat room in...? - 11 + 21 dropdown chat04_display self - self=Нормальной IPB странице + self=Normal IPB Page 1 12 @@ -221,13 +221,13 @@ ParaChat Server 261 - Дополнительные параметры - + Additional PARAM information + <param name="cmd.BeepEnter" value="true">
      <param name="cmd.BeepLeave" value="true"> -
      Пожалуйста, прочтите документацию к Invision Chat для получения подробной информации.]]>
      - 11 +
      Please refer to the Invision Chat documentation for more info.]]>
      + 21 textarea chat04_customparams @@ -245,9 +245,9 @@ ParaChat Server 211 - Pop-up окно комнаты чата фиксированных размеров? (в пикселях) - Разрешить открывать окно без полос прокрутки - 11 + Chat Room Pop-up Window Padding? (in px) + Allows window to open without scrollbars + 21 input chat04_poppad @@ -265,9 +265,9 @@ ParaChat Server 214 - Разрешить доступ в чат для этих групп - Вы можете выбирать более, чем одну - 11 + Allow chat access to these groups + You may select more than one + 21 multi chat04_access_groups @@ -292,7 +292,7 @@ $key = 'chat04_access_groups[]'; }]]> 1 25 - Права доступа + Access Permissions 1 1 @@ -301,23 +301,23 @@ $key = 'chat04_access_groups[]'; 254 - Язык всех стандартных записей в комнатах чата (по умолчанию) - Язык стандартных записей - 11 + Default Chat Room Language + This is the default language used for the chat user inteface (buttons and labels, etc) + 21 dropdown chat04_default_lang english.conf - english.conf=Английский -spanish.conf=Испанский -portuguese.conf=Португальский -italian.conf=Итальянский -french.conf=Французский -german.conf=Немецкий + english.conf=English +spanish.conf=Spanish +portuguese.conf=Portuguese +italian.conf=Italian +french.conf=French +german.conf=German 1 99 - Настройки шестой версии (не требуется в v7) + Version 6 Settings (Not required for v7) 0 0 @@ -326,9 +326,9 @@ german.conf= 253 - Тип комнаты чата - Это тип купленного вами чата - 11 + Chat Room Type + This is the type of chat service you purchased + 21 dropdown chat04_servicetype @@ -347,9 +347,9 @@ premium=Premium 252 - Комната чата по умолчанию - Это комната чата, в которую попадут пользователи, войдя в чат. - 11 + Default Chat Room + This is the room that your chat users will be logged into first + 21 input chat04_default_room @@ -367,9 +367,9 @@ premium=Premium 255 - - - 11 + + + 21 yes_no chat04_plainmode @@ -387,9 +387,9 @@ premium=Premium 256 - Чат: Цвет фона - Для изменения цвета фона вашего чата введите необходимый цвет здесь (RGB). - 11 + Applet: Background Color + To change your chat applet background color select any RGB value. + 21 input chat04_style_applet_bg @@ -407,9 +407,9 @@ premium=Premium 257 - Чат: Цвет переднего плана - Для изменения цвета переднего плана вашего чата введите необходимый цвет здесь (RGB). - 11 + Applet: Foreground Color + To change your chat applet foreground color select any RGB value. + 21 input chat04_style_applet_fg @@ -427,9 +427,9 @@ premium=Premium 258 - Окно чата: Цвет фона - Для изменения цвета фона вашего чата введите необходимый цвет здесь (RGB). - 11 + Chat Window: Background Color + To change your chat window background color select any RGB value. + 21 input chat04_style_window_bg @@ -447,9 +447,9 @@ premium=Premium 259 - Окно чата: Цвет переднего плана - Для изменения цвета переднего плана вашего чата введите необходимый цвет здесь (RGB). - 11 + Chat Window: Foreground Color + To change your chat window foreground color select any RGB value. + 21 input chat04_style_window_fg @@ -467,9 +467,9 @@ premium=Premium 260 - Размер шрифта для текста в чате - - 11 + Chat Room Font Size + + 21 input chat04_style_font_size @@ -488,8 +488,8 @@ premium=Premium 1 chat04 - Invision Chat Настройки - Этот пункт позволяет изменять ваш Invision Chat версию 2004 года. + Invision Chat Settings + This will allow you to customize your Invision Chat integration settings for the new 2004 edition 1
      diff --git a/upload/upgrade/upg_21011/version_upgrade.php b/upload/upgrade/upg_21011/version_upgrade.php index 0acaf23f..59578d1f 100644 --- a/upload/upgrade/upg_21011/version_upgrade.php +++ b/upload/upgrade/upg_21011/version_upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE MODULE:: IPB 2.1.4 -> 2.1.5 @@ -31,18 +25,19 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); -} +} class version_upgrade { var $this_version = '21011'; var $upgrade_from = '21010'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; + var $error = array(); /*-------------------------------------------------------------------------*/ // CONSTRUCTOR @@ -89,9 +84,6 @@ class version_upgrade case 'sql': $this->upgrade_sql(); break; - case 'skinrevert': - $this->revert_skin_changes(); - break; default: $this->upgrade_intro(); break; @@ -112,11 +104,20 @@ class version_upgrade { require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); + $this->ipsclass->DB->return_die = 1; + foreach( $SQL as $q ) { $this->ipsclass->DB->query( $q ); - $cnt++; + if ( $this->ipsclass->DB->error ) + { + $this->error[] = $this->ipsclass->DB->error; + } + else + { + $cnt++; + } } } @@ -124,116 +125,18 @@ class version_upgrade // Next page... //-------------------------------- - $this->ipsclass->core->redirect( "{$this->base_url}&workact=skinrevert", "$cnt запросов выполнено...." ); + if ( count($this->error) ) + { + $this->ipsclass->core->show_error( implode( "
      ", $this->error ), "done" ); + } + else + { + $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "$cnt queries run...." ); + } } - /*-------------------------------------------------------------------------*/ - // Revert Skin Changes - /*-------------------------------------------------------------------------*/ - - function revert_skin_changes() - { - if(! $this->ipsclass->input['do_update'] ) - { - $id = intval($this->ipsclass->input['skinid']) ? intval($this->ipsclass->input['skinid']) : 1; - - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>{$id}" ) ); - - if( !$default['set_skin_set_id'] ) - { - if( $id > 2 ) - { - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "Для проверки больше стилей нет...." ); - } - else - { - $this->ipsclass->template->content .= "
      Стили не найдены
      - Этот этап позволяет вам удалить внесенные вами изменения в стилях, для того, чтобы внести их вам вручную на обновленном форуме заново, и, чтобы процесс обновления обновил стили как положено. - Скрипт не смог найти ни одного стиляы. Вам потребуется после обновления зайти в админцентр и обратить стили вручную, чтобы скрипт внес изменения в шаблоны форума корректно..
      -

      - "; - } - } - - if( count( $default ) ) - { - $this->ipsclass->template->content .= " -
      -
      Вы желаете возвратить стиль в стандартный вид (убрав все ваши изменения в нем)?
      -
      Во время обновлений часто бывают изменения в шаблонах IPB главного стиля, от которого ваши стили унаследованы. Если шаблоны вашего стиля не были изменены, они просто унаследуют изменения от шаблонов главного стиля. Для «IPB Стандартный стиль» это случится автоматически.

      - Другие стили, которые были импортированы вами, могут иметь свой собственный набор шаблонов, они могут, возможно, быть обновлены вручную. Если ваши шаблоны стиля не обновлены как положено, могут возникнуть проблемы... Например, вы можете увидеть javascript ошибки, или вы не сможете увидеть какие-то блоки, потому что они не будут найдены в ваших шаблонах... -

      - Шаблоны вашего Главного стиля будут обновлены автоматически в течение процесса обновления, однако, чтобы работало все нормально на стандартном стиле, любые изменения обязаны быть удалены. Если вы хотите сделать это вручную, вы можете пропустить этот этап, затем после обновления зайти в админцентр для удаления изменений... - Вам будет необходимо зайти в редактирование «IPB 2.1 Стандартный стиль» и выбрать «Обратить все изменения......» для измененных шаблонов. Также, система обновления может сделать это за вас.

      - Из-за различных возможностей HTML для нестандартных стилей, система обновления не сможет изменить эти стили для вас. После того, как обновление будет завершено, мы рекомендуем вам запустить утилиту «Генерировать отчет сравнения стилей...» в админцентре для определения изменений, внесенных в ваш стиль. -

      Вы желаете удалить внесенные в стиль изменения для «{$default['set_name']}»?
      (Если это не стандартный стиль, мы рекомендуем вам пропустить данный этап и обновить ваши шаблоны вручную) - - "; - } - else - { - $this->ipsclass->template->content .= "
      Стили не найдены
      - Этот этап позволяет вам удалить внесенные вами изменения в стилях, для того, чтобы внести их вам вручную на обновленном форуме заново.
      -

      - "; - } - - $this->ipsclass->template->output(); - } - else - { - $man = intval( $this->ipsclass->input['man'] ); - $cnt = 0; - - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$man ) ); - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => "set_id=".$man ) ); - $outer = $this->ipsclass->DB->simple_exec(); - - if( $this->ipsclass->DB->get_num_rows($outer) ) - { - while( $r = $this->ipsclass->DB->fetch_row($outer) ) - { - if( $r['set_id'] == 1 ) - { - continue; - } - else - { - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'suid='.$r['suid'] ) ); - $cnt++; - } - } - } - - $next = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>".$man, 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) ); - - if( $next['set_skin_set_id'] ) - { - if( $this->ipsclass->input['do'] == 'all' ) - { - $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&do_update=1&do=all&man={$next['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид, переходим к следующему стилю...." ); - } - else - { - $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&skinid={$man}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); - } - } - else - { - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); - } - } - - } - /*-------------------------------------------------------------------------*/ // INTRO /*-------------------------------------------------------------------------*/ @@ -242,25 +145,25 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } else { - $this->ipsclass->template->content .= " + $this->ipsclass->template->content .= "

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      "; } $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_21012/version_upgrade.php b/upload/upgrade/upg_21012/version_upgrade.php index c6cb95b0..e1b42a5b 100644 --- a/upload/upgrade/upg_21012/version_upgrade.php +++ b/upload/upgrade/upg_21012/version_upgrade.php @@ -2,26 +2,20 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | -| > IPB UPGRADE MODULE:: IPB 2.1.4 -> 2.1.5 +| > IPB UPGRADE MODULE:: IPB 2.1.5 -> 2.1.6 | > Script written by Matt Mecham | > Date started: 23rd April 2004 | > "So what, pop is dead - it's no great loss. @@ -31,7 +25,7 @@ if ( ! defined( 'IN_IPB' ) ) { - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; + print "

      Incorrect access

      You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } @@ -39,7 +33,7 @@ class version_upgrade { var $this_version = '21012'; var $upgrade_from = '21011'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; + var $first_step = 'update your database to include the new schematic modifications.'; var $md5_check = ''; var $base_url = ''; var $mod_to_run = ''; @@ -86,9 +80,6 @@ class version_upgrade switch( $this->ipsclass->input['workact'] ) { - case 'sql': - $this->upgrade_sql(); - break; case 'skinrevert': $this->revert_skin_changes(); break; @@ -99,35 +90,6 @@ class version_upgrade } - /*-------------------------------------------------------------------------*/ - // SQL - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - $cnt = 0; - $SQL = array(); - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); - - foreach( $SQL as $q ) - { - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - //-------------------------------- - // Next page... - //-------------------------------- - - $this->ipsclass->core->redirect( "{$this->base_url}&workact=skinrevert", "$cnt запросов выполнено...." ); - - } - /*-------------------------------------------------------------------------*/ // Revert Skin Changes @@ -135,6 +97,8 @@ class version_upgrade function revert_skin_changes() { + $error_already = 0; + if(! $this->ipsclass->input['do_update'] ) { $id = intval($this->ipsclass->input['skinid']) ? intval($this->ipsclass->input['skinid']) : 1; @@ -143,18 +107,21 @@ class version_upgrade if( !$default['set_skin_set_id'] ) { - if( $id > 2 ) + if( $id >= 2 ) { $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "Для проверки больше стилей нет...." ); + "No further skin sets to check...." ); } else { - $this->ipsclass->template->content .= "
      Стили не найдены
      - Этот этап позволяет вам удалить внесенные вами изменения в стилях, для того, чтобы внести их вам вручную на обновленном форуме заново, и, чтобы процесс обновления обновил стили как положено. - Скрипт не смог найти ни одного стиляы. Вам потребуется после обновления зайти в админцентр и обратить стили вручную, чтобы скрипт внес изменения в шаблоны форума корректно..
      + $error_alread = 1; + + $this->ipsclass->template->content .= "
      Skins not found
      + This step in the upgrade process allows you to revert skin changes to your templates to ensure that new changes in this upgrade are properly inherited. + No skin sets could be found however. You will need to login to your ACP after the upgrade process has completed and manually revert changes to your skin sets in order + to see the new updates to your skin templats.


      - "; + "; } } @@ -162,25 +129,26 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Вы желаете возвратить стиль в стандартный вид (убрав все ваши изменения в нем)?
      -
      Во время обновлений часто бывают изменения в шаблонах IPB главного стиля, от которого ваши стили унаследованы. Если шаблоны вашего стиля не были изменены, они просто унаследуют изменения от шаблонов главного стиля. Для «IPB Стандартный стиль» это случится автоматически.

      - Другие стили, которые были импортированы вами, могут иметь свой собственный набор шаблонов, они могут, возможно, быть обновлены вручную. Если ваши шаблоны стиля не обновлены как положено, могут возникнуть проблемы... Например, вы можете увидеть javascript ошибки, или вы не сможете увидеть какие-то блоки, потому что они не будут найдены в ваших шаблонах... -

      - Шаблоны вашего Главного стиля будут обновлены автоматически в течение процесса обновления, однако, чтобы работало все нормально на стандартном стиле, любые изменения обязаны быть удалены. Если вы хотите сделать это вручную, вы можете пропустить этот этап, затем после обновления зайти в админцентр для удаления изменений... - Вам будет необходимо зайти в редактирование «IPB 2.1 Стандартный стиль» и выбрать «Обратить все изменения......» для измененных шаблонов. Также, система обновления может сделать это за вас.

      - Из-за различных возможностей HTML для нестандартных стилей, система обновления не сможет изменить эти стили для вас. После того, как обновление будет завершено, мы рекомендуем вам запустить утилиту «Генерировать отчет сравнения стилей...» в админцентре для определения изменений, внесенных в ваш стиль. -

      Вы желаете удалить внесенные в стиль изменения для «{$default['set_name']}»?
      (Если это не стандартный стиль, мы рекомендуем вам пропустить данный этап и обновить ваши шаблоны вручную) - +
      Do you wish to revert any skin changes?
      +
      During upgrades there are often times changes to the Master HTML Templates that your skins inherit from. If your skin templates are not customized, they will typically inherit changes from the master skin templates. This happens for the IPB Default skin automatically.

      + Custom skins that you install generally have their own set of template files, and as such you will need to manually update your custom skins. If your skin templates are not updated properly, unforseen issues can arise. For example you may see javascript errors on your site, or you may not see options that are present because they are not + reflected in your skin set's templates.

      + Your Master HTML Templates will be updated automatically during the upgrade process, however in order for them to be effective on the default skin, any skin changes must also be reverted. If you wish to do this manually, you can skip this step below, and log into your Admin Control Panel after the upgrade process has completed + to revert the changes. You would need to edit your IPB Default 2.1 skin set HTML templates, and click the \"Revert\" button for any templates that it appears next to. Alternatively, the upgrader can do this for you.

      + Because of the different html possibilities present for custom skin sets, you are strongly advised to carefuly determine if you wish for the upgrader to revert your skin changes, or if you should manually update your skin templates. After your upgrade is complete, it is recommended that you run the \"Skin Differences Tool\" in the Admin Control Panel for your custom skin to determine if you need to make any updates to your + custom skin sets. +

      Do you wish to revert changes to the '{$default['set_name']}' skin set?
      (If this is not your default skin, it is recommended that you skip this step and manually update your templates) + "; } - else + else if( !$error_already ) { - $this->ipsclass->template->content .= "
      Стили не найдены
      - Этот этап позволяет вам удалить внесенные вами изменения в стилях, для того, чтобы внести их вам вручную на обновленном форуме заново.
      + $this->ipsclass->template->content .= "
      Skins not found
      + This step in the upgrade process allows you to revert skin changes to your templates to ensure that new changes in this upgrade are properly inherited. You will be responsible for making these skin changes manually.


      - "; + "; } $this->ipsclass->template->output(); @@ -217,19 +185,20 @@ class version_upgrade if( $this->ipsclass->input['do'] == 'all' ) { $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&do_update=1&do=all&man={$next['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид, переходим к следующему стилю...." ); + "$cnt skin template bits from skin set '{$default['set_name']}' reverted, proceeding to next skin set...." ); } else { $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&skinid={$man}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); + "$cnt skin template bits from skin set '{$default['set_name']}' reverted...." ); } } else { $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); - } } + "$cnt skin template bits from skin set '{$default['set_name']}' reverted...." ); + } + } } @@ -241,25 +210,25 @@ class version_upgrade { $this->ipsclass->template->content .= "
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} +
      Welcome to the IPB Upgrade System
      +
      This upgrade module will upgrade you from {$this->ipsclass->versions[$this->upgrade_from]} to {$this->ipsclass->versions[$this->this_version]} +

      This first step will {$this->first_step}
      "; if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; + $this->ipsclass->template->content .= "
      WARNING: cache/skin_cache is not writeable
      + Please check the CHMOD value on this folder before continuing. Failure to do so could mean that + your skin files will not be installed correctly.
      "; } else { - $this->ipsclass->template->content .= " + $this->ipsclass->template->content .= "

      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; +
      Modules to run after this module: {$this->mod_to_run}
      "; } $this->ipsclass->template->output(); diff --git a/upload/upgrade/upg_21013/version_upgrade.php b/upload/upgrade/upg_21013/version_upgrade.php deleted file mode 100644 index 3ed13994..00000000 --- a/upload/upgrade/upg_21013/version_upgrade.php +++ /dev/null @@ -1,272 +0,0 @@ - IPB UPGRADE MODULE:: IPB 2.1.4 -> 2.1.5 -| > Script written by Matt Mecham -| > Date started: 23rd April 2004 -| > "So what, pop is dead - it's no great loss. - So many facelifts, it's face flew off" -+-------------------------------------------------------------------------- -*/ - -if ( ! defined( 'IN_IPB' ) ) -{ - print "

      Некорректный адрес

      Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; - exit(); -} - -class version_upgrade -{ - var $this_version = '21013'; - var $upgrade_from = '21012'; - var $first_step = 'обновит вашу базу данных для вставки новых полей и таблиц.'; - var $md5_check = ''; - var $base_url = ''; - var $mod_to_run = ''; - - /*-------------------------------------------------------------------------*/ - // CONSTRUCTOR - /*-------------------------------------------------------------------------*/ - - function version_upgrade() - { - - } - - function version_process() - { - $this->md5_check = $this->ipsclass->return_md5_check(); - - $this->base_url = "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}"; - - if ( is_array( $this->ipsclass->modules_to_run ) and count( $this->ipsclass->modules_to_run ) ) - { - $tmp = array_shift( $this->ipsclass->modules_to_run ); - - $this->mod_to_run = implode( ', ', $this->ipsclass->modules_to_run ); - } - - if ( ! $this->mod_to_run ) - { - $this->mod_to_run = 'None'; - } - } - - /*-------------------------------------------------------------------------*/ - // Auto run.. - /*-------------------------------------------------------------------------*/ - - function auto_run() - { - - - //-------------------------------- - // What are we doing? - //-------------------------------- - - switch( $this->ipsclass->input['workact'] ) - { - case 'sql': - $this->upgrade_sql(); - break; - case 'skinrevert': - $this->revert_skin_changes(); - break; - default: - $this->upgrade_intro(); - break; - } - } - - - /*-------------------------------------------------------------------------*/ - // SQL - /*-------------------------------------------------------------------------*/ - - function upgrade_sql() - { - $cnt = 0; - $SQL = array(); - - if ( file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ) ) - { - require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/'.strtolower($this->ipsclass->vars['sql_driver']).'_updates.php' ); - - foreach( $SQL as $q ) - { - $this->ipsclass->DB->query( $q ); - - $cnt++; - } - } - - //-------------------------------- - // Next page... - //-------------------------------- - - $this->ipsclass->core->redirect( "{$this->base_url}&workact=skinrevert", "$cnt запросов выполнено...." ); - - } - - - /*-------------------------------------------------------------------------*/ - // Revert Skin Changes - /*-------------------------------------------------------------------------*/ - - function revert_skin_changes() - { - if(! $this->ipsclass->input['do_update'] ) - { - $id = intval($this->ipsclass->input['skinid']) ? intval($this->ipsclass->input['skinid']) : 1; - - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>{$id}" ) ); - - if( !$default['set_skin_set_id'] ) - { - if( $id > 2 ) - { - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "Для проверки больше стилей нет...." ); - } - else - { - $this->ipsclass->template->content .= "
      Стили не найдены
      - Этот этап позволяет вам удалить внесенные вами изменения в стилях, для того, чтобы внести их вам вручную на обновленном форуме заново, и, чтобы процесс обновления обновил стили как положено. - Скрипт не смог найти ни одного стиляы. Вам потребуется после обновления зайти в админцентр и обратить стили вручную, чтобы скрипт внес изменения в шаблоны форума корректно..
      -

      - "; - } - } - - if( count( $default ) ) - { - $this->ipsclass->template->content .= " -
      -
      Вы желаете возвратить стиль в стандартный вид (убрав все ваши изменения в нем)?
      -
      Во время обновлений часто бывают изменения в шаблонах IPB главного стиля, от которого ваши стили унаследованы. Если шаблоны вашего стиля не были изменены, они просто унаследуют изменения от шаблонов главного стиля. Для «IPB Стандартный стиль» это случится автоматически.

      - Другие стили, которые были импортированы вами, могут иметь свой собственный набор шаблонов, они могут, возможно, быть обновлены вручную. Если ваши шаблоны стиля не обновлены как положено, могут возникнуть проблемы... Например, вы можете увидеть javascript ошибки, или вы не сможете увидеть какие-то блоки, потому что они не будут найдены в ваших шаблонах... -

      - Шаблоны вашего Главного стиля будут обновлены автоматически в течение процесса обновления, однако, чтобы работало все нормально на стандартном стиле, любые изменения обязаны быть удалены. Если вы хотите сделать это вручную, вы можете пропустить этот этап, затем после обновления зайти в админцентр для удаления изменений... - Вам будет необходимо зайти в редактирование «IPB 2.1 Стандартный стиль» и выбрать «Обратить все изменения......» для измененных шаблонов. Также, система обновления может сделать это за вас.

      - Из-за различных возможностей HTML для нестандартных стилей, система обновления не сможет изменить эти стили для вас. После того, как обновление будет завершено, мы рекомендуем вам запустить утилиту «Генерировать отчет сравнения стилей...» в админцентре для определения изменений, внесенных в ваш стиль. -

      Вы желаете удалить внесенные в стиль изменения для «{$default['set_name']}»?
      (Если это не стандартный стиль, мы рекомендуем вам пропустить данный этап и обновить ваши шаблоны вручную) - - "; - } - else - { - $this->ipsclass->template->content .= "
      Стили не найдены
      - Этот этап позволяет вам удалить внесенные вами изменения в стилях, для того, чтобы внести их вам вручную на обновленном форуме заново.
      -

      - "; - } - - $this->ipsclass->template->output(); - } - else - { - $man = intval( $this->ipsclass->input['man'] ); - $cnt = 0; - - $default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$man ) ); - $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => "set_id=".$man ) ); - $outer = $this->ipsclass->DB->simple_exec(); - - if( $this->ipsclass->DB->get_num_rows($outer) ) - { - while( $r = $this->ipsclass->DB->fetch_row($outer) ) - { - if( $r['set_id'] == 1 ) - { - continue; - } - else - { - $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'suid='.$r['suid'] ) ); - $cnt++; - } - } - } - - $next = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>".$man, 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) ); - - if( $next['set_skin_set_id'] ) - { - if( $this->ipsclass->input['do'] == 'all' ) - { - $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&do_update=1&do=all&man={$next['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид, переходим к следующему стилю...." ); - } - else - { - $this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&skinid={$man}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); - } - } - else - { - $this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", - "$cnt шаблонов из стиля '{$default['set_name']}' было возвращено в стандартный вид...." ); - } } - - } - - /*-------------------------------------------------------------------------*/ - // INTRO - /*-------------------------------------------------------------------------*/ - - function upgrade_intro() - { - $this->ipsclass->template->content .= " -
      -
      Добро пожаловать в систему обновления IPB
      -
      Этот модуль обновит ваш форум с {$this->ipsclass->versions[$this->upgrade_from]} до {$this->ipsclass->versions[$this->this_version]} -

      Этот первый этап {$this->first_step} -
      - "; - - if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) ) - { - $this->ipsclass->template->content .= "
      ВНИМАНИЕ: Папка cache/skin_cache недоступна для записи
      - Пожалуйста, проверьте CHMOD для этой папки. Если вы проигнорируете это предупреждение, то файлы стилей - могут некорректно установиться.
      "; - } - else - { - $this->ipsclass->template->content .= " -
      -
      -
      -
      После этого модуля будет запущено: {$this->mod_to_run}
      "; - } - - $this->ipsclass->template->output(); - - } - -} - - -?> \ No newline at end of file diff --git a/upload/upgrade/upgrade.php b/upload/upgrade/upgrade.php index d04bf4ba..1a042e58 100644 --- a/upload/upgrade/upgrade.php +++ b/upload/upgrade/upgrade.php @@ -2,23 +2,17 @@ /* +-------------------------------------------------------------------------- -| Invision Power Board 2.1.7 -| ============================================= +| Invision Power Board v<{%dyn.down.var.human.version%}> +| ======================================== | by Matthew Mecham -| (c) 2001 - 2005 Invision Power Services, Inc. +| (c) 2001 - 2004 Invision Power Services | http://www.invisionpower.com -| ============================================= +| ======================================== | Web: http://www.invisionboard.com -| http://www.ibresource.ru/products/invisionpowerboard/ -| Time: Tuesday 18th of July 2006 05:56:00 PM -| Release: 52f408a29988b02f45b5e6f4ba5af0ae +| Time: <{%dyn.down.var.time%}> +| Release: <{%dyn.down.var.md5%}> +| Email: matt@invisionpower.com | 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 +--------------------------------------------------------------------------- | | > IPB UPGRADE 1.x -> 2.0! @@ -146,7 +140,7 @@ class upgrade_legacy if ( $this->_check_for_two() ) { $this->ipsclass->input['version'] = '200'; - print "Вы, кажется, уже имеете IPB 2.0.x — обновление не требуется."; + print "You appear to be running IPB 2.0.x already and no upgrade is required."; exit(); } else if ( $this->ipsclass->DB->field_exists( 'sub_id', 'subscriptions' ) ) @@ -192,8 +186,8 @@ class upgrade_legacy { $this->ipsclass->template->content .= "
      -
      Вы выбрали остановку перед шагом: {$this->ipsclass->input['step']}
      -
      Скрипт обновления был остановлен по запросу... +
      You have chosen to stop before step {$this->ipsclass->input['step']}
      +
      The upgrade script has been been stopped as requested...
      "; @@ -268,7 +262,7 @@ class upgrade_legacy $major_pain_in_the_ass[] = array( 'tablefooter' , 'skin_topic' , 'TableFooter' ); $major_pain_in_the_ass[] = array( 'renderrow' , 'skin_topic' , 'RenderRow' ); - foreach( $major_pain_in_the_ass as $relief => $preperation_h ) + foreach( $major_pain_in_the_ass as $preperation_h ) { $this->ipsclass->DB->do_update( 'skin_templates', array( 'func_name' => $preperation_h[0] ), "group_name='{$preperation_h[1]}' and func_name='{$preperation_h[2]}'" ); } @@ -290,18 +284,18 @@ class upgrade_legacy $this->ipsclass->template->content .= "
      -
      Ваше обновление почти завершено!
      -
      Скрипт обновления успешно сделал свою работу и вы сейчас имеете IPB 2.0.0 +
      Your upgrade is almost complete!
      +
      The upgrade script has been run successfully and you're now running IPB 2.0.0

      - Сейчас, пожалуйста, посетите основную систему обновления для обновления до последней версии -

      Все ваши текущие стили перемещены в 2.0. Для использования этих стилей вам первое, что необходимо сделать: + Now visit the upgrade system to upgrade to the latest release +

      All of your current skins have been moved to a pre 2.0 parent. To use these skins, you'll need to first to the following:
        -
      • Войти в админцентр вашего форума -
      • Открыть блок «Стили» > «Утилиты для стилей» -
      • Использовать утилиту «Перестройка кеш файлов» на каждом вашем оригинальном стиле для создания кеш файлов. +
      • Log into your Admin Control Panel +
      • Click on 'Skins & Templates' and then on 'Skin Tools' +
      • Use the tool 'Rebuild skin set cache on set...' on each of your original skins to rebuild their caches
      - Этим вы завершите импортирование ваших старых стилей. Вы должны будете отредактировать, чтобы добавить в вашем новом IPB 2.0.0 секции и переименования некоторых процедур.

      + This will complete the import of your old skins. You will need to edit them to add in the new IPB 2.0.0 sections and to account for some of the renaming procedures.
      "; @@ -323,7 +317,7 @@ class upgrade_legacy } else { - $msg = "Перестройка сделана — завершение..."; + $msg = "Rebuild completed - finishing up..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } } @@ -372,7 +366,7 @@ class upgrade_legacy show_error("Error with ipb_settings.xml - could not process XML properly"); } - foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $id => $entry ) + foreach( $xml->xml_array['settingexport']['settinggroup']['setting'] as $entry ) { if ( ! $entry['conf_key']['VALUE'] ) { @@ -416,16 +410,16 @@ class upgrade_legacy $newrow[$f] = $entry[ $f ]['VALUE']; } - $db_string = $this->ipsclass->DB->compile_db_insert_string($newrow); - $query = "INSERT INTO ".SQL_PREFIX."conf_settings (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"; + $this->ipsclass->DB->do_insert( "conf_settings", $newrow ); - if ( ! $this->ipsclass->DB->query($query) ) + if ( $this->ipsclass->DB->failed ) { - $this->show_error($query."

      ".$DB->error); + $query = array_pop( $this->ipsclass->DB->obj['cached_queries'] ); + $this->show_error($query."

      ".$this->ipsclass->DB->error); } } - $msg = "Настройки импортированы, далее перестроение и обновление..."; + $msg = "Settings imported, recache & rebuild next..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } @@ -519,10 +513,10 @@ class upgrade_legacy if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) ) { - $this->show_error("Ошибка в файле ipb_templates.xml — невозможно выполнить этот XML файл"); + $this->show_error("Error with ipb_templates.xml - could not process XML properly"); } - foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $id => $entry ) + foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $entry ) { $newrow = array(); @@ -533,13 +527,13 @@ class upgrade_legacy $newrow['set_id'] = 1; $newrow['updated'] = time(); - $db_string = $this->ipsclass->DB->compile_db_insert_string($newrow); - $query = "INSERT INTO ".SQL_PREFIX."skin_templates (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"; - - if ( ! $this->ipsclass->DB->query($query) ) + $this->ipsclass->DB->do_insert( "skin_templates", $newrow ); + + if ( $this->ipsclass->DB->failed ) { + $query = array_pop( $this->ipsclass->DB->obj['cached_queries'] ); $this->show_error($query."

      ".$this->ipsclass->DB->error); - } + } } //------------------------------- @@ -562,10 +556,10 @@ class upgrade_legacy if ( ! is_array( $xml->xml_array['macroexport']['macrogroup']['macro'] ) ) { - $this->show_error("Ошибка в файле ipb_templates.xml — невозможно выполнить этот XML файл"); + $this->show_error("Error with ipb_macro.xml - could not process XML properly"); } - foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $id => $entry ) + foreach( $xml->xml_array['macroexport']['macrogroup']['macro'] as $entry ) { $newrow = array(); @@ -573,13 +567,13 @@ class upgrade_legacy $newrow['macro_replace'] = $entry[ 'macro_replace' ]['VALUE']; $newrow['macro_set'] = 1; - $db_string = $this->ipsclass->DB->compile_db_insert_string($newrow); - $query = "INSERT INTO ".SQL_PREFIX."skin_macro (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"; - - if ( ! $this->ipsclass->DB->query($query) ) + $this->ipsclass->DB->do_insert( "skin_macro", $newrow ); + + if ( $this->ipsclass->DB->failed ) { + $query = array_pop( $this->ipsclass->DB->obj['cached_queries'] ); $this->show_error($query."

      ".$this->ipsclass->DB->error); - } + } } //------------------------------- @@ -592,19 +586,19 @@ class upgrade_legacy 'set_css' => $CSS, ); - $str = $this->ipsclass->DB->compile_db_update_string($wrapper_record); - $query = "UPDATE ".SQL_PREFIX."skin_sets set ".$str." where set_skin_set_id=1"; - - if ( ! $this->ipsclass->DB->query($query) ) + $this->ipsclass->DB->do_update( "skin_sets", $wrapper_record, "set_skin_set_id=1" ); + + if ( $this->ipsclass->DB->failed ) { + $query = array_pop( $this->ipsclass->DB->obj['cached_queries'] ); $this->show_error($query."

      ".$this->ipsclass->DB->error); - } + } //----------------------------------------- // Import XML //----------------------------------------- - $msg = "Стили импортированы, далее импортирование настроек..."; + $msg = "Skins imported, importing settings..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } @@ -623,8 +617,8 @@ class upgrade_legacy } else { - $msg = "Оптимизация завершена, далее импорт новых стилей..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Optimization completed, new skins import next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -643,8 +637,8 @@ class upgrade_legacy } else { - $msg = "Оптимизация начата..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Optimization started..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -662,8 +656,8 @@ class upgrade_legacy } else { - $msg = "Старые таблицы удалены, далее оптимизация..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Old tables dropped, optimization next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -681,8 +675,8 @@ class upgrade_legacy } else { - $msg = "Вставка завершена, далее удаление старых таблиц..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Inserts completed, dropping old tables next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -700,8 +694,8 @@ class upgrade_legacy } else { - $msg = "Другие таблицы вставлены, далее конвертирование форумов..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Other tables altered, converting forums next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -719,8 +713,8 @@ class upgrade_legacy } else { - $msg = "Таблица с пользователями вставлена, далее другие таблицы..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Members table altered, other tables next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -738,8 +732,8 @@ class upgrade_legacy } else { - $msg = "Таблица с темами вставлена, далее вставка таблицы с пользователями..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Topic table altered, altering members table next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -757,8 +751,8 @@ class upgrade_legacy } else { - $msg = "Таблица с сообщениями вставлена, далее вставка таблицы с темами..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Post table altered, altering topic table next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -769,7 +763,8 @@ class upgrade_legacy function step_13() { - $f = $this->ipsclass->DB->query("SELECT * FROM ibf_forums"); + $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'forums' ) ); + $f = $this->ipsclass->DB->exec_query(); $final = array(); @@ -795,7 +790,7 @@ class upgrade_legacy $this->ipsclass->DB->do_update( 'topic_mmod', array( 'mm_forums' => $ff ), 'mm_id='.$id ); } - $msg = "Мульти-модерация тем конвертирована, вставка таблиц, стадия 2..."; + $msg = "Topic multi-moderation converted, alterting tables, stage 2..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } @@ -888,12 +883,12 @@ class upgrade_legacy } - $msg = "Личные сообщения: от $start до $end завершено...."; + $msg = "Personal messages: $start to $end completed...."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}&st={$end}", $msg ); } else { - $msg = "Личные сообщения сконвертированы, процесс обновления мульти-модерации тем..."; + $msg = "Personal messages converted, proceeding to update topic multi-moderation..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } } @@ -918,7 +913,8 @@ class upgrade_legacy $max = 0; - $this->ipsclass->DB->query("SELECT id FROM ibf_members where id > $end"); + $this->ipsclass->DB->build_query( array( 'select' => 'id', 'from' =>'members', 'where' => "id > {$end}" ) ); + $this->ipsclass->DB->exec_query(); $max = $this->ipsclass->DB->fetch_row(); @@ -955,14 +951,14 @@ class upgrade_legacy if ( ! $found and ! $max['id'] ) { - $msg = "Добавление системы авторизации завершено, конвертирование личных сообщений..."; + $msg = "Converge completed, converting personal messages..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } else { $this->ipsclass->next_step--; - $msg = "Добавление системы авторизации: от $start до $end завершено...."; + $msg = "Converge added: $start to $end completed...."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}&st={$end}", $msg ); } } @@ -1006,8 +1002,9 @@ class upgrade_legacy { $first = 0; - $this->ipsclass->DB->query( "SELECT id, name, email FROM ibf_members WHERE email='{$email}' ORDER BY joined ASC" ); - + $this->ipsclass->DB->build_query( array( 'select' => 'id,name,email', 'from' => 'members', 'where' => "email='{$email}'", 'order' => 'joined' ) ); + $this->ipsclass->DB->exec_query(); + while( $r = $this->ipsclass->DB->fetch_row() ) { // First? @@ -1034,12 +1031,12 @@ class upgrade_legacy $this->ipsclass->next_step--; - $msg = "Проверка e-mail адресов: от $start до $end завершено...."; + $msg = "Members email addresses checked $start to $end completed...."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}&st={$end}", $msg ); } else { - $msg = "E-mail адреса пользователей проверены, добавление системы авторизации..."; + $msg = "Members email addresses checked, adding to converge..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } } @@ -1111,12 +1108,12 @@ class upgrade_legacy } } - $msg = "Конвертирование пользователей: от $start до $end завершено...."; + $msg = "Members adjusted $start to $end completed...."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}&st={$end}", $msg ); } else { - $msg = "Конвертирование пользователей завершено, проверка e-mail адресов пользователей для системы авторизации..."; + $msg = "Members converted, making members email addresses safe for converge..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } } @@ -1183,12 +1180,12 @@ class upgrade_legacy $this->ipsclass->DB->simple_exec_query( array( 'update' => 'topics', 'set' => 'topic_hasattach=topic_hasattach+1', 'where' => 'tid='.$r['topic_id'] ) ); } - $msg = "Прикрепленные файлы: от $start до $end завершено...."; + $msg = "Attachments $start to $end completed...."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}&st={$end}", $msg ); } else { - $msg = "Прикрепленные файлы сконвертированы, перенос пользователей..."; + $msg = "Attachments converted, converting members..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } } @@ -1207,7 +1204,7 @@ class upgrade_legacy } else { - $msg = "Форумы сконвертированы, далее конвертирование прикрепленных файлов..."; + $msg = "Forums converted, converting attachments next..."; $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ); } } @@ -1226,8 +1223,8 @@ class upgrade_legacy } else { - $msg = "Другие таблицы вставлены, далее конвертирование форумов..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Other tables altered, converting forums next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -1245,8 +1242,8 @@ class upgrade_legacy } else { - $msg = "Таблица пользователей вставлена, далее другие таблицы..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Members table altered, other tables next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -1264,8 +1261,8 @@ class upgrade_legacy } else { - $msg = "Таблица с темами вставлена, далее вставка таблицы с пользователями..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Topic table altered, altering members table next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -1283,8 +1280,8 @@ class upgrade_legacy } else { - $msg = "Таблица с сообщениями вставлена, далее вставка таблицы с темами..."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Post table altered, altering topic table next..."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -1302,8 +1299,8 @@ class upgrade_legacy } else { - $msg = "Новые таблицы созданы. Вставка таблиц (часть 1, секция 1 — таблица с сообщениями)"; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "New tables created. Altering tables (Part 1, section 1 - post table)"; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -1321,8 +1318,8 @@ class upgrade_legacy } else { - $msg = "Поднята таблица с форумами — далее создание новых таблиц...."; - $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." запросов успешно сделано!" ); + $msg = "Forums table backed up - creating new tables next...."; + $this->ipsclass->core->redirect( "{$this->ipsclass->base_url}&act=work&version={$this->ipsclass->input['version']}&step={$this->ipsclass->next_step}&dieafterstep={$this->ipsclass->input['dieafterstep']}", $msg ."

      ".intval($this->ipsclass->sql->sqlcount)." queries run successfully!" ); } } @@ -1338,14 +1335,16 @@ class upgrade_legacy $this->ipsclass->template->content .= "
      -
      Добро пожаловать систему обновления IPB с ".UPGRADE_FROM." в 2.0.0
      -
      Этот скрипт обновления будет обновлять вашу ".UPGRADE_FROM.".x в IPB 2.0.0 -

      Во время процесса обновления будет несколько шагов для обновления ваших SQL таблиц и конвертирования текущих данных в новую систему. Если вы имеете большой форум, рекомендуем ознакомиться с инструкцией - по обновлению больших форумов > upgrade/manual_upgradekit/readme.txt. -

      ВНИМАНИЕ: Этот скрипт обновления будет обновлять вашу текущую базу данных и вернуться на старую версию форума уже будет невозможно! -
      Пожалуйста сохраните вашу базу данных и файлы (backup) перед тем, как начать обновление. Это сделает возможным быстро вернуть старый форум, если у вас возникнут серьезные ошибки при обновлении. -
      Мы не можем гарантировать, что процесс обновления пройдет без проблем, именно поэтому мы просим вас сделать копию ваших файлов и базы перед обновлением
      -

      Первый шаг: Копирование SQL таблиц для использования в программе конвертирования. +
      Welcome to the IPB ".UPGRADE_FROM." -> 2.0.x Upgrade System
      +
      This upgrade script will upgrade your ".UPGRADE_FROM.".x board to IPB 2.0.x +

      There are quite a few steps that need to be performed to update your SQL tables and convert the current data over to the new system. It is highly recommended for large boards, + that you manually update your database instead of running this upgrade script. Depending upon the size of your database, this script can timeout while the database changes + are being made. If you wish to manually upgrade, please look to upgrade/manual_upgradekit/readme.txt for more information. +

      WARNING: This upgrade script WILL upgrade your current database tables AND there is NO 'downgrade' script! +
      PLEASE ensure that you have a very + recent SQL back-up so that you can restore your working board quickly if you need to do so. +
      We cannot stress how important it is to ensure that you have a backup of this database before continuing
      +

      First step: Copying drastically altered SQL tables for use later in the convert program.

      "; @@ -1372,7 +1371,7 @@ class upgrade_legacy { if ( ! file_exists($cf) ) { - $warnings[] = "Невозможно найти файл '$cf'."; + $warnings[] = "Cannot locate the file '$cf'."; } } @@ -1380,7 +1379,7 @@ class upgrade_legacy { if ( ! is_writeable($cf) ) { - $warnings[] = "Невозможно произвести запись в файл или папку '$cf'. Пожалуйста сделайте права (CHMOD) 0777."; + $warnings[] = "Cannot write to the file or folder '$cf'. Please CHMOD to 0777."; } } @@ -1392,17 +1391,17 @@ class upgrade_legacy if ($phpversion < '4.1.0') { - $warnings[] = "Вы не можете устанавливать Invision Power Board. Invision Power Board требует PHP версии 4.1.0 или выше."; + $warnings[] = "You cannot install Invision Power Board. Invision Power Board requires PHP Version 4.1.0 or better."; } if ( ! function_exists('get_cfg_var') ) { - $warnings[] = "Вы не можете устанавливать Invision Power Board. Ваш PHP не достаточен для запуска IPB."; + $warnings[] = "You cannot install Invision Power Board. Your PHP installation isn't sufficient to run IPB."; } if ( ! function_exists('xml_parse_into_struct') ) { - $warnings[] = "Вы не можете устанавливать Invision Power Board. IPB требует, чтобы XML функции в PHP были включены, пожалуйста сообщите вашему хостинг-провайдеру, чтобы включил вам XML."; + $warnings[] = "You cannot install Invision Power Board. IPB requires that the XML functions in PHP are enabled, please ask your host to enable XML."; } //---------------------------------- @@ -1416,15 +1415,15 @@ class upgrade_legacy $this->ipsclass->template->content .= "

      - Внимание! - Найдены ошибки, требующие устранения. Без этого продолжение невозможно! + Warning! + The following errors must be rectified before continuing!

      $err_string
      "; } else { - $this->ipsclass->template->content .= ""; + $this->ipsclass->template->content .= ""; } $this->ipsclass->template->content .= "
      "; @@ -1465,9 +1464,9 @@ class upgrade_legacy $this->ipsclass->template->content .= "
      Error!
      -
      "; diff --git a/upload/uploads/._index.html b/upload/uploads/._index.html new file mode 100644 index 00000000..917ce538 Binary files /dev/null and b/upload/uploads/._index.html differ diff --git a/upload/uploads/index.html b/upload/uploads/index.html index 787531db..02ede2d7 100644 --- a/upload/uploads/index.html +++ b/upload/uploads/index.html @@ -1,15 +1 @@ - -Ошибка < Русская версия Invision Power Board - -

      Ошибка < Русская версия Invision Power Board

      -
      -Вы попали на несуществующую страницу!
      Пожалуйста нажмите на кнопочку «Назад» - в вашем браузере для возвращения на предыдущую страницу. -
      -Invision Power Board: - - - + IPB - Bulletin Board System

      403: IPB-> Forbidden


      You have reached this Page in error. \ No newline at end of file