Thanks Mod
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
-
- phpBB 1.4.3
- Сообщения: 76
- Стаж: 19 лет 1 месяц
Lektor прав, не убивает. Думаю лучше так оставить.Lektor писал(а):VVVas
Неа, не убывает, имхо это правильно. Если человеку сказали спасибо значит он заслужил. (ну я просто вообще стороник принципа "что написано пером..." т.е. у меня на форуме ничего никогда не удаляется (посты, темы и т.п.) )
я не делал, если прикрутишь будет здорово :wink:VVVas писал(а):Меня теперь интересует вопрос выноса в профиль (могу и сам сделать, но вдруг кто-то уже сделал) и формирование ссылок на профиле что бы всё таки использовалось (сие тоже могу сам сделать, но...).
Добавлено спустя 1 минуту 6 секунд:
VVVas, вот только вопросик... ты под какую версию будешь прикручивать?
Добавлено спустя 40 минут 58 секунд:
я прикрутил патч и сделал некоторые предложеные здесь исправления, за что всем вам спасибо
Версия 1.0.4
- Анонимные пользователи больше не могут получать благодарности
- Удалены повторяющиеся языковые переменные $lang['Thanks_info'] в lang_main.php
- Модифицирована инструкция, чтобы не редактировать viewtopic_body.tpl дважды
- Некоторые replace-with инструкции заменены на in-line для совместимости с уже установленными модами
Добавлено спустя 9 минут 38 секунд:
это появиться, если какой-нибудь умник попробует сходить по ссылке, которая дает команду поблагодарить постsatnsk писал(а):пока вроде все работает, единственно непонятно
Код:
$lang['thanks_anonymous'] = 'Гости не могут получать благодарности';
этого нигде не встречается, вероятно из-за запроса, незнаю
http://www.XXXX.ru/forum/posting.php?mode=thank&p=NNNN
попробуй вместо NNN подставить номер поста гостя и увидишь это сообщение
Добавлено спустя 1 минуту 38 секунд:
beforeVVVas писал(а):Код:
#
#-----[ OPEN ]------------------------------------------
#
posting.php
#
#-----[ FIND ]------------------------------------------
#
// Check if user is the post's author
if ($post_info['user_id'] == $user_id)
#
#-----[ AFTER, BEFORE ]------------------------------------------
#
Так after или before?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- phpBB 2.0.7
- Сообщения: 574
- Стаж: 19 лет
kingdom
А я ?
Мой вопрос (так ждал
)
А потом уже пишу условия если $thanked==тру и т.п. но что-то видимо не срабатывает .. где ошибся?
Добавлено спустя 1 минуту 28 секунд:
Ой .. глупость написал.. щас исправлю пост..
Добавлено спустя 31 минуту 56 секунд:
Все я понял свою ошибку:
Вообще делаю так:
Вопрос в неопределенном $postrow[$i]['post_id'], как лучше всего его определить?
Манипулиции провожу в displaying_torrent.php
Добавлено спустя 6 минут 1 секунду:
Т.е. я вижу как в вьютопике это выглядет:
Но как это дело оптимальней перенести в дисплэй..пхп
А я ?


Я делаю так:Как определить сказал ли юзер спасибо или нет..
Код: Выделить всё
$sql = "SELECT u.user_id
FROM " . THANKS_TABLE . " t, " . USERS_TABLE . " u
WHERE t.user_id = u.user_id";
while($row = $db->sql_fetchrow($result)) { if ($userdata['user_id'] == $row['user_id']) { $thanked = true; } }
Добавлено спустя 1 минуту 28 секунд:
Ой .. глупость написал.. щас исправлю пост..
Добавлено спустя 31 минуту 56 секунд:
Все я понял свою ошибку:
Вообще делаю так:
Код: Выделить всё
$sql = "SELECT u.user_id
FROM " . THANKS_TABLE . " t, " . USERS_TABLE . " u
WHERE t.post_id = " . $postrow[$i]['post_id'] . "
AND t.user_id = u.user_id";
while($row = $db->sql_fetchrow($result)) { if ($userdata['user_id'] == $row['user_id']) { $thanked = true; } }
Манипулиции провожу в displaying_torrent.php
Добавлено спустя 6 минут 1 секунду:
Т.е. я вижу как в вьютопике это выглядет:
Код: Выделить всё
//
// Go ahead and pull all data for this topic
//
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid
FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
WHERE p.topic_id = $topic_id
$limit_posts_time
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id
ORDER BY p.post_time $post_time_order
LIMIT $start, ".$board_config['posts_per_page'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain post/user information.", '', __LINE__, __FILE__, $sql);
}
$postrow = array();
if ($row = $db->sql_fetchrow($result))
{
do
{
$postrow[] = $row;
}
while ($row = $db->sql_fetchrow($result));
$db->sql_freeresult($result);
$total_posts = count($postrow);
}
else
{
include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
sync('topic', $topic_id);
message_die(GENERAL_MESSAGE, $lang['No_posts_topic']);
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
Ладно, не критично. Подумаем, может изредко просто синхронизацию делать буду. Я так понимаю это вот эти два запросаkingdom писал(а):Думаю лучше так оставить.
Код: Выделить всё
UPDATE phpbb_users AS u SET u.user_thanks = (SELECT COUNT(*) FROM phpbb_thanks AS t WHERE t.user_id = u.user_id);
UPDATE phpbb_users AS u SET u.user_thanked = (SELECT COUNT(*) FROM phpbb_thanks AS t, phpbb_posts AS p WHERE t.post_id = p.post_id AND p.poster_id = u.user_id);
я то прикручу, вопрос в том что ссылки на профили пользователей действительно предусмотренны или это я код не так понял?kingdom писал(а):я не делал, если прикрутишь будет здорово
Это же оно?
Код: Выделить всё
// Make thanker profile link
$thanker_profile = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $row['user_id']);
Код: Выделить всё
// Get thanks date
$thanks_date = create_date($board_config['default_dateformat'], $row['thanks_time'], $board_config['board_timezone']);
Добавлено спустя 40 секунд:
Я всегда стараюсь прикручивать под последнюю.kingdom писал(а):ты под какую версию будешь прикручивать?
-
- phpBB 1.4.0
- Сообщения: 32
- Стаж: 18 лет 3 месяца
- Откуда: Израиль, Ашкелон
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
-
- phpBB 1.4.0
- Сообщения: 32
- Стаж: 18 лет 3 месяца
- Откуда: Израиль, Ашкелон
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
-
- phpBB 1.4.3
- Сообщения: 76
- Стаж: 19 лет 1 месяц
SemShulm, спасибо, кодировку исправил.
Добавлено спустя 38 минут 48 секунд:
$thanker_profile это ссылка на профиль того, кто поблагодарил сообщение. Изначально список поблагодаривших был сделал с урлами, но потом передумал
Добавлено спустя 38 минут 48 секунд:
угу эти самые, только зачем уменьшать благоданости заработанные честным трудом =))VVVas писал(а):Ладно, не критично. Подумаем, может изредко просто синхронизацию делать буду. Я так понимаю это вот эти два запроса
че то я не понял, что ты хочешь сделатьVVVas писал(а):я то прикручу, вопрос в том что ссылки на профили пользователей действительно предусмотренны или это я код не так понял?

$thanker_profile это ссылка на профиль того, кто поблагодарил сообщение. Изначально список поблагодаривших был сделал с урлами, но потом передумал
это остатки от оригинала, я так и не придумал куда это прикрутить. Если будет статистика по благодарностям, может там понадобитсяVVVas писал(а):Оно куда то выводиться или оно вообще есть? Или это остатки от старого мода (пока никуда не выведенные или вырезанные окончательно)?
тогда надо весь мод под последнюю поправитьVVVas писал(а): всегда стараюсь прикручивать под последнюю.
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
Вдруг не честным?kingdom писал(а):только зачем уменьшать благоданости заработанные честным трудом =))
Ну я вот и думаю сделать с урлами или нет...kingdom писал(а):$thanker_profile это ссылка на профиль того, кто поблагодарил сообщение. Изначально список поблагодаривших был сделал с урлами, но потом передумал
Дык вроде встает нормально, у меня проблем не возникло...kingdom писал(а):тогда надо весь мод под последнюю поправить
-
- phpBB 2.0.7
- Сообщения: 574
- Стаж: 19 лет
Я решил таки в списке поблагодаривших сделать имена ссылками на профиль ..
Ну и в профиль тоже прикрутил ..
Выводит сколько раз поблагодарили юзера в профиле:
Добавлено спустя 10 минут 46 секунд:
Второй вариант выводит инфу о кол-ве благодарности, которую дали вы и дали вам:
Разница вкоде:
Добавлено спустя 8 минут 38 секунд:
ЗЫ мне кто-нибудь с моей просьбой поможет ?
kingdom 
Добавлено спустя 3 часа 15 минут 10 секунд:
Вообщем такой вопрос, я хочу сделать такой запрос, если по нему есть результат(не важно какой), то значит юзер говорил спасибо за пост с атачментом(который ему надо скачать), а если нет результата, значит - не говорил спасибо.
Т.е. самый оптимальный вариант:
(первый пост темы в запросе - специально)
Дальше я делаю проверку на то есть ли результат:
Но я видно что-то не так понял: $db->sql_fetchrow($result) - всегда возвращает фолс...
Когда я выполняю запрос в мускуле:
То получаю свой айди, если подставляю айди того, кто не говорил спасибо за пост 273, то никакого результата не возвращается.. т.е. запрос я правильный составил.
Подскажите как проверку правильно сделать на наличие результата по запросу?
Код: Выделить всё
#
#-----[ OPEN ]----------
#
viewtopic.php
#
#-----[ FIND ]----------
#
$thanks_users[] = $row['username'];
#
#-----[ REPLACE WITH ]----------
#
$thanks_users[] = '<a href="' . $thanker_profile .'">'. $row['username'].'</a>';
Ну и в профиль тоже прикрутил ..
Выводит сколько раз поблагодарили юзера в профиле:
Код: Выделить всё
#
#-----[ OPEN ]----------
#
lang_main.php
#
#-----[ FIND ]----------
#
$lang['Thanks_info']
#
#-----[ AFTER, ADD ]----------
#
$lang['Total_thanked'] = 'Поблагодарили';
#
#-----[ OPEN ]----------
#
usercp_viewprofile.php
#
#-----[ FIND ]----------
#
'L_TOTAL_POSTS' => $lang['Total_posts'],
#
#-----[ AFTER, ADD ]----------
#
'L_TOTAL_THANKED' => $lang['Total_thanked'],
#
#-----[ FIND ]----------
#
'POSTS' => $profiledata['user_posts'],
#
#-----[ AFTER, ADD ]----------
#
'THANKED' => $profiledata['user_thanked'],
#
#-----[ OPEN ]----------
#
profile_view_body.tpl
#
#-----[ FIND ]----------
#
<tr>
<td valign="top" align="right" nowrap="nowrap"><span class="gen">{L_TOTAL_POSTS}: </span></td>
<td valign="top"><b><span class="gen">{POSTS}</span></b><br /><span class="genmed">[{POST_PERCENT_STATS} / {POST_DAY_STATS}]</span> <br /><span class="genmed"><a href="{U_SEARCH_USER}" class="genmed">{L_SEARCH_USER_POSTS}</a></span></td>
</tr>
#
#-----[ AFTER, ADD ]----------
#
<tr>
<td valign="top" align="right" nowrap="nowrap"><span class="gen">{L_TOTAL_THANKED}: </span></td>
<td valign="top"><b><span class="gen">{THANKED}</span></b></td>
</tr>
Второй вариант выводит инфу о кол-ве благодарности, которую дали вы и дали вам:
Разница вкоде:
Код: Выделить всё
#
#-----[ FIND ]----------
#
'THANKED' => $profiledata['user_thanked'],
#
#-----[ REPLACE WITH ]----------
#
'THANKED' => $profiledata['user_thanked'].' / '.$profiledata['user_thanks'],
#
#-----[ FIND ]----------
#
$lang['Total_thanked'] = 'Поблагодарили';
#
#-----[ REPLACE WITH ]----------
#
$lang['Total_thanked'] = 'Поблагодарили (вас/вы)';
ЗЫ мне кто-нибудь с моей просьбой поможет ?


Добавлено спустя 3 часа 15 минут 10 секунд:
Вообщем такой вопрос, я хочу сделать такой запрос, если по нему есть результат(не важно какой), то значит юзер говорил спасибо за пост с атачментом(который ему надо скачать), а если нет результата, значит - не говорил спасибо.
Т.е. самый оптимальный вариант:
Код: Выделить всё
$sql = "SELECT u.user_id
FROM " . THANKS_TABLE . " t, " . USERS_TABLE . " u
WHERE t.post_id = " . $forum_topic_data['topic_first_post_id'] . "
AND t.user_id = u.user_id
AND u.user_id = $userdata['user_id']";
Дальше я делаю проверку на то есть ли результат:
Код: Выделить всё
if ( $db->sql_fetchrow($result)==true )
{
$thanked = true;
}
Когда я выполняю запрос в мускуле:
Код: Выделить всё
SELECT u.user_id, u.username
FROM phpbb_thanks t, phpbb_users u
WHERE t.post_id = 273
AND t.user_id = u.user_id
AND u.user_id = 2;
Подскажите как проверку правильно сделать на наличие результата по запросу?
Последний раз редактировалось Lektor 14.06.2007 13:02, всего редактировалось 1 раз.
-
- phpBB 1.4.3
- Сообщения: 76
- Стаж: 19 лет 1 месяц
Lektor, а ты sql_query вызывал? у тебя должно бытьчто-то типа такого
Код: Выделить всё
$sql = "SELECT ...";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not obtain thanks information', '', __LINE__, __FILE__, $sql);
$thanked = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if ($thanked) {
...
}
-
- phpBB 2.0.7
- Сообщения: 574
- Стаж: 19 лет
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз