ajones

Untitled

Sep 8th, 2012
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.16 KB | None | 0 0
  1. <?php
  2.  
  3. //Global PHP
  4. //cloudflare of RS-PS.org
  5. //cloudflare removed of RS-PS.org
  6. //DMCA added, but not seeing the button on the homepage anymore
  7. //landofrsps.com
  8. //landofrsps did release RS-PS.org
  9. //Tobias: Added extra security.
  10. //11/6/09: Added pages to displayServers() function
  11. //20/10/09: Got domain http://www.tobex.info/
  12. //23/10/09: Infexis IP banned for stealing my work
  13. //26/10/09: Added First time created message, creation warning and featured server.
  14. //17/2/11: Added platinum upgrade to shop etc, everythings working good finally :)
  15. //11/4/11: Was ddosed for the second time, moved from bluehost.com to justhost.com :)
  16. //11/4/11: DMCA'd by jagex, but removed the .jars and caches to offshore host;) linking isn't illegal
  17. //16/6/11: Moved to a dedicated server, got toplist, status checkers and new create page
  18. //23/2/12: 2.0 Development now underway, copied over global.php
  19. //5/3/12: Checking for invalid server name cookies in init()
  20.  
  21. /* CONNECTION DETAILS */
  22.  
  23. $loader_server = "RS-PS.org";
  24.  
  25. $mysql_host = "localhost";
  26. $mysql_database = "themasks_removed";
  27. $mysql_username = "themasks_removed";
  28. $mysql_password = "RS-PS.ORG PASSWORD ALL CHANGED";
  29.  
  30. $con = mysql_connect($mysql_host, $mysql_username, $mysql_password, false);
  31. if (!$con) { die('Could not connect: ' . mysql_error()); }
  32. mysql_select_db($mysql_database);
  33.  
  34. /* INITIALISE */
  35.  
  36. init(); //Calls everything like security
  37.  
  38. /* VARIABLES */
  39.  
  40. $check_status = 5; //How often to check servers' statuses, in minutes
  41. $max_banner_width = 800; //Maximum banner width
  42. $max_banner_height = 150; //Maximum banner height
  43. $illegal_characters = array('meta', 'window.location', 'unescape', 'location.replace', 'applet'); //Illegal characters for server info pages and header/footers
  44.  
  45. $chatbox_width = 735;
  46. $chatbox_height = 450;
  47. $chatbox_embed = '<img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://c.gigcount.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEzMDI1MzQ3NjAwMjkmcHQ9MTMwMjUzNDc3MzU*NiZwPTUzMTUxJmQ9Jmc9MSZvPTQ2YmIxYzkzMzE*ODQ4NzU4MTYw/NjZjMjkyY2NiNjU*.gif" /><embed src="http://www.xatech.com/web_gear/chat/chat.swf" quality="high" width="'.$chatbox_width.'" height="'.$chatbox_height.'" name="chat" FlashVars="id=139678034" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://xat.com/update_flash.shtml" /><br>';
  48.  
  49. /* FUNCTIONS */
  50.  
  51. function validateServer($server) {
  52. //Validates a server's name, can be used in login, searching and signup
  53. if (strlen($str) > 20) {
  54. //If the server name is longer than 20 characters
  55. return false;
  56. }
  57. if (preg_match('/[^\w\d_ -]/si', $server)) {
  58. //The server name contains characers other than:
  59. /* a-z, A-Z, 0-9, -, _, spaces */
  60. return false;
  61. }
  62.  
  63. //No errors were caught
  64. return true;
  65. /* USAGE
  66. if(validateServer("invalidname' or 1=1")) {
  67. //server name is ok
  68. } else {
  69. //server name isnt ok
  70. }
  71. */
  72. }
  73.  
  74. function update_hits($server_name) {
  75. //Updates the user's hits + 1 every visit :D
  76. mysql_select_db($mysql_database);
  77. mysql_query("UPDATE servers SET hits = hits + 1 WHERE server_name='$server_name'") or die(mysql_error());
  78. }
  79.  
  80. function new_pass($server_name, $new_pass) {
  81. //Sets a new password
  82. mysql_select_db($mysql_database);
  83. if(mysql_query("UPDATE servers SET password='$new_pass' WHERE server_name='$server_name' LIMIT 1")) {
  84. return true;
  85. } else {
  86. return false;
  87. }
  88. }
  89.  
  90. function doubleVotes($server) {
  91. mysql_select_db($mysql_database);
  92. $query = "SELECT dv FROM playershare WHERE server_name = '".$server."' AND dv = '1'";
  93. $result = mysql_query($query) or die(mysql_error());
  94.  
  95. if (mysql_num_rows($result) > 0)
  96. {
  97. return true;
  98. }
  99. else
  100. {
  101. return false;
  102. }
  103. }
  104.  
  105.  
  106. function row_exists($table, $cell, $value) {
  107. mysql_select_db($mysql_database);
  108. $query = "SELECT ".$cell." FROM ".$table." WHERE ".$cell." = '".$value."'";
  109. $result = mysql_query($query) or die(mysql_error());
  110.  
  111. if (mysql_num_rows($result) > 0)
  112. {
  113. return true;
  114. }
  115. else
  116. {
  117. return false;
  118. }
  119. }
  120.  
  121. function server_exists($server_name) {
  122. //0 = no, 1 = yes
  123. mysql_select_db($mysql_database);
  124. //Check if row exists:
  125. $result = mysql_query("SELECT count(*) as numrecords FROM servers WHERE server_name = '$server_name' LIMIT 1") or die ('Queryproblem checing esisting record.');
  126. $row = mysql_fetch_assoc($result);
  127. if ($row['numrecords'] >= 1) {
  128. return 1;
  129. } else {
  130. return 0;
  131. }
  132. }
  133.  
  134. /* GENERAL FUNCTIONS */
  135.  
  136. function update_last_voted($userId, $lastvoted) {
  137. mysql_select_db("rspsorg1_smf");
  138. $now = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("y"));
  139. if($lastvoted >= mktime(date("H")-6, date("i"), date("s"), date("m"), date("d"), date("y"))) {
  140. return false;
  141. } else {
  142. $query="UPDATE `rspsorg1_smf`.`smf_members` SET last_voted = '$now' WHERE ID_MEMBER = '$userId'";
  143. $rt=mysql_query($query);
  144. echo mysql_error();
  145. return true;
  146. }
  147.  
  148. }
  149.  
  150. function get_last_voted($userId) {
  151. mysql_select_db("rspsorg1_smf");
  152. $query="SELECT last_voted FROM smf_members WHERE ID_MEMBER = '$userId' LIMIT 1";
  153. $rt=mysql_query($query);
  154. echo mysql_error();
  155. while($nt = mysql_fetch_array($rt)){
  156. return $nt[last_voted];
  157. }
  158. }
  159.  
  160. function update_votes($serverName) {
  161. mysql_select_db($mysql_database);
  162.  
  163. if(doubleVotes($serverName)) {
  164. $addVotes = 2;
  165. } else {
  166. $addVotes = 1;
  167. }
  168.  
  169. $query="UPDATE servers SET votes = votes + $addVotes WHERE server_name = '$serverName'";
  170. $rt=mysql_query($query);
  171. }
  172.  
  173. function display_platinum_banner() {
  174. mysql_select_db($mysql_database);
  175. $query="SELECT server_name, advert FROM `rspsorg1_tobex`.`servers` WHERE advert != '' ORDER BY RAND() LIMIT 1";
  176. $rt=mysql_query($query);
  177. echo mysql_error();
  178. while($nt = mysql_fetch_array($rt)){
  179. echo "<a href='play.php?server=$nt[server_name]'><img src='$nt[advert]'></a>";
  180. }
  181. }
  182.  
  183. function daysBetween($d1, $d2) {
  184. //D2 IS AFTER D1
  185.  
  186. $days_diff = floor(($d2-$d1)/86400); //86400 for days
  187.  
  188. return $days_diff;
  189. }
  190.  
  191. function hoursDiff($d1, $d2) {
  192. //D2 IS AFTER D1
  193.  
  194. $hours_diff = floor(($d2-$d1)/3600); //hours
  195.  
  196. return $hours_diff;
  197. }
  198.  
  199. function showServersLike2($enteredText, $sortby, $status) {
  200. mysql_select_db($mysql_database);
  201. $enteredText = cleanQuery($enteredText); //Fixing mysql vunreabilities
  202. $sortby = cleanQuery($sortby); //Fixing mysql vunreabilities
  203. $status = cleanQuery($status); //Fixing mysql vunreabilities
  204. if($enteredText == "") {
  205. if($status == 0) {
  206. //Show both:
  207. $query="SELECT servers.server_name, hits, votes, status, info.type2 FROM servers INNER JOIN info USING ( server_name ) ORDER BY servers.$sortby DESC LIMIT 35";
  208. } else {
  209. //Show online only:
  210. $query="SELECT servers.server_name, hits, votes, status, info.type2 FROM servers INNER JOIN info USING ( server_name ) WHERE servers.status = '1' ORDER BY servers.$sortby DESC LIMIT 35";
  211. }
  212. } else {
  213. if($status == 0) {
  214. //Show both:
  215. $query="SELECT servers.server_name, hits, votes, status, info.type2 FROM servers INNER JOIN info USING ( server_name ) WHERE servers.server_name LIKE '".$enteredText."%' ORDER BY servers.$sortby DESC LIMIT 35";
  216. } else {
  217. //Show online only:
  218. $query="SELECT servers.server_name, hits, votes, status, info.type2 FROM servers INNER JOIN info USING ( server_name ) WHERE servers.server_name LIKE '".$enteredText."%' AND servers.status='1' ORDER BY servers.$sortby DESC LIMIT 35";
  219. }
  220. }
  221. $rt=mysql_query($query) or die(mysql_error());
  222. $num = 1; //Starting Number
  223. while($nt = mysql_fetch_array($rt)){
  224.  
  225. echo "<tr>
  226. <td align='center'>$num</td>
  227. <td align='center'></font><a class='link' href='info.php?server=$nt[server_name]'>
  228. <font color='#666666'>$nt[server_name]</font></a></td>";
  229. if($nt[type2] == 0) {
  230. echo "<td align='center'>Not Specified</td>";
  231. } else if($nt[type2] == 1) {
  232. echo "<td align='center'>Player Killing</td>";
  233. } else if($nt[type2] == 2) {
  234. echo "<td align='center'>Skilling</td>";
  235. } else if($nt[type2] == 3) {
  236. echo "<td align='center'>Economy</td>";
  237. } else if($nt[type2] == 4) {
  238. echo "<td align='center'>Spawning</td>";
  239. }
  240. echo "<td align='center'>$nt[votes]</td>
  241. <td align='center'>$nt[hits]</td>";
  242. if($nt[status] == 1) {
  243. echo "<td align='center'><font color='#066E08'>Online</font></td>";
  244. } else {
  245. echo "<td align='center'><font color='#990000'>Offline</font></td>";
  246. }
  247. echo "</tr>";
  248.  
  249. $num++;
  250. }
  251.  
  252. }
  253.  
  254. function showServersLike($enteredText, $sortby, $status) {
  255. mysql_select_db($mysql_database);
  256. $enteredText = cleanQuery($enteredText); //Fixing mysql vunreabilities
  257. $sortby = cleanQuery($sortby); //Fixing mysql vunreabilities
  258. $status = cleanQuery($status); //Fixing mysql vunreabilities
  259. if($enteredText == "") {
  260. if($status == 0) {
  261. //Show both:
  262. //$query="SELECT server_name, type, hits, donated, votes, status, last_checked FROM servers ORDER BY $sortby DESC LIMIT 35"; //LIMIT $limit
  263. $query="SELECT servers.server_name, servers.type, hits, donated, votes, status, last_checked, info.type2 FROM servers INNER JOIN info USING ( server_name ) ORDER BY servers.$sortby DESC LIMIT 35";
  264. } else {
  265. //Show online only:
  266. $query="SELECT servers.server_name, servers.type, hits, donated, votes, status, last_checked, info.type2 FROM servers INNER JOIN info USING ( server_name ) WHERE servers.status = '1' ORDER BY servers.$sortby DESC LIMIT 35";
  267. }
  268. } else {
  269. if($status == 0) {
  270. //Show both:
  271. $query="SELECT servers.server_name, servers.type, hits, donated, votes, status, last_checked, info.type2 FROM servers INNER JOIN info USING ( server_name ) WHERE servers.server_name LIKE '".$enteredText."%' ORDER BY servers.$sortby DESC LIMIT 30";
  272. } else {
  273. //Show online only:
  274. $query="SELECT servers.server_name, servers.type, hits, donated, votes, status, last_checked, info.type2 FROM servers INNER JOIN info USING ( server_name ) WHERE servers.server_name LIKE '".$enteredText."%' AND servers.status = '1' ORDER BY servers.$sortby DESC LIMIT 30";
  275. }
  276. }
  277. $rt=mysql_query($query);
  278. echo mysql_error();
  279. echo " <table border='1' class='content' width='100%'>
  280. <tr>
  281. <td align='center'><font size=4>Server Name</td>
  282. <td align='center'>Votes</td>
  283. <td align='center'>Status</td>
  284. <td align='center'>Hits</td>
  285. <td align='center'>Type</td>
  286. <td align='center'>Donated</td>
  287. <td align='center'>Last checked</font></td>
  288. </tr>";
  289.  
  290. while($nt = mysql_fetch_array($rt)){
  291. echo " <tr>";
  292.  
  293. if($nt[type2] != 0) {
  294. if($nt[type2] == 2) {
  295. echo "<td style='background-image: url(".urldecode('img%2Finfo%2Ftypes%2F').$nt[type2].".png); background-size:27px 28px; background-position:left center; background-repeat:no-repeat; font-size: 11pt' align='center'><a href='info.php?server=$nt[server_name]'>$nt[server_name]</a></td>";
  296. } else {
  297. echo "<td style='background-image: url(".urldecode('img%2Finfo%2Ftypes%2F').$nt[type2].".gif); background-size:27px 28px; background-position:left center; background-repeat:no-repeat; font-size: 11pt' align='center'><a href='info.php?server=$nt[server_name]'>$nt[server_name]</a></td>";
  298. }
  299. } else {
  300. echo "<td style=']font-size: 11pt' align='center'><a href='info.php?server=$nt[server_name]'>$nt[server_name]</a></td>";
  301.  
  302. }
  303.  
  304.  
  305. echo "<td style='font-size: 11pt' align='center'>$nt[votes]</td>
  306. <td style='font-size: 11pt' align='center'>";
  307. if($nt[status] == 1) {
  308. echo "<font style='text-shadow: 0.0em 0.0em 0.5em #00FF00;' color='#00FF00'>Online</font>";
  309. } else {
  310. echo "<font style='text-shadow: 0.0em 0.0em 0.5em #CC0000;' color='#CC0000'>Offline</font>";
  311. }
  312. echo "</td>
  313. <td style='font-size: 11pt' align='center'>$nt[hits]</td>";
  314. if($nt[type] == 1) {
  315. echo "<td style='font-size: 11pt' align='center'><font style='text-shadow: 0.0em 0.0em 0.5em #996600;'>Gold</font></td>";
  316. } else if($nt[type] == 0) {
  317. echo "<td style='font-size: 11pt' align='center'>Free</td>";
  318. }
  319.  
  320. echo "<td style='font-size: 11pt' align='center'>$nt[donated]</td>
  321. <td style='font-size: 11pt' align='center'>";
  322. if($nt[last_checked] !== 0) {
  323. echo "<font size=1>".date('D M j G:i:s T Y', $nt[last_checked])."</font>";
  324. } else {
  325. echo "Never";
  326. }
  327. echo "</td>
  328. </tr>";
  329. }
  330.  
  331. echo "</table>";
  332. }
  333.  
  334. function showMiniToplist() {
  335. mysql_select_db($mysql_database);
  336. $query="SELECT server_name, votes, status FROM servers ORDER BY votes DESC LIMIT 40"; //LIMIT $limit
  337. $rt=mysql_query($query);
  338. echo mysql_error();
  339. echo " <table border='1' width='100%'>
  340. <tr>
  341. <td align='center'>Server</td>
  342. <td align='center'>Votes</td>
  343. <td align='center'>Status</td>
  344. </tr>";
  345.  
  346. while($nt = mysql_fetch_array($rt)){
  347. echo " <tr>
  348. <td style='font-size: 11pt' align='center'><a href='info.php?server=$nt[server_name]'>$nt[server_name]</a></td>";
  349.  
  350. echo "<td style='font-size: 11pt' align='center'>$nt[votes]</td>
  351. <td style='font-size: 11pt' align='center'>";
  352. if($nt[status] == 1) {
  353. echo "<font style='text-shadow: 0.0em 0.0em 0.5em #00FF00;' color='#00FF00'>Online</font>";
  354. } else {
  355. echo "<font style='text-shadow: 0.0em 0.0em 0.5em #CC0000;' color='#CC0000'>Offline</font>";
  356. }
  357. echo "</td></tr>";
  358. }
  359.  
  360. echo "</table>";
  361. }
  362.  
  363.  
  364. function getType2($type_no, $donated) {
  365. if($type == 0 && $donated < $premium_amount) {
  366. return "Free";
  367. } else if ($type == 0 && $donated >= $premium_amount) {
  368. return "<font style='text-shadow: 0.0em 0.0em 0.5em #C0C0C0;'>Premium</font>";
  369. }
  370.  
  371. if($type == 1) {
  372. return "<font style='text-shadow: 0.0em 0.0em 0.5em #996600;'>Gold</font>";
  373. }
  374. if($type == 2) {
  375. return "<font style='text-shadow: 0.0em 0.0em 0.5em #FFFFFF;'>Platinum</font>";
  376. }
  377.  
  378. return "Free";
  379. }
  380.  
  381. function ping($ip, $port, $type) {
  382. //Returns either 'Online' or 'Offline' in green/red :D
  383. $up = @fsockopen($ip, $port, $errno, $errstr, 1); //1 second timeout so script doesn't hang
  384. if($up)
  385. {
  386. if($type == 0) {
  387. return "[Online]";
  388. } else {
  389. return 1;
  390. }
  391. } else {
  392. if($type == 0) {
  393. return "[Offline]";
  394. } else {
  395. return 0;
  396. }
  397. }
  398. }
  399.  
  400. function topDonator($type) {
  401. mysql_select_db($mysql_database);
  402. $query="SELECT server_name FROM servers ORDER BY donated DESC LIMIT 1";
  403. $rt=mysql_query($query);
  404. echo mysql_error();
  405. while($nt = mysql_fetch_array($rt)){
  406. if ($type = "redirect") {
  407. header("Location: play.php?server=".$nt[server_name]); //Redirect :D
  408. } else {
  409. return $nt[server_name]; //Just print
  410. }
  411. }
  412. }
  413.  
  414. function appletParams($server, $detail) {
  415. //Prints out the respective parameters.
  416. //Now added Loader functionality for different client bases :D
  417. //MSQL Shit:
  418. mysql_select_db($mysql_database);
  419. $check = mysql_query("SELECT * FROM servers WHERE server_name = '".$server."' LIMIT 1")or die(mysql_error());
  420. while($info = mysql_fetch_array( $check ))
  421. {
  422. if ($info[loader] == "") {
  423. $loader = "bin/delta_loader.jar";
  424. } else {
  425. $loader = $info[loader];
  426. }
  427. echo "
  428. <applet name=client width=765 height=503 archive='$loader' code='client.class'>
  429. <PARAM name='java_arguments' value='-Xmx700m'>
  430. <PARAM name='server_name' value='$info[server_name]'>
  431. <PARAM name='detail' value='$detail'>
  432. <PARAM name='ip' value='$info[ip]'>
  433. <PARAM name='port' value='$info[port]'>
  434. <PARAM name='background_image' value='$info[bg_image]'>
  435. <PARAM name='headicons' value='$info[headicons]'>
  436. </applet>";
  437. }
  438. }
  439.  
  440. function appletParams2($server, $detail) {
  441. //Prints out the respective parameters. on one line for javascripts!
  442. //MSQL Shit:
  443. mysql_select_db($mysql_database);
  444. $check = mysql_query("SELECT * FROM servers WHERE server_name = '".$server."' LIMIT 1")or die(mysql_error());
  445. while($info = mysql_fetch_array( $check ))
  446. {
  447. if ($info[loader] == "") {
  448. $loader = "bin/delta_loader.jar";
  449. } else {
  450. $loader = $info[loader];
  451. }
  452. echo "<applet name=client width=765 height=503 archive='$loader' code='client.class'><PARAM name='java_arguments' value='-Xmx700m'><PARAM name='server_name' value='$info[server_name]'><PARAM name='detail' value='$detail'><PARAM name='ip' value='$info[ip]'><PARAM name='port' value='$info[port]'><PARAM name='background_image' value='$info[bg_image]'><PARAM name='headicons' value='$info[headicons]'></applet>";
  453. }
  454. }
  455.  
  456. function get_server_info($server) {
  457. mysql_select_db($mysql_database);
  458. $check = mysql_query("SELECT info FROM rspsorg1_tobex.info WHERE server_name = '".$server."' LIMIT 1")or die(mysql_error());
  459. while($info = mysql_fetch_array( $check ))
  460. {
  461. return $info[info];
  462. }
  463. }
  464.  
  465.  
  466. function get_info($cell, $server) {
  467. mysql_select_db($mysql_database);
  468. $check = mysql_query("SELECT ".$cell." FROM servers WHERE server_name = '".$server."' LIMIT 1")or die(mysql_error());
  469. while($info = mysql_fetch_array( $check ))
  470. {
  471. return $info[$cell];
  472. }
  473. }
  474.  
  475. function menu($server) {
  476. mysql_select_db($mysql_database);
  477. $check = mysql_query("SELECT homepage FROM servers WHERE server_name = '".$server."' LIMIT 1")or die(mysql_error());
  478. while($info = mysql_fetch_array( $check ))
  479. {
  480. //Make sure and 'homepage' is not null; if it is, dont make a button.
  481. if ($info[homepage] != "none" && $info[homepage] != "") {
  482. echo "<a id='home' href='$info[homepage]' target='_blank'>
  483. Home
  484. </a> ";
  485. }
  486. }
  487. }
  488.  
  489. function is_port($port, $server) {
  490. //If port is set to $port, return 'selected', for drop down list in edit function.
  491. if (get_info('port', $server) == $port) {
  492. return "selected";
  493. } else {
  494. }
  495. }
  496.  
  497. function is_headicon($headicons, $server) {
  498. //If headicons is set to $headicons, return 'selected', for drop down list in edit function.
  499. if (get_info('headicons', $server) == $headicons) {
  500. return "selected";
  501. } else {
  502. }
  503. }
  504.  
  505. function is_loader($loader, $server) {
  506. //If loader is set to $loader, return 'selected', for drop down list in edit function.
  507. if (get_info('loader', $server) == $loader) {
  508. return "selected";
  509. } else {
  510. }
  511. }
  512.  
  513. function init() {
  514. //everything to be checked on every page, you could add IP banning here etc.
  515. if(isset($_COOKIE['server'])) {
  516. //Server is logged in, check for invalid server names
  517. if(!validateServer($_COOKIE['server'])) {
  518. header("Location: login.php?logout");
  519. }
  520. }
  521.  
  522.  
  523. /* START OF SECURITY & OTHER FUNCTIONS */
  524.  
  525. function cleanQuery($string)
  526. {
  527. if(get_magic_quotes_gpc()) // prevents duplicate backslashes
  528. {
  529. $string = stripslashes($string);
  530. }
  531. if (phpversion() >= '4.3.0')
  532. {
  533. $string = mysql_real_escape_string($string);
  534. }
  535. else
  536. {
  537. $string = mysql_escape_string($string);
  538. }
  539. return $string;
  540. }
  541.  
  542. function contains($str, $content, $ignorecase=true){
  543. if ($ignorecase){
  544. $str = strtolower($str);
  545. $content = strtolower($content);
  546. }
  547. $position = strpos($str, $content);
  548. if ($position === false) {
  549. return false;
  550. } else {
  551. return true;
  552. }
  553. }
  554.  
  555. function StartsWith($Haystack, $Needle){
  556. // Recommended version, using strpos
  557. return strpos($Haystack, $Needle) === 0;
  558. }
  559.  
  560. function endsWith($haystack,$needle,$case=true) {
  561. if($case){return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0);}
  562. return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0);
  563. }
  564.  
  565. /* Credits to Elliot White for the following code */
  566. function count_days( $a, $b )
  567. {
  568. // First we need to break these dates into their constituent parts:
  569. $gd_a = getdate( $a );
  570. $gd_b = getdate( $b );
  571.  
  572. // Now recreate these timestamps, based upon noon on each day
  573. // The specific time doesn't matter but it must be the same each day
  574. $a_new = mktime( 12, 0, 0, $gd_a['mon'], $gd_a['mday'], $gd_a['year'] );
  575. $b_new = mktime( 12, 0, 0, $gd_b['mon'], $gd_b['mday'], $gd_b['year'] );
  576.  
  577. // Subtract these two numbers and divide by the number of seconds in a
  578. // day. Round the result since crossing over a daylight savings time
  579. // barrier will cause this time to be off by an hour or two.
  580. return round( abs( $a_new - $b_new ) / 86400 );
  581. }
  582.  
  583. function strpos_array($haystack, $needles) {
  584. if ( is_array($needles) ) {
  585. foreach ($needles as $str) {
  586. if ( is_array($str) ) {
  587. $pos = strpos_array($haystack, $str);
  588. } else {
  589. $pos = strpos($haystack, $str);
  590. }
  591. if ($pos !== FALSE) {
  592. return $pos;
  593. }
  594. }
  595. } else {
  596. return strpos($haystack, $needles);
  597. }
  598. }
  599.  
  600. // Time format is UNIX timestamp or
  601. // PHP strtotime compatible strings
  602. function dateDiff($time1, $time2, $precision = 6) {
  603. // If not numeric then convert texts to unix timestamps
  604. if (!is_int($time1)) {
  605. $time1 = strtotime($time1);
  606. }
  607. if (!is_int($time2)) {
  608. $time2 = strtotime($time2);
  609. }
  610.  
  611. // If time1 is bigger than time2
  612. // Then swap time1 and time2
  613. if ($time1 > $time2) {
  614. $ttime = $time1;
  615. $time1 = $time2;
  616. $time2 = $ttime;
  617. }
  618.  
  619. // Set up intervals and diffs arrays
  620. $intervals = array('year','month','day','hour','minute','second');
  621. $diffs = array();
  622.  
  623. // Loop thru all intervals
  624. foreach ($intervals as $interval) {
  625. // Set default diff to 0
  626. $diffs[$interval] = 0;
  627. // Create temp time from time1 and interval
  628. $ttime = strtotime("+1 " . $interval, $time1);
  629. // Loop until temp time is smaller than time2
  630. while ($time2 >= $ttime) {
  631. $time1 = $ttime;
  632. $diffs[$interval]++;
  633. // Create new temp time from time1 and interval
  634. $ttime = strtotime("+1 " . $interval, $time1);
  635. }
  636. }
  637.  
  638. $count = 0;
  639. $times = array();
  640. // Loop thru all diffs
  641. foreach ($diffs as $interval => $value) {
  642. // Break if we have needed precission
  643. if ($count >= $precision) {
  644. break;
  645. }
  646. // Add value and interval
  647. // if value is bigger than 0
  648. if ($value > 0) {
  649. // Add s if value is not 1
  650. if ($value != 1) {
  651. $interval .= "s";
  652. }
  653. // Add value and interval to times array
  654. $times[] = $value . " " . $interval;
  655. $count++;
  656. }
  657. }
  658.  
  659. // Return string with times
  660. return implode(", ", $times);
  661. }
  662.  
  663. function ReplaceVulnFix($input) {
  664. $input = str_replace("<", "", $input);
  665. $input = str_replace(">", "", $input);
  666. $input = mysql_real_escape_string($input);
  667. return $input;
  668. }
  669.  
  670. function _ago($tm,$rcs = 0) {
  671. $cur_tm = time();
  672. $dif = $cur_tm-$tm;
  673. $pds = array('second','minute','hour','day','week','month','year','decade');
  674. $lngh = array(1,60,3600,86400,604800,2630880,31570560,315705600);
  675. for($v = sizeof($lngh)-1; ($v >= 0)&&(($no = $dif/$lngh[$v])<=1); $v--); if($v < 0) $v = 0; $_tm = $cur_tm-($dif%$lngh[$v]);
  676. $no = floor($no); if($no <> 1) $pds[$v] .='s'; $x=sprintf("%d %s ",$no,$pds[$v]);
  677. if(($rcs == 1)&&($v >= 1)&&(($cur_tm-$_tm) > 0)) $x .= time_ago($_tm);
  678. return $x;
  679. }
  680.  
  681. function image_exists($url)
  682. {
  683. /* $info = @getimagesize(urlencode($url));
  684. return((bool) $info); */
  685. if (@fclose(@fopen($url, "r"))) {
  686. return true;
  687. } else {
  688. return false;
  689. }
  690. }
  691.  
  692. function url_exists($url) {
  693. $hdrs = @get_headers($url);
  694. return is_array($hdrs) ? preg_match('/^HTTP\\/\\d+\\.\\d+\\s+2\\d\\d\\s+.*$/',$hdrs[0]) : false;
  695. }
  696.  
  697. function BBCode($string) {
  698. //Converts BB to HTML
  699. $search = array(
  700. '@\[(?i)b\](.*?)\[/(?i)b\]@si',
  701. '@\[(?i)i\](.*?)\[/(?i)i\]@si',
  702. '@\[(?i)u\](.*?)\[/(?i)u\]@si',
  703. '@\[(?i)img\](.*?)\[/(?i)img\]@si',
  704. '@\[(?i)url=(.*?)\](.*?)\[/(?i)url\]@si',
  705. '@\[(?i)code\](.*?)\[/(?i)code\]@si'
  706. );
  707. $replace = array(
  708. '<b>\\1</b>',
  709. '<i>\\1</i>',
  710. '<u>\\1</u>',
  711. '<img src="\\1">',
  712. '<a href="\\1">\\2</a>',
  713. '<code>\\1</code>'
  714. );
  715. return preg_replace($search , $replace, $string);
  716. }
  717.  
  718. function cleanHTML($code) {
  719. $code = strip_tags($code);//Strip tags
  720. $code = preg_replace('/[^(\x20-\x7F)]*/','', $code); //Strip non-ascii characters
  721. $theBad = array("&#8220;","&#8221;","&#8216;","&#8217;","&#8230;","&#8212;","&#8211;","&#60;","&#62","rspscoding","rscoding","apache");
  722. $theGood = array("\"","\"","'","'","...","-","-","","","google","google","queer");
  723. $code = str_replace($theBad,$theGood,$code);
  724. return $code;
  725. }
  726.  
  727. /* START OF 2.0 FUNCTIONS */
  728.  
  729. function status($status_int) {
  730. //Display "Online" or "Offline" from a status int
  731. if($status_int == 1) {
  732. return "<font color='green'>Online</font>";
  733. } else {
  734. return "<font color='red'>Offline</font>";
  735. }
  736. }
  737.  
  738. function rating($votes, $hits) {
  739. //Gets a servers rating calculated from the votes and hits
  740. //Formula: Votes/100 + Hits/1000
  741. $votes = $votes / 100;
  742. $hits = $hits / 1000;
  743. $total = $votes + $hits;
  744. return $total;
  745. }
  746.  
  747. function verifyServer($server, $ip, $port) {
  748. /* Verifies a server's name, makes sure it can be used to signup
  749. 1 = Invalid server name
  750. 2 = Server already exists
  751. 3 = IP has been used 5 or more times
  752. 4 = Server is offline, but all else is good
  753. 5 = Server is online, all is good
  754. */
  755. if(validateServer($server)) {
  756. if(numRows("servers", "server_name", $server) == 0) {
  757. if(numRows("servers", "ip", $ip) < 5) {
  758. if(ping($ip, $port, 1) == 1) {
  759. return 5;
  760. } else {
  761. return 4;
  762. }
  763. } else {
  764. return 3;
  765. }
  766. } else {
  767. return 2;
  768. }
  769. } else {
  770. return 1;
  771. }
  772. }
  773.  
  774. function numRows($table, $column, $value) {
  775. //Returns number of rows matching the criteria
  776. mysql_select_db($mysql_database);
  777. $query="SELECT ".$column." FROM ".$table." WHERE ".$column." = '".$value."'";
  778. $rt=mysql_query($query) or die(mysql_error());
  779. return mysql_num_rows($rt);
  780. }
  781.  
  782. function getPlayersOnline($server_name) {
  783. //Count players online
  784. //mysql_select_db($mysql_database);
  785. $sql3 = "SELECT * FROM user_online WHERE server_name = '$server_name'";
  786. $result3 = mysql_query($sql3) or die("Error: ".mysql_error());
  787. $count_user_online = mysql_num_rows($result3);
  788. return $count_user_online;
  789. }
  790.  
  791. function getMostPopular($limit) {
  792. //Get the most popular private servers
  793. $result = mysql_query("SELECT server_name, COUNT(server_name) AS countPlayers FROM user_online GROUP BY server_name ORDER BY countPlayers DESC LIMIT $limit");
  794. if($limit == 1) {
  795. $row = mysql_fetch_assoc($result);
  796. $players = mysql_num_rows($result);
  797. return "".$row['server_name']."(".$row['countPlayers'].")";
  798. } else {
  799. $string = ""; //Default string
  800. $players = mysql_num_rows($result);
  801. while ($row = mysql_fetch_array($result)) {
  802. $string .= "<li><a href='play.php?server=".$row['server_name']."'>".$row['server_name']."</a>(".$row['countPlayers'].")</li>";
  803. }
  804. return $string;
  805. }
  806. }
  807.  
  808. function randomScreenshot() {
  809. //Just display a random screenshot - simple!
  810. $result = mysql_query("SELECT * FROM screenshots ORDER BY RAND() LIMIT 1");
  811. $row = mysql_fetch_assoc($result);
  812. return "<img src='".$row[img]."' width=110 height=50>";
  813. }
  814.  
  815. function get_pinfo($cell, $server) {
  816. mysql_select_db($mysql_database);
  817. $check = mysql_query("SELECT ".$cell." FROM playershare WHERE server_name = '".$server."' LIMIT 1")or die(mysql_error());
  818. while($info = mysql_fetch_array( $check ))
  819. {
  820. return $info[$cell];
  821. }
  822. }
  823.  
  824.  
  825. function checkLink($url) {
  826. if(strpos($url, "http://") !== false) {
  827. return $url;
  828. } else {
  829. return "http://".$url;
  830. }
  831. }
  832.  
  833. function category($int) {
  834. if($int == 0) {
  835. return "Not Specified";
  836. } else if($int == 1) {
  837. return "Player Killing";
  838. } else if($int == 2) {
  839. return "Skilling";
  840. } else if($int == 3) {
  841. return "Economy";
  842. } else if($int == 4) {
  843. return "Spawning";
  844. }
  845. }
  846.  
  847. function type($int) {
  848. if($int == 1) {
  849. return "Gold";
  850. } else {
  851. return "Free";
  852. }
  853. }
  854.  
  855. function screenshots($server) {
  856. $string = "";
  857. $result = mysql_query("SELECT img, description, time FROM screenshots WHERE server_name = '".$server."'") or die(mysql_error());
  858. // keeps getting the next row until there are no more to get
  859. while($row = mysql_fetch_array( $result )) {
  860. $string .= "<li><a id='gallery' href='".$row['img']."' title='".$row['description']." ("._ago($row['time'])." ago)'><img src='".$row['img']."' width=60 height=60 /></a></li>";
  861. }
  862. return $string;
  863. }
  864.  
  865. function owner($string) {
  866. if($string != NULL && $string != "") {
  867. return $string;
  868. } else {
  869. return "[none]";
  870. }
  871. }
  872.  
  873. function setOwner() {
  874. //Sets the owner of a server
  875. if (!$context['user']['is_guest']) {
  876. //User is logged into the forums
  877. }
  878.  
  879.  
  880. }
  881.  
  882. function smfInfo($userId, $whatYouWant) {
  883. //Get the Users imformation
  884. $id = $userId;
  885. loadMemberData($id, false, 'normal');
  886. loadMemberData($id);
  887. loadMemberContext($id);
  888. //'name'
  889. $result = $memberContext[$id][$whatYouWant];
  890. }
  891.  
  892. function createServer($server, $password, $email, $ip, $port, $embedApplet) {
  893. $resetCode = time(); //Timestamp of when the row was inserted
  894. $sql = "INSERT INTO servers (server_name, password, email, ip, port, embed_applet, reset_code) VALUES ('$server', '$password', '$email', '$ip', '$port', '$embedApplet', '$resetCode')";
  895. if (!mysql_query($sql)) {
  896. die('Error: ' . mysql_error());
  897. }
  898. return $resetCode;
  899. }
  900.  
  901. function getData($what, $where, $server) {
  902. //Get data
  903. $result = mysql_query("SELECT ".$what." FROM ".$where." WHERE server_name = '".$server."' LIMIT 1");
  904. $row = mysql_fetch_assoc($result);
  905. return $row[$what];
  906. }
  907.  
  908. function checkPort($port, $listPort) {
  909. //If port is set to $port, return 'selected', for drop down list in edit function.
  910. if ($port == $listPort) {
  911. return " selected";
  912. } else {
  913. }
  914. }
  915.  
  916. function checkCategory($category, $listCategory) {
  917. //If category is set to $category, return 'selected', for drop down list in edit function.
  918. if ($category == $listCategory) {
  919. return " selected";
  920. } else {
  921. }
  922. }
  923.  
  924. }
  925.  
  926.  
  927. function add_playershare($hours, $server_name, $reset_hits=false) {
  928. mysql_select_db($mysql_database);
  929. //Check if server already has playershare, if it does, just top it up, if not, create new entry.
  930. $result = mysql_query("SELECT count(*) as numrecords FROM `playershare` WHERE server_name = '$server_name'") or die ('Queryproblem checing esisting record.');
  931. $row = mysql_fetch_assoc($result);
  932. if ($row['numrecords'] >= 1) {
  933. //Already using playershare, just top it up
  934. $hours2 = $hours * 3600; //multiply hours by 1 hour
  935. //Optional reset hits utility
  936. if($reset_hits = true) {
  937. $hits = ", hits = 0";
  938. } else {
  939. $hits = "";
  940. }
  941. if(mysql_query("UPDATE `playershare` SET expires = expires + $hours2".$hits." WHERE server_name='$server_name'")) {
  942. return true;
  943. } else {
  944. return false;
  945. }
  946. } else {
  947. //Not using playershare, create new row
  948. $expires = mktime(date("H")+$hours, date("i"), date("s"), date("m"), date("d"), date("Y"));
  949. if(mysql_query("INSERT INTO `playershare` (`server_name`, `expires`, `hits`) VALUES ('$server_name', '$expires', '0')")) {
  950. return true;
  951. } else {
  952. return false;
  953. }
  954. }
  955. }
  956.  
  957. ?>
Advertisement
Add Comment
Please, Sign In to add comment