Xwab
Форумыnavigate_nextphpBB-WAP

255 warnings. fix
Сообщения
M0rbid

===================
Фикс бага с 255 предупреждениями в профиле
===================

reputation.php

1)
ищем код: (стр > 350)

$result = db_query('SELECT COUNT(*) AS cnt FROM {REPUTATION_TABLE}
WHERE (modification = {REPUTATION_WARNING} OR modification = {REPUTATION_BAN})
AND user_id = %d', $user_id);
$warnings = $db->sql_fetchfield('cnt', -1, $result);

db_query('UPDATE {USERS_TABLE} SET user_warnings = %d WHERE user_id = %d', $warnings, $user_id);

меняем на:

$result = db_query('SELECT COUNT(*) AS cnt FROM {REPUTATION_TABLE}
WHERE (modification = {REPUTATION_WARNING} OR modification = {REPUTATION_BAN})
AND user_id = %d', $user_id);
$warnings = abs(intval($db->sql_fetchfield('cnt', -1, $result)));

db_query('UPDATE {USERS_TABLE} SET user_warnings = %d WHERE user_id = %d', $warnings, $user_id);

2)
ищем код: (стр > 740)

switch ($modification)
{
case REPUTATION_INC:
$set = 'user_reputation = user_reputation - 1, user_reputation_plus = user_reputation_plus - 1';
break;
case REPUTATION_DEC:
$set = 'user_reputation = user_reputation + 1';
break;
case REPUTATION_WARNING:
$set = 'user_warnings = user_warnings - 1';
break;
case REPUTATION_BAN:
$set = 'user_warnings = user_warnings - 1';
db_query('DELETE FROM {BANLIST_TABLE} WHERE ban_userid = %d', $user_id);
db_query('UPDATE {USERS_TABLE} SET user_allow_pm = 1 WHERE user_id = %d', $user_id);
break;
case REPUTATION_WARNING_EXPIRED:
case REPUTATION_BAN_EXPIRED:
$set = '';
break;
default:
message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
break;
}

меняем его на:


if($modification == REPUTATION_WARNING OR $modification == REPUTATION_BAN)
{
$u_data = get_userdata($user_id);
}

switch ($modification)
{
case REPUTATION_INC:
$set = 'user_reputation = user_reputation - 1, user_reputation_plus = user_reputation_plus - 1';
break;
case REPUTATION_DEC:
$set = 'user_reputation = user_reputation + 1';
break;
case REPUTATION_WARNING:
$set = (($u_data['user_warnings'] > 0) ? 'user_warnings = user_warnings - 1' : 'user_warnings = 0');
break;
case REPUTATION_BAN:
$set = (($u_data['user_warnings'] > 0) ? 'user_warnings = user_warnings - 1' : 'user_warnings = 0');
db_query('DELETE FROM {BANLIST_TABLE} WHERE ban_userid = %d', $user_id);
db_query('UPDATE {USERS_TABLE} SET user_allow_pm = 1 WHERE user_id = %d', $user_id);
break;
case REPUTATION_WARNING_EXPIRED:
case REPUTATION_BAN_EXPIRED:
$set = '';
break;
default:
message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
break;
}

-----------------
includes/page_header.php

ищем код: (стр > 100)

db_query('UPDATE {USERS_TABLE} SET user_warnings = user_warnings - 1 WHERE user_id = %d', $row['user_id']);

меняем на:

db_query('UPDATE {USERS_TABLE} SET user_warnings = IF(user_warnings > 0, user_warnings - 1, 0) WHERE user_id = %d', $row['user_id']);

08 Май 2010, 7:24
Татьяна

спасибо, внесла изменения

08 Май 2010, 7:43
KLoAS

Впервые такое вижу

08 Май 2010, 9:08
M0rbid

KLoAS,
http://maswap.ru/profile.php?mode=viewprofile&u=50

Предупреждения:
255

08 Май 2010, 9:17
Default_mo

я помню было у меня такое

08 Май 2010, 10:12
KasP

так и думал что значение в отрицательное уходит)

08 Май 2010, 10:15
Tahi

M0rbid, какие строчки ( в нотепаде редактирую просто)

24 Май 2010, 17:04
freedom'

Tahi, ctrl+f
db_query('UPDATE {USERS_TABLE} SET user_warnings = %d WHERE user_id = %d', $warnings, $user_id);


находиш и меняеш

24 Май 2010, 17:05
red-bull

у меня вобще не разу такого бага не было да я и нигде не видел....

24 Май 2010, 18:05
CannaBiss

у моего юзера на сервисном форе было такое) после Таня исправила

24 Май 2010, 18:09
Ответить на тему