thomascube
2005-10-03 6dc0269fcc9f11fbd53da1fb647237ab73cf394d
Make message caching configurable


3 files modified
31 ■■■■ changed files
config/main.inc.php.dist 4 ●●●● patch | view | raw | blame | history
program/include/main.inc 6 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.inc 21 ●●●●● patch | view | raw | blame | history
config/main.inc.php.dist
@@ -18,6 +18,10 @@
// system error reporting: 1 = log; 2 = report (not implemented yet), 4 = show, 8 = trace
$rcmail_config['debug_level'] = 5;
// enable caching of messages and mailbox data in the local database.
// this is recommended if the IMAP server does not run on the same machine
$rcmail_config['enable_caching'] = TRUE;
// automatically create a new user when log-in the first time
// set to false if only registered users can use this service
$rcmail_config['auto_create_user'] = TRUE;
program/include/main.inc
@@ -132,9 +132,13 @@
function rcmail_imap_init($connect=FALSE)
  {
  global $CONFIG, $IMAP;
  $IMAP = new rcube_imap();
  // enable caching of imap data
  if ($CONFIG['enable_caching']===TRUE)
    $IMAP->set_caching(TRUE);
  // set root dir from config
  if (strlen($CONFIG['imap_root']))
    $IMAP->set_rootdir($CONFIG['imap_root']);
program/include/rcube_imap.inc
@@ -35,7 +35,7 @@
  var $mailbox = 'INBOX';
  var $list_page = 1;
  var $page_size = 10;
  var $cacheing_enabled = FALSE;
  var $caching_enabled = FALSE;
  var $default_folders = array('inbox', 'drafts', 'sent', 'junk', 'trash');
  var $cache = array();
  var $cache_changes = array();  
@@ -46,8 +46,7 @@
  // PHP 5 constructor
  function __construct()
    {
    if (function_exists('rcube_read_cache'))
      $this->cacheing_enabled = TRUE;
    }
  // PHP 4 compatibility
@@ -681,14 +680,22 @@
  /* --------------------------------
   *   internal cacheing functions
   *   internal caching functions
   * --------------------------------*/
  function set_caching($set)
    {
    if ($set && function_exists('rcube_read_cache'))
      $this->caching_enabled = TRUE;
    else
      $this->caching_enabled = FALSE;
    }
  function get_cache($key)
    {
    // read cache
    if (!isset($this->cache[$key]) && $this->cacheing_enabled)
    if (!isset($this->cache[$key]) && $this->caching_enabled)
      {
      $cache_data = rcube_read_cache('IMAP.'.$key);
      $this->cache[$key] = strlen($cache_data) ? unserialize($cache_data) : FALSE;
@@ -708,7 +715,7 @@
  function write_cache()
    {
    if ($this->cacheing_enabled && $this->cache_changed)
    if ($this->caching_enabled && $this->cache_changed)
      {
      foreach ($this->cache as $key => $data)
        {