Zeile 126 | Zeile 126 |
---|
// Return if we've already validated if(!empty($pm['sender'])) {
|
// Return if we've already validated if(!empty($pm['sender'])) {
|
| return true; }
if($pm['fromid'] <= 0) { $pm['sender'] = array( "uid" => 0, "username" => '' );
|
return true; }
| return true; }
|
Zeile 134 | Zeile 144 |
---|
// Collect user permissions for the sender. $sender_permissions = user_permissions($pm['fromid']);
|
// Collect user permissions for the sender. $sender_permissions = user_permissions($pm['fromid']);
|
|
|
// 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'])) {
|
Zeile 152 | Zeile 162 |
---|
return true; }
|
return true; }
|
|
|
/** * Verifies if an array of recipients for a private message are valid *
| /** * Verifies if an array of recipients for a private message are valid *
|
Zeile 171 | Zeile 181 |
---|
if(array_key_exists("to", $pm)) { foreach(array("to", "bcc") as $recipient_type)
|
if(array_key_exists("to", $pm)) { foreach(array("to", "bcc") as $recipient_type)
|
{ if(!isset($pm[$recipient_type])) { $pm[$recipient_type] = array(); } if(!is_array($pm[$recipient_type])) { $pm[$recipient_type] = array($pm[$recipient_type]); }
| { if(!isset($pm[$recipient_type])) { $pm[$recipient_type] = array(); } if(!is_array($pm[$recipient_type])) { $pm[$recipient_type] = array($pm[$recipient_type]); }
|
$pm[$recipient_type] = array_map('trim', $pm[$recipient_type]); $pm[$recipient_type] = array_filter($pm[$recipient_type]);
| $pm[$recipient_type] = array_map('trim', $pm[$recipient_type]); $pm[$recipient_type] = array_filter($pm[$recipient_type]);
|
Zeile 193 | Zeile 203 |
---|
return false; } continue;
|
return false; } continue;
|
}
| }
|
$recipientUsernames = array_map(array($db, 'escape_string'), $pm[$recipient_type]); $recipientUsernames = "'".implode("','", $recipientUsernames)."'";
| $recipientUsernames = array_map(array($db, 'escape_string'), $pm[$recipient_type]); $recipientUsernames = "'".implode("','", $recipientUsernames)."'";
|
Zeile 230 | Zeile 240 |
---|
if(!isset($pm[$recipient_type])) { $pm[$recipient_type] = array();
|
if(!isset($pm[$recipient_type])) { $pm[$recipient_type] = array();
|
} if(!is_array($pm[$recipient_type]))
| } if(!is_array($pm[$recipient_type]))
|
{ $pm[$recipient_type] = array($pm[$recipient_type]); }
| { $pm[$recipient_type] = array($pm[$recipient_type]); }
|
Zeile 242 | Zeile 252 |
---|
if(empty($pm[$recipient_type])) { if($recipient_type == 'toid' && !$pm['saveasdraft'])
|
if(empty($pm[$recipient_type])) { if($recipient_type == 'toid' && !$pm['saveasdraft'])
|
{
| {
|
$this->set_error("no_recipients"); return false; } continue;
|
$this->set_error("no_recipients"); return false; } continue;
|
}
$recipientUids = "'".implode("','", $pm[$recipient_type])."'";
| }
$recipientUids = "'".implode("','", $pm[$recipient_type])."'";
|
$query = $db->simple_select('users', '*', 'uid IN('.$recipientUids.')');
| $query = $db->simple_select('users', '*', 'uid IN('.$recipientUids.')');
|
Zeile 260 | Zeile 270 |
---|
if($recipient_type == "bccid") { $user['bcc'] = 1;
|
if($recipient_type == "bccid") { $user['bcc'] = 1;
|
}
| }
|
$recipients[] = $user; $validUids[] = $user['uid']; }
| $recipients[] = $user; $validUids[] = $user['uid']; }
|
Zeile 274 | Zeile 284 |
---|
} } }
|
} } }
|
}
| }
|
// If we have one or more invalid recipients and we're not saving a draft, error if(count($invalid_recipients) > 0) { $invalid_recipients = implode($lang->comma, array_map("htmlspecialchars_uni", $invalid_recipients)); $this->set_error("invalid_recipients", array($invalid_recipients));
|
// If we have one or more invalid recipients and we're not saving a draft, error if(count($invalid_recipients) > 0) { $invalid_recipients = implode($lang->comma, array_map("htmlspecialchars_uni", $invalid_recipients)); $this->set_error("invalid_recipients", array($invalid_recipients));
|
return false; }
$sender_permissions = user_permissions($pm['fromid']);
// Are we trying to send this message to more users than the permissions allow? if($sender_permissions['maxpmrecipients'] > 0 && count($recipients) > $sender_permissions['maxpmrecipients'] && $this->admin_override != true)
| return false; }
if($pm['fromid'] > 0)
|
{
|
{
|
$this->set_error("too_many_recipients", array($sender_permissions['maxpmrecipients']));
| $sender_permissions = user_permissions($pm['fromid']);
// Are we trying to send this message to more users than the permissions allow? if($sender_permissions['maxpmrecipients'] > 0 && count($recipients) > $sender_permissions['maxpmrecipients'] && $this->admin_override != true) { $this->set_error("too_many_recipients", array($sender_permissions['maxpmrecipients'])); }
|
}
// 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 301 | Zeile 315 |
---|
// 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['canoverridepm'] != 1)
| if($this->admin_override != true && empty($sender_permissions['canoverridepm']))
|
{ if(!empty($user['ignorelist']) && strpos(','.$user['ignorelist'].',', ','.$pm['fromid'].',') !== false) {
| { if(!empty($user['ignorelist']) && strpos(','.$user['ignorelist'].',', ','.$pm['fromid'].',') !== false) {
|
Zeile 323 | Zeile 337 |
---|
}
// Check to see if the user has reached their private message quota - if they have, email them.
|
}
// 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'] && $sender_permissions['cancp'] != 1 && empty($pm['saveasdraft']) && !$this->admin_override)
| if($recipient_permissions['pmquota'] != 0 && $user['totalpms'] >= $recipient_permissions['pmquota'] && empty($sender_permissions['cancp']) && 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 386 | Zeile 400 |
---|
if(isset($user['bcc']) && $user['bcc'] == 1) { $pm['recipients'][$user['uid']]['bcc'] = 1;
|
if(isset($user['bcc']) && $user['bcc'] == 1) { $pm['recipients'][$user['uid']]['bcc'] = 1;
|
} } return true; }
| } } return true; }
|
/** * Verify that the user is not flooding the system. * * @return boolean */ function verify_pm_flooding()
|
/** * Verify that the user is not flooding the system. * * @return boolean */ function verify_pm_flooding()
|
{
| {
|
global $mybb, $db;
$pm = &$this->data;
// Check if post flooding is enabled within MyBB or if the admin override option is specified.
|
global $mybb, $db;
$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 && !is_moderator(0, '', $pm['fromid']))
| 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']);
|
Zeile 411 | Zeile 425 |
---|
// 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");
|
// 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']) {
| // A little bit of calculation magic and moderator status checking. if(TIME_NOW-$sender['lastpm'] <= $mybb->settings['pmfloodsecs']) {
|
Zeile 443 | Zeile 457 |
---|
$this->verify_yesno_option($options, 'signature', 1); $this->verify_yesno_option($options, 'savecopy', 1);
|
$this->verify_yesno_option($options, 'signature', 1); $this->verify_yesno_option($options, 'savecopy', 1);
|
$this->verify_yesno_option($options, 'disablesmilies', 0);
| $this->verify_yesno_option($options, 'disablesmilies', 0);
|
// Requesting a read receipt? if(isset($options['readreceipt']) && $options['readreceipt'] == 1) { $options['readreceipt'] = 1;
|
// Requesting a read receipt? if(isset($options['readreceipt']) && $options['readreceipt'] == 1) { $options['readreceipt'] = 1;
|
} else
| } else
|
{ $options['readreceipt'] = 0; } return true; }
|
{ $options['readreceipt'] = 0; } return true; }
|
|
|
/** * Validate an entire private message. *
| /** * Validate an entire private message. *
|
Zeile 469 | Zeile 483 |
---|
$pm = &$this->data;
if(empty($pm['savedraft']))
|
$pm = &$this->data;
if(empty($pm['savedraft']))
|
{
| {
|
$this->verify_pm_flooding(); }
// Verify all PM assets. $this->verify_subject();
|
$this->verify_pm_flooding(); }
// Verify all PM assets. $this->verify_subject();
|
|
|
$this->verify_sender();
$this->verify_recipient();
| $this->verify_sender();
$this->verify_recipient();
|
Zeile 488 | Zeile 502 |
---|
// Choose the appropriate folder to save in. if(!empty($pm['saveasdraft']))
|
// Choose the appropriate folder to save in. if(!empty($pm['saveasdraft']))
|
{
| {
|
$pm['folder'] = 3; } else { $pm['folder'] = 1;
|
$pm['folder'] = 3; } else { $pm['folder'] = 1;
|
}
| }
|
// We are done validating, return. $this->set_validated(true);
| // We are done validating, return. $this->set_validated(true);
|
Zeile 543 | Zeile 557 |
---|
$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 585 | Zeile 596 |
---|
$draftcheck = $db->fetch_array($query);
// This PM was previously a draft
|
$draftcheck = $db->fetch_array($query);
// This PM was previously a draft
|
if(!empty($draftcheck['pmid']))
| if($draftcheck)
|
{ if($draftcheck['deletetime']) {
| { if($draftcheck['deletetime']) {
|