mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 22:28:51 +00:00
- merged getting of unread pm count function to get_folder function
- made folder usable within the template (especially custom folder) git-svn-id: file:///svn/phpbb/trunk@5048 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
b66f68a779
commit
7a1b178fe6
3 changed files with 58 additions and 56 deletions
|
@ -100,63 +100,57 @@ $global_rule_conditions = array(
|
||||||
RULE_IS_GROUP => 'group'
|
RULE_IS_GROUP => 'group'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get number of unread messages from all folder
|
|
||||||
function get_unread_pm($user_id)
|
|
||||||
{
|
|
||||||
global $db;
|
|
||||||
|
|
||||||
$unread_pm = array();
|
|
||||||
|
|
||||||
$sql = 'SELECT folder_id, SUM(unread) as sum_unread
|
|
||||||
FROM ' . PRIVMSGS_TO_TABLE . "
|
|
||||||
WHERE user_id = $user_id
|
|
||||||
AND folder_id <> " . PRIVMSGS_OUTBOX . '
|
|
||||||
GROUP BY folder_id';
|
|
||||||
$result = $db->sql_query($sql);
|
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
|
||||||
{
|
|
||||||
if ($row['sum_unread'])
|
|
||||||
{
|
|
||||||
$unread_pm[$row['folder_id']] = $row['sum_unread'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$db->sql_freeresult($result);
|
|
||||||
|
|
||||||
return $unread_pm;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get all folder
|
// Get all folder
|
||||||
function get_folder($user_id, &$folder)
|
function get_folder($user_id, &$folder, $folder_id = false, $mode = '')
|
||||||
{
|
{
|
||||||
global $db, $user;
|
global $db, $user, $template;
|
||||||
|
|
||||||
if (!is_array($folder))
|
if (!is_array($folder))
|
||||||
{
|
{
|
||||||
$folder = array();
|
$folder = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT folder_id, COUNT(msg_id) as num_messages
|
if ($mode == 'unread')
|
||||||
|
{
|
||||||
|
$folder['unread'] = array('folder_name' => $user->lang['UNREAD_MESSAGES']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get folder informations
|
||||||
|
$sql = 'SELECT folder_id, COUNT(msg_id) as num_messages, SUM(unread) as num_unread
|
||||||
FROM ' . PRIVMSGS_TO_TABLE . "
|
FROM ' . PRIVMSGS_TO_TABLE . "
|
||||||
WHERE user_id = $user_id
|
WHERE user_id = $user_id
|
||||||
AND folder_id <> " . PRIVMSGS_NO_BOX . '
|
AND folder_id <> " . PRIVMSGS_NO_BOX . '
|
||||||
GROUP BY folder_id';
|
GROUP BY folder_id';
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
$num_messages = array();
|
$num_messages = $num_unread = array();
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$num_messages[(int) $row['folder_id']] = $row['num_messages'];
|
$num_messages[(int) $row['folder_id']] = $row['num_messages'];
|
||||||
|
$num_unread[(int) $row['folder_id']] = $row['num_unread'];
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (!isset($num_messages[PRIVMSGS_OUTBOX]))
|
// Make sure the default boxes are defined
|
||||||
|
foreach (array(PRIVMSGS_INBOX, PRIVMSGS_OUTBOX, PRIVMSGS_SENTBOX) as $default_folder)
|
||||||
{
|
{
|
||||||
$num_messages[PRIVMSGS_OUTBOX] = 0;
|
if (!isset($num_messages[$default_folder]))
|
||||||
|
{
|
||||||
|
$num_messages[$default_folder] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($num_unread[$default_folder]))
|
||||||
|
{
|
||||||
|
$num_unread[$default_folder] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$folder[PRIVMSGS_INBOX] = array('folder_name' => $user->lang['PM_INBOX'], 'num_messages' => (int) $num_messages[PRIVMSGS_INBOX]);
|
// Adjust unread status for outbox
|
||||||
|
$num_unread[PRIVMSGS_OUTBOX] = $num_messages[PRIVMSGS_OUTBOX];
|
||||||
|
|
||||||
|
$folder[PRIVMSGS_INBOX] = array('folder_name' => $user->lang['PM_INBOX'], 'num_messages' => $num_messages[PRIVMSGS_INBOX], 'unread_messages' => $num_unread[PRIVMSGS_INBOX]);
|
||||||
|
|
||||||
|
// Custom Folder
|
||||||
$sql = 'SELECT folder_id, folder_name, pm_count
|
$sql = 'SELECT folder_id, folder_name, pm_count
|
||||||
FROM ' . PRIVMSGS_FOLDER_TABLE . "
|
FROM ' . PRIVMSGS_FOLDER_TABLE . "
|
||||||
WHERE user_id = $user_id";
|
WHERE user_id = $user_id";
|
||||||
|
@ -164,12 +158,27 @@ function get_folder($user_id, &$folder)
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$folder[$row['folder_id']] = array('folder_name' => $row['folder_name'], 'num_messages' => $row['pm_count']);
|
$folder[$row['folder_id']] = array('folder_name' => $row['folder_name'], 'num_messages' => $row['pm_count'], 'unread_messages' => ((isset($num_unread[$row['folder_id']])) ? $num_unread[$row['folder_id']] : 0));
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
$folder[PRIVMSGS_OUTBOX] = array('folder_name' => $user->lang['PM_OUTBOX'], 'num_messages' => (int) $num_messages[PRIVMSGS_OUTBOX]);
|
$folder[PRIVMSGS_OUTBOX] = array('folder_name' => $user->lang['PM_OUTBOX'], 'num_messages' => $num_messages[PRIVMSGS_OUTBOX], 'unread_messages' => $num_unread[PRIVMSGS_OUTBOX]);
|
||||||
$folder[PRIVMSGS_SENTBOX] = array('folder_name' => $user->lang['PM_SENTBOX'], 'num_messages' => (int) $num_messages[PRIVMSGS_SENTBOX]);
|
$folder[PRIVMSGS_SENTBOX] = array('folder_name' => $user->lang['PM_SENTBOX'], 'num_messages' => $num_messages[PRIVMSGS_SENTBOX], 'unread_messages' => $num_unread[PRIVMSGS_SENTBOX]);
|
||||||
|
|
||||||
|
// Define Folder Array for template designers (and for making custom folders usable by the template too)
|
||||||
|
foreach ($folder as $f_id => $folder_ary)
|
||||||
|
{
|
||||||
|
$template->assign_block_vars('folder', array(
|
||||||
|
'FOLDER_ID' => $f_id,
|
||||||
|
'FOLDER_NAME' => $folder_ary['folder_name'],
|
||||||
|
'NUM_MESSAGES' => $folder_ary['num_messages'],
|
||||||
|
'UNREAD_MESSAGES' => $folder_ary['unread_messages'],
|
||||||
|
|
||||||
|
'S_CUR_FOLDER' => ($f_id == $folder_id) ? true : false,
|
||||||
|
'S_UNREAD_MESSAGES' => ($folder_ary['unread_messages']) ? true : false,
|
||||||
|
'S_CUSTOM_FOLDER' => ($f_id > 0) ? true : false)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ class ucp_pm extends module
|
||||||
}
|
}
|
||||||
|
|
||||||
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
|
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
|
||||||
|
|
||||||
$tpl_file = 'ucp_pm_' . $mode . '.html';
|
$tpl_file = 'ucp_pm_' . $mode . '.html';
|
||||||
switch ($mode)
|
switch ($mode)
|
||||||
{
|
{
|
||||||
|
@ -114,7 +114,9 @@ class ucp_pm extends module
|
||||||
// Compose message
|
// Compose message
|
||||||
case 'compose':
|
case 'compose':
|
||||||
$action = request_var('action', 'post');
|
$action = request_var('action', 'post');
|
||||||
|
|
||||||
|
get_folder($user->data['user_id'], $folder);
|
||||||
|
|
||||||
if (!$auth->acl_get('u_sendpm'))
|
if (!$auth->acl_get('u_sendpm'))
|
||||||
{
|
{
|
||||||
trigger_error('NO_AUTH_SEND_MESSAGE');
|
trigger_error('NO_AUTH_SEND_MESSAGE');
|
||||||
|
@ -127,11 +129,14 @@ class ucp_pm extends module
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'options':
|
case 'options':
|
||||||
|
get_folder($user->data['user_id'], $folder);
|
||||||
|
|
||||||
include($phpbb_root_path . 'includes/ucp/ucp_pm_options.'.$phpEx);
|
include($phpbb_root_path . 'includes/ucp/ucp_pm_options.'.$phpEx);
|
||||||
message_options($id, $mode, $global_privmsgs_rules, $global_rule_conditions);
|
message_options($id, $mode, $global_privmsgs_rules, $global_rule_conditions);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'drafts':
|
case 'drafts':
|
||||||
|
get_folder($user->data['user_id'], $folder);
|
||||||
include($phpbb_root_path . 'includes/ucp/ucp_main.'.$phpEx);
|
include($phpbb_root_path . 'includes/ucp/ucp_main.'.$phpEx);
|
||||||
$module = new ucp_main($id, $mode);
|
$module = new ucp_main($id, $mode);
|
||||||
unset($module);
|
unset($module);
|
||||||
|
@ -268,30 +273,16 @@ class ucp_pm extends module
|
||||||
update_unread_status($message_row['unread'], $message_row['msg_id'], $user->data['user_id'], $folder_id);
|
update_unread_status($message_row['unread'], $message_row['msg_id'], $user->data['user_id'], $folder_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$unread_pm = array();
|
get_folder($user->data['user_id'], $folder, $folder_id, $mode);
|
||||||
if ($user->data['user_unread_privmsg'])
|
|
||||||
{
|
|
||||||
$unread_pm = get_unread_pm($user->data['user_id']);
|
|
||||||
}
|
|
||||||
$folder = array();
|
|
||||||
|
|
||||||
if ($mode == 'unread')
|
|
||||||
{
|
|
||||||
$folder['unread'] = array('folder_name' => $user->lang['UNREAD_MESSAGES']);
|
|
||||||
}
|
|
||||||
get_folder($user->data['user_id'], $folder);
|
|
||||||
|
|
||||||
$s_folder_options = $s_to_folder_options = '';
|
$s_folder_options = $s_to_folder_options = '';
|
||||||
foreach ($folder as $f_id => $folder_ary)
|
foreach ($folder as $f_id => $folder_ary)
|
||||||
{
|
{
|
||||||
$unread = ((isset($unread_pm[$f_id]) || ($f_id == PRIVMSGS_OUTBOX && $folder_ary['num_messages'])) ? ' [' . (($f_id == PRIVMSGS_OUTBOX) ? $folder_ary['num_messages'] : $unread_pm[$f_id]) . ']' : '');
|
$option = '<option' . ((!in_array($f_id, array(PRIVMSGS_INBOX, PRIVMSGS_OUTBOX, PRIVMSGS_SENTBOX))) ? ' class="blue"' : '') . ' value="' . $f_id . '"' . ((($f_id == $folder_id && $mode != 'unread') || ($f_id === 'unread' && $mode == 'unread')) ? ' selected="selected"' : '') . '>' . $folder_ary['folder_name'] . (($folder_ary['unread_messages']) ? ' [' . $folder_ary['unread_messages'] . '] ' : '') . '</option>';
|
||||||
|
|
||||||
$option = '<option' . ((!in_array($f_id, array(PRIVMSGS_INBOX, PRIVMSGS_OUTBOX, PRIVMSGS_SENTBOX))) ? ' class="blue"' : '') . ' value="' . $f_id . '"' . ((($f_id == $folder_id && $mode != 'unread') || ($f_id === 'unread' && $mode == 'unread')) ? ' selected="selected"' : '') . '>' . $folder_ary['folder_name'] . $unread . '</option>';
|
|
||||||
|
|
||||||
$s_to_folder_options .= ($f_id != PRIVMSGS_OUTBOX && $f_id != PRIVMSGS_SENTBOX) ? $option : '';
|
$s_to_folder_options .= ($f_id != PRIVMSGS_OUTBOX && $f_id != PRIVMSGS_SENTBOX) ? $option : '';
|
||||||
$s_folder_options .= $option;
|
$s_folder_options .= $option;
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_sentbox($folder[PRIVMSGS_SENTBOX]['num_messages']);
|
clean_sentbox($folder[PRIVMSGS_SENTBOX]['num_messages']);
|
||||||
|
|
||||||
// Header for message view - folder and so on
|
// Header for message view - folder and so on
|
||||||
|
|
|
@ -564,9 +564,9 @@ function define_rule_option($hardcoded, $rule_option, $rule_lang, $check_ary)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule_conditions, &$rule_save_ary)
|
function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule_conditions)
|
||||||
{
|
{
|
||||||
global $db, $template, $_REQUEST;
|
global $db, $template;
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'S_COND_DEFINED' => true,
|
'S_COND_DEFINED' => true,
|
||||||
|
@ -612,6 +612,7 @@ function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule
|
||||||
FROM ' . USERS_TABLE . "
|
FROM ' . USERS_TABLE . "
|
||||||
WHERE username = '" . $db->sql_escape($rule_string) . "'";
|
WHERE username = '" . $db->sql_escape($rule_string) . "'";
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
if (!($rule_user_id = $db->sql_fetchfield('user_id', 0, $result)))
|
if (!($rule_user_id = $db->sql_fetchfield('user_id', 0, $result)))
|
||||||
{
|
{
|
||||||
$rule_string = '';
|
$rule_string = '';
|
||||||
|
@ -624,6 +625,7 @@ function define_cond_option($hardcoded, $cond_option, $rule_option, $global_rule
|
||||||
FROM ' . USERS_TABLE . "
|
FROM ' . USERS_TABLE . "
|
||||||
WHERE user_id = $rule_user_id";
|
WHERE user_id = $rule_user_id";
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
if (!($rule_string = $db->sql_fetchfield('username', 0, $result)))
|
if (!($rule_string = $db->sql_fetchfield('username', 0, $result)))
|
||||||
{
|
{
|
||||||
$rule_user_id = 0;
|
$rule_user_id = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue