2020-12-26 01:42:23 +08:00
<? php
2021-01-13 19:32:26 +08:00
require "../include/bittorrent.php" ;
2020-12-26 01:42:23 +08:00
dbconn ();
require_once ( get_langfile_path ());
2025-04-21 11:57:24 +07:00
//require_once(get_langfile_path("",true));
2020-12-26 01:42:23 +08:00
loggedinorreturn ();
if ( $_SERVER [ "REQUEST_METHOD" ] != "POST" )
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_permission_denied' ]);
2021-01-06 00:56:13 +08:00
$origmsg = intval ( $_POST [ "origmsg" ] ?? 0 );
2020-12-26 01:42:23 +08:00
$msg = trim ( $_POST [ "body" ]);
2021-01-12 21:14:02 +08:00
if ( isset ( $_POST [ 'forward' ]) && $_POST [ 'forward' ] == 1 ) //this is forwarding
2020-12-26 01:42:23 +08:00
{
if ( ! $origmsg )
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_invalid_id' ]);
$res = sql_query ( "SELECT * FROM messages WHERE id=" . sqlesc ( $origmsg ) . " AND (receiver=" . sqlesc ( $CURUSER [ 'id' ]) . " OR sender=" . sqlesc ( $CURUSER [ 'id' ]) . ") LIMIT 1" ) or sqlerr ( __FILE__ , __LINE__ );
$origmsgrow = mysql_fetch_assoc ( $res );
if ( ! $origmsgrow )
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_no_permission_forwarding' ]);
if ( ! $_POST [ 'to' ])
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_must_enter_username' ]);
$receiver = get_user_id_from_name ( trim ( $_POST [ 'to' ]));
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $receiver );
2020-12-26 01:42:23 +08:00
if ( $origmsgrow [ 'sender' ] == 0 )
{
2025-04-21 02:53:56 +07:00
$origfrom = nexus_trans ( "message.msg_system" , [], $locale );
2020-12-26 01:42:23 +08:00
}
else
{
$origmsgsendername = get_plain_username ( $origmsgrow [ 'sender' ]);
$origfrom = "[url=userdetails.php?id=" . $origmsgrow [ 'sender' ] . "]" . $origmsgsendername . "[/url]" ;
}
2025-04-21 02:53:56 +07:00
$msg = "-------- " . nexus_trans ( "message.msg_original_message_from" , [], $locale ) . $origfrom . " -------- \n " . $origmsgrow [ 'msg' ] . " \n\n " . ( $msg ? "-------- [url=userdetails.php?id=" . $CURUSER [ "id" ] . "]" . $CURUSER [ "username" ] . "[/url][i] Wrote at " . date ( "Y-m-d H:i:s" ) . ":[/i] -------- \n " . $msg : "" );
2022-08-20 19:11:28 +08:00
2020-12-26 01:42:23 +08:00
}
else
{
2021-01-06 00:56:13 +08:00
$receiver = intval ( $_POST [ "receiver" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! is_valid_id ( $receiver ) || ( $origmsg && ! is_valid_id ( $origmsg )))
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_invalid_id' ]);
$bodyadd = "" ;
if ( ! $msg )
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_please_enter_something' ]);
}
$save = $_POST [ "save" ];
$returnto = $_POST [ "returnto" ];
// Anti Flood Code
// This code ensures that a member can only send one PM every 10 seconds.
2022-08-20 19:11:28 +08:00
if ( ! user_can ( 'staffmem' )) {
2020-12-26 01:42:23 +08:00
if ( strtotime ( $CURUSER [ 'last_pm' ]) > ( TIMENOW - 10 ))
{
$secs = 60 - ( TIMENOW - strtotime ( $CURUSER [ 'last_pm' ]));
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_message_flooding_denied' ] . $secs . $lang_takemessage [ 'std_before_sending_pm' ]);
}
}
// Change
$save = ( $save == 'yes' ) ? "yes" : "no" ;
// End of Change
$res = sql_query ( "SELECT id,username,parked,email,acceptpms, notifs, UNIX_TIMESTAMP(last_access) as la FROM users WHERE id=" . sqlesc ( $receiver )) or sqlerr ( __FILE__ , __LINE__ );
$user = mysql_fetch_assoc ( $res );
if ( ! $user )
stderr ( $lang_takemessage [ 'std_error' ], $lang_takemessage [ 'std_user_not_exist' ]);
//Make sure recipient wants this message
2022-08-20 19:11:28 +08:00
if ( ! user_can ( 'staffmem' ))
2020-12-26 01:42:23 +08:00
{
if ( $user [ "parked" ] == "yes" )
stderr ( $lang_takemessage [ 'std_refused' ], $lang_takemessage [ 'std_account_parked' ]);
if ( $user [ "acceptpms" ] == "yes" )
{
$res2 = sql_query ( "SELECT * FROM blocks WHERE userid=" . sqlesc ( $receiver ) . " AND blockid=" . sqlesc ( $CURUSER [ "id" ])) or sqlerr ( __FILE__ , __LINE__ );
if ( mysql_num_rows ( $res2 ) == 1 )
stderr ( $lang_takemessage [ 'std_refused' ], $lang_takemessage [ 'std_user_blocks_your_pms' ]);
}
elseif ( $user [ "acceptpms" ] == "friends" )
{
$res2 = sql_query ( "SELECT * FROM friends WHERE userid=" . sqlesc ( $receiver ) . " AND friendid=" . sqlesc ( $CURUSER [ "id" ])) or sqlerr ( __FILE__ , __LINE__ );
if ( mysql_num_rows ( $res2 ) != 1 )
stderr ( $lang_takemessage [ 'std_refused' ], $lang_takemessage [ 'std_user_accepts_friends_pms' ]);
}
elseif ( $user [ "acceptpms" ] == "no" )
stderr ( $lang_takemessage [ 'std_refused' ], $lang_takemessage [ 'std_user_blocks_all_pms' ]);
}
$subject = trim ( $_POST [ 'subject' ]);
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => $CURUSER [ "id" ],
'receiver' => $receiver ,
'msg' => $msg ,
'subject' => $subject ,
'added' => now (),
'saved' => $save ,
'location' => 1 ,
]);
2020-12-26 01:42:23 +08:00
$Cache -> delete_value ( 'user_' . $CURUSER [ "id" ] . '_outbox_count' );
2022-08-20 19:11:28 +08:00
2020-12-26 01:42:23 +08:00
$msgid = mysql_insert_id ();
$date = date ( "Y-m-d H:i:s" );
// Update Last PM sent...
sql_query ( "UPDATE users SET last_pm = NOW() WHERE id = " . sqlesc ( $CURUSER [ 'id' ])) or sqlerr ( __FILE__ , __LINE__ );
// Send notification email.
if ( $emailnotify_smtp == 'yes' && $smtptype != 'none' ){
$mystring = $user [ 'notifs' ];
$findme = '[pm]' ;
$pos = strpos ( $mystring , $findme );
if ( $pos === false )
$sm = false ;
else
$sm = true ;
if ( $sm )
{
$username = trim ( $CURUSER [ "username" ]);
$msg_receiver = trim ( $user [ "username" ]);
$prefix = get_protocol_prefix ();
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $user [ 'id' ]);
$title = " $SITENAME " . nexus_trans ( "message.mail_received_pm_from" , [], $locale ) . $username . "!" ;
$mailDear = nexus_trans ( "message.mail_dear" , [], $locale );
$mailYouReceivedAPm = nexus_trans ( "message.mail_you_received_a_pm" , [], $locale );
$mailSender = nexus_trans ( "message.mail_sender" , [], $locale );
$mailSubject = nexus_trans ( "message.mail_subject" , [], $locale );
$mailDate = nexus_trans ( "message.mail_date" , [], $locale );
$mailYouFollowingUrl = nexus_trans ( "message.mail_use_following_url" , [], $locale );
$mailHere = nexus_trans ( "message.mail_here" , [], $locale );
$mailYouFollowingUrl1 = nexus_trans ( "message.mail_use_following_url_1" , [], $locale );
$mailYours = nexus_trans ( "message.mail_yours" , [], $locale );
$siteName = \App\Models\Setting :: getSiteName ();
$mailTheSiteTeam = sprintf ( nexus_trans ( "message.mail_the_site_team" , [], $locale ), $siteName );
2020-12-26 01:42:23 +08:00
$body = <<< EOD
2025-04-21 02:53:56 +07:00
{$mailDear}$msg_receiver,
2022-08-20 19:11:28 +08:00
2025-04-21 02:53:56 +07:00
{$mailYouReceivedAPm}
2022-08-20 19:11:28 +08:00
2025-04-21 02:53:56 +07:00
{$mailSender}: $username
{$mailSubject}: $subject
{$mailDate}: $date
2022-08-20 19:11:28 +08:00
2025-04-21 02:53:56 +07:00
{$mailYouFollowingUrl}<b><a href="javascript:void(null)" onclick="window.open('$prefix$BASEURL/messages.php?action=viewmessage&id=$msgid')">{$mailHere}</a></b>{$mailYouFollowingUrl1}<br />
2020-12-26 01:42:23 +08:00
$prefix$BASEURL/messages.php?action=viewmessage&id=$msgid
2022-08-20 19:11:28 +08:00
2025-04-21 02:53:56 +07:00
------{$mailYours}
{$mailTheSiteTeam}
2020-12-26 01:42:23 +08:00
EOD ;
2021-02-04 19:28:27 +08:00
sent_mail ( $user [ "email" ], $SITENAME , $SITEEMAIL , $title , str_replace ( "<br />" , "<br />" , nl2br ( $body )), "sendmessage" , false , false , '' );
2020-12-26 01:42:23 +08:00
}
}
$delete = $_POST [ "delete" ];
if ( $origmsg )
{
if ( $delete == "yes" )
{
// Make sure receiver of $origmsg is current user
$res = sql_query ( "SELECT * FROM messages WHERE id= $origmsg " ) or sqlerr ( __FILE__ , __LINE__ );
if ( mysql_num_rows ( $res ) == 1 )
{
$arr = mysql_fetch_assoc ( $res );
if ( $arr [ "receiver" ] != $CURUSER [ "id" ])
stderr ( "w00t" , "This shouldn't happen." );
if ( $arr [ "saved" ] == "no" )
sql_query ( "DELETE FROM messages WHERE id= $origmsg " ) or sqlerr ( __FILE__ , __LINE__ );
elseif ( $arr [ "saved" ] == "yes" )
sql_query ( "UPDATE messages SET location = '0' WHERE id= $origmsg " ) or sqlerr ( __FILE__ , __LINE__ );
}
}
if ( ! $returnto )
$returnto = "" . get_protocol_prefix () . " $BASEURL /messages.php" ;
}
if ( $returnto )
{
header ( "Location: $returnto " );
die ;
}
stdhead ();
stdmsg ( $lang_takemessage [ 'std_succeeded' ], (( $n_pms > 1 ) ? " $n " . $lang_takemessage [ 'std_messages_out_of' ] . " $n_pms " . $lang_takemessage [ 'std_were' ] : $lang_takemessage [ 'std_message_was' ]) .
$lang_takemessage [ 'std_successfully_sent' ] . ( $l ? " $l profile comment" . (( $l > 1 ) ? $lang_takemessage [ 'std_s_were' ] : $lang_takemessage [ 'std_was' ]) . $lang_takemessage [ 'std_updated' ] : "" ));
stdfoot ();
exit ;
?>