Идеи для расширения функциональности phpBB 2.0.x
TjRadenot
phpBB 1.4.3
Сообщения: 92 Стаж: 18 лет 11 месяцев
Откуда: Москва
Сообщение
TjRadenot » 31.07.2006 22:09
Вот файл (reputation_mod_install_users_v100.php) - это из мода Users Reputations System v.1.0.0.:
Код: Выделить всё
<?php
//copyright © 2004 IdleVoid & brustverein
//copyright © 2003 Volodymy (CLowN) Skoryk
//this update template copyright © 2006 Anton Granik
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'reputation_common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
if( !$userdata['session_logged_in'] )
{
$header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: ';
header($header_location . append_sid("login.$phpEx?redirect=reputation_mod_install_users_v100.$phpEx", true));
exit;
}
if( $userdata['user_level'] != ADMIN )
{
message_die(GENERAL_MESSAGE, 'You are not authorised to access this page');
}
$page_title = 'Setting the users reputations for Reputation Mod v.1.0.0 by Anton Granik';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
echo '<table width="100%" cellspacing="1" cellpadding="2" border="0" class="forumline">';
echo '<tr><th>Setting the users reputations for Reputation Mod v.1.0.0 by Anton Granik</th></tr><tr><td><span class="genmed"><ul type="circle">';
$sql = "SELECT * FROM " . USERS_TABLE . "
ORDER BY user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain reputation data for this user", '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
echo "<strong>" . $row['username'] . "</strong>";
$dif = time() - $row['user_regdate'];
$a = ($dif/60/60/24) / $rep_config['days_to_earn'];
$b = $row['user_posts'] / $rep_config['posts_to_earn'];
$c = $a + $b;
echo " (" . round($c,4) . "), ";
$sql = "UPDATE " . USERS_TABLE . "
SET user_reputation = $c, user_rep_last_time = " . time() . "
WHERE user_id = " . $row['user_id'];
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Could not update reputation for the user", '', __LINE__, __FILE__, $sql);
}
}
if ($errors == 0)
echo '<tr><th>Finish</th></tr><tr><td><span class="med">Installation is now finished. Please be sure to <strong>delete these files</strong> now: <ul><li>reputation_mod_db_install_v100.php,</li><li>reputation_mod_users_install_v100.php</li></ul></span></td></tr></table>';
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
TjRadenot
avm
Former team member
Сообщения: 582 Стаж: 20 лет 5 месяцев
Откуда: Москва
Сообщение
avm » 31.07.2006 22:12
и что?
avm
AlexWB
phpBB 1.4.4
Сообщения: 199 Стаж: 20 лет 5 месяцев
Откуда: Kiev.UA
Сообщение
AlexWB » 31.07.2006 22:28
- Петка, прибор!?
- "38"!
- Что "38"?
- А что "прибор"?
TjRadenot
можно конечно попытаться угадать, что нужет текст SQL запроса
но вот угадать какого из двух - даже самые гуровые гуру не в силах наверно
и встречный вопрос:
что вы с ним собираетесь делать, если сами не в состоянии понять, сколько и где в этом листинге "спрятано" sql запросов?
AlexWB
TjRadenot
phpBB 1.4.3
Сообщения: 92 Стаж: 18 лет 11 месяцев
Откуда: Москва
Сообщение
TjRadenot » 31.07.2006 22:39
Вот вроде они:
Код: Выделить всё
$sql = "SELECT * FROM " . USERS_TABLE . "
ORDER BY user_id";
Код: Выделить всё
$sql = "UPDATE " . USERS_TABLE . "
SET user_reputation = $c, user_rep_last_time = " . time() . "
WHERE user_id = " . $row['user_id'];
Вопрос: Как им придать такой вид чтобы можно было поместить /root/install/schemas/*.sql ?
TjRadenot
avm
Former team member
Сообщения: 582 Стаж: 20 лет 5 месяцев
Откуда: Москва
Сообщение
avm » 01.08.2006 2:01
ну насмешили...
зачем вам тот SELECT в schemas ?
вы хоть понимаете назначение этих sql файлов?
avm
Xpert
phpBB Guru
Сообщения: 5484 Стаж: 21 год 3 месяца
Поблагодарили: 2 раза
Сообщение
Xpert » 01.08.2006 13:08
Имхо все решаемо, надо только понять алгоритм расчета репутации. Подозреваю что на этапе установки мода на чистый форум она у всех будет 0...
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Xpert
TjRadenot
phpBB 1.4.3
Сообщения: 92 Стаж: 18 лет 11 месяцев
Откуда: Москва
Сообщение
TjRadenot » 01.08.2006 19:27
avm писал(а): зачем вам тот SELECT в schemas ?
А куда тогда? Без запуска этого файла мод не работает к сожалению! Что можете посоветовать по этому поводу?
Добавлено спустя 11 минут 49 секунд:
To
Xpert
Подозреваю что на этапе установки мода на чистый форум она у всех будет 0...
Да так и есть. Необходимо создать несколько сообщений на форуме (количество сообщений устанавливается в админ. разделе) и только после этого можно раздавать "репуты"
И по-моему
количество отданной "репутации" вычитается из количества
ВАШИХ сообщений . Вроде бы так....
TjRadenot
avm
Former team member
Сообщения: 582 Стаж: 20 лет 5 месяцев
Откуда: Москва
Сообщение
avm » 01.08.2006 20:00
TjRadenot писал(а): А куда тогда? Без запуска этого файла мод не работает к сожалению! Что можете посоветовать по этому поводу?
попробуйте так:
Код: Выделить всё
UPDATE phpbb_users SET user_reputation = 0, user_rep_last_time = NOW()
avm
TjRadenot
phpBB 1.4.3
Сообщения: 92 Стаж: 18 лет 11 месяцев
Откуда: Москва
Сообщение
TjRadenot » 01.08.2006 23:13
avm писал(а): попробуйте так:
Код: Выделить всё
UPDATE phpbb_users SET user_reputation = 0, user_rep_last_time = NOW()
Спасибо! все получилось...
Добавлено спустя 1 час 37 минут 34 секунды:
И по-моему количество отданной "репутации" вычитается из количества ВАШИХ сообщений.
Я ошибся
Система "репутации" не влияет на кол-во сообщений!
TjRadenot
Xpert
phpBB Guru
Сообщения: 5484 Стаж: 21 год 3 месяца
Поблагодарили: 2 раза
Сообщение
Xpert » 02.08.2006 9:10
avm
NOW() вроде ведь не работает под MySQL 3.x.x или я ошибаюсь?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Xpert
avm
Former team member
Сообщения: 582 Стаж: 20 лет 5 месяцев
Откуда: Москва
Сообщение
avm » 02.08.2006 18:53
Xpert , не помню уже...
я ответил лишь для того чтобы человек понял (надеюсь так оно и есть) что в schemas SELECT'ы нафик не нужны... при ответе мне лень было задумываться над этим вопросом, если честно... :wink:
avm