Аutorepair Tables
- 
				Jovani
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год 6 месяцев
Аutorepair Tables
Раньше, вроде встречал где-то такой MOD. От ошибок MySQL с кодом 1016, 1034.
Не было надобности для ознакомления, сейчас понадобился ...
Кто-нибудь подскажет - где взять ?
			
			
									
						Не было надобности для ознакомления, сейчас понадобился ...
Кто-нибудь подскажет - где взять ?
- 
				Jovani
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год 6 месяцев
- 
				Поручик  
- Former team member
- Сообщения: 3942
- Стаж: 20 лет 5 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Вы, наверное, ссылкой поделитесь?
			
			
									
						Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
			
						Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
- 
				Jovani
- phpBB 2.0.5
- Сообщения: 477
- Стаж: 21 год 6 месяцев
Поручик ссылки как таковой нет.
Этот МОД установлен в phpBB modified by Przemo
http://www.przemo.org/phpBB2/
Уж не знаю, насколько "этично" выдергивать и публиковать от туда код ...
Скажем так - сделал "по образу и подобию" из этой модификации
			
			
									
						Этот МОД установлен в phpBB modified by Przemo
http://www.przemo.org/phpBB2/
Уж не знаю, насколько "этично" выдергивать и публиковать от туда код ...
Скажем так - сделал "по образу и подобию" из этой модификации

- 
				OtherDima  
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 8 месяцев
- Откуда: Санкт-Петербург
- 
				Xpert
- phpBB Guru 
- Сообщения: 5484
- Стаж: 21 год 7 месяцев
- Поблагодарили: 2 раза
Код: Выделить всё
OPEN
includes/functions.php
FIND
	// Add on DEBUG info
BEFORE ADD
	// Try to repair table if potential damage
	if ( ($sql_error['code'] == '1016' || $sql_error['code'] == '1034') && ($board_config['autorepair_tables'] != 0 || !isset($board_config['autorepair_tables'])) )
	{
		$sql3 = "SELECT config_value
			FROM " . CONFIG_TABLE . "
			WHERE config_name = 'last_dtable_notify'";
		$result3 = $db->sql_query($sql3);
		$row3 = $db->sql_fetchrow($result3);
		if ( $row3['config_value'] < (CR_TIME - 3600) )
		{
			$pos1 = strpos($sql_error['message'], ": '");
			$pos2 = strpos($sql_error['message'], "'.");
			$table_damage = substr($sql_error['message'], ($pos1 + 3), ($pos2 - ($pos1 + 3)));
			$table_damage = str_replace('.MYI', '', $table_damage);
			$table_damage = str_replace('.MYD', '', $table_damage);
			$sql = "REPAIR TABLE " . $table_damage;
			if ( !($result = $db->sql_query($sql)) )
			{
				$rt_result = $db->sql_error();
				$rep_result = sprintf($lang['rrtf'], $table_damage, $sql, $rt_result['message'], $table_damage);
			}
			else
			{
				$rep_result = sprintf($lang['rrts'], $table_damage, $sql, $table_damage);
			}
			@mail($board_config['board_email'], $lang['mstr'], $rep_result);
			update_config('last_dtable_notify', CR_TIME);
		}
		$msg_text = $lang['rrsum'] . '<br /><br /><span style="font size: 10px">' . $msg_text . '</span>';
	}
FIND
?>
BEFORE ADD
function update_config($field, $value)
{
	global $db;
	$sql = "UPDATE " . CONFIG_TABLE . "
		SET config_value = '" . str_replace("\'", "''", $value) . "'
		WHERE config_name = '$field'";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not update config table for field: ' . $field, '', __LINE__, __FILE__, $sql);
	}
}
OPEN
includes/constants.php
FIND
?>
BEFORE ADD
define('CR_TIME', time());
OPEN
language/lang_main.php
FIND
?>
BEFORE ADD
$lang['mstr'] = 'Automatic repair table';
$lang['rrtf'] = "The table %s is damage, attempt to auto repair failed:\n%s\n%s\nTry repair manually, execute query: REPAIR TABLE %s";
$lang['rrts'] = "The table %s was damage, attempt to auto repair propably successfull:\n%s\n If not try repair manually, execute query REPAIR TABLE %s";
$lang['rrsum'] = 'Occured fine error, the script was attempt to repair and notice board administrator.';Добавлено спустя 3 минуты 39 секунд:
Еще надо добавить в phpbb_config параметр autorepair_tables, 0 или 1 соответвенно запрещают или разрешают автопочинку.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
			
						Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
- 
				OtherDima  
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 8 месяцев
- Откуда: Санкт-Петербург
оно чинит именно поломанную таблицу?
Добавлено спустя 1 минуту 7 секунд:
было бы интересно посылать админу на почту что было срабатывание
как сие сообразить ?;)
Добавлено спустя 1 минуту 25 секунд:
ой
торможу...
почитал код, там какое то упоминает email есть
наверное как раз и есть оно
Добавлено спустя 1 минуту 21 секунду:
 у меня вопрос
 у меня вопрос
я как бы не являюсь владельцем форума,
но вписан как админ
мне тож придёт email?:)
			
			
									
						Добавлено спустя 1 минуту 7 секунд:
было бы интересно посылать админу на почту что было срабатывание
как сие сообразить ?;)
Добавлено спустя 1 минуту 25 секунд:
ой
торможу...
почитал код, там какое то упоминает email есть
наверное как раз и есть оно
Добавлено спустя 1 минуту 21 секунду:
 у меня вопрос
 у меня вопрося как бы не являюсь владельцем форума,
но вписан как админ
мне тож придёт email?:)
- 
				Siava  
- Поддержка 
- Сообщения: 5473
- Стаж: 20 лет 9 месяцев
- Откуда: Питер
- Благодарил (а): 182 раза
- Поблагодарили: 759 раз
OtherDima
Ну так поломай таблицу и увидишь
			
			
									
						Ну так поломай таблицу и увидишь

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
			
						Ты очистил кеш? © Sheer
https://siava.ru (phpbb
- 
				OtherDima  
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 8 месяцев
- Откуда: Санкт-Петербург
после внесения этих изменений в код
перестал работать DB Maintenance
оказалось у DBM такая же функция есть
если я удалю функцию добавленную в functions.php
мод Auto Repair работать будет?
			
			
									
						перестал работать DB Maintenance
Код: Выделить всё
Fatal error: Cannot redeclare update_config() (previously declared in /home/.../public_html/forum/includes/functions.php:982) in /home/.../public_html/forum/includes/functions_dbmtnc.php on line 142если я удалю функцию добавленную в functions.php
мод Auto Repair работать будет?
- 
				Xpert
- phpBB Guru 
- Сообщения: 5484
- Стаж: 21 год 7 месяцев
- Поблагодарили: 2 раза
Тогда убить функцию и вот так:
Что касается "а куда уходит". Вам вот это
			
			
									
						Код: Выделить всё
FIND
update_config('last_dtable_notify', CR_TIME);
REPLACE WITH
$sql4 = "UPDATE " . CONFIG_TABLE . " SET config_value = '" . CR_TIME . "' WHERE config_name = 'last_dtable_notify'"; 
$db->sql_query($sql4) or message_die(GENERAL_ERROR, 'Could not update config table for last_dtable_notify', '', __LINE__, __FILE__, $sql4);
... вообще ни о чем не говорит или просто не хотелось думать?Xpert писал(а):mail($board_config['board_email']
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
			
						Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
- 
				OtherDima  
- phpBB 2.0.1
- Сообщения: 294
- Стаж: 20 лет 8 месяцев
- Откуда: Санкт-Петербург
понял, т.е. если я там впишу ПЕРВЫЙ_МАИЛ, ВТОРОЙ_МАИЛXpert писал(а):Что касается "а куда уходит". Вам вот это... вообще ни о чем не говорит или просто не хотелось думать?Xpert писал(а):mail($board_config['board_email']
то это будет светиться в исходящих письмах от форума
как можно модифицировать код, чтобы сделать выборку email всех админов форума

Добавлено спустя 3 минуты 47 секунд:
решил сделать так
создал board_email2 и внёс в него свой email
и в коде поправил чтобы брало email из этой ячейки
 )
)
