2004-06-02 18:07:40 +00:00
< ? php
2005-04-09 12:26:45 +00:00
/**
*
* @ package ucp
* @ version $Id $
* @ copyright ( c ) 2005 phpBB Group
* @ license http :// opensource . org / licenses / gpl - license . php GNU Public License
*
*/
/**
* View message folder
2005-10-02 18:22:59 +00:00
* Called from ucp_pm with mode == 'view' && action == 'view_folder'
2005-04-09 12:26:45 +00:00
*/
2006-04-06 17:15:45 +00:00
function view_folder ( $id , $mode , $folder_id , $folder )
2004-06-02 18:07:40 +00:00
{
2005-10-04 21:31:35 +00:00
global $user , $template , $auth , $db , $cache ;
global $phpbb_root_path , $config , $phpEx , $SID ;
2005-10-02 18:22:59 +00:00
2006-02-22 22:17:36 +00:00
$submit_export = ( isset ( $_POST [ 'submit_export' ])) ? true : false ;
2005-10-02 18:22:59 +00:00
2006-04-06 17:15:45 +00:00
$folder_info = get_pm_from ( $folder_id , $folder , $user -> data [ 'user_id' ], " { $phpbb_root_path } ucp. $phpEx $SID " );
2006-03-02 04:39:48 +00:00
2006-02-22 22:17:36 +00:00
if ( ! $submit_export )
{
$user -> add_lang ( 'viewforum' );
2004-06-02 18:07:40 +00:00
2006-02-22 22:17:36 +00:00
// Grab icons
$icons = array ();
$cache -> obtain_icons ( $icons );
2005-10-02 18:22:59 +00:00
2006-03-12 23:19:55 +00:00
$color_rows = array ( 'marked' , 'replied' , 'friend' , 'foe' );
2004-06-02 18:07:40 +00:00
2006-02-22 22:17:36 +00:00
foreach ( $color_rows as $var )
{
$template -> assign_block_vars ( 'pm_colour_info' , array (
'IMG' => $user -> img ( " pm_ { $var } " , '' ),
'CLASS' => " pm_ { $var } _colour " ,
'LANG' => $user -> lang [ strtoupper ( $var ) . '_MESSAGE' ])
);
}
2004-06-02 18:07:40 +00:00
2006-02-22 22:17:36 +00:00
$mark_options = array ( 'mark_important' , 'delete_marked' );
2004-06-02 18:07:40 +00:00
2006-02-22 22:17:36 +00:00
$s_mark_options = '' ;
foreach ( $mark_options as $mark_option )
{
$s_mark_options .= '<option value="' . $mark_option . '">' . $user -> lang [ strtoupper ( $mark_option )] . '</option>' ;
}
2004-06-02 18:07:40 +00:00
2006-04-06 17:15:45 +00:00
// We do the folder moving options here too, for template authors to use...
$s_folder_move_options = '' ;
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="blue"' : '' ) . ' value="' . $f_id . '">' ;
$s_folder_move_options .= sprintf ( $user -> lang [ 'MOVE_MARKED_TO_FOLDER' ], $folder_ary [ 'folder_name' ]);
$s_folder_move_options .= (( $folder_ary [ 'unread_messages' ]) ? ' [' . $folder_ary [ 'unread_messages' ] . '] ' : '' ) . '</option>' ;
}
2006-02-22 22:17:36 +00:00
$friend = $foe = array ();
2004-06-02 18:07:40 +00:00
2006-02-22 22:17:36 +00:00
// Get friends and foes
$sql = ' SELECT *
FROM ' . ZEBRA_TABLE . '
WHERE user_id = ' . $user->data[' user_id ' ];
$result = $db -> sql_query ( $sql );
2004-06-02 18:07:40 +00:00
2006-02-22 22:17:36 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
$friend [ $row [ 'zebra_id' ]] = $row [ 'friend' ];
$foe [ $row [ 'zebra_id' ]] = $row [ 'foe' ];
}
$db -> sql_freeresult ( $result );
$template -> assign_vars ( array (
2006-04-06 17:15:45 +00:00
'S_MARK_OPTIONS' => $s_mark_options ,
'S_MOVE_MARKED_OPTIONS' => $s_folder_move_options )
2006-02-22 22:17:36 +00:00
);
2004-06-02 18:07:40 +00:00
2006-03-02 04:39:48 +00:00
// Okay, lets dump out the page ...
if ( sizeof ( $folder_info [ 'pm_list' ]))
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
// Build Recipient List if in outbox/sentbox - max two additional queries
$recipient_list = $address_list = $address = array ();
if ( $folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX )
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
foreach ( $folder_info [ 'rowset' ] as $message_id => $row )
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
$address [ $message_id ] = rebuild_header ( array ( 'to' => $row [ 'to_address' ], 'bcc' => $row [ 'bcc_address' ]));
$_save = array ( 'u' , 'g' );
foreach ( $_save as $save )
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
if ( isset ( $address [ $message_id ][ $save ]) && sizeof ( $address [ $message_id ][ $save ]))
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
foreach ( array_keys ( $address [ $message_id ][ $save ]) as $ug_id )
{
$recipient_list [ $save ][ $ug_id ] = array ( 'name' => $user -> lang [ 'NA' ], 'colour' => '' );
}
2004-06-02 18:07:40 +00:00
}
}
}
2005-10-02 18:22:59 +00:00
2006-03-02 04:39:48 +00:00
$_types = array ( 'u' , 'g' );
foreach ( $_types as $ug_type )
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
if ( isset ( $recipient_list [ $ug_type ]) && sizeof ( $recipient_list [ $ug_type ]))
{
$sql = ( $ug_type == 'u' ) ? 'SELECT user_id as id, username as name, user_colour as colour FROM ' . USERS_TABLE . ' WHERE user_id' : 'SELECT group_id as id, group_name as name, group_colour as colour FROM ' . GROUPS_TABLE . ' WHERE group_id' ;
$sql .= ' IN (' . implode ( ', ' , array_keys ( $recipient_list [ $ug_type ])) . ')' ;
2005-10-02 18:22:59 +00:00
2006-03-02 04:39:48 +00:00
$result = $db -> sql_query ( $sql );
2004-06-02 18:07:40 +00:00
2006-03-02 04:39:48 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
$recipient_list [ $ug_type ][ $row [ 'id' ]] = array ( 'name' => $row [ 'name' ], 'colour' => $row [ 'colour' ]);
}
$db -> sql_freeresult ( $result );
2004-06-02 18:07:40 +00:00
}
}
2006-03-02 04:39:48 +00:00
foreach ( $address as $message_id => $adr_ary )
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
foreach ( $adr_ary as $type => $id_ary )
2004-06-02 18:07:40 +00:00
{
2006-03-02 04:39:48 +00:00
foreach ( $id_ary as $ug_id => $_id )
{
2006-04-08 13:06:13 +00:00
$address_list [ $message_id ][] = (( $type == 'u' ) ? " <a href= \" { $phpbb_root_path } memberlist. $phpEx $SID &mode=viewprofile&u= $ug_id\ " > " : " < a href = \ " { $phpbb_root_path } memberlist. $phpEx $SID &mode=group&g= $ug_id\ " > " ) . (( $recipient_list[$type] [ $ug_id ]['colour']) ? '<span style= " color : #' . $recipient_list[$type][$ug_id]['colour'] . '">' : '<span>') . $recipient_list[$type][$ug_id]['name'] . '</span></a>';
2006-03-02 04:39:48 +00:00
}
2004-06-02 18:07:40 +00:00
}
}
2005-10-02 18:22:59 +00:00
2006-03-02 04:39:48 +00:00
unset ( $recipient_list , $address );
}
2004-06-02 18:07:40 +00:00
2006-03-02 04:39:48 +00:00
$url = " { $phpbb_root_path } ucp. $phpEx $SID " ;
2006-02-21 19:49:35 +00:00
2006-03-02 04:39:48 +00:00
$data = array ();
2006-02-22 22:17:36 +00:00
2006-03-02 04:39:48 +00:00
foreach ( $folder_info [ 'pm_list' ] as $message_id )
2006-02-21 19:49:35 +00:00
{
2006-03-02 04:39:48 +00:00
$row = & $folder_info [ 'rowset' ][ $message_id ];
2006-02-21 19:49:35 +00:00
$folder_img = ( $row [ 'unread' ]) ? 'folder_new' : 'folder' ;
$folder_alt = ( $row [ 'unread' ]) ? 'NEW_MESSAGES' : 'NO_NEW_MESSAGES' ;
2004-06-02 18:07:40 +00:00
2006-02-21 19:49:35 +00:00
// Generate all URIs ...
$message_author = " <a href= \" { $phpbb_root_path } memberlist. $phpEx $SID &mode=viewprofile&u= " . $row [ 'author_id' ] . '">' . $row [ 'username' ] . '</a>' ;
$view_message_url = " $url &i= $id &mode=view&f= $folder_id &p= $message_id " ;
2006-04-15 14:48:36 +00:00
$remove_message_url = " $url &i= $id &mode=compose&action=delete&p= $message_id " ;
2004-06-02 18:07:40 +00:00
2006-02-21 19:49:35 +00:00
$row_indicator = '' ;
foreach ( $color_rows as $var )
2004-06-02 18:07:40 +00:00
{
2006-02-21 19:49:35 +00:00
if (( $var != 'friend' && $var != 'foe' && $row [ $var ])
||
(( $var == 'friend' || $var == 'foe' ) && isset ( ${$var} [ $row [ 'author_id' ]]) && ${$var} [ $row [ 'author_id' ]]))
{
$row_indicator = $var ;
break ;
}
2004-06-02 18:07:40 +00:00
}
2006-02-21 19:49:35 +00:00
// Send vars to template
$template -> assign_block_vars ( 'messagerow' , array (
'PM_CLASS' => ( $row_indicator ) ? 'pm_' . $row_indicator . '_colour' : '' ,
'FOLDER_ID' => $folder_id ,
'MESSAGE_ID' => $message_id ,
'MESSAGE_AUTHOR' => $message_author ,
'SENT_TIME' => $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' ]])) ? " $url &folder= " . $row [ 'folder_id' ] : '' ,
'PM_ICON_IMG' => ( ! empty ( $icons [ $row [ 'icon_id' ]])) ? '<img src="' . $config [ 'icons_path' ] . '/' . $icons [ $row [ 'icon_id' ]][ 'img' ] . '" width="' . $icons [ $row [ 'icon_id' ]][ 'width' ] . '" height="' . $icons [ $row [ 'icon_id' ]][ 'height' ] . '" alt="" title="" />' : '' ,
'FOLDER_IMG' => $user -> img ( $folder_img , $folder_alt ),
'PM_IMG' => ( $row_indicator ) ? $user -> img ( 'pm_' . $row_indicator , '' ) : '' ,
'ATTACH_ICON_IMG' => ( $auth -> acl_get ( 'u_download' ) && $row [ 'message_attachment' ] && $config [ 'allow_pm_attach' ] && $config [ 'auth_download_pm' ]) ? $user -> img ( 'icon_attach' , $user -> lang [ 'TOTAL_ATTACHMENTS' ]) : '' ,
'S_PM_DELETED' => ( $row [ 'deleted' ]) ? true : false ,
'U_VIEW_PM' => ( $row [ 'deleted' ]) ? '' : $view_message_url ,
'U_REMOVE_PM' => ( $row [ 'deleted' ]) ? $remove_message_url : '' ,
2006-03-12 23:19:55 +00:00
'RECIPIENTS' => ( $folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX ) ? implode ( ', ' , $address_list [ $message_id ]) : '' )
2006-02-21 19:49:35 +00:00
);
}
2006-03-02 04:39:48 +00:00
unset ( $folder_info [ 'rowset' ]);
2005-10-02 18:22:59 +00:00
2006-03-02 04:39:48 +00:00
$template -> assign_vars ( array (
'S_SHOW_RECIPIENTS' => ( $folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX ) ? true : false ,
'S_SHOW_COLOUR_LEGEND' => true )
);
}
2004-06-02 18:07:40 +00:00
}
2006-03-02 04:39:48 +00:00
else
2006-02-21 19:49:35 +00:00
{
2006-03-02 04:39:48 +00:00
$export_type = request_var ( 'export_option' , '' );
$enclosure = request_var ( 'enclosure' , '' );
$delimiter = request_var ( 'delimiter' , '' );
2006-02-22 22:17:36 +00:00
if ( $export_type == 'CSV' && ( $delimiter === '' || $enclosure === '' ))
2006-02-21 19:49:35 +00:00
{
$template -> assign_var ( 'PROMPT' , true );
}
else
{
2006-03-02 04:39:48 +00:00
// 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.' . $phpEx );
$sql = ' SELECT p . message_text , p . bbcode_uid
FROM ' . PRIVMSGS_TO_TABLE . ' t , ' . PRIVMSGS_TABLE . ' p , ' . USERS_TABLE . ' u
WHERE t . user_id = ' . $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 = $db -> sql_query_limit ( $sql , 1 );
$message_row = $db -> sql_fetchrow ( $result );
$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 ]))
{
$sql = ( $ug_type == 'u' ) ? 'SELECT user_id as id, username as name FROM ' . USERS_TABLE . ' WHERE user_id' : 'SELECT group_id as id, group_name as name FROM ' . GROUPS_TABLE . ' WHERE group_id' ;
$sql .= ' IN (' . implode ( ', ' , array_keys ( $address [ $message_id ][ $ug_type ])) . ')' ;
$result = $db -> sql_query ( $sql );
while ( $info_row = $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' ]]);
}
$db -> sql_freeresult ( $result );
}
}
decode_message ( $message_row [ 'message_text' ], $message_row [ 'bbcode_uid' ]);
2006-03-22 18:48:46 +00:00
$data [] = array (
'subject' => censor_text ( $row [ 'message_subject' ]),
'sender' => $row [ 'username' ],
'date' => $user -> format_date ( $row [ 'message_time' ]),
'to' => ( $folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX ) ? $address [ $message_id ] : '' ,
'message' => $message_row [ 'message_text' ]
);
2006-03-02 04:39:48 +00:00
}
2006-02-22 22:17:36 +00:00
switch ( $export_type )
2006-02-21 19:49:35 +00:00
{
case 'CSV' :
case 'CSV_EXCEL' :
$mimetype = 'text/csv' ;
$filetype = 'csv' ;
2006-03-02 04:39:48 +00:00
2006-02-22 22:17:36 +00:00
if ( $export_type == 'CSV_EXCEL' )
2006-02-21 19:49:35 +00:00
{
$enclosure = '"' ;
$delimiter = ',' ;
$newline = " \r \n " ;
}
else
{
$newline = " \n " ;
}
2006-03-02 04:39:48 +00:00
2006-02-21 19:49:35 +00:00
$string = '' ;
foreach ( $data as $value )
{
2006-03-02 04:39:48 +00:00
$value [ 'bcc' ] = '' ;
if ( is_array ( $value [ 'to' ]))
{
foreach ( $value [ 'to' ] as $key => $values )
{
$value [ 'bcc' ] = implode ( ',' , $values [ 'bcc' ]);
$value [ 'to' ] = implode ( ',' , $values [ 'to' ]);
}
}
foreach ( $value as $tag => $text )
2006-02-21 19:49:35 +00:00
{
$cell = str_replace ( $enclosure , $enclosure . $enclosure , $text );
2006-02-21 21:12:17 +00:00
if ( strpos ( $cell , $enclosure ) !== false || strpos ( $cell , $delimiter ) !== false || strpos ( $cell , $newline ) !== false )
2006-02-21 19:49:35 +00:00
{
$string .= $enclosure . $text . $enclosure . $delimiter ;
}
else
{
$string .= $cell . $delimiter ;
}
}
$string = substr ( $string , 0 , - 1 ) . $newline ;
}
break ;
case 'XML' :
2006-03-02 04:39:48 +00:00
$mimetype = 'application/xml' ;
2006-02-21 19:49:35 +00:00
$filetype = 'xml' ;
$string = '<?xml version="1.0"?>' . " \n " ;
2006-03-02 04:39:48 +00:00
$string .= " <phpbb> \n " ;
2006-02-21 19:49:35 +00:00
foreach ( $data as $value )
{
2006-03-02 04:39:48 +00:00
2006-02-21 19:49:35 +00:00
$string .= " \t <privmsg> \n " ;
2006-03-02 04:39:48 +00:00
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' ]);
2006-02-21 19:49:35 +00:00
foreach ( $value as $tag => $text )
{
$string .= " \t \t < $tag > $text </ $tag > \n " ;
}
2006-03-02 04:39:48 +00:00
2006-02-21 19:49:35 +00:00
$string .= " \t </privmsg> \n " ;
}
2006-03-02 04:39:48 +00:00
$string .= '</phpbb>' ;
2006-02-21 19:49:35 +00:00
}
header ( 'Pragma: no-cache' );
header ( " Content-Type: $mimetype ; name= \" data. $filetype\ " " );
header ( " Content-disposition: attachment; filename=data. $filetype " );
echo $string ;
exit ;
}
}
2004-06-02 18:07:40 +00:00
}
2005-04-09 12:26:45 +00:00
/**
* Get Messages from folder / user
*/
2006-04-06 17:15:45 +00:00
function get_pm_from ( $folder_id , $folder , $user_id , $url )
2004-06-02 18:07:40 +00:00
{
global $user , $db , $template , $config , $auth , $_POST ;
2004-10-08 11:13:01 +00:00
$start = request_var ( 'start' , 0 );
2004-06-02 18:07:40 +00:00
2005-10-08 10:56:56 +00:00
// 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' );
2004-06-02 18:07:40 +00:00
// PM ordering options
2006-03-23 19:23:52 +00:00
$limit_days = array ( 0 => $user -> lang [ 'ALL_MESSAGES' ], 1 => $user -> lang [ '1_DAY' ], 7 => $user -> lang [ '7_DAYS' ], 14 => $user -> lang [ '2_WEEKS' ], 30 => $user -> lang [ '1_MONTH' ], 90 => $user -> lang [ '3_MONTHS' ], 180 => $user -> lang [ '6_MONTHS' ], 365 => $user -> lang [ '1_YEAR' ]);
2004-06-02 18:07:40 +00:00
$sort_by_text = array ( 'a' => $user -> lang [ 'AUTHOR' ], 't' => $user -> lang [ 'POST_TIME' ], 's' => $user -> lang [ 'SUBJECT' ]);
2004-10-08 11:13:01 +00:00
$sort_by_sql = array ( 'a' => 'u.username' , 't' => 'p.message_time' , 's' => 'p.message_subject' );
2004-06-02 18:07:40 +00:00
$sort_key = ( ! in_array ( $sort_key , array ( 'a' , 't' , 's' ))) ? 't' : $sort_key ;
$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 );
2006-04-06 17:15:45 +00:00
$folder_sql = 't.folder_id = ' . ( int ) $folder_id ;
2004-06-02 18:07:40 +00:00
// Limit pms to certain time frame, obtain correct pm count
if ( $sort_days )
{
$min_post_time = time () - ( $sort_days * 86400 );
$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 = $db -> sql_query_limit ( $sql , 1 );
if ( isset ( $_POST [ 'sort' ]))
{
$start = 0 ;
}
$pm_count = ( $row = $db -> sql_fetchrow ( $result )) ? $row [ 'pm_count' ] : 0 ;
$db -> sql_freeresult ( $result );
$sql_limit_time = " AND p.message_time >= $min_post_time " ;
}
else
{
2006-04-06 17:15:45 +00:00
$pm_count = $folder [ $folder_id ][ 'num_messages' ];
2004-06-02 18:07:40 +00:00
$sql_limit_time = '' ;
}
$template -> assign_vars ( array (
2005-10-26 20:22:40 +00:00
'PAGINATION' => generate_pagination ( " $url &i=pm&mode=view&action=view_folder&f= $folder_id & $u_sort_param " , $pm_count , $config [ 'topics_per_page' ], $start ),
2004-06-02 18:07:40 +00:00
'PAGE_NUMBER' => on_page ( $pm_count , $config [ 'topics_per_page' ], $start ),
'TOTAL_MESSAGES' => (( $pm_count == 1 ) ? $user -> lang [ 'VIEW_PM_MESSAGE' ] : sprintf ( $user -> lang [ 'VIEW_PM_MESSAGES' ], $pm_count )),
2004-09-04 19:32:23 +00:00
'POST_IMG' => ( ! $auth -> acl_get ( 'u_sendpm' )) ? $user -> img ( 'btn_locked' , 'PM_LOCKED' ) : $user -> img ( 'btn_post_pm' , 'POST_PM' ),
2004-06-02 18:07:40 +00:00
'L_NO_MESSAGES' => ( ! $auth -> acl_get ( 'u_sendpm' )) ? $user -> lang [ 'POST_PM_LOCKED' ] : $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 ,
2005-10-02 18:22:59 +00:00
'S_TOPIC_ICONS' => ( $config [ 'enable_pm_icons' ]) ? true : false ,
2004-06-02 18:07:40 +00:00
2005-12-30 21:04:47 +00:00
'U_POST_NEW_TOPIC' => ( $auth -> acl_get ( 'u_sendpm' )) ? " $url &i=pm&mode=compose " : '' ,
2005-10-02 18:22:59 +00:00
'S_PM_ACTION' => " $url &i=pm&mode=view&action=view_folder&f= $folder_id " )
2004-06-02 18:07:40 +00:00
);
// 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 = $config [ 'topics_per_page' ];
if ( $start > $pm_count / 2 )
{
$store_reverse = true ;
if ( $start + $config [ 'topics_per_page' ] > $pm_count )
{
$sql_limit = min ( $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 ;
}
2006-03-12 23:19:55 +00:00
$sql = ' SELECT t .* , p . author_id , p . root_level , p . message_time , p . message_subject , p . icon_id , p . to_address , p . message_attachment , p . bcc_address , u . username
2004-06-02 18:07:40 +00:00
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 = $db -> sql_query_limit ( $sql , $sql_limit , $sql_start );
2004-10-08 11:13:01 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2004-06-02 18:07:40 +00:00
{
$rowset [ $row [ 'msg_id' ]] = $row ;
$pm_list [] = $row [ 'msg_id' ];
}
$db -> sql_freeresult ( $result );
$pm_list = ( $store_reverse ) ? array_reverse ( $pm_list ) : $pm_list ;
return array (
2005-10-02 18:22:59 +00:00
'pm_count' => $pm_count ,
'pm_list' => $pm_list ,
2004-06-02 18:07:40 +00:00
'rowset' => $rowset
);
}
?>