0 $filterexpr"; $res=db_query($sql,$link); list($tcount)=db_fetch_row($res); db_free_result($res); } $perpage = intval(getvar("perpage")); $time=getvar("time"); if (!isset($_POST['time'])) $time=$GLOBALS['inuser']['u_timelimit']; if (!$perpage) $perpage=$GLOBALS['inuser']['u_tperpage']; $pages=build_pages($tcount,$start,$perpage,"index.php?f=$forum&perpage=$perpage&filter=$filter&o=$order&time=$time"); if ($GLOBALS['inuserid']>3) { $sql = "SELECT COUNT(tid) FROM ".$GLOBALS['DBprefix']."Subscription WHERE uid=".$GLOBALS['inuserid']." AND fid=".$GLOBALS['forum']." AND tid=4294967294"; $res = db_query($sql,$link); list($inforum)=db_fetch_row($res); db_free_result($res); $sql = "SELECT COUNT(tid) FROM ".$GLOBALS['DBprefix']."Subscription WHERE uid=".$GLOBALS['inuserid']." AND fid=".$GLOBALS['forum']." AND tid=4294967295"; $res = db_query($sql,$link); list($autosub)=db_fetch_row($res); db_free_result($res); } if (!$order) { $order="t__lastpostid"; $direct=" DESC"; } if (getvar("desc")) $direct=" DESC"; if ($time && $time!="0") $timelimit=$time*24*60*60; else $timelimit=$GLOBALS['curtime']; $timeexpr="AND p2.p__time>=".($GLOBALS['curtime']-$timelimit); if ($start!="all") $limit = " LIMIT $start,".($perpage); $sql = "SELECT t.*,p1.p_uname, p1.p_uid, p1.p__time AS fp__time, p2.p_uname AS lp_uname, p2.p_uid AS lp_uid, p2.p__time AS lp__time, pl_tid, t.t__ratingsum/t__ratingcount AS trating, tv.tid AS visited, t__pcount AS tl_count ". "FROM ".$GLOBALS['DBprefix']."Topic t, ".$GLOBALS['DBprefix']."Post p1, ".$GLOBALS['DBprefix']."Post p2 ". "LEFT JOIN ".$GLOBALS['DBprefix']."TopicView tv ON (tv.tid=t.t_id AND tv.uid=".$GLOBALS['inuserid'].") ". "LEFT JOIN ".$GLOBALS['DBprefix']."Poll pl ON (pl.pl_tid=t.t_id) ". "WHERE t.t_fid=$forum AND p1.p_id=t.t__startpostid AND p1.p_tid=t.t_id AND p2.p_id=t.t__lastpostid AND p2.p_tid=t.t_id AND t__pcount>0 ". "$timeexpr $filterexpr ". "ORDER BY t__sticky DESC,$order".$direct.$limit; $res = db_query($sql,$link); // if ($GLOBALS['inuserlevel']>=1000) db_explain($sql); std_forum_start($pages,$perpage,$filter,$time); if ($start=="all") $perpage=$tcount; while (($tdata=db_fetch_array($res))) { if ($sticky==1 && $tdata['t__sticky']==0) std_topic_separator(); $sticky=$tdata['t__sticky']; $tpages = build_pages($tdata['tl_count'],-1,$GLOBALS['inuser']['u_mperpage'],"index.php?f=$forum&t=".$tdata['t_id']); std_topic_entry($tdata,$tpages); } if (db_num_rows($res)==0) std_forum_noentries(); std_forum_end($pages,$inforum,$autosub); } function view_topic() { if ($GLOBALS['inuserlevel']<$GLOBALS['inforum']['f_lread']) error(MSG_e_f_norightsread); $forum=$GLOBALS['forum']; $topic=$GLOBALS['topic']; $link=$GLOBALS['link']; $pcount[0]=$GLOBALS['intopic']['t__pcount']; $sql = "SELECT MIN(t_id), MAX(t_id) FROM ".$GLOBALS['DBprefix']."Topic WHERE t_fid=".$GLOBALS['forum']; $res = db_query($sql,$link); list($min_tid,$max_tid)=db_fetch_row($res); db_free_result($res); $rated=common_topic_view($topic); if (getvar("o")=="1") $sort=1; elseif (getvar("o")=="0") $sort=0; else $sort=$GLOBALS['inuser']['u_sortposts']; $start=getvar("st"); if (!$start && isset($_GET['st'])) $start="0"; if ($sort==1) $order="DESC"; if ($post=getvar('p')) { if ($sort==1) $sql = "SELECT COUNT(*) FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=$topic AND p_id>\"$post\""; else $sql="SELECT COUNT(*) FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=$topic AND p_id<\"$post\""; $res=db_query($sql,$link); list($start)=db_fetch_row($res); db_free_result($res); if ($sort==1) { if ($start>$GLOBALS['inuser']['u_mperpage']) $start=$start-$GLOBALS['inuser']['u_mperpage']; else $start="0"; } } if (!isset($_GET['st']) && !$post && $pcount[0]>$GLOBALS['inuser']['u_mperpage'] && !$sort) { $start=$pcount[0]-$GLOBALS['inuser']['u_mperpage']; } elseif ($start=="new") { if ($sort==1) $sql = "SELECT COUNT(*)+1 FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=$topic AND p__time>".$GLOBALS['userlast2']." "; else "SELECT COUNT(*)+1 FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=$topic AND p__time<=".$GLOBALS['userlast2']." "; $res=db_query($sql,$link); list($start)=db_fetch_row($res); db_free_result($res); if ($sort==1) { if ($start>$GLOBALS['inuser']['u_mperpage']) $start=$start-$GLOBALS['inuser']['u_mperpage']; else $start="0"; } } if (!$start) $start="0"; if ($start!="all" && !$onlynew) $limit = " LIMIT $start,".$GLOBALS['inuser']['u_mperpage']; elseif ($onlynew) $limit = " LIMIT 0,".($GLOBALS['inuser']['u_mperpage']); $pages=build_pages($pcount[0],$start,$GLOBALS['inuser']['u_mperpage'],"index.php?t=$topic&o=$sort"); if (!getvar("preview")) { $intopic=$GLOBALS['intopic']; if ($intopic['pl_tid']) { if ($intopic['voted'] || $GLOBALS['inuserid']<=3 || ($intopic['pl_enddate'] && $intopic['pl_enddate']<$GLOBALS['curtime'])) std_vote_resbegin($intopic); else std_vote_begin($intopic); $sql = "SELECT pv_id,pv_text, pv_count AS pv_count FROM ".$GLOBALS['DBprefix']."PollVariant pv ". " WHERE pv_plid=".$intopic['pl_id']; $res = db_query($sql,$link); $pv_text = array(); while ($pv_data=db_fetch_array($res)) { $pv_count[$pv_data['pv_id']]=$pv_data['pv_count']; $pv_total+=$pv_data['pv_count']; $pv_text[$pv_data['pv_id']]=$pv_data['pv_text']; } db_free_result($res); foreach ($pv_text as $curid=>$curtext) { if ($intopic['voted'] || $GLOBALS['inuserid']<=3 || ($intopic['pl_enddate'] && $intopic['pl_enddate']<$GLOBALS['curtime'])) std_vote_resentry($pv_text[$curid],$pv_count[$curid],$pv_total); else std_vote_entry($pv_text[$curid],$curid); } if ($intopic['voted'] || $GLOBALS['inuserid']<=3 || ($intopic['pl_enddate'] && $intopic['pl_enddate']<$GLOBALS['curtime'])) std_vote_resend($pv_total); else std_vote_end(); } } $sql = "SELECT DISTINCTROW p_uid FROM ".$GLOBALS['DBprefix']."Post p WHERE p_tid=$topic AND p__premoderate=0"; $res = db_query($sql,$link); $userlist=array(); while ($tmpuser=db_fetch_row($res)) { if ($tmpuser[0]>3) $userlist[]=$tmpuser[0]; } db_free_result($res); if (count($userlist)>0) $sqldata="us.uid=".join(" OR us.uid=",$userlist); else $sqldata=1; $sql = "SELECT us.uid,SUM(us_count) FROM ".$GLOBALS['DBprefix']."UserStat us, ".$GLOBALS['DBprefix']."Forum f ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=".$GLOBALS['inuserid']." AND f_id=ua.fid) ". "WHERE ($sqldata) AND f_id=us.fid AND f_nostats=0 AND f_lview<=IFNULL(ua_level,".$GLOBALS['inuserbasic'].") ". "GROUP BY us.uid"; $res = db_query($sql,$link); while ($udata=db_fetch_row($res)) { $ucount[$udata[0]]=$udata[1]; } db_free_result($res); // if ($post) $border=" AND p_id>=\"$post\""; // elseif ($post && $sort==1) $border=" AND p_id<=\"$post\""; $sql = "SELECT p.*, ua.ua_level, u.*, l_title, file_type, file_name, ". "file_size, lv.lv_time1 AS ud_last, u__warnings AS uw_count, ". "ur.uid>0 AS rated, u__rating AS ud_rating ". "FROM ".$GLOBALS['DBprefix']."Post p, ".$GLOBALS['DBprefix']."User u ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u.u_id AND ua.fid=".$GLOBALS['forum'].") ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserLevel ul ON (IFNULL(ua_level,u__level)=l_level)". "LEFT JOIN ".$GLOBALS['DBprefix']."LastVisit lv ON (lv.uid=u.u_id AND lv.fid=$forum) ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserRating ur ON (ur.uid=u.u_id AND ur.ur_rated=".$GLOBALS['inuserid']." AND ur.ur_time>".($GLOBALS['curtime']-$GLOBALS['opt_ratetime']*24*60*60).") ". "LEFT JOIN ".$GLOBALS['DBprefix']."File ON (".$GLOBALS['DBprefix']."File.file_id=p.p_attach) ". " WHERE p.p_tid = $topic AND p.p_uid=u.u_id AND p__premoderate=0 "; std_topic_start($pages,$GLOBALS['intopic'],$rated,$sort,$min_tid,$max_tid); if ($GLOBALS['intopic']['t__stickypost'] && (($start!=0 && $start!="all") || ($order==1))) { $sql2=$sql." ORDER BY p_id LIMIT 1"; $res = db_query($sql2,$link); $pdata=db_fetch_array($res); $pdata['ud_count']=$ucount[$pdata['p_uid']]; std_post_entry($pdata); std_post_separator(); } $sql.=" ORDER BY p_id $order $limit"; $res = db_query($sql,$link); $counter=0; while ($pdata=db_fetch_array($res)) { $pdata['ud_count']=$ucount[$pdata['p_uid']]; if ($pdata['p_uid']==2) std_system_post($pdata['p_text'],$pdata['p__time']); else std_post_entry($pdata); if ($GLOBALS['intopic']['t__stickypost'] && ($start==0 || $start=="all") && $counter==0) std_post_separator(); $counter++; } std_topic_end($pages,$GLOBALS['intopic'],$prev_tid,$next_tid,$intopic['pl_tid'],$rated); if ($GLOBALS['inuserlevel']>=$GLOBALS['inforum']['f_lpost'] && !$GLOBALS['intopic']['t__status'] && !$GLOBALS['intopic']['f_status']) { $pdata['p__html']=($GLOBALS['inuserlevel']>=$GLOBALS['inforum']['f_lhtml']); $pdata['p__bcode']=$GLOBALS['inforum']['f_bcode']; $pdata['p__smiles']=$GLOBALS['inforum']['f_smiles']; $pdata['p_signature']=$GLOBALS['inuser']['u_usesignature']; std_post_form(MSG_p_create,"do_post",$pdata,0); } } function do_post() { if (getvar("preview")) { preview(); return; } process_post($GLOBALS['topic']); $link=$GLOBALS['link']; if (!$GLOBALS['inforum']['f_premoderate'] || $GLOBALS['inuserlevel']>=$GLOBALS['inforum']['f_lmoderate']) topic_message(MSG_p_done,1); else topic_message(MSG_p_premoderated,1); } function do_topic() { if (getvar("more")) { preview(1); return; } if (getvar("preview")) { preview(); return;} $inforum=$GLOBALS['inforum']; $forum=$GLOBALS['forum']; $inuserlevel=$GLOBALS['inuserlevel']; $inuser=$GLOBALS['inuser']; $inuserid=$GLOBALS['inuserid']; $link=$GLOBALS['link']; if ($inuserlevel<$inforum['f_ltopic']) error(MSG_e_t_norights); if (!getvar("t_title")) error(MSG_e_t_empty); if ($inforum['f_status']!=0) error(MSG_e_f_closed); $GLOBALS['ttitle']=getvar('t_title'); $sqldata = build_sql("t_"); $sqldata.= check_topic_params(); $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Topic SET t_fid=\"$forum\", $sqldata"; $res = db_query($sql,$link); $GLOBALS['topic'] = db_insert_id($res); $topic = $GLOBALS['topic']; $sql = "SELECT uid FROM ".$GLOBALS['DBprefix']."Subscription WHERE fid=".$GLOBALS['forum']." AND tid=4294967295"; $res = db_query($sql,$link); $sqldata=""; while ($uid=db_fetch_row($res)) { if ($uid[0]!=$GLOBALS['inuserid'] || !getvar('subscr')) { if ($sqldata) $sqldata.=", "; $sqldata = "(".$uid[0].",$topic,$forum)"; } } if ($sqldata) { $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Subscription VALUES $sqldata"; $res = db_query($sql,$link); } $GLOBALS['intopic']['t_title']=getvar('t_title'); if (!$GLOBALS['inforum']['f_premoderate'] || $GLOBALS['inuserlevel']>=$GLOBALS['inforum']['f_lmoderate']) { $sql = "SELECT u__name,u__email FROM ".$GLOBALS['DBprefix']."Subscription sb, ".$GLOBALS['DBprefix']."User u WHERE sb.uid=u.u_id AND sb.fid=".$GLOBALS['forum']. " AND sb.tid=4294967294 AND sb.uid!=".$GLOBALS['inuserid']; $res = db_query($sql,$link); $buffer=load_mail("std_tpc.txt"); } else { $sql = "SELECT u__name,u__email FROM ".$GLOBALS['DBprefix']."Subscription sb, ".$GLOBALS['DBprefix']."User u ". "LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u.u_id AND ua.fid=".$GLOBALS['forum'].") ". " WHERE sb.uid=u.u_id AND sb.fid=".$GLOBALS['forum']. " AND sb.tid=4294967294 AND sb.uid!=".$GLOBALS['inuserid']. " AND IFNULL(ua_level,u__level)<=".$GLOBALS['inforum']['f_lmoderate']; $res = db_query($sql,$link); $buffer=load_mail("std_tpm.txt"); $GLOBALS['premod_link']=$GLOBALS['opt_url']."/index.php?m=moderate&a=premod&f=".$GLOBALS['forum']; } while ($email=db_fetch_row($res)) { $GLOBALS['username']=$email[0]; $GLOBALS['postername']=$GLOBALS['inuser']['u__name']; $GLOBALS['ftitle']=$GLOBALS['inforum']['f_title']; $GLOBALS['text']=$_POST['p_text']; $GLOBALS['flink']=$GLOBALS['opt_url']."/index.php?t=".$GLOBALS['topic']; $GLOBALS['sublink']=$GLOBALS['opt_url']."/agent.php?a=subscr&u=".$GLOBALS['inuserid']."&t=". $GLOBALS['topic']."&key=".md5($GLOBALS['topic'].$GLOBALS['inuser']['u__key']); $GLOBALS['unsublink']=$GLOBALS['opt_url']."/agent.php?a=unsub&u=".$GLOBALS['inuserid']."&t=". $GLOBALS['topic']."&key=".md5($GLOBALS['topic'].$GLOBALS['inuser']['u__key']); replace_mail($buffer,$email[1],MSG_p_newmessage." ".$GLOBALS['ttitle']); } $pid=process_post($GLOBALS['topic']); topic_increment($GLOBALS['forum'],$topic,$pid); $is_vote=is_array($_POST['pl_text']); if ($is_vote) foreach ($_POST['pl_text'] as $curline) if ($curline) { $votecount++; } if (getvar("vote") && $is_vote && $votecount) { if ($GLOBALS['inuserlevel']<$inforum['f_lpoll']) error(MSG_e_v_norights); $pl_title=getvar("pl_title"); $pl_tid=$GLOBALS['topic']; if (getvar("voteend")) $pl_enddate=time()+getvar("voteend")*24*60*60; else $pl_enddate=0; $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Poll VALUES (0,$pl_tid,\"$pl_title\",$pl_enddate)"; $res = db_query($sql,$link); $pl_plid=db_insert_id($res); $votevars = $_POST['pl_text']; foreach ($votevars as $curnumer=>$curvalue) { if ($curvalue) { if ($sqldata) $sqldata.=", "; $sqldata.="(0,$pl_plid,\"".db_slashes($curvalue)."\",0)"; } } $sql = "INSERT INTO ".$GLOBALS['DBprefix']."PollVariant VALUES $sqldata"; $res = db_query($sql,$link); } if (!$GLOBALS['inforum']['f_premoderate'] || $GLOBALS['inuserlevel']>=$GLOBALS['inforum']['f_lmoderate']) topic_message(MSG_t_done,1); else { $GLOBALS['refpage']="index.php?f=".$GLOBALS['forum']; message(MSG_t_premoderated,1); } } function std_newtopic() { if ($GLOBALS['inuserlevel']<$GLOBALS['inforum']['f_ltopic']) error(MSG_e_t_norights); if ($GLOBALS['inuserlevel']<$GLOBALS['inforum']['f_lpoll'] && getvar("vote")) error(MSG_e_v_norights); $pdata['p__html']=($GLOBALS['inuserlevel']>=$GLOBALS['inforum']['f_lhtml']); $pdata['p__bcode']=$GLOBALS['inforum']['f_bcode']; $pdata['p__smiles']=$GLOBALS['inforum']['f_smiles']; $pdata['p_signature']=$GLOBALS['inuser']['u_usesignature']; $votecount=array(); if (getvar("vote")) for ($i=0; $i<$GLOBALS['opt_defvotecount']; $i++) array_push($votecount,$i); std_post_form(MSG_t_create,"do_topic",$pdata,$votecount); } function edit() { edit_post('std_post_form',MSG_p_edit); } function do_delete() { do_delete_comment(); } function preview($type=0) { if ($type==0) std_topic_start("",$GLOBALS['intopic'],0,0,0,0); $pdata=$GLOBALS['inuser']; $pdata['p_uname']=$pdata['u__name']; $pdata['p_text']=$_POST["p_text"]; $pdata['p__html']=getvar("p__html"); $pdata['p__bcode']=getvar("p__bcode"); $pdata['p__smiles']=getvar("p__smiles"); $pdata['t_title']=getvar("t_title"); $pdata['t_descr']=getvar("t_descr"); $pdata['p_title']=getvar("p_title"); $pdata['t_descr']=getvar("t_descr"); $pdata['voteend']=getvar("voteend"); $pdata['p_signature']=getvar("p_signature"); $pdata['p_uid']=$GLOBALS['inuserid']; $pdata['ud_last']=time(); $pdata['p__time']=$pdata['ud_last']; $pdata['pl_title']=getvar("pl_title"); $pl_text=$_POST['pl_text']; $counter=array(); if ($pl_text) { foreach ($pl_text as $curid=>$curtext) { $pdata['votevar'][$curid]=$curtext; array_push($counter,$curid); } } if ($type==1) for ($i=0; $i<$GLOBALS['opt_defvotecount']; $i++) array_push($counter,$i+count($pl_text)); if ($type==0) { std_post_entry($pdata); std_topic_end("",$GLOBALS['intopic'],0,0,0,0); } std_post_form(MSG_preview,$GLOBALS['action'],$pdata,$counter); } function do_vote() { if ($GLOBALS['inuserlevel']<$inforum['f_lvote']) error(MSG_e_v_norightsvote); $link=$GLOBALS['link']; $intopic=$GLOBALS['intopic']; if ($intopic['voted']) error(MSG_e_v_already); $pvid=getvar("pv_id"); if (!$pvid) error(MSG_e_v_novariant); $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Vote (pvid,uid,tid) VALUES(\"".$pvid."\",\"".$GLOBALS['inuserid']."\",".$GLOBALS['topic'].")"; $res = db_query($sql,$link); $sql = "UPDATE ".$GLOBALS['DBprefix']."PollVariant SET pv_count=pv_count+1 WHERE pv_id=\"$pvid\""; $res = db_query($sql,$link); message(MSG_v_voted); } function do_print() { print_start(); $link=$GLOBALS['link']; $sql = "SELECT * FROM ".$GLOBALS['DBprefix']."Post WHERE p_tid=\"".$GLOBALS['topic']."\""; $res = db_query($sql,$link); while ($pdata=db_fetch_array($res)) { print_entry($pdata); } print_end(); } function do_sub() { $link=$GLOBALS['link']; $tid=getvar("tid"); $fid=$GLOBALS['forum']; $sql = "DELETE FROM ".$GLOBALS['DBprefix']."Subscription WHERE fid=$fid AND tid=\"$tid\" AND uid=".$GLOBALS['inuserid']; $res = db_query($sql,$link); if (getvar("sub")) { $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Subscription SET uid=".$GLOBALS['inuserid'].", fid=$fid, tid=\"$tid\""; $res = db_query($sql,$link); } $GLOBALS['refpage']="index.php?f=".$GLOBALS['forum']; message(MSG_sub_saved,1); } function stdforum_locations($locations) { push_parents($locations,$GLOBALS['inforum']['f_parent']); if ($GLOBALS['action']=="stdforum_view") { if ($GLOBALS['topic']) { array_push($locations,"".$GLOBALS['inforum']['f_title'].""); array_push($locations,$GLOBALS['intopic']['t_title']); $GLOBALS['rss_link']="rss.php?t=".$GLOBALS['topic']."&count=".$GLOBALS['inuser']['u_mperpage']; } else { array_push($locations,$GLOBALS['inforum']['f_title']); $GLOBALS['rss_link']="rss.php?f=".$GLOBALS['forum']."&count=".$GLOBALS['inuser']['u_tperpage']; } } elseif ($GLOBALS['action']=="std_newtopic") { array_push($locations,"".$GLOBALS['inforum']['f_title'].""); array_push($locations,MSG_t_creating); if (getvar("preview")) array_push($locations,MSG_preview); } elseif ($GLOBALS['action']=="do_post") { array_push($locations,"".$GLOBALS['inforum']['f_title'].""); array_push($locations,"".$GLOBALS['intopic']['t_title'].""); if (getvar("preview")) array_push($locations,MSG_preview); } elseif ($GLOBALS['action']=="do_topic") { array_push($locations,"".$GLOBALS['inforum']['f_title'].""); array_push($locations,MSG_t_creating); if (getvar("preview")) array_push($locations,MSG_preview); } elseif ($GLOBALS['action']=="edit") { array_push($locations,"".$GLOBALS['inforum']['f_title'].""); array_push($locations,"".$GLOBALS['intopic']['t_title'].""); array_push($locations,MSG_p_edit); } return $locations; }