main_content.inc
上传用户:xiao730204
上传日期:2007-01-04
资源大小:141k
文件大小:9k
源码类别:

WEB邮件程序

开发平台:

PHP

  1. <?php
  2. /*
  3. To add cached info for the sorting of the mailbox.
  4. We'll need to have the sort direction cached
  5. and then set a flag for the direction, so that it doesn't
  6. reask for it to sort.
  7. */
  8. Function is_global_var( $key_var ) {
  9.    reset( $GLOBALS );
  10.    while( list( $key, $value ) = each( $GLOBALS ) ) {
  11.       if ( $key == $key_var ) {
  12.          return 1;
  13.       }
  14.    }
  15. }
  16. /* Users are allowed to change folders  */
  17. $changed_folder = 0;
  18. if ( ($folder != '' && $folder != $mail_folder) &&
  19.    $mailbox_action != 'message_move' ) {
  20.    $mail_folder = $folder;
  21.    $changed_folder = 1;
  22. }
  23. $url_util           = new UrlObject();
  24. $server_settings_db = new MailServer_Settings_Db();
  25. $mail = new Mail();
  26. $mail->server      = $current_server_settings->server_name;
  27. $mail->user_name   = $current_server_settings->server_username;
  28. $mail->password    = $current_server_settings->server_password;
  29. $mail->folder = $mail_folder;
  30. /* 
  31. The imap true hard code will change as we get other server
  32. type support 
  33. */
  34. $mail->imap        = true;
  35. echo( '<!-- ' . "n" );
  36. echo( 'First mail call... ' . "n" );
  37. echo( 'if there is nothing past here imap is dorked' . "n" );
  38. echo( '-->' . "n" );
  39. $folders = Array();
  40. $user_folder_list = '';
  41. if ( $default->pimp->folders == 1 ) {
  42.    $folders = $mail->GetBareFolderNameList( $mail->ListFolders() );
  43.    $folders[] = 'INBOX';
  44.    for( $i = 0; $i < count( $folders ); $i++ ) {
  45.       $folder_name = $folders[ $i ];
  46.       $is_selected = '';
  47.       if ( $folder_name == $mail_folder ) {
  48.          $is_selected = ' selected';
  49.       }
  50.       $user_folder_list .= 
  51.          '<option' . $is_selected . '>' . $folder_name;
  52.    }
  53.    $user_folder_list =
  54.       '<select name="folder">' .
  55.       $user_folder_list .
  56.       '</select>'
  57.    ;
  58. }
  59. $template_obj->Register( 'user_folder_list', $user_folder_list );
  60. $ret_vals = $mail->GetFolder( $mail_folder );
  61. if ( $ret_vals[ 0 ] == 1 ) {
  62.    //echo( 'NO CALL TO GETSTATS' );
  63.    $folder_obj = $ret_vals[ 1 ];
  64.    $folder_obj->GetStats();
  65. } else {
  66.    $folder_obj = new MailFolder();
  67.    $folder_obj->folder = 'INBOX';
  68. }
  69. if ( $page == '' ) {
  70.    $page = 1;
  71. }
  72. $page_nav = new PageNavigator();
  73. $page_nav->num_items             = $folder_obj->count;
  74. $page_nav->num_items_per_page    = 20;
  75. $page_nav->current_page          = $page;
  76. $page_nav->Calculate();
  77. if (! is_array( $selected_messages )) {
  78.    $selected_messages= Array();
  79. $session->Add(
  80.    $temp = new SessionElement( 'selected_messages', 'array' )
  81. );
  82. }
  83. /* Mailbox start */
  84. include( './pimp/templates/mailbox/mailbox_header.inc' );
  85. /* Top toolbar */
  86. $template_obj->ParseTemplate(
  87.    './pimp/templates/mailbox/templates/actions.inc'
  88. );
  89. if ( $page_nav->first_item == 0 ) {
  90.    $template_obj->ParseTemplate(
  91.       './pimp/templates/mailbox/templates/no_messages.inc'
  92.    );
  93. } else {
  94. /* page navigator */
  95. include( './pimp/templates/mailbox/page_nav.inc' );
  96. /* Color meanings */
  97. $template_obj->ParseTemplate(
  98.    './pimp/templates/mailbox/color_legend.inc'
  99. );
  100. }
  101. if ( $mailbox_action == 'expunge' ) {
  102.    $folder_obj->ExpungeDeletedMessages();
  103.    /* jic they had some deleted messages selected */
  104.    $selected_messages = Array();
  105. }
  106. $sort_by             = '';
  107. $sort_flag           = SORTARRIVAL;
  108. $sort_flag_reversed  = 0;
  109. include( './pimp/templates/mailbox/sort_urls.inc' );
  110. switch( $form_mode ) {
  111.    case PIMP_MAIL_SORT_ASC_SUBJECT:
  112.       $sort_flag           = SORTSUBJECT;
  113.       $sort_flag_reversed  = 0;
  114.       $subject_sort_asc_url = '&gt;&gt;';
  115.       break;
  116.    case PIMP_MAIL_SORT_REV_SUBJECT:
  117.       $sort_flag           = SORTSUBJECT;
  118.       $sort_flag_reversed  = 1;
  119.       $subject_sort_rev_url = '&lt;&lt;';
  120.       break;
  121.    case PIMP_MAIL_SORT_ASC_FROM:
  122.       $sort_flag           = SORTFROM;
  123.       $sort_flag_reversed  = 0;
  124.       $from_sort_asc_url = '&gt;&gt;';
  125.       break;
  126.    case PIMP_MAIL_SORT_REV_FROM:
  127.       $sort_flag           = SORTFROM;
  128.       $sort_flag_reversed  = 1;
  129.       $from_sort_rev_url = '&lt;&lt;';
  130.       break;
  131.    case PIMP_MAIL_SORT_ASC_DATE:
  132.       $sort_flag           = SORTARRIVAL;
  133.       $sort_flag_reversed  = 0;
  134.       $date_sort_asc_url = '&gt;&gt;';
  135.       break;
  136.    case PIMP_MAIL_SORT_REV_DATE:
  137.       $sort_flag           = SORTARRIVAL;
  138.       $sort_flag_reversed  = 1;
  139.       $date_sort_rev_url = '&lt;&lt;';
  140.       break;
  141.    case PIMP_MAIL_SORT_ASC_SIZE:
  142.       $sort_flag           = SORTSIZE;
  143.       $sort_flag_reversed  = 0;
  144.       $size_sort_asc_url = '&gt;&gt;';
  145.       break;
  146.    case PIMP_MAIL_SORT_REV_SIZE:
  147.       $sort_flag           = SORTSIZE;
  148.       $sort_flag_reversed  = 1;
  149.       $size_sort_rev_url = '&lt;&lt;';
  150.       break;
  151.    default:
  152.       $form_mode           = PIMP_MAIL_SORT_REV_DATE;
  153.       $sort_flag           = SORTARRIVAL;
  154.       $sort_flag_reversed  = 1;
  155.       $date_sort_rev_url = '&lt;&lt;';
  156.       break;
  157. }
  158. if ( $page_nav->first_item == 0 ) {
  159. } else {
  160. /*
  161. SORTARRIVAL is the default
  162. SORTFROM
  163. SORTSIZE
  164. SORTSUBJECT
  165. */
  166. $sorted_message_ids = $folder_obj->Sort(
  167.    $sort_flag,
  168.    $sort_flag_reversed
  169. );
  170. /* Message header title.inc */
  171. include( './pimp/templates/mailbox/message_headers_title.inc' );
  172. /*
  173. We subtract 1 from the first and last item since
  174. arrays count with a start of 0 humans do not.
  175. */
  176. /* Set the selected items */
  177. for(
  178.    $t_id    = $page_nav->first_item - 1; 
  179.    $t_id    < $page_nav->last_item; 
  180.    $t_id++ ) {
  181.    $message_var = 'message_id_' . $t_id;
  182.    if ( is_global_var( $message_var ) ) {
  183.       $selected_messages[ $sorted_message_ids[ $t_id ] ] = 1;
  184.    } else {
  185.       if ( $selected_messages[ $sorted_message_ids[ $t_id ] ] == 1 ) {
  186.       $selected_messages[ $sorted_message_ids[ $t_id ] ] = 0;
  187.       }
  188.    }
  189. } /* End Select messages */
  190. if ( $mailbox_action == 'select_none' || $changed_folder == 1) {
  191.    $selected_messages = Array();
  192. }
  193. if ( $mailbox_action == 'message_move' && $changed_folder == 0 ) {
  194.    while( list( $message_id, $true ) = each( $selected_messages ) ) {
  195.       $folder_obj->MoveMessage( $folder, $message_id );
  196.    }
  197.    /* Reset the selection */
  198.    $selected_messages = Array();
  199. }
  200. if ( $mailbox_action == 'message_delete' && $changed_folder == 0 ) {
  201.    while( list( $message_id, $true ) = each ( $selected_messages ) ) {
  202.       $folder_obj->DeleteMessage( $message_id );
  203.    }
  204.    /* If we want to deslect the messages post deletion mark */
  205.    /* $selected_messages = Array(); */
  206. }
  207. if ( $mailbox_action == 'message_undelete' && $changed_folder == 0) {
  208.    while( list( $message_id, $true ) = each ( $selected_messages ) ) {
  209.       $folder_obj->UnDeleteMessage( $message_id );
  210.    }
  211.    /* If we want to deslect the messages post undeletion mark */
  212.    /* $selected_messages = Array(); */
  213. }
  214. for(
  215.    $i = ($page_nav->first_item - 1);
  216.    $i < ($page_nav->last_item );
  217.    $i++ ) { 
  218.    if ( $mailbox_action == 'select_all' && $changed_folder != 1 ) {
  219.       $selected_messages[ $sorted_message_ids[ $i ] ] = 1;
  220.    }
  221. /* Fetch the message header */
  222. list( $ret, $current_header ) = $folder_obj->GetMessageHeader( 
  223. $sorted_message_ids[ $i ]
  224. );
  225. if ( ! is_object( $current_header ) ) {
  226.    /* Error trapping via a overloaded object */
  227.    $current_header = new BaseObject();
  228. }
  229.    /* Pretty format the fields and determin the row color */
  230.    $row_color = 'mail_read';
  231.    if ( 
  232.    $current_header->Recent == 'N' || $current_header->Unseen == 'U'
  233.    ) {
  234.       /* New */
  235.       $row_color = 'mail_new';
  236.    }
  237.    if ( $current_header->Draft == 'X' ) {
  238.    }
  239.    if ( $current_header->Flagged == 'F' ) {
  240.    }
  241.    if ( $current_header->Deleted == 'D' ) {
  242.    /* Marked for deletion */
  243.    $row_color = 'mail_deleted';
  244.    }
  245.    /* Format the time */
  246.    $time_obj = new TimeObject();
  247.    $time_obj->time = strtotime( $current_header->date );
  248.    $time_obj->FormatTime();
  249.    $cur_time_obj = new TimeObject();
  250.    $cur_time_obj->GetLocalTime();
  251.    $cur_time_obj->FormatTime();
  252.    $message_date = '';
  253.    $message_date =
  254.    $time_obj->hour  . ':' . $time_obj->min . ':' . $time_obj->am_pm;
  255.    if ( 
  256.       ($cur_time_obj->year != $time_obj->year)||
  257.       ($cur_time_obj->month != $time_obj->month )  ||
  258.       ($cur_time_obj->day != $time_obj->day)
  259.    ) {
  260.    $message_date .=  ' ' .
  261.       $time_obj->year . '/' . $time_obj->month . '/' . $time_obj->day;
  262.    }
  263.    /* Format the message size */
  264.    $message_size = '';
  265.    $filesize_obj = new FileSizeObject();
  266.    $message_size = 
  267.       $filesize_obj->FormatFileSize( $current_header->Size );
  268.    $read_message  = $url_util->PostUrl(
  269.          $default->base_url,
  270.          Array(
  271.             'session_id'   =>       $session_id,
  272.             'form_mode'    =>       PIMP_MAIL_READ_MESSAGE,
  273.             'message_id'   =>       $sorted_message_ids[ $i ],
  274.             'page'         =>       $page,
  275.             'folder'       =>       $folder_obj->folder,
  276.             'sort_by'      =>       $form_mode
  277.          )
  278.    );
  279.    
  280.    include( './pimp/templates/mailbox/message_headers_row.inc' );
  281. } // END loop throug messages
  282. /* page navigator */
  283. include( './pimp/templates/mailbox/page_nav.inc' );
  284. } // END if no items
  285. /* Mailbox end */
  286. include( './pimp/templates/mailbox/mailbox_footer.inc' );
  287. ?>