diff options
Diffstat (limited to 'phpBB/modules/ucp/ucp_pm_viewfolder.php')
| -rw-r--r-- | phpBB/modules/ucp/ucp_pm_viewfolder.php | 565 |
1 files changed, 0 insertions, 565 deletions
diff --git a/phpBB/modules/ucp/ucp_pm_viewfolder.php b/phpBB/modules/ucp/ucp_pm_viewfolder.php deleted file mode 100644 index 5b252f7410..0000000000 --- a/phpBB/modules/ucp/ucp_pm_viewfolder.php +++ /dev/null @@ -1,565 +0,0 @@ -<?php -/** -* -* @package ucp -* @version $Id$ -* @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* View message folder -* Called from ucp_pm with mode == 'view' && action == 'view_folder' -*/ -function view_folder($id, $mode, $folder_id, $folder) -{ - $submit_export = phpbb_request::is_set_post('submit_export'); - - $folder_info = get_pm_from($folder_id, $folder, phpbb::$user->data['user_id']); - - if (!$submit_export) - { - phpbb::$user->add_lang('viewforum'); - - // Grab icons - $icons = phpbb_cache::obtain_icons(); - - $color_rows = array('marked', 'replied'); - - // only show the friend/foe color rows if the module is enabled - $zebra_enabled = false; - - $_module = new p_master(); - $_module->list_modules('ucp'); - $_module->set_active('zebra'); - - $zebra_enabled = ($_module->active_module === false) ? false : true; - - unset($_module); - - if ($zebra_enabled) - { - $color_rows = array_merge($color_rows, array('friend', 'foe')); - } - - foreach ($color_rows as $var) - { - phpbb::$template->assign_block_vars('pm_colour_info', array( - 'IMG' => phpbb::$user->img("pm_{$var}", ''), - 'CLASS' => "pm_{$var}_colour", - 'LANG' => phpbb::$user->lang[strtoupper($var) . '_MESSAGE'], - )); - } - - $mark_options = array('mark_important', 'delete_marked'); - - $s_mark_options = ''; - foreach ($mark_options as $mark_option) - { - $s_mark_options .= '<option value="' . $mark_option . '">' . phpbb::$user->lang[strtoupper($mark_option)] . '</option>'; - } - - // We do the folder moving options here too, for template authors to use... - $s_folder_move_options = ''; - if ($folder_id != PRIVMSGS_NO_BOX && $folder_id != PRIVMSGS_OUTBOX) - { - foreach ($folder as $f_id => $folder_ary) - { - if ($f_id == PRIVMSGS_OUTBOX || $f_id == PRIVMSGS_SENTBOX || $f_id == $folder_id) - { - continue; - } - - $s_folder_move_options .= '<option' . (($f_id != PRIVMSGS_INBOX) ? ' class="sep"' : '') . ' value="' . $f_id . '">'; - $s_folder_move_options .= sprintf(phpbb::$user->lang['MOVE_MARKED_TO_FOLDER'], $folder_ary['folder_name']); - $s_folder_move_options .= (($folder_ary['unread_messages']) ? ' [' . $folder_ary['unread_messages'] . '] ' : '') . '</option>'; - } - } - $friend = $foe = array(); - - // Get friends and foes - $sql = 'SELECT * - FROM ' . ZEBRA_TABLE . ' - WHERE user_id = ' . phpbb::$user->data['user_id']; - $result = phpbb::$db->sql_query($sql); - - while ($row = phpbb::$db->sql_fetchrow($result)) - { - $friend[$row['zebra_id']] = $row['friend']; - $foe[$row['zebra_id']] = $row['foe']; - } - phpbb::$db->sql_freeresult($result); - - phpbb::$template->assign_vars(array( - 'S_MARK_OPTIONS' => $s_mark_options, - 'S_MOVE_MARKED_OPTIONS' => $s_folder_move_options, - )); - - // Okay, lets dump out the page ... - if (sizeof($folder_info['pm_list'])) - { - $address_list = array(); - - // Build Recipient List if in outbox/sentbox - max two additional queries - if ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) - { - $recipient_list = $address = array(); - - foreach ($folder_info['rowset'] as $message_id => $row) - { - $address[$message_id] = rebuild_header(array('to' => $row['to_address'], 'bcc' => $row['bcc_address'])); - $_save = array('u', 'g'); - foreach ($_save as $save) - { - if (isset($address[$message_id][$save]) && sizeof($address[$message_id][$save])) - { - foreach (array_keys($address[$message_id][$save]) as $ug_id) - { - $recipient_list[$save][$ug_id] = array('name' => phpbb::$user->lang['NA'], 'colour' => ''); - } - } - } - } - - $_types = array('u', 'g'); - foreach ($_types as $ug_type) - { - if (!empty($recipient_list[$ug_type])) - { - if ($ug_type == 'u') - { - $sql = 'SELECT user_id as id, username as name, user_colour as colour - FROM ' . USERS_TABLE . ' - WHERE '; - } - else - { - $sql = 'SELECT group_id as id, group_name as name, group_colour as colour, group_type - FROM ' . GROUPS_TABLE . ' - WHERE '; - } - $sql .= phpbb::$db->sql_in_set(($ug_type == 'u') ? 'user_id' : 'group_id', array_map('intval', array_keys($recipient_list[$ug_type]))); - - $result = phpbb::$db->sql_query($sql); - - while ($row = phpbb::$db->sql_fetchrow($result)) - { - if ($ug_type == 'g') - { - $row['name'] = ($row['group_type'] == GROUP_SPECIAL) ? phpbb::$user->lang['G_' . $row['name']] : $row['name']; - } - - $recipient_list[$ug_type][$row['id']] = array('name' => $row['name'], 'colour' => $row['colour']); - } - phpbb::$db->sql_freeresult($result); - } - } - - foreach ($address as $message_id => $adr_ary) - { - foreach ($adr_ary as $type => $id_ary) - { - foreach ($id_ary as $ug_id => $_id) - { - if ($type == 'u') - { - $address_list[$message_id][] = get_username_string('full', $ug_id, $recipient_list[$type][$ug_id]['name'], $recipient_list[$type][$ug_id]['colour']); - } - else - { - $user_colour = ($recipient_list[$type][$ug_id]['colour']) ? ' style="font-weight: bold; color:#' . $recipient_list[$type][$ug_id]['colour'] . '"' : ''; - $link = '<a href="' . append_sid('memberlist', 'mode=group&g=' . $ug_id) . '"' . $user_colour . '>'; - $address_list[$message_id][] = $link . $recipient_list[$type][$ug_id]['name'] . (($link) ? '</a>' : ''); - } - } - } - } - unset($recipient_list, $address); - } - - $data = array(); - - foreach ($folder_info['pm_list'] as $message_id) - { - $row = &$folder_info['rowset'][$message_id]; - - $folder_img = ($row['pm_unread']) ? 'pm_unread' : 'pm_read'; - $folder_alt = ($row['pm_unread']) ? 'NEW_MESSAGES' : 'NO_NEW_MESSAGES'; - - // Generate all URIs ... - $view_message_url = append_sid('ucp', "i=$id&mode=view&f=$folder_id&p=$message_id"); - $remove_message_url = append_sid('ucp', "i=$id&mode=compose&action=delete&p=$message_id"); - - $row_indicator = ''; - foreach ($color_rows as $var) - { - if (($var != 'friend' && $var != 'foe' && $row['pm_' . $var]) - || - (($var == 'friend' || $var == 'foe') && isset(${$var}[$row['author_id']]) && ${$var}[$row['author_id']])) - { - $row_indicator = $var; - break; - } - } - - // Send vars to template - phpbb::$template->assign_block_vars('messagerow', array( - 'PM_CLASS' => ($row_indicator) ? 'pm_' . $row_indicator . '_colour' : '', - - 'MESSAGE_AUTHOR_FULL' => get_username_string('full', $row['author_id'], $row['username'], $row['user_colour'], $row['username']), - 'MESSAGE_AUTHOR_COLOUR' => get_username_string('colour', $row['author_id'], $row['username'], $row['user_colour'], $row['username']), - 'MESSAGE_AUTHOR' => get_username_string('username', $row['author_id'], $row['username'], $row['user_colour'], $row['username']), - 'U_MESSAGE_AUTHOR' => get_username_string('profile', $row['author_id'], $row['username'], $row['user_colour'], $row['username']), - - 'FOLDER_ID' => $folder_id, - 'MESSAGE_ID' => $message_id, - 'SENT_TIME' => phpbb::$user->format_date($row['message_time']), - 'SUBJECT' => censor_text($row['message_subject']), - 'FOLDER' => (isset($folder[$row['folder_id']])) ? $folder[$row['folder_id']]['folder_name'] : '', - 'U_FOLDER' => (isset($folder[$row['folder_id']])) ? append_sid('ucp', 'folder=' . $row['folder_id']) : '', - 'PM_ICON_IMG' => (!empty($icons[$row['icon_id']])) ? '<img src="' . phpbb::$config['icons_path'] . '/' . $icons[$row['icon_id']]['img'] . '" width="' . $icons[$row['icon_id']]['width'] . '" height="' . $icons[$row['icon_id']]['height'] . '" alt="" title="" />' : '', - 'PM_ICON_URL' => (!empty($icons[$row['icon_id']])) ? phpbb::$config['icons_path'] . '/' . $icons[$row['icon_id']]['img'] : '', - 'FOLDER_IMG' => phpbb::$user->img($folder_img, $folder_alt), - 'FOLDER_IMG_SRC' => phpbb::$user->img($folder_img, $folder_alt, 'src'), - 'PM_IMG' => ($row_indicator) ? phpbb::$user->img('pm_' . $row_indicator, '') : '', - 'ATTACH_ICON_IMG' => (phpbb::$acl->acl_get('u_pm_download') && $row['message_attachment'] && phpbb::$config['allow_pm_attach']) ? phpbb::$user->img('icon_topic_attach', 'TOTAL_ATTACHMENTS') : '', - - 'S_PM_DELETED' => ($row['pm_deleted']) ? true : false, - 'S_AUTHOR_DELETED' => ($row['author_id'] == ANONYMOUS) ? true : false, - - 'U_VIEW_PM' => ($row['pm_deleted']) ? '' : $view_message_url, - 'U_REMOVE_PM' => ($row['pm_deleted']) ? $remove_message_url : '', - 'RECIPIENTS' => ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) ? implode(', ', $address_list[$message_id]) : '', - )); - } - unset($folder_info['rowset']); - - phpbb::$template->assign_vars(array( - 'S_SHOW_RECIPIENTS' => ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) ? true : false, - 'S_SHOW_COLOUR_LEGEND' => true, - - 'S_PM_ICONS' => (phpbb::$config['enable_pm_icons']) ? true : false, - )); - } - } - else - { - $export_type = request_var('export_option', ''); - $enclosure = request_var('enclosure', ''); - $delimiter = request_var('delimiter', ''); - - if ($export_type == 'CSV' && ($delimiter === '' || $enclosure === '')) - { - phpbb::$template->assign_var('PROMPT', true); - } - else - { - // Build Recipient List if in outbox/sentbox - $address = array(); - if ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) - { - foreach ($folder_info['rowset'] as $message_id => $row) - { - $address[$message_id] = rebuild_header(array('to' => $row['to_address'], 'bcc' => $row['bcc_address'])); - } - } - - foreach ($folder_info['pm_list'] as $message_id) - { - $row = &$folder_info['rowset'][$message_id]; - - include_once(PHPBB_ROOT_PATH . 'includes/functions_posting.' . PHP_EXT); - - $sql = 'SELECT p.message_text, p.bbcode_uid - FROM ' . PRIVMSGS_TO_TABLE . ' t, ' . PRIVMSGS_TABLE . ' p, ' . USERS_TABLE . ' u - WHERE t.user_id = ' . phpbb::$user->data['user_id'] . " - AND p.author_id = u.user_id - AND t.folder_id = $folder_id - AND t.msg_id = p.msg_id - AND p.msg_id = $message_id"; - $result = phpbb::$db->sql_query_limit($sql, 1); - $message_row = phpbb::$db->sql_fetchrow($result); - phpbb::$db->sql_freeresult($result); - - $_types = array('u', 'g'); - foreach ($_types as $ug_type) - { - if (isset($address[$message_id][$ug_type]) && sizeof($address[$message_id][$ug_type])) - { - if ($ug_type == 'u') - { - $sql = 'SELECT user_id as id, username as name - FROM ' . USERS_TABLE . ' - WHERE '; - } - else - { - $sql = 'SELECT group_id as id, group_name as name - FROM ' . GROUPS_TABLE . ' - WHERE '; - } - $sql .= phpbb::$db->sql_in_set(($ug_type == 'u') ? 'user_id' : 'group_id', array_map('intval', array_keys($address[$message_id][$ug_type]))); - - $result = phpbb::$db->sql_query($sql); - - while ($info_row = phpbb::$db->sql_fetchrow($result)) - { - $address[$message_id][$ug_type][$address[$message_id][$ug_type][$info_row['id']]][] = $info_row['name']; - unset($address[$message_id][$ug_type][$info_row['id']]); - } - phpbb::$db->sql_freeresult($result); - } - } - - decode_message($message_row['message_text'], $message_row['bbcode_uid']); - - $data[] = array( - 'subject' => censor_text($row['message_subject']), - 'sender' => $row['username'], - 'date' => phpbb::$user->format_date($row['message_time'], 'c', true), // ISO 8601 date. - 'to' => ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) ? $address[$message_id] : '', - 'message' => $message_row['message_text'] - ); - } - - switch ($export_type) - { - case 'CSV': - case 'CSV_EXCEL': - $mimetype = 'text/csv'; - $filetype = 'csv'; - - if ($export_type == 'CSV_EXCEL') - { - $enclosure = '"'; - $delimiter = ','; - $newline = "\r\n"; - } - else - { - $newline = "\n"; - } - - $string = ''; - foreach ($data as $value) - { - $recipients = $value['to']; - $value['to'] = $value['bcc'] = ''; - - if (is_array($recipients)) - { - foreach ($recipients as $values) - { - $value['bcc'] .= (isset($values['bcc']) && is_array($values['bcc'])) ? ',' . implode(',', $values['bcc']) : ''; - $value['to'] .= (isset($values['to']) && is_array($values['to'])) ? ',' . implode(',', $values['to']) : ''; - } - - // Remove the commas which will appear before the first entry. - $value['to'] = substr($value['to'], 1); - $value['bcc'] = substr($value['bcc'], 1); - } - - foreach ($value as $tag => $text) - { - $cell = str_replace($enclosure, $enclosure . $enclosure, $text); - - if (strpos($cell, $enclosure) !== false || strpos($cell, $delimiter) !== false || strpos($cell, $newline) !== false) - { - $string .= $enclosure . $text . $enclosure . $delimiter; - } - else - { - $string .= $cell . $delimiter; - } - } - $string = substr($string, 0, -1) . $newline; - } - break; - - case 'XML': - $mimetype = 'application/xml'; - $filetype = 'xml'; - $string = '<?xml version="1.0"?>' . "\n"; - $string .= "<phpbb>\n"; - - foreach ($data as $value) - { - $string .= "\t<privmsg>\n"; - - if (is_array($value['to'])) - { - foreach ($value['to'] as $key => $values) - { - foreach ($values as $type => $types) - { - foreach ($types as $name) - { - $string .= "\t\t<recipient type=\"$type\" status=\"$key\">$name</recipient>\n"; - } - } - } - } - - unset($value['to']); - - foreach ($value as $tag => $text) - { - $string .= "\t\t<$tag>$text</$tag>\n"; - } - - $string .= "\t</privmsg>\n"; - } - $string .= '</phpbb>'; - break; - } - - header('Pragma: no-cache'); - header("Content-Type: $mimetype; name=\"data.$filetype\""); - header("Content-disposition: attachment; filename=data.$filetype"); - echo $string; - exit; - } - } -} - -/** -* Get Messages from folder/user -*/ -function get_pm_from($folder_id, $folder, $user_id) -{ - $start = request_var('start', 0); - - // Additional vars later, pm ordering is mostly different from post ordering. :/ - $sort_days = request_var('st', 0); - $sort_key = request_var('sk', 't'); - $sort_dir = request_var('sd', 'd'); - - // PM ordering options - $limit_days = array(0 => phpbb::$user->lang['ALL_MESSAGES'], 1 => phpbb::$user->lang['1_DAY'], 7 => phpbb::$user->lang['7_DAYS'], 14 => phpbb::$user->lang['2_WEEKS'], 30 => phpbb::$user->lang['1_MONTH'], 90 => phpbb::$user->lang['3_MONTHS'], 180 => phpbb::$user->lang['6_MONTHS'], 365 => phpbb::$user->lang['1_YEAR']); - - // No sort by Author for sentbox/outbox (already only author available) - // Also, sort by msg_id for the time - private messages are not as prone to errors as posts are. - if ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) - { - $sort_by_text = array('t' => phpbb::$user->lang['POST_TIME'], 's' => phpbb::$user->lang['SUBJECT']); - $sort_by_sql = array('t' => 'p.msg_id', 's' => 'p.message_subject'); - } - else - { - $sort_by_text = array('a' => phpbb::$user->lang['AUTHOR'], 't' => phpbb::$user->lang['POST_TIME'], 's' => phpbb::$user->lang['SUBJECT']); - $sort_by_sql = array('a' => 'u.username_clean', 't' => 'p.msg_id', 's' => 'p.message_subject'); - } - - $s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = ''; - gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param); - - $folder_sql = 't.folder_id = ' . (int) $folder_id; - - // Limit pms to certain time frame, obtain correct pm count - if ($sort_days) - { - $min_post_time = time() - ($sort_days * 86400); - - if (phpbb_request::is_set_post('sort')) - { - $start = 0; - } - - $sql = 'SELECT COUNT(t.msg_id) AS pm_count - FROM ' . PRIVMSGS_TO_TABLE . ' t, ' . PRIVMSGS_TABLE . " p - WHERE $folder_sql - AND t.user_id = $user_id - AND t.msg_id = p.msg_id - AND p.message_time >= $min_post_time"; - $result = phpbb::$db->sql_query_limit($sql, 1); - $pm_count = (int) phpbb::$db->sql_fetchfield('pm_count'); - phpbb::$db->sql_freeresult($result); - - $sql_limit_time = "AND p.message_time >= $min_post_time"; - } - else - { - $pm_count = (!empty($folder[$folder_id]['num_messages'])) ? $folder[$folder_id]['num_messages'] : 0; - $sql_limit_time = ''; - } - - phpbb::$template->assign_vars(array( - 'PAGINATION' => generate_pagination(append_sid('ucp', "i=pm&mode=view&action=view_folder&f=$folder_id&$u_sort_param"), $pm_count, phpbb::$config['topics_per_page'], $start), - 'PAGE_NUMBER' => on_page($pm_count, phpbb::$config['topics_per_page'], $start), - 'TOTAL_MESSAGES' => (($pm_count == 1) ? phpbb::$user->lang['VIEW_PM_MESSAGE'] : sprintf(phpbb::$user->lang['VIEW_PM_MESSAGES'], $pm_count)), - - 'POST_IMG' => (!phpbb::$acl->acl_get('u_sendpm')) ? phpbb::$user->img('button_topic_locked', 'POST_PM_LOCKED') : phpbb::$user->img('button_pm_new', 'POST_NEW_PM'), - - 'L_NO_MESSAGES' => (!phpbb::$acl->acl_get('u_sendpm')) ? phpbb::$user->lang['POST_PM_LOCKED'] : phpbb::$user->lang['NO_MESSAGES'], - - 'S_SELECT_SORT_DIR' => $s_sort_dir, - 'S_SELECT_SORT_KEY' => $s_sort_key, - 'S_SELECT_SORT_DAYS' => $s_limit_days, - 'S_TOPIC_ICONS' => (phpbb::$config['enable_pm_icons']) ? true : false, - - 'U_POST_NEW_TOPIC' => (phpbb::$acl->acl_get('u_sendpm')) ? append_sid('ucp', 'i=pm&mode=compose') : '', - 'S_PM_ACTION' => append_sid('ucp', "i=pm&mode=view&action=view_folder&f=$folder_id" . (($start !== 0) ? "&start=$start" : '')), - )); - - // Grab all pm data - $rowset = $pm_list = array(); - - // If the user is trying to reach late pages, start searching from the end - $store_reverse = false; - $sql_limit = phpbb::$config['topics_per_page']; - if ($start > $pm_count / 2) - { - $store_reverse = true; - - if ($start + phpbb::$config['topics_per_page'] > $pm_count) - { - $sql_limit = min(phpbb::$config['topics_per_page'], max(1, $pm_count - $start)); - } - - // Select the sort order - $sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'ASC' : 'DESC'); - $sql_start = max(0, $pm_count - $sql_limit - $start); - } - else - { - // Select the sort order - $sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC'); - $sql_start = $start; - } - - $sql = 'SELECT t.*, p.root_level, p.message_time, p.message_subject, p.icon_id, p.to_address, p.message_attachment, p.bcc_address, u.username, u.username_clean, u.user_colour - FROM ' . PRIVMSGS_TO_TABLE . ' t, ' . PRIVMSGS_TABLE . ' p, ' . USERS_TABLE . " u - WHERE t.user_id = $user_id - AND p.author_id = u.user_id - AND $folder_sql - AND t.msg_id = p.msg_id - $sql_limit_time - ORDER BY $sql_sort_order"; - $result = phpbb::$db->sql_query_limit($sql, $sql_limit, $sql_start); - - while ($row = phpbb::$db->sql_fetchrow($result)) - { - $rowset[$row['msg_id']] = $row; - $pm_list[] = $row['msg_id']; - } - phpbb::$db->sql_freeresult($result); - - $pm_list = ($store_reverse) ? array_reverse($pm_list) : $pm_list; - - return array( - 'pm_count' => $pm_count, - 'pm_list' => $pm_list, - 'rowset' => $rowset - ); -} - -?>
\ No newline at end of file |
