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

Thanks Mod

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Ну пока для меня это не проблема.
Меня теперь интересует вопрос выноса в профиль (могу и сам сделать, но вдруг кто-то уже сделал) и формирование ссылок на профиле что бы всё таки использовалось (сие тоже могу сам сделать, но...).
я люблю daft punk | новый sugoi.ru
kingdom
phpBB 1.4.3
Сообщения: 76
Стаж: 18 лет

Сообщение kingdom »

Lektor писал(а):VVVas
Неа, не убывает, имхо это правильно. Если человеку сказали спасибо значит он заслужил. (ну я просто вообще стороник принципа "что написано пером..." т.е. у меня на форуме ничего никогда не удаляется (посты, темы и т.п.) )
Lektor прав, не убивает. Думаю лучше так оставить.
VVVas писал(а):Меня теперь интересует вопрос выноса в профиль (могу и сам сделать, но вдруг кто-то уже сделал) и формирование ссылок на профиле что бы всё таки использовалось (сие тоже могу сам сделать, но...).
я не делал, если прикрутишь будет здорово :wink:

Добавлено спустя 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 секунд:
VVVas писал(а):Код:
#
#-----[ OPEN ]------------------------------------------
#
posting.php

#
#-----[ FIND ]------------------------------------------
#
// Check if user is the post's author
if ($post_info['user_id'] == $user_id)

#
#-----[ AFTER, BEFORE ]------------------------------------------
#

Так after или before?
before
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Lektor
phpBB 2.0.7
Сообщения: 574
Стаж: 18 лет

Сообщение Lektor »

kingdom
А я ? :) Мой вопрос (так ждал :))
Как определить сказал ли юзер спасибо или нет..
Я делаю так:

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

   $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; } }
А потом уже пишу условия если $thanked==тру и т.п. но что-то видимо не срабатывает .. где ошибся?

Добавлено спустя 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; } }
Вопрос в неопределенном $postrow[$i]['post_id'], как лучше всего его определить?
Манипулиции провожу в 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']); 
} 
Но как это дело оптимальней перенести в дисплэй..пхп
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

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 писал(а):ты под какую версию будешь прикручивать?
Я всегда стараюсь прикручивать под последнюю.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
SemShulm
phpBB 1.4.0
Сообщения: 32
Стаж: 17 лет 3 месяца
Откуда: Израиль, Ашкелон

Сообщение SemShulm »

VVVas
Русский не читаем в thankspost104.zip
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

SemShulm
Чего имелось ввиду?
я люблю daft punk | новый sugoi.ru
Аватара пользователя
SemShulm
phpBB 1.4.0
Сообщения: 32
Стаж: 17 лет 3 месяца
Откуда: Израиль, Ашкелон

Сообщение SemShulm »

Вместо текстов на русском какие то значки и закорючки
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Вполне читаемо, просто кодировка файла MS-DOS aka OEM866. Откройте через браузер.
И почему ко мне? Я что ли автор мода или я его выложил?
я люблю daft punk | новый sugoi.ru
kingdom
phpBB 1.4.3
Сообщения: 76
Стаж: 18 лет

Сообщение kingdom »

SemShulm, спасибо, кодировку исправил.

Добавлено спустя 38 минут 48 секунд:
VVVas писал(а):Ладно, не критично. Подумаем, может изредко просто синхронизацию делать буду. Я так понимаю это вот эти два запроса
угу эти самые, только зачем уменьшать благоданости заработанные честным трудом =))
VVVas писал(а):я то прикручу, вопрос в том что ссылки на профили пользователей действительно предусмотренны или это я код не так понял?
че то я не понял, что ты хочешь сделать :?
$thanker_profile это ссылка на профиль того, кто поблагодарил сообщение. Изначально список поблагодаривших был сделал с урлами, но потом передумал
VVVas писал(а):Оно куда то выводиться или оно вообще есть? Или это остатки от старого мода (пока никуда не выведенные или вырезанные окончательно)?
это остатки от оригинала, я так и не придумал куда это прикрутить. Если будет статистика по благодарностям, может там понадобится
VVVas писал(а): всегда стараюсь прикручивать под последнюю.
тогда надо весь мод под последнюю поправить
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

kingdom писал(а):только зачем уменьшать благоданости заработанные честным трудом =))
Вдруг не честным?
kingdom писал(а):$thanker_profile это ссылка на профиль того, кто поблагодарил сообщение. Изначально список поблагодаривших был сделал с урлами, но потом передумал
Ну я вот и думаю сделать с урлами или нет...
kingdom писал(а):тогда надо весь мод под последнюю поправить
Дык вроде встает нормально, у меня проблем не возникло...
я люблю daft punk | новый sugoi.ru
Lektor
phpBB 2.0.7
Сообщения: 574
Стаж: 18 лет

Сообщение Lektor »

Я решил таки в списке поблагодаривших сделать имена ссылками на профиль ..

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

#
#-----[ 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}:&nbsp;</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}:&nbsp;</span></td>
  <td valign="top"><b><span class="gen">{THANKED}</span></b></td>
</tr>
Добавлено спустя 10 минут 46 секунд:

Второй вариант выводит инфу о кол-ве благодарности, которую дали вы и дали вам:
Разница вкоде:

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

#
#-----[ FIND ]----------
#
'THANKED' => $profiledata['user_thanked'],
#
#-----[ REPLACE WITH ]----------
#
'THANKED' => $profiledata['user_thanked'].' / '.$profiledata['user_thanks'],
#
#-----[ FIND ]----------
#
$lang['Total_thanked'] = 'Поблагодарили';
#
#-----[ REPLACE WITH ]----------
#
$lang['Total_thanked'] = 'Поблагодарили (вас/вы)';
Добавлено спустя 8 минут 38 секунд:

ЗЫ мне кто-нибудь с моей просьбой поможет ? :) kingdom :roll:

Добавлено спустя 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;
	}
Но я видно что-то не так понял: $db->sql_fetchrow($result) - всегда возвращает фолс...

Когда я выполняю запрос в мускуле:

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

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;
То получаю свой айди, если подставляю айди того, кто не говорил спасибо за пост 273, то никакого результата не возвращается.. т.е. запрос я правильный составил.
Подскажите как проверку правильно сделать на наличие результата по запросу?
Последний раз редактировалось Lektor 14.06.2007 13:02, всего редактировалось 1 раз.
kingdom
phpBB 1.4.3
Сообщения: 76
Стаж: 18 лет

Сообщение kingdom »

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) {
...
}
Lektor
phpBB 2.0.7
Сообщения: 574
Стаж: 18 лет

Сообщение Lektor »

kingdom
Спасибо :D Отлично ! Теперь получилось все так как я хотел )
Аватара пользователя
satnsk
phpBB 1.4.4
Сообщения: 128
Стаж: 17 лет 2 месяца
Откуда: Новосиб

Сообщение satnsk »

у меня такая просьба, может у кого есть какие значки поменьше, чем эти цветочки за спасибо, а то уж больно большие :)
у себя что-то не нашел ничего подходящего
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Lektor писал(а):'THANKED' => $profiledata['user_thanked'].' / '.$profiledata['user_thanked'],
опечатка?

Спасибо, а то было лень самому.
я люблю daft punk | новый sugoi.ru

Вернуться в «Бета-версии модов для phpBB 2.0.x»