Files
nexusphp/public/takemessage.php

193 lines
7.3 KiB
PHP
Raw Normal View History

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']);
$origmsg = intval($_POST["origmsg"] ?? 0);
2020-12-26 01:42:23 +08:00
$msg = trim($_POST["body"]);
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
{
$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']);
\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;
?>