Changeset 4084 in subversion


Ignore:
Timestamp:
Oct 13, 2010 3:15:51 PM (3 years ago)
Author:
alec
Message:
  • Minimize session data size by storing only last search result and by removing search result from session after listing with empty search filter
Location:
trunk/roundcubemail/program/steps/mail
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/program/steps/mail/check_recent.inc

    r3989 r4084  
    4141        // refresh saved search set 
    4242        $search_request = get_input_value('_search', RCUBE_INPUT_GPC); 
    43         if ($search_request && isset($_SESSION['search'][$search_request])) { 
    44             $_SESSION['search'][$search_request] = $IMAP->refresh_search(); 
     43        if ($search_request && isset($_SESSION['search']) 
     44            && $_SESSION['search_request'] == $search_request 
     45        ) { 
     46            $_SESSION['search'] = $IMAP->refresh_search(); 
    4547        } 
    4648 
  • trunk/roundcubemail/program/steps/mail/func.inc

    r4077 r4084  
    7373 
    7474// set message set for search result 
    75 if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) 
    76   { 
    77   $IMAP->set_search_set($_SESSION['search'][$_REQUEST['_search']]); 
     75if (!empty($_REQUEST['_search']) && isset($_SESSION['search']) 
     76    && $_SESSION['search_request'] == $_REQUEST['_search'] 
     77) { 
     78  $IMAP->set_search_set($_SESSION['search']); 
    7879  $OUTPUT->set_env('search_request', $_REQUEST['_search']); 
    7980  $OUTPUT->set_env('search_text', $_SESSION['last_text_search']); 
    80   } 
     81} 
    8182 
    8283// set main env variables, labels and page title 
    83 if (empty($RCMAIL->action) || $RCMAIL->action == 'list') 
    84   { 
     84if (empty($RCMAIL->action) || $RCMAIL->action == 'list') { 
    8585  $mbox_name = $IMAP->get_mailbox_name(); 
    8686 
    87   if (empty($RCMAIL->action)) 
    88     { 
     87  if (empty($RCMAIL->action)) { 
    8988    // initialize searching result if search_filter is used 
    90     if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') 
    91       { 
     89    if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') { 
    9290      $search_request = md5($mbox_name.$_SESSION['search_filter']); 
    9391 
    9492      $IMAP->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, $_SESSION['sort_col']); 
    95       $_SESSION['search'][$search_request] = $IMAP->get_search_set(); 
     93      $_SESSION['search'] = $IMAP->get_search_set(); 
     94      $_SESSION['search_request'] = $search_request; 
    9695      $OUTPUT->set_env('search_request', $search_request); 
    9796      } 
     
    9998      $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT); 
    10099      $OUTPUT->set_env('search_mods', $search_mods); 
    101     } 
     100  } 
    102101 
    103102  // set current mailbox and some other vars in client environment 
     
    136135 
    137136  $OUTPUT->set_pagetitle(rcmail_localize_foldername($mbox_name)); 
    138   } 
     137} 
    139138 
    140139 
  • trunk/roundcubemail/program/steps/mail/list.inc

    r3989 r4084  
    5959  $search_request = md5($mbox_name.$_SESSION['search_filter']); 
    6060  $IMAP->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, $sort_col); 
    61   $_SESSION['search'][$search_request] = $IMAP->get_search_set(); 
     61  $_SESSION['search'] = $IMAP->get_search_set(); 
     62  $_SESSION['search_request'] = $search_request; 
    6263  $OUTPUT->set_env('search_request', $search_request); 
    6364} 
     
    6869 
    6970// update search set (possible change of threading mode) 
    70 if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) 
    71   $_SESSION['search'][$_REQUEST['_search']] = $IMAP->get_search_set(); 
     71if (!empty($_REQUEST['_search']) && isset($_SESSION['search']) 
     72    && $_SESSION['search_request'] == $_REQUEST['_search'] 
     73) { 
     74  $_SESSION['search'] = $IMAP->get_search_set(); 
     75} 
     76// remove old search data 
     77else if (empty($_REQUEST['_search']) && isset($_SESSION['search'])) { 
     78  $RCMAIL->session->remove('search'); 
     79} 
     80 
    7281 
    7382// empty result? we'll skip UNSEEN counting in rcmail_send_unread_count() 
  • trunk/roundcubemail/program/steps/mail/mark.inc

    r3989 r4084  
    7373      // refresh saved search set after moving some messages 
    7474      if (($search_request = get_input_value('_search', RCUBE_INPUT_GPC)) && $IMAP->search_set) { 
    75         $_SESSION['search'][$search_request] = $IMAP->refresh_search(); 
     75        $_SESSION['search'] = $IMAP->refresh_search(); 
    7676      } 
    7777 
  • trunk/roundcubemail/program/steps/mail/move_del.inc

    r3989 r4084  
    7272// refresh saved search set after moving some messages 
    7373if (($search_request = get_input_value('_search', RCUBE_INPUT_GPC)) && $IMAP->search_set) { 
    74     $_SESSION['search'][$search_request] = $IMAP->refresh_search(); 
     74    $_SESSION['search'] = $IMAP->refresh_search(); 
    7575} 
    7676 
  • trunk/roundcubemail/program/steps/mail/search.inc

    r3787 r4084  
    112112 
    113113if ($search_str) { 
    114   $_SESSION['search'][$search_request] = $IMAP->get_search_set(); 
     114  $_SESSION['search'] = $IMAP->get_search_set(); 
    115115  $_SESSION['last_text_search'] = $str; 
    116116} 
     117$_SESSION['search_request'] = $search_request; 
    117118 
    118119// Make sure we got the headers 
    119 if (!empty($result_h)) 
    120 { 
     120if (!empty($result_h)) { 
    121121  rcmail_js_message_list($result_h); 
    122122  if ($search_str) 
    123123    $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $IMAP->messagecount(NULL, 'ALL'))); 
    124124} 
    125 else 
    126 { 
     125else { 
    127126  $OUTPUT->show_message('searchnomatch', 'notice'); 
    128127} 
Note: See TracChangeset for help on using the changeset viewer.