Отображение личных сообщений от определённого пользователя

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 728
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Отображение личных сообщений от определённого пользователя

15 фев 2011, 14:09

Мод добавляет в личный раздел пользователя на страницу списка личных сообщений ссылку, которая позволяет отобразить личные сообщения только от определённого пользователя, так же указанная ссылка добавляется и в профиль каждого пользователя, скриншоты:

профиль пользователя

список личных сообщений

результат


/language/ru/common.php перед добавить

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

	//PPK UPM
	'SHOW_AUTHOR_MESSAGES' => 'все лс от пользователя',
	'SHOW_ALL_MESSAGES' => 'все лс',
	//PPK UPM
/includes/ucp/ucp_pm_viewfolder.php после

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

$submit_export = (isset($_POST['submit_export'])) ? true : false;
добавить

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

	//PPK UPM
	$from_u=request_var('from_u', 0);
	$from_u_array=array();
	//PPK UPM
после

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

				// Send vars to template
				$template->assign_block_vars('messagerow', array(
добавить

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

					//PPK UPM
					'AUTHOR_ALL_MESSAGE' => !isset($from_u_array[$row['author_id']]) ? append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=$folder_id&from_u=".($from_u ? 0 : $row['author_id'])) : false,
					'S_AUTHOR_ALL' => $from_u ? true : false,
					//PPK UPM
перед

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

			}
			unset($folder_info['rowset']);
добавить

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

$from_u_array[$row['author_id']]=1;//PPK UPM
перед

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

// Additional vars later, pm ordering is mostly different from post ordering. :/
добавить

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

$from_u=request_var('from_u', 0);//PPK UPM
заменить

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

AND p.message_time >= $min_post_time";
на

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

AND p.message_time >= $min_post_time".($from_u ? " AND p.author_id='{$from_u}'" : '');//PPK UPM
после

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

		$pm_count = (!empty($folder[$folder_id]['num_messages'])) ? $folder[$folder_id]['num_messages'] : 0;
		$sql_limit_time = '';
добавить

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

		//PPK UPM
		if($from_u)
		{
			$sql = 'SELECT COUNT(t.msg_id) AS pm_count
				FROM ' . PRIVMSGS_TO_TABLE . ' t, ' . PRIVMSGS_TABLE . " p
				WHERE $folder_sql
					AND t.user_id = $user_id
					AND t.msg_id = p.msg_id
					AND p.author_id='{$from_u}'";
			$result = $db->sql_query_limit($sql, 1);
			$pm_count = (int) $db->sql_fetchfield('pm_count');
			$db->sql_freeresult($result);
		}
		//PPK UPM
заменить

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

'PAGINATION'		=> generate_pagination(append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=$folder_id&$u_sort_param"), $pm_count, $config['topics_per_page'], $start),
на

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

'PAGINATION'		=> generate_pagination(append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=$folder_id&$u_sort_param".($from_u ? "&from_u={$from_u}" : '')), $pm_count, $config['topics_per_page'], $start),//PPK UPM
заменить

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

'S_PM_ACTION'		=> append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=$folder_id" . (($start !== 0) ? "&start=$start" : '')),
на

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

'S_PM_ACTION'		=> append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=$folder_id" . (($start !== 0) ? "&start=$start" : '').($from_u ? "&from_u={$from_u}" : '')),//PPK UPM
заменить

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

AND t.msg_id = p.msg_id
на

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

AND t.msg_id = p.msg_id".($from_u ? " AND p.author_id='{$from_u}'" : '')."
/memberlist.php перед

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

'L_POSTS_IN_QUEUE'	=> $user->lang('NUM_POSTS_IN_QUEUE', $member['posts_in_queue']),
добавить

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

			'AUTHOR_ALL_MESSAGE' => append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&action=view_folder&f=0&from_u=".$member['user_id']),//PPK UPM
/styles/prosilver/template/ucp_pm_viewfolder.html после

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

<!-- IF S_SHOW_RECIPIENTS -->{L_MESSAGE_TO} {messagerow.RECIPIENTS}<!-- ELSE -->{L_MESSAGE_BY_AUTHOR} {messagerow.MESSAGE_AUTHOR_FULL}
добавить

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

<!-- IF messagerow.AUTHOR_ALL_MESSAGE --> (<a href="{messagerow.AUTHOR_ALL_MESSAGE}"><!-- IF messagerow.S_AUTHOR_ALL -->{L_SHOW_ALL_MESSAGES}<!-- ELSE -->{L_SHOW_AUTHOR_MESSAGES}<!-- ENDIF --></a>) <!-- ENDIF -->
/styles/prosilver/template/memberlist_view.html после

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

<a href="{U_PM}">{L_SEND_PRIVATE_MESSAGE}</a>
добавить

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

<!-- IF AUTHOR_ALL_MESSAGE --> (<a href="{AUTHOR_ALL_MESSAGE}">{L_SHOW_AUTHOR_MESSAGES}</a>)<!-- ENDIF -->
/styles/subsilver2/template/ucp_pm_viewfolder.html после

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

<!-- IF S_SHOW_RECIPIENTS -->{messagerow.RECIPIENTS}<!-- ELSE -->{messagerow.MESSAGE_AUTHOR_FULL}<!-- ENDIF -->
добавить

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

<!-- IF messagerow.AUTHOR_ALL_MESSAGE --><br />(<a href="{messagerow.AUTHOR_ALL_MESSAGE}"><!-- IF messagerow.S_AUTHOR_ALL -->{L_SHOW_ALL_MESSAGES}<!-- ELSE -->{L_SHOW_AUTHOR_MESSAGES}<!-- ENDIF --></a>) <!-- ENDIF -->
/styles/subsilver2/template/memberlist_view.html после

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

<a href="{U_PM}">{PM_IMG}</a>
добавить

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

<!-- IF AUTHOR_ALL_MESSAGE --> (<a href="{AUTHOR_ALL_MESSAGE}">{L_SHOW_AUTHOR_MESSAGES}</a>)<!-- ENDIF -->
Обновить переделанные стили, очистить кеш.

Вернуться в «Минимоды и хаки для phpBB3»