
Возникла вот проблемка небольшая.
По умолчанию модуль "Последние сообщение на форуме" для портала MKPortal выводит вообще ВСЕ сообщения с форума, т.е. там есть проверка кто зашел, но она на уровне админ, модер, участник, гость. Таким образом пользователи видят сообщения даже из закрытых для них форумов, как понимаете это ни разу не секьюно

Решил переписать этот модуль и столкнулся с проблемой.
Сейчас будет код, а потом вопросы

Код: Выделить всё
function get_last_posts($by, $sdate)
{
global $DB, $mklib, $mkportals;
$limit = 5;
$taglio = 40;
/*//Forum Read Perms
switch($mkportals->member['mgroup'])
{
case '1':
$readperm = 5; //Admins (phpBB: 'AUTH_ADMIN', 5)
break;
case '2':
$readperm = 3; //Moderators (phpBB: 'AUTH_MOD', 3)
break;
case '3':
$readperm = 2; //Members (phpBB: 'AUTH_REG', 1)
break;
default: //Guest mgroup=9
$readperm = 0;
break;
}*/
-- $is_auth_read = array();
-- $is_auth_read = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
--
-- $unauthed = '0';
--
-- while ( list($forum_id, $auth_mode) = each($is_auth_read) )
-- {
-- if ( !$auth_mode['auth_read'] )
-- {
-- $unauthed .= ',' . $forum_id;
-- }
-- }
--
-- unset($is_auth_read);
$sql = "SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid
FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
WHERE pt.post_id = p.post_id
-- AND f.forum_id NOT IN (" . $unauthed . ")
AND f.forum_id = p.forum_id
#AND f.auth_read <= $readperm
AND p.topic_id = t.topic_id
AND p.poster_id = u.user_id
ORDER BY p.post_time DESC LIMIT 0,$limit";
$DB->query($sql);
while ( $post = $DB->fetch_row() ) {
$post['post_subject'] = strip_tags($post['topic_title']);
$post['post_subject'] = str_replace( "!" , "!" , $post['post_subject'] );
$post['post_subject'] = str_replace( """, "\"", $post['post_subject'] );
if (strlen($post['post_subject']) > $taglio) {
$post['post_subject'] = substr( $post['post_subject'],0,($taglio - 3) ) . "...";
$post['post_subject'] = preg_replace( '/&(#(\d+;?)?)?(\.\.\.)?$/', '...',$post['post_subject'] );
}
$post['date'] = $mklib->create_date($post['post_time']);
$tid = $post['post_id'];
$title = $post['post_subject'];
$mid = $post['user_id'];
$mname = $post['username'];
$date = $post['date'];
$content .= "
<tr>
-- <!-- $userdata;<br>
-- $unauthed;<br> -->
<td width=\"100%\" class=\"tdblock\">
<a class=\"uno\" href=\"$mkportals->forum_url/viewtopic.php?p=$tid#$tid\">$title</a>
</td>
</tr>
<tr>
<td class=\"tdglobal\">
<a class=\"uno\" href=\"$mkportals->forum_url/profile.php?mode=viewprofile&u=$mid\">$by: $mname</a><br /> $date
</td>
</tr>
";
}
return $content;
}

Вопрос в следующем, при таком коде переменная $userdata получается пустой, в результате чего, мы получаем разрешения на чтение форумов, как для гостя. Как это побороть?
Спасибо.
з.ы. PHP начал заниматься недавно, так что сильно не пинать. Процедура проверки на аутентифицированность взята из мода Glance. =)