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 / mainfile.php < prev    next >
PHP Script  |  2004-08-23  |  43KB  |  1,182 lines

  1. <?php
  2.  
  3. /************************************************************************/
  4. /* PHP-NUKE: Advanced Content Management 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 checking code 2003 by chatserv                   */
  15. /* http://www.nukefixes.com -- http://www.nukeresources.com             */
  16. /************************************************************************/
  17.  
  18. //Union Tap
  19. //Copyright Zhen-Xjell 2004 http://nukecops.com
  20. //Beta 3 Code to prevent UNION SQL Injections
  21. unset($matches);
  22. unset($loc);
  23. if (preg_match("/([OdWo5NIbpuU4V2iJT0n]{5}) /", rawurldecode($loc=$_SERVER["QUERY_STRING"]), $matches)) {
  24.     die();
  25. }
  26. if (stristr($_SERVER["QUERY_STRING"],'%20union%20')) header("Location: index.php");
  27. $phpver = phpversion();
  28. if ($phpver >= '4.0.4pl1' && strstr($HTTP_USER_AGENT,'compatible')) {
  29.     if (extension_loaded('zlib')) {
  30.     ob_end_clean();
  31.     ob_start('ob_gzhandler');
  32.     }
  33. } else if ($phpver > '4.0') {
  34.     if (strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip')) {
  35.     if (extension_loaded('zlib')) {
  36.         $do_gzip_compress = TRUE;
  37.         ob_start();
  38.         ob_implicit_flush(0);
  39.         //header('Content-Encoding: gzip');
  40.     }
  41.     }
  42. }
  43.  
  44. $phpver = explode(".", $phpver);
  45. $phpver = "$phpver[0]$phpver[1]";
  46. if ($phpver >= 41) {
  47.     $PHP_SELF = $_SERVER['PHP_SELF'];
  48. }
  49.  
  50. if (!ini_get("register_globals")) {
  51.     import_request_variables('GPC');
  52. }
  53.  
  54. if(isset($admin))
  55. {
  56.    $admin = base64_decode($admin);
  57.    $admin = addslashes($admin);
  58.    $admin = base64_encode($admin);
  59. }
  60.  
  61. if(isset($user))
  62. {
  63.    $user = base64_decode($user);
  64.    $user = addslashes($user);
  65.    $user = base64_encode($user);
  66. }
  67.  
  68. if (phpversion() < "4.1.0") {
  69.     $_GET = $HTTP_GET_VARS;
  70.     $_POST = $HTTP_POST_VARS;
  71.     $_SERVER = $HTTP_SERVER_VARS;
  72. }
  73.  
  74. foreach ($_GET as $secvalue) {
  75.     if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||
  76.     (eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||
  77.     (eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||
  78.     (eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||
  79.     (eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||
  80.     (eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||
  81.     (eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||
  82.     (eregi("\([^>]*\"?[^)]*\)", $secvalue)) ||
  83.     (eregi("\"", $secvalue))) {
  84.    die ("<center><img src=images/logo.gif><br><br><b>The html tags you attempted to use are not allowed</b><br><br>[ <a href=\"javascript:history.go(-1)\"><b>Go Back</b></a> ]");
  85.     }
  86. }
  87.  
  88. foreach ($_POST as $secvalue) {
  89.     if ((eregi("<[^>]script*\"?[^>]*>", $secvalue)) ||    (eregi("<[^>]style*\"?[^>]*>", $secvalue))) {
  90.         die ("<center><img src=images/logo.gif><br><br><b>The html tags you attempted to use are not allowed</b><br><br>[ <a href=\"javascript:history.go(-1)\"><b>Go Back</b></a> ]");
  91.     }
  92. }
  93.  
  94. if (eregi("mainfile.php",$_SERVER['PHP_SELF'])) {
  95.     Header("Location: index.php");
  96.     die();
  97. }
  98.  
  99. if ($forum_admin == 1) {
  100.     require_once("../../../config.php");
  101.     require_once("../../../db/db.php");
  102. } elseif ($inside_mod == 1) {
  103.     require_once("../../config.php");
  104.     require_once("../../db/db.php");
  105. } else {
  106.     require_once("config.php");
  107.     require_once("db/db.php");
  108.     /* FOLLOWING TWO LINES ARE DEPRECATED BUT ARE HERE FOR OLD MODULES COMPATIBILITY */
  109.     /* PLEASE START USING THE NEW SQL ABSTRACTION LAYER. SEE MODULES DOC FOR DETAILS */
  110.     require_once("includes/sql_layer.php");
  111.     $dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname);
  112. }
  113.  
  114. $mainfile = 1;
  115. $result = $db->sql_query("SELECT * FROM ".$prefix."_config");
  116. $row = $db->sql_fetchrow($result);
  117. $sitename = $row['sitename'];
  118. $nukeurl = $row['nukeurl'];
  119. $site_logo = $row['site_logo'];
  120. $slogan = $row['slogan'];
  121. $startdate = $row['startdate'];
  122. $adminmail = stripslashes($row['adminmail']);
  123. $anonpost = $row['anonpost'];
  124. $Default_Theme = $row['Default_Theme'];
  125. $foot1 = $row['foot1'];
  126. $foot2 = $row['foot2'];
  127. $foot3 = $row['foot3'];
  128. $commentlimit = intval($row['commentlimit']);
  129. $anonymous = $row['anonymous'];
  130. $minpass = intval($row['minpass']);
  131. $pollcomm = intval($row['pollcomm']);
  132. $articlecomm = intval($row['articlecomm']);
  133. $broadcast_msg = intval($row['broadcast_msg']);
  134. $my_headlines = intval($row['my_headlines']);
  135. $top = intval($row['top']);
  136. $storyhome = intval($row['storyhome']);
  137. $user_news = intval($row['user_news']);
  138. $oldnum = intval($row['oldnum']);
  139. $ultramode = intval($row['ultramode']);
  140. $banners = intval($row['banners']);
  141. $backend_title = $row['backend_title'];
  142. $backend_language = $row['backend_language'];
  143. $language = $row['language'];
  144. $locale = $row['locale'];
  145. $multilingual = intval($row['multilingual']);
  146. $useflags = intval($row['useflags']);
  147. $notify = intval($row['notify']);
  148. $notify_email = $row['notify_email'];
  149. $notify_subject = $row['notify_subject'];
  150. $notify_message = $row['notify_message'];
  151. $notify_from = $row['notify_from'];
  152. $moderate = intval($row['moderate']);
  153. $admingraphic = intval($row['admingraphic']);
  154. $httpref = intval($row['httpref']);
  155. $httprefmax = intval($row['httprefmax']);
  156. $CensorMode = intval($row['CensorMode']);
  157. $CensorReplace = $row['CensorReplace'];
  158. $copyright = $row['copyright'];
  159. $Version_Num = $row['Version_Num'];
  160. $domain = eregi_replace("http://", "", $nukeurl);
  161. $tipath = "images/topics/";
  162. $mtime = microtime();
  163. $mtime = explode(" ",$mtime);
  164. $mtime = $mtime[1] + $mtime[0];
  165. $start_time = $mtime;
  166.  
  167. if ($forum_admin != 1) {
  168.     if (isset($newlang) AND !eregi("\.","$newlang")) {
  169.     if (file_exists("language/lang-".$newlang.".php")) {
  170.         setcookie("lang",$newlang,time()+31536000);
  171.         include("language/lang-".$newlang.".php");
  172.         $currentlang = $newlang;
  173.     } else {
  174.         setcookie("lang",$language,time()+31536000);
  175.         include("language/lang-".$language.".php");
  176.         $currentlang = $language;
  177.     }
  178.     } elseif (isset($lang)) {
  179.     include("language/lang-".$lang.".php");
  180.     $currentlang = $lang;
  181.     } else {
  182.     setcookie("lang",$language,time()+31536000);
  183.     include("language/lang-".$language.".php");
  184.     $currentlang = $language;
  185.     }
  186. }
  187.  
  188. function get_lang($module) {
  189.     global $currentlang, $language;
  190.     if (file_exists("modules/$module/language/lang-".$currentlang.".php")) {
  191.     if ($module == admin) {
  192.         include_once("admin/language/lang-".$currentlang.".php");
  193.     } else {
  194.         include_once("modules/$module/language/lang-".$currentlang.".php");
  195.     }
  196.     } else {
  197.     if ($module == admin) {
  198.         include_once("admin/language/lang-".$currentlang.".php");
  199.     } else {
  200.         include_once("modules/$module/language/lang-".$language.".php");
  201.     }
  202.     }
  203. }
  204.  
  205. function is_admin($admin) {
  206.     global $prefix, $db;
  207.     if(!is_array($admin)) {
  208.     $admin = addslashes($admin);
  209.     $admin = base64_decode($admin);
  210.     $admin = explode(":", $admin);
  211.         $aid = "$admin[0]";
  212.     $pwd = "$admin[1]";
  213.     } else {
  214.         $aid = "$admin[0]";
  215.     $pwd = "$admin[1]";
  216.     }
  217.     if ($aid != "" AND $pwd != "") {
  218.         $aid = substr("$aid", 0,25);
  219.         $result = $db->sql_query("SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'");
  220.     $row = $db->sql_fetchrow($result);
  221.     $pass = $row['pwd'];
  222.     if($pass == $pwd && $pass != "") {
  223.         return 1;
  224.     }
  225.     }
  226.     return 0;
  227. }
  228.  
  229. function is_user($user) {
  230.     global $prefix, $db, $user_prefix;
  231.     if(!is_array($user)) {
  232.     $user = addslashes($user);
  233.     $user = base64_decode($user);
  234.     $user = explode(":", $user);
  235.         $uid = "$user[0]";
  236.     $pwd = "$user[2]";
  237.     } else {
  238.         $uid = "$user[0]";
  239.     $pwd = "$user[2]";
  240.     }
  241.     $uid = addslashes($uid);
  242.         $uid = intval($uid);
  243.     if ($uid != "" AND $pwd != "") {
  244.         $result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE user_id='$uid'");
  245.     $row = $db->sql_fetchrow($result);
  246.     $pass = $row['user_password'];
  247.     if($pass == $pwd && $pass != "") {
  248.         return 1;
  249.     }
  250.     }
  251.     return 0;
  252. }
  253.  
  254. function is_group($user, $name) {
  255.     global $prefix, $db, $user_prefix;
  256.     if(!is_array($user)) {
  257.     $user = addslashes($user);
  258.     $user = base64_decode($user);
  259.     $user = explode(":", $user);
  260.         $uid = "$user[0]";
  261.     $pwd = "$user[2]";
  262.     } else {
  263.         $uid = "$user[0]";
  264.         $uid = intval($uid);
  265.     $pwd = "$user[2]";
  266.     }
  267.     if ($uid != "" AND $pwd != "") {
  268.         $result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE user_id='$uid'");
  269.     $row = $db->sql_fetchrow($result);
  270.     $pass = $row['user_password'];
  271.     if($pass == $pwd && $pass != "") {
  272.             $result2 = $db->sql_query("SELECT points FROM ".$user_prefix."_users WHERE user_id='$uid'");
  273.         $row2 = $db->sql_fetchrow($result2);
  274.         $points = $row2['points'];
  275.             $result3 = $db->sql_query("SELECT mod_group FROM ".$prefix."_modules WHERE title='$name'");
  276.         $row3 = $db->sql_fetchrow($result3);
  277.         $mod_group = $row3['mod_group'];
  278.             $result4 = $db->sql_query("SELECT points FROM ".$prefix."_groups WHERE id='$mod_group'");
  279.         $row4 = $db->sql_fetchrow($result4);
  280.         $grp = intval($row4['points']);
  281.         if (($points >= 0 AND $points >= $grp) OR $mod_group == 0) {
  282.         return 1;
  283.         }
  284.     }
  285.     }
  286.     return 0;
  287. }
  288.  
  289. function update_points($id) {
  290.     global $user_prefix, $prefix, $db, $user;
  291.     if (is_user($user)) {
  292.     if(!is_array($user)) {
  293.         $user = addslashes($user);
  294.         $user1 = base64_decode($user);
  295.         $user1 = explode(":", $user1);
  296.             $username = "$user1[1]";
  297.     } else {
  298.             $username = "$user1[1]";
  299.     }
  300.     if ($db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_groups")) > '0') {
  301.         $id = intval($id);
  302.             $result = $db->sql_query("SELECT points FROM ".$prefix."_groups_points WHERE id='$id'");
  303.         $row = $db->sql_fetchrow($result);
  304.         $rpoints = intval($row['points']);
  305.         $db->sql_query("UPDATE ".$user_prefix."_users SET points=points+" . $rpoints . " WHERE username='$username'");
  306.     }
  307.     }
  308. }
  309.  
  310. function title($text) {
  311.     OpenTable();
  312.     echo "<center><font class=\"title\"><b>$text</b></font></center>";
  313.     CloseTable();
  314.     echo "<br>";
  315. }
  316.  
  317. function is_active($module) {
  318.     global $prefix, $db;
  319.     $module = trim($module);
  320.     $result = $db->sql_query("SELECT active FROM ".$prefix."_modules WHERE title='$module'");
  321.     $row = $db->sql_fetchrow($result);
  322.     $act = intval($row['active']);
  323.     if (!$result OR $act == 0) {
  324.     return 0;
  325.     } else {
  326.     return 1;
  327.     }
  328. }
  329.  
  330. function render_blocks($side, $blockfile, $title, $content, $bid, $url) {
  331.     if ($url == "") {
  332.         if ($blockfile == "") {
  333.             if ($side == "c") {
  334.                 themecenterbox($title, $content);
  335.             } elseif ($side == "d") {
  336.                 themecenterbox($title, $content);
  337.             } else {
  338.                 themesidebox($title, $content);
  339.             }
  340.         } else {
  341.             if ($side == "c") {
  342.                 blockfileinc($title, $blockfile, 1);
  343.             } elseif ($side == "d") {
  344.                 blockfileinc($title, $blockfile, 1);
  345.             } else {
  346.                 blockfileinc($title, $blockfile);
  347.             }
  348.         }
  349.     } else {
  350.         if ($side == "c" OR $side == "d") {
  351.             headlines($bid,1);
  352.         } else {
  353.                headlines($bid);
  354.         }
  355.     }
  356. }
  357.  
  358. function blocks($side) {
  359.     global $storynum, $prefix, $multilingual, $currentlang, $db, $admin, $user;
  360.     if ($multilingual == 1) {
  361.         $querylang = "AND (blanguage='$currentlang' OR blanguage='')";
  362.     } else {
  363.         $querylang = "";
  364.     }
  365.     if (strtolower($side[0]) == "l") {
  366.         $pos = "l";
  367.     } elseif (strtolower($side[0]) == "r") {
  368.         $pos = "r";
  369.     }  elseif (strtolower($side[0]) == "c") {
  370.         $pos = "c";
  371.     } elseif  (strtolower($side[0]) == "d") {
  372.         $pos = "d";
  373.     }
  374.     $side = $pos;
  375.     $sql = "SELECT bid, bkey, title, content, url, blockfile, view, expire, action, subscription FROM ".$prefix."_blocks WHERE bposition='$pos' AND active='1' $querylang ORDER BY weight ASC";
  376.     $result = $db->sql_query($sql);
  377.     while($row = $db->sql_fetchrow($result)) {
  378.     $bid = intval($row['bid']);
  379.     $title = $row['title'];
  380.     $content = $row['content'];
  381.     $url = $row['url'];
  382.     $blockfile = $row['blockfile'];
  383.     $view = intval($row['view']);
  384.     $expire = $row['expire'];
  385.     $action = $row['action'];
  386.         $now = time();
  387.         $sub = $row['subscription'];
  388.         if ($sub == 0 OR ($sub == 1 AND !paid())) {
  389.             if ($expire != 0 AND $expire <= $now) {
  390.                 if ($action == "d") {
  391.                     $db->sql_query("UPDATE ".$prefix."_blocks SET active='0', expire='0' WHERE bid='$bid'");
  392.                     return;
  393.                 } elseif ($action == "r") {
  394.                     $db->sql_query("DELETE FROM ".$prefix."_blocks WHERE bid='$bid'");
  395.                     return;
  396.                 }
  397.             }
  398.             if ($row[bkey] == admin) {
  399.                 adminblock();
  400.             } elseif ($row[bkey] == userbox) {
  401.                 userblock();
  402.             } elseif ($row[bkey] == "") {
  403.                 if ($view == 0) {
  404.                     render_blocks($side, $blockfile, $title, $content, $bid, $url);
  405.                 } elseif ($view == 1 AND is_user($user) || is_admin($admin)) {
  406.                     render_blocks($side, $blockfile, $title, $content, $bid, $url);
  407.                 } elseif ($view == 2 AND is_admin($admin)) {
  408.                     render_blocks($side, $blockfile, $title, $content, $bid, $url);
  409.                 } elseif ($view == 3 AND !is_user($user) || is_admin($admin)) {
  410.                     render_blocks($side, $blockfile, $title, $content, $bid, $url);
  411.                 }
  412.             }
  413.         }
  414.     }
  415. }
  416.  
  417. function message_box() {
  418.     global $bgcolor1, $bgcolor2, $user, $admin, $cookie, $textcolor2, $prefix, $multilingual, $currentlang, $db;
  419.     if ($multilingual == 1) {
  420.         $querylang = "AND (mlanguage='$currentlang' OR mlanguage='')";
  421.     } else {
  422.         $querylang = "";
  423.     }
  424.     $result = $db->sql_query("SELECT mid, title, content, date, expire, view FROM ".$prefix."_message WHERE active='1' $querylang");
  425.     if ($numrows = $db->sql_numrows($result) == 0) {
  426.         return;
  427.     } else {
  428.     while ($row = $db->sql_fetchrow($result)) {
  429.         $mid = intval($row['mid']);
  430.         $title = $row['title'];
  431.         $content = $row['content'];
  432.         $mdate = $row['date'];
  433.         $expire = intval($row['expire']);
  434.         $view = intval($row['view']);
  435.     if ($title != "" && $content != "") {
  436.         if ($expire == 0) {
  437.         $remain = _UNLIMITED;
  438.         } else {
  439.         $etime = (($mdate+$expire)-time())/3600;
  440.         $etime = (int)$etime;
  441.         if ($etime < 1) {
  442.             $remain = _EXPIRELESSHOUR;
  443.         } else {
  444.             $remain = ""._EXPIREIN." $etime "._HOURS."";
  445.         }
  446.         }
  447.         if ($view == 5 AND paid()) {
  448.             OpenTable();
  449.             echo "<center><font class=\"option\" color=\"$textcolor2\"><b>$title</b></font></center><br>\n"
  450.                 ."<font class=\"content\">$content</font>";
  451.             if (is_admin($admin)) {
  452.                 echo "<br><br><center><font class=\"content\">[ "._MVIEWSUBUSERS." - $remain - <a href=\"admin.php?op=editmsg&mid=$mid\">"._EDIT."</a> ]</font></center>";
  453.             }
  454.             CloseTable();
  455.             echo "<br>";
  456.         } elseif ($view == 4 AND is_admin($admin)) {
  457.                 OpenTable();
  458.                 echo "<center><font class=\"option\" color=\"$textcolor2\"><b>$title</b></font></center><br>\n"
  459.             ."<font class=\"content\">$content</font>"
  460.             ."<br><br><center><font class=\"content\">[ "._MVIEWADMIN." - $remain - <a href=\"admin.php?op=editmsg&mid=$mid\">"._EDIT."</a> ]</font></center>";
  461.         CloseTable();
  462.         echo "<br>";
  463.         } elseif ($view == 3 AND is_user($user) || is_admin($admin)) {
  464.                 OpenTable();
  465.                 echo "<center><font class=\"option\" color=\"$textcolor2\"><b>$title</b></font></center><br>\n"
  466.             ."<font class=\"content\">$content</font>";
  467.         if (is_admin($admin)) {
  468.             echo "<br><br><center><font class=\"content\">[ "._MVIEWUSERS." - $remain - <a href=\"admin.php?op=editmsg&mid=$mid\">"._EDIT."</a> ]</font></center>";
  469.         }
  470.             CloseTable();
  471.         echo "<br>";
  472.         } elseif ($view == 2 AND !is_user($user) || is_admin($admin)) {
  473.                 OpenTable();
  474.                 echo "<center><font class=\"option\" color=\"$textcolor2\"><b>$title</b></font></center><br>\n"
  475.             ."<font class=\"content\">$content</font>";
  476.         if (is_admin($admin)) {
  477.             echo "<br><br><center><font class=\"content\">[ "._MVIEWANON." - $remain - <a href=\"admin.php?op=editmsg&mid=$mid\">"._EDIT."</a> ]</font></center>";
  478.         }
  479.         CloseTable();
  480.         echo "<br>";
  481.         } elseif ($view == 1) {
  482.                 OpenTable();
  483.                 echo "<center><font class=\"option\" color=\"$textcolor2\"><b>$title</b></font></center><br>\n"
  484.             ."<font class=\"content\">$content</font>";
  485.         if (is_admin($admin)) {
  486.             echo "<br><br><center><font class=\"content\">[ "._MVIEWALL." - $remain - <a href=\"admin.php?op=editmsg&mid=$mid\">"._EDIT."</a> ]</font></center>";
  487.         }
  488.         CloseTable();
  489.         echo "<br>";
  490.         }
  491.         if ($expire != 0) {
  492.             $past = time()-$expire;
  493.         if ($mdate < $past) {
  494.             $db->sql_query("UPDATE ".$prefix."_message SET active='0' WHERE mid='$mid'");
  495.         }
  496.         }
  497.         }
  498.     }
  499.     }
  500. }
  501.  
  502. function online() {
  503.     global $user, $cookie, $prefix, $db;
  504.     cookiedecode($user);
  505.     $ip = $_SERVER["REMOTE_ADDR"];
  506.     $uname = $cookie[1];
  507.     if (!isset($uname)) {
  508.         $uname = "$ip";
  509.         $guest = 1;
  510.     }
  511.     $past = time()-3600;
  512.     $db->sql_query("DELETE FROM ".$prefix."_session WHERE time < '$past'");
  513.     $result = $db->sql_query("SELECT time FROM ".$prefix."_session WHERE uname='$uname'");
  514.     $ctime = time();
  515.     if ($row = $db->sql_fetchrow($result)) {
  516.     $db->sql_query("UPDATE ".$prefix."_session SET uname='$uname', time='$ctime', host_addr='$ip', guest='$guest' WHERE uname='$uname'");
  517.     } else {
  518.     $db->sql_query("INSERT INTO ".$prefix."_session (uname, time, host_addr, guest) VALUES ('$uname', '$ctime', '$ip', '$guest')");
  519.     }
  520. }
  521.  
  522. function blockfileinc($title, $blockfile, $side=0) {
  523.     $blockfiletitle = $title;
  524.     $file = @file("blocks/".$blockfile."");
  525.     if (!$file) {
  526.     $content = _BLOCKPROBLEM;
  527.     } else {
  528.     include("blocks/".$blockfile."");
  529.     }
  530.     if ($content == "") {
  531.     $content = _BLOCKPROBLEM2;
  532.     }
  533.     if ($side == 1) {
  534.     themecenterbox($blockfiletitle, $content);
  535.     } elseif ($side == 2) {
  536.     themecenterbox($blockfiletitle, $content);
  537.     } else {
  538.     themesidebox($blockfiletitle, $content);
  539.     }
  540. }
  541.  
  542. function selectlanguage() {
  543.     global $useflags, $currentlang;
  544.     if ($useflags == 1) {
  545.     $title = _SELECTLANGUAGE;
  546.     $content = "<center><font class=\"content\">"._SELECTGUILANG."<br><br>";
  547.     $langdir = dir("language");
  548.     while($func=$langdir->read()) {
  549.     if(substr($func, 0, 5) == "lang-") {
  550.             $menulist .= "$func ";
  551.     }
  552.     }
  553.     closedir($langdir->handle);
  554.     $menulist = explode(" ", $menulist);
  555.     sort($menulist);
  556.     for ($i=0; $i < sizeof($menulist); $i++) {
  557.         if($menulist[$i]!="") {
  558.         $tl = ereg_replace("lang-","",$menulist[$i]);
  559.         $tl = ereg_replace(".php","",$tl);
  560.         $altlang = ucfirst($tl);
  561.         $content .= "<a href=\"index.php?newlang=".$tl."\"><img src=\"images/language/flag-".$tl.".png\" border=\"0\" alt=\"$altlang\" title=\"$altlang\" hspace=\"3\" vspace=\"3\"></a> ";
  562.     }
  563.     }
  564.     $content .= "</font></center>";
  565.     themesidebox($title, $content);
  566.     } else {
  567.     $title = _SELECTLANGUAGE;
  568.     $content = "<center><font class=\"content\">"._SELECTGUILANG."<br><br></font>";
  569.     $content .= "<form action=\"index.php\" method=\"get\"><select name=\"newlanguage\" onChange=\"top.location.href=this.options[this.selectedIndex].value\">";
  570.         $handle=opendir('language');
  571.         while ($file = readdir($handle)) {
  572.         if (preg_match("/^lang\-(.+)\.php/", $file, $matches)) {
  573.                 $langFound = $matches[1];
  574.                 $languageslist .= "$langFound ";
  575.             }
  576.         }
  577.         closedir($handle);
  578.         $languageslist = explode(" ", $languageslist);
  579.         sort($languageslist);
  580.         for ($i=0; $i < sizeof($languageslist); $i++) {
  581.         if($languageslist[$i]!="") {
  582.     $content .= "<option value=\"index.php?newlang=$languageslist[$i]\" ";
  583.         if($languageslist[$i]==$currentlang) $content .= " selected";
  584.     $content .= ">".ucfirst($languageslist[$i])."</option>\n";
  585.         }
  586.     }
  587.     $content .= "</select></form></center>";
  588.     themesidebox($title, $content);
  589.     }
  590. }
  591.  
  592. function ultramode() {
  593.     global $prefix, $db;
  594.     $ultra = "ultramode.txt";
  595.     $file = fopen("$ultra", "w");
  596.     fwrite($file, "General purpose self-explanatory file with news headlines\n");
  597.     $result = $db->sql_query("SELECT sid, aid, title, time, comments, topic FROM ".$prefix."_stories ORDER BY time DESC LIMIT 0,10");
  598.     while ($row = $db->sql_fetchrow($result)) {
  599.     $rsid = intval($row['sid']);
  600.     $raid = $row['aid'];
  601.     $rtitle = $row['title'];
  602.     $rtime = $row['time'];
  603.     $rcomments = $row['comments'];
  604.     $rtopic = $row['topic'];
  605.     $row2 = $db->sql_fetchrow($db->sql_query("select topictext, topicimage from ".$prefix."_topics where topicid='$rtopic'"));
  606.     $topictext = $row2['topictext'];
  607.     $topicimage = $row2['topicimage'];
  608.     $content = "%%\n$rtitle\n/modules.php?name=News&file=article&sid=$rsid\n$rtime\n$raid\n$topictext\n$rcomments\n$topicimage\n";
  609.     fwrite($file, $content);
  610.     }
  611.     fclose($file);
  612. }
  613.  
  614. function cookiedecode($user) {
  615.     global $cookie, $prefix, $db, $user_prefix;
  616.     $user = addslashes($user);
  617.     $user = base64_decode($user);
  618.     $cookie = explode(":", $user);
  619.     $result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE username='$cookie[1]'");
  620.     $row = $db->sql_fetchrow($result);
  621.     $pass = $row['user_password'];
  622.     if ($cookie[2] == $pass && $pass != "") {
  623.     return $cookie;
  624.     } else {
  625.     unset($user);
  626.     unset($cookie);
  627.     }
  628. }
  629.  
  630. function getusrinfo($user) {
  631.     global $userinfo, $user_prefix, $db;
  632.     $user = addslashes($user);
  633.     $user2 = base64_decode($user);
  634.     $user3 = explode(":", $user2);
  635.     $result = $db->sql_query("SELECT * FROM ".$user_prefix."_users WHERE username='$user3[1]' AND user_password='$user3[2]'");
  636.     if ($db->sql_numrows($result) == 1) {
  637.         $userinfo = $db->sql_fetchrow($result);
  638.     }
  639.     return $userinfo;
  640. }
  641.  
  642. function FixQuotes ($what = "") {
  643.     $what = ereg_replace("'","''",$what);
  644.     while (eregi("\\\\'", $what)) {
  645.     $what = ereg_replace("\\\\'","'",$what);
  646.     }
  647.     return $what;
  648. }
  649.  
  650. /*********************************************************/
  651. /* text filter                                           */
  652. /*********************************************************/
  653.  
  654. function check_words($Message) {
  655.     global $CensorMode, $CensorReplace, $EditedMessage;
  656.     include("config.php");
  657.     $EditedMessage = $Message;
  658.     if ($CensorMode != 0) {
  659.     if (is_array($CensorList)) {
  660.         $Replace = $CensorReplace;
  661.         if ($CensorMode == 1) {
  662.         for ($i = 0; $i < count($CensorList); $i++) {
  663.             $EditedMessage = eregi_replace("$CensorList[$i]([^a-zA-Z0-9])","$Replace\\1",$EditedMessage);
  664.         }
  665.         } elseif ($CensorMode == 2) {
  666.         for ($i = 0; $i < count($CensorList); $i++) {
  667.             $EditedMessage = eregi_replace("(^|[^[:alnum:]])$CensorList[$i]","\\1$Replace",$EditedMessage);
  668.         }
  669.         } elseif ($CensorMode == 3) {
  670.         for ($i = 0; $i < count($CensorList); $i++) {
  671.             $EditedMessage = eregi_replace("$CensorList[$i]","$Replace",$EditedMessage);
  672.         }
  673.         }
  674.     }
  675.     }
  676.     return ($EditedMessage);
  677. }
  678.  
  679. function delQuotes($string){
  680.     /* no recursive function to add quote to an HTML tag if needed */
  681.     /* and delete duplicate spaces between attribs. */
  682.     $tmp="";    # string buffer
  683.     $result=""; # result string
  684.     $i=0;
  685.     $attrib=-1; # Are us in an HTML attrib ?   -1: no attrib   0: name of the attrib   1: value of the atrib
  686.     $quote=0;   # Is a string quote delimited opened ? 0=no, 1=yes
  687.     $len = strlen($string);
  688.     while ($i<$len) {
  689.     switch($string[$i]) { # What car is it in the buffer ?
  690.         case "\"": #"       # a quote.
  691.         if ($quote==0) {
  692.             $quote=1;
  693.         } else {
  694.             $quote=0;
  695.             if (($attrib>0) && ($tmp != "")) { $result .= "=\"$tmp\""; }
  696.             $tmp="";
  697.             $attrib=-1;
  698.         }
  699.         break;
  700.         case "=":           # an equal - attrib delimiter
  701.         if ($quote==0) {  # Is it found in a string ?
  702.             $attrib=1;
  703.             if ($tmp!="") $result.=" $tmp";
  704.             $tmp="";
  705.         } else $tmp .= '=';
  706.         break;
  707.         case " ":           # a blank ?
  708.         if ($attrib>0) {  # add it to the string, if one opened.
  709.             $tmp .= $string[$i];
  710.         }
  711.         break;
  712.         default:            # Other
  713.         if ($attrib<0)    # If we weren't in an attrib, set attrib to 0
  714.         $attrib=0;
  715.         $tmp .= $string[$i];
  716.         break;
  717.     }
  718.     $i++;
  719.     }
  720.     if (($quote!=0) && ($tmp != "")) {
  721.     if ($attrib==1) $result .= "=";
  722.     /* If it is the value of an atrib, add the '=' */
  723.     $result .= "\"$tmp\"";  /* Add quote if needed (the reason of the function ;-) */
  724.     }
  725.     return $result;
  726. }
  727.  
  728. function check_html ($str, $strip="") {
  729.     /* The core of this code has been lifted from phpslash */
  730.     /* which is licenced under the GPL. */
  731.     include("config.php");
  732.     if ($strip == "nohtml")
  733.         $AllowableHTML=array('');
  734.     $str = stripslashes($str);
  735.     $str = eregi_replace("<[[:space:]]*([^>]*)[[:space:]]*>",'<\\1>', $str);
  736.             // Delete all spaces from html tags .
  737.     $str = eregi_replace("<a[^>]*href[[:space:]]*=[[:space:]]*\"?[[:space:]]*([^\" >]*)[[:space:]]*\"?[^>]*>",'<a href="\\1">', $str);
  738.             // Delete all attribs from Anchor, except an href, double quoted.
  739.     $str = eregi_replace("<[[:space:]]* img[[:space:]]*([^>]*)[[:space:]]*>", '', $str);
  740.         // Delete all img tags
  741.     $str = eregi_replace("<a[^>]*href[[:space:]]*=[[:space:]]*\"?javascript[[:punct:]]*\"?[^>]*>", '', $str);
  742.         // Delete javascript code from a href tags -- Zhen-Xjell @ http://nukecops.com
  743.     $tmp = "";
  744.     while (ereg("<(/?[[:alpha:]]*)[[:space:]]*([^>]*)>",$str,$reg)) {
  745.         $i = strpos($str,$reg[0]);
  746.         $l = strlen($reg[0]);
  747.         if ($reg[1][0] == "/") $tag = strtolower(substr($reg[1],1));
  748.         else $tag = strtolower($reg[1]);
  749.         if ($a = $AllowableHTML[$tag])
  750.             if ($reg[1][0] == "/") $tag = "</$tag>";
  751.             elseif (($a == 1) || ($reg[2] == "")) $tag = "<$tag>";
  752.             else {
  753.               # Place here the double quote fix function.
  754.               $attrb_list=delQuotes($reg[2]);
  755.               // A VER
  756.               $attrb_list = ereg_replace("&","&",$attrb_list);
  757.               $tag = "<$tag" . $attrb_list . ">";
  758.             } # Attribs in tag allowed
  759.         else $tag = "";
  760.         $tmp .= substr($str,0,$i) . $tag;
  761.         $str = substr($str,$i+$l);
  762.     }
  763.     $str = $tmp . $str;
  764.     return $str;
  765.     exit;
  766.     /* Squash PHP tags unconditionally */
  767.     $str = ereg_replace("<\?","",$str);
  768.     return $str;
  769. }
  770.  
  771. function filter_text($Message, $strip="") {
  772.     global $EditedMessage;
  773.     check_words($Message);
  774.     $EditedMessage=check_html($EditedMessage, $strip);
  775.     return ($EditedMessage);
  776. }
  777.  
  778. /*********************************************************/
  779. /* formatting stories                                    */
  780. /*********************************************************/
  781.  
  782. function formatTimestamp($time) {
  783.     global $datetime, $locale;
  784.     setlocale (LC_TIME, $locale);
  785.     ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $time, $datetime);
  786.     $datetime = strftime(""._DATESTRING."", mktime($datetime[4],$datetime[5],$datetime[6],$datetime[2],$datetime[3],$datetime[1]));
  787.     $datetime = ucfirst($datetime);
  788.     return($datetime);
  789. }
  790.  
  791. function formatAidHeader($aid) {
  792.     global $prefix, $db;
  793.     $result = $db->sql_query("SELECT url, email FROM ".$prefix."_authors WHERE aid='$aid'");
  794.     $row = $db->sql_fetchrow($result);
  795.     $url = $row['url'];
  796.     $email = stripslashes($row['email']);
  797.     if (isset($url)) {
  798.         $aid = "<a href=\"$url\">$aid</a>";
  799.     } elseif (isset($email)) {
  800.     $aid = "<a href=\"mailto:$email\">$aid</a>";
  801.     } else {
  802.     $aid = $aid;
  803.     }
  804.     echo "$aid";
  805. }
  806.  
  807. function get_author($aid) {
  808.     global $prefix, $db;
  809.     $result = $db->sql_query("SELECT url, email FROM ".$prefix."_authors WHERE aid='$aid'");
  810.     $row = $db->sql_fetchrow($result);
  811.     $url = stripslashes($row['url']);
  812.     $email = stripslashes($row['email']);
  813.     if (isset($url)) {
  814.     $aid = "<a href=\"$url\">$aid</a>";
  815.     } elseif (isset($email)) {
  816.     $aid = "<a href=\"mailto:$email\">$aid</a>";
  817.     } else {
  818.     $aid = $aid;
  819.     }
  820.     return($aid);
  821. }
  822.  
  823. function themepreview($title, $hometext, $bodytext="", $notes="") {
  824.     echo "<b>$title</b><br><br>$hometext";
  825.     if ($bodytext != "") {
  826.     echo "<br><br>$bodytext";
  827.     }
  828.     if ($notes != "") {
  829.     echo "<br><br><b>"._NOTE."</b> <i>$notes</i>";
  830.     }
  831. }
  832.  
  833. function adminblock() {
  834.     global $admin, $prefix, $db;
  835.     if (is_admin($admin)) {
  836.     $result = $db->sql_query("SELECT title, content FROM ".$prefix."_blocks WHERE bkey='admin'");
  837.     while ($row = $db->sql_fetchrow($result)) {
  838.         $content = "<font class=\"content\">$row[content]</font>";
  839.         themesidebox($row[title], $row[content]);
  840.     }
  841.     $title = ""._WAITINGCONT."";
  842.     $num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_queue"));
  843.     $content = "<font class=\"content\">";
  844.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=submissions\">"._SUBMISSIONS."</a>: $num<br>";
  845.     $num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_reviews_add"));
  846.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=reviews\">"._WREVIEWS."</a>: $num<br>";
  847.     $num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_links_newlink"));
  848.     $brokenl = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_links_modrequest WHERE brokenlink='1'"));
  849.     $modreql = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_links_modrequest WHERE brokenlink='0'"));
  850.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=Links\">"._WLINKS."</a>: $num<br>";
  851.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=LinksListModRequests\">"._MODREQLINKS."</a>: $modreql<br>";
  852.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=LinksListBrokenLinks\">"._BROKENLINKS."</a>: $brokenl<br>";
  853.     $num = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_downloads_newdownload"));
  854.     $brokend = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_downloads_modrequest WHERE brokendownload='1'"));
  855.     $modreqd = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_downloads_modrequest WHERE brokendownload='0'"));
  856.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=downloads\">"._UDOWNLOADS."</a>: $num<br>";
  857.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=DownloadsListModRequests\">"._MODREQDOWN."</a>: $modreqd<br>";
  858.     $content .= "<strong><big>·</big></strong> <a href=\"admin.php?op=DownloadsListBrokenDownloads\">"._BROKENDOWN."</a>: $brokend<br></font>";
  859.     themesidebox($title, $content);
  860.     }
  861. }
  862.  
  863. function loginbox() {
  864.     global $user;
  865.     if (!is_user($user)) {
  866.     $title = _LOGIN;
  867.     $boxstuff = "<form action=\"modules.php?name=Your_Account\" method=\"post\">";
  868.     $boxstuff .= "<center><font class=\"content\">"._NICKNAME."<br>";
  869.     $boxstuff .= "<input type=\"text\" name=\"username\" size=\"8\" maxlength=\"25\"><br>";
  870.     $boxstuff .= ""._PASSWORD."<br>";
  871.     $boxstuff .= "<input type=\"password\" name=\"user_password\" size=\"8\" maxlength=\"20\"><br>";
  872.     $boxstuff .= "<input type=\"hidden\" name=\"op\" value=\"login\">";
  873.     $boxstuff .= "<input type=\"submit\" value=\""._LOGIN."\"></font></center></form>";
  874.     $boxstuff .= "<center><font class=\"content\">"._ASREGISTERED."</font></center>";
  875.     themesidebox($title, $boxstuff);
  876.     }
  877. }
  878.  
  879. function userblock() {
  880.     global $user, $cookie, $db, $user_prefix;
  881.     if((is_user($user)) AND ($cookie[8])) {
  882.     $sql = "SELECT ublock FROM ".$user_prefix."_users WHERE user_id='$cookie[0]'";
  883.     $result = $db->sql_query($sql);
  884.     $row = $db->sql_fetchrow($result);
  885.     $title = ""._MENUFOR." $cookie[1]";
  886.     themesidebox($title, $row[ublock]);
  887.     }
  888. }
  889.  
  890. function getTopics($s_sid) {
  891.     global $topicname, $topicimage, $topictext, $prefix, $db;
  892.     $sid = intval($s_sid);
  893.     $row = $db->sql_fetchrow($db->sql_query("SELECT topic FROM ".$prefix."_stories WHERE sid='$sid'"));
  894.     $rtopic = $row['topic'];
  895.     $result2 = $db->sql_query("SELECT topicid, topicname, topicimage, topictext FROM ".$prefix."_topics WHERE topicid='$rtopic'");
  896.     $row2 = $db->sql_fetchrow($result2);
  897.     $topicid = intval($row2['topicid']);
  898.     $topicname = $row2['topicname'];
  899.     $topicimage = $row2['topicimage'];
  900.     $topictext = $row2['topictext'];
  901. }
  902.  
  903. function headlines($bid, $cenbox=0) {
  904.     global $prefix, $db;
  905.     $bid = intval($bid);
  906.     $result = $db->sql_query("SELECT title, content, url, refresh, time FROM ".$prefix."_blocks WHERE bid='$bid'");
  907.     $row = $db->sql_fetchrow($result);
  908.     $title = $row['title'];
  909.     $content = $row['content'];
  910.     $url = $row['url'];
  911.     $refresh = intval($row['refresh']);
  912.     $otime = $row['time'];
  913.     $past = time()-$refresh;
  914.     if ($otime < $past) {
  915.     $btime = time();
  916.     $rdf = parse_url($url);
  917.     $fp = fsockopen($rdf['host'], 80, $errno, $errstr, 15);
  918.     if (!$fp) {
  919.         $content = "";
  920.         $db->sql_query("UPDATE ".$prefix."_blocks SET content='$content', time='$btime' WHERE bid='$bid'");
  921.         $cont = 0;
  922.         if ($cenbox == 0) {
  923.         themesidebox($title, $content);
  924.         } else {
  925.         themecenterbox($title, $content);
  926.         }
  927.         return;
  928.     }
  929.     if ($fp) {
  930.         if ($rdf['query'] != '')
  931.             $rdf['query'] = "?" . $rdf['query'];
  932.  
  933.         fputs($fp, "GET " . $rdf['path'] . $rdf['query'] . " HTTP/1.0\r\n");
  934.         fputs($fp, "HOST: " . $rdf['host'] . "\r\n\r\n");
  935.         $string    = "";
  936.         while(!feof($fp)) {
  937.             $pagetext = fgets($fp,300);
  938.             $string .= chop($pagetext);
  939.         }
  940.         fputs($fp,"Connection: close\r\n\r\n");
  941.         fclose($fp);
  942.         $items = explode("</item>",$string);
  943.         $content = "<font class=\"content\">";
  944.         for ($i=0;$i<10;$i++) {
  945.         $link = ereg_replace(".*<link>","",$items[$i]);
  946.         $link = ereg_replace("</link>.*","",$link);
  947.         $title2 = ereg_replace(".*<title>","",$items[$i]);
  948.         $title2 = ereg_replace("</title>.*","",$title2);
  949.         $title2 = stripslashes($title2);
  950.         if ($items[$i] == "" AND $cont != 1) {
  951.             $content = "";
  952.             $db->sql_query("UPDATE ".$prefix."_blocks SET content='$content', time='$btime' WHERE bid='$bid'");
  953.             $cont = 0;
  954.             if ($cenbox == 0) {
  955.             themesidebox($title, $content);
  956.             } else {
  957.             themecenterbox($title, $content);
  958.             }
  959.             return;
  960.         } else {
  961.             if (strcmp($link,$title2) AND $items[$i] != "") {
  962.             $cont = 1;
  963.             $content .= "<strong><big>·</big></strong><a href=\"$link\" target=\"new\">$title2</a><br>\n";
  964.             }
  965.         }
  966.         }
  967.  
  968.     }
  969.     $db->sql_query("UPDATE ".$prefix."_blocks SET content='$content', time='$btime' WHERE bid='$bid'");
  970.     }
  971.     $siteurl = ereg_replace("http://","",$url);
  972.     $siteurl = explode("/",$siteurl);
  973.     if (($cont == 1) OR ($content != "")) {
  974.     $content .= "<br><a href=\"http://$siteurl[0]\" target=\"blank\"><b>"._HREADMORE."</b></a></font>";
  975.     } elseif (($cont == 0) OR ($content == "")) {
  976.     $content = "<font class=\"content\">"._RSSPROBLEM."</font>";
  977.     }
  978.     if ($cenbox == 0) {
  979.     themesidebox($title, $content);
  980.     } else {
  981.     themecenterbox($title, $content);
  982.     }
  983. }
  984.  
  985. function automated_news() {
  986.     global $prefix, $multilingual, $currentlang, $db;
  987.     if ($multilingual == 1) {
  988.     $querylang = "WHERE (alanguage='$currentlang' OR alanguage='')"; /* the OR is needed to display stories who are posted to ALL languages */
  989.     } else {
  990.     $querylang = "";
  991.     }
  992.     $today = getdate();
  993.     $day = $today[mday];
  994.     if ($day < 10) {
  995.     $day = "0$day";
  996.     }
  997.     $month = $today[mon];
  998.     if ($month < 10) {
  999.     $month = "0$month";
  1000.     }
  1001.     $year = $today[year];
  1002.     $hour = $today[hours];
  1003.     $min = $today[minutes];
  1004.     $sec = "00";
  1005.     $result = $db->sql_query("SELECT anid, time FROM ".$prefix."_autonews $querylang");
  1006.     while ($row = $db->sql_fetchrow($result)) {
  1007.     $anid = $row['anid'];
  1008.     $time = $row['time'];
  1009.     ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $time, $date);
  1010.     if (($date[1] <= $year) AND ($date[2] <= $month) AND ($date[3] <= $day)) {
  1011.         if (($date[4] < $hour) AND ($date[5] >= $min) OR ($date[4] <= $hour) AND ($date[5] <= $min)) {
  1012.         $result2 = $db->sql_query("SELECT * FROM ".$prefix."_autonews WHERE anid='$anid'");
  1013.         while ($row2 = $db->sql_fetchrow($result2)) {
  1014.             $title = stripslashes(FixQuotes($row2['title']));
  1015.             $hometext = stripslashes(FixQuotes($row2['hometext']));
  1016.             $bodytext = stripslashes(FixQuotes($row2['bodytext']));
  1017.             $notes = stripslashes(FixQuotes($row2['notes']));
  1018.             $catid2 = intval($row2['catid']);
  1019.             $aid2 = $row2['aid'];
  1020.             $time2 = $row2['time'];
  1021.             $topic2 = $row2['topic'];
  1022.             $informant2 = $row2['informant'];
  1023.             $ihome2 = intval($row2['ihome']);
  1024.             $alanguage2 = $row2['alanguage'];
  1025.             $acomm2 = intval($row2['acomm']);
  1026.             $associated2 = $row2['associated'];
  1027.             $num = $db->sql_numrows($db->sql_query("SELECT sid FROM ".$prefix."_stories WHERE title='$title'"));
  1028.             if ($num == 0) {
  1029.               $db->sql_query("DELETE FROM ".$prefix."_autonews WHERE anid='$anid'");
  1030.                 $db->sql_query("INSERT INTO ".$prefix."_stories VALUES (NULL, '$catid2', '$aid2', '$title', '$time2', '$hometext', '$bodytext', '0', '0', '$topic2', '$informant2', '$notes', '$ihome2', '$alanguage2', '$acomm2', '0', '0', '0', '0', '$associated2')");
  1031.             }
  1032.         }
  1033.         }
  1034.     }
  1035.     }
  1036. }
  1037.  
  1038. function themecenterbox($title, $content) {
  1039.     OpenTable();
  1040.     echo "<center><font class=\"option\"><b>$title</b></font></center><br>"
  1041.     ."$content";
  1042.     CloseTable();
  1043.     echo "<br>";
  1044. }
  1045.  
  1046. function public_message() {
  1047.     global $prefix, $user_prefix, $db, $user, $admin, $p_msg, $cookie, $broadcast_msg;
  1048.     if ($broadcast_msg == 1) {
  1049.     if (is_user($user)) {
  1050.         cookiedecode($user);
  1051.         $result = $db->sql_query("SELECT broadcast FROM ".$user_prefix."_users WHERE username='$cookie[1]'");
  1052.     $row = $db->sql_fetchrow($result);
  1053.     $upref = $row['broadcast'];
  1054.     if ($upref == 1) {
  1055.         $t_off = "<br><p align=\"right\">[ <a href=\"modules.php?name=Your_Account&op=edithome\"><font color=\"FFFFFF\" size=\"2\">"._TURNOFFMSG."</font></a> ]</font>";
  1056.         $pm_show = 1;
  1057.     } else {
  1058.         $pm_show = 0;
  1059.     }
  1060.     } else {
  1061.     $t_off = "";
  1062.     }
  1063.     if (!is_user($user) OR (is_user($user) AND ($pm_show == 1))) {
  1064.     $p_msg = addslashes($p_msg);
  1065.     $c_mid = base64_decode($p_msg);
  1066.     $c_mid = intval($c_mid);
  1067.         $result2 = $db->sql_query("SELECT mid, content, date, who FROM ".$prefix."_public_messages WHERE mid > '$c_mid' ORDER BY date ASC LIMIT 1");
  1068.     $row2 = $db->sql_fetchrow($result2);
  1069.     $mid = intval($row2['mid']);
  1070.     $content = $row2['content'];
  1071.     $tdate = $row2['date'];
  1072.     $who = $row2['who'];
  1073.     if ((!isset($c_mid)) OR ($c_mid = $mid)) {
  1074.             $public_msg = "<br><table width=\"90%\" border=\"1\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"FFFFFF\" align=\"center\"><tr><td>\n";
  1075.             $public_msg .= "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"FF0000\"><tr><td>\n";
  1076.             $public_msg .= "<font color=\"FFFFFF\" size=\"3\"><b>"._BROADCASTFROM." <a href=\"modules.php?name=Your_Account&op=userinfo&username=$who\"><font color=\"FFFFFF\" size=\"3\">$who</font></a>: \"$content\"</b>";
  1077.         $public_msg .= "$t_off";
  1078.         $public_msg .= "</td></tr></table>";
  1079.             $public_msg .= "</td></tr></table>";
  1080.         $ref_date = $tdate+600;
  1081.         $actual_date = time();
  1082.         if ($actual_date >= $ref_date) {
  1083.         $public_msg = "";
  1084.         $numrows = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_public_messages"));
  1085.         if ($numrows == 1) {
  1086.             $db->sql_query("DELETE FROM ".$prefix."_public_messages");
  1087.             $mid = 0;
  1088.         } else {
  1089.             $db->sql_query("DELETE FROM ".$prefix."_public_messages WHERE mid='$mid'");
  1090.         }
  1091.         }
  1092.         if ($mid == 0 OR $mid == "") {
  1093.         setcookie("p_msg");
  1094.         } else {
  1095.             $mid = addslashes($mid);
  1096.             $mid = base64_encode($mid);
  1097.         setcookie("p_msg",$mid,time()+600);
  1098.         }
  1099.     }
  1100.     }
  1101.     } else {
  1102.         $public_msg = "";
  1103.     }
  1104.     return($public_msg);
  1105. }
  1106.  
  1107. function get_theme() {
  1108.     global $user, $cookie, $Default_Theme;
  1109.     if(is_user($user)) {
  1110.     $user = addslashes($user);
  1111.     $user2 = base64_decode($user);
  1112.     $t_cookie = explode(":", $user2);
  1113.     if($t_cookie[9]=="") $t_cookie[9]=$Default_Theme;
  1114.     if(isset($theme)) $t_cookie[9]=$theme;
  1115.     if(!$tfile=@opendir("themes/$t_cookie[9]")) {
  1116.         $ThemeSel = $Default_Theme;
  1117.     } else {
  1118.         $ThemeSel = $t_cookie[9];
  1119.     }
  1120.     } else {
  1121.     $ThemeSel = $Default_Theme;
  1122.     }
  1123.     return($ThemeSel);
  1124. }
  1125.  
  1126. function removecrlf($str) {
  1127.     // Function for Security Fix by Ulf Harnhammar, VSU Security 2002
  1128.     // Looks like I don't have so bad track record of security reports as Ulf believes
  1129.     // He decided to not contact me, but I'm always here, digging on the net
  1130.     return strtr($str, "\015\012", ' ');
  1131. }
  1132.  
  1133. function paid() {
  1134.     global $db, $user, $cookie, $adminmail, $sitename, $nukeurl, $subscription_url, $user_prefix, $prefix;
  1135.     if (is_user($user)) {
  1136.         if ($subscription_url != "") {
  1137.             $renew = ""._SUBRENEW." $subscription_url";
  1138.         } else {
  1139.             $renew = "";
  1140.         }
  1141.         cookiedecode($user);
  1142.         $sql = "SELECT * FROM ".$prefix."_subscriptions WHERE userid='$cookie[0]'";
  1143.         $result = $db->sql_query($sql);
  1144.         $numrows = $db->sql_numrows($result);
  1145.         $row = $db->sql_fetchrow($result);
  1146.         if ($numrows == 0) {
  1147.             return 0;
  1148.         } elseif ($numrows != 0) {
  1149.             $time = time();
  1150.             if ($row[subscription_expire] <= $time) {
  1151.                 $db->sql_query("DELETE FROM ".$prefix."_subscriptions WHERE userid='$cookie[0]' AND id='$row[id]'");
  1152.                 $from = "$sitename <$adminmail>";
  1153.                 $subject = "$sitename: "._SUBEXPIRED."";
  1154.                 $body = ""._HELLO." $cookie[1]:\n\n"._SUBSCRIPTIONAT." $sitename "._HASEXPIRED."\n$renew\n\n"._HOPESERVED."\n\n$sitename "._TEAM."\n$nukeurl";
  1155.                 $row = $db->sql_fetchrow($db->sql_query("SELECT user_email FROM ".$user_prefix."_users WHERE id='$cookie[0]' AND nickname='$cookie[1]' AND password='$cookie[2]'"));
  1156.                 mail($row[user_email], $subject, $body, "From: $from\nX-Mailer: PHP/" . phpversion());
  1157.             }
  1158.             return 1;
  1159.         }
  1160.     } else {
  1161.         return 0;    
  1162.     }
  1163. }
  1164.  
  1165. switch($gfx) {
  1166.  
  1167.     case "gfx":
  1168.     $datekey = date("F j");
  1169.     $rcode = hexdec(md5($_SERVER[HTTP_USER_AGENT] . $sitekey . $random_num . $datekey));
  1170.     $code = substr($rcode, 2, 6);
  1171.     $image = ImageCreateFromJPEG("images/code_bg.jpg");
  1172.     $text_color = ImageColorAllocate($image, 80, 80, 80);
  1173.     Header("Content-type: image/jpeg");
  1174.     ImageString ($image, 5, 12, 2, $code, $text_color);
  1175.     ImageJPEG($image, '', 75);
  1176.     ImageDestroy($image);
  1177.     die();
  1178.     break;
  1179.  
  1180. }
  1181.  
  1182. ?>