Joomla портал
seo seo Subscribe
seo
0
seo

Интеграция CMS с форумом phpBQ

FROM $table_topics t, $table__forums f, $table_posts p, $table_users u

WHERE t.topic_id = p.topic_id AND

f.forum_id = t.forum_id AND

t.topic_status 2 AND

p.post_id = t.topic_last_post_id AND

p.poster_id = u.user_id

ORDER BY p.post_id PESC LIMIT $N»;

$result = mysql_query($query) or die(«Ошибка в SQL-запросе»);

// Выводим последние темы форума

echo «

«;

// $row[topic_id] — ID темы

// $row[forum_id] — ID форума

// $row[,,topic__title"] — название темы

// $row[username] — имя пользователя

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo «

href=\»$url/viewtopic.php?topic=$row[topic_id] &foruitp=$row[forum_id] \»>» .

$row["topic_title"] .

«

«;

}

echo «

$row[username]

«;

// Освобождаем память и закрываем соединение

mysql_free_result($result);

mysql_close($link);

?>

В данном сценарии нет ничего сложного, кроме SQL-запроса (листинг 19.4).

Глава 19. Базовая интеграция

233

$query = «SELECT t.topic_id, t.topic_title, t.topic_last_post_id,

t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username

FROM $table_topics t, $table_forunis f, $table_posts p, $table_users u

WHERE t.topic_id = p.topic_id AND

f. f orum_id = t. f orum_id AND

t.topic_status 2 AND

p.post_id = t.topic_last_post_id AND

p.poster_id = u.user_id

ORDER BY p.post_id DESC LIMIT $N»;

Рис. 19.2. Вывод последних постов форума

Как видите, запрос выбирает информацию из таблиц тем, форумов,

сообщений и пользователей. Для каждой таблицы создается псевдоним (для тем —

t, для форумов — f, для сообщений — р, для пользователей — и). Делается

это для того, чтобы хоть немного уменьшить запрос. (Представьте, что

вместо t, f, ? и и мы бы писали полные имена таблиц?) Сортировка выполняется

234 Часть V. Интеграция CMS с форумом phpBB

по ID сообщения в порядке убывания. Оператор limit ограничивает число

выводимых записей.

Результат работы сценария представлен на рис. 19.2.

Подключить сценарий last-posts.php к нашей CMS очень просто:

$раде = $раде . join(··, file («http: //$SERVER_NAME/

last-posts.php»)) ;

19.4. Вывод онлайн-посетителей

Наверняка на многих сайтах вы видели, что на главной странице выводится

список зарегистрированных пользователей, которые в данный момент

находятся в онлайне. Сейчас мы тоже попытаемся написать сценарий, выводящий

список пользователей, которые в данный момент находятся на сайте.

Вообще-то в составе phpBB2 есть такой сценарий, он называется

viewonline.php и размещен в каталоге phpBB2. Но работать с ним, мягко

говоря, не совсем удобно (рис. 19.3).

Рис. 19.3. Сценарий viewonline.php

Нам нужен сценарий, выводящий информацию в более компактном виде,

например в одну строку. Поэтому мы напишем свой вариант. Чтобы не изобре-

Глава 19. Базовая интеграция

235

тать велосипед заново, мы возьмем за основу сценарий viewonline.php и

удалим из него все лишнее. В целях экономии своего и вашего времени сразу

привожу код компактного сценария (листинг 19.5).

define(·IN_PHPBB·, true);

include($phpbb_root_path . ‘extension.inc’);

include($phpbb_root_path . ‘common. ‘ .$phpEx);

// URL форума без последнего слэша /

$url = «http://your_site/phpBB2″;

$userdata = session__pagestart($user_ip, PAGE_VIEWONLINE);

init_userprefs ($userdata);

$sql = «SELECT u.user_id, u.username, u.user_allow_viewonline,

u.user_level, s.session_logged_in, s.session_time, s.session_page,

s. session_ip

FROM «.USERSJTABLE.» u, » .SESSIONSJTABLE. » s

WHERE u.user_id = s.session_user_id

AND s.session_time >= «. ( time() — 300 ) . »

ORDER BY u.username ASC, s.session_ip ASC»;

if ( !($result = $db->sql_query($sql)) )

{

die(‘Ошибка’);

}

while ( $row = $db->sql_fetchrow($result) )

{

lf ( $row['sessionalogged__in'] )

{

Susername = $row[·username¦];

236 Часть V. Интеграция CMS с форумом phpBB

$id=$row['user_id'];

echo «$username 

·· ·

}

}

?>

Наш сценарий выводит не только имена пользователей, но и ссылки,

позволяющие просмотреть профиль пользователя.

seo
5th Фев 2011
Теги:
seo

Написать ответ

seo
 
Все права защищены © 2023 Joomla портал
 
 
seo