Advertisement
arabtion

Untitled

Jun 7th, 2020
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 62.60 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="deleteSpLog(' . $post['post_id'] . ');" class="cclear"><i class="fa fa-times"></i></div><div onclick="sendFamousPoint(' . $post['user_id'] . ');" class="cclear"><i class="fa fa-fire error"></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><div onclick="sendFamousPoint(' . $post['user_id'] . ');" class="cclear"><i class="fa fa-fire error"></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($data['appear_chatmain'] == 1){
  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 style="font-family: Courier New;" 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;font-family: Courier New;" 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>
  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>
  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. $genderIcon = '';
  623. if(useFlag($list['country'])){
  624. $flag = '<div class="user_item_flag"><img src="' . countryFlag($list['country']) . '"/></div>';
  625. }
  626. $offline = 'offline';
  627. $rank_icon = rankIcon($list, 'ex_rank');
  628. $mute_icon = mutedIcon($list, 'list_mute');
  629. if($data['ico'] > 0 && $rank_icon != ''){
  630. $icon = '<div class="user_item_icon icrank">' . $rank_icon . '</div>';
  631. }
  632. if($mute_icon != ''){
  633. $muted = '<div class="user_item_icon icmute">' . $mute_icon . '</div>';
  634. }
  635. if($data['gender_ico'] > 0){
  636. $gender = 'avsex ' . sex($list['user_sex']) . ' ';
  637. }
  638. if($list['last_action'] > getDelay() || isBot($list)){
  639. $offline = '';
  640. $status = getStatus($list['user_status'], 'list_status');
  641. }
  642. if(!isBot($list)) {
  643. if(sex($list['user_sex']) == 'boy') {
  644. $genderIcon = '<div class="user_item_flag"><img class="text-img " src="/default_images/genmale.png" title="ذكر"'.$lang['gender_male'].'"></i></div>';
  645. } else if(sex($list['user_sex']) == 'girl') {
  646. $genderIcon = '<div class="user_item_flag"><img class="text-img " src="/default_images/genfemale.png" title="إنثى"'.$lang['gender_female'].'"></i></div>';
  647. } else if(sex($list['user_sex']) == 'nosex') {
  648. $genderIcon = '<div class="user_item_flag"><img class="text-img " src="/default_images/unknown.png" title="غير معروف"'.$lang['not_set'].'"></i></div>';
  649. } else {
  650. $genderIcon = '';
  651. }
  652. }
  653.  
  654. if(!empty($list['user_mood'])){
  655. $mood = '<p class="text_xsmall bustate bellips">' . $list['user_mood'] . '</p>';
  656. }
  657. if(!empty($list['fancy_color1'])||!empty($list['fancy_glow'])||!empty($list['fancy_glowsize'])||!empty($list['fancy_glowdirc'])){
  658. $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;"';
  659. }
  660. if(!empty($list['fancy_font'])){
  661. $font = 'face="'. $list['fancy_font'] .'"';
  662. }
  663. if(!empty($list['fancy_anim'])){
  664. $anim = ''. $list['fancy_anim'] .'';
  665. }
  666. if(!empty($list['name_smile'])){
  667. $nsmile = '<img style="height:20px;margin-right:5px;vertical-align: middle;" src="default_images/name_smile/'. $list['name_smile'] .'.gif" />';
  668. }
  669. $levels = '<p class="border-level '. levelColors($list['user_level']) .'">'. $list['user_level'] .'</p>';
  670. return '<div onclick="dropUser(this,'.$list['user_id'].',\''.$list['user_name'].'\','.$list['user_rank'].','.$list['user_bot'].', ' . $type . ');" class="user_item ' . $offline . '">
  671. <div class="user_item_avatar"><img class="acav '. borderLevelColors($list['user_level']) .' ' . ownAvatar($list['user_id']) . '" src="' . myavatar($list['user_tumb']) . '"/> ' . $icon . ''. $levels .'</div>
  672. <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>
  673. ' . $muted . $genderIcon . $flag . '
  674. </div>
  675. <div class="drop_list"></div>';
  676. }
  677. function chatDate($date){
  678. return date("j/m G:i", $date);
  679. }
  680. function displayDate($date){
  681. return date("j/m G:i", $date);
  682. }
  683. function longDate($date){
  684. return date("Y-m-d ", $date);
  685. }
  686. function longDateTime($date){
  687. return date("Y-m-d G:i ", $date);
  688. }
  689. function userTime($user){
  690. $d = new DateTime(date("d F Y H:i:s",time()));
  691. $d->setTimezone(new DateTimeZone($user['user_timezone']));
  692. $r =$d->format('G:i');
  693. return $r;
  694. }
  695. function boomRenderMinutes($val){
  696. global $lang;
  697. $day = '';
  698. $hour = '';
  699. $minute = '';
  700. $d = floor ($val / 1440);
  701. $h = floor (($val - $d * 1440) / 60);
  702. $m = $val - ($d * 1440) - ($h * 60);
  703. if($d > 0){
  704. if($d > 1){ $day = $d . ' ' . $lang['days']; } else{ $day = $d . ' ' . $lang['day']; }
  705. }
  706. if($h > 0){
  707. if($h > 1){ $hour = $h . ' ' . $lang['hours']; } else{ $hour = $h . ' ' . $lang['hour']; }
  708. }
  709. if($m > 0){
  710. if($m > 1){ $minute = $m . ' ' . $lang['minutes']; } else{ $minute = $m . ' ' . $lang['minute']; }
  711. }
  712. return trim($day . ' ' . $hour . ' ' . $minute);
  713. }
  714. function boomRenderSeconds($val){
  715. global $lang;
  716. $day = '';
  717. $hour = '';
  718. $minute = '';
  719. $second = '';
  720. $d = floor ($val / 86400);
  721. $h = floor (($val - $d * 86400) / 3600);
  722. $m = floor (($val - ($d * 86400) - ($h * 3600)) / 60);
  723. $s = $val - ($d * 86400) - ($h * 3600) - ($m * 60);
  724. if($d > 0){
  725. if($d > 1){ $day = $d . ' ' . $lang['days']; } else{ $day = $d . ' ' . $lang['day']; } }
  726. if($h > 0){
  727. if($h > 1){ $hour = $h . ' ' . $lang['hours']; } else{ $hour = $h . ' ' . $lang['hour']; }
  728. }
  729. if($m > 0){
  730. if($m > 1){ $minute = $m . ' ' . $lang['minutes']; } else{ $minute = $m . ' ' . $lang['minute']; }
  731. }
  732. if($s > 0){
  733. if($s > 1){ $second = $s . ' ' . $lang['seconds']; } else{ $second = $s . ' ' . $lang['second']; }
  734. }
  735. return trim($day . ' ' . $hour . ' ' . $minute . ' ' . $second);
  736. }
  737. function boomTimeLeft($t){
  738. return boomRenderMinutes(floor(($t - time()) / 60));
  739. }
  740. function boomAllow($rank){
  741. global $data;
  742. if($data['user_rank'] >= $rank){
  743. return true;
  744. }
  745. }
  746. function userBoomAllow($user, $val){
  747. if($user['user_rank'] >= $val){
  748. return true;
  749. }
  750. }
  751. function boomRole($role){
  752. global $data;
  753. if($data['user_role'] >= $role){
  754. return true;
  755. }
  756. }
  757. function haveRole($role){
  758. if($role > 0){
  759. return true;
  760. }
  761. }
  762. function isGreater($rank){
  763. global $data;
  764. if($data['user_rank'] > $rank){
  765. return true;
  766. }
  767. }
  768. function notMe($id){
  769. global $data;
  770. if($id != $data['user_id']){
  771. return true;
  772. }
  773. }
  774. function isBot($user){
  775. if($user['user_bot'] > 0){
  776. return true;
  777. }
  778. }
  779. function systemBot($user){
  780. if($user == 9){
  781. return true;
  782. }
  783. }
  784. function isSystem($id){
  785. global $data;
  786. if($id == $data['system_id']){
  787. return true;
  788. }
  789. }
  790. function getTopic($t){
  791. global $lang;
  792. $topic = processUserData($t);
  793. if(!empty($topic)){
  794. return systemSpecial($topic, 'topic_log', array('icon'=> 'topic.svg', 'title'=> $lang['topic_title']));
  795. }
  796. }
  797. function boomConsole($target, $type, $custom = array()){
  798. global $mysqli, $data;
  799. $def = array(
  800. 'hunter'=> $data['user_id'],
  801. 'room'=> $data['user_roomid'],
  802. 'rank'=> 0,
  803. 'delay'=> 0,
  804. 'reason'=> '',
  805. 'custom' => '',
  806. 'custom2' => '',
  807. );
  808. $c = array_merge($def, $custom);
  809. $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() . "')");
  810. }
  811. function boomHistory($target, $type, $custom = array()){
  812. global $mysqli, $data;
  813. $def = array(
  814. 'hunter'=> $data['user_id'],
  815. 'rank'=> 0,
  816. 'delay'=> 0,
  817. 'reason'=> '',
  818. 'content'=> '',
  819. );
  820. $c = array_merge($def, $custom);
  821. $mysqli->query("INSERT INTO boom_history (hunter, target, htype, delay, reason, history_date) VALUES ('{$c['hunter']}', '$target', '$type', '{$c['delay']}', '{$c['reason']}', '" . time() . "')");
  822. }
  823. function renderReason($t){
  824. global $lang;
  825. switch($t){
  826. case '':
  827. return $lang['no_reason'];
  828. case 'badword':
  829. return $lang['badword'];
  830. case 'spam':
  831. return $lang['spam'];
  832. case 'flood':
  833. return $lang['flood'];
  834. default:
  835. return $t;
  836. }
  837. }
  838. function userUnmute($user){
  839. global $mysqli;
  840. clearNotifyAction($user['user_id'], 'mute');
  841. $mysqli->query("UPDATE boom_users SET user_mute = 0, mute_msg = '' WHERE user_id = '{$user['user_id']}'");
  842. boomNotify($user['user_id'], 'unmute', array('source'=> 'mute'));
  843. }
  844. function userUnkick($user){
  845. global $mysqli;
  846. $mysqli->query("UPDATE boom_users SET user_kick = 0 WHERE user_id = '{$user['user_id']}'");
  847. }
  848. function muted(){
  849. global $data;
  850. if(isMuted($data) || isBanned($data) || isKicked($data) || outChat($data)){
  851. return true;
  852. }
  853. }
  854. function roomMuted(){
  855. global $data;
  856. if($data['room_mute'] > 0){
  857. return true;
  858. }
  859. }
  860. function isRoomMuted($user){
  861. if($user['room_mute'] > 0){
  862. return true;
  863. }
  864. }
  865. function isMuted($user){
  866. if($user['user_mute'] > time()){
  867. return true;
  868. }
  869. }
  870. function mutedData($user){
  871. if($user['user_mute'] > 0){
  872. return true;
  873. }
  874. }
  875. function kickedData($user){
  876. if($user['user_kick'] > 0){
  877. return true;
  878. }
  879. }
  880. function isBanned($user){
  881. if($user['user_banned'] > 0){
  882. return true;
  883. }
  884. }
  885. function isKicked($user){
  886. if($user['user_kick'] > time()){
  887. return true;
  888. }
  889. }
  890. function joinRoom(){
  891. global $lang, $data;
  892. if(allowLogs() && isVisible($data)){
  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. function leaveRoom(){
  901. global $data, $lang;
  902. if(allowLogs()){
  903. if(isVisible($data) && $data['user_roomid'] != 0 && $data['last_action'] > time() - 30 ){
  904. $content = str_replace('%rank%', getRank($data['user_rank']), '<b style="font-size:12px;color:black;background: rgb(255,255,255);
  905. background: linear-gradient(90deg, rgb(241, 243, 255) 35%, rgba(195,223,255,1) 100%);
  906. border-radius: 15px;
  907. padding: 0px 8px;">هذا المستخدم انتقل من الغرفة<span style="color:red;"> [ رتبة %rank% ] </span></b>');
  908. userPostChat($content);
  909. }
  910. }
  911. }
  912. function processUserData($t){
  913. global $data;
  914. return str_replace(array('%user%'), array($data['user_name']), $t);
  915. }
  916. function roomStaff(){
  917. if(boomRole(4)){
  918. return true;
  919. }
  920. }
  921. function userRoomStaff($rank){
  922. if($rank >= 4){
  923. return true;
  924. }
  925. }
  926. function allowLogs(){
  927. global $data;
  928. if($data['req_joinmsg'] == 1){
  929. return true;
  930. }
  931. }
  932. function isVisible($user){
  933. if($user['user_status'] != 6){
  934. return true;
  935. }
  936. }
  937. function isSecure($user){
  938. if(isEmail($user['user_email'])){
  939. return true;
  940. }
  941. }
  942. function isMember($user){
  943. if(!isGuest($user) && !isBot($user)){
  944. return true;
  945. }
  946. }
  947. function isGuest($user){
  948. if($user['user_rank'] == 0){
  949. return true;
  950. }
  951. }
  952. function guestForm(){
  953. global $data;
  954. if($data['guest_form'] == 1){
  955. return true;
  956. }
  957. }
  958. function strictGuest(){
  959. global $cody;
  960. if($cody['strict_guest'] == 1){
  961. return true;
  962. }
  963. }
  964. function userDj($user){
  965. if($user['user_dj'] == 1){
  966. return true;
  967. }
  968. }
  969. function boomRecaptcha(){
  970. global $data;
  971. if($data['use_recapt'] > 0){
  972. return true;
  973. }
  974. }
  975.  
  976. function encrypt($d){
  977. return sha1(str_rot13($d . BOOM_CRYPT));
  978. }
  979. function boomEncrypt($d, $encr){
  980. return sha1(str_rot13($d . $encr));
  981. }
  982. function getDelay(){
  983. return time() - 144000;
  984. }
  985. function getDelayOnline(){
  986. return time() - 30;
  987. }
  988. function getMinutes($t){
  989. return $t / 60;
  990. }
  991. function isOwner($user){
  992. if($user['user_rank'] == 11){
  993. return true;
  994. }
  995. }
  996. function isStaff($rank){
  997. if($rank > 7){
  998. return true;
  999. }
  1000. }
  1001. function genKey(){
  1002. return md5(rand(10000,99999) . rand(10000,99999));
  1003. }
  1004. function genCode(){
  1005. return rand(111111,999999);
  1006. }
  1007. function genSnum(){
  1008. global $data;
  1009. return $data['user_id'] . rand(1111111, 9999999);
  1010. }
  1011. function boomUnderClear($t){
  1012. return str_replace('_', ' ', $t);
  1013. }
  1014. function allowGuest(){
  1015. global $data;
  1016. if($data['allow_guest'] == 1){
  1017. return true;
  1018. }
  1019. }
  1020. function roomName(){
  1021. global $mysqli, $data;
  1022. $groom = $mysqli->query("SELECT room_name FROM boom_rooms WHERE room_id = '{$data['user_roomid']}'");
  1023. $r = $groom->fetch_assoc();
  1024. return $r['room_name'];
  1025. }
  1026. function boomMerge($a, $b){
  1027. $c = $a . '_' . $b;
  1028. return trim($c);
  1029. }
  1030. function clearNotifyAction($id, $type){
  1031. global $mysqli;
  1032. $mysqli->query("DELETE FROM boom_notification WHERE notified = '$id' AND notify_source = '$type'");
  1033. }
  1034. function setToken(){
  1035. global $cody;
  1036. if(!empty($_SESSION[BOOM_PREFIX . 'token'])){
  1037. $_SESSION[BOOM_PREFIX . 'token'] = $_SESSION[BOOM_PREFIX . 'token'];
  1038. return $_SESSION[BOOM_PREFIX . 'token'];
  1039. }
  1040. else {
  1041. $session = md5(rand(000000,999999));
  1042. $_SESSION[BOOM_PREFIX . 'token'] = $session;
  1043. return $session;
  1044. }
  1045. }
  1046. function boomDuplicateIp($val){
  1047. global $mysqli, $data, $cody;
  1048. $dupli = $mysqli->query("SELECT * FROM `boom_banned` WHERE `ip` = '$val'");
  1049. if($dupli->num_rows > 0){
  1050. return true;
  1051. }
  1052. }
  1053. function checkToken() {
  1054. global $cody;
  1055. if (!isset($_POST['token']) || !isset($_SESSION[BOOM_PREFIX . 'token']) || empty($_SESSION[BOOM_PREFIX . 'token'])) {
  1056. return false;
  1057. }
  1058. if($_POST['token'] == $_SESSION[BOOM_PREFIX . 'token']){
  1059. return true;
  1060. }
  1061. return false;
  1062. }
  1063.  
  1064. // ranking functions
  1065.  
  1066. function mutedIcon($user, $c){
  1067. global $lang;
  1068. if(isMuted($user)){
  1069. return '<img title="' . $lang['muted'] . '" class="' . $c . '" src="default_images/actions/muted.svg"/>';
  1070. }
  1071. else if(isRoomMuted($user)){
  1072. return '<img title="' . $lang['muted'] . '" class="' . $c . '" src="default_images/actions/room_muted.svg"/>';
  1073. }
  1074. else {
  1075. return '';
  1076. }
  1077. }
  1078.  
  1079. // sex and gender functions
  1080.  
  1081. function listGender($sex){
  1082. global $lang;
  1083. $list = '';
  1084. $list .= '<option ' . selCurrent($sex, 1) . ' value="1">' . $lang['male'] . '</option>';
  1085. $list .= '<option ' . selCurrent($sex, 2) . ' value="2">' . $lang['female'] . '</option>';
  1086. $list .= '<option ' . selCurrent($sex, 3) . ' value="3">' . $lang['other'] . '</option>';
  1087. return $list;
  1088. }
  1089. function boomValidGender($sex){
  1090. $gender = array(1,2,3);
  1091. if(in_array($sex, $gender)){
  1092. return true;
  1093. }
  1094. }
  1095. function getGender($s){
  1096. global $lang;
  1097. switch($s){
  1098. case 1:
  1099. return $lang['male'];
  1100. case 2:
  1101. return $lang['female'];
  1102. case 3:
  1103. return $lang['other'];
  1104. default:
  1105. return $lang['not_set'];
  1106. }
  1107. }
  1108. function sex($s){
  1109. global $lang;
  1110. switch($s){
  1111. case 1:
  1112. return 'boy';
  1113. case 2:
  1114. return 'girl';
  1115. case 3:
  1116. return 'nosex';
  1117. default:
  1118. return 'nosex';
  1119. }
  1120. }
  1121.  
  1122. // status functions
  1123.  
  1124. function getStatus($status, $c){
  1125. global $lang;
  1126. switch($status){
  1127. case 2:
  1128. return curStatus($lang['away'], 'away.svg', $c);
  1129. case 3:
  1130. return curStatus($lang['busy'], 'busy.svg', $c);
  1131. case 7:
  1132. return curStatus($lang['eating'], 'food.svg', $c);
  1133. case 8:
  1134. return curStatus($lang['privet'], 'privet.svg', $c);
  1135. case 9:
  1136. return curStatus($lang['krfan'], 'radio.svg', $c);
  1137. case 10:
  1138. return curStatus($lang['mmno3'], 'lov.svg', $c);
  1139. case 11:
  1140. return curStatus($lang['gaming1'], 'happ.svg', $c);
  1141. case 12:
  1142. return curStatus($lang['music'], 'sad.svg', $c);
  1143. case 13:
  1144. return curStatus($lang['tv1'], 'tv1.svg', $c);
  1145. case 14:
  1146. return curStatus($lang['no1'], 'no1.svg', $c);
  1147. case 15:
  1148. return curStatus($lang['game'], 'game.svg', $c);
  1149. case 16:
  1150. return curStatus($lang['na1'], 'na1.svg', $c);
  1151. default:
  1152. return '';
  1153. }
  1154. }
  1155. function curStatus($txt, $icon, $c){
  1156. return '<img title="' . $txt . '" class="' . $c . '" src="default_images/status/' . $icon . '"/>';
  1157. }
  1158. function listStatus($status){
  1159. global $lang;
  1160. switch($status){
  1161. case 1:
  1162. return statusMenu($lang['online'], 'online.svg');
  1163. case 2:
  1164. return statusMenu($lang['away'], 'away.svg');
  1165. case 3:
  1166. return statusMenu($lang['busy'], 'busy.svg');
  1167. case 6:
  1168. return statusMenu($lang['invisible'], 'invisible.svg');
  1169. default:
  1170.  
  1171. case 7:
  1172. return statusMenu($lang['eating'], 'food.svg');
  1173. case 8:
  1174. return statusMenu($lang['privet'], 'privet.svg');
  1175. case 9:
  1176. return statusMenu($lang['krfan'], 'radio.svg');
  1177. case 10:
  1178. return statusMenu($lang['mmno3'], 'lov.svg');
  1179. case 11:
  1180. return statusMenu($lang['gaming1'], 'happ.svg');
  1181. case 12:
  1182. return statusMenu($lang['music'], 'sad.svg');
  1183. case 13:
  1184. return statusMenu($lang['tv1'], 'tv1.svg');
  1185. case 14:
  1186. return statusMenu($lang['no1'], 'no1.svg');
  1187. case 15:
  1188. return statusMenu($lang['game'], 'game.svg');
  1189. case 16:
  1190. return statusMenu($lang['na1'], 'na1.svg');
  1191. }
  1192. }
  1193. function statusMenu($txt, $icon){
  1194. return '<div class="status_icon"><img src="default_images/status/' . $icon . '"/></div><div class="status_text">' . $txt . '</div>';
  1195. }
  1196. function listAllStatus(){
  1197. global $lang, $data, $cody;
  1198. $list = '';
  1199. $list .= statusBox(1, listStatus(1));
  1200. $list .= statusBox(2, listStatus(2));
  1201. $list .= statusBox(3, listStatus(3));
  1202. $list .= statusBox(7, listStatus(7));
  1203. $list .= statusBox(8, listStatus(8));
  1204. $list .= statusBox(9, listStatus(9));
  1205. $list .= statusBox(10, listStatus(10));
  1206. $list .= statusBox(11, listStatus(11));
  1207. $list .= statusBox(12, listStatus(12));
  1208. $list .= statusBox(13, listStatus(13));
  1209. $list .= statusBox(14, listStatus(14));
  1210. $list .= statusBox(15, listStatus(15));
  1211. $list .= statusBox(16, listStatus(16));
  1212. if(canInvisible()){
  1213. $list .= statusBox(6, listStatus(6));
  1214. }
  1215. return $list;
  1216. }
  1217. function statusBox($value, $content){
  1218. return '<div class="status_option" data="' . $value . '">' . $content . '</div>';
  1219. }
  1220.  
  1221. // system ranking functions
  1222. function getLevel($level){
  1223. global $lang;
  1224. switch($level){
  1225. case 1:
  1226. return '<span>عضو جديد #1</span>';
  1227. case 2:
  1228. return '<span>عضو جديد #2</span>';
  1229. case 3:
  1230. return '<span>عضو جديد #3</span>';
  1231. case 4:
  1232. return '<span>عضو جديد #4</span>';
  1233. case 5:
  1234. return '<span>عضو جديد #5</span>';
  1235. case 6:
  1236. return '<span>عضو جديد #6</span>';
  1237. case 7:
  1238. return '<span>عضو جديد #7</span>';
  1239. case 8:
  1240. return '<span>عضو متفاعل #1</span>';
  1241. case 9:
  1242. return '<span>عضو متفاعل #2</span>';
  1243. case 10:
  1244. return '<span>عضو متفاعل #3</span>';
  1245. case 11:
  1246. return '<span>عضو متفاعل #4</span>';
  1247. case 12:
  1248. return '<span>عضو متفاعل #5</span>';
  1249. case 13:
  1250. return '<span>عضو متفاعل #6</span>';
  1251. case 14:
  1252. return '<span>عضو متفاعل #7</span>';
  1253. case 15:
  1254. return '<span>عضو متفاعل #8</span>';
  1255. case 16:
  1256. return '<span>عضو ذهبي #1</span>';
  1257. case 17:
  1258. return '<span>عضو ذهبي #2</span>';
  1259. case 18:
  1260. return '<span>عضو ذهبي #3</span>';
  1261. case 19:
  1262. return '<span>عضو ذهبي #4</span>';
  1263. case 20:
  1264. return '<span>عضو ذهبي #5</span>';
  1265. case 21:
  1266. return '<span>عضو ملكي #1</span>';
  1267. case 22:
  1268. return '<span>عضو ملكي #2</span>';
  1269. case 23:
  1270. return '<span>عضو ملكي #3</span>';
  1271. case 24:
  1272. return '<span>عضو ملكي #4</span>';
  1273. case 25:
  1274. return '<span>عضو ملكي #5</span>';
  1275. case 26:
  1276. return '<span>عضو رفيع المستوى #1</span>';
  1277. case 27:
  1278. return '<span>عضو رفيع المستوى #2</span>';
  1279. case 28:
  1280. return '<span>عضو رفيع المستوى #3</span>';
  1281. case 29:
  1282. return '<span>عضو رفيع المستوى #4</span>';
  1283. case 30:
  1284. return '<span>عضو رفيع المستوى #5</span>';
  1285. case 31:
  1286. return '<span>ملك الموقع #1</span>';
  1287. }
  1288. }
  1289. function getlike($like){
  1290. global $lang;
  1291. switch($like){
  1292. case 1:
  1293. return '<span>مصدر اهتمام #1</span>';
  1294. case 2:
  1295. return '<span>محبوب #2</span>';
  1296. case 3:
  1297. return '<span>محبوب جدا #3</span>';
  1298. case 4:
  1299. return '<span>عضو جديد #4</span>';
  1300. case 5:
  1301. return '<span>عضو جديد #5</span>';
  1302. case 6:
  1303. return '<span>عضو جديد #6</span>';
  1304. case 7:
  1305. return '<span>عضو جديد #7</span>';
  1306. case 8:
  1307. return '<span>عضو متفاعل #1</span>';
  1308. case 9:
  1309. return '<span>عضو متفاعل #2</span>';
  1310. case 10:
  1311. return '<span>عضو متفاعل #3</span>';
  1312. case 11:
  1313. return '<span>عضو متفاعل #4</span>';
  1314. case 12:
  1315. return '<span>عضو متفاعل #5</span>';
  1316. case 13:
  1317. return '<span>عضو متفاعل #6</span>';
  1318. case 14:
  1319. return '<span>عضو متفاعل #7</span>';
  1320. case 15:
  1321. return '<span>عضو متفاعل #8</span>';
  1322. case 16:
  1323. return '<span>عضو ذهبي #1</span>';
  1324. case 17:
  1325. return '<span>عضو ذهبي #2</span>';
  1326. case 18:
  1327. return '<span>عضو ذهبي #3</span>';
  1328. case 19:
  1329. return '<span>عضو ذهبي #4</span>';
  1330. case 20:
  1331. return '<span>عضو ذهبي #5</span>';
  1332. case 21:
  1333. return '<span>عضو ملكي #1</span>';
  1334. case 22:
  1335. return '<span>عضو ملكي #2</span>';
  1336. case 23:
  1337. return '<span>عضو ملكي #3</span>';
  1338. case 24:
  1339. return '<span>عضو ملكي #4</span>';
  1340. case 25:
  1341. return '<span>عضو ملكي #5</span>';
  1342. case 26:
  1343. return '<span>عضو رفيع المستوى #1</span>';
  1344. case 27:
  1345. return '<span>عضو رفيع المستوى #2</span>';
  1346. case 28:
  1347. return '<span>عضو رفيع المستوى #3</span>';
  1348. case 29:
  1349. return '<span>عضو رفيع المستوى #4</span>';
  1350. case 30:
  1351. return '<span>عضو رفيع المستوى #5</span>';
  1352. case 31:
  1353. return '<span>ملك الموقع #1</span>';
  1354. }
  1355. }
  1356.  
  1357. function rankIcon($list, $type){
  1358. if(isBot($list)){
  1359. return botRank($type);
  1360. }
  1361. else if(haveRole($list['user_role']) && !isStaff($list['user_rank'])){
  1362. return roomRank($list['user_role'], $type);
  1363. }
  1364. else {
  1365. return systemRank($list['user_rank'], $type);
  1366. }
  1367. }
  1368. function botRank($type){
  1369. global $lang;
  1370. return curRanking($type, $lang['user_bot'], 'bot.svg');
  1371. }
  1372. function systemRank($rank, $type){
  1373. global $lang;
  1374. switch($rank){
  1375. case 0:
  1376. return curRanking($type, $lang['guest'], 'guest.svg');
  1377. case 1:
  1378. return curRanking($type, $lang['user'], 'user.svg');
  1379. case 2:
  1380. return curRanking($type, $lang['Plus'], 'fdd.png');
  1381. case 3:
  1382. return curRanking($type, $lang['vip1'], 'mom.gif');
  1383. case 4:
  1384. return curRanking($type, $lang['vip'], 'dhhh.png');
  1385. case 6:
  1386. return curRanking($type, $lang['vipnuw'], 'maas.gif');
  1387. case 7:
  1388. return curRanking($type, $lang['vipnuw2'], 'kiin.png');
  1389. case 8:
  1390. return curRanking($type, $lang['mod'], 'suad.png');
  1391. case 9:
  1392. return curRanking($type, $lang['admin'], 'supp.png');
  1393. case 10:
  1394. return curRanking($type, $lang['super_admin'], 'owner.svg');
  1395. case 11:
  1396. return curRanking($type, $lang['owner'], 'crownw.gif');
  1397. default:
  1398. return '';
  1399. }
  1400. }
  1401. function proRanking($user, $type){
  1402. global $lang;
  1403. if(isBot($user)){
  1404. return proRank($type, $lang['user_bot'], 'bot.svg');
  1405. }
  1406. else {
  1407. switch($user['user_rank']){
  1408. case 0:
  1409. return proRank($type, $lang['guest'], 'guest.svg');
  1410. case 1:
  1411. return proRank($type, $lang['user'], 'user.svg');
  1412. case 2:
  1413. return proRank($type, $lang['Plus'], 'fdd.png');
  1414. case 3:
  1415. return proRank($type, $lang['vip1'], 'mom.gif');
  1416. case 4:
  1417. return proRank($type, $lang['vip'], 'dhhh.png');
  1418. case 6:
  1419. return proRank($type, $lang['vipnuw'], 'maas.gif');
  1420. case 7:
  1421. return proRank($type, $lang['vipnuw2'], 'kiin.png');
  1422. case 8:
  1423. return proRank($type, $lang['mod'], 'suad.png');
  1424. case 9:
  1425. return proRank($type, $lang['admin'], 'supp.png');
  1426. case 10:
  1427. return proRank($type, $lang['super_admin'], 'owner.svg');
  1428. case 11:
  1429. return proRank($type, $lang['owner'], 'crownw.gif');
  1430. default:
  1431. return '';
  1432. }
  1433. }
  1434. }
  1435. function roomRank($rank, $type){
  1436. global $lang;
  1437. switch($rank){
  1438. case 6:
  1439. return curRanking($type, $lang['r_owner'], 'room_owner.svg');
  1440. case 5:
  1441. return curRanking($type, $lang['r_admin'], 'room_admin.svg');
  1442. case 4:
  1443. return curRanking($type, $lang['r_mod'], 'room_mod.svg');
  1444. }
  1445. }
  1446. function curRanking($type, $txt, $icon){
  1447. return '<img src="default_images/rank/' . $icon . '" class="' . $type . '" title="' . $txt . '"/>';
  1448. }
  1449. function proRank($type, $txt, $icon){
  1450. return '<img src="default_images/rank/' . $icon . '" class="' . $type . '"/> ' . $txt;
  1451. }
  1452.  
  1453. function getRank($rank){
  1454. global $lang;
  1455. switch($rank){
  1456. case 0:
  1457. return $lang['guest'];
  1458. case 1:
  1459. return $lang['user'];
  1460. case 2:
  1461. return $lang['Plus'];
  1462. case 3:
  1463. return $lang['vip1'];
  1464. case 4:
  1465. return $lang['vip'];
  1466. case 6:
  1467. return $lang['vipnuw'];
  1468. case 7:
  1469. return $lang['vipnuw2'];
  1470. case 8:
  1471. return $lang['mod'];
  1472. case 9:
  1473. return $lang['admin'];
  1474. case 10:
  1475. return $lang['super_admin'];
  1476. case 11:
  1477. return $lang['owner'];
  1478. default:
  1479. return $lang['user'];
  1480. }
  1481. }
  1482. function roomTitle($rank){
  1483. global $lang;
  1484. switch($rank){
  1485. case 6:
  1486. return $lang['r_owner'];
  1487. case 5:
  1488. return $lang['r_admin'];
  1489. case 4:
  1490. return $lang['r_mod'];
  1491. default:
  1492. return $lang['user'];
  1493. }
  1494. }
  1495. function listRank($current, $req = 0){
  1496. global $lang, $data;
  1497. $rank = '';
  1498. if($req == 1){
  1499. $rank .= '<option value="0" ' . selCurrent($current, 0) . '>' . $lang['guest'] . '</option>';
  1500. }
  1501. $rank .= '<option value="1" ' . selCurrent($current, 1) . '>' . $lang['user'] . '</option>';
  1502. $rank .= '<option value="2" ' . selCurrent($current, 2) . '>' . $lang['Plus'] . '</option>';
  1503. $rank .= '<option value="3" ' . selCurrent($current, 3) . '>' . $lang['vip1'] . '</option>';
  1504. $rank .= '<option value="4" ' . selCurrent($current, 4) . '>' . $lang['vip'] . '</option>';
  1505. $rank .= '<option value="6" ' . selCurrent($current, 6) . '>' . $lang['vipnuw'] . '</option>';
  1506. $rank .= '<option value="7" ' . selCurrent($current, 7) . '>' . $lang['vipnuw2'] . '</option>';
  1507. $rank .= '<option value="8" ' . selCurrent($current, 8) . '>' . $lang['mod'] . '</option>';
  1508. $rank .= '<option value="9" ' . selCurrent($current, 9) . '>' . $lang['admin'] . '</option>';
  1509. $rank .= '<option value="10" ' . selCurrent($current, 10) . '>' . $lang['super_admin'] . '</option>';
  1510. $rank .= '<option value="11" ' . selCurrent($current, 11) . '>' . $lang['owner'] . '</option>';
  1511. return $rank;
  1512. }
  1513. function changeRank($current){
  1514. global $lang, $data;
  1515. $rank = '';
  1516. if(boomAllow(9)){
  1517. $rank .= '<option value="1" ' . selCurrent($current, 1) . '>' . $lang['user'] . '</option>';
  1518. $rank .= '<option value="2" ' . selCurrent($current, 2) . '>' . $lang['Plus'] . '</option>';
  1519. $rank .= '<option value="3" ' . selCurrent($current, 3) . '>' . $lang['vip1'] . '</option>';
  1520. $rank .= '<option value="4" ' . selCurrent($current, 4) . '>' . $lang['vip'] . '</option>';
  1521. $rank .= '<option value="6" ' . selCurrent($current, 6) . '>' . $lang['vipnuw'] . '</option>';
  1522. $rank .= '<option value="7" ' . selCurrent($current, 7) . '>' . $lang['vipnuw2'] . '</option>';
  1523. $rank .= '<option value="8" ' . selCurrent($current, 8) . '>' . $lang['mod'] . '</option>';
  1524. }
  1525. if(boomAllow(10)){
  1526. $rank .= '<option value="9" ' . selCurrent($current, 9) . '>' . $lang['admin'] . '</option>';
  1527. }
  1528. if(boomAllow(11)){
  1529. $rank .= '<option value="10" ' . selCurrent($current, 10) . '>' . $lang['super_admin'] . '</option>';
  1530. }
  1531. return $rank;
  1532. }
  1533. function listRoomRank($current = 0){
  1534. global $lang, $data;
  1535. $rank = '';
  1536. $rank .= '<option value="0" ' . selCurrent($current, 0) . '>' . $lang['none'] . '</option>';
  1537. $rank .= '<option value="4" ' . selCurrent($current, 4) . '>' . $lang['r_mod'] . '</option>';
  1538. $rank .= '<option value="5" ' . selCurrent($current, 5) . '>' . $lang['r_admin'] . '</option>';
  1539. if(boomAllow(9)){
  1540. $rank .= '<option value="6" ' . selCurrent($current, 6) . '>' . $lang['r_owner'] . '</option>';
  1541. }
  1542. return $rank;
  1543. }
  1544.  
  1545. // room access ranking functions
  1546.  
  1547. function roomRanking($rank = 0){
  1548. global $lang;
  1549. $room_menu = '<option value="0" ' . selCurrent($rank, 0) . '>' . $lang['public'] . '</option>';
  1550. if(boomAllow(1)){
  1551. $room_menu .= '<option value="1" ' . selCurrent($rank, 1) . '>' . $lang['members'] . '</option>';
  1552. }
  1553. if(boomAllow(2)){
  1554. $room_menu .= '<option value="2" ' . selCurrent($rank, 2) . '>' . $lang['Plus'] . '</option>';
  1555. }
  1556. if(boomAllow(3)){
  1557. $room_menu .= '<option value="3" ' . selCurrent($rank, 3) . '>' . $lang['vip1'] . '</option>';
  1558. }
  1559. if(boomAllow(4)){
  1560. $room_menu .= '<option value="2" ' . selCurrent($rank, 4) . '>' . $lang['vip'] . '</option>';
  1561. }
  1562. if(boomAllow(6)){
  1563. $room_menu .= '<option value="2" ' . selCurrent($rank, 6) . '>' . $lang['vipuw'] . '</option>';
  1564. }
  1565. if(boomAllow(7)){
  1566. $room_menu .= '<option value="2" ' . selCurrent($rank, 7) . '>' . $lang['vipuw2'] . '</option>';
  1567. }
  1568. if(boomAllow(8)){
  1569. $room_menu .= '<option value="8" ' . selCurrent($rank, 8) . '>' . $lang['staff'] . '</option>';
  1570. }
  1571. if(boomAllow(9)){
  1572. $room_menu .= '<option value="9" ' . selCurrent($rank, 9) . '>' . $lang['admin'] . '</option>';
  1573. }
  1574. return $room_menu;
  1575. }
  1576. function roomIcon($room, $type){
  1577. global $lang;
  1578. switch($room['access']){
  1579. case 0:
  1580. return roomIconTemplate($type, $lang['public'], 'public_room.svg');
  1581. case 1:
  1582. return roomIconTemplate($type, $lang['members'], 'member_room.svg');
  1583. case 2:
  1584. return roomIconTemplate($type, $lang['vip'], 'vip_room.svg');
  1585. case 8:
  1586. return roomIconTemplate($type, $lang['staff'], 'staff_room.svg');
  1587. case 9:
  1588. return roomIconTemplate($type, $lang['admin'], 'admin_room.svg');
  1589. default:
  1590. return roomIconTemplate($type, $lang['public'], 'public_room.svg');
  1591. }
  1592. }
  1593. function roomIconTemplate($type, $txt, $icon){
  1594. global $data;
  1595. return '<img title="' . $txt . '" class="' . $type . '" src="' . $data['domain'] . '/default_images/rooms/' . $icon . '">';
  1596. }
  1597. function roomAccessTitle($room){
  1598. global $lang;
  1599. switch($room['access']){
  1600. case 0:
  1601. return $lang['public'];
  1602. case 1:
  1603. return $lang['members'];
  1604. case 2:
  1605. return $lang['vip'];
  1606. case 8:
  1607. return $lang['staff'];
  1608. case 9:
  1609. return $lang['admin'];
  1610. default:
  1611. return $lang['public'];
  1612. }
  1613. }
  1614. function roomLock($room, $type){
  1615. global $data, $lang;
  1616. if($room['password'] != ''){
  1617. return '<img title="' . $lang['password'] . '" class="' . $type . '" src="' . $data['domain'] . '/default_images/rooms/locked_room.svg">';
  1618. }
  1619. }
  1620.  
  1621. // permission functions
  1622.  
  1623. function canEditRoom(){
  1624. if(boomRole(6) || boomAllow(9)){
  1625. return true;
  1626. }
  1627. }
  1628. function canManageRoom(){
  1629. if(boomRole(4) || boomAllow(9)){
  1630. return true;
  1631. }
  1632. }
  1633. function canUpload(){
  1634. global $data;
  1635. if(boomAllow($data['allow_image'])){
  1636. return true;
  1637. }
  1638. }
  1639. function canCover(){
  1640. global $data;
  1641. if(boomAllow($data['allow_cover'])){
  1642. return true;
  1643. }
  1644. }
  1645. function canGifCover(){
  1646. global $data;
  1647. if(boomAllow($data['allow_gcover'])){
  1648. return true;
  1649. }
  1650. }
  1651. function canPrivate(){
  1652. global $data;
  1653. if(boomAllow($data['allow_private'])){
  1654. return true;
  1655. }
  1656. }
  1657. function userCanPrivate($user){
  1658. global $data;
  1659. if(userBoomAllow($user, $data['allow_private'])){
  1660. return true;
  1661. }
  1662. }
  1663. function canRoom(){
  1664. global $data;
  1665. if(boomAllow($data['allow_room'])){
  1666. return true;
  1667. }
  1668. }
  1669. function canPlayer(){
  1670. global $data;
  1671. if(boomAllow($data['allow_player'])){
  1672. return true;
  1673. }
  1674. }
  1675. function canEmo(){
  1676. global $data;
  1677. if(boomAllow($data['emo_plus'])){
  1678. return true;
  1679. }
  1680. }
  1681. function canName(){
  1682. global $data;
  1683. if(boomAllow($data['allow_name'])){
  1684. return true;
  1685. }
  1686. }
  1687. function canDirect(){
  1688. global $data;
  1689. if(boomAllow($data['allow_direct'])){
  1690. return true;
  1691. }
  1692. }
  1693. function userCanDirect($user){
  1694. global $data;
  1695. if(userBoomAllow($user, $data['allow_direct'])){
  1696. return true;
  1697. }
  1698. }
  1699. function canColor(){
  1700. global $data;
  1701. if(boomAllow($data['allow_colors'])){
  1702. return true;
  1703. }
  1704. }
  1705. function canGrad(){
  1706. global $data;
  1707. if(boomAllow($data['allow_grad'])){
  1708. return true;
  1709. }
  1710. }
  1711. function canMood(){
  1712. global $data;
  1713. if(boomAllow($data['allow_mood'])){
  1714. return true;
  1715. }
  1716. }
  1717. function canVerify(){
  1718. global $data;
  1719. if(boomAllow($data['allow_verify'])){
  1720. return true;
  1721. }
  1722. }
  1723. function canHistory(){
  1724. global $data;
  1725. if(boomAllow($data['allow_history'])){
  1726. return true;
  1727. }
  1728. }
  1729. function canAvatar(){
  1730. global $data;
  1731. if(boomAllow($data['allow_avatar'])){
  1732. return true;
  1733. }
  1734. }
  1735. function canTheme(){
  1736. global $data;
  1737. if(boomAllow($data['allow_theme'])){
  1738. return true;
  1739. }
  1740. }
  1741. function canNameColor(){
  1742. global $data;
  1743. if(boomAllow($data['allow_name_color'])){
  1744. return true;
  1745. }
  1746. }
  1747. function canNameGrad(){
  1748. global $data;
  1749. if(boomAllow($data['allow_name_grad'])){
  1750. return true;
  1751. }
  1752. }
  1753. function canInvisible(){
  1754. global $data, $cody;
  1755. if(boomAllow($data['can_invisible'])){
  1756. return true;
  1757. }
  1758. }
  1759. function canModifyAvatar($user){
  1760. global $data, $cody;
  1761. if(!empty($user) && canAvatar() && canEditUser($user, $cody['can_modify_avatar'])){
  1762. return true;
  1763. }
  1764. }
  1765. function canModifyCover($user){
  1766. global $data, $cody;
  1767. if(!empty($user) && canCover() && canEditUser($user, $cody['can_modify_cover'])){
  1768. return true;
  1769. }
  1770. }
  1771. function canModifyName($user){
  1772. global $data, $cody;
  1773. if(!empty($user) && canName() && canEditUser($user, $cody['can_modify_name'])){
  1774. return true;
  1775. }
  1776. }
  1777. function canModifyMood($user){
  1778. global $data, $cody;
  1779. if(!empty($user) && canMood() && canEditUser($user, $cody['can_modify_mood'])){
  1780. return true;
  1781. }
  1782. }
  1783. function canModifyAbout($user){
  1784. global $data, $cody;
  1785. if(!empty($user) && canEditUser($user, $cody['can_modify_about'])){
  1786. return true;
  1787. }
  1788. }
  1789. function canModifyEmail($user){
  1790. global $data, $cody;
  1791. if(!empty($user) && isMember($user) && isSecure($user) && canEditUser($user, $cody['can_modify_email'], 1)){
  1792. return true;
  1793. }
  1794. }
  1795. function canModifyColor($user){
  1796. global $data, $cody;
  1797. if(!empty($user) && canNameColor() && canEditUser($user, $cody['can_modify_color'])){
  1798. return true;
  1799. }
  1800. }
  1801. function canModifyPassword($user){
  1802. global $data, $cody;
  1803. if(!empty($user) && isMember($user) && isSecure($user) && canEditUser($user, $cody['can_modify_password'], 1)){
  1804. return true;
  1805. }
  1806. }
  1807. function canUserHistory($user){
  1808. global $data, $cody;
  1809. if(!empty($user) && canEditUser($user, $data['can_view_history'], 1)){
  1810. return true;
  1811. }
  1812. }
  1813. function canViewTimezone($user){
  1814. global $data, $cody;
  1815. if(canEditUser($user, $cody['can_view_timezone'], 1)){
  1816. return true;
  1817. }
  1818. }
  1819. function canViewEmail($user){
  1820. global $data, $cody;
  1821. if(userHaveEmail($user) && canEditUser($user, $data['can_view_email'], 1)){
  1822. return true;
  1823. }
  1824. }
  1825. function canViewId($user){
  1826. global $data, $cody;
  1827. if(canEditUser($user, $data['can_view_id'], 1)){
  1828. return true;
  1829. }
  1830. }
  1831. function canViewIp($user){
  1832. global $data, $cody;
  1833. if(canEditUser($user, $data['can_view_ip'], 1)){
  1834. return true;
  1835. }
  1836. }
  1837. function canRoomPassword(){
  1838. global $data, $cody;
  1839. if(boomAllow($data['can_room_pass']) || boomRole(6)){
  1840. return true;
  1841. }
  1842. }
  1843. function canPostNews(){
  1844. global $data, $cody;
  1845. if(boomAllow($data['can_post_news'])){
  1846. return true;
  1847. }
  1848. }
  1849. function canBan(){
  1850. global $data, $cody;
  1851. if(boomAllow($data['can_ban'])){
  1852. return true;
  1853. }
  1854. }
  1855. function canBanUser($user){
  1856. global $data, $cody;
  1857. if(!empty($user) && canEditUser($user, $data['can_ban'], 1)){
  1858. return true;
  1859. }
  1860. }
  1861. function canDeadBan(){
  1862. global $data, $cody;
  1863. if(boomAllow($data['can_dead_ban'])){
  1864. return true;
  1865. }
  1866. }
  1867. function canDeadBanUser($user){
  1868. global $data, $cody;
  1869. if(!empty($user) && canEditUser($user, $data['can_dead_ban'], 1)){
  1870. return true;
  1871. }
  1872. }
  1873. function canKick(){
  1874. global $data, $cody;
  1875. if(boomAllow($data['can_kick'])){
  1876. return true;
  1877. }
  1878. }
  1879. function canKickUser($user){
  1880. global $data, $cody;
  1881. if(!empty($user) && canEditUser($user, $data['can_kick'], 1)){
  1882. return true;
  1883. }
  1884. }
  1885. function canDeleteNews(){
  1886. global $data, $cody;
  1887. if(boomAllow($data['can_delete_news'])){
  1888. return true;
  1889. }
  1890. }
  1891. function canDeleteWall(){
  1892. global $data, $cody;
  1893. if(boomAllow(8)){
  1894. return true;
  1895. }
  1896. }
  1897. function canDeleteLog(){
  1898. global $data, $cody;
  1899. if(boomAllow(8)){
  1900. return true;
  1901. }
  1902. }
  1903. function canDeleteRoomLog(){
  1904. global $data, $cody;
  1905. if(boomRole(4)){
  1906. return true;
  1907. }
  1908. }
  1909. function canClearRoom(){
  1910. global $data, $cody;
  1911. if(boomAllow(8) || boomRole(5)){
  1912. return true;
  1913. }
  1914. }
  1915.  
  1916. // DO NOT MODIFY THE MUTE PERMISSION THIS WILL MAKE CONFLICT IN THE SYSTEM.
  1917.  
  1918. function canMute(){
  1919. global $data, $cody;
  1920. if(boomAllow($data['can_mute'])){
  1921. return true;
  1922. }
  1923. }
  1924. function canMuteUser($user){
  1925. global $data, $cody;
  1926. if(!empty($user) && canEditUser($user, $data['can_mute'], 1)){
  1927. return true;
  1928. }
  1929. }
  1930.  
  1931. // My Work.. AhmedEx 2020.
  1932.  
  1933. //=== Coins system
  1934. function upgradeCoins(){
  1935. global $mysqli, $data;
  1936. if($data['user_rank'] < 8){
  1937. $mysqli->query("UPDATE boom_users SET user_coins = user_coins + 1 WHERE user_id = '{$data['user_id']}'");
  1938. }
  1939. elseif($data['user_rank'] >= 8){
  1940. $mysqli->query("UPDATE boom_users SET user_coins = user_coins + 1, staff_points = staff_points + 1 WHERE user_id = '{$data['user_id']}'");
  1941. }
  1942. }
  1943.  
  1944. //=== Levels system
  1945. function levelColors($lev){
  1946. if($lev < 10){
  1947. return 'under-10';
  1948. }
  1949. elseif($lev >= 10 && $lev < 20){
  1950. return 'under-20';
  1951. }
  1952. elseif($lev >= 20 && $lev < 40){
  1953. return 'under-40';
  1954. }
  1955. elseif($lev >= 40 && $lev < 50){
  1956. return 'under-50';
  1957. }
  1958. elseif($lev >= 50 && $lev < 60){
  1959. return 'under-60';
  1960. }
  1961. elseif($lev >= 60 && $lev < 70){
  1962. return 'under-70';
  1963. }
  1964. elseif($lev >= 70 && $lev < 80){
  1965. return 'under-80';
  1966. }
  1967. elseif($lev >= 80 && $lev < 90){
  1968. return 'under-90';
  1969. }
  1970. elseif($lev >= 90 && $lev < 100){
  1971. return 'under-100';
  1972. }
  1973. elseif($lev == 100){
  1974. return 'reach-100';
  1975. }
  1976. else{
  1977. return '';
  1978. }
  1979. }
  1980. function borderLevelColors($blev){
  1981. if($blev < 10){
  1982. return 'border-10';
  1983. }
  1984. elseif($blev >= 10 && $blev < 20){
  1985. return 'border-20';
  1986. }
  1987. elseif($blev >= 20 && $blev < 40){
  1988. return 'border-40';
  1989. }
  1990. elseif($blev >= 40 && $blev < 50){
  1991. return 'border-50';
  1992. }
  1993. elseif($blev >= 50 && $blev < 60){
  1994. return 'border-60';
  1995. }
  1996. elseif($blev >= 60 && $blev < 70){
  1997. return 'border-70';
  1998. }
  1999. elseif($blev >= 70 && $blev < 80){
  2000. return 'border-80';
  2001. }
  2002. elseif($blev >= 80 && $blev < 90){
  2003. return 'border-90';
  2004. }
  2005. elseif($blev >= 90 && $blev < 100){
  2006. return 'border-100';
  2007. }
  2008. elseif($blev == 100){
  2009. return 'reachborder-100';
  2010. }
  2011. else{
  2012. return '';
  2013. }
  2014. }
  2015. function proBorderLevelColors($pblev){
  2016. if($pblev < 10){
  2017. return 'pro_border-10';
  2018. }
  2019. elseif($pblev >= 10 && $pblev < 20){
  2020. return 'pro_border-20';
  2021. }
  2022. elseif($pblev >= 20 && $pblev < 40){
  2023. return 'pro_border-40';
  2024. }
  2025. elseif($pblev >= 40 && $pblev < 50){
  2026. return 'pro_border-50';
  2027. }
  2028. elseif($pblev >= 50 && $pblev < 60){
  2029. return 'pro_border-60';
  2030. }
  2031. elseif($pblev >= 60 && $pblev < 70){
  2032. return 'pro_border-70';
  2033. }
  2034. elseif($pblev >= 70 && $pblev < 80){
  2035. return 'pro_border-80';
  2036. }
  2037. elseif($pblev >= 80 && $pblev < 90){
  2038. return 'pro_border-90';
  2039. }
  2040. elseif($pblev >= 90 && $pblev < 100){
  2041. return 'pro_border-100';
  2042. }
  2043. elseif($pblev == 100){
  2044. return 'proreachborder-100';
  2045. }
  2046. else{
  2047. return '';
  2048. }
  2049. }
  2050.  
  2051. //=== Private options
  2052. function showPrivateBg(){
  2053. global $data;
  2054. $bg = $data['private_bg'];
  2055. if(!empty($data['private_bg'])){
  2056. return 'style="background-image:url(default_images/prv_bg/'. $bg .');background-size:cover;background-position: 100%;"';
  2057. }
  2058. }
  2059. function reqLevelFor($req){
  2060. global $data;
  2061. if($data['user_level'] >= $req){
  2062. return true;
  2063. }
  2064. }
  2065.  
  2066. //=== Profile colors
  2067. function proGradChoice($sel, $type, $min = 1){
  2068. global $cody;
  2069. $show_c = '';
  2070. switch($type){
  2071. case 4:
  2072. $c = 'pro_choice';
  2073. break;
  2074. default:
  2075. return false;
  2076. }
  2077. for ($n = $min; $n <= 80; $n++) {
  2078. $val = 'pgrad' . $n;
  2079. $back = 'prograd' . $n;
  2080. $add_sel = '';
  2081. if($val == $sel){
  2082. $add_sel = '<i class="bccheck fa fa-check"></i>';
  2083. }
  2084. $show_c .= '<div data="' . $val . '" class="color_switch ' . $c . ' ' . $back . '">' . $add_sel . '</div>';
  2085. }
  2086. return $show_c;
  2087. }
  2088. function proShadowGradChoice($sel, $type, $min = 1){
  2089. global $cody;
  2090. $show_c = '';
  2091. switch($type){
  2092. case 4:
  2093. $c = 'pro_shadow';
  2094. break;
  2095. default:
  2096. return false;
  2097. }
  2098. for ($n = $min; $n <= 45; $n++) {
  2099. $val = 'shgrad' . $n;
  2100. $back = 'shback' . $n;
  2101. $add_sel = '';
  2102. if($val == $sel){
  2103. $add_sel = '<i style="color:red;" class="bccheck fa fa-check"></i>';
  2104. }
  2105. $show_c .= '<div data="' . $val . '" class="color_switch ' . $c . ' ' . $back . '">' . $add_sel . '</div>';
  2106. }
  2107. return $show_c;
  2108. }
  2109.  
  2110. //=== Online/Offline Options
  2111. function userStatus($s){
  2112. global $mysqli, $data;
  2113. $lact = calMinutes(1);
  2114. if($s >= $lact){
  2115. echo '<div class="status_icon"><img src="default_images/status/online.svg"></div> <div class="status_text">متصل</div>';
  2116. }
  2117. if($s < $lact){
  2118. echo '<div class="status_icon"><img src="default_images/status/invisible.svg"></div><div class="status_text">غير متصل</div>';
  2119. }
  2120. }
  2121. function ownerCant($id){
  2122. global $data;
  2123. if($id == '1'){
  2124. echo '<div class="listing_text"><div class="status_text">لا يمكن عرض حالة صاحب الموقع</div></div>';
  2125. }
  2126. elseif($id == '11'){
  2127. echo '<div class="listing_text"><div class="status_text">لا يمكن عرض حالة مطور الموقع</div></div>';
  2128. }
  2129. else {
  2130. return true;
  2131. }
  2132. }
  2133.  
  2134. //=== Defence System
  2135. function checkChatGuests(){
  2136. global $data;
  2137. if($data['req_chat_guest'] == 1){
  2138. if($data['user_rank'] < $data['req_chat_user']){
  2139. return 'privoff';
  2140. }
  2141. else{
  2142. return '';
  2143. }
  2144. }
  2145. }
  2146.  
  2147. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement