From b5846eed4ddd8e2a3f5f0fee42d91d5243c2afec Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 28 Jan 2010 07:52:24 -0500
Subject: [PATCH] - Login preformance: Create default folders on first login only

---
 CHANGELOG                      |    1 +
 program/include/rcube_imap.php |    2 +-
 program/include/rcmail.php     |   15 ++++++++-------
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index b99f201..144d9d3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Login preformance: Create default folders on first login only
 - Import contacts into the selected address book (by Phil Weir)
 - Add support for MDB2's 'sqlsrv' driver (#1486395)
 - Use jQuery-1.4
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 1afb7d7..e3c8261 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -492,17 +492,22 @@
     if (!($imap_login  = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl)))
       return false;
 
+    $this->set_imap_prop();
+
     // user already registered -> update user's record
     if (is_object($user)) {
+      // create default folders on first login
+      if (!$user->data['last_login'] && $config['create_default_folders'])
+        $this->imap->create_default_folders();
       $user->touch();
     }
     // create new system user
     else if ($config['auto_create_user']) {
       if ($created = rcube_user::create($username, $host)) {
         $user = $created;
-
-        // get existing mailboxes (but why?)
-        // $a_mailboxes = $this->imap->list_mailboxes();
+        // create default folders on first login
+        if ($config['create_default_folders'])
+          $this->imap->create_default_folders();
       }
       else {
         raise_error(array(
@@ -537,11 +542,7 @@
         $_SESSION['timezone'] = floatval($_REQUEST['_timezone']);
 
       // force reloading complete list of subscribed mailboxes
-      $this->set_imap_prop();
       $this->imap->clear_cache('mailboxes');
-
-      if ($config['create_default_folders'])
-          $this->imap->create_default_folders();
 
       return true;
     }
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 9137ada..128e775 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2139,7 +2139,7 @@
    */
   function create_default_folders()
     {
-    $a_folders = iil_C_ListMailboxes($this->conn, $this->mod_mailbox(''), '*');
+    $a_folders = iil_C_ListMailboxes($this->conn, $this->mod_mailbox(''), 'Drafts');
     $a_subscribed = iil_C_ListSubscribed($this->conn, $this->mod_mailbox(''), '*');
     
     // create default folders if they do not exist

--
Gitblit v1.9.1