Zeile 101 | Zeile 101 |
---|
$this->set_error("missing_message"); return false; }
|
$this->set_error("missing_message"); return false; }
|
| // If the length of message is beyond SQL limitation for 'text' field else if(strlen($message) > 65535) { $this->set_error("message_too_long", array('65535', strlen($message))); return false; }
|
return true; }
| return true; }
|
Zeile 130 | Zeile 138 |
---|
// Check if the sender is over their quota or not - if they are, disable draft sending if(isset($pm['options']['savecopy']) && $pm['options']['savecopy'] != 0 && empty($pm['saveasdraft'])) {
|
// Check if the sender is over their quota or not - if they are, disable draft sending if(isset($pm['options']['savecopy']) && $pm['options']['savecopy'] != 0 && empty($pm['saveasdraft'])) {
|
if($sender_permissions['pmquota'] != "0" && $sender['totalpms'] >= $sender_permissions['pmquota'] && $this->admin_override != true)
| if($sender_permissions['pmquota'] != 0 && $sender['totalpms'] >= $sender_permissions['pmquota'] && $this->admin_override != true)
|
{ $pm['options']['savecopy'] = 0; } }
|
{ $pm['options']['savecopy'] = 0; } }
|
|
|
// Assign the sender information to the data. $pm['sender'] = array( "uid" => $sender['uid'],
| // Assign the sender information to the data. $pm['sender'] = array( "uid" => $sender['uid'],
|
Zeile 174 | Zeile 182 |
---|
}
$pm[$recipient_type] = array_map('trim', $pm[$recipient_type]);
|
}
$pm[$recipient_type] = array_map('trim', $pm[$recipient_type]);
|
$pm[$recipient_type] = array_filter($pm[$recipient_type]);
// No recipients? Skip query if(empty($pm[$recipient_type])) { if($recipient_type == 'to' && !$pm['saveasdraft']) {
| $pm[$recipient_type] = array_filter($pm[$recipient_type]);
// No recipients? Skip query if(empty($pm[$recipient_type])) { if($recipient_type == 'to' && empty($pm['saveasdraft'])) {
|
$this->set_error("no_recipients"); return false; }
| $this->set_error("no_recipients"); return false; }
|
Zeile 197 | Zeile 205 |
---|
while($user = $db->fetch_array($query)) { if($recipient_type == "bcc")
|
while($user = $db->fetch_array($query)) { if($recipient_type == "bcc")
|
{ $user['bcc'] = 1; }
| { $user['bcc'] = 1; }
|
$recipients[] = $user; $validUsernames[] = $user['username'];
|
$recipients[] = $user; $validUsernames[] = $user['username'];
|
}
foreach($pm[$recipient_type] as $username) { if(!in_array($username, $validUsernames)) { $invalid_recipients[] = $username;
| }
foreach($pm[$recipient_type] as $username) { if(!in_array($username, $validUsernames)) { $invalid_recipients[] = $username;
|
} } }
| } } }
|
Zeile 229 | Zeile 237 |
---|
} $pm[$recipient_type] = array_map('intval', $pm[$recipient_type]); $pm[$recipient_type] = array_filter($pm[$recipient_type]);
|
} $pm[$recipient_type] = array_map('intval', $pm[$recipient_type]); $pm[$recipient_type] = array_filter($pm[$recipient_type]);
|
|
|
// No recipients? Skip query if(empty($pm[$recipient_type])) {
| // No recipients? Skip query if(empty($pm[$recipient_type])) {
|
Zeile 256 | Zeile 264 |
---|
$recipients[] = $user; $validUids[] = $user['uid'];
|
$recipients[] = $user; $validUids[] = $user['uid'];
|
}
| }
|
foreach($pm[$recipient_type] as $uid) { if(!in_array($uid, $validUids)) { $invalid_recipients[] = $uid; }
|
foreach($pm[$recipient_type] as $uid) { if(!in_array($uid, $validUids)) { $invalid_recipients[] = $uid; }
|
}
| }
|
} }
| } }
|
Zeile 285 | Zeile 293 |
---|
}
// Now we're done with that we loop through each recipient
|
}
// Now we're done with that we loop through each recipient
|
| $pm['recipients'] = array();
|
foreach($recipients as $user) { // Collect group permissions for this recipient.
| foreach($recipients as $user) { // Collect group permissions for this recipient.
|
Zeile 293 | Zeile 302 |
---|
// See if the sender is on the recipients ignore list and that either // - admin_override is set or // - sender is an administrator
|
// See if the sender is on the recipients ignore list and that either // - admin_override is set or // - sender is an administrator
|
if(($this->admin_override != true && $sender_permissions['cancp'] != 1) && $sender_permissions['canoverridepm'] != 1)
| if($this->admin_override != true && $sender_permissions['canoverridepm'] != 1)
|
{ if(!empty($user['ignorelist']) && strpos(','.$user['ignorelist'].',', ','.$pm['fromid'].',') !== false) {
|
{ if(!empty($user['ignorelist']) && strpos(','.$user['ignorelist'].',', ','.$pm['fromid'].',') !== false) {
|
$this->set_error('recipient_is_ignoring', array($user['username']));
| $this->set_error("recipient_is_ignoring", array(htmlspecialchars_uni($user['username'])));
|
}
// Is the recipient only allowing private messages from their buddy list?
|
}
// Is the recipient only allowing private messages from their buddy list?
|
if($mybb->settings['allowbuddyonly'] == 1 && $user['receivefrombuddy'] == 1 && !empty($user['buddylist']) && strpos(','.$user['buddylist'].',', ','.$pm['fromid'].',') === false)
| if(empty($pm['saveasdraft']) && $mybb->settings['allowbuddyonly'] == 1 && $user['receivefrombuddy'] == 1 && !empty($user['buddylist']) && strpos(','.$user['buddylist'].',', ','.$pm['fromid'].',') === false)
|
{ $this->set_error('recipient_has_buddy_only', array(htmlspecialchars_uni($user['username']))); }
| { $this->set_error('recipient_has_buddy_only', array(htmlspecialchars_uni($user['username']))); }
|
Zeile 309 | Zeile 318 |
---|
// Can the recipient actually receive private messages based on their permissions or user setting? if(($user['receivepms'] == 0 || $recipient_permissions['canusepms'] == 0) && empty($pm['saveasdraft'])) {
|
// Can the recipient actually receive private messages based on their permissions or user setting? if(($user['receivepms'] == 0 || $recipient_permissions['canusepms'] == 0) && empty($pm['saveasdraft'])) {
|
$this->set_error("recipient_pms_disabled", array($user['username']));
| $this->set_error("recipient_pms_disabled", array(htmlspecialchars_uni($user['username'])));
|
return false; } }
// Check to see if the user has reached their private message quota - if they have, email them.
|
return false; } }
// Check to see if the user has reached their private message quota - if they have, email them.
|
if($recipient_permissions['pmquota'] != "0" && $user['totalpms'] >= $recipient_permissions['pmquota'] && $recipient_permissions['cancp'] != 1 && $sender_permissions['cancp'] != 1 && empty($pm['saveasdraft']) && !$this->admin_override)
| if($recipient_permissions['pmquota'] != 0 && $user['totalpms'] >= $recipient_permissions['pmquota'] && $sender_permissions['cancp'] != 1 && empty($pm['saveasdraft']) && !$this->admin_override)
|
{ if(trim($user['language']) != '' && $lang->language_exists($user['language'])) {
| { if(trim($user['language']) != '' && $lang->language_exists($user['language'])) {
|
Zeile 332 | Zeile 341 |
---|
if($uselang == $mybb->settings['bblanguage'] || !$uselang) { $emailsubject = $lang->emailsubject_reachedpmquota;
|
if($uselang == $mybb->settings['bblanguage'] || !$uselang) { $emailsubject = $lang->emailsubject_reachedpmquota;
|
$emailmessage = $lang->email_reachedpmquota; } else { $userlang = new MyLanguage; $userlang->set_path(MYBB_ROOT."inc/languages"); $userlang->set_language($uselang); $userlang->load("messages");
| $emailmessage = $lang->email_reachedpmquota; } else { $userlang = new MyLanguage; $userlang->set_path(MYBB_ROOT."inc/languages"); $userlang->set_language($uselang); $userlang->load("messages");
|
$emailsubject = $userlang->emailsubject_reachedpmquota; $emailmessage = $userlang->email_reachedpmquota; }
| $emailsubject = $userlang->emailsubject_reachedpmquota; $emailmessage = $userlang->email_reachedpmquota; }
|
Zeile 358 | Zeile 367 |
---|
$cache->update_mailqueue();
if($this->admin_override != true)
|
$cache->update_mailqueue();
if($this->admin_override != true)
|
{ $this->set_error("recipient_reached_quota", array($user['username'])); }
| { $this->set_error("recipient_reached_quota", array(htmlspecialchars_uni($user['username']))); }
|
}
// Everything looks good, assign some specifics about the recipient
| }
// Everything looks good, assign some specifics about the recipient
|
Zeile 395 | Zeile 404 |
---|
$pm = &$this->data;
// Check if post flooding is enabled within MyBB or if the admin override option is specified.
|
$pm = &$this->data;
// Check if post flooding is enabled within MyBB or if the admin override option is specified.
|
if($mybb->settings['pmfloodsecs'] > 0 && $pm['fromid'] != 0 && $this->admin_override == false)
| if($mybb->settings['pmfloodsecs'] > 0 && $pm['fromid'] != 0 && $this->admin_override == false && !is_moderator(0, '', $pm['fromid']))
|
{ // Fetch the senders profile data. $sender = get_user($pm['fromid']);
|
{ // Fetch the senders profile data. $sender = get_user($pm['fromid']);
|
|
|
// Calculate last post $query = $db->simple_select("privatemessages", "dateline", "fromid='".$db->escape_string($pm['fromid'])."' AND toid != '0'", array('order_by' => 'dateline', 'order_dir' => 'desc', 'limit' => 1)); $sender['lastpm'] = $db->fetch_field($query, "dateline");
// A little bit of calculation magic and moderator status checking.
|
// Calculate last post $query = $db->simple_select("privatemessages", "dateline", "fromid='".$db->escape_string($pm['fromid'])."' AND toid != '0'", array('order_by' => 'dateline', 'order_dir' => 'desc', 'limit' => 1)); $sender['lastpm'] = $db->fetch_field($query, "dateline");
// A little bit of calculation magic and moderator status checking.
|
if(TIME_NOW-$sender['lastpm'] <= $mybb->settings['pmfloodsecs'] && !is_moderator("", "", $pm['fromid']))
| if(TIME_NOW-$sender['lastpm'] <= $mybb->settings['pmfloodsecs'])
|
{ // Oops, user has been flooding - throw back error message. $time_to_wait = ($mybb->settings['pmfloodsecs'] - (TIME_NOW-$sender['lastpm'])) + 1; if($time_to_wait == 1)
|
{ // Oops, user has been flooding - throw back error message. $time_to_wait = ($mybb->settings['pmfloodsecs'] - (TIME_NOW-$sender['lastpm'])) + 1; if($time_to_wait == 1)
|
{
| {
|
$this->set_error("pm_flooding_one_second");
|
$this->set_error("pm_flooding_one_second");
|
}
| }
|
else { $this->set_error("pm_flooding", array($time_to_wait)); } return false;
|
else { $this->set_error("pm_flooding", array($time_to_wait)); } return false;
|
} }
| } }
|
// All is well that ends well - return true. return true; }
| // All is well that ends well - return true. return true; }
|
Zeile 439 | Zeile 448 |
---|
// Requesting a read receipt? if(isset($options['readreceipt']) && $options['readreceipt'] == 1)
|
// Requesting a read receipt? if(isset($options['readreceipt']) && $options['readreceipt'] == 1)
|
{
| {
|
$options['readreceipt'] = 1; } else
| $options['readreceipt'] = 1; } else
|
Zeile 497 | Zeile 506 |
---|
else { return true;
|
else { return true;
|
}
| }
|
}
/**
| }
/**
|
Zeile 515 | Zeile 524 |
---|
die("The PM needs to be validated before inserting it into the DB."); } if(count($this->get_errors()) > 0)
|
die("The PM needs to be validated before inserting it into the DB."); } if(count($this->get_errors()) > 0)
|
{
| {
|
die("The PM is not valid."); }
| die("The PM is not valid."); }
|
Zeile 531 | Zeile 540 |
---|
if(empty($pm['icon']) || $pm['icon'] < 0) { $pm['icon'] = 0;
|
if(empty($pm['icon']) || $pm['icon'] < 0) { $pm['icon'] = 0;
|
}
$uid = 0;
| }
$uid = 0;
|
|
|
if(!is_array($pm['recipients'])) { $recipient_list = array(); } else
| // Build recipient list $recipient_list = array(); if(isset($pm['recipients']) && is_array($pm['recipients']))
|
{
|
{
|
// Build recipient list
| |
foreach($pm['recipients'] as $recipient) { if(!empty($recipient['bcc']))
| foreach($pm['recipients'] as $recipient) { if(!empty($recipient['bcc']))
|
Zeile 577 | Zeile 583 |
---|
$draftcheck = $db->fetch_array($query);
// This PM was previously a draft
|
$draftcheck = $db->fetch_array($query);
// This PM was previously a draft
|
if($draftcheck['pmid']) {
| if(!empty($draftcheck['pmid'])) {
|
if($draftcheck['deletetime']) { // This draft was a reply to a PM
| if($draftcheck['deletetime']) { // This draft was a reply to a PM
|
Zeile 588 | Zeile 594 |
---|
// Delete the old draft as we no longer need it $db->delete_query("privatemessages", "pmid='{$draftcheck['pmid']}'");
|
// Delete the old draft as we no longer need it $db->delete_query("privatemessages", "pmid='{$draftcheck['pmid']}'");
|
}
| }
|
// Saving this message as a draft if(!empty($pm['saveasdraft']))
| // Saving this message as a draft if(!empty($pm['saveasdraft']))
|
Zeile 597 | Zeile 603 |
---|
// If this is a reply, then piggyback into the deletetime to let us know in the future if($pm['do'] == "reply" || $pm['do'] == "replyall")
|
// If this is a reply, then piggyback into the deletetime to let us know in the future if($pm['do'] == "reply" || $pm['do'] == "replyall")
|
{
| {
|
$this->pm_insert_data['deletetime'] = $pm['pmid']; }
|
$this->pm_insert_data['deletetime'] = $pm['pmid']; }
|
|
|
$plugins->run_hooks("datahandler_pm_insert_updatedraft", $this);
|
$plugins->run_hooks("datahandler_pm_insert_updatedraft", $this);
|
$db->insert_query("privatemessages", $this->pm_insert_data);
| $this->pmid = $db->insert_query("privatemessages", $this->pm_insert_data);
$plugins->run_hooks("datahandler_pm_insert_updatedraft_commit", $this);
|
// If this is a draft, end it here - below deals with complete messages return array(
| // If this is a draft, end it here - below deals with complete messages return array(
|
Zeile 618 | Zeile 627 |
---|
// Send email notification of new PM if it is enabled for the recipient $query = $db->simple_select("privatemessages", "dateline", "uid='".$recipient['uid']."' AND folder='1'", array('order_by' => 'dateline', 'order_dir' => 'desc', 'limit' => 1)); $lastpm = $db->fetch_array($query);
|
// Send email notification of new PM if it is enabled for the recipient $query = $db->simple_select("privatemessages", "dateline", "uid='".$recipient['uid']."' AND folder='1'", array('order_by' => 'dateline', 'order_dir' => 'desc', 'limit' => 1)); $lastpm = $db->fetch_array($query);
|
if($recipient['pmnotify'] == 1 && $recipient['lastactive'] > $lastpm['dateline'])
| if($recipient['pmnotify'] == 1 && (empty($lastpm['dateline']) || $recipient['lastactive'] > $lastpm['dateline']))
|
{ if($recipient['language'] != "" && $lang->language_exists($recipient['language'])) {
| { if($recipient['language'] != "" && $lang->language_exists($recipient['language'])) {
|
Zeile 654 | Zeile 663 |
---|
require_once MYBB_ROOT.'inc/class_parser.php'; $parser = new Postparser;
|
require_once MYBB_ROOT.'inc/class_parser.php'; $parser = new Postparser;
|
|
|
$parser_options = array( 'me_username' => $pm['sender']['username'], 'filter_badwords' => 1
| $parser_options = array( 'me_username' => $pm['sender']['username'], 'filter_badwords' => 1
|
Zeile 681 | Zeile 690 |
---|
$this->pm_insert_data['toid'] = $recipient['uid'];
$plugins->run_hooks("datahandler_pm_insert", $this);
|
$this->pm_insert_data['toid'] = $recipient['uid'];
$plugins->run_hooks("datahandler_pm_insert", $this);
|
|
|
$this->pmid[] = $db->insert_query("privatemessages", $this->pm_insert_data);
|
$this->pmid[] = $db->insert_query("privatemessages", $this->pm_insert_data);
|
| $plugins->run_hooks("datahandler_pm_insert_commit", $this);
|
// If PM noices/alerts are on, show! if($recipient['pmnotice'] == 1)
| // If PM noices/alerts are on, show! if($recipient['pmnotice'] == 1)
|
Zeile 701 | Zeile 713 |
---|
if($pm['pmid']) { if($pm['do'] == "reply" || $pm['do'] == "replyall")
|
if($pm['pmid']) { if($pm['do'] == "reply" || $pm['do'] == "replyall")
|
{
| {
|
$sql_array = array( 'status' => 3,
|
$sql_array = array( 'status' => 3,
|
'statustime' => TIME_NOW ); $db->update_query("privatemessages", $sql_array, "pmid={$pm['pmid']} AND uid={$pm['sender']['uid']}"); }
| 'statustime' => TIME_NOW ); $db->update_query("privatemessages", $sql_array, "pmid={$pm['pmid']} AND uid={$pm['sender']['uid']}"); }
|
elseif($pm['do'] == "forward") { $sql_array = array(
| elseif($pm['do'] == "forward") { $sql_array = array(
|
Zeile 721 | Zeile 733 |
---|
// If we're saving a copy if($pm['options']['savecopy'] != 0) {
|
// If we're saving a copy if($pm['options']['savecopy'] != 0) {
|
if(isset($recipient_list['to']) && count($recipient_list['to']) == 1) {
| if(isset($recipient_list['to']) && is_array($recipient_list['to']) && count($recipient_list['to']) == 1) {
|
$this->pm_insert_data['toid'] = $uid; } else
| $this->pm_insert_data['toid'] = $uid; } else
|
Zeile 735 | Zeile 747 |
---|
$this->pm_insert_data['receipt'] = 0;
$plugins->run_hooks("datahandler_pm_insert_savedcopy", $this);
|
$this->pm_insert_data['receipt'] = 0;
$plugins->run_hooks("datahandler_pm_insert_savedcopy", $this);
|
|
|
$db->insert_query("privatemessages", $this->pm_insert_data);
|
$db->insert_query("privatemessages", $this->pm_insert_data);
|
| $plugins->run_hooks("datahandler_pm_insert_savedcopy_commit", $this);
|
// Because the sender saved a copy, update their total pm count require_once MYBB_ROOT."/inc/functions_user.php";
| // Because the sender saved a copy, update their total pm count require_once MYBB_ROOT."/inc/functions_user.php";
|