2022-06-07 00:30:34 +03:00
< ? php
2022-12-19 20:26:14 +02:00
2023-01-12 02:58:26 +02:00
if ( ! defined ( 'GAME_VERSION' )) {
require_once '_incl_data/autoload.php' ;
}
2023-10-16 16:12:16 +03:00
use Clan\ClanInfo ;
2023-01-12 02:58:26 +02:00
use Core\Config ;
use Core\Database ;
2022-12-30 21:03:37 +02:00
use Core\Db ;
2023-01-18 12:51:06 +01:00
use DarksLight2\Training\TrainingManager ;
2022-12-19 20:26:14 +02:00
2023-01-12 02:58:26 +02:00
Config :: init ();
Database :: init ();
2022-12-19 20:26:14 +02:00
$u = User :: start ();
$filter = new Filter ();
$chat = new Chat ();
2022-07-01 12:45:43 +00:00
2023-02-13 19:24:48 +02:00
$code = PassGen :: intCode ();
2022-07-01 12:45:43 +00:00
if (
! isset ( $u -> info [ 'id' ]) ||
2023-08-16 01:48:29 +03:00
$u -> isBlocked () ||
! isset ( $_COOKIE [ 'login' ])
2022-07-01 12:45:43 +00:00
) {
exit ( json_encode ([ 'js' => 'top.location="bk?exit=' . $code . '";' ]));
}
if ( $u -> info [ 'bithday' ] == '01.01.1800' ) {
unset ( $_GET [ 'msg' ], $_POST [ 'msg' ], $_POST [ 'warnMsg' ]);
$_GET [ 'r3' ] = 1 ;
}
if ( $u -> info [ 'online' ] < time () - 60 ) {
2023-01-12 02:58:26 +02:00
Db :: sql ( 'update users set online = unix_timestamp() where id = ?' , [ $u -> info [ 'id' ]]);
2022-12-19 20:26:14 +02:00
$filter -> setOnline ( $u -> info [ 'online' ], $u -> info [ 'id' ]);
2022-07-01 12:45:43 +00:00
}
2023-10-16 13:58:02 +03:00
if ( isset ( $_POST [ 'delMsg' ]) && $u -> isModerator ()) {
2023-01-12 02:58:26 +02:00
$delmsgid = ( int ) $_POST [ 'delMsg' ];
if ( $delmsgid > 0 ) {
Db :: sql ( 'update chat set `delete` = ? where id = ?' , [ $u -> info [ 'id' ], $delmsgid ]);
2022-07-01 12:45:43 +00:00
} else {
2023-01-12 02:58:26 +02:00
Db :: sql ( 'update users set molch3 = unix_timestamp() + 3600 * 3 where id = ?' , [ - $delmsgid ]);
2022-07-01 12:45:43 +00:00
}
2023-01-12 02:58:26 +02:00
unset ( $delmsgid );
2022-07-01 12:45:43 +00:00
}
$r = [
'rnd' => $code ,
'rn' => null ,
'list' => null ,
'msg' => null ,
'js' => null ,
2022-12-19 20:26:14 +02:00
'xu' => 0 ,
2022-07-01 12:45:43 +00:00
];
2023-01-10 18:29:32 +02:00
2022-07-01 12:45:43 +00:00
if ( $u -> info [ 'battle' ] > 0 ) {
2023-02-13 19:24:48 +02:00
$btl = Db :: getValue ( 'select count(*) from battle where id = ? and time_over = 0' , [ $u -> info [ 'battle' ]]);
if ( empty ( $btl )) {
2022-07-01 12:45:43 +00:00
$r [ 'js' ] .= 'top.frames["main"].location="main.php";' ;
}
}
if ( isset ( $_POST [ 'msg' ]) && str_replace ( ' ' , '' , $_POST [ 'msg' ]) != '' ) {
$msg = [];
$_POST [ 'msg' ] = str_replace ( '\x3C' , '<' , $_POST [ 'msg' ]);
$_POST [ 'msg' ] = str_replace ( '\x3' , '>' , $_POST [ 'msg' ]);
2023-01-12 02:58:26 +02:00
function tolink ( $buf ) : string
2022-07-01 12:45:43 +00:00
{
$x = explode ( " " , $buf );
$newbuf = '' ;
for ( $j = 0 ; $j < count ( $x ); $j ++ ) {
2023-01-10 18:29:32 +02:00
$uname = '<Внутренняя ссылка>' ;
2022-07-01 12:45:43 +00:00
//
2023-08-16 01:48:29 +03:00
if ( strripos ( $x [ $j ], Config :: get ( 'host' ) . '/info' )) {
2022-07-01 12:45:43 +00:00
$ulogin = explode ( '/info/' , $x [ $j ]);
$ulogin = $ulogin [ 1 ];
2023-02-13 19:24:48 +02:00
$ulogin = Db :: getValue ( 'select login from users where id = ? or login = ?' , [ $ulogin , $ulogin ]);
if ( ! empty ( $ulogin )) {
$uname = '<span style="color: #831db7; "><Информация о "' . $ulogin . '"></span>' ;
2022-07-01 12:45:43 +00:00
}
2023-01-10 18:29:32 +02:00
} elseif ( strripos ( $x [ $j ], 'audio_1610649509.mp3' )) { //ТУТ аудио
2023-02-13 19:24:48 +02:00
$uname = '<span style="color: #FF851B; "><Голосовое сообщение></span>' ;
2022-07-01 12:45:43 +00:00
} elseif ( strripos ( $x [ $j ], 'new-combats.com/item/' )) {
$ulogin = explode ( '/item/' , $x [ $j ]);
$ulogin = $ulogin [ 1 ];
2023-02-13 19:24:48 +02:00
$ulogin = Db :: getValue ( 'select name from items_main where id = ?' , [ $ulogin ]);
if ( isset ( $ulogin )) {
$uname = '<span style="color: #5f9b00; "><Предмет "' . $ulogin . '"></span>' ;
2022-07-01 12:45:43 +00:00
} else {
2023-02-13 19:24:48 +02:00
$uname = '<span style="color: #5f9b00; "><Библиотека предметов></span>' ;
2022-07-01 12:45:43 +00:00
}
2023-08-16 01:48:29 +03:00
} elseif ( strripos ( $x [ $j ], Config :: get ( 'host' ) . '/news' )) {
2022-07-01 12:45:43 +00:00
$ulogin = explode ( '/news' , $x [ $j ]);
$ulogin = $ulogin [ 1 ];
$ulogin = ltrim ( $ulogin , '/' );
2023-02-13 19:24:48 +02:00
$ulogin = Db :: getValue ( 'select title from events_news where id = ?' , [ $ulogin ]);
if ( isset ( $ulogin )) {
$uname = '<span style="color: #b57300; "><Новость "' . $ulogin . '"></span>' ;
2022-07-01 12:45:43 +00:00
} else {
2023-02-13 19:24:48 +02:00
$uname = '<span style="color: #b57300; "><Новостная лента></span>' ;
2022-07-01 12:45:43 +00:00
}
2023-08-16 01:48:29 +03:00
} elseif ( strripos ( $x [ $j ], Config :: get ( 'host' ) . '/lib' )) {
2022-07-01 12:45:43 +00:00
$ulogin = explode ( '/lib' , $x [ $j ]);
$ulogin = $ulogin [ 1 ];
$ulogin = ltrim ( $ulogin , '/' );
$ulogin = rtrim ( $ulogin , '/' );
2023-02-13 19:24:48 +02:00
$ulogin = Db :: getValue ( 'select title from library_content where url_name = ? and moder > 0' , [ $ulogin ]);
if ( isset ( $ulogin )) {
$uname = '<span style="color: #4c6e00; "><Библиотека "' . $ulogin . '"></span>' ;
2022-07-01 12:45:43 +00:00
} else {
2023-02-13 19:24:48 +02:00
$uname = '<span style="color: #4c6e00; "><Библиотека></span>' ;
2022-07-01 12:45:43 +00:00
}
2023-08-16 01:48:29 +03:00
} elseif ( strripos ( $x [ $j ], Config :: get ( 'host' ) . '/forum' )) {
2022-07-01 12:45:43 +00:00
$ulogin = explode ( '/forum?read=' , $x [ $j ]);
$ulogin = $ulogin [ 1 ];
$ulogin = explode ( '&' , $ulogin );
$ulogin = $ulogin [ 0 ];
2023-02-13 19:24:48 +02:00
$ulogin = Db :: getValue ( 'select title from forum_msg where id = ? and `delete` = 0' , [ $ulogin ]);
if ( isset ( $ulogin )) {
$uname = '<span style="color: #0055b5; "><Форум "' . $ulogin . '"></span>' ;
2022-07-01 12:45:43 +00:00
} else {
$ulogin = explode ( '/forum?r=' , $x [ $j ]);
$ulogin = $ulogin [ 1 ];
$ulogin = explode ( '&' , $ulogin );
$ulogin = $ulogin [ 0 ];
2023-02-13 19:24:48 +02:00
$ulogin = Db :: getValue ( 'select name from forum_menu where id = ?' , [ $ulogin ]);
if ( isset ( $ulogin )) {
$uname = '<span style="color: #0055b5; "><Конференция форума "' . $ulogin . '"></span>' ;
2022-07-01 12:45:43 +00:00
} else {
2023-02-13 19:24:48 +02:00
$uname = '<span style="color: #0055b5; "><Форум проекта></span>' ;
2022-07-01 12:45:43 +00:00
}
}
}
//
2023-01-12 02:58:26 +02:00
$newbuf .= preg_match (
2023-08-16 01:48:29 +03:00
" /(https: \\ / \\ /)?(new-combats+ \\ .tech(([ \" '> \r \n \t ])|( \\ /([^ \" '> \r \n \t ]*)?)))/ " ,
2023-01-12 02:58:26 +02:00
$x [ $j ],
$ok
2023-02-13 19:24:48 +02:00
) ? str_replace ( $ok [ 2 ], " <small><a href=https:// $ok[2] target=_blank ><i> " . $uname . " </i></a></small> " , str_replace ( " https:// " , " " , $x [ $j ])) . " " : $x [ $j ] . " " ;
2022-07-01 12:45:43 +00:00
}
return $newbuf ;
}
2023-10-16 16:12:16 +03:00
$strSearch = [
[ '\\' , '"' , " ' " , '<' , '>' , ' ' , '>' , '<' , '\r' , '\b' , ' ' , ' ' ],
[ '::' , '[s1;]' , '[s2;]' , '[s3;]' , '[s4;]' , ' ' ,],
];
$strReplace = [
[ '\\\\' , '[s1;]' , '[s2;]' , '[s3;]' , '[s4;]' , ' ' , '[s4;]' , '[s3;]' ],
[ '' , '"' , '"' , '<' , '>' , ' ' ,],
];
2022-07-01 12:45:43 +00:00
2023-10-16 16:12:16 +03:00
$_POST [ 'msg' ] = $chat -> expworld ( $_POST [ 'msg' ], 120 );
$_POST [ 'msg' ] = str_replace ( $strSearch [ 0 ], $strReplace [ 0 ], $_POST [ 'msg' ]);
2023-08-16 03:05:57 +03:00
$_POST [ 'msg' ] = htmlspecialchars ( $_POST [ 'msg' ]);
2022-07-01 12:45:43 +00:00
$_POST [ 'msg' ] = str_replace ( '%usersmile%' , '' , $_POST [ 'msg' ]);
$_POST [ 'msg' ] = tolink ( $_POST [ 'msg' ]);
2023-10-16 16:12:16 +03:00
$_POST [ 'msg' ] = str_replace ( $strSearch [ 1 ], $strReplace [ 1 ], $_POST [ 'msg' ]);
2022-07-01 12:45:43 +00:00
2023-02-13 19:24:48 +02:00
$smg = Db :: getRow ( 'select * from chat where login = ? and time > unix_timestamp() - 20 order by time desc limit 1' , [ $u -> info [ 'login' ]]);
2022-07-01 12:45:43 +00:00
if ( $u -> info [ 'exp' ] < 499999999 ) {
2023-02-13 19:24:48 +02:00
$lmg = Db :: getValue ( 'select count(id) from chat where login = ? and time = unix_timestamp() - 5 limit 2' , [ $u -> info [ 'login' ]]);
2022-07-01 12:45:43 +00:00
} else {
2023-02-13 19:24:48 +02:00
$lmg = 0 ;
2022-07-01 12:45:43 +00:00
}
$testsmg = ' ' . $_POST [ 'msg' ] . ' ' ;
2023-08-16 03:05:57 +03:00
if ( ! empty ( $smg ) && $testsmg == $smg [ 'text' ] && $u -> info [ 'exp' ] > 100000 ) {
2022-07-01 12:45:43 +00:00
if ( $u -> info [ 'molch1' ] < time ()) {
2023-01-10 18:29:32 +02:00
//Молчанка за флуд на 5 минут
2022-07-01 12:45:43 +00:00
$u -> info [ 'molch1' ] = time () + 1200 ;
2023-07-31 20:06:51 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>Вы наказаны за спам на 20 минут </small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
2023-02-13 19:24:48 +02:00
Db :: sql ( 'update users set molch1 = ? where id = ?' , [ $u -> info [ 'molch1' ], $u -> info [ 'id' ]]);
Db :: sql ( 'update chat set `delete` = 1 where login = ?' , [ $u -> info [ 'login' ]]);
2022-07-01 12:45:43 +00:00
2023-03-31 21:30:14 +03:00
$_POST [ 'msg' ] = 'Я спамер ' . $u -> info [ 'login' ] . ' и меня нужно заблокировать!' ;
2023-01-18 12:51:06 +01:00
2023-02-13 21:13:01 +02:00
$training_manager = TrainingManager :: getInstance ();
2023-01-18 12:51:06 +01:00
$training_manager -> addPoint ( 'chat_first_quest' );
2023-07-31 20:06:51 +03:00
if ( preg_match ( " /to \ [(.*?) \ ]/ " , $_POST [ 'msg' ])) {
2023-01-18 12:51:06 +01:00
$training_manager -> addPoint ( 'chat_second_quest' );
}
2023-07-31 20:06:51 +03:00
if ( preg_match ( " /private \ [(.*?) \ ]/ " , $_POST [ 'msg' ])) {
2023-01-18 12:51:06 +01:00
$training_manager -> addPoint ( 'chat_third_quest' );
}
2023-01-28 04:24:37 +02:00
$cmsg = new ChatMessage ();
$cmsg -> setInvis ( $u -> info [ 'invis' ]);
$cmsg -> setDa ( 1 );
$cmsg -> setType ( 6 );
$cmsg -> setColor ( '#f00' );
$cmsg -> setText ( " Я спамер { $u -> info [ 'login' ] } и меня нужно заблокировать " . Config :: get ( 'https' ) . '/info/' . $u -> info [ 'id' ]);
$chat -> sendMsg ( $cmsg );
$cmsg -> setLogin ( $u -> info [ 'login' ]);
$cmsg -> setType ( 6 );
$cmsg -> setText ( 'Это супер проект! Всем успехов!' );
$cmsg -> setColor ( '#000' );
$chat -> sendMsg ( $cmsg );
2022-07-01 12:45:43 +00:00
}
2023-02-13 19:24:48 +02:00
} elseif ( $lmg > 0 ) {
2023-07-31 20:06:51 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>Вы не можете отправлять так часто сообщения... </small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
if ( $u -> info [ 'molch1' ] < time ()) {
if ( $u -> info [ 'molch1' ] < - 5 ) {
$u -> info [ 'molch1' ] = time () + 300 ;
2023-07-31 20:06:51 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>Вы наказаны за флуд на 5 минут </small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
} elseif ( $u -> info [ 'molch1' ] < 0 ) {
$u -> info [ 'molch1' ] -- ;
} else {
$u -> info [ 'molch1' ] = - 1 ;
}
2023-08-16 01:48:29 +03:00
Db :: sql ( 'update users set molch1 = ? where id = ?' , [ $u -> info [ 'molch1' ], $u -> info [ 'id' ]]);
2022-07-01 12:45:43 +00:00
}
2022-12-19 20:26:14 +02:00
} elseif (( preg_match ( " /private \ [(.*?) \ ]/ " , $_POST [ 'msg' ], $msg [ 'to' ]) || preg_match (
" /private \ [(.*?) \ ]/ " , $_POST [ 'msg' ], $msg [ 'to' ]
2023-08-16 01:48:29 +03:00
)) && $u -> info [ 'exp' ] < 150000 && ! $u -> isAdmin ()) {
2023-07-31 20:06:51 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>Вы не можете отправлять приват до достижения 150000 опыта.</small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
} else {
2023-01-10 18:29:32 +02:00
//Записываем данные
2022-07-01 12:45:43 +00:00
$msg [ 'spam' ] = 0 ;
$msg [ 'type' ] = 1 ;
$msg [ 'molch' ] = 0 ;
2023-02-02 17:39:42 +02:00
2022-07-01 12:45:43 +00:00
$msg [ 'cancel' ] = 0 ;
$msg [ 'delete' ] = 0 ;
$msg [ 'to' ] = '' ;
$msg [ 'da' ] = 0 ;
2023-01-10 18:29:32 +02:00
//Нормируем типы сообщений
2022-07-01 12:45:43 +00:00
if ( preg_match ( " /private \ [(.*?) \ ]/ " , $_POST [ 'msg' ], $msg [ 'to' ])) {
$msg [ 'to' ] = $msg [ 'to' ][ 1 ];
$_POST [ 'msg' ] = str_replace ( 'private[' . $msg [ 'to' ] . ']' , 'private [' . $msg [ 'to' ] . ']' , $_POST [ 'msg' ]);
$msg [ 'to' ] = '' ;
} elseif ( preg_match ( " /to \ [(.*?) \ ]/ " , $_POST [ 'msg' ], $msg [ 'to' ])) {
$msg [ 'to' ] = $msg [ 'to' ][ 1 ];
$_POST [ 'msg' ] = str_replace ( 'to[' . $msg [ 'to' ] . ']' , 'to [' . $msg [ 'to' ] . ']' , $_POST [ 'msg' ]);
$msg [ 'to' ] = '' ;
}
if ( preg_match ( " /private \ [(.*?) \ ]/ " , $_POST [ 'msg' ], $msg [ 'to' ])) {
$msg [ 'to' ] = trim ( $msg [ 'to' ][ '1' ], ' ' );
$msg [ 'type' ] = 3 ;
$_POST [ 'msg' ] = str_replace ( 'private [' . $msg [ 'to' ] . ']' , ' ' , $_POST [ 'msg' ]);
} elseif ( preg_match ( " /to \ [(.*?) \ ]/ " , $_POST [ 'msg' ], $msg [ 'to' ])) {
$msg [ 'to' ] = trim ( $msg [ 'to' ][ '1' ], ' ' );
$msg [ 'type' ] = 2 ;
$_POST [ 'msg' ] = str_replace ( 'to [' . $msg [ 'to' ] . ']' , ' ' , $_POST [ 'msg' ]);
}
2023-01-10 18:29:32 +02:00
if ( $u -> info [ 'admin' ] == 0 ) { //ТУТ SPAM
2023-08-16 01:48:29 +03:00
if ( $msg [ 'to' ] != '' && ! isset ( $admq ) && $msg [ 'type' ] == 3 ) {
$admq = Db :: getValue ( 'select id from users where login = ? and admin > 0' , [ $msg [ 'to' ]]);
2022-07-01 12:45:43 +00:00
}
2023-08-16 01:48:29 +03:00
if ( ! isset ( $admq )) {
2023-01-10 18:29:32 +02:00
$msg [ 'fspam' ] = $filter -> spamFiltr ( str_replace ( 'точка' , '.' , str_replace ( 'ру' , 'ru' , $_POST [ 'msg' ])));
2022-07-01 12:45:43 +00:00
if ( $msg [ 'fspam' ] != '0' ) {
$msg [ 'spam' ] = 1 ;
$msg [ 'delete' ] = 1 ;
2023-10-16 16:12:16 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>В нашем чате запрещается сообщать ссылки на атльтернативные проекты.
Повторные попытки могут привести к блокировке персонажа.</small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
}
if ( $msg [ 'spam' ] == 1 && $u -> info [ 'molch1' ] < time () && $u -> info [ 'admin' ] == 0 ) {
2022-12-19 20:26:14 +02:00
$mban = $u -> testAction (
'`uid` = "' . $u -> info [ 'id' ] . '" AND `time` >= ' . strtotime (
'now 00:00:00'
) . ' AND `vars` = "msg_bans" LIMIT 1' , 1
);
2022-07-01 12:45:43 +00:00
if ( ! isset ( $mban [ 'id' ])) {
$u -> addAction ( time (), 'msg_bans' , '1' );
$mban [ 'vals' ] = 0 ;
} else {
2023-08-16 01:48:29 +03:00
Db :: sql ( 'update actions set vals = vals + 1 where id = ?' , [ $mban [ 'id' ]]);
2022-07-01 12:45:43 +00:00
$msg [ 'delete' ] = time ();
}
if ( $mban [ 'vals' ] + 1 < 2 ) {
$msg [ 'fspam' ] = str_replace ( '%' , '</b>,<b>' , $msg [ 'fspam' ]);
$msg [ 'fspam' ] = '<b>' . ltrim ( $msg [ 'fspam' ], '0</b>,<b>' ) . '</b>' ;
2023-10-16 16:12:16 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>В нашем чате запрещается сообщать ссылки на атльтернативные проекты.
Запрещенные слова: ' . $msg [ 'fspam' ] . '. Предупреждения [' . ( $mban [ 'vals' ] + 1 ) . '/1]</small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
} else {
2023-10-16 16:12:16 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>В нашем чате запрещается сообщать ссылки на атльтернативные проекты.
Вы наказаны за нарушение правил общения.</small>","Black","1","1","0"]);' ;
2023-01-28 04:24:37 +02:00
$cmsg = new ChatMessage ();
$cmsg -> setLogin ( 'Комментатор' );
$cmsg -> setText ( " Персонаж { $u -> info [ 'login' ] } [ { $u -> info [ 'level' ] } ] был наказан за нарушение правил общения. " );
$cmsg -> setType ( 6 );
$chat -> sendMsg ( $cmsg );
$molchTime = time () + 60 * 60 ;
2023-08-16 01:48:29 +03:00
Db :: sql ( 'update users set molch1 = ?, molch2 = ?, info_delete = ? where id = ?' , [ $molchTime , $molchTime , $molchTime , $u -> info [ 'id' ]]);
$rtxt = ' "' . $u -> info [ 'login' ] . '" <small style="color: red;">Автоинформатор</small>: ' . $msg [ 'text' ] . ' [' . $msg [ 'fspam' ] . '].' ;
Delo :: add ( 0 , $u -> info [ 'login' ], $u -> info [ 'id' ], $rtxt );
2022-07-01 12:45:43 +00:00
}
}
}
2023-02-01 12:21:36 +02:00
unset ( $admq );
2022-07-01 12:45:43 +00:00
}
2023-08-16 03:05:57 +03:00
if ( ! empty ( $pl [ 'login' ])) {
$qix = Db :: getValue ( 'select id from friends where ignor > 0 and login_ignor = ? and (user_ignor = ? or user = ?)' , [ $pl [ 'login' ], $u -> info [ 'login' ], $u -> info [ 'id' ]]);
}
2023-08-16 01:48:29 +03:00
if ( isset ( $qix )) {
2023-08-16 03:05:57 +03:00
if ( is_array ( $msg [ 'to' ])) { // каким хером тут массив?
$msg [ 'to' ] = '' ;
}
2023-10-16 16:12:16 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<b>Вас добавили в игнор</b>:
Вы не можете отправлять сообщения персонажу "' . htmlspecialchars ( $msg [ 'to' ]) . '".","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
$msg [ 'cancel' ] ++ ;
}
if ( $msg [ 'type' ] == 3 && $msg [ 'to' ] == 'klan' ) {
if ( $u -> info [ 'clan' ] == 0 ) {
2023-10-16 16:12:16 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>Вы не являетесь частью одного из <b>Кланов</b>
и не можете общаться по этому каналу.</small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
$msg [ 'cancel' ] ++ ;
} else {
$msg [ 'to' ] = 'k' . $u -> info [ 'clan' ];
$msg [ 'da' ] = 1 ;
}
}
if ( $u -> info [ 'molch1' ] > time ()) {
2023-08-16 01:48:29 +03:00
if ( $msg [ 'to' ] != '' && ! isset ( $admq ) && $msg [ 'type' ] === 3 ) {
$admq = Db :: getValue ( 'select id from users where login = ? and admin > 0' , [ $msg [ 'to' ]]);
2022-07-01 12:45:43 +00:00
}
2023-08-16 01:48:29 +03:00
if ( ! isset ( $admq )) {
2022-07-01 12:45:43 +00:00
$msg [ 'molch' ] = 1 ;
}
}
if ( $msg [ 'cancel' ] == 0 ) {
if ( is_array ( $msg [ 'to' ])) {
$msg [ 'to' ] = '' ;
}
if ( $msg [ 'type' ] == 3 && $msg [ 'da' ] > 0 ) {
$msg [ 'type' ] = - 3 ;
}
2023-10-16 13:52:58 +03:00
$msw = $chat -> smileText ( $_POST [ 'msg' ], $msg [ 'to' ], $u -> info [ 'room' ]);
2022-07-01 12:45:43 +00:00
$nosend = 0 ;
if ( $msw ) {
$_POST [ 'msg' ] = $msw ;
$msg [ 'to' ] = '' ;
$msg [ 'type' ] = 21 ;
if ( $msw == 'USER IS FALSE' ) {
2023-07-31 20:06:51 +03:00
$r [ 'js' ] .= 'chat.sendMsg(["new","' . time () . '","6","","' . $u -> info [ 'login' ] . '","<small>Персонажа нет в данной комнате.</small>","Black","1","1","0"]);' ;
2022-07-01 12:45:43 +00:00
$nosend = 1 ;
}
2023-10-16 13:52:58 +03:00
} elseif ( str_starts_with ( $_POST [ 'msg' ], '/e ' )) {
2022-07-01 12:45:43 +00:00
$msg [ 'type' ] = 21 ;
$_POST [ 'msg' ] = ltrim ( $_POST [ 'msg' ], '/e ' );
2023-10-16 13:52:58 +03:00
} elseif ( str_starts_with ( $_POST [ 'msg' ], '/е ' )) { // это кириллица!!
2022-07-01 12:45:43 +00:00
$msg [ 'type' ] = 21 ;
2023-01-10 18:29:32 +02:00
$_POST [ 'msg' ] = ltrim ( $_POST [ 'msg' ], '/е ' );
2023-10-16 13:52:58 +03:00
} elseif ( str_starts_with ( $_POST [ 'msg' ], ' /e ' )) {
2022-07-01 12:45:43 +00:00
$msg [ 'type' ] = 21 ;
$_POST [ 'msg' ] = ltrim ( $_POST [ 'msg' ], ' /e ' );
2023-10-16 13:52:58 +03:00
} elseif ( str_starts_with ( $_POST [ 'msg' ], ' /е ' )) { // это кириллица!!
2022-07-01 12:45:43 +00:00
$msg [ 'type' ] = 21 ;
2023-01-10 18:29:32 +02:00
$_POST [ 'msg' ] = ltrim ( $_POST [ 'msg' ], ' /е ' );
2022-07-01 12:45:43 +00:00
}
if ( $nosend == 0 ) {
2023-01-10 20:14:47 +02:00
//Именные смайлики
2023-01-10 18:29:32 +02:00
$_POST [ 'msg' ] = str_replace ( '%usersmile%-' , '%usе rsmilе %-' , $_POST [ 'msg' ]);
2022-07-01 12:45:43 +00:00
$usml = explode ( ',' , $u -> info [ 'add_smiles' ]);
$i = 0 ;
while ( $i < count ( $usml )) {
2022-12-19 20:26:14 +02:00
$_POST [ 'msg' ] = str_replace (
':' . $usml [ $i ] . ':' , ':%usersmile%-' . $usml [ $i ] . ':' , $_POST [ 'msg' ]
);
2022-07-01 12:45:43 +00:00
$i ++ ;
}
2023-01-28 04:24:37 +02:00
$cmsg = new ChatMessage ();
$cmsg -> setInvis ( $u -> info [ 'invis' ]);
$cmsg -> setDa ( $msg [ 'da' ]);
$cmsg -> setDelete ( $msg [ 'delete' ]);
$cmsg -> setMolch ( $msg [ 'molch' ]);
2023-02-02 17:39:42 +02:00
$cmsg -> setLogin ( $u -> info [ 'login' ]);
2023-01-28 04:24:37 +02:00
$cmsg -> setTo ( $msg [ 'to' ]);
$cmsg -> setRoom ( $u -> info [ 'room' ]);
$cmsg -> setType ( $msg [ 'type' ]);
$cmsg -> setSpam ( $msg [ 'spam' ]);
$cmsg -> setText ( $_POST [ 'msg' ]);
2023-02-02 17:39:42 +02:00
$cmsg -> setColor ( $u -> info [ 'chatColor' ]);
2023-01-28 04:24:37 +02:00
$chat -> sendMsg ( $cmsg );
2022-07-01 12:45:43 +00:00
}
}
2023-01-10 18:29:32 +02:00
if ( $msg [ 'type' ] == 2 && mb_convert_case ( $msg [ 'to' ], MB_CASE_LOWER ) == 'комментатор' ) {
2023-01-28 04:24:37 +02:00
$cmsg = new ChatMessage ();
2023-01-10 18:29:32 +02:00
if ( preg_match ( " /анекдот/i " , mb_convert_case ( $_POST [ 'msg' ], MB_CASE_LOWER ))) {
2022-07-01 12:45:43 +00:00
$text_com = '' ;
2023-10-16 16:12:16 +03:00
$sp_all = Db :: getRow ( 'select * from a_com_anekdot order by rand() limit 1' );
if ( isset ( $sp_all [ 'id' ])) {
$text_com = $sp_all [ 'text' ];
$text_com = str_replace ( " <br> " , " <br> " , $text_com );
$text_com = str_replace ( " <br /> " , " <br /> " , $text_com );
$text_com = str_ireplace ( " \r \n " , " " , $text_com );
$text_com = str_replace ( " " , " " , $text_com );
$text_com = '<b style="color: red">Анекдот</b>:<br> ' . $text_com . '<br>' ;
2022-07-01 12:45:43 +00:00
} else {
2023-10-16 16:12:16 +03:00
$text_com = 'Анекдот из головы вылетел...' ;
2022-07-01 12:45:43 +00:00
}
2023-10-16 16:12:16 +03:00
Db :: sql ( 'insert into a_com_act (act, time, uid) values (0, unix_timestamp() + 60, ?)' , [ $u -> info [ 'id' ]]);
2022-07-01 12:45:43 +00:00
if ( $text_com != '' ) {
2023-01-28 04:24:37 +02:00
$cmsg -> setText ( $text_com );
2022-07-01 12:45:43 +00:00
}
} else {
2023-04-15 22:18:30 +03:00
include_once 'commentator.php' ;
2023-10-16 16:12:16 +03:00
if ( ! empty ( $comment )) {
2023-01-28 04:24:37 +02:00
$cmsg -> setText ( $comment );
2022-07-01 12:45:43 +00:00
}
}
2023-01-28 04:24:37 +02:00
if ( $cmsg -> getText ()) {
$cmsg -> setLogin ( 'Комментатор' );
$cmsg -> setTo ( $u -> info [ 'login' ]);
$cmsg -> setRoom ( $u -> info [ 'room' ]);
$cmsg -> setType ( 2 );
$chat -> sendMsg ( $cmsg );
}
2022-07-01 12:45:43 +00:00
}
2023-04-15 22:18:30 +03:00
Db :: sql ( 'update users set afk = default, dnd = default, timeMain = unix_timestamp() where id = ?' , [ $u -> info [ 'id' ]]);
2022-07-01 12:45:43 +00:00
}
}
2023-08-16 03:05:57 +03:00
$ar_id = 0 ;
$ar_lvl = 0 ;
$ar_all = '0' ;
2023-01-10 18:29:32 +02:00
//Получаем список онлайн
2023-08-16 03:05:57 +03:00
if ( ! empty ( $_GET [ 'r1' ])) {
2023-02-13 19:24:48 +02:00
// $_GET['r3'] передаётся из onlineList.js как переключатель "все пользователи\пользователи в комнате".
define ( 'BOT_ROOM' , 303 );
2023-08-16 03:05:57 +03:00
2022-07-01 12:45:43 +00:00
$usl = [];
$cw = [];
$usid = [];
2023-08-16 01:48:29 +03:00
2023-02-13 19:24:48 +02:00
$onlineListQuery = 'select
users.id, pass, sex, dnow, timeMain, bot, atack, afk, dnd, banned, molch1,
room, city, cityreg, online, align, clan, login, level, inTurnir, battle, invis, inUser, x, y
from users left join stats on users.id = stats.id
where
(
(room = ? and ' . ( int ) $_GET [ 'r3' ] . ' != 1) or
(' . ( int ) $_GET [ 'r3' ] . ' = 1 and pass not like ?)
) and
mail != ? and
room != ?
order by inUser desc, online desc, login desc' ;
2023-08-16 01:48:29 +03:00
$usersOnline = Db :: getRows ( $onlineListQuery , [ $u -> info [ 'room' ], '%saint%' , '' , BOT_ROOM ]);
foreach ( $usersOnline as $onlineUser ) {
2022-07-01 12:45:43 +00:00
$ysee = 1 ;
2023-08-16 01:48:29 +03:00
if ( $onlineUser [ 'inUser' ] > 0 ) {
if ( $onlineUser [ 'inTurnir' ] == 0 ) {
2022-07-01 12:45:43 +00:00
$ysee = 0 ;
} else {
2023-08-16 01:48:29 +03:00
if ( $onlineUser [ 'online' ] < time () - 120 ) {
User :: setOnline ( $onlineUser [ 'id' ]);
2022-07-01 12:45:43 +00:00
}
}
} else {
2023-08-16 01:48:29 +03:00
if ( $onlineUser [ 'inTurnir' ] > 0 ) {
2022-07-01 12:45:43 +00:00
$ysee = 0 ;
}
}
2023-08-16 01:48:29 +03:00
if ( ! isset ( $usl [ $onlineUser [ 'login' ]])) {
2022-07-01 12:45:43 +00:00
$ysee = 1 ;
}
if (
(
( int ) $_GET [ 'r3' ] != 1 &&
2023-08-16 01:48:29 +03:00
$u -> info [ 'dnow' ] != $onlineUser [ 'dnow' ]
2022-07-01 12:45:43 +00:00
) ||
(
2023-08-16 01:48:29 +03:00
$onlineUser [ 'room' ] >= 362 &&
$onlineUser [ 'room' ] <= 366 &&
2022-07-01 12:45:43 +00:00
( int ) $_GET [ 'r3' ] != 1 &&
(
2023-08-16 01:48:29 +03:00
$onlineUser [ 'x' ] != $u -> info [ 'x' ] ||
$onlineUser [ 'y' ] != $u -> info [ 'y' ] ||
$onlineUser [ 'room' ] != $u -> info [ 'room' ]
2022-07-01 12:45:43 +00:00
)
) ||
2023-08-16 01:48:29 +03:00
! empty ( $usid [ $onlineUser [ 'login' ]])
2022-07-01 12:45:43 +00:00
) {
$ysee = 0 ;
}
2023-08-16 01:48:29 +03:00
if ( isset ( $onlineUser [ 'login' ])) {
$usl [ $onlineUser [ 'login' ]] = $onlineUser [ 'id' ];
}
2022-07-01 12:45:43 +00:00
if (
(
2023-08-16 01:48:29 +03:00
$onlineUser [ 'online' ] > time () - 520 ||
$onlineUser [ 'inUser' ] > 0
2022-07-01 12:45:43 +00:00
) &&
(
2023-08-16 01:48:29 +03:00
$onlineUser [ 'bot' ] != 1 ||
$onlineUser [ 'pass' ] == '212121q'
2022-07-01 12:45:43 +00:00
) &&
2023-08-16 01:48:29 +03:00
$onlineUser [ 'banned' ] == 0 &&
2022-07-01 12:45:43 +00:00
$ysee == 1
) {
2023-08-16 01:48:29 +03:00
$usid [ $onlineUser [ 'login' ]] = true ;
if ( $onlineUser [ 'invis' ] != 1 && $onlineUser [ 'invis' ] < time ()) {
if ( $onlineUser [ 'clan' ] > 0 ) {
if ( $u -> info [ 'clan' ] > 0 && $onlineUser [ 'clan' ] != $u -> info [ 'clan' ]) {
if ( ! isset ( $cw [ 'war' ][ $onlineUser [ 'clan' ]][ $u -> info [ 'clan' ]])) {
2023-10-16 16:12:16 +03:00
$onlineUser [ 'cwar' ] = Db :: getRow ( 'select id, type from clan_wars where clan1 in (?,?) and clan2 in (?,?) and clan1 != clan2 and time_finish > unix_timestamp()' ,
[ $u -> info [ 'clan' ], $onlineUser [ 'clan' ], $u -> info [ 'clan' ], $onlineUser [ 'clan' ],]);
2023-08-16 01:48:29 +03:00
if ( isset ( $onlineUser [ 'cwar' ][ 'id' ])) {
$cw [ 'war' ][ $onlineUser [ 'clan' ]][ $u -> info [ 'clan' ]] = $onlineUser [ 'cwar' ][ 'type' ];
2022-07-01 12:45:43 +00:00
} else {
2023-08-16 01:48:29 +03:00
$cw [ 'war' ][ $onlineUser [ 'clan' ]][ $u -> info [ 'clan' ]] = 0 ;
2022-07-01 12:45:43 +00:00
}
}
2023-08-16 01:48:29 +03:00
if ( $cw [ 'war' ][ $onlineUser [ 'clan' ]][ $u -> info [ ' clan ']] > 0) {
$onlineUser[' atack '] = $cw[' war '][$onlineUser[' clan ']][$u->info[' clan ']];
2022-07-01 12:45:43 +00:00
}
}
2023-08-16 01:48:29 +03:00
if (!isset($cw[$onlineUser[' clan ']])) {
2023-10-16 16:12:16 +03:00
$onlineUser[' clan '] = ClanInfo::getNameById($onlineUser[' clan ']);
2022-07-01 12:45:43 +00:00
} else {
2023-08-16 01:48:29 +03:00
$onlineUser[' clan '] = $cw[$onlineUser[' clan ']];
2022-07-01 12:45:43 +00:00
}
}
2023-08-16 01:48:29 +03:00
if ($onlineUser[' atack '] > time() || $onlineUser[' atack '] == 1 || $onlineUser[' atack '] == 2) {
if ($onlineUser[' atack '] != 2) {
$onlineUser[' atack '] = 1;
2022-07-01 12:45:43 +00:00
}
} else {
2023-08-16 01:48:29 +03:00
$onlineUser[' atack '] = 0;
2022-07-01 12:45:43 +00:00
}
2023-08-16 01:48:29 +03:00
$trvm = Db::getValue(' select name from eff_users where uid = ? and id_eff in ( 4 , 6 ) order by id_eff limit 1 ', [$onlineUser[' id ']]);
$r[' list '] .= ' " ' . $r['xu'] . ' " : [ " ' . $onlineUser['id'] . ' " , " ' . $onlineUser['login'] . ' " , " ' . $onlineUser['level'] . ' " , " ' . $onlineUser['align'] .
' " , " ' . $onlineUser['clan'] . ' " , " ' . $onlineUser['cityreg'] . ' " , " ' . $onlineUser['city'] . ' " , " ' . $onlineUser['room'] .
' " , " ' . $onlineUser['afk'] . ' " , " ' . $onlineUser['dnd'] . ' " , " ' . $onlineUser['banned'] . ' " , " ' . $onlineUser['molch1'] . ' " , " ' .
$onlineUser['battle'] . ' " , " ' . $onlineUser['atack'] . ' " , " ' . $trvm . ' " , " ' . ( $onlineUser['sex'] * 0) . ' " ], ';
$ar_id += $onlineUser[' id '];
$ar_lvl += $onlineUser[' level '];
$ar_all .= $onlineUser[' align '] . $onlineUser[' clan '] . $onlineUser[' molch1 '] . $onlineUser[' banned '] . $onlineUser[' battle '] . 1;
2022-12-19 20:26:14 +02:00
2022-07-01 12:45:43 +00:00
}
$r[' xu ']++;
}
}
2023-08-16 01:48:29 +03:00
unset($onlineUser, $sp);
2022-07-01 12:45:43 +00:00
$r[' list '] = rtrim($r[' list '], ' , ');
$r[' list '] = ' { ' . $r[' list '] . ' } ';
}
2023-01-10 18:29:32 +02:00
//Получаем сообщения
2022-07-01 12:45:43 +00:00
if (isset($_GET[' mid ']) && !isset($_POST[' mid '])) {
$_POST[' mid '] = $_GET[' mid '];
}
$i = 0;
$l = 0;
2023-10-16 16:12:16 +03:00
foreach ($chat->getMessages((int)$_POST[' mid '], $u->info[' login ']) as $pl) {
2022-07-01 12:45:43 +00:00
if ($pl[' delete '] > 0) {
$r[' msg '] .= ' , " m' . $i . ' " : [ " ' . $pl['id'] . ' " , " " , " delete " , " " , " " , " " , " " , " " , " " , " 0 " , " 0 " , " 0 " , " 1 " , " " , " " ] ';
}
$see = 1;
2023-10-16 13:58:02 +03:00
if ($pl[' type '] == 8 && $u->isModerator()) {
2022-07-01 12:45:43 +00:00
$see = 0;
}
if (($pl[' type '] > 0 && $pl[' type '] < 4) || $pl[' type '] == -3) {
$pl[' room '] = $u->info[' room '];
}
2023-10-16 16:12:16 +03:00
//fixme $pl[' global '] - глобалка по всем городам. Если нет городов, то не нужна и глобалка. Теоретически.
2023-01-10 18:29:32 +02:00
//Проверки на доступ к просмотру
2022-07-01 12:45:43 +00:00
if (
2023-10-16 16:12:16 +03:00
(
(($pl[' type '] == 3 || $pl[' type '] == 4) && $pl[' global '] == 1) ||
(($pl[' type '] == 5 || $pl[' type '] == 6 || $pl[' type '] == 8 && $u->isModerator()) && $pl[' global '] == 1) ||
($pl[' type '] == 7 && $pl[' room '] == $u->info[' room ']) ||
($pl[' type '] == 6 && $pl[' global '] == 1) ||
2022-07-01 12:45:43 +00:00
$pl[' type '] == 9 ||
$pl[' type '] == 10
) &&
2023-10-16 16:12:16 +03:00
$pl[' to '] != ' ' && $pl[' login '] != $u->info[' login '] && $pl[' to '] != $u->info[' login ']
2022-07-01 12:45:43 +00:00
) {
$n = 0;
$ex = explode(' , ', $pl[' to ']);
$j = 0;
while ($j < count($ex)) {
if (trim($ex[$j], ' ') == $u->info[' login ']) {
$n++;
}
$j++;
}
if ($n == 0) {
$see = 0;
}
unset($n, $j, $ex);
}
2023-01-10 18:29:32 +02:00
//Клановое сообщение (по всем городам)
2023-10-16 16:12:16 +03:00
if ($pl[' type '] == -3 && ($pl[' to '] == ' k ' . $u->info[' clan '] || $u->isAdmin())) {
2022-07-01 12:45:43 +00:00
$pl[' type '] = 3;
if ($pl[' to '] == ' k ' . $u->info[' clan ']) {
$pl[' to '] = ' klan ';
}
$see = 1;
} elseif ($pl[' type '] == -3) {
$see = 0;
}
2023-01-10 18:29:32 +02:00
//Системное сообщение только в этой комнате
2022-07-01 12:45:43 +00:00
if (
$pl[' type '] == 6 &&
$pl[' room '] > 0 &&
$pl[' room '] != $u->info[' room '] &&
$pl[' to '] == ' '
) {
$see = 0;
}
2023-01-10 18:29:32 +02:00
//Сообщение с молчанкой
2022-07-01 12:45:43 +00:00
if ($pl[' molch '] > 0) {
$see = 0;
}
2023-01-10 18:29:32 +02:00
//Сообщение отправлено в другой комнате
2022-07-01 12:45:43 +00:00
if (
2023-10-16 16:12:16 +03:00
($pl[' type '] == 1 || $pl[' type '] == 2) &&
($pl[' room '] != $u->info[' room ']) &&
($pl[' global '] == 0 || $_COOKIE[' chatCfg11 '] == 0)
2022-07-01 12:45:43 +00:00
) {
$see = 0;
}
2023-01-10 18:29:32 +02:00
//Глобал
2023-10-16 16:12:16 +03:00
if ($pl[' global '] == 1 && $pl[' type '] != -3) {
2022-07-01 12:45:43 +00:00
$see = 1;
}
2023-01-10 18:29:32 +02:00
//Пещерное сообщение
2022-07-01 12:45:43 +00:00
if ($pl[' dn '] > 0 && $u->info[' dnow '] != $pl[' dn ']) {
$see = 0;
}
2023-10-16 16:12:16 +03:00
if ($pl[' login '] != $u->info[' login '] && $pl[' nosee '] != 0 && $u->info[' id '] != $pl[' nosee '] && !$u->isModerator()) {
2022-07-01 12:45:43 +00:00
$see = 0;
} else {
if ($pl[' nosee '] != 0 && $pl[' login '] != $u->info[' login ']) {
2023-01-10 18:29:32 +02:00
$noseein = ' скрыто ';
2022-07-01 12:45:43 +00:00
if ($u->info[' id '] == $pl[' nosee ']) {
2023-01-10 18:29:32 +02:00
$noseein = ' ваш реферал ';
2022-07-01 12:45:43 +00:00
}
2023-10-16 16:12:16 +03:00
$pl[' text '] = ' < span style = " padding:0 5px 0 5px;background-color:#FFC; " >< small style = " color: red; " > [ ' . $noseein . ' ] </ small > ' . $pl[' text '] . ' </ span > ';
if ($u->isModerator()) {
2022-07-01 12:45:43 +00:00
$see = 1;
}
}
}
2023-10-16 16:12:16 +03:00
if ($see == 1 && $pl[' login '] != ' ') {
2022-07-01 12:45:43 +00:00
2023-08-16 01:48:29 +03:00
$qix = Db::getValue(' select id from friends where ignor > 0 and login_ignor = ? and ( user_ignor = ? or user = ? ) ', [$pl[' login '], $u->info[' login '], $u->info[' id ']]);
if (isset($qix)) {
2022-07-01 12:45:43 +00:00
$see = 0;
}
unset($qix);
}
2023-11-02 15:57:39 +02:00
$see = 1; //временно.
2023-10-16 16:12:16 +03:00
if ($see == 1) {
2022-07-01 12:45:43 +00:00
if ($pl[' time '] < 0) {
if ($pl[' to '] == ' ') {
2023-10-16 16:12:16 +03:00
$lmsch = Chat::getLastMessageId();
if ($lmsch > 0) {
$lmsch++;
Chat::setCurrentTimeAndIdById($pl[' id '], $lmsch);
$pl[' id '] = $lmsch;
2022-07-01 12:45:43 +00:00
} else {
2023-10-16 16:12:16 +03:00
Chat::setCurrentTimeById($pl[' id ']);
2022-07-01 12:45:43 +00:00
}
} else {
2023-10-16 16:12:16 +03:00
Chat::setCurrentTimeById($pl[' id ']);
2022-07-01 12:45:43 +00:00
}
$pl[' time '] = time();
}
if ($pl[' spam '] > 0) {
$r[' msg '] .= ' , " ' . $i . ' " : { " s " : " ' . $pl['id'] . ' " } ';
} else {
$reimg = [];
2022-12-19 20:26:14 +02:00
if (preg_match_all(
"/\[img\[(.*?)\]\]\[1\]/", $pl[' text '], $reimg
2023-10-16 16:12:16 +03:00
) && ($u->isAdmin() || $pl[' type '] == 5 || $pl[' type '] == 6 || $pl[' type '] == 10 || $pl[' type '] == 11)) {
2022-07-01 12:45:43 +00:00
$k = 0;
while ($k <= count($reimg[1])) {
2022-12-19 20:26:14 +02:00
$pl[' text '] = str_replace(
' [ img [ ' . $reimg[1][$k] . ' ]][ 1 ] ',
2023-10-16 16:12:16 +03:00
' < img src = ' . Config::img() . ' / i / ' . $reimg[1][$k] . ' height = 19 > ', $pl[' text ']
2022-12-19 20:26:14 +02:00
);
2022-07-01 12:45:43 +00:00
$k++;
}
}
2022-12-19 20:26:14 +02:00
if (preg_match_all(
"/\[img\[(.*?)\]\]/", $pl[' text '], $reimg
) && ($u->info[' admin '] > 0 || $pl[' type '] == 5 || $pl[' type '] == 6 || $pl[' type '] == 10 || $pl[' type '] == 11)) {
2022-07-01 12:45:43 +00:00
$k = 0;
while ($k <= count($reimg[1])) {
2022-12-19 20:26:14 +02:00
$pl[' text '] = str_replace(
2023-10-16 16:12:16 +03:00
' [ img [ ' . $reimg[1][$k] . ' ]] ', ' < img src = ' . Config::img() . ' / i / ' . $reimg[1][$k] . ' > ',
2022-12-19 20:26:14 +02:00
$pl[' text ']
);
2022-07-01 12:45:43 +00:00
$k++;
}
}
if (preg_match_all("/item\[(.*?)\]/", $pl[' text '], $reimg)) {
$k = 0;
while ($k <= count($reimg[1])) {
2022-12-19 20:26:14 +02:00
$pl[' text '] = str_replace(
' item [ ' . $reimg[1][$k] . ' ] ',
2023-01-10 18:29:32 +02:00
' < b oncontextmenu = \ " return false; \" onClick= \" alert( \ 'Функция временно недоступна! \ '); \" style= \" cursor:pointer; \" class= \" itemsInfo \" >Предмет</b>',
2022-12-19 20:26:14 +02:00
$pl['text']
);
2022-07-01 12:45:43 +00:00
$k ++;
}
}
2023-01-10 18:29:32 +02:00
if (preg_match_all( " / \ . ( ? : mp3 ) $ / i " , $pl['text'] , $reimg )) //ТУТ аудио audio
2022-07-01 12:45:43 +00:00
{
$k = 0;
while ( $k <= count( $reimg[1] )) {
2022-12-19 20:26:14 +02:00
$pl['text'] = str_replace(
'item[' . $reimg[1] [ $k ] . ']',
2023-01-10 18:29:32 +02:00
'<b oncontextmenu= \" return false; \" onClick= \" alert( \ 'Функция временно недоступна! \ '); \" style= \" cursor:pointer; \" class= \" itemsInfo \" >Аудио запись</b>',
2022-12-19 20:26:14 +02:00
$pl['text']
);
2022-07-01 12:45:43 +00:00
$k ++;
}
}
if (preg_match_all( " / item \ [( .* ? ) \ ] / " , $pl['text'] , $reimg )) {
$k = 0;
while ( $k <= count( $reimg[1] )) {
2022-12-19 20:26:14 +02:00
$pl['text'] = str_replace(
'item [' . $reimg[1] [ $k ] . ']',
2023-01-10 18:29:32 +02:00
'<b oncontextmenu= \" return false; \" onClick= \" alert( \ 'Функция временно недоступна! \ '); \" style= \" cursor:pointer; \" class= \" itemsInfo \" >Предмет</b>',
2022-12-19 20:26:14 +02:00
$pl['text']
);
2022-07-01 12:45:43 +00:00
$k ++;
}
}
if ( $pl['type'] != 3 && ( $pl['invis'] == 1 || $pl['invis'] > time())) {
2023-10-16 16:12:16 +03:00
$pl['login'] = '<b><i>Невидимка</i></b>';
if ( $u->isAdmin ()) {
$pl['login'] .= '</a> <small>(' . $pl['login'] . ')</small>';
2022-07-01 12:45:43 +00:00
}
}
if ( $pl['invis'] > 0 && ( $pl['type'] == 1 || $pl['type'] == 2)) {
$pl['color'] = 'Black';
}
2023-10-16 16:12:16 +03:00
$r['msg'] .= ', " m ' . $i . ' " :[ " ' . $pl[' id '] . ' " , " ' . $pl[' time '] . ' " , " ' . $pl[' type '] . ' " , " ' . $pl[' login '] . ' " , " ' .
$pl[' to '] . ' " , " ' . $pl[' text '] . ' " , " ' . $pl[' color '] . ' " , " ' . $pl[' toChat '] . ' " , " ' . $pl[' typeTime '] . ' " , " ' . $pl[' sound '] .
' " , " ' . $pl[' global '] . ' " , " ' . $pl[' molch '] . ' " , " ' . $pl[' active '] . ' " , " ' . date(' H : i ', $pl[' time ']) . ' " , " ' .
date(' d . m . Y H : i ', $pl[' time ']) . ' " , " ' . $pl[' frv '] . ' " , " ' . $pl[' invis '] . ' " ]';
2022-07-01 12:45:43 +00:00
}
}
if ( $l < $pl['id'] ) {
$l = $pl['id'] ;
}
$i ++;
}
$r['msg'] = ' { " ld " : " ' . (0 + $l) . ' " , " id " : " ' . $i . ' " ' . $r['msg'] . '}';
2022-12-19 20:26:14 +02:00
2023-01-10 18:29:32 +02:00
//Генерируем ключ
2022-07-01 12:45:43 +00:00
$r['key'] = md5( $u->room ['name'] . '+' . $ar_id . '+' . $ar_lvl . '+' . $ar_all );
unset( $ar_id , $ar_lvl );
2023-08-16 01:48:29 +03:00
if (empty( $_COOKIE['chatCfg12'] )) {
2022-07-01 12:45:43 +00:00
$_GET['key'] = time();
}
if ( $r['key'] == $_GET['key'] ) {
2023-01-10 18:29:32 +02:00
//Список онлайн остается неизменным
2022-07-01 12:45:43 +00:00
unset( $r['rn'] , $r['list'] , $r['key'] , $r['xu'] );
2023-08-16 03:05:57 +03:00
} elseif (!empty( $_GET['r1'] )) {
2023-01-10 19:26:14 +02:00
$r['rn'] = $u->room ['name'];
2022-07-01 12:45:43 +00:00
}
2023-10-16 16:12:16 +03:00
$posts = Db::getValue('select count(id) from items_users where uid = ? and inOdet = 0 and inShop = 0 and lastUPD < unix_timestamp()', ['-51' . $u->info ['id']]);
2022-07-01 12:45:43 +00:00
if ( $posts > 0) {
$r['js'] .= ' $ ( " #postdiv").show();';
} else {
$r [ 'js' ] .= ' $("#postdiv").hide();' ;
}
2023-01-10 18:29:32 +02:00
//Предложение на обмен
2023-10-16 16:12:16 +03:00
$transfer = Db :: getRow ( 'select id, uid1 from transfers where uid2 = ? and start2 = 0 and cancel1 = 0 and cancel2 = 0' , [ $u -> info [ 'id' ]]);
if ( isset ( $transfer [ 'id' ])) {
$utf = User :: getLoginById ( $transfer [ 'uid1' ]);
if ( ! empty ( $utf ) && $u -> info [ 'battle' ] == 0 ) {
$r [ 'js' ] .= 'top.intransferNew(' . $transfer [ 'id' ] . ',"' . $utf . '");' ;
2022-07-01 12:45:43 +00:00
} else {
2023-10-16 16:12:16 +03:00
Db :: sql ( 'update transfers set cancel2 = unix_timestamp() where id = ?' , [ $transfer [ 'id' ]]);
2022-07-01 12:45:43 +00:00
}
}
2023-01-10 20:14:47 +02:00
unset ( $c , $u , $db );
echo json_encode ( $r );