";
show_image(REPORT_POST_IMAGE, "Block messages from this user", REPORT_POST_IMAGE_HEIGHT);
echo "";
}
$action = get_str("action", true);
if ($action == null) {
$action = post_str("action", true);
}
if ($action == null) {
// Prepend "select_" because translated actions may clash with default actions
$action = "select_".post_str("action_select", true);
}
if ($action == "select_") {
$action = "inbox";
}
$logged_in_user = get_logged_in_user();
function make_script() {
echo "
";
}
function do_inbox($logged_in_user) {
page_head(tra("Private messages").": ".tra("Inbox"));
make_script();
if (get_int("sent", true) == 1) {
echo "
".tra("Your message has been sent.")."
\n";
}
$options = new output_options;
$msgs = BoincPrivateMessage::enum(
"userid=$logged_in_user->id ORDER BY date DESC"
);
if (count($msgs) == 0) {
echo tra("You have no private messages.");
} else {
echo "\n";
}
}
// the following isn't currently used - we never show single messages
//
function do_read($logged_in_user) {
$id = get_int("id");
$message = BoincPrivateMessage::lookup_id($id);
if (!$message || $message->userid != $logged_in_user->id) {
error_page("no such message");
}
page_head(tra("Private messages")." : ".$message->subject);
pm_header();
$sender = BoincUser::lookup_id($message->senderid);
start_table();
echo "".tra("Subject")." | ".$message->subject." |
";
echo "".tra("Sender")." | ".user_links($sender);
show_block_link($message->senderid);
echo " |
";
echo "".tra("Date")." | ".time_str($message->date)." |
";
echo "".tra("Message")." | ".output_transform($message->content, $options)." |
";
echo "\n";
echo "".tra("Delete")."\n";
echo " | ".tra("Reply")."\n";
echo " | ".tra("Inbox")."\n";
end_table();
if ($message->opened == 0) {
$message->update("opened=1");
}
}
function do_new($logged_in_user) {
check_banished($logged_in_user);
pm_create_new();
}
function do_delete($logged_in_user) {
$id = get_int("id", true);
if ($id == null) {
$id = post_int("id");
}
check_tokens($logged_in_user->authenticator);
BoincPrivateMessage::delete_aux("userid=".$logged_in_user->id." AND id=$id");
header("Location: pm.php");
}
function do_send($logged_in_user) {
check_banished($logged_in_user);
check_tokens($logged_in_user->authenticator);
$to = stripslashes(post_str("to", true));
$subject = stripslashes(post_str("subject", true));
$content = stripslashes(post_str("content", true));
if (post_str("preview", true) == tra("Preview")) {
pm_create_new();
}
if (($to == null) || ($subject == null) || ($content == null)) {
pm_create_new(tra("You need to fill all fields to send a private message"));
} else {
akismet_check($logged_in_user, $content);
$to = str_replace(", ", ",", $to); // Filter out spaces after separator
$users = explode(",", $to);
$userlist = array();
$userids = array(); // To prevent from spamming a single user by adding it multiple times
foreach ($users as $username) {
$user = explode(" ", $username);
if (is_numeric($user[0])) { // user ID is gived
$userid = $user[0];
$user = lookup_user_id($userid);
if ($user == null) {
pm_create_new(tra("Could not find user with id %1", $userid));
}
} else {
$user = lookup_user_name($username);
if ($user == null) {
pm_create_new(tra("Could not find user with username %1", $username));
} elseif ($user == -1) { // Non-unique username
pm_create_new(tra("%1 is not a unique username; you will have to use user ID", $username));
}
}
BoincForumPrefs::lookup($user);
if (is_ignoring($user, $logged_in_user)) {
pm_create_new(tra("User %1 (ID: %2) is not accepting private messages from you.", $user->name, $user->id));
}
if ($userids[$user->id] == null) {
$userlist[] = $user;
$userids[$user->id] = true;
}
}
foreach ($userlist as $user) {
check_pm_count($logged_in_user->id);
pm_send($user, $subject, $content);
}
Header("Location: pm.php?action=inbox&sent=1");
}
}
function do_block($logged_in_user) {
$id = get_int("id");
$user = BoincUser::lookup_id($id);
if (!$user) {
error_page(tra("No such user"));
}
page_head(tra("Really block %1?", $user->name));
echo " ".tra("Are you really sure you want to block user %1 from sending you private messages?", $user->name)." \n";
echo tra("Please note that you can only block a limited amount of users.")." \n";
echo "".tra("Once the user has been blocked you can unblock it using forum preferences page.")." \n";
echo "\n";
}
function do_confirmedblock($logged_in_user) {
check_tokens($logged_in_user->authenticator);
$id = post_int("id");
$blocked_user = BoincUser::lookup_id($id);
if (!$blocked_user) error_page("no such user");
add_ignored_user($logged_in_user, $blocked_user);
page_head(tra("User %1 blocked", $blocked_user->name));
echo "".tra("User %1 has been blocked from sending you private messages.", $blocked_user->name)."\n";
echo tra("To unblock, visit %1message board preferences%2", " ", "")." \n";
}
function do_delete_selected($logged_in_user) {
check_tokens($logged_in_user->authenticator);
foreach ($_POST["pm_select"] as $id) {
$id = BoincDb::escape_string($id);
$msg = BoincPrivateMessage::lookup_id($id);
if ($msg && $msg->userid == $logged_in_user->id) {
$msg->delete();
}
}
Header("Location: pm.php?action=inbox&deleted=1");
}
function do_mark_as_read_selected($logged_in_user) {
check_tokens($logged_in_user->authenticator);
foreach ($_POST["pm_select"] as $id) {
$id = BoincDb::escape_string($id);
$msg = BoincPrivateMessage::lookup_id($id);
if ($msg && $msg->userid == $logged_in_user->id) {
$msg->update("opened=1");
}
}
Header("Location: pm.php?action=inbox");
}
function do_mark_as_unread_selected($logged_in_user) {
check_tokens($logged_in_user->authenticator);
foreach ($_POST["pm_select"] as $id) {
$id = BoincDb::escape_string($id);
$msg = BoincPrivateMessage::lookup_id($id);
if ($msg && $msg->userid == $logged_in_user->id) {
$msg->update("opened=0");
}
}
Header("Location: pm.php?action=inbox");
}
if ($action == "inbox") {
do_inbox($logged_in_user);
} elseif ($action == "read") {
do_read($logged_in_user);
} elseif ($action == "new") {
do_new($logged_in_user);
} elseif ($action == "delete") {
do_delete($logged_in_user);
} elseif ($action == "send") {
do_send($logged_in_user);
} elseif ($action == "block") {
do_block($logged_in_user);
} elseif ($action == "confirmedblock") {
do_confirmedblock($logged_in_user);
} elseif ($action == "select_".tra("Delete")) {
do_delete_selected($logged_in_user);
} elseif ($action == "select_".tra("Mark as read")) {
do_mark_as_read_selected($logged_in_user);
} elseif ($action == "select_".tra("Mark as unread")) {
do_mark_as_unread_selected($logged_in_user);
} else {
error_page("Unknown action");
}
page_tail();
$cvs_version_tracker[]="\$Id: pm.php 14077 2007-11-03 04:26:47Z davea $";
?>
|