home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / akce / web / phpnuke / PHP-Nuke-7.5.exe / html / modules / News / comments.php < prev    next >
PHP Script  |  2004-08-21  |  36KB  |  815 lines

  1. <?php
  2.  
  3. /************************************************************************/
  4. /* PHP-NUKE: Web Portal System                                          */
  5. /* ===========================                                          */
  6. /*                                                                      */
  7. /* Copyright (c) 2002 by Francisco Burzi                                */
  8. /* http://phpnuke.org                                                   */
  9. /*                                                                      */
  10. /* This program is free software. You can redistribute it and/or modify */
  11. /* it under the terms of the GNU General Public License as published by */
  12. /* the Free Software Foundation; either version 2 of the License.       */
  13. /************************************************************************/
  14. /*         Additional security & Abstraction layer conversion           */
  15. /*                           2003 chatserv                              */
  16. /*      http://www.nukefixes.com -- http://www.nukeresources.com        */
  17. /************************************************************************/
  18.  
  19. if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
  20.    die ("You can't access this file directly...");
  21. }
  22. require_once("mainfile.php");
  23. $module_name = basename(dirname(__FILE__));
  24. get_lang($module_name);
  25.  
  26. function format_url($comment) {
  27.     global $nukeurl;
  28.     unset($location);
  29.     $comment = $comment;
  30.     $links = array();
  31.     $hrefs = array();
  32.     $pos = 0;
  33.     while (!(($pos = strpos($comment,"<",$pos)) === false)) {
  34.     $pos++;
  35.     $endpos = strpos($comment,">",$pos);
  36.     $tag = substr($comment,$pos,$endpos-$pos);
  37.     $tag = trim($tag);
  38.     if (isset($location)) {
  39.             if (!strcasecmp(strtok($tag," "),"/A")) {
  40.             $link = substr($comment,$linkpos,$pos-1-$linkpos);
  41.             $links[] = $link;
  42.             $hrefs[] = $location;
  43.             unset($location);
  44.             }
  45.         $pos = $endpos+1;
  46.     } else {
  47.         if (!strcasecmp(strtok($tag," "),"A")) {
  48.         if (eregi("HREF[ \t\n\r\v]*=[ \t\n\r\v]*\"([^\"]*)\"",$tag,$regs));
  49.         else if (eregi("HREF[ \t\n\r\v]*=[ \t\n\r\v]*([^ \t\n\r\v]*)",$tag,$regs));
  50.         else $regs[1] = "";
  51.         if ($regs[1]) {
  52.                 $location = $regs[1];
  53.         }
  54.         $pos = $endpos+1;
  55.         $linkpos = $pos;
  56.         } else {
  57.         $pos = $endpos+1;
  58.         }
  59.     }
  60.     }
  61.     for ($i=0; $i<sizeof($links); $i++) {
  62.     if (!eregi("http://", $hrefs[$i])) {
  63.         $hrefs[$i] = $nukeurl;
  64.     } elseif (!eregi("mailto://", $hrefs[$i])) {
  65.         $href = explode("/",$hrefs[$i]);
  66.         $href = " [$href[2]]";
  67.         $comment = ereg_replace(">$links[$i]</a>", "title='$hrefs[$i]'> $links[$i]</a>$href", $comment);
  68.     }
  69.     }
  70.     return($comment);
  71. }
  72.  
  73. function modone() {
  74.     global $admin, $moderate, $module_name;
  75.     if(((isset($admin)) && ($moderate == 1)) || ($moderate==2)) echo "<form action=\"modules.php?name=$module_name&file=comments\" method=\"post\">";
  76. }
  77.  
  78. function modtwo($tid, $score, $reason) {
  79.     global $admin, $user, $moderate, $reasons;
  80.     if((((isset($admin)) && ($moderate == 1)) || ($moderate == 2)) && ($user)) {
  81.     echo " | <select name=dkn$tid>";
  82.     for($i=0; $i<sizeof($reasons); $i++) {
  83.         echo "<option value=\"$score:$i\">$reasons[$i]</option>\n";
  84.     }
  85.     echo "</select>";
  86.     }
  87. }
  88.  
  89. function modthree($sid, $mode, $order, $thold=0) {
  90.     global $admin, $user, $moderate;
  91.     if((((isset($admin)) && ($moderate == 1)) || ($moderate==2)) && ($user)) echo "<center><input type=hidden name=sid value=$sid><input type=hidden name=mode value=$mode><input type=hidden name=order value=$order><input type=hidden name=thold value=$thold>
  92.     <input type=hidden name=op value=moderate>
  93.     <input type=image src=images/menu/moderate.gif border=0></form></center>";
  94. }
  95.  
  96. function nocomm() {
  97.     OpenTable();
  98.     echo "<center><font class=\"content\">"._NOCOMMENTSACT."</font></center>";
  99.     CloseTable();
  100. }
  101.  
  102. function navbar($sid, $title, $thold, $mode, $order) {
  103.     global $user, $bgcolor1, $bgcolor2, $textcolor1, $textcolor2, $anonpost, $prefix, $db, $module_name;
  104.     $query = $db->sql_query("SELECT * FROM ".$prefix."_comments WHERE sid='$sid'");
  105.     if(!$query) {
  106.     $count = 0;
  107.     } else {
  108.     $count = $db->sql_numrows($query);
  109.     }
  110.     if(!isset($thold)) {
  111.     $thold=0;
  112.     }
  113.     echo "\n\n<!-- COMMENTS NAVIGATION BAR START -->\n\n";
  114.     OpenTable();
  115.     echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">\n";
  116.     if($title) {
  117.     echo "<tr><td bgcolor=\"$bgcolor2\" align=\"center\"><font class=\"content\" color=\"$textcolor1\">\"$title\" | ";
  118.     if(is_user($user)) {
  119.         echo "<a href=\"modules.php?name=Your_Account&op=editcomm\"><font color=\"$textcolor1\">"._CONFIGURE."</font></a>";
  120.     } else {
  121.         echo "<a href=\"modules.php?name=Your_Account\"><font color=\"$textcolor1\">"._LOGINCREATE."</font></a>";
  122.     }
  123.     if(($count==1)) {
  124.         echo " | <B>$count</B> "._COMMENT."";
  125.     } else {
  126.         echo " | <B>$count</B> "._COMMENTS."";
  127.     }
  128.     if ($count > 0 AND is_active("Search")) {
  129.         echo " | <a href='modules.php?name=Search&type=comments&sid=$sid'>"._SEARCHDIS."</a>";
  130.     }
  131.     echo "</font></td></tr>\n";
  132.     }
  133.     echo "<tr><td bgcolor=\"$bgcolor1\" align=\"center\" width=\"100%\">\n";
  134.     if ($anonpost==1 OR is_admin($admin) OR is_user($user)) {
  135.         echo "<form action=\"modules.php?name=$module_name&file=comments\" method=\"post\">"
  136.             ."<input type=\"hidden\" name=\"pid\" value=\"$pid\">"
  137.             ."<input type=\"hidden\" name=\"sid\" value=\"$sid\">"
  138.             ."<input type=\"hidden\" name=\"op\" value=\"Reply\">"
  139.             ."<input type=\"submit\" value=\""._REPLYMAIN."\"></td></form></tr>";
  140.     }
  141.     echo "<tr><td bgcolor=\"$bgcolor2\" align=\"center\"><font class=\"tiny\">"._COMMENTSWARNING."</font></td></tr></table>"
  142.     ."\n\n<!-- COMMENTS NAVIGATION BAR END -->\n\n";
  143.     CloseTable();
  144.     if ($anonpost == 0 AND !is_user($user)) {
  145.         echo "<br>";
  146.     OpenTable();
  147.     echo "<center>"._NOANONCOMMENTS."</center>";
  148.     CloseTable();
  149.     }
  150. }
  151.  
  152. function DisplayKids ($tid, $mode, $order=0, $thold=0, $level=0, $dummy=0, $tblwidth=99) {
  153.     global $datetime, $user, $cookie, $bgcolor1, $reasons, $anonymous, $anonpost, $commentlimit, $prefix, $textcolor2, $db, $module_name;
  154.     $comments = 0;
  155.     cookiedecode($user);
  156.     $result = $db->sql_query("SELECT tid, pid, sid, date, name, email, host_name, subject, comment, score, reason FROM ".$prefix."_comments WHERE pid='$tid' ORDER BY date, tid");
  157.     if ($mode == 'nested') {
  158.     /* without the tblwidth variable, the tables run of the screen with netscape */
  159.     /* in nested mode in long threads so the text can't be read. */
  160.     while ($row = $db->sql_fetchrow($result)) {
  161.         $r_tid = intval($row['tid']);
  162.         $r_pid = intval($row['pid']);
  163.         $r_sid = intval($row['sid']);
  164.         $r_date = $row['date'];
  165.         $r_name = stripslashes($row['name']);
  166.         $r_email = stripslashes($row['email']);
  167.         $r_host_name = $row['host_name'];
  168.         $r_subject = stripslashes(check_html($row['subject'], "nohtml"));
  169.         $r_comment = stripslashes($row['comment']);
  170.         $r_score = intval($row['score']);
  171.         $r_reason = intval($row['reason']);
  172.         if($r_score >= $thold) {
  173.         if (!isset($level)) {
  174.         } else {
  175.             if (!$comments) {
  176.             echo "<ul>";
  177.             $tblwidth -= 5;
  178.             }
  179.         }
  180.         $comments++;
  181.         if (!eregi("[a-z0-9]",$r_name)) $r_name = $anonymous;
  182.         if (!eregi("[a-z0-9]",$r_subject)) $r_subject = "["._NOSUBJECT."]";
  183.         // HIJO enter hex color between first two appostrophe for second alt bgcolor
  184.         $r_bgcolor = ($dummy%2)?"":"#E6E6D2";
  185.         echo "<a name=\"$r_tid\">";
  186.         echo "<table border=\"0\"><tr bgcolor=\"$bgcolor1\"><td>";
  187.         formatTimestamp($r_date);
  188.         if ($r_email) {
  189.             echo "<b>$r_subject</b> <font class=\"content\">";
  190.             if(!$cookie[7]) {
  191.             echo "("._SCORE." $r_score";
  192.             if($r_reason>0) echo ", $reasons[$r_reason]";
  193.             echo ")";
  194.             }
  195.             echo "<br>"._BY." <a href=\"mailto:$r_email\">$r_name</a> <font class=\"content\"><b>($r_email)</b></font> "._ON." $datetime";
  196.         } else {
  197.             echo "<b>$r_subject</b> <font class=\"content\">";
  198.             if(!$cookie[7]) {
  199.             echo "("._SCORE." $r_score";
  200.             if($r_reason>0) echo ", $reasons[$r_reason]";
  201.             echo ")";
  202.             }
  203.             echo "<br>"._BY." $r_name "._ON." $datetime";
  204.         }            
  205.         if ($r_name != $anonymous) { 
  206.             $row2 = $db->sql_fetchrow($db->sql_query("SELECT user_id FROM ".$prefix."_users WHERE username='$r_name'"));
  207.             $r_uid = intval($row2['user_id']);
  208.             echo "<br>(<a href=\"modules.php?name=Your_Account&op=userinfo&username=$r_name\">"._USERINFO."</a> | <a href=\"modules.php?name=Private_Messages&mode=post&u=$r_uid\">"._SENDAMSG."</a>) ";
  209.         }
  210.         $row_url = $db->sql_fetchrow($db->sql_query("SELECT user_website FROM ".$prefix."_users WHERE username='$r_name'"));
  211.         $url = stripslashes($row_url['user_website']);
  212.         if ($url != "http://" AND $url != "" AND eregi("http://", $url)) { echo "<a href=\"$url\" target=\"new\">$url</a> "; }
  213.         echo "</font></td></tr><tr><td>";
  214.         if(($cookie[10]) && (strlen($r_comment) > $cookie[10])) echo substr("$r_comment", 0, $cookie[10])."<br><br><b><a href=\"modules.php?name=$module_name&file=comments&sid=$r_sid&tid=$r_tid&mode=$mode&order=$order&thold=$thold\">"._READREST."</a></b>";
  215.         elseif(strlen($r_comment) > $commentlimit) echo substr("$r_comment", 0, $commentlimit)."<br><br><b><a href=\"modules.php?name=$module_name&file=comments&sid=$r_sid&tid=$r_tid&mode=$mode&order=$order&thold=$thold\">"._READREST."</a></b>";
  216.         else echo $r_comment;
  217.         echo "</td></tr></table><br><br>";
  218.         if ($anonpost==1 OR is_admin($admin) OR is_user($user)) {
  219.             echo "<font class=\"content\" color=\"$textcolor2\"> [ <a href=\"modules.php?name=$module_name&file=comments&op=Reply&pid=$r_tid&sid=$r_sid&mode=$mode&order=$order&thold=$thold\">"._REPLY."</a>";
  220.         }
  221.         modtwo($r_tid, $r_score, $r_reason);
  222.         echo " ]</font><br><br>";
  223.         DisplayKids($r_tid, $mode, $order, $thold, $level+1, $dummy+1, $tblwidth);
  224.         }
  225.     }
  226.     } elseif ($mode == 'flat') {
  227.         while ($row = $db->sql_fetchrow($result)) {
  228.         $r_tid = intval($row['tid']);
  229.         $r_pid = intval($row['pid']);
  230.         $r_sid = intval($row['sid']);
  231.         $r_date = $row['date'];
  232.         $r_name = stripslashes($row['name']);
  233.         $r_email = stripslashes($row['email']);
  234.         $r_host_name = $row['host_name'];
  235.         $r_subject = stripslashes(check_html($row['subject'], "nohtml"));
  236.         $r_comment = stripslashes($row['comment']);
  237.         $r_score = intval($row['score']);
  238.         $r_reason = intval($row['reason']);
  239.         if($r_score >= $thold) {
  240.             if (!eregi("[a-z0-9]",$r_name)) $r_name = $anonymous;
  241.             if (!eregi("[a-z0-9]",$r_subject)) $r_subject = "["._NOSUBJECT."]";
  242.             echo "<a name=\"$r_tid\">";
  243.             echo "<hr><table width=\"99%\" border=\"0\"><tr bgcolor=\"$bgcolor1\"><td>";
  244.             formatTimestamp($r_date);
  245.             if ($r_email) {
  246.             echo "<b>$r_subject</b> <font class=\"content\">";
  247.             if(!$cookie[7]) {
  248.                 echo "("._SCORE." $r_score";
  249.                 if($r_reason>0) echo ", $reasons[$r_reason]";
  250.                 echo ")";
  251.             }
  252.             echo "<br>"._BY." <a href=\"mailto:$r_email\">$r_name</a> <font class=\"content\"><b>($r_email)</b></font> "._ON." $datetime";
  253.              } else {
  254.             echo "<b>$r_subject</b> <font class=\"content\">";
  255.             if(!$cookie[7]) {
  256.                 echo "("._SCORE." $r_score";
  257.                 if($r_reason>0) echo ", $reasons[$r_reason]";
  258.                 echo ")";
  259.             }
  260.             echo "<br>"._BY." $r_name "._ON." $datetime";
  261.             }            
  262.             if ($r_name != $anonymous) {
  263.             $row3 = $db->sql_fetchrow($db->sql_query("SELECT user_id FROM ".$prefix."_users WHERE username='$r_name'"));
  264.             $ruid = intval($row3['user_id']);
  265.             echo "<br>(<a href=\"modules.php?name=Your_Account&op=userinfo&username=$r_name\">"._USERINFO."</a> | <a href=\"modules.php?name=Private_Messages&mode=post&u=$ruid\">"._SENDAMSG."</a>) ";
  266.             }
  267.             $row_url2 = $db->sql_fetchrow($db->sql_query("SELECT user_website FROM ".$prefix."_users WHERE username='$r_name'"));
  268.             $url = stripslashes($row_url2['user_website']);
  269.             if ($url != "http://" AND $url != "" AND eregi("http://", $url)) { echo "<a href=\"$url\" target=\"new\">$url</a> "; }
  270.             echo "</font></td></tr><tr><td>";
  271.             if(($cookie[10]) && (strlen($r_comment) > $cookie[10])) echo substr("$r_comment", 0, $cookie[10])."<br><br><b><a href=\"modules.php?name=$module_name&file=comments&sid=$r_sid&tid=$r_tid&mode=$mode&order=$order&thold=$thold\">"._READREST."</a></b>";
  272.             elseif(strlen($r_comment) > $commentlimit) echo substr("$r_comment", 0, $commentlimit)."<br><br><b><a href=\"modules.php?name=$module_name&file=comments&sid=$r_sid&tid=$r_tid&mode=$mode&order=$order&thold=$thold\">"._READREST."</a></b>";
  273.             else echo $r_comment;
  274.             echo "</td></tr></table><br><br>";
  275.             if ($anonpost==1 OR is_admin($admin) OR is_user($user)) {
  276.             echo "<font class=\"content\" color=\"$textcolor2\"> [ <a href=\"modules.php?name=$module_name&file=comments&op=Reply&pid=$r_tid&sid=$r_sid&mode=$mode&order=$order&thold=$thold\">"._REPLY."</a>";
  277.             }
  278.             modtwo($r_tid, $r_score, $r_reason);
  279.             echo " ]</font><br><br>";
  280.             DisplayKids($r_tid, $mode, $order, $thold);
  281.         }
  282.         }
  283.     } else {
  284.             while ($row = $db->sql_fetchrow($result)) {
  285.         $r_tid = intval($row['tid']);
  286.         $r_pid = intval($row['pid']);
  287.         $r_sid = intval($row['sid']);
  288.         $r_date = $row['date'];
  289.         $r_name = stripslashes($row['name']);
  290.         $r_email = stripslashes($row['email']);
  291.         $r_host_name = $row['host_name'];
  292.         $r_subject = stripslashes(check_html($row['subject'], "nohtml"));
  293.         $r_comment = stripslashes($row['comment']);
  294.         $r_score = intval($row['score']);
  295.         $r_reason = intval($row['reason']);
  296.         if($r_score >= $thold) {
  297.             if (!isset($level)) {
  298.             } else {
  299.             if (!$comments) {
  300.                 echo "<ul>";
  301.             }
  302.             }
  303.             $comments++;
  304.             if (!eregi("[a-z0-9]",$r_name)) $r_name = $anonymous;
  305.             if (!eregi("[a-z0-9]",$r_subject)) $r_subject = "["._NOSUBJECT."]";
  306.             formatTimestamp($r_date);
  307.             echo "<li><font class=\"content\" color=\"$textcolor2\"><a href=\"modules.php?name=$module_name&file=comments&op=showreply&tid=$r_tid&sid=$r_sid&pid=$r_pid&mode=$mode&order=$order&thold=$thold#$r_tid\">$r_subject</a> "._BY." $r_name "._ON." $datetime</font><br>";
  308.             DisplayKids($r_tid, $mode, $order, $thold, $level+1, $dummy+1);
  309.         }
  310.         }
  311.     }
  312.     if ($level && $comments) {
  313.         echo "</ul>";
  314.     }
  315. }
  316.  
  317. function DisplayBabies ($tid, $level=0, $dummy=0) {
  318.     global $datetime, $anonymous, $prefix, $db, $module_name;
  319.     $comments = 0;
  320.     $result = $db->sql_query("SELECT tid, pid, sid, date, name, email, host_name, subject, comment, score, reason FROM ".$prefix."_comments WHERE pid='$tid' ORDER BY date, tid");
  321.     while ($row = $db->sql_fetchrow($result)) {
  322.         $r_tid = intval($row['tid']);
  323.         $r_pid = intval($row['pid']);
  324.         $r_sid = intval($row['sid']);
  325.         $r_date = $row['date'];
  326.         $r_name = stripslashes($row['name']);
  327.         $r_email = stripslashes($row['email']);
  328.         $r_host_name = $row['host_name'];
  329.         $r_subject = stripslashes(check_html($row['subject'], "nohtml"));
  330.         $r_comment = stripslashes($row['comment']);
  331.         $r_score = intval($row['score']);
  332.         $r_reason = intval($row['reason']);
  333.     if (!isset($level)) {
  334.     } else {
  335.         if (!$comments) {
  336.         echo "<ul>";
  337.         }
  338.     }
  339.     $comments++;
  340.     if (!eregi("[a-z0-9]",$r_name)) { $r_name = $anonymous; }
  341.     if (!eregi("[a-z0-9]",$r_subject)) { $r_subject = "["._NOSUBJECT."]"; }
  342.     formatTimestamp($r_date);
  343.     echo "<a href=\"modules.php?name=$module_name&file=comments&op=showreply&tid=$r_tid&mode=$mode&order=$order&thold=$thold\">$r_subject</a></font><font class=\"content\"> "._BY." $r_name "._ON." $datetime<br>";
  344.     DisplayBabies($r_tid, $level+1, $dummy+1);
  345.     } 
  346.     if ($level && $comments) {
  347.         echo "</ul>";
  348.     }
  349. }
  350.  
  351. function DisplayTopic ($sid, $pid=0, $tid=0, $mode="thread", $order=0, $thold=0, $level=0, $nokids=0) {
  352.     global $hr, $user, $datetime, $cookie, $mainfile, $admin, $commentlimit, $anonymous, $reasons, $anonpost, $foot1, $foot2, $foot3, $foot4, $prefix, $acomm, $articlecomm, $db, $module_name, $nukeurl;
  353.     if($mainfile) {
  354.     global $title, $bgcolor1, $bgcolor2, $bgcolor3;
  355.     } else {
  356.     global $title, $bgcolor1, $bgcolor2, $bgcolor3;
  357.     include("mainfile.php");
  358.     include("header.php");
  359.     }
  360.     if ($pid!=0) {
  361.     include("header.php");
  362.     }
  363.     $count_times = 0;
  364.     cookiedecode($user);
  365.     $q = "SELECT tid, pid, sid, date, name, email, host_name, subject, comment, score, reason FROM ".$prefix."_comments WHERE sid='$sid' and pid='$pid'";
  366.     if($thold != "") {
  367.     $q .= " AND score>='$thold'";
  368.     } else {
  369.     $q .= " AND score>='0'";
  370.     }
  371.     if ($order==1) $q .= " ORDER BY date DESC";
  372.     if ($order==2) $q .= " ORDER BY score DESC";
  373.     $something = $db->sql_query($q);
  374.     $num_tid = $db->sql_numrows($something);
  375.     if ($acomm == 1) {
  376.         nocomm();
  377.         return;
  378.     }
  379.     if (($acomm == 0) AND ($articlecomm == 1)) {
  380.     navbar($sid, $title, $thold, $mode, $order);
  381.     }
  382.     modone();
  383.     while ($count_times < $num_tid) {
  384.     echo "<br>";
  385.     OpenTable();
  386.     $row_q = $db->sql_fetchrow($something);
  387.     $tid = intval($row_q['tid']);
  388.     $pid = intval($row_q['pid']);
  389.     $sid = intval($row_q['sid']);
  390.     $date = $row_q['date'];
  391.     $c_name = stripslashes($row_q['name']);
  392.     $email = stripslashes($row_q['email']);
  393.     $host_name = $row_q['host_name'];
  394.     $subject = stripslashes(check_html($row_q['subject'], "nohtml"));
  395.     $comment = stripslashes($row_q['comment']);
  396.     $score = intval($row_q['score']);
  397.     $reason = intval($row_q['reason']);
  398.     if ($c_name == "") { $c_name = $anonymous; }
  399.     if ($subject == "") { $subject = "["._NOSUBJECT."]"; }    
  400.     echo "<a name=\"$tid\"></a>";
  401.     echo "<table width=\"99%\" border=\"0\"><tr bgcolor=\"$bgcolor1\"><td width=\"500\">";
  402.     formatTimestamp($date);
  403.     if ($email) {
  404.         echo "<b>$subject</b> <font class=\"content\">";
  405.         if(!$cookie[7]) {
  406.         echo "("._SCORE." $score";
  407.         if($reason>0) echo ", $reasons[$reason]";
  408.         echo ")";
  409.         }
  410.         echo "<br>"._BY." <a href=\"mailto:$email\">$c_name</a> <b>($email)</b> "._ON." $datetime"; 
  411.     } else {
  412.         echo "<b>$subject</b> <font class=\"content\">";
  413.         if(!$cookie[7]) {
  414.         echo "("._SCORE." $score";
  415.         if($reason>0) echo ", $reasons[$reason]";
  416.         echo ")";
  417.         }
  418.         echo "<br>"._BY." $c_name "._ON." $datetime";
  419.     }            
  420.         
  421.     /* If you are admin you can see the Poster IP address */
  422.     /* with this you can see who is flaming you...*/
  423.  
  424.     if (is_active("Journal")) {
  425.         $row = $db->sql_fetchrow($db->sql_query("SELECT jid FROM ".$prefix."_journal WHERE aid='$c_name' AND status='yes' ORDER BY pdate,jid DESC LIMIT 0,1"));
  426.         $jid = intval($row['jid']);
  427.         if ($jid != "" AND isset($jid)) {
  428.         $journal = " | <a href=\"modules.php?name=Journal&file=display&jid=$jid\">"._JOURNAL."</a>";
  429.         } else {
  430.         $journal = "";
  431.         }
  432.     }
  433.     if ($c_name != $anonymous) {
  434.         $row2 = $db->sql_fetchrow($db->sql_query("SELECT user_id FROM ".$prefix."_users WHERE username='$c_name'"));
  435.         $r_uid = intval($row2['user_id']);
  436.         echo "<br>(<a href=\"modules.php?name=Your_Account&op=userinfo&username=$c_name\">"._USERINFO."</a> | <a href=\"modules.php?name=Private_Messages&mode=post&u=$r_uid\">"._SENDAMSG."</a>$journal) ";
  437.     }
  438.     $row_url = $db->sql_fetchrow($db->sql_query("SELECT user_website FROM ".$prefix."_users WHERE username='$c_name'"));
  439.     $url = stripslashes($row_url['user_website']);
  440.     if ($url != "http://" AND $url != "" AND eregi("http://", $url)) { echo "<a href=\"$url\" target=\"new\">$url</a> "; }
  441.  
  442.     if(is_admin($admin)) {
  443.         $row3 = $db->sql_fetchrow($db->sql_query("SELECT host_name FROM ".$prefix."_comments WHERE tid='$tid'"));
  444.         $host_name = $row3['host_name'];
  445.         echo "<br><b>(IP: $host_name)</b>";
  446.     }
  447.     echo "</font></td></tr><tr><td>";
  448.     if(($cookie[10]) && (strlen($comment) > $cookie[10])) echo substr("$comment", 0, $cookie[10])."<br><br><b><a href=\"modules.php?name=$module_name&file=comments&sid=$sid&tid=$tid&mode=$mode&order=$order&thold=$thold\">"._READREST."</a></b>";
  449.     elseif(strlen($comment) > $commentlimit) echo substr("$comment", 0, $commentlimit)."<br><br><b><a href=\"modules.php?name=$module_name&file=comments&sid=$sid&tid=$tid&mode=$mode&order=$order&thold=$thold\">"._READREST."</a></b>";
  450.     else echo $comment;
  451.     echo "</td></tr></table><br><br>";
  452.     if ($anonpost==1 OR is_admin($admin) OR is_user($user)) {
  453.         echo "<font class=\"content\"> [ <a href=\"modules.php?name=$module_name&file=comments&op=Reply&pid=$tid&sid=$sid&mode=$mode&order=$order&thold=$thold\">"._REPLY."</a>";
  454.     }
  455.     if ($pid != 0) {
  456.         $row4 = $db->sql_fetchrow($db->sql_query("SELECT pid FROM ".$prefix."_comments WHERE tid='$pid'"));
  457.         $erin = intval($row4['pid']);
  458.         echo " | <a href=\"modules.php?name=$module_name&file=comments&sid=$sid&pid=$erin&mode=$mode&order=$order&thold=$thold\">"._PARENT."</a>";
  459.     }
  460.     modtwo($tid, $score, $reason);
  461.         
  462.     if(is_admin($admin)) {
  463.         echo " | <a href=\"admin.php?op=RemoveComment&tid=$tid&sid=$sid\">"._DELETE."</a> ]</font><br><br>";
  464.     } elseif ($anonpost != 0 OR is_admin($admin) OR is_user($user)) {
  465.         echo " ]</font><br><br>";
  466.     }
  467.         
  468.     DisplayKids($tid, $mode, $order, $thold, $level);
  469.     echo "</ul>";
  470.     if($hr) echo "<hr noshade size=\"1\">";
  471.     $count_times += 1;
  472.     CloseTable();
  473.     }
  474.     modthree($sid, $mode, $order, $thold);
  475.     if ($pid==0) {
  476.     return array($sid, $pid, $subject);
  477.  
  478.     } else {
  479.     include("footer.php");
  480.     }
  481. }
  482.  
  483. function singlecomment($tid, $sid, $mode, $order, $thold) {
  484.     global $module_name, $user, $cookie, $datetime, $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $admin, $anonpost, $prefix, $textcolor2, $db;
  485.     include("header.php");
  486.     $row = $db->sql_fetchrow($db->sql_query("SELECT date, name, email, subject, comment, score, reason FROM ".$prefix."_comments WHERE tid='$tid' AND sid='$sid'"));
  487.     $date = $row['date'];
  488.     $name = stripslashes($row['name']);
  489.     $email = stripslashes($row['email']);
  490.     $subject = stripslashes(check_html($row['subject'], "nohtml"));
  491.     $comment = stripslashes($row['comment']);
  492.     $score = intval($row['score']);
  493.     $reason = intval($row['reason']);
  494.     $titlebar = "<b>$subject</b>";
  495.     if($name == "") $name = $anonymous;
  496.     if($subject == "") $subject = "["._NOSUBJECT."]";
  497.     modone();
  498.     OpenTable();
  499.     echo "<table width=\"99%\" border=\"0\"><tr bgcolor=\"$bgcolor1\"><td width=\"500\">";
  500.     formatTimestamp($date);
  501.     if($email) echo "<b>$subject</b> <font class=\"content\" color=\"$textcolor2\">("._SCORE." $score)<br>"._BY." <a href=\"mailto:$email\"><font color=\"$bgcolor2\">$name</font></a> <font class=content><b>($email)</b></font> "._ON." $datetime";
  502.     else echo "<b>$subject</b> <font class=content>("._SCORE." $score)<br>"._BY." $name "._ON." $datetime";
  503.     echo "</td></tr><tr><td>$comment</td></tr></table><br><br>";
  504.     if ($anonpost==1 OR is_admin($admin) OR is_user($user)) {
  505.     echo "<font class=content> [ <a href=\"modules.php?name=$module_name&file=comments&op=Reply&pid=$tid&sid=$sid&mode=$mode&order=$order&thold=$thold\">"._REPLY."</a> | <a href=\"modules.php?name=$module_name&file=article&sid=$sid&mode=$mode&order=$order&thold=$thold\">"._ROOT."</a>";
  506.     }
  507.     modtwo($tid, $score, $reason);
  508.     echo " ]";
  509.     modthree($sid, $mode, $order, $thold);
  510.     CloseTable();
  511.     include("footer.php");
  512. }
  513.  
  514. function reply($pid, $sid, $mode, $order, $thold) {
  515.     include("config.php");
  516.     include("header.php");
  517.     global $module_name, $user, $cookie, $datetime, $bgcolor1, $bgcolor2, $bgcolor3, $db, $anonpost;
  518.     if ($anonpost == 0 AND !is_user($user)) {
  519.     OpenTable();
  520.     echo "<center><font class=title><b>"._COMMENTREPLY."</b></font></center>";
  521.     CloseTable();
  522.     echo "<br>";
  523.     OpenTable();
  524.     echo "<center>"._NOANONCOMMENTS."<br><br>"._GOBACK."</center>";
  525.     CloseTable();
  526.     } else {
  527.     if ($pid != 0) {
  528.         $row = $db->sql_fetchrow($db->sql_query("SELECT date, name, email, subject, comment, score FROM ".$prefix."_comments WHERE tid='$pid'"));
  529.            $date = $row['date'];
  530.         $name = stripslashes($row['name']);
  531.         $email = stripslashes($row['email']);
  532.         $subject = stripslashes(check_html($row['subject'], "nohtml"));
  533.         $comment = stripslashes($row['comment']);
  534.         $score = intval($row['score']);
  535.     } else {
  536.         $row2 = $db->sql_fetchrow($db->sql_query("SELECT time, title, hometext, bodytext, informant, notes FROM ".$prefix."_stories WHERE sid='$sid'"));
  537.         $date = $row2['time'];
  538.         $subject = stripslashes(check_html($row2['title'], "nohtml"));
  539.         $temp_comment = stripslashes($row2['hometext']);
  540.         $comment2 = stripslashes($row2['bodytext']);
  541.         $name = stripslashes($row2['informant']);
  542.         $notes = stripslashes($row2['notes']);
  543.     }
  544.     if($comment == "") {
  545.         $comment = "$temp_comment<br><br>$comment2";
  546.     }
  547.     OpenTable();
  548.     echo "<center><font class=title><b>"._COMMENTREPLY."</b></font></center>";
  549.     CloseTable();
  550.     echo "<br>";
  551.     OpenTable();
  552.     if ($name == "") $name = $anonymous;
  553.     if ($subject == "") $subject = "["._NOSUBJECT."]";
  554.     formatTimestamp($date);
  555.     echo "<b>$subject</b> <font class=\"content\">";
  556.     if (!$temp_comment) echo"("._SCORE." $score)";
  557.     if ($email) {
  558.         echo "<br>"._BY." <a href=\"mailto:$email\">$name</a> <font class=\"content\"><b>($email)</b></font> "._ON." $datetime";
  559.     } else {
  560.         echo "<br>"._BY." $name "._ON." $datetime";
  561.     }
  562.     echo "<br><br>$comment<br><br>";
  563.     if ($pid == 0) {
  564.         if ($notes != "") {
  565.         echo "<b>"._NOTE."</b> <i>$notes</i><br><br>";
  566.         } else {
  567.         echo "";
  568.         }
  569.     }
  570.     if (!isset($pid) || !isset($sid)) { echo "Something is not right. This message is just to keep things from messing up down the road"; exit(); }
  571.     if ($pid == 0) {
  572.         $row3 = $db->sql_fetchrow($db->sql_query("SELECT title FROM ".$prefix."_stories WHERE sid='$sid'"));
  573.         $subject = stripslashes(check_html($row3['title'], "nohtml"));
  574.     } else {
  575.         $row4 = $db->sql_fetchrow($db->sql_query("SELECT subject FROM ".$prefix."_comments WHERE tid='$pid'"));
  576.         $subject = stripslashes(check_html($row4['subject'], "nohtml"));
  577.     }
  578.     CloseTable();
  579.     echo "<br>";
  580.     OpenTable();
  581.     echo "<form action=\"modules.php?name=$module_name&file=comments\" method=\"post\">";
  582.     echo "<font class=option><b>"._YOURNAME.":</b></font> ";
  583.     if (is_user($user)) {
  584.         cookiedecode($user);
  585.         echo "<a href=\"modules.php?name=Your_Account\">$cookie[1]</a> <font class=\"content\">[ <a href=\"modules.php?name=Your_Account&op=logout\">"._LOGOUT."</a> ]</font><br><br>";
  586.     } else {
  587.             echo "<font class=\"content\">$anonymous";
  588.         echo " [ <a href=\"modules.php?name=Your_Account\">"._NEWUSER."</a> ]<br><br>";
  589.     }
  590.     echo "<font class=\"option\"><b>"._SUBJECT.":</b></font><br>";
  591.     if (!eregi("Re:",$subject)) $subject = "Re: ".substr($subject,0,81)."";
  592.     echo "<input type=\"text\" name=\"subject\" size=\"50\" maxlength=\"85\" value=\"$subject\"><br><br>";
  593.     echo "<font class=\"option\"><b>"._UCOMMENT.":</b></font><br>"
  594.         ."<textarea wrap=\"virtual\" cols=\"50\" rows=\"10\" name=\"comment\"></textarea><br>"
  595.         ."<font class=\"content\">"._ALLOWEDHTML."<br>";
  596.     while (list($key,)= each($AllowableHTML)) echo " <".$key.">";
  597.     echo "<br>";
  598.     if (is_user($user) AND ($anonpost == 1)) { echo "<input type=\"checkbox\" name=\"xanonpost\"> "._POSTANON."<br>"; }
  599.     echo "<input type=\"hidden\" name=\"pid\" value=\"$pid\">\n"
  600.             ."<input type=\"hidden\" name=\"sid\" value=\"$sid\">\n"
  601.         ."<input type=\"hidden\" name=\"mode\" value=\"$mode\">\n"
  602.         ."<input type=\"hidden\" name=\"order\" value=\"$order\">\n"
  603.         ."<input type=\"hidden\" name=\"thold\" value=\"$thold\">\n"
  604.         ."<input type=\"submit\" name=\"op\" value=\""._PREVIEW."\">\n"
  605.         ."<input type=\"submit\" name=\"op\" value=\""._OK."\">\n"
  606.         ."<select name=\"posttype\">\n"
  607.         ."<option value=\"exttrans\">"._EXTRANS."</option>\n"
  608.         ."<option value=\"html\" >"._HTMLFORMATED."</option>\n"
  609.         ."<option value=\"plaintext\" selected>"._PLAINTEXT."</option>\n"
  610.         ."</select></font></form>\n";
  611.     CloseTable();
  612.     }
  613.     include("footer.php");
  614. }
  615.  
  616. function replyPreview ($pid, $sid, $subject, $comment, $xanonpost, $mode, $order, $thold, $posttype) {
  617.     include("header.php");
  618.     global $module_name, $user, $cookie, $AllowableHTML, $anonymous, $anonpost;
  619.     OpenTable();
  620.     echo "<center><font class=\"title\"><b>"._COMREPLYPRE."</b></font></center>";
  621.     CloseTable();
  622.     echo "<br>";
  623.     OpenTable();
  624.     cookiedecode($user);
  625.     $subject = stripslashes(check_html($subject, "nohtml"));
  626.     $comment = stripslashes($comment);
  627.     if (!isset($pid) || !isset($sid)) {
  628.         echo ""._NOTRIGHT."";
  629.         exit();
  630.     }
  631.     echo "<b>$subject</b>";
  632.     echo "<br><font class=\"content\">"._BY." ";
  633.     if (is_user($user)) {
  634.     echo "$cookie[1]";
  635.     } else {
  636.         echo "$anonymous";
  637.     }
  638.     echo " "._ONN."</font><br><br>";
  639.     if ($posttype=="exttrans") {
  640.         echo nl2br(htmlspecialchars($comment));
  641.     } elseif ($posttype=="plaintext") {
  642.         echo nl2br($comment);
  643.     } else {
  644.         echo $comment;
  645.     }
  646.     CloseTable();
  647.     echo "<br>";
  648.     OpenTable();
  649.     echo "<form action=\"modules.php?name=$module_name&file=comments\" method=\"post\"><font class=\"option\"><b>"._YOURNAME.":</b></font> ";
  650.     if (is_user($user)) {
  651.         echo "<a href=\"modules.php?name=Your_Account\">$cookie[1]</a> <font class=\"content\">[ <a href=\"modules.php?name=Your_Account&op=logout\">"._LOGOUT."</a> ]</font><br><br>";
  652.     } else {
  653.         echo "<font class=\"content\">$anonymous<br><br>";
  654.     }
  655.     echo "<font class=\"option\"><b>"._SUBJECT.":</b></font><br>"
  656.     ."<input type=\"text\" name=\"subject\" size=\"50\" maxlength=\"85\" value=\"$subject\"><br><br>"
  657.     ."<font class=\"option\"><b>"._UCOMMENT.":</b></font><br>"
  658.     ."<textarea wrap=\"virtual\" cols=\"50\" rows=\"10\" name=\"comment\">$comment</textarea><br>"
  659.     ."<font class=\"content\">"._ALLOWEDHTML."<br>";
  660.     while (list($key,) = each($AllowableHTML)) echo " <".$key.">";
  661.     echo "<br>";
  662.     if (($xanonpost) AND ($anonpost == 1)){
  663.         echo "<input type=\"checkbox\" name=\"xanonpost\" checked> "._POSTANON."<br>";
  664.     } elseif ((is_user($user)) AND ($anonpost == 1)) {
  665.         echo "<input type=\"checkbox\" name=\"xanonpost\"> "._POSTANON."<br>";
  666.     }
  667.     echo "<input type=\"hidden\" name=\"pid\" value=\"$pid\">"
  668.         ."<input type=\"hidden\" name=\"sid\" value=\"$sid\">"
  669.     ."<input type=\"hidden\" name=\"mode\" value=\"$mode\">"
  670.         ."<input type=\"hidden\" name=\"order\" value=\"$order\">"
  671.     ."<input type=\"hidden\" name=\"thold\" value=\"$thold\">"
  672.         ."<input type=submit name=op value=\""._PREVIEW."\">"
  673.         ."<input type=submit name=op value=\""._OK."\">\n"
  674.     ."<select name=\"posttype\"><option value=\"exttrans\"";
  675.     if ($posttype=="exttrans") {
  676.         echo " selected";
  677.     }
  678.     echo ">"._EXTRANS."</option>\n"
  679.     ."<OPTION value=\"html\"";;
  680.     if ($posttype=="html") {
  681.         echo " selected";
  682.     }
  683.     echo ">"._HTMLFORMATED."</option>\n"
  684.     ."<OPTION value=\"plaintext\"";
  685.     if (($posttype!="exttrans") && ($posttype!="html")) {
  686.         echo " selected";
  687.     }
  688.     echo ">"._PLAINTEXT."</option></select></font></form>";
  689.     CloseTable();
  690.     include("footer.php");
  691. }
  692.  
  693. function CreateTopic ($xanonpost, $subject, $comment, $pid, $sid, $host_name, $mode, $order, $thold, $posttype) {
  694.     global $module_name, $user, $userinfo, $EditedMessage, $cookie, $AllowableHTML, $ultramode, $prefix, $anonpost, $articlecomm, $db;
  695.     cookiedecode($user);
  696.     $author = FixQuotes($author);
  697.     $subject = FixQuotes(filter_text($subject, "nohtml"));
  698.     $comment = format_url($comment);
  699.     if($posttype=="exttrans") {
  700.         $comment = FixQuotes(nl2br(htmlspecialchars(check_words($comment))));
  701.     } elseif($posttype=="plaintext") {
  702.         $comment = FixQuotes(nl2br(filter_text($comment)));
  703.     } else {
  704.     $comment = FixQuotes(filter_text($comment));
  705.     }
  706.     if(is_user($user)) {
  707.         getusrinfo($user);
  708.     }
  709.     if ((is_user($user)) && (!$xanonpost)) {
  710.     getusrinfo($user);
  711.     $name = $userinfo[username];
  712.     $email = $userinfo[femail];
  713.     $url = $userinfo[user_website];
  714.     $score = 1;
  715.     } else {
  716.     $name = ""; $email = ""; $url = "";
  717.     $score = 0;
  718.     }
  719.     $ip = $_SERVER["REMOTE_HOST"];
  720.     if (empty($ip)) {
  721.         $ip = $_SERVER["REMOTE_ADDR"];
  722.     }
  723.     $fake = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_stories WHERE sid='$sid'"));
  724.     $comment = trim($comment);
  725.     $comment = stripslashes($comment);
  726.     if (($fake == 1) AND ($articlecomm == 1)) {
  727.     if ((($anonpost == 0) AND (is_user($user))) OR ($anonpost == 1)) {
  728.         $db->sql_query("INSERT INTO ".$prefix."_comments VALUES (NULL, '$pid', '$sid', now(), '$name', '$email', '$url', '$ip', '$subject', '$comment', '$score', '0')");
  729.         $db->sql_query("UPDATE ".$prefix."_stories SET comments=comments+1 WHERE sid='$sid'");
  730.         update_points(5);
  731.         if ($ultramode) {
  732.             ultramode();
  733.         }
  734.     } else {
  735.         echo "Nice try...";
  736.         die();
  737.     }
  738.     } else {
  739.     include("header.php");
  740.     echo "According to my records, the topic you are trying "
  741.         ."to reply to does not exist. If you're just trying to be "
  742.         ."annoying, well then too bad.";
  743.     include("footer.php");
  744.     die();
  745.     }
  746.     if (isset($cookie[4])) { $options .= "&mode=$cookie[4]"; } else { $options .= "&mode=thread"; }
  747.     if (isset($cookie[5])) { $options .= "&order=$cookie[5]"; } else { $options .= "&order=0"; }
  748.     if (isset($cookie[6])) { $options .= "&thold=$cookie[6]"; } else { $options .= "&thold=0"; }
  749.     Header("Location: modules.php?name=$module_name&file=article&sid=$sid$options");
  750. }
  751.  
  752. switch($op) {
  753.  
  754.     case "Reply":
  755.     reply($pid, $sid, $mode, $order, $thold);
  756.     break;
  757.  
  758.     case ""._PREVIEW."":
  759.     replyPreview ($pid, $sid, $subject, $comment, $xanonpost, $mode, $order, $thold, $posttype);
  760.     break;
  761.  
  762.     case ""._OK."":
  763.     CreateTopic($xanonpost, $subject, $comment, $pid, $sid, $host_name, $mode, $order, $thold, $posttype);
  764.     break;
  765.  
  766.     case "moderate":
  767.     if(isset($admin)) {
  768.         include("auth.php");
  769.     } else {
  770.         include("mainfile.php");    
  771.     }
  772.     if(($admintest==1) || ($moderate==2)) {
  773.         while(list($tdw, $emp) = each($HTTP_POST_VARS)) {
  774.         if (eregi("dkn",$tdw)) {
  775.             $emp = explode(":", $emp);
  776.             if($emp[1] != 0) {
  777.             $tdw = ereg_replace("dkn", "", $tdw);
  778.             $q = "UPDATE ".$prefix."_comments SET";
  779.             if(($emp[1] == 9) && ($emp[0]>=0)) { # Overrated
  780.                 $q .= " score=score-1 where tid='$tdw'";
  781.             } elseif (($emp[1] == 10) && ($emp[0]<=4)) { # Underrated
  782.                 $q .= " score=score+1 where tid='$tdw'";
  783.             } elseif (($emp[1] > 4) && ($emp[0]<=4)) {
  784.                 $q .= " score=score+1, reason=$emp[1] where tid='$tdw'";
  785.             } elseif (($emp[1] < 5) && ($emp[0] > -1)) {
  786.                 $q .= " score=score-1, reason=$emp[1] where tid='$tdw'";
  787.             } elseif (($emp[0] == -1) || ($emp[0] == 5)) {
  788.                 $q .= " reason=$emp[1] where tid='$tdw'";
  789.             }
  790.             if(strlen($q) > 20) $db->sql_query($q);
  791.             }
  792.         }
  793.         }
  794.     }
  795.     Header("Location: modules.php?name=$module_name&file=article&sid=$sid&mode=$mode&order=$order&thold=$thold");
  796.     break;
  797.  
  798.     case "showreply":
  799.     DisplayTopic($sid, $pid, $tid, $mode, $order, $thold);
  800.     break;
  801.  
  802.     default:
  803.     if ((isset($tid)) && (!isset($pid))) {
  804.         singlecomment($tid, $sid, $mode, $order, $thold);
  805.     } elseif (($mainfile) xor (($pid==0) AND (!isset($pid)))) {
  806.         Header("Location: modules.php?name=$module_name&file=article&sid=$sid&mode=$mode&order=$order&thold=$thold");
  807.     } else {
  808.         if(!isset($pid)) $pid=0;
  809.         DisplayTopic($sid, $pid, $tid, $mode, $order, $thold);
  810.     }
  811.     break;
  812.  
  813. }
  814.  
  815. ?>