Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Аutorepair Tables

Идеи для расширения функциональности phpBB 2.0.x
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев
Контактная информация:

Аutorepair Tables

Сообщение Jovani »

Раньше, вроде встречал где-то такой MOD. От ошибок MySQL с кодом 1016, 1034.
Не было надобности для ознакомления, сейчас понадобился ...
Кто-нибудь подскажет - где взять ?
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев
Контактная информация:

Сообщение Jovani »

Спасибо.
Нашел на FR и PL ресурсе.
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 10 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза
Контактная информация:

Сообщение Поручик »

Вы, наверное, ссылкой поделитесь?
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 19 лет 11 месяцев
Контактная информация:

Сообщение Jovani »

Поручик ссылки как таковой нет.
Этот МОД установлен в phpBB modified by Przemo
http://www.przemo.org/phpBB2/

Уж не знаю, насколько "этично" выдергивать и публиковать от туда код ...
Скажем так - сделал "по образу и подобию" из этой модификации ;)
Аватара пользователя
OtherDima
phpBB 2.0.1
Сообщения: 294
Стаж: 19 лет 1 месяц
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Контактная информация:

Сообщение OtherDima »

Jovani
не так силен, чтоб выковыривать код
мож поделишься, мона в личку;)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет
Поблагодарили: 2 раза
Контактная информация:

Сообщение Xpert »

Код: Выделить всё

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
Стаж: 19 лет 1 месяц
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Контактная информация:

Сообщение OtherDima »

оно чинит именно поломанную таблицу?

Добавлено спустя 1 минуту 7 секунд:

было бы интересно посылать админу на почту что было срабатывание
как сие сообразить ?;)

Добавлено спустя 1 минуту 25 секунд:

ой
торможу...
почитал код, там какое то упоминает email есть
наверное как раз и есть оно

Добавлено спустя 1 минуту 21 секунду:

:oops: у меня вопрос
я как бы не являюсь владельцем форума,
но вписан как админ
мне тож придёт email?:)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Сообщение Siava »

OtherDima
Ну так поломай таблицу и увидишь :mrgreen:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
OtherDima
phpBB 2.0.1
Сообщения: 294
Стаж: 19 лет 1 месяц
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Контактная информация:

Сообщение OtherDima »

после внесения этих изменений в код
перестал работать 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
оказалось у DBM такая же функция есть

если я удалю функцию добавленную в functions.php
мод Auto Repair работать будет?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет
Поблагодарили: 2 раза
Контактная информация:

Сообщение Xpert »

Тогда убить функцию и вот так:

Код: Выделить всё

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
Стаж: 19 лет 1 месяц
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Контактная информация:

Сообщение OtherDima »

Xpert писал(а):Что касается "а куда уходит". Вам вот это
Xpert писал(а):mail($board_config['board_email']
... вообще ни о чем не говорит или просто не хотелось думать?
понял, т.е. если я там впишу ПЕРВЫЙ_МАИЛ, ВТОРОЙ_МАИЛ
то это будет светиться в исходящих письмах от форума

как можно модифицировать код, чтобы сделать выборку email всех админов форума
:roll:

Добавлено спустя 3 минуты 47 секунд:

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

Вернуться в «Запросы модов для phpBB 2.0.x»