Guest User

Untitled

a guest
Sep 16th, 2018
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.77 KB | None | 0 0
  1. <?PHP
  2. // ###################### CONFIG ########################
  3. //load page config file
  4. $config['site'] = parse_ini_file('config/config.ini');
  5. include('config/config.php');
  6. //check install
  7. if($config['site']['install'] != "no")
  8. {
  9. header("Location: install/install.php");
  10. exit;
  11. }
  12. //load server config
  13. $config['server'] = parse_ini_file($config['site']['server_path'].'config.lua');
  14. if(isset($config['server']['sqlHost']))
  15. {
  16. // ots config.lua file connect database
  17. $mysqlhost = $config['server']['sqlHost'];
  18. $mysqluser = $config['server']['sqlUser'];
  19. $mysqlpass = $config['server']['sqlPass'];
  20. $mysqldatabase = $config['server']['sqlDatabase'];
  21. }
  22. // loads #####POT mainfile#####
  23. include('pot/OTS.php');
  24. // PDO and POT connects to database
  25. $ots = POT::getInstance();
  26. if(strtolower($config['server']['sqlType']) == "mysql")
  27. {
  28. //connect to MySQL database
  29. try
  30. {
  31. $ots->connect(POT::DB_MYSQL, array('host' => $mysqlhost, 'user' => $mysqluser, 'password' => $mysqlpass, 'database' => $mysqldatabase) );
  32. }
  33. catch(PDOException $error)
  34. {
  35. echo 'Database error - can\'t connect to MySQL database. Possible reasons:<br>1. MySQL server is not running on host.<br>2. MySQL user, password, database or host isn\'t configured in: <b>'.$config['site']['server_path'].'config.lua</b> .<br>3. MySQL user, password, database or host is wrong.';
  36. exit;
  37. }
  38. }
  39. elseif(strtolower($config['server']['sqlType']) == "sqlite")
  40. {
  41. //connect to SQLite database
  42. $link_to_sqlitedatabase = $config['site']['server_path'].$sqlitefile;
  43. try
  44. {
  45. $ots->connect(POT::DB_SQLITE, array('database' => $link_to_sqlitedatabase));
  46. }
  47. catch(PDOException $error)
  48. {
  49. echo 'Database error - can\'t open SQLite database. Possible reasons:<br><b>'.$link_to_sqlitedatabase.'</b> - file isn\'t valid SQLite database.<br><b>'.$link_to_sqlitedatabase.'</b> - doesn\'t exist.<br><font color="red">Wrong PHP configuration. Default PHP does not work with SQLite databases!</font>';
  50. exit;
  51. }
  52. }
  53. else
  54. {
  55. echo 'Database error. Unknown database type in <b>'.$config['site']['server_path'].'config.lua</b> . Must be equal to: "<b>mysql</b>" or "<b>sqlite</b>". Now is: "<b>'.strtolower($config['server']['sqlType']).'"</b>';
  56. exit;
  57. }
  58.  
  59. $SQL = POT::getInstance()->getDBHandle();
  60. $layout_name = "layouts/".$layout_name = $config['site']['layout'];;
  61. $layout_ini = parse_ini_file($layout_name.'/layout_config.ini');
  62. foreach($layout_ini as $key => $value)
  63. $config['site'][$key] = $value;
  64. //###################### FUNCTIONS ######################
  65. function getTooltip()
  66. {
  67. echo '<link rel="stylesheet" type="text/css" href="aplication/tooltip/style.css" />';
  68. echo '<script src="aplication/tooltip/script.js"></script>';
  69. }
  70. // language system
  71. header('Cache-control: private'); // IE 6 FIX
  72. if(isSet($_GET['lang']))
  73. {
  74. $lang = $_GET['lang'];
  75. $_SESSION['lang'] = $lang;
  76. setcookie('lang', $lang, time() + (3600 * 24 * 30));
  77. }
  78. else if(isSet($_SESSION['lang']))
  79. {
  80. $lang = $_SESSION['lang'];
  81. }
  82. else if(isSet($_COOKIE['lang']))
  83. {
  84. $lang = $_COOKIE['lang'];
  85. }
  86. else
  87. {
  88. $lang = 'en';
  89. }
  90. // force / potegi
  91. function force($podstawa, $wykladnik)
  92. {
  93. $wynik = $podstawa;
  94. $i = 1;
  95. while ($i++ < $wykladnik)
  96. $wynik *= $podstawa;
  97. return $wynik;
  98. }
  99. //save config in ini file
  100. function saveconfig_ini($config)
  101. {
  102. $file = fopen("config/config.ini", "w");
  103. foreach($config as $param => $data)
  104. {
  105. $file_data .= $param.' = "'.str_replace('"', '', $data).'"
  106. ';
  107. }
  108. rewind($file);
  109. fwrite($file, $file_data);
  110. fclose($file);
  111. }
  112. //return password to db
  113. function password_ency($password)
  114. {
  115. $ency = $GLOBALS['config']['server']['encryptionType'];
  116. if($ency != 'plain')
  117. return hash($ency, $password);
  118. elseif($ency == 'plain')
  119. return $password;
  120. }
  121. //delete player with name
  122. function delete_player($name) {
  123. $SQL = $GLOBALS['SQL'];
  124. $player = new OTS_Player();
  125. $player->find($name);
  126. if($player->isLoaded()) {
  127. try { $SQL->query("DELETE FROM player_skills WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  128. try { $SQL->query("DELETE FROM guild_invites WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  129. try { $SQL->query("DELETE FROM player_items WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  130. try { $SQL->query("DELETE FROM player_depotitems WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  131. try { $SQL->query("DELETE FROM player_spells WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  132. try { $SQL->query("DELETE FROM player_storage WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  133. try { $SQL->query("DELETE FROM player_viplist WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  134. try { $SQL->query("DELETE FROM player_deaths WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
  135. try { $SQL->query("DELETE FROM player_deaths WHERE killed_by = '".str_replace("'", "\'", $player->getName())."';"); } catch(PDOException $error) {}
  136. $rank = $player->getRank();
  137. if(!empty($rank)) {
  138. $guild = $rank->getGuild();
  139. if($guild->getOwner()->getId() == $player->getId()) {
  140. $rank_list = $guild->getGuildRanksList();
  141. if(count($rank_list) > 0) {
  142. $rank_list->orderBy('level');
  143. foreach($rank_list as $rank_in_guild) {
  144. $players_with_rank = $rank_in_guild->getPlayersList();
  145. $players_with_rank->orderBy('name');
  146. $players_with_rank_number = count($players_with_rank);
  147. if($players_with_rank_number > 0) {
  148. foreach($players_with_rank as $player_in_guild) {
  149. $player_in_guild->setRank();
  150. $player_in_guild->save();
  151. }
  152. }
  153. $rank_in_guild->delete();
  154. }
  155. $guild->delete();
  156. }
  157. }
  158. }
  159. $player->delete();
  160. return TRUE;
  161. }
  162. }
  163. //delete guild with id
  164. function delete_guild($id) {
  165. $guild = new OTS_Guild();
  166. $guild->load($id);
  167. if($guild->isLoaded()) {
  168. $rank_list = $guild->getGuildRanksList();
  169. if(count($rank_list) > 0) {
  170. $rank_list->orderBy('level');
  171. foreach($rank_list as $rank_in_guild) {
  172. $players_with_rank = $rank_in_guild->getPlayersList();
  173. if(count($players_with_rank) > 0) {
  174. foreach($players_with_rank as $player_in_guild) {
  175. $player_in_guild->setRank();
  176. $player_in_guild->save();
  177. }
  178. }
  179. $rank_in_guild->delete();
  180. }
  181. }
  182. $guild->delete();
  183. return TRUE;
  184. }
  185. else
  186. return FALSE;
  187. }
  188. //is it valid nick?
  189. function check_name($name)//sprawdza name
  190. {
  191. $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- [ ] '");
  192. if ($temp != strlen($name))
  193. return false;
  194. else
  195. {
  196. $ok = "/[a-zA-Z ']{1,25}/";
  197. return (preg_match($ok, $name))? true: false;
  198. }
  199. }
  200. // is it valid account name
  201. function check_account_name($name)
  202. {
  203. $temp = strspn("$name", "QWERTYUIOPASDFGHJKLZXCVBNM0123456789");
  204. if ($temp != strlen($name))
  205. return false;
  206. if(strlen($name) > 32)
  207. return false;
  208. else
  209. {
  210. $ok = "/[A-Z0-9]/";
  211. return (preg_match($ok, $name))? true: false;
  212. }
  213. }
  214. //is it valid nick for new char?
  215. function check_name_new_char($name)//sprawdza name
  216. {
  217. $name_to_check = strtolower($name);
  218. //first word can't be:
  219. //names blocked:
  220. $names_blocked = array('gm', 'cm', 'god', 'tutor');
  221. $first_words_blocked = array('gm ', 'cm ', 'god ','tutor ', "'", '-');
  222. //name can't contain:
  223. $words_blocked = array('gamemaster', 'game master', 'game-master', "game'master", '--', "''","' ", " '", '- ', ' -', "-'", "'-", 'fuck', 'sux', 'suck', 'noob', 'tutor');
  224. foreach($first_words_blocked as $word)
  225. if($word == substr($name_to_check, 0, strlen($word)))
  226. return false;
  227. if(substr($name_to_check, -1) == "'" || substr($name_to_check, -1) == "-")
  228. return false;
  229. if(substr($name_to_check, 1, 1) == ' ')
  230. return false;
  231. if(substr($name_to_check, -2, 1) == " ")
  232. return false;
  233. foreach($names_blocked as $word)
  234. if($word == $name)
  235. return false;
  236. for($i = 0; $i < strlen($name_to_check); $i++)
  237. if($name_to_check[$i-1] == ' ' && $name_to_check[$i+1] == ' ')
  238. return false;
  239. foreach($words_blocked as $word)
  240. if (!(strpos($name_to_check, $word) === false))
  241. return false;
  242. for($i = 0; $i < strlen($name_to_check); $i++)
  243. if($name_to_check[$i] == $name_to_check[($i+1)] && $name_to_check[$i] == $name_to_check[($i+2)])
  244. return false;
  245. for($i = 0; $i < strlen($name_to_check); $i++)
  246. if($name_to_check[$i-1] == ' ' && $name_to_check[$i+1] == ' ')
  247. return false;
  248. $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- ");
  249. if ($temp != strlen($name))
  250. return false;
  251. else
  252. {
  253. $ok = "/[a-zA-Z ']{1,25}/";
  254. return (preg_match($ok, $name))? true: false;
  255. }
  256. }
  257. // is rank name valid?
  258. function check_rank_name($name)
  259. {
  260. $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789-[ ] ");
  261. if ($temp != strlen($name))
  262. {
  263. return false;
  264. }
  265. else
  266. {
  267. $ok = "/[a-zA-Z ]{1,60}/";
  268. return (preg_match($ok, $name))? true: false;
  269. }
  270. }
  271. // is guild name valid?
  272. function check_guild_name($name)
  273. {
  274. $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789- ");
  275. if ($temp != strlen($name))
  276. {
  277. return false;
  278. }
  279. else
  280. {
  281. $ok = "/[a-zA-Z ]{1,60}/";
  282. return (preg_match($ok, $name))? true: false;
  283. }
  284. }
  285. // is it valid password?
  286. function check_password($pass)
  287. {
  288. $temp = strspn("$pass", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890");
  289. if ($temp != strlen($pass))
  290. {
  291. return false;
  292. }
  293. else
  294. {
  295. $ok = "/[a-zA-Z0-9]{1,40}/";
  296. return (preg_match($ok, $pass))? true: false;
  297. }
  298. }
  299. // is it valid e-mail?
  300. function check_mail($email)
  301. {
  302. $ok = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}/";
  303. return (preg_match($ok, $email))? true: false;
  304. }
  305. // check if is acoount have premium time
  306. function isPremium($premdays, $lastday)
  307. {
  308. return ($premdays - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $lastday))) - date("z", $lastday)) > 0);
  309. }
  310. // get name bans
  311. function getReason($reasonId)
  312. {
  313. switch($reasonId)
  314. {
  315. case 0:
  316. return "Offensive Name";
  317. case 1:
  318. return "Invalid Name Format";
  319. case 2:
  320. return "Unsuitable Name";
  321. case 3:
  322. return "Name Inciting Rule Violation";
  323. case 4:
  324. return "Offensive Statement";
  325. case 5:
  326. return "Spamming";
  327. case 6:
  328. return "Illegal Advertising";
  329. case 7:
  330. return "Off-Topic Public Statement";
  331. case 8:
  332. return "Non-English Public Statement";
  333. case 9:
  334. return "Inciting Rule Violation";
  335. case 10:
  336. return "Bug Abuse";
  337. case 11:
  338. return "Game Weakness Abuse";
  339. case 12:
  340. return "Using Unofficial Software to Play";
  341. case 13:
  342. return "Hacking";
  343. case 14:
  344. return "Multi-Clienting";
  345. case 15:
  346. return "Account Trading or Sharing";
  347. case 16:
  348. return "Threatening Gamemaster";
  349. case 17:
  350. return "Pretending to Have Influence on Rule Enforcement";
  351. case 18:
  352. return "False Report to Gamemaster";
  353. case 19:
  354. return "Destructive Behaviour";
  355. case 20:
  356. return "Excessive Unjustified Player Killing";
  357. case 21:
  358. return "Invalid Payment";
  359. case 22:
  360. return "Spoiling Auction";
  361. default:
  362. break;
  363. }
  364. return "Unknown Reason";
  365. }
  366.  
  367. //################### DISPLAY FUNCTIONS #####################
  368. //return shorter text (news ticker)
  369. function short_text($text, $chars_limit)
  370. {
  371. if (strlen($text) > $chars_limit)
  372. return substr($text, 0, strrpos(substr($text, 0, $chars_limit), " ")).'...';
  373. else
  374. return $text;
  375. }
  376. //return text to news msg
  377. function news_place()
  378. {
  379. return $news;
  380. }
  381. // set monster of week
  382. function logo_monster()
  383. {
  384. return str_replace(" ", "", trim(mb_strtolower($GLOBALS['config']['site']['logo_monster'])));
  385. }
  386.  
  387. $statustimeout = 1;
  388. foreach(explode("*", str_replace(" ", "", $config['server']['statusTimeout'])) as $status_var)
  389. if($status_var > 0)
  390. $statustimeout = $statustimeout * $status_var;
  391.  
  392. $statustimeout = $statustimeout / 1000;
  393. $config['status'] = parse_ini_file('cache/serverstatus');
  394. if($config['status']['serverStatus_lastCheck']+$statustimeout < time())
  395. {
  396. $config['status']['serverStatus_checkInterval'] = $statustimeout+3;
  397. $config['status']['serverStatus_lastCheck'] = time();
  398. $info = chr(6).chr(0).chr(255).chr(255).'info';
  399. $sock = @fsockopen("127.0.0.1", $config['server']['statusPort'], $errno, $errstr, 1);
  400. if ($sock)
  401. {
  402. fwrite($sock, $info);
  403. $data='';
  404. while (!feof($sock))
  405. $data .= fgets($sock, 1024);
  406. fclose($sock);
  407. preg_match('/players online="(\d+)" max="(\d+)"/', $data, $matches);
  408. $config['status']['serverStatus_online'] = 1;
  409. $config['status']['serverStatus_players'] = $matches[1];
  410. $config['status']['serverStatus_playersMax'] = $matches[2];
  411. preg_match('/uptime="(\d+)"/', $data, $matches);
  412. $h = floor($matches[1] / 3600);
  413. $m = floor(($matches[1] - $h*3600) / 60);
  414. $config['status']['serverStatus_uptime'] = $h.'h '.$m.'m';
  415. preg_match('/monsters total="(\d+)"/', $data, $matches);
  416. $config['status']['serverStatus_monsters'] = $matches[1];
  417. preg_match('/npcs total="(\d+)"/', $data, $matches);
  418. $config['status']['serverStatus_npcs'] = $matches[1];
  419. }
  420. else
  421. {
  422. $config['status']['serverStatus_online'] = 0;
  423. $config['status']['serverStatus_players'] = 0;
  424. $config['status']['serverStatus_playersMax'] = 0;
  425. $config['status']['serverStatus_monsters'] = 0;
  426. $config['status']['serverStatus_uptime'] = 0;
  427. $config['status']['serverStatus_npcs'] = 0;
  428. }
  429. $file = fopen("cache/serverstatus", "w");
  430. foreach($config['status'] as $param => $data)
  431. {
  432. $file_data .= $param.' = "'.str_replace('"', '', $data).'"
  433. ';
  434. }
  435. rewind($file);
  436. fwrite($file, $file_data);
  437. fclose($file);
  438. }
  439. //PAGE VIEWS COUNTER :)
  440. $views_counter = "cache/usercounter.dat";
  441. // checking if the file exists
  442. if (file_exists($views_counter))
  443. {
  444. // het bestand bestaat, waarde + 1
  445. $actie = fopen($views_counter, "r+");
  446. $page_views = fgets($actie, 9);
  447. $page_views++;
  448. rewind($actie);
  449. fputs($actie, $page_views, 9);
  450. fclose($actie);
  451. }
  452. else
  453. {
  454. // the file doesn't exist, creating a new one with value 1
  455. $actie = fopen($views_counter, "w");
  456. $page_views = 1;
  457. fputs($actie, $page_views, 9);
  458. fclose($actie);
  459. }
  460. function makeOrder($arr, $order, $default) {
  461. // Function by Colandus!
  462. $type = 'asc';
  463. if(isset($_GET['order']))
  464. {
  465. $v = explode('_', strrev($_GET['order']), 2);
  466. if(count($v) == 2)
  467. if($orderBy = $arr[strrev($v[1])])
  468. $default = $orderBy;
  469. $type = (strrev($v[0]) == 'asc' ? 'desc' : 'asc');
  470. }
  471. return 'ORDER BY ' . $default . ' ' . $type;
  472. }
  473. function getOrder($arr, $order, $this) {
  474. // Function by Colandus!
  475. $type = 'asc';
  476. if($orderBy = $arr[$this])
  477. if(isset($_GET[$order])) {
  478. $v = explode('_', strrev($_GET[$order]), 2);
  479. if(strrev($v[1]) == $this)
  480. $type = (strrev($v[0]) == 'asc' ? 'desc' : 'asc');
  481. }
  482. return $this . '_' . $type;
  483. }
  484. // class EQShower
  485. class EQShower
  486. {
  487. function item_info($val,$attributes)
  488. {
  489. $EQShower=new EQShower;
  490. $cl=$EQShower->item_grade($attributes);
  491.  
  492. empty($val[1])?$desc_str="":$desc_str="<br /><br />".$val[1];
  493. empty($val[2])?$arm_str="":$arm_str="Armor: ".$val[2]."<br />";
  494. empty($val[4])?$size_str="":$size_str="Size: ".$val[4]." slots";
  495. empty($val[5])?$att_str="":$att_str="Attack: ".$val[5]."<br />";
  496. empty($val[6])?$sp_str="":$sp_str="Speed: + ".$val[6]."<br />";
  497. empty($val[13])?$def_a="":$def_a="+ ".$val[13];
  498. empty($val[7])?$def_str="":$def_str="Defense: ".$val[7]." $def_a<br />";
  499. if(!empty($val[8])){$el_str="Fire: ".$val[8]."<br />";}
  500. if(!empty($val[9])){$el_str="Ice: ".$val[9]."<br />";}
  501. if(!empty($val[10])){$el_str="Earth: ".$val[10]."<br />";}
  502. if(!empty($val[11])){$el_str="Energy: ".$val[11]."<br />";}
  503. empty($val[12])?$ran_str="":$ran_str="Range: ".$val[12]."<br />";
  504. empty($val[14])?$sk_sh="":$sk_sh="Shielding: + ".$val[14]."<br />";
  505. empty($val[15])?$sk_mag="":$sk_mag="Magic: + ".$val[15]."<br />";
  506. empty($val[16])?$eb_all="":$eb_all="Protection All: ".$val[16]."%<br />";
  507. empty($val[17])?$charg_str="":$charg_str="Charges: ".$val[17]."<br />";
  508. empty($val[18])?$sk_dist="":$sk_dist="Distance: + ".$val[18]."<br />";
  509. empty($val[19])?$eb_fire="":$eb_fire="Protection fire: ".$val[19]."%<br />";
  510. empty($val[20])?$eb_earth="":$eb_earth="Protection earth: ".$val[20]."%<br />";
  511. empty($val[21])?$eb_ice="":$eb_ice="Protection ice: ".$val[21]."%<br />";
  512. empty($val[22])?$eb_ene="":$eb_ene="Protection energy: ".$val[22]."%<br />";
  513. empty($val[23])?$eb_dth="":$eb_dth="Protection death: ".$val[23]."%<br />";
  514. empty($val[24])?$eb_hol="":$eb_hol="Protection holy: ".$val[24]."%<br />";
  515. empty($val[25])?$eb_pys="":$eb_pys="Protection physical: ".$val[25]."%<br />";
  516. empty($val[26])?$sk_axe="":$sk_axe="Axe: + ".$val[26]."<br />";
  517. empty($val[27])?$sk_club="":$sk_club="Club: + ".$val[27]."<br />";
  518. empty($val[28])?$sk_sword="":$sk_sword="Sword: + ".$val[28]."<br />";
  519. empty($val[29])?$dura="":$dura="Duration: ".$val[29]." minutes.<br />";
  520. empty($val[30])?$sk_fist="":$sk_fist="Fist: + ".$val[30]."<br />";
  521. empty($val[31])?$eb_mana="":$eb_mana="Protection manadrain: ".$val[31]."%<br />";
  522. empty($val[32])?$eb_life="":$eb_life="Protection lifedrain: ".$val[32]."%<br />";
  523. empty($val[33])?$eb_drop="":$eb_drop="Protection drop: ".$val[33]."%<br />";
  524. empty($val[34])?$hit_ch="":$hit_ch="Hit chance: ".$val[34]."%<br />";
  525. empty($val[35])?$sh_type="":$sh_type="Element: ".$val[35]."<br />";
  526.  
  527. if(empty($val[8]) AND empty($val[9]) AND empty($val[10]) AND empty($val[11])){$ele_str="";}
  528.  
  529. $str="<div class=\'$cl\'>".$val[0]."</div><font class=\'attr\'>$arm_str $sp_str $sh_type $att_str $ran_str $def_str $hit_ch $sk_sh $sk_sword $sk_axe $sk_club $sk_fist $sk_mag $sk_dist $eb_all $eb_drop $eb_mana $eb_life $eb_fire $eb_earth $eb_ice $eb_ene $eb_dth $eb_hol $eb_pys $el_str $charg_str $dura Weight: ".$val[3]." oz $desc_str</font>";
  530. return $str;
  531. }
  532. function item_grade($attributes)
  533. {
  534. require('config/config.php');
  535. if($attributes<=$config['normal']['attributes']){return $config['class']['normal'];}
  536. if($attributes==$config['rare']['attributes']){return $config['class']['rare'];}
  537. if($attributes==$config['epic']['attributes']){return $config['class']['epic'];}
  538. if($attributes>=$config['legendary']['attributes']){return $config['class']['legendary'];}
  539. }
  540. function table_exists ($table, $db)
  541. {
  542. $tables = mysql_list_tables ($db);
  543. while (list ($temp) = mysql_fetch_array ($tables))
  544. {
  545. if ($temp == $table)
  546. {
  547. return TRUE;
  548. }
  549. }
  550. return FALSE;
  551. }
  552. }
  553. ?>
Add Comment
Please, Sign In to add comment