
Возникла вот проблемка небольшая.
По умолчанию модуль "Последние сообщение на форуме" для портала 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. =)




