2022-08-25 11:23:36 +00:00
< ? php
class Telegram
{
private static $instance ;
/**Singletone*/
public static function start ()
{
if ( ! isset ( self :: $instance )) {
self :: $instance = new self ();
}
return self :: $instance ;
}
private function send ( $to , $from , $text , $fromType )
{
mysql_query ( 'START TRANSACTION' );
2023-01-10 17:26:14 +00:00
$ins = mysql_query ( " INSERT INTO `telegram` (`uid`,`from`,`fromType`,`text`,`time`) VALUES (' " . $to . " ',' " . $from . " ',' " . $fromType . " ',' " . mysql_real_escape_string ( AddSlashes ( HtmlSpecialChars ( $text , null ))) . " ',' " . time () . " ') " );
2022-08-25 11:23:36 +00:00
mysql_query ( 'COMMIT' );
if ( $ins ) {
return mysql_insert_id ();
}
}
public function readMsg ( $id , $uid )
{
$msg = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `telegram` WHERE `id`="' . $id . '" AND `uid`="' . $uid . '" LIMIT 1 FOR UPDATE' ));
if ( isset ( $msg [ 'id' ])) {
mysql_query ( 'START TRANSACTION' );
$upd = mysql_query ( 'UPDATE `telegram` SET `read`="1" WHERE `id` = "' . $id . '" AND `uid`="' . $uid . '" LIMIT 1' );
mysql_query ( 'COMMIT' );
if ( $upd && $msg [ 'lock' ] == 0 ) {
2023-03-31 18:30:14 +00:00
echo '<script>readGood(' . $id . ',"//img.new-combats.tech/i/misc/read.gif"); nobtext(' . $id . ');</script>' ;
2022-08-25 11:23:36 +00:00
}
}
}
public function lockMsg ( $id , $uid )
{
$msg = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `telegram` WHERE `id`="' . $id . '" AND `uid`="' . $uid . '" LIMIT 1 FOR UPDATE' ));
if ( isset ( $msg [ 'id' ])) {
$lock = [ 0 => 1 , 1 => 0 ];
mysql_query ( 'START TRANSACTION' );
$upd = mysql_query ( 'UPDATE `telegram` SET `read`="1",`lock`="' . $lock [ $msg [ 'lock' ]] . '" WHERE `id` = "' . $id . '" AND `uid`="' . $uid . '" LIMIT 1' );
mysql_query ( 'COMMIT' );
if ( $upd ) {
if ( $lock [ $msg [ 'lock' ]] == 1 ) {
2023-03-31 18:30:14 +00:00
echo '<script>readGood(' . $id . ',"//img.new-combats.tech/i/lock_message.gif"); nobtext(' . $id . ');</script>' ;
2022-08-25 11:23:36 +00:00
} else {
2023-03-31 18:30:14 +00:00
echo '<script>readGood(' . $id . ',"//img.new-combats.tech/i/misc/read.gif");</script>' ;
2022-08-25 11:23:36 +00:00
}
}
}
}
public function deleteMsgAll ( $uid , $pg )
{
mysql_query ( 'START TRANSACTION' );
$upd = mysql_query ( 'UPDATE `telegram` SET `delete`="1" WHERE `uid`="' . $uid . '" AND `read`="1" AND `lock`="0" AND `delete`="0"' );
mysql_query ( 'COMMIT' );
if ( $upd ) {
echo '<script> getPage(' . $pg . ');</script>' ;
}
}
public function deleteMsg ( $id , $uid , $pg )
{
$msg = mysql_fetch_array ( mysql_query ( 'SELECT * FROM `telegram` WHERE `id`="' . $id . '" AND `uid`="' . $uid . '" LIMIT 1 FOR UPDATE' ));
if ( isset ( $msg [ 'id' ])) {
mysql_query ( 'START TRANSACTION' );
$upd = mysql_query ( 'UPDATE `telegram` SET `delete`="1" WHERE `id` = "' . $id . '" AND `uid`="' . $uid . '" LIMIT 1' );
mysql_query ( 'COMMIT' );
if ( $upd && $msg [ 'delete' ] == 0 && $msg [ 'lock' ] == 0 ) {
echo '<script> getPage(' . $pg . ');</script>' ;
}
}
}
private function addMsgTable ( $id , $from , $fromType , $ttl , $time , $lock , $read , $pg )
{
2023-03-31 18:30:14 +00:00
$i1 = '<img id="msgImg' . $id . '" src="//img.new-combats.tech/i/misc/unread.gif">' ;
2022-08-25 11:23:36 +00:00
if ( $read == 1 ) {
2023-03-31 18:30:14 +00:00
$i1 = '<img id="msgImg' . $id . '" src="//img.new-combats.tech/i/misc/read.gif">' ;
2022-08-25 11:23:36 +00:00
}
if ( $lock == 1 ) {
2023-03-31 18:30:14 +00:00
$i1 = '<img id="msgImg' . $id . '" src="//img.new-combats.tech/i/lock_message.gif">' ;
2022-08-25 11:23:36 +00:00
}
if ( $fromType == 1 ) {
2023-01-10 16:29:32 +00:00
$from = '<a href="info/login=' . $from . '" target="_blank" title="Инф. о ' . $from . '">' . $from . '</a>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $read == 0 ) {
$from = '<b id="tablePostTxtB' . $id . '">' . $from . '</b>' ;
}
echo '<table id="tablePost' . $id . ' " width= " 100 % " border= " 0 " cellspacing= " 0 " cellpadding= " 0 " >
< tr >
< td width = " 30 " class = " underLine2 " >< div align = " center " > ' . $i1 . ' </ div ></ td >
< td width = " 200 " id = " tablePostTxt' . $id . ' " class = " underLine2 " > ' . $from . ' </ td >
2023-01-10 16:29:32 +00:00
< td width = " 290 " class = " underLine2 " >< a onClick = " openPost(' . $id . '); return false; " href = " #read' . $id . ' " title = " Прочитать сообщение " > ' . substr($ttl, 0, 30) . ' ...</ a ></ td >
2022-08-25 11:23:36 +00:00
< td width = " 120 " class = " underLine2 " > ' . date(' d . m . y H : i ', $time) . ' </ td >
2023-03-31 18:30:14 +00:00
< td width = " 30 " class = " underLine2 " >< div align = " center " >< IMG style = " cursor:pointer; " onClick = " lockPost(' . $id . '); " title = " Блокировка сообщения " src = " //img.new-combats.tech/i/locked.gif " ></ div ></ td >
< td width = " 30 " class = " underLine2 " >< div align = " center " >< IMG style = " cursor:pointer; " onClick = " deletePost(' . $id . ',' . $pg . '); " title = " Удалить сообщение " src = " //img.new-combats.tech/i/clear.gif " width = " 11 " height = " 11 " ></ div ></ td >
2022-08-25 11:23:36 +00:00
</ tr >
</ table >
< div id = " readMSG' . $id . ' " style = " display:none; " class = " unreadMSG " > ' . $ttl . ' </ div > ' ;
}
public function seeMsg ( $uid , $page , $maxPages )
{
$page = ceil ( $page );
echo ' < div id = " jx " style = " display:none; " ></ div >
< table width = " 100% " border = " 0 " cellspacing = " 0 " cellpadding = " 0 " >
< tr >
< td width = " 30 " class = " underLine " >< div align = " center " ></ div ></ td >
2023-01-10 16:29:32 +00:00
< td width = " 200 " class = " underLine " >< b > От кого </ b ></ td >
< td width = " 290 " class = " underLine " >< b > Заголовок сообщения </ b ></ td >
< td width = " 120 " class = " underLine " >< b > Когда </ b ></ td >
2023-03-31 18:30:14 +00:00
< td width = " 30 " class = " underLine " >< div align = " center " >< IMG alt = " Блокировка сообщений " src = " //img.new-combats.tech/i/lock_message.gif " ></ div ></ td >
< td width = " 30 " class = " underLine " >< div align = " center " >< IMG style = " cursor:pointer; " onClick = " deletePostAll(' . $page . '); " alt = " Удалить все прочитанные сообщения " src = " //img.new-combats.tech/i/clear.gif " width = " 11 " height = " 11 " ></ div ></ td >
2022-08-25 11:23:36 +00:00
</ tr >
</ table > ' ;
$i = mysql_fetch_array ( mysql_query ( 'SELECT COUNT(*) FROM `telegram` WHERE `uid`="' . $uid . '" AND `delete`="0"' ));
$pg = ceil ( $i [ 0 ] / $maxPages );
if ( $page < 0 ) {
$page = 0 ;
} elseif ( $page > $pg ) {
$page = $pg ;
}
if ( $i [ 0 ] > 0 ) {
$sp = mysql_query ( 'SELECT * FROM `telegram` WHERE `uid`="' . $uid . '" AND `delete`="0" ORDER BY `id` DESC LIMIT ' . (( $page - 1 ) * $maxPages ) . ' , ' . $maxPages . '' );
while ( $pl = mysql_fetch_array ( $sp )) {
$this -> addMsgTable ( $pl [ 'id' ], $pl [ 'from' ], $pl [ 'fromType' ], $pl [ 'text' ], $pl [ 'time' ], $pl [ 'lock' ], $pl [ 'read' ], $page );
}
}
if ( $i [ 0 ] == 0 ) {
2023-01-10 16:29:32 +00:00
echo '<div class="noMsg" align="center">Сообщений нет</div>' ;
2022-08-25 11:23:36 +00:00
} elseif ( $i [ 0 ] > $maxPages ) {
$pages = '' ;
$i = 1 ;
while ( $i <= $pg ) {
$cls = '' ;
if ( $page == $i ) {
$cls = 'style="color:#6f0000; font-size:14px;"' ;
}
$pages .= ' <a ' . $cls . ' onClick="getPage(' . $i . '); return false;" href="#page' . $i . '">' . $i . '</a>' ;
$i ++ ;
}
echo ' < table width = " 100% " border = " 0 " cellspacing = " 0 " cellpadding = " 0 " >
< tr >
< td width = " 30 " >< div align = " center " ></ div ></ td >
2023-01-10 16:29:32 +00:00
< td width = " 200 " > Страницы : ' . $pages . ' </ td >
2022-08-25 11:23:36 +00:00
< td width = " 240 " ></ td >
< td width = " 170 " ></ td >
< td width = " 30 " ></ td >
< td width = " 30 " ></ td >
</ tr >
</ table > ' ;
}
}
public function __clone ()
{
2023-01-10 16:29:32 +00:00
trigger_error ( 'Дублирование не допускается.' , E_USER_ERROR );
2022-08-25 11:23:36 +00:00
}
}