PDA

View Full Version : Help with Active Topics Hack


ryanhulce
06-05-2002, 08:10 PM
I'm trying to hack the Active Topics code so that it will show only topics/threads from forums that the current user has access ('canview') too... I got part of this code from another post and I've modified it from there... It just continues to show all the forums and not just the ones the user has access too..


<?php

if (!eregi("modules.php", $PHP_SELF)) {
die ("You can't access this file directly...");
}
if (!isset($mainfile)) { include("mainfile.php"); }
$index=1;
global $Pmenu,$breadcrumb;
$Pmenu="";
$breadcrumb="Most Active Topics";
$templatesused ='P_activetopicbits,P_activetopics';
include("header.php");
$num_active=25;

// Display activetopics

global $DB_site,$bgcolor3,$bgcolor4,$dateformat,$timeform at;
// My hacking starts here

$whereatsql2 = "forumid!='-1'";

if ($excatforums == "" or $excatforums <= "0") {
$whereatsql = "WHERE visible";
} else {
$whereatsql = "WHERE thread.open!='10'";
$excatfid = explode(",",$excatforums); $ia = 0; $vbp_at = count($excatfid);
while ($ia < $vbp_at) {
$whereatsql .= "AND forumid!='$excatfid[$ia]'";
$whereatsql2 .= "AND forumid!='$excatfid[$ia]'";
++$ia;
}
}

$doperms=$DB_site->query("SELECT canview,forumid FROM forumpermission WHERE usergroupid='$bbuserinfo[usergroupid]' AND $whereatsql2");
while ($doperm = $DB_site->fetch_array($doperms)) {
$perms['$doperm[forumid]'] = $doperm;
}
$DB_site->free_result($doperms);
unset($doperm);
$whereatsql = "WHERE thread.open!='10'";

$forum=$DB_site->query("SELECT forumid FROM forum");
while ($forums=$DB_site->fetch_array($forum)) {
if($perms['$forums[forumid]']['canview']) {
$whereatsql .= " AND forumid='$forums[forumid]'";
}
}
$DB_site->free_result($forum);
unset($forums);




// My Hacking Ends here

$result = $DB_site->query("select * from thread $whereatsql order by lastpost desc limit $num_active");

while ($latest_array = $DB_site->fetch_array($result)) {




// Get Forum Infomation
$result_forum = $DB_site->query("select * from forum where forumid='$latest_array[forumid]'");
$forum_info_array = $DB_site->fetch_array($result_forum);
$result_thread_text = $DB_site->query("select * from post where threadid='$latest_array[threadid]' order by dateline desc limit 1");
$result_thread_array = $DB_site->fetch_array($result_thread_text);
$title1 = substr($forum_info_array["title"],0,$ftitle1en);
$title1 =substr ( $title1, 0, strrpos($title1," "));
$title2 = substr($latest_array["title"],0,$ttitle1en);
if (strlen($title2) > $ttitle1en) {
$title2 =substr ( $title2, 0, strrpos($title2," "));
}
$aticonid = $result_thread_array["iconid"];
$startedby = $latest_array["postusername"];
$lastposter = $latest_array["lastposter"];
$mpostid= $result_thread_array["postid"];
$atpostdate=vbdate($dateformat,$result_thread_arra y[dateline]);
$atposttime=vbdate($timeformat,$result_thread_arra y[dateline]);
if ($showtopicdesc){
$atpagetext = $result_thread_array[pagetext];
if (strlen($atpagetext) > $atpagetext) {
$atpagetext = substr($atpagetext,0,$num_topicchars);
$atpagetext =substr ( $atpagetext, 0, strrpos($atpagetext," "));
$atpagetext .= "...";
}
$atpagetext=bbcodeparse($atpagetext,$forumid,1);
}else{
$atpagetext="";
}

$gothreadid = $latest_array["threadid"];
if (($counter++ % 2) != 0) {
$vbp_atbc=$vbp_atbc1;
} else {
$vbp_atbc=$vbp_atbc2;
}

eval("\$P_activetopic_centerboxbit .= \"".gettemplate('P_activetopic_centerboxbit')."\";");
}

eval("dooutput(\"".gettemplate('P_activetopic_centerbox')."\");");
unset($num_active);
include("footer.php");


?>

ryanhulce
06-06-2002, 04:13 PM
Figured it out... I started over with new code, used the getpermissions function...