Advertisement
arabtion

Untitled

Jun 4th, 2020
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 55.04 KB | None | 0 0
  1. <?php
  2. /**
  3. * Codychat
  4. *
  5. * @package Codychat
  6. * @author www.boomcoding.com
  7. * @copyright 2019
  8. * @terms any use of this script without a legal license is prohibited
  9. * all the content of Codychat is the propriety of BoomCoding and Cannot be
  10. * used for another project.
  11. */
  12. function getIp(){
  13. $client = @$_SERVER['HTTP_CLIENT_IP'];
  14. $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
  15. $cloud = @$_SERVER["HTTP_CF_CONNECTING_IP"];
  16. $remote = $_SERVER['REMOTE_ADDR'];
  17. if(filter_var($cloud, FILTER_VALIDATE_IP)) {
  18. $ip = $cloud;
  19. }
  20. else if(filter_var($client, FILTER_VALIDATE_IP)) {
  21. $ip = $client;
  22. }
  23. elseif(filter_var($forward, FILTER_VALIDATE_IP)){
  24. $ip = $forward;
  25. }
  26. else{
  27. $ip = $remote;
  28. }
  29. return escape($ip);
  30. }
  31. function boomTemplate($getpage, $boom = '') {
  32. global $data, $lang, $mysqli, $cody;
  33. $page = BOOM_PATH . '/system/' . $getpage . '.php';
  34. $structure = '';
  35. ob_start();
  36. require($page);
  37. $structure = ob_get_contents();
  38. ob_end_clean();
  39. return $structure;
  40. }
  41. function calHour($h){
  42. return time() - ($h * 3600);
  43. }
  44. function calWeek($w){
  45. return time() - ( 3600 * 24 * 7 * $w);
  46. }
  47. function calmonth($m){
  48. return time() - ( 3600 * 24 * 30 * $m);
  49. }
  50. function calDay($d){
  51. return time() - ($d * 86400);
  52. }
  53. function calMinutes($min){
  54. return time() - ($min * 60);
  55. }
  56. function calHourUp($h){
  57. return time() + ($h * 3600);
  58. }
  59. function calWeekUp($w){
  60. return time() + ( 3600 * 24 * 7 * $w);
  61. }
  62. function calmonthUp($m){
  63. return time() + ( 3600 * 24 * 30 * $m);
  64. }
  65. function calDayUp($d){
  66. return time() + ($d * 86400);
  67. }
  68. function calMinutesUp($min){
  69. return time() + ($min * 60);
  70. }
  71. function boomFormat($txt){
  72. $count = substr_count($txt, "\n" );
  73. if($count > 20){
  74. return $txt;
  75. }
  76. else {
  77. return nl2br($txt);
  78. }
  79. }
  80. function boomFileVersion(){
  81. global $data;
  82. if($data['bbfv'] > 1.0){
  83. return '?v=' . $data['bbfv'];
  84. }
  85. return '';
  86. }
  87. function boomNull($val){
  88. if(is_Null($val)){
  89. return 0;
  90. }
  91. else {
  92. return $val;
  93. }
  94. }
  95. function embedMode(){
  96. global $data;
  97. if(isset($_GET['embed'])){
  98. return true;
  99. }
  100. }
  101. function embedCode(){
  102. global $data;
  103. if(isset($_GET['embed'])){
  104. return 1;
  105. }
  106. else {
  107. return 0;
  108. }
  109. }
  110. function myavatar($a){
  111. global $data;
  112. $path = '/avatar/';
  113. if(stripos($a, 'default') !== false){
  114. $path = '/default_images/';
  115. }
  116. return $data['domain'] . $path . $a;
  117. }
  118. function myCover($a){
  119. global $data;
  120. return $data['domain'] . '/cover/' . $a;
  121. }
  122. function getCover($user){
  123. global $data;
  124. if(userHaveCover($user)){
  125. return 'style="background-image: url(' . myCover($user['user_cover']) . ');"';
  126. }
  127. }
  128. function coverClass($user){
  129. global $data;
  130. if(userHaveCover($user)){
  131. return 'cover_size';
  132. }
  133. }
  134. function userHaveCover($user){
  135. global $data;
  136. if($user['user_cover'] != ''){
  137. return true;
  138. }
  139. }
  140. function getIcon($icon, $c){
  141. global $data, $lang;
  142. return '<img class="' . $c . '" src="' . $data['domain'] . '/default_images/icons/' . $icon . boomFileVersion() . '"/>';
  143. }
  144. function boomCode($code, $custom = array()){
  145. $def = array('code'=> $code);
  146. $res = array_merge($def, $custom);
  147. return json_encode( $res, JSON_UNESCAPED_UNICODE);
  148. }
  149. function profileAvatar($a){
  150. global $data;
  151. $path = '/avatar/';
  152. if(stripos($a, 'default') !== false){
  153. $path = '/default_images/';
  154. }
  155. return 'href="' . $data['domain'] . $path . $a . '" src="' . $data['domain'] . $path . $a . '"';
  156. }
  157. function boomUserTheme($user){
  158. global $data;
  159. if($user['user_theme'] == 'system'){
  160. return $data['default_theme'];
  161. }
  162. else {
  163. return $user['user_theme'];
  164. }
  165. }
  166. function linkAvatar($a){
  167. if(preg_match('@^https?://@i', $a)){
  168. return true;
  169. }
  170. }
  171. function escape($t){
  172. global $mysqli;
  173. return $mysqli->real_escape_string(trim(htmlspecialchars($t, ENT_QUOTES)));
  174. }
  175. function boomSanitize($t){
  176. global $mysqli;
  177. $t = str_replace(array('\\', '/', '.', '<', '>', '%', '#'), '', $t);
  178. return $mysqli->real_escape_string(trim(htmlspecialchars($t, ENT_QUOTES)));
  179. }
  180. function softEscape($t){
  181. global $mysqli;
  182. $atags = '<a><p><h1><h2><h3><h4><img><b><strong><br><ul><li><div><i><span><u><th><td><tr><table><strike><small><ol><hr><font><center><blink><marquee>';
  183. $t = strip_tags($t, $atags);
  184. return $mysqli->real_escape_string(trim($t));
  185. }
  186. function systemReplace($text){
  187. global $lang;
  188. $text = str_replace('%bcquit%', $lang['leave_message'], $text);
  189. $text = str_replace('%bcjoin%', $lang['join_message'], $text);
  190. $text = str_replace('%bcclear%', $lang['clear_message'], $text);
  191. $text = str_replace('%spam%', $lang['spam_content'], $text);
  192. return $text;
  193. }
  194. function systemSpecial($content, $type, $custom = array()){
  195. global $data, $lang;
  196. $def = array(
  197. 'content'=> $content,
  198. 'type'=> $type,
  199. 'delete'=> 1,
  200. 'title'=> $lang['default_title'],
  201. 'icon'=> 'default_system.png',
  202. );
  203. $template = array_merge($def, $custom);
  204. return boomTemplate('element/system_log', $template);
  205. }
  206. function specialLogIcon($icon){
  207. global $data;
  208. return $data['domain'] . '/default_images/special/' . $icon . boomFileVersion();
  209. }
  210. function userDetails($id){
  211. global $mysqli;
  212. $user = array();
  213. $getuser = $mysqli->query("SELECT * FROM boom_users WHERE user_id = '$id'");
  214. if($getuser->num_rows > 0){
  215. $user = $getuser->fetch_assoc();
  216. }
  217. return $user;
  218. }
  219. function ownAvatar($i){
  220. global $data;
  221. if($i == $data['user_id']){
  222. return 'glob_av';
  223. }
  224. return '';
  225. }
  226. function chatAction($room, $action = 1){
  227. global $mysqli, $data;
  228. $addthis = '';
  229. if($action == 1){
  230. $addthis = ", room_action = '" . time() . "'";
  231. }
  232. $mysqli->query("UPDATE boom_rooms SET rcaction = rcaction + 1 $addthis WHERE room_id = '$room'");
  233. }
  234. function userPostChat($content, $custom = array()){
  235. global $mysqli, $data;
  236. $def = array(
  237. 'hunter'=> $data['user_id'],
  238. 'room'=> $data['user_roomid'],
  239. 'color'=> escape($data['bccolor'] . ' ' . $data['bcbold']),
  240. 'type'=> 'public',
  241. 'rank'=> 99,
  242. 'snum'=> '',
  243. );
  244. $c = array_merge($def, $data, $custom);
  245. $mysqli->query("INSERT INTO `boom_chat` (post_date, user_id, post_message, post_roomid, type, log_rank, snum, tcolor) VALUES ('" . time() . "', '{$c['hunter']}', '$content', '{$c['room']}', '{$c['type']}', '{$c['rank']}', '{$c['snum']}', '{$c['color']}')");
  246. $last_id = $mysqli->insert_id;
  247. chatAction($data['user_roomid']);
  248. upgradeCoins();
  249. $coinscode = $data['req_coinscode'];
  250. $coinsgift = $data['req_coinsgift'];
  251. $havegift = $data['user_coinsgift'];
  252. if(boomAllow(1)){
  253. if($content == $coinsgift && $havegift != $coinsgift){
  254. $mysqli->query("UPDATE boom_users SET user_coins = user_coins + '$coinscode', user_coinsgift = '$coinsgift' WHERE user_id = '{$data['user_id']}'");
  255. boomNotify($data['user_id'], 'get_gift', array('hunter'=> $data['system_id'], 'custom'=> $coinscode));
  256. }
  257. elseif($content == $coinsgift && $havegift == $coinsgift){
  258. boomNotify($data['user_id'], 'have_gift', array('hunter'=> $data['system_id']));
  259. }
  260. }
  261. if(!empty($c['snum'])){
  262. $user_post = array(
  263. 'post_id'=> $last_id,
  264. 'type'=> $c['type'],
  265. 'post_date'=> time(),
  266. 'tcolor'=> $c['color'],
  267. 'log_rank'=> $c['rank'],
  268. 'post_message'=> $content,
  269. );
  270. $post = array_merge($c, $user_post);
  271. if(!empty($post)){
  272. return createLog($data, $post);
  273. }
  274. }
  275. }
  276. function userPostChatFile($content, $file_name, $type, $file_name2 = ''){
  277. global $mysqli, $data;
  278. $mysqli->query("INSERT INTO `boom_chat` (post_date, user_id, post_message, post_roomid, type, file) VALUES ('" . time() . "', '{$data['user_id']}', '$content', '{$data['user_roomid']}', 'public', '1')");
  279. $rel = $mysqli->insert_id;
  280. chatAction($data['user_roomid']);
  281. if($file_name2 != ''){
  282. $mysqli->query("INSERT INTO `boom_upload` (file_name, date_sent, file_user, file_zone, file_type, relative_post) VALUES
  283. ('$file_name', '" . time() . "', '{$data['user_id']}', 'chat', '$type', '$rel'),
  284. ('$file_name2', '" . time() . "', '{$data['user_id']}', 'chat', '$type', '$rel')
  285. ");
  286. }
  287. else {
  288. $mysqli->query("INSERT INTO `boom_upload` (file_name, date_sent, file_user, file_zone, file_type, relative_post) VALUES ('$file_name', '" . time() . "', '{$data['user_id']}', 'chat', '$type', '$rel')");
  289. }
  290. return true;
  291. }
  292. function systemPostChat($room, $content, $custom = array()){
  293. global $mysqli, $data;
  294. $def = array(
  295. 'type'=> 'system',
  296. 'color'=> 'chat_system',
  297. 'rank'=> 99,
  298. );
  299. $post = array_merge($def, $custom);
  300. $mysqli->query("INSERT INTO `boom_chat` (post_date, user_id, post_message, post_roomid, type, log_rank, tcolor) VALUES ('" . time() . "', '{$data['system_id']}', '$content', '$room', '{$post['type']}', '{$post['rank']}', '{$post['color']}')");
  301. chatAction($room);
  302. return true;
  303. }
  304. function botPostChat($id, $room, $content, $custom = array()){
  305. global $mysqli, $data;
  306. $def = array(
  307. 'type'=> 'public',
  308. 'color'=> '',
  309. 'rank'=> 99,
  310. );
  311. $post = array_merge($def, $custom);
  312. $mysqli->query("INSERT INTO `boom_chat` (post_date, user_id, post_message, post_roomid, type, log_rank, tcolor) VALUES ('" . time() . "', '$id', '$content', '$room', '{$post['type']}', '{$post['rank']}', '{$post['color']}')");
  313. chatAction($room);
  314. return true;
  315. }
  316. function postPrivate($from, $to, $content, $snum = ''){
  317. global $mysqli, $data;
  318. $mysqli->query("INSERT INTO `boom_private` (time, target, hunter, message) VALUES ('" . time() . "', '$to', '$from', '$content')");
  319. $last_id = $mysqli->insert_id;
  320. if($to != $from){
  321. $mysqli->query("UPDATE boom_users SET pcount = pcount + 1 WHERE user_id = '$to'");
  322. }
  323. if($snum != ''){
  324. $user_post = array(
  325. 'id'=> $last_id,
  326. 'time'=> time(),
  327. 'message'=> $content,
  328. );
  329. $post = array_merge($data, $user_post);
  330. if(!empty($post)){
  331. return privateLog($post, 1);
  332. }
  333. }
  334. }
  335. function postPrivateContent($from, $to, $content){
  336. global $mysqli, $data;
  337. $mysqli->query("INSERT INTO `boom_private` (time, target, hunter, message, file) VALUES ('" . time() . "', '$to', '$from', '$content', 1)");
  338. $rel = $mysqli->insert_id;
  339. $mysqli->query("UPDATE boom_users SET pcount = pcount + 1 WHERE user_id = '$from' OR user_id = '$to'");
  340. return true;
  341. }
  342. function userPostPrivateFile($content, $target, $file_name, $type){
  343. global $mysqli, $data;
  344. $mysqli->query("INSERT INTO `boom_private` (time, target, hunter, message, file) VALUES ('" . time() . "', '$target', '{$data['user_id']}', '$content', 1)");
  345. $rel = $mysqli->insert_id;
  346. $mysqli->query("UPDATE boom_users SET pcount = pcount + 1 WHERE user_id = '{$data['user_id']}' OR user_id = '$target'");
  347. $mysqli->query("INSERT INTO `boom_upload` (file_name, date_sent, file_user, file_zone, file_type, relative_post) VALUES ('$file_name', '" . time() . "', '{$data['user_id']}', 'private', '$type', '$rel')");
  348. return true;
  349. }
  350. function getFriendList($id, $type = 0){
  351. global $mysqli;
  352. $friend_list = array();
  353. $find_friend = $mysqli->query("SELECT target FROM boom_friends WHERE hunter = '$id' AND status = '3'");
  354. if($find_friend->num_rows > 0){
  355. while($find = $find_friend->fetch_assoc()){
  356. array_push($friend_list, $find['target']);
  357. }
  358. if($type == 1){
  359. array_push($friend_list, $id);
  360. }
  361. }
  362. return $friend_list;
  363. }
  364. function getRankList($rank){
  365. global $mysqli;
  366. $list = array();
  367. $find_list = $mysqli->query("SELECT user_id FROM boom_users WHERE user_rank = '$rank'");
  368. if($find_list->num_rows > 0){
  369. while($find = $find_list->fetch_assoc()){
  370. array_push($list, $find['user_id']);
  371. }
  372. }
  373. return $list;
  374. }
  375. function getStaffList(){
  376. global $mysqli;
  377. $list = array();
  378. $find_list = $mysqli->query("SELECT user_id FROM boom_users WHERE user_rank >= 8");
  379. if($find_list->num_rows > 0){
  380. while($find = $find_list->fetch_assoc()){
  381. array_push($list, $find['user_id']);
  382. }
  383. }
  384. return $list;
  385. }
  386. function boomListNotify($list, $type, $custom = array()){
  387. global $mysqli, $data;
  388. if(!empty($list)){
  389. $values = '';
  390. foreach($list as $user){
  391. $def = array(
  392. 'hunter'=> $data['system_id'],
  393. 'room'=> $data['user_roomid'],
  394. 'rank'=> 0,
  395. 'delay'=> 0,
  396. 'reason'=> '',
  397. 'source'=> 'system',
  398. 'sourceid'=> 0,
  399. 'custom' => '',
  400. 'custom2' => '',
  401. );
  402. $c = array_merge($def, $custom);
  403. $values .= "('{$c['hunter']}', '$user', '$type', '" . time() . "', '{$c['source']}', '{$c['sourceid']}', '{$c['rank']}', '{$c['delay']}', '{$c['reason']}', '{$c['custom']}', '{$c['custom2']}'),";
  404. }
  405. $values = rtrim($values, ',');
  406. $mysqli->query("INSERT INTO boom_notification ( notifier, notified, notify_type, notify_date, notify_source, notify_id, notify_rank, notify_delay, notify_reason, notify_custom, notify_custom2) VALUES $values");
  407. updateListNotify($list);
  408. }
  409. }
  410. function boomNotify($target, $type, $custom = array()){
  411. global $mysqli, $data;
  412. $def = array(
  413. 'hunter'=> $data['system_id'],
  414. 'room'=> $data['user_roomid'],
  415. 'rank'=> 0,
  416. 'delay'=> 0,
  417. 'reason'=> '',
  418. 'source'=> 'system',
  419. 'sourceid'=> 0,
  420. 'custom' => '',
  421. 'custom2' => '',
  422. );
  423. $c = array_merge($def, $custom);
  424. $mysqli->query("INSERT INTO boom_notification ( notifier, notified, notify_type, notify_date, notify_source, notify_id, notify_rank, notify_delay, notify_reason, notify_custom, notify_custom2)
  425. VALUE ('{$c['hunter']}', '$target', '$type', '" . time() . "', '{$c['source']}', '{$c['sourceid']}', '{$c['rank']}', '{$c['delay']}', '{$c['reason']}', '{$c['custom']}', '{$c['custom2']}')");
  426. updateNotify($target);
  427. }
  428. function updateNotify($id){
  429. global $mysqli;
  430. $mysqli->query("UPDATE boom_users SET naction = naction + 1 WHERE user_id = '$id'");
  431. }
  432. function updateListNotify($list){
  433. global $mysqli;
  434. if(empty($list)){
  435. return false;
  436. }
  437. $list = implode(", ", $list);
  438. $mysqli->query("UPDATE boom_users SET naction = naction + 1 WHERE user_id IN ($list)");
  439. }
  440. function updateStaffNotify(){
  441. global $mysqli;
  442. $mysqli->query("UPDATE boom_users SET naction = naction + 1 WHERE user_rank > 7");
  443. }
  444. function updateAllNotify(){
  445. global $mysqli;
  446. $delay = calMinutes(2);
  447. $mysqli->query("UPDATE boom_users SET naction = naction + 1 WHERE last_action > '$delay'");
  448. }
  449. function createIgnore(){
  450. global $mysqli, $data, $cody;
  451. $ignore_list = '';
  452. $get_ignore = $mysqli->query("SELECT ignored FROM boom_ignore WHERE ignorer = '{$data['user_id']}'");
  453. while($ignore = $get_ignore->fetch_assoc()){
  454. $ignore_list .= $ignore['ignored'] . '|';
  455. }
  456. $_SESSION[BOOM_PREFIX . 'ignore'] = '|' . $ignore_list;
  457. }
  458. function isIgnored($ignore, $id){
  459. global $cody;
  460. if(strpos($ignore, '|' . $id . '|') !== false){
  461. return true;
  462. }
  463. }
  464. function getIgnore(){
  465. global $cody;
  466. return $_SESSION[BOOM_PREFIX . 'ignore'];
  467. }
  468. function processChatMsg($post) {
  469. global $data;
  470. if($post['user_id'] != $data['user_id'] && !preg_match('/http/',$post['post_message'])){
  471. $post['post_message'] = str_ireplace($data['user_name'], '<span class="my_notice">' . $data['user_name'] . '</span>', $post['post_message']);
  472. }
  473. return mb_convert_encoding(systemReplace($post['post_message']), 'UTF-8', 'auto');
  474. }
  475. function processPrivateMsg($post) {
  476. global $data;
  477. return mb_convert_encoding(systemReplace($post['message']), 'UTF-8', 'auto');
  478. }
  479. function mainRoom(){
  480. global $data;
  481. if($data['user_roomid'] == 1){
  482. return true;
  483. }
  484. }
  485. function chatRank($rank, $id){
  486. global $data;
  487. if($id != $data['system_id'] && $data['ico'] == 2){
  488. return systemRank($rank, 'ex_rank');
  489. }
  490. }
  491. function privChatRank($rank, $id){
  492. global $data;
  493. if($id != $data['system_id'] && $data['ico'] == 2){
  494. return systemRank($rank, 'priv_ex_rank');
  495. }
  496. }
  497. function createLog($data, $post, $ignore = ''){
  498. global $lang;
  499. $avmenu = '';
  500. $log_options = '';
  501. $gender = '';
  502. $chatapp = '';
  503. if(isIgnored($ignore, $post['user_id'])){
  504. return false;
  505. }
  506. if(boomAllow($post['log_rank'])){
  507. return false;
  508. }
  509. $avmenu = 'onclick="openAvMenu(this, \''.$post['user_name'].'\','.$post['user_id'].','.$post['user_rank'].', '.$post['user_bot'].');"';
  510. if(boomAllow(1)){
  511. if(canDeleteLog() || canDeleteRoomLog()){
  512. $log_options = '<div onclick="deleteLog(' . $post['post_id'] . ');" class="cclear"><i class="fa fa-times"></i></div>';
  513. }
  514. else if(!isSystem($post['user_id'])){
  515. $log_options = '<div onclick="openReport(' . $post['post_id'] . ', 1);" class="cclear"><i class="fa fa-flag"></i></div>';
  516. }
  517. }
  518. $famous = '<div class="cclear"><i class="fas fa-fire error"></i></div>';
  519. if($data['gender_ico'] > 1){
  520. $gender = 'avsex ' . sex($post['user_sex']) . ' ';
  521. }
  522. if(!empty($post['fancy_color1'])||!empty($post['fancy_glow'])||!empty($post['fancy_glowsize'])||!empty($post['fancy_glowdirc'])){
  523. $fancy = 'style="background-image: repeating-linear-gradient(145deg, '.$post['fancy_color1'].' 3%, '.$post['fancy_color2'].' 10.8333%, '.$post['fancy_color2'].' 18.6667%, '.$post['fancy_color3'].' 26.5%, '.$post['fancy_color3'].' 34.3333%, '.$post['fancy_color4'].' 42.1667%, '.$post['fancy_color4'].' 50%);text-shadow: 0 '. $post['fancy_glowdirc'] .'px '. $post['fancy_glowsize'] .'px '. $post['fancy_glow'] .';color: transparent; -webkit-background-clip: text;background-clip: text;animation-duration: 1s;"';
  524. }
  525. if(!empty($post['fancy_font'])){
  526. $font = 'face="'. $post['fancy_font'] .'"';
  527. }
  528. if(!empty($post['fancy_anim'])){
  529. $anim = ''. $post['fancy_anim'] .'';
  530. }
  531. if($data['allow_quizstart'] == 1 && !isBot($post) && $data['user_id'] == $data['allow_quizowner'] && notMe($post['user_id'])){
  532. $game = '<span onclick="chooseAnswer('. $post['user_id'] .');" style="background:green;color:white;font-size:8px;padding:3px 8px;border-radius:10px;"><i class="fa fa-check"></i></span>';
  533. }
  534. if(!empty($post['name_smile'])){
  535. $nsmile = '<img style="height:20px;margin-right:5px;vertical-align: middle;" src="default_images/name_smile/'. $post['name_smile'] .'.gif" />';
  536. }
  537. $levels = '<p class="border-level '. levelColors($post['user_level']) .'">'. $post['user_level'] .'</p>';
  538. if(boomAllow(0)){
  539. if($user['appear_chatmain'] == 0){
  540. $chatapp = '<li id="log' . $post['post_id'] . '" data="' . $post['post_id'] . '" class="ch_logs ' . $post['type'] . '">
  541. <div class="chat_avatar" ' . $avmenu . '>
  542. <img style="border-radius:0 5px 5px 5px;" class="avav '. borderLevelColors($post['user_level']) .' ' . ownAvatar($post['user_id']) . '" src="' . myavatar($post['user_tumb']) . '"/>
  543. '. $levels .'
  544. ' . chatRank($post['user_rank'], $post['user_id']) . '
  545. </div>
  546. <div style="padding: 0px 0px 0px 5px;" class="my_text">
  547. <div class="btable">
  548. <div class="cname"><span '. $fancy .' class="'. $anim .' username ' . $post['user_color'] . '"><font '.$fontsize.' '. $font .'>'. $post['user_name'] .'</font></span>'. $nsmile .'</div>
  549. <div class="cdate">' . chatDate($post['post_date']) . '</div>
  550. ' . $log_options . '
  551. </div>
  552. '. $game .' <div class="chat_message ' . $post['tcolor'] . '">' . processChatMsg($post) . '</div>
  553.  
  554. </div>
  555. </li>';
  556. }
  557. elseif($data['appear_chatmain'] == 2){
  558. $chatapp = '<li id="log' . $post['post_id'] . '" data="' . $post['post_id'] . '" class="ch_logs ' . $post['type'] . '">
  559. <div class="chat_avatar" ' . $avmenu . '>
  560. <img style="border-radius:0 5px 5px 5px;" class="avav '. borderLevelColors($post['user_level']) .' ' . ownAvatar($post['user_id']) . '" src="' . myavatar($post['user_tumb']) . '"/>
  561. '. $levels .'
  562. ' . chatRank($post['user_rank'], $post['user_id']) . '
  563. </div>
  564. <div style="padding-left: 5px;" class="my_text">
  565. <div class="btable">
  566. <div class="cname">
  567. <span style="float:left;" class="rtl_fright">
  568. <span '. $fancy .' class="'. $anim .' username ' . $post['user_color'] . '"><font '.$fontsize.' '. $font .'>'. $post['user_name'] .'</font></span>'. $nsmile .'<p class="inline" style="margin-left:5px;"> : </p>
  569. </span>
  570. '. $game .'<span style="display: inline!important;" class="chat_message inline ' . $post['tcolor'] . '"> ' . processChatMsg($post) . '</span>
  571. </div>
  572. ' . $log_options . '
  573. </div>
  574.  
  575. </div>
  576.  
  577. </li>';
  578. }
  579. }
  580. return ''. $chatapp .'';
  581. }
  582. function privateLog($post, $type){
  583. switch($type){
  584. case 1:
  585. return '<li id="priv' . $post['id'] . '">
  586. <div class="private_logs">
  587. <div class="private_avatar">
  588. <img style="border-radius:0 5px 5px 5px;" data="' . $post['user_id'] . '" class="'. borderLevelColors($post['user_level']) .' get_info avatar_private" src="' . myavatar($post['user_tumb']) . '"/>
  589. <p class="priv-border-level '. levelColors($post['user_level']) .'">'. $post['user_level'] .'</p>
  590. </div>
  591. <div class="private_content">
  592. <div class="hunter_private"><div>' . processPrivateMsg($post) . '</div><div class="ptdate">' . displayDate($post['time']) . '</div></div>
  593. </div>
  594. </div>
  595. </li>';
  596. case 2:
  597. return '<li id="priv' . $post['id'] . '">
  598. <div class="private_logs">
  599. <div class="private_content">
  600. <div class="target_private"><div>' . processPrivateMsg($post) . '</div><div class="ptdate">' . displayDate($post['time']) . '</div></div>
  601.  
  602. </div>
  603. <div class="private_avatar">
  604. <img style="border-radius:0 5px 5px 5px;" data="' . $post['user_id'] . '" class="'. borderLevelColors($post['user_level']) .' get_info avatar_private" src="' . myavatar($post['user_tumb']) . '"/>
  605. <p class="priv-border-level '. levelColors($post['user_level']) .'">'. $post['user_level'] .'</p>
  606. </div>
  607. </div>
  608. </li>';
  609. }
  610. }
  611. function createUserlist($list, $type = 1){
  612. global $data, $lang;
  613. if(!isVisible($list)){
  614. return false;
  615. }
  616. $icon = '';
  617. $flag = '';
  618. $muted = '';
  619. $status = '';
  620. $gender = '';
  621. $mood = '';
  622. if(useFlag($list['country'])){
  623. $flag = '<div class="user_item_flag"><img src="' . countryFlag($list['country']) . '"/></div>';
  624. }
  625. $offline = 'offline';
  626. $rank_icon = rankIcon($list, 'ex_rank');
  627. $mute_icon = mutedIcon($list, 'list_mute');
  628. if($data['ico'] > 0 && $rank_icon != ''){
  629. $icon = '<div class="user_item_icon icrank">' . $rank_icon . '</div>';
  630. }
  631. if($mute_icon != ''){
  632. $muted = '<div class="user_item_icon icmute">' . $mute_icon . '</div>';
  633. }
  634. if($data['gender_ico'] > 0){
  635. $gender = 'avsex ' . sex($list['user_sex']) . ' ';
  636. }
  637. if($list['last_action'] > getDelay() || isBot($list)){
  638. $offline = '';
  639. }
  640. if($list['last_action'] > getDelayOnline()){
  641. $online = userStatusList();
  642. }
  643. if(!empty($list['user_mood'])){
  644. $mood = '<p class="text_xsmall bustate bellips">' . $list['user_mood'] . '</p>';
  645. }
  646. if(!empty($list['fancy_color1'])||!empty($list['fancy_glow'])||!empty($list['fancy_glowsize'])||!empty($list['fancy_glowdirc'])){
  647. $fancy = 'style="background-image: repeating-linear-gradient(145deg, '.$list['fancy_color1'].' 3%, '.$list['fancy_color2'].' 10.8333%, '.$list['fancy_color2'].' 18.6667%, '.$list['fancy_color3'].' 26.5%, '.$list['fancy_color3'].' 34.3333%, '.$list['fancy_color4'].' 42.1667%, '.$list['fancy_color4'].' 50%);text-shadow: 0 '. $list['fancy_glowdirc'] .'px '. $list['fancy_glowsize'] .'px '. $list['fancy_glow'] .';color: transparent; -webkit-background-clip: text;background-clip: text;animation-duration: 1s;"';
  648. }
  649. if(!empty($list['fancy_font'])){
  650. $font = 'face="'. $list['fancy_font'] .'"';
  651. }
  652. if(!empty($list['fancy_anim'])){
  653. $anim = ''. $list['fancy_anim'] .'';
  654. }
  655. if(!empty($list['name_smile'])){
  656. $nsmile = '<img style="height:20px;margin-right:5px;vertical-align: middle;" src="default_images/name_smile/'. $list['name_smile'] .'.gif" />';
  657. }
  658. $levels = '<p class="border-level '. levelColors($list['user_level']) .'">'. $list['user_level'] .'</p>';
  659. return '<div onclick="dropUser(this,'.$list['user_id'].',\''.$list['user_name'].'\','.$list['user_rank'].','.$list['user_bot'].', ' . $type . ');" class="user_item ' . $offline . '">
  660. <div class="user_item_avatar"><img class="acav '. borderLevelColors($list['user_level']) .' ' . ownAvatar($list['user_id']) . '" src="' . myavatar($list['user_tumb']) . '"/> ' . $icon . ''. $levels .'</div>
  661. <div class="user_item_data"><p '. $fancy .' class="'. $anim .' username ' . $list['user_color'] . '">'. $online .'<font '.$fontsize.' '. $font .'> '. $list['user_name'] .' </font>'. $nsmile .'</p>' . $mood . '</div>
  662. ' . $muted . $flag . '
  663. </div>
  664. <div class="drop_list"></div>';
  665. }
  666. function chatDate($date){
  667. return date("j/m G:i", $date);
  668. }
  669. function displayDate($date){
  670. return date("j/m G:i", $date);
  671. }
  672. function longDate($date){
  673. return date("Y-m-d ", $date);
  674. }
  675. function longDateTime($date){
  676. return date("Y-m-d G:i ", $date);
  677. }
  678. function userTime($user){
  679. $d = new DateTime(date("d F Y H:i:s",time()));
  680. $d->setTimezone(new DateTimeZone($user['user_timezone']));
  681. $r =$d->format('G:i');
  682. return $r;
  683. }
  684. function boomRenderMinutes($val){
  685. global $lang;
  686. $day = '';
  687. $hour = '';
  688. $minute = '';
  689. $d = floor ($val / 1440);
  690. $h = floor (($val - $d * 1440) / 60);
  691. $m = $val - ($d * 1440) - ($h * 60);
  692. if($d > 0){
  693. if($d > 1){ $day = $d . ' ' . $lang['days']; } else{ $day = $d . ' ' . $lang['day']; }
  694. }
  695. if($h > 0){
  696. if($h > 1){ $hour = $h . ' ' . $lang['hours']; } else{ $hour = $h . ' ' . $lang['hour']; }
  697. }
  698. if($m > 0){
  699. if($m > 1){ $minute = $m . ' ' . $lang['minutes']; } else{ $minute = $m . ' ' . $lang['minute']; }
  700. }
  701. return trim($day . ' ' . $hour . ' ' . $minute);
  702. }
  703. function boomRenderSeconds($val){
  704. global $lang;
  705. $day = '';
  706. $hour = '';
  707. $minute = '';
  708. $second = '';
  709. $d = floor ($val / 86400);
  710. $h = floor (($val - $d * 86400) / 3600);
  711. $m = floor (($val - ($d * 86400) - ($h * 3600)) / 60);
  712. $s = $val - ($d * 86400) - ($h * 3600) - ($m * 60);
  713. if($d > 0){
  714. if($d > 1){ $day = $d . ' ' . $lang['days']; } else{ $day = $d . ' ' . $lang['day']; } }
  715. if($h > 0){
  716. if($h > 1){ $hour = $h . ' ' . $lang['hours']; } else{ $hour = $h . ' ' . $lang['hour']; }
  717. }
  718. if($m > 0){
  719. if($m > 1){ $minute = $m . ' ' . $lang['minutes']; } else{ $minute = $m . ' ' . $lang['minute']; }
  720. }
  721. if($s > 0){
  722. if($s > 1){ $second = $s . ' ' . $lang['seconds']; } else{ $second = $s . ' ' . $lang['second']; }
  723. }
  724. return trim($day . ' ' . $hour . ' ' . $minute . ' ' . $second);
  725. }
  726. function boomTimeLeft($t){
  727. return boomRenderMinutes(floor(($t - time()) / 60));
  728. }
  729. function boomAllow($rank){
  730. global $data;
  731. if($data['user_rank'] >= $rank){
  732. return true;
  733. }
  734. }
  735. function userBoomAllow($user, $val){
  736. if($user['user_rank'] >= $val){
  737. return true;
  738. }
  739. }
  740. function boomRole($role){
  741. global $data;
  742. if($data['user_role'] >= $role){
  743. return true;
  744. }
  745. }
  746. function haveRole($role){
  747. if($role > 0){
  748. return true;
  749. }
  750. }
  751. function isGreater($rank){
  752. global $data;
  753. if($data['user_rank'] > $rank){
  754. return true;
  755. }
  756. }
  757. function notMe($id){
  758. global $data;
  759. if($id != $data['user_id']){
  760. return true;
  761. }
  762. }
  763. function isBot($user){
  764. if($user['user_bot'] > 0){
  765. return true;
  766. }
  767. }
  768. function systemBot($user){
  769. if($user == 9){
  770. return true;
  771. }
  772. }
  773. function isSystem($id){
  774. global $data;
  775. if($id == $data['system_id']){
  776. return true;
  777. }
  778. }
  779. function getTopic($t){
  780. global $lang;
  781. $topic = processUserData($t);
  782. if(!empty($topic)){
  783. return systemSpecial($topic, 'topic_log', array('icon'=> 'topic.svg', 'title'=> $lang['topic_title']));
  784. }
  785. }
  786. function boomConsole($target, $type, $custom = array()){
  787. global $mysqli, $data;
  788. $def = array(
  789. 'hunter'=> $data['user_id'],
  790. 'room'=> $data['user_roomid'],
  791. 'rank'=> 0,
  792. 'delay'=> 0,
  793. 'reason'=> '',
  794. 'custom' => '',
  795. 'custom2' => '',
  796. );
  797. $c = array_merge($def, $custom);
  798. $mysqli->query("INSERT INTO boom_console (hunter, target, room, ctype, rank, delay, reason, custom, custom2, cdate) VALUES ('{$c['hunter']}', '$target', '{$c['room']}', '$type', '{$c['rank']}', '{$c['delay']}', '{$c['reason']}', '{$c['custom']}', '{$c['custom2']}', '" . time() . "')");
  799. }
  800. function boomHistory($target, $type, $custom = array()){
  801. global $mysqli, $data;
  802. $def = array(
  803. 'hunter'=> $data['user_id'],
  804. 'rank'=> 0,
  805. 'delay'=> 0,
  806. 'reason'=> '',
  807. 'content'=> '',
  808. );
  809. $c = array_merge($def, $custom);
  810. $mysqli->query("INSERT INTO boom_history (hunter, target, htype, delay, reason, history_date) VALUES ('{$c['hunter']}', '$target', '$type', '{$c['delay']}', '{$c['reason']}', '" . time() . "')");
  811. }
  812. function renderReason($t){
  813. global $lang;
  814. switch($t){
  815. case '':
  816. return $lang['no_reason'];
  817. case 'badword':
  818. return $lang['badword'];
  819. case 'spam':
  820. return $lang['spam'];
  821. case 'flood':
  822. return $lang['flood'];
  823. default:
  824. return $t;
  825. }
  826. }
  827. function userUnmute($user){
  828. global $mysqli;
  829. clearNotifyAction($user['user_id'], 'mute');
  830. $mysqli->query("UPDATE boom_users SET user_mute = 0, mute_msg = '' WHERE user_id = '{$user['user_id']}'");
  831. boomNotify($user['user_id'], 'unmute', array('source'=> 'mute'));
  832. }
  833. function userUnkick($user){
  834. global $mysqli;
  835. $mysqli->query("UPDATE boom_users SET user_kick = 0 WHERE user_id = '{$user['user_id']}'");
  836. }
  837. function muted(){
  838. global $data;
  839. if(isMuted($data) || isBanned($data) || isKicked($data) || outChat($data)){
  840. return true;
  841. }
  842. }
  843. function roomMuted(){
  844. global $data;
  845. if($data['room_mute'] > 0){
  846. return true;
  847. }
  848. }
  849. function isRoomMuted($user){
  850. if($user['room_mute'] > 0){
  851. return true;
  852. }
  853. }
  854. function isMuted($user){
  855. if($user['user_mute'] > time()){
  856. return true;
  857. }
  858. }
  859. function mutedData($user){
  860. if($user['user_mute'] > 0){
  861. return true;
  862. }
  863. }
  864. function kickedData($user){
  865. if($user['user_kick'] > 0){
  866. return true;
  867. }
  868. }
  869. function isBanned($user){
  870. if($user['user_banned'] > 0){
  871. return true;
  872. }
  873. }
  874. function isKicked($user){
  875. if($user['user_kick'] > time()){
  876. return true;
  877. }
  878. }
  879. function joinRoom(){
  880. global $lang, $data;
  881. if(allowLogs() && isVisible($data)){
  882. $content = str_replace('%rank%', getRank($data['user_rank']), '<b style="font-size:12px;color:black;background: rgb(255,255,255);
  883. background: linear-gradient(90deg, rgb(241, 243, 255) 35%, rgba(195,223,255,1) 100%);
  884. border-radius: 15px;
  885. padding: 0px 8px;">هذا المستخدم انضم للغرفة <span style="color:red;"> [ رتبة %rank% ] </span></b>');
  886. userPostChat($content);
  887. }
  888. }
  889. function leaveRoom(){
  890. global $data, $lang;
  891. if(allowLogs()){
  892. if(isVisible($data) && $data['user_roomid'] != 0 && $data['last_action'] > time() - 30 ){
  893. $content = str_replace('%rank%', getRank($data['user_rank']), '<b style="font-size:12px;color:black;background: rgb(255,255,255);
  894. background: linear-gradient(90deg, rgb(241, 243, 255) 35%, rgba(195,223,255,1) 100%);
  895. border-radius: 15px;
  896. padding: 0px 8px;">هذا المستخدم انتقل من الغرفة<span style="color:red;"> [ رتبة %rank% ] </span></b>');
  897. userPostChat($content);
  898. }
  899. }
  900. }
  901. function processUserData($t){
  902. global $data;
  903. return str_replace(array('%user%'), array($data['user_name']), $t);
  904. }
  905. function roomStaff(){
  906. if(boomRole(4)){
  907. return true;
  908. }
  909. }
  910. function userRoomStaff($rank){
  911. if($rank >= 4){
  912. return true;
  913. }
  914. }
  915. function allowLogs(){
  916. global $data;
  917. if($data['req_joinmsg'] == 1){
  918. return true;
  919. }
  920. }
  921. function isVisible($user){
  922. if($user['user_status'] != 6){
  923. return true;
  924. }
  925. }
  926. function isSecure($user){
  927. if(isEmail($user['user_email'])){
  928. return true;
  929. }
  930. }
  931. function isMember($user){
  932. if(!isGuest($user) && !isBot($user)){
  933. return true;
  934. }
  935. }
  936. function isGuest($user){
  937. if($user['user_rank'] == 0){
  938. return true;
  939. }
  940. }
  941. function guestForm(){
  942. global $data;
  943. if($data['guest_form'] == 1){
  944. return true;
  945. }
  946. }
  947. function strictGuest(){
  948. global $cody;
  949. if($cody['strict_guest'] == 1){
  950. return true;
  951. }
  952. }
  953. function userDj($user){
  954. if($user['user_dj'] == 1){
  955. return true;
  956. }
  957. }
  958. function boomRecaptcha(){
  959. global $data;
  960. if($data['use_recapt'] > 0){
  961. return true;
  962. }
  963. }
  964.  
  965. function encrypt($d){
  966. return sha1(str_rot13($d . BOOM_CRYPT));
  967. }
  968. function boomEncrypt($d, $encr){
  969. return sha1(str_rot13($d . $encr));
  970. }
  971. function getDelay(){
  972. return time() - 144000;
  973. }
  974. function getDelayOnline(){
  975. return time() - 30;
  976. }
  977. function getMinutes($t){
  978. return $t / 60;
  979. }
  980. function isOwner($user){
  981. if($user['user_rank'] == 11){
  982. return true;
  983. }
  984. }
  985. function isStaff($rank){
  986. if($rank > 7){
  987. return true;
  988. }
  989. }
  990. function genKey(){
  991. return md5(rand(10000,99999) . rand(10000,99999));
  992. }
  993. function genCode(){
  994. return rand(111111,999999);
  995. }
  996. function genSnum(){
  997. global $data;
  998. return $data['user_id'] . rand(1111111, 9999999);
  999. }
  1000. function boomUnderClear($t){
  1001. return str_replace('_', ' ', $t);
  1002. }
  1003. function allowGuest(){
  1004. global $data;
  1005. if($data['allow_guest'] == 1){
  1006. return true;
  1007. }
  1008. }
  1009. function roomName(){
  1010. global $mysqli, $data;
  1011. $groom = $mysqli->query("SELECT room_name FROM boom_rooms WHERE room_id = '{$data['user_roomid']}'");
  1012. $r = $groom->fetch_assoc();
  1013. return $r['room_name'];
  1014. }
  1015. function boomMerge($a, $b){
  1016. $c = $a . '_' . $b;
  1017. return trim($c);
  1018. }
  1019. function clearNotifyAction($id, $type){
  1020. global $mysqli;
  1021. $mysqli->query("DELETE FROM boom_notification WHERE notified = '$id' AND notify_source = '$type'");
  1022. }
  1023. function setToken(){
  1024. global $cody;
  1025. if(!empty($_SESSION[BOOM_PREFIX . 'token'])){
  1026. $_SESSION[BOOM_PREFIX . 'token'] = $_SESSION[BOOM_PREFIX . 'token'];
  1027. return $_SESSION[BOOM_PREFIX . 'token'];
  1028. }
  1029. else {
  1030. $session = md5(rand(000000,999999));
  1031. $_SESSION[BOOM_PREFIX . 'token'] = $session;
  1032. return $session;
  1033. }
  1034. }
  1035. function boomDuplicateIp($val){
  1036. global $mysqli, $data, $cody;
  1037. $dupli = $mysqli->query("SELECT * FROM `boom_banned` WHERE `ip` = '$val'");
  1038. if($dupli->num_rows > 0){
  1039. return true;
  1040. }
  1041. }
  1042. function checkToken() {
  1043. global $cody;
  1044. if (!isset($_POST['token']) || !isset($_SESSION[BOOM_PREFIX . 'token']) || empty($_SESSION[BOOM_PREFIX . 'token'])) {
  1045. return false;
  1046. }
  1047. if($_POST['token'] == $_SESSION[BOOM_PREFIX . 'token']){
  1048. return true;
  1049. }
  1050. return false;
  1051. }
  1052.  
  1053. // ranking functions
  1054.  
  1055. function mutedIcon($user, $c){
  1056. global $lang;
  1057. if(isMuted($user)){
  1058. return '<img title="' . $lang['muted'] . '" class="' . $c . '" src="default_images/actions/muted.svg"/>';
  1059. }
  1060. else if(isRoomMuted($user)){
  1061. return '<img title="' . $lang['muted'] . '" class="' . $c . '" src="default_images/actions/room_muted.svg"/>';
  1062. }
  1063. else {
  1064. return '';
  1065. }
  1066. }
  1067.  
  1068. // sex and gender functions
  1069.  
  1070. function listGender($sex){
  1071. global $lang;
  1072. $list = '';
  1073. $list .= '<option ' . selCurrent($sex, 1) . ' value="1">' . $lang['male'] . '</option>';
  1074. $list .= '<option ' . selCurrent($sex, 2) . ' value="2">' . $lang['female'] . '</option>';
  1075. $list .= '<option ' . selCurrent($sex, 3) . ' value="3">' . $lang['other'] . '</option>';
  1076. return $list;
  1077. }
  1078. function boomValidGender($sex){
  1079. $gender = array(1,2,3);
  1080. if(in_array($sex, $gender)){
  1081. return true;
  1082. }
  1083. }
  1084. function getGender($s){
  1085. global $lang;
  1086. switch($s){
  1087. case 1:
  1088. return $lang['male'];
  1089. case 2:
  1090. return $lang['female'];
  1091. case 3:
  1092. return $lang['other'];
  1093. default:
  1094. return $lang['not_set'];
  1095. }
  1096. }
  1097. function sex($s){
  1098. global $lang;
  1099. switch($s){
  1100. case 1:
  1101. return 'boy';
  1102. case 2:
  1103. return 'girl';
  1104. case 3:
  1105. return 'nosex';
  1106. default:
  1107. return 'nosex';
  1108. }
  1109. }
  1110.  
  1111. // status functions
  1112.  
  1113. function getStatus($status, $c){
  1114. global $lang;
  1115. switch($status){
  1116. case 2:
  1117. return curStatus($lang['away'], 'away.svg', $c);
  1118. case 3:
  1119. return curStatus($lang['busy'], 'busy.svg', $c);
  1120. default:
  1121. return '';
  1122. }
  1123. }
  1124. function curStatus($txt, $icon, $c){
  1125. return '<img title="' . $txt . '" class="' . $c . '" src="default_images/status/' . $icon . '"/>';
  1126. }
  1127. function listStatus($status){
  1128. global $lang;
  1129. switch($status){
  1130. case 1:
  1131. return statusMenu($lang['online'], 'online.svg');
  1132. case 2:
  1133. return statusMenu($lang['away'], 'away.svg');
  1134. case 3:
  1135. return statusMenu($lang['busy'], 'busy.svg');
  1136. case 6:
  1137. return statusMenu($lang['invisible'], 'invisible.svg');
  1138. default:
  1139. return statusMenu($lang['online'], 'online.svg');
  1140. }
  1141. }
  1142. function statusMenu($txt, $icon){
  1143. return '<div class="status_icon"><img src="default_images/status/' . $icon . '"/></div><div class="status_text">' . $txt . '</div>';
  1144. }
  1145. function listAllStatus(){
  1146. global $lang, $data, $cody;
  1147. $list = '';
  1148. $list .= statusBox(1, listStatus(1));
  1149. $list .= statusBox(2, listStatus(2));
  1150. $list .= statusBox(3, listStatus(3));
  1151. if(canInvisible()){
  1152. $list .= statusBox(6, listStatus(6));
  1153. }
  1154. return $list;
  1155. }
  1156. function statusBox($value, $content){
  1157. return '<div class="status_option" data="' . $value . '">' . $content . '</div>';
  1158. }
  1159.  
  1160. // system ranking functions
  1161.  
  1162. function rankIcon($list, $type){
  1163. if(isBot($list)){
  1164. return botRank($type);
  1165. }
  1166. else if(haveRole($list['user_role']) && !isStaff($list['user_rank'])){
  1167. return roomRank($list['user_role'], $type);
  1168. }
  1169. else {
  1170. return systemRank($list['user_rank'], $type);
  1171. }
  1172. }
  1173. function botRank($type){
  1174. global $lang;
  1175. return curRanking($type, $lang['user_bot'], 'bot.svg');
  1176. }
  1177. function systemRank($rank, $type){
  1178. global $lang;
  1179. switch($rank){
  1180. case 0:
  1181. return curRanking($type, $lang['guest'], 'guest.svg');
  1182. case 1:
  1183. return curRanking($type, $lang['user'], 'user.svg');
  1184. case 2:
  1185. return curRanking($type, $lang['vip'], 'vip.svg');
  1186. case 3:
  1187. return curRanking($type, 'مشرف', 'shield2.svg');
  1188. case 8:
  1189. return curRanking($type, $lang['mod'], 'shield1.svg');
  1190. case 9:
  1191. return curRanking($type, $lang['admin'], 'admin.svg');
  1192. case 10:
  1193. return curRanking($type, $lang['super_admin'], 'super.svg');
  1194. case 11:
  1195. return curRanking($type, $lang['owner'], 'owner.svg');
  1196. default:
  1197. return '';
  1198. }
  1199. }
  1200. function proRanking($user, $type){
  1201. global $lang;
  1202. if(isBot($user)){
  1203. return proRank($type, $lang['user_bot'], 'bot.svg');
  1204. }
  1205. else {
  1206. switch($user['user_rank']){
  1207. case 0:
  1208. return proRank($type, $lang['guest'], 'guest.svg');
  1209. case 1:
  1210. return proRank($type, $lang['user'], 'user.svg');
  1211. case 2:
  1212. return proRank($type, $lang['vip'], 'vip.svg');
  1213. case 3:
  1214. return proRank($type, 'مشرف', 'shield2.svg');
  1215. case 8:
  1216. return proRank($type, $lang['mod'], 'shield1.svg');
  1217. case 9:
  1218. return proRank($type, $lang['admin'], 'admin.svg');
  1219. case 10:
  1220. return proRank($type, $lang['super_admin'], 'super.svg');
  1221. case 11:
  1222. return proRank($type, $lang['owner'], 'owner.svg');
  1223. default:
  1224. return '';
  1225. }
  1226. }
  1227. }
  1228. function roomRank($rank, $type){
  1229. global $lang;
  1230. switch($rank){
  1231. case 6:
  1232. return curRanking($type, $lang['r_owner'], 'room_owner.svg');
  1233. case 5:
  1234. return curRanking($type, $lang['r_admin'], 'room_admin.svg');
  1235. case 4:
  1236. return curRanking($type, $lang['r_mod'], 'room_mod.svg');
  1237. }
  1238. }
  1239. function curRanking($type, $txt, $icon){
  1240. return '<img src="default_images/rank/' . $icon . '" class="' . $type . '" title="' . $txt . '"/>';
  1241. }
  1242. function proRank($type, $txt, $icon){
  1243. return '<img src="default_images/rank/' . $icon . '" class="' . $type . '"/> ' . $txt;
  1244. }
  1245.  
  1246. function getRank($rank){
  1247. global $lang;
  1248. switch($rank){
  1249. case 0:
  1250. return $lang['guest'];
  1251. case 1:
  1252. return $lang['user'];
  1253. case 2:
  1254. return $lang['vip'];
  1255. case 3:
  1256. return 'مشرف';
  1257. case 8:
  1258. return $lang['mod'];
  1259. case 9:
  1260. return $lang['admin'];
  1261. case 10:
  1262. return $lang['super_admin'];
  1263. case 11:
  1264. return $lang['owner'];
  1265. default:
  1266. return $lang['user'];
  1267. }
  1268. }
  1269. function roomTitle($rank){
  1270. global $lang;
  1271. switch($rank){
  1272. case 6:
  1273. return $lang['r_owner'];
  1274. case 5:
  1275. return $lang['r_admin'];
  1276. case 4:
  1277. return $lang['r_mod'];
  1278. default:
  1279. return $lang['user'];
  1280. }
  1281. }
  1282. function listRank($current, $req = 0){
  1283. global $lang, $data;
  1284. $rank = '';
  1285. if($req == 1){
  1286. $rank .= '<option value="0" ' . selCurrent($current, 0) . '>' . $lang['guest'] . '</option>';
  1287. }
  1288. $rank .= '<option value="1" ' . selCurrent($current, 1) . '>' . $lang['user'] . '</option>';
  1289. $rank .= '<option value="2" ' . selCurrent($current, 2) . '>' . $lang['vip'] . '</option>';
  1290. $rank .= '<option value="3" ' . selCurrent($current, 3) . '>' . 'مشرف' . '</option>';
  1291. $rank .= '<option value="8" ' . selCurrent($current, 8) . '>' . $lang['mod'] . '</option>';
  1292. $rank .= '<option value="9" ' . selCurrent($current, 9) . '>' . $lang['admin'] . '</option>';
  1293. $rank .= '<option value="10" ' . selCurrent($current, 10) . '>' . $lang['super_admin'] . '</option>';
  1294. $rank .= '<option value="11" ' . selCurrent($current, 11) . '>' . $lang['owner'] . '</option>';
  1295. return $rank;
  1296. }
  1297. function changeRank($current){
  1298. global $lang, $data;
  1299. $rank = '';
  1300. if(boomAllow(9)){
  1301. $rank .= '<option value="1" ' . selCurrent($current, 1) . '>' . $lang['user'] . '</option>';
  1302. $rank .= '<option value="2" ' . selCurrent($current, 2) . '>' . $lang['vip'] . '</option>';
  1303. $rank .= '<option value="3" ' . selCurrent($current, 3) . '>' . 'مشرف' . '</option>';
  1304. $rank .= '<option value="8" ' . selCurrent($current, 8) . '>' . $lang['mod'] . '</option>';
  1305. }
  1306. if(boomAllow(10)){
  1307. $rank .= '<option value="9" ' . selCurrent($current, 9) . '>' . $lang['admin'] . '</option>';
  1308. }
  1309. if(boomAllow(11)){
  1310. $rank .= '<option value="10" ' . selCurrent($current, 10) . '>' . $lang['super_admin'] . '</option>';
  1311. }
  1312. return $rank;
  1313. }
  1314. function listRoomRank($current = 0){
  1315. global $lang, $data;
  1316. $rank = '';
  1317. $rank .= '<option value="0" ' . selCurrent($current, 0) . '>' . $lang['none'] . '</option>';
  1318. $rank .= '<option value="4" ' . selCurrent($current, 4) . '>' . $lang['r_mod'] . '</option>';
  1319. $rank .= '<option value="5" ' . selCurrent($current, 5) . '>' . $lang['r_admin'] . '</option>';
  1320. if(boomAllow(9)){
  1321. $rank .= '<option value="6" ' . selCurrent($current, 6) . '>' . $lang['r_owner'] . '</option>';
  1322. }
  1323. return $rank;
  1324. }
  1325.  
  1326. // room access ranking functions
  1327.  
  1328. function roomRanking($rank = 0){
  1329. global $lang;
  1330. $room_menu = '<option value="0" ' . selCurrent($rank, 0) . '>' . $lang['public'] . '</option>';
  1331. if(boomAllow(1)){
  1332. $room_menu .= '<option value="1" ' . selCurrent($rank, 1) . '>' . $lang['members'] . '</option>';
  1333. }
  1334. if(boomAllow(2)){
  1335. $room_menu .= '<option value="2" ' . selCurrent($rank, 2) . '>' . $lang['vip'] . '</option>';
  1336. }
  1337. if(boomAllow(8)){
  1338. $room_menu .= '<option value="8" ' . selCurrent($rank, 8) . '>' . $lang['staff'] . '</option>';
  1339. }
  1340. if(boomAllow(9)){
  1341. $room_menu .= '<option value="9" ' . selCurrent($rank, 9) . '>' . $lang['admin'] . '</option>';
  1342. }
  1343. return $room_menu;
  1344. }
  1345. function roomIcon($room, $type){
  1346. global $lang;
  1347. switch($room['access']){
  1348. case 0:
  1349. return roomIconTemplate($type, $lang['public'], 'public_room.svg');
  1350. case 1:
  1351. return roomIconTemplate($type, $lang['members'], 'member_room.svg');
  1352. case 2:
  1353. return roomIconTemplate($type, $lang['vip'], 'vip_room.svg');
  1354. case 8:
  1355. return roomIconTemplate($type, $lang['staff'], 'staff_room.svg');
  1356. case 9:
  1357. return roomIconTemplate($type, $lang['admin'], 'admin_room.svg');
  1358. default:
  1359. return roomIconTemplate($type, $lang['public'], 'public_room.svg');
  1360. }
  1361. }
  1362. function roomIconTemplate($type, $txt, $icon){
  1363. global $data;
  1364. return '<img title="' . $txt . '" class="' . $type . '" src="' . $data['domain'] . '/default_images/rooms/' . $icon . '">';
  1365. }
  1366. function roomAccessTitle($room){
  1367. global $lang;
  1368. switch($room['access']){
  1369. case 0:
  1370. return $lang['public'];
  1371. case 1:
  1372. return $lang['members'];
  1373. case 2:
  1374. return $lang['vip'];
  1375. case 8:
  1376. return $lang['staff'];
  1377. case 9:
  1378. return $lang['admin'];
  1379. default:
  1380. return $lang['public'];
  1381. }
  1382. }
  1383. function roomLock($room, $type){
  1384. global $data, $lang;
  1385. if($room['password'] != ''){
  1386. return '<img title="' . $lang['password'] . '" class="' . $type . '" src="' . $data['domain'] . '/default_images/rooms/locked_room.svg">';
  1387. }
  1388. }
  1389.  
  1390. // permission functions
  1391.  
  1392. function canEditRoom(){
  1393. if(boomRole(6) || boomAllow(9)){
  1394. return true;
  1395. }
  1396. }
  1397. function canManageRoom(){
  1398. if(boomRole(4) || boomAllow(9)){
  1399. return true;
  1400. }
  1401. }
  1402. function canUpload(){
  1403. global $data;
  1404. if(boomAllow($data['allow_image'])){
  1405. return true;
  1406. }
  1407. }
  1408. function canCover(){
  1409. global $data;
  1410. if(boomAllow($data['allow_cover'])){
  1411. return true;
  1412. }
  1413. }
  1414. function canGifCover(){
  1415. global $data;
  1416. if(boomAllow($data['allow_gcover'])){
  1417. return true;
  1418. }
  1419. }
  1420. function canPrivate(){
  1421. global $data;
  1422. if(boomAllow($data['allow_private'])){
  1423. return true;
  1424. }
  1425. }
  1426. function userCanPrivate($user){
  1427. global $data;
  1428. if(userBoomAllow($user, $data['allow_private'])){
  1429. return true;
  1430. }
  1431. }
  1432. function canRoom(){
  1433. global $data;
  1434. if(boomAllow($data['allow_room'])){
  1435. return true;
  1436. }
  1437. }
  1438. function canPlayer(){
  1439. global $data;
  1440. if(boomAllow($data['allow_player'])){
  1441. return true;
  1442. }
  1443. }
  1444. function canEmo(){
  1445. global $data;
  1446. if(boomAllow($data['emo_plus'])){
  1447. return true;
  1448. }
  1449. }
  1450. function canName(){
  1451. global $data;
  1452. if(boomAllow($data['allow_name'])){
  1453. return true;
  1454. }
  1455. }
  1456. function canDirect(){
  1457. global $data;
  1458. if(boomAllow($data['allow_direct'])){
  1459. return true;
  1460. }
  1461. }
  1462. function userCanDirect($user){
  1463. global $data;
  1464. if(userBoomAllow($user, $data['allow_direct'])){
  1465. return true;
  1466. }
  1467. }
  1468. function canColor(){
  1469. global $data;
  1470. if(boomAllow($data['allow_colors'])){
  1471. return true;
  1472. }
  1473. }
  1474. function canGrad(){
  1475. global $data;
  1476. if(boomAllow($data['allow_grad'])){
  1477. return true;
  1478. }
  1479. }
  1480. function canMood(){
  1481. global $data;
  1482. if(boomAllow($data['allow_mood'])){
  1483. return true;
  1484. }
  1485. }
  1486. function canVerify(){
  1487. global $data;
  1488. if(boomAllow($data['allow_verify'])){
  1489. return true;
  1490. }
  1491. }
  1492. function canHistory(){
  1493. global $data;
  1494. if(boomAllow($data['allow_history'])){
  1495. return true;
  1496. }
  1497. }
  1498. function canAvatar(){
  1499. global $data;
  1500. if(boomAllow($data['allow_avatar'])){
  1501. return true;
  1502. }
  1503. }
  1504. function canTheme(){
  1505. global $data;
  1506. if(boomAllow($data['allow_theme'])){
  1507. return true;
  1508. }
  1509. }
  1510. function canNameColor(){
  1511. global $data;
  1512. if(boomAllow($data['allow_name_color'])){
  1513. return true;
  1514. }
  1515. }
  1516. function canNameGrad(){
  1517. global $data;
  1518. if(boomAllow($data['allow_name_grad'])){
  1519. return true;
  1520. }
  1521. }
  1522. function canInvisible(){
  1523. global $data, $cody;
  1524. if(boomAllow($data['can_invisible'])){
  1525. return true;
  1526. }
  1527. }
  1528. function canModifyAvatar($user){
  1529. global $data, $cody;
  1530. if(!empty($user) && canAvatar() && canEditUser($user, $cody['can_modify_avatar'])){
  1531. return true;
  1532. }
  1533. }
  1534. function canModifyCover($user){
  1535. global $data, $cody;
  1536. if(!empty($user) && canCover() && canEditUser($user, $cody['can_modify_cover'])){
  1537. return true;
  1538. }
  1539. }
  1540. function canModifyName($user){
  1541. global $data, $cody;
  1542. if(!empty($user) && canName() && canEditUser($user, $cody['can_modify_name'])){
  1543. return true;
  1544. }
  1545. }
  1546. function canModifyMood($user){
  1547. global $data, $cody;
  1548. if(!empty($user) && canMood() && canEditUser($user, $cody['can_modify_mood'])){
  1549. return true;
  1550. }
  1551. }
  1552. function canModifyAbout($user){
  1553. global $data, $cody;
  1554. if(!empty($user) && canEditUser($user, $cody['can_modify_about'])){
  1555. return true;
  1556. }
  1557. }
  1558. function canModifyEmail($user){
  1559. global $data, $cody;
  1560. if(!empty($user) && isMember($user) && isSecure($user) && canEditUser($user, $cody['can_modify_email'], 1)){
  1561. return true;
  1562. }
  1563. }
  1564. function canModifyColor($user){
  1565. global $data, $cody;
  1566. if(!empty($user) && canNameColor() && canEditUser($user, $cody['can_modify_color'])){
  1567. return true;
  1568. }
  1569. }
  1570. function canModifyPassword($user){
  1571. global $data, $cody;
  1572. if(!empty($user) && isMember($user) && isSecure($user) && canEditUser($user, $cody['can_modify_password'], 1)){
  1573. return true;
  1574. }
  1575. }
  1576. function canUserHistory($user){
  1577. global $data, $cody;
  1578. if(!empty($user) && canEditUser($user, $data['can_view_history'], 1)){
  1579. return true;
  1580. }
  1581. }
  1582. function canViewTimezone($user){
  1583. global $data, $cody;
  1584. if(canEditUser($user, $cody['can_view_timezone'], 1)){
  1585. return true;
  1586. }
  1587. }
  1588. function canViewEmail($user){
  1589. global $data, $cody;
  1590. if(userHaveEmail($user) && canEditUser($user, $data['can_view_email'], 1)){
  1591. return true;
  1592. }
  1593. }
  1594. function canViewId($user){
  1595. global $data, $cody;
  1596. if(canEditUser($user, $data['can_view_id'], 1)){
  1597. return true;
  1598. }
  1599. }
  1600. function canViewIp($user){
  1601. global $data, $cody;
  1602. if(canEditUser($user, $data['can_view_ip'], 1)){
  1603. return true;
  1604. }
  1605. }
  1606. function canRoomPassword(){
  1607. global $data, $cody;
  1608. if(boomAllow($data['can_room_pass']) || boomRole(6)){
  1609. return true;
  1610. }
  1611. }
  1612. function canPostNews(){
  1613. global $data, $cody;
  1614. if(boomAllow($data['can_post_news'])){
  1615. return true;
  1616. }
  1617. }
  1618. function canBan(){
  1619. global $data, $cody;
  1620. if(boomAllow($data['can_ban'])){
  1621. return true;
  1622. }
  1623. }
  1624. function canBanUser($user){
  1625. global $data, $cody;
  1626. if(!empty($user) && canEditUser($user, $data['can_ban'], 1)){
  1627. return true;
  1628. }
  1629. }
  1630. function canDeadBan(){
  1631. global $data, $cody;
  1632. if(boomAllow($data['can_dead_ban'])){
  1633. return true;
  1634. }
  1635. }
  1636. function canDeadBanUser($user){
  1637. global $data, $cody;
  1638. if(!empty($user) && canEditUser($user, $data['can_dead_ban'], 1)){
  1639. return true;
  1640. }
  1641. }
  1642. function canKick(){
  1643. global $data, $cody;
  1644. if(boomAllow($data['can_kick'])){
  1645. return true;
  1646. }
  1647. }
  1648. function canKickUser($user){
  1649. global $data, $cody;
  1650. if(!empty($user) && canEditUser($user, $data['can_kick'], 1)){
  1651. return true;
  1652. }
  1653. }
  1654. function canDeleteNews(){
  1655. global $data, $cody;
  1656. if(boomAllow($data['can_delete_news'])){
  1657. return true;
  1658. }
  1659. }
  1660. function canDeleteWall(){
  1661. global $data, $cody;
  1662. if(boomAllow(8)){
  1663. return true;
  1664. }
  1665. }
  1666. function canDeleteLog(){
  1667. global $data, $cody;
  1668. if(boomAllow(8)){
  1669. return true;
  1670. }
  1671. }
  1672. function canDeleteRoomLog(){
  1673. global $data, $cody;
  1674. if(boomRole(4)){
  1675. return true;
  1676. }
  1677. }
  1678. function canClearRoom(){
  1679. global $data, $cody;
  1680. if(boomAllow(8) || boomRole(5)){
  1681. return true;
  1682. }
  1683. }
  1684.  
  1685. // DO NOT MODIFY THE MUTE PERMISSION THIS WILL MAKE CONFLICT IN THE SYSTEM.
  1686.  
  1687. function canMute(){
  1688. global $data, $cody;
  1689. if(boomAllow($data['can_mute'])){
  1690. return true;
  1691. }
  1692. }
  1693. function canMuteUser($user){
  1694. global $data, $cody;
  1695. if(!empty($user) && canEditUser($user, $data['can_mute'], 1)){
  1696. return true;
  1697. }
  1698. }
  1699.  
  1700. // My Work.. AhmedEx 2020.
  1701.  
  1702. //=== Coins system
  1703. function upgradeCoins(){
  1704. global $mysqli, $data;
  1705. if($data['user_rank'] < 8){
  1706. $mysqli->query("UPDATE boom_users SET user_coins = user_coins + 1 WHERE user_id = '{$data['user_id']}'");
  1707. }
  1708. elseif($data['user_rank'] >= 8){
  1709. $mysqli->query("UPDATE boom_users SET user_coins = user_coins + 1, staff_points = staff_points + 1 WHERE user_id = '{$data['user_id']}'");
  1710. }
  1711. }
  1712.  
  1713. //=== Levels system
  1714. function levelColors($lev){
  1715. if($lev < 10){
  1716. return 'under-10';
  1717. }
  1718. elseif($lev >= 10 && $lev < 20){
  1719. return 'under-20';
  1720. }
  1721. elseif($lev >= 20 && $lev < 40){
  1722. return 'under-40';
  1723. }
  1724. elseif($lev >= 40 && $lev < 50){
  1725. return 'under-50';
  1726. }
  1727. elseif($lev >= 50 && $lev < 60){
  1728. return 'under-60';
  1729. }
  1730. elseif($lev >= 60 && $lev < 70){
  1731. return 'under-70';
  1732. }
  1733. elseif($lev >= 70 && $lev < 80){
  1734. return 'under-80';
  1735. }
  1736. elseif($lev >= 80 && $lev < 90){
  1737. return 'under-90';
  1738. }
  1739. elseif($lev >= 90 && $lev < 100){
  1740. return 'under-100';
  1741. }
  1742. elseif($lev == 100){
  1743. return 'reach-100';
  1744. }
  1745. else{
  1746. return '';
  1747. }
  1748. }
  1749. function borderLevelColors($blev){
  1750. if($blev < 10){
  1751. return 'border-10';
  1752. }
  1753. elseif($blev >= 10 && $blev < 20){
  1754. return 'border-20';
  1755. }
  1756. elseif($blev >= 20 && $blev < 40){
  1757. return 'border-40';
  1758. }
  1759. elseif($blev >= 40 && $blev < 50){
  1760. return 'border-50';
  1761. }
  1762. elseif($blev >= 50 && $blev < 60){
  1763. return 'border-60';
  1764. }
  1765. elseif($blev >= 60 && $blev < 70){
  1766. return 'border-70';
  1767. }
  1768. elseif($blev >= 70 && $blev < 80){
  1769. return 'border-80';
  1770. }
  1771. elseif($blev >= 80 && $blev < 90){
  1772. return 'border-90';
  1773. }
  1774. elseif($blev >= 90 && $blev < 100){
  1775. return 'border-100';
  1776. }
  1777. elseif($blev == 100){
  1778. return 'reachborder-100';
  1779. }
  1780. else{
  1781. return '';
  1782. }
  1783. }
  1784. function proBorderLevelColors($pblev){
  1785. if($pblev < 10){
  1786. return 'pro_border-10';
  1787. }
  1788. elseif($pblev >= 10 && $pblev < 20){
  1789. return 'pro_border-20';
  1790. }
  1791. elseif($pblev >= 20 && $pblev < 40){
  1792. return 'pro_border-40';
  1793. }
  1794. elseif($pblev >= 40 && $pblev < 50){
  1795. return 'pro_border-50';
  1796. }
  1797. elseif($pblev >= 50 && $pblev < 60){
  1798. return 'pro_border-60';
  1799. }
  1800. elseif($pblev >= 60 && $pblev < 70){
  1801. return 'pro_border-70';
  1802. }
  1803. elseif($pblev >= 70 && $pblev < 80){
  1804. return 'pro_border-80';
  1805. }
  1806. elseif($pblev >= 80 && $pblev < 90){
  1807. return 'pro_border-90';
  1808. }
  1809. elseif($pblev >= 90 && $pblev < 100){
  1810. return 'pro_border-100';
  1811. }
  1812. elseif($pblev == 100){
  1813. return 'proreachborder-100';
  1814. }
  1815. else{
  1816. return '';
  1817. }
  1818. }
  1819.  
  1820. //=== Private options
  1821. function showPrivateBg(){
  1822. global $data;
  1823. $bg = $data['private_bg'];
  1824. if(!empty($data['private_bg'])){
  1825. return 'style="background-image:url(default_images/prv_bg/'. $bg .');background-size:cover;background-position: 100%;"';
  1826. }
  1827. }
  1828. function reqLevelFor($req){
  1829. global $data;
  1830. if($data['user_level'] >= $req){
  1831. return true;
  1832. }
  1833. }
  1834.  
  1835. //=== Profile colors
  1836. function proGradChoice($sel, $type, $min = 1){
  1837. global $cody;
  1838. $show_c = '';
  1839. switch($type){
  1840. case 4:
  1841. $c = 'pro_choice';
  1842. break;
  1843. default:
  1844. return false;
  1845. }
  1846. for ($n = $min; $n <= 80; $n++) {
  1847. $val = 'pgrad' . $n;
  1848. $back = 'prograd' . $n;
  1849. $add_sel = '';
  1850. if($val == $sel){
  1851. $add_sel = '<i class="bccheck fa fa-check"></i>';
  1852. }
  1853. $show_c .= '<div data="' . $val . '" class="color_switch ' . $c . ' ' . $back . '">' . $add_sel . '</div>';
  1854. }
  1855. return $show_c;
  1856. }
  1857. function proShadowGradChoice($sel, $type, $min = 1){
  1858. global $cody;
  1859. $show_c = '';
  1860. switch($type){
  1861. case 4:
  1862. $c = 'pro_shadow';
  1863. break;
  1864. default:
  1865. return false;
  1866. }
  1867. for ($n = $min; $n <= 45; $n++) {
  1868. $val = 'shgrad' . $n;
  1869. $back = 'shback' . $n;
  1870. $add_sel = '';
  1871. if($val == $sel){
  1872. $add_sel = '<i style="color:red;" class="bccheck fa fa-check"></i>';
  1873. }
  1874. $show_c .= '<div data="' . $val . '" class="color_switch ' . $c . ' ' . $back . '">' . $add_sel . '</div>';
  1875. }
  1876. return $show_c;
  1877. }
  1878.  
  1879. //=== Online/Offline Options
  1880. function userStatusList(){
  1881. global $data;
  1882. $lact = calMinutes(1);
  1883. $s = $data['last_action'];
  1884. $stat = '';
  1885. if($s >= $lact){
  1886. $stat = '<a style="width: 15px;display: inline-block;" class="status_icon"><img style="width: 12px;height:12px;" src="default_images/status/online.svg"></a>';
  1887. }
  1888. elseif($s < $lact){
  1889. $stat = '<a style="width: 15px;display: inline-block;" class="status_icon"><img style="width: 12px;height:12px;" src="default_images/status/invisible.svg"></a>';
  1890. }
  1891. return $stat;
  1892. }
  1893.  
  1894. //=== Defence System
  1895. function checkChatGuests(){
  1896. global $data;
  1897. if($data['req_chat_guest'] == 1){
  1898. if($data['user_rank'] < $data['req_chat_user']){
  1899. return 'privoff';
  1900. }
  1901. else{
  1902. return '';
  1903. }
  1904. }
  1905. }
  1906.  
  1907. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement