IP.Board:Адаптирование английской версии IP.Board под русский язык и кириллическое написание символов (v2.3.x)

Материал из CSI

Перейти к: навигация, поиск
Все нижеприведённые действия вы делаете на свой страх и риск. Автор и администрация портала не несёт ответственности за ущерб, вызванный нижеприведёнными действиями.
Данная статья требует повышенного внимания. Будьте внимательны при внесении измений в файлы скрипта.
Данная статья принадлежит порталу CYBER-SYSTEMS.ORG в общем и Tails в частности.

Данная статья позволяет вам адаптировать английскую версию форума IP.Board под русский язык и кириллическое написание символов.

Английская версия форума не была разработана с учётом языков не-английского происхождения. Поэтому, я сделал следующую инструкцию для тех, кто захочет отказаться от русской версии IP.Board и воспользоваться чисто английской версией.


1. Открыть ./ips_kernel/class_db.php Найти:

'use_debug_log'		=> 0		  ,

Добавить ниже:

'mysql_codepage'		  => 'cp1251'   ,

Найти:

var $error_no			= "";

Добавить ниже:

var $error_codepage	 = "windows_1251";

2. Открыть ./ips_kernel/class_db_mysql_client.php Найти:

function sql_can_subquery()

Добавить выше:

function sql_set_collation_and_cp()
{
	$this->sql_get_version();
 
	if ( $this->mysql_version >= 40101 )
	{
		$res = mysql_query( "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage']  .  "'", $this->connection_id );
 
		$charset = mysql_fetch_row($res);
 
		mysql_query( "SET NAMES " . $this->obj['mysql_codepage'], $this->connection_id );
		mysql_query( "SET CHARACTER SET " . $this->obj['mysql_codepage'], $this->connection_id );
		mysql_query( "SET character_set_connection = " . $this->obj['mysql_codepage'], $this->connection_id );
		mysql_query( "SET collation_connection = " . $charset[2], $this->connection_id );
	}
 
	unset( $this->obj['sql_host'] );
	unset( $this->obj['sql_user'] );
	unset( $this->obj['sql_pass'] );
 
	return TRUE;
}

Найти:

unset( $this->obj['sql_host'] );
unset( $this->obj['sql_user'] );
unset( $this->obj['sql_pass'] );

Заменить на:

$this->sql_set_collation_and_cp();

3. Открыть ./ips_kernel/class_db_mysqli_client.php Найти:

function sql_can_subquery()

Добавить выше:

function sql_set_collation_and_cp()
{
	$this->sql_get_version();
 
	if ( $this->mysql_version >= 40101 )
	{
		$res = mysqli_query( $this->connection_id, "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage']  .  "'");
 
		$charset = mysqli_fetch_row($res);
 
		mysqli_query( $this->connection_id, "SET NAMES " . $this->obj['mysql_codepage'] );
		mysqli_query( $this->connection_id, "SET CHARACTER SET " . $this->obj['mysql_codepage'] );
		mysqli_query( $this->connection_id, "SET character_set_connection = " . $this->obj['mysql_codepage'] );
		mysqli_query( $this->connection_id, "SET collation_connection = " . $charset[2] );
	}
 
	return TRUE;
}

Найти:

mysqli_autocommit( $this->connection_id, TRUE );

Добавить выше:

$this->sql_set_collation_and_cp();

4. Открыть conf_global.php В самый низ добавить:

$INFO['mysql_codepage'] = 'cp1251';

5. Открыть ./sources/ipsclass.php Найти:

$this->DB->obj['force_new_connection'] = isset($this->vars['sql_force_new_connection']) ? $this->vars['sql_force_new_connection'] : 0;

Добавить после:

if ( isset( $this->vars['mysql_codepage'] ) ) {
	$this->DB->obj['mysql_codepage']	   = $this->vars['mysql_codepage'];
}

Найти:

$this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'iso-8859-1';

Заменить на:

$this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'windows-1251';

6. Открыть ./sources/classes/class_email.php Найти:

var $char_set	 = 'iso-8859-1';

Заменить на:

var $char_set	 = 'windows-1251';

7. Открыть ./sources/action_public/rssout.php Найти:

$this->xml_header = '<?xml version="1.0" encoding="ISO-8859-1"?'.'>';

Заменить на:

$this->xml_header = '<?xml version="1.0" encoding="WINDOWS-1251"?'.'>';

8. Открыть ./sources/action_admin/xmlout.php Найти:

$this->xml_header = '<?xml version="1.0" encoding="ISO-8859-1"?'.'>';

Заменить на:

$this->xml_header = '<?xml version="1.0" encoding="WINDOWS-1251"?'.'>';

9. Открыть ./jscripts/folder_rte_files/module_bbcodeloader.php Найти:

<title>Insert Custom BBCode</title>

Добавить выше:

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

10. Открыть ./ips_kernel/class_xml.php Найти:

var $lite_parser	   = 0;

Заменить на:

var $lite_parser	   = 1;

Найти:

var $doc_type = 'ISO-8859-1';

Заменить на:

var $doc_type = 'WINDOWS-1251';

11. Открыть ./ips_kernel/class_ajax.php Найти:

@header( "Content-type: text/xml" );

Заменить на:

@header( "Content-type: text/xml;charset={$this->ipsclass->vars['gb_char_set']}" );

12. Открыть ./sources/action_public/xmlout.php Найти:

$name	  = $this->class_ajax->convert_and_make_safe( $this->ipsclass->input['name'], 0 );

Заменить:

$name	  = $this->class_ajax->convert_and_make_safe( $this->ipsclass->input['name'], 1 );

13. Открыть init.php Найти:

define( 'IPB_ACP_ALLOW_TEMPLATE_PHP', 0 );

Добавить ниже:

/**
* Allow UTF charset convertations for AJAX-based tools
* @since 2.2.2.2007-02-25
*/
define( 'IPB_ACP_AJAX_UTF_CONVERT', 1 );

14. Открыть ./sources/action_admin/acppermissions.php Найти:

		print $this->html->acp_xml_wrap( $tab_html, $content );

Добавить выше:

		if ( IPB_ACP_AJAX_UTF_CONVERT ) 
		{
			$tab_html = $this->ipsclass->txt_convert_charsets($tab_html, $this->ipsclass->vars['gb_char_set'], 'utf-8');
			$content = $this->ipsclass->txt_convert_charsets($content, $this->ipsclass->vars['gb_char_set'], 'utf-8');
		}

15. Открыть ./sources/lib/admin_functions.php Найти:

		if ( $this->ipsclass->can_use_fancy_js )
		{

Добавить ниже:

			if ( IPB_ACP_AJAX_UTF_CONVERT )
			{
				$text = $this->ipsclass->txt_convert_charsets($text, $this->ipsclass->vars['gb_char_set'], 'utf-8');
			}

Найти:

		if ( $this->ipsclass->can_use_fancy_js )
		{

Добавить ниже:

			if ( IPB_ACP_AJAX_UTF_CONVERT )
			{
				$text = $this->ipsclass->txt_convert_charsets($text, $this->ipsclass->vars['gb_char_set'], 'utf-8');
			}

Найти:

			$text = str_replace( "'", "\\'", $text );

Добавить ниже:

			if ( IPB_ACP_AJAX_UTF_CONVERT )
			{
				$text = $this->ipsclass->txt_convert_charsets($text, $this->ipsclass->vars['gb_char_set'], 'utf-8');
			}

Times are changing for the beettr if I can get this online!

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Категории
Инструменты