diff options
Diffstat (limited to 'phpBB/includes/functions_privmsgs.php')
| -rw-r--r-- | phpBB/includes/functions_privmsgs.php | 57 | 
1 files changed, 44 insertions, 13 deletions
diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index 8e1561b842..c8c2670986 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -881,9 +881,10 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id)  	global $db, $user, $phpbb_container; +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager'); -	$phpbb_notifications->mark_notifications_read('notification.type.pm', $msg_id, $user_id); +	$phpbb_notifications->mark_notifications('notification.type.pm', $msg_id, $user_id);  	$sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . "  		SET pm_unread = 0 @@ -937,10 +938,10 @@ function mark_folder_read($user_id, $folder_id)  */  function handle_mark_actions($user_id, $mark_action)  { -	global $db, $user, $phpbb_root_path, $phpEx; +	global $db, $user, $phpbb_root_path, $phpEx, $request; -	$msg_ids		= request_var('marked_msg_id', array(0)); -	$cur_folder_id	= request_var('cur_folder_id', PRIVMSGS_NO_BOX); +	$msg_ids		= $request->variable('marked_msg_id', array(0)); +	$cur_folder_id	= $request->variable('cur_folder_id', PRIVMSGS_NO_BOX);  	$confirm		= (isset($_POST['confirm'])) ? true : false;  	if (!sizeof($msg_ids)) @@ -1130,6 +1131,7 @@ function delete_pm($user_id, $msg_ids, $folder_id)  		$user->data['user_unread_privmsg'] -= $num_unread;  	} +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	$phpbb_notifications->delete_notifications('notification.type.pm', array_keys($delete_rows)); @@ -1243,6 +1245,7 @@ function phpbb_delete_users_pms($user_ids)  	$db->sql_transaction('begin'); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	if (!empty($undelivered_msg)) @@ -1608,7 +1611,7 @@ function get_folder_status($folder_id, $folder)  */  function submit_pm($mode, $subject, &$data, $put_in_outbox = true)  { -	global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher; +	global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path, $phpbb_container, $phpbb_dispatcher, $request;  	// We do not handle erasing pms here  	if ($mode == 'delete') @@ -1902,13 +1905,13 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)  		if ($space_taken && $files_added)  		{ -			set_config_count('upload_dir_size', $space_taken, true); -			set_config_count('num_files', $files_added, true); +			$config->increment('upload_dir_size', $space_taken, false); +			$config->increment('num_files', $files_added, false);  		}  	}  	// Delete draft if post was loaded... -	$draft_id = request_var('draft_loaded', 0); +	$draft_id = $request->variable('draft_loaded', 0);  	if ($draft_id)  	{  		$sql = 'DELETE FROM ' . DRAFTS_TABLE . " @@ -1925,6 +1928,7 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)  		'recipients'			=> $recipients,  	)); +	/* @var $phpbb_notifications \phpbb\notification\manager */  	$phpbb_notifications = $phpbb_container->get('notification_manager');  	if ($mode == 'edit') @@ -2096,6 +2100,8 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode  			'S_IN_POST_MODE'	=> $in_post_mode,  			'MSG_ID'			=> $row['msg_id'], +			'MESSAGE_TIME'		=> $row['message_time'], +			'USER_ID'			=> $row['user_id'],  			'U_VIEW_MESSAGE'	=> "$url&f=$folder_id&p=" . $row['msg_id'],  			'U_QUOTE'			=> (!$in_post_mode && $auth->acl_get('u_sendpm') && $author_id != ANONYMOUS) ? "$url&mode=compose&action=quote&f=" . $folder_id . "&p=" . $row['msg_id'] : '',  			'U_POST_REPLY_PM'	=> ($author_id != $user->data['user_id'] && $author_id != ANONYMOUS && $auth->acl_get('u_sendpm')) ? "$url&mode=compose&action=reply&f=$folder_id&p=" . $row['msg_id'] : '') @@ -2123,17 +2129,42 @@ function set_user_message_limit()  {  	global $user, $db, $config; -	// Get maximum about from user memberships - if it is 0, there is no limit set and we use the maximum value within the config. -	$sql = 'SELECT MAX(g.group_message_limit) as max_message_limit +	// Get maximum about from user memberships +	$message_limit = phpbb_get_max_setting_from_group($db, $user->data['user_id'], 'message_limit'); + +	// If it is 0, there is no limit set and we use the maximum value within the config. +	$user->data['message_limit'] = (!$message_limit) ? $config['pm_max_msgs'] : $message_limit; +} + +/** + * Get the maximum PM setting for the groups of the user + * + * @param \phpbb\db\driver\driver_interface $db + * @param int $user_id + * @param string $setting Only 'max_recipients' and 'message_limit' are supported + * @return int The maximum setting for all groups of the user, unless one group has '0' + * @throws \InvalidArgumentException If selected group setting is not supported + */ +function phpbb_get_max_setting_from_group(\phpbb\db\driver\driver_interface $db, $user_id, $setting) +{ +	if ($setting !== 'max_recipients' && $setting !== 'message_limit') +	{ +		throw new InvalidArgumentException('Setting "' . $setting . '" is not supported'); +	} + +	// Get maximum number of allowed recipients +	$sql = 'SELECT MIN(g.group_' . $setting . ') as min_setting, MAX(g.group_' . $setting . ') as max_setting  		FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug -		WHERE ug.user_id = ' . $user->data['user_id'] . ' +		WHERE ug.user_id = ' . (int) $user_id . '  			AND ug.user_pending = 0  			AND ug.group_id = g.group_id';  	$result = $db->sql_query($sql); -	$message_limit = (int) $db->sql_fetchfield('max_message_limit'); +	$row = $db->sql_fetchrow($result);  	$db->sql_freeresult($result); +	$max_setting = (int) $row['max_setting']; +	$min_setting = (int) $row['min_setting']; -	$user->data['message_limit'] = (!$message_limit) ? $config['pm_max_msgs'] : $message_limit; +	return ($min_setting > 0) ? $max_setting : 0;  }  /**  | 
