phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] CVS: email/inc class.bofolder.inc.php,1.3,1.4 class.m


From: Angelo Tony Puglisi <address@hidden>
Subject: [Phpgroupware-cvs] CVS: email/inc class.bofolder.inc.php,1.3,1.4 class.mail_msg_base.inc.php,1.55,1.56 class.mail_msg_display.inc.php,1.27,1.28 class.mail_msg_wrappers.inc.php,1.20,1.21
Date: Wed, 09 Jan 2002 05:55:32 -0500

Update of /cvsroot/phpgroupware//email/inc
In directory subversions:/tmp/cvs-serv28651/email/inc

Modified Files:
        class.bofolder.inc.php class.mail_msg_base.inc.php 
        class.mail_msg_display.inc.php class.mail_msg_wrappers.inc.php 
Log Message:
folder list cached to appsession

Index: class.bofolder.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware//email/inc/class.bofolder.inc.php,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** class.bofolder.inc.php      3 Jan 2002 10:03:27 -0000       1.3
--- class.bofolder.inc.php      9 Jan 2002 10:55:29 -0000       1.4
***************
*** 280,284 ****
                        
                        // ----  Get a List Of All Folders  AND Display them 
----
!                       $folder_list = 
$GLOBALS['phpgw']->msg->get_folder_list('');
                        if ($this->debug) { echo 'email.bofolder.folder_data: 
$folder_list[] dump:<pre>'; print_r($folder_list); echo '</pre>'; }
                        
--- 280,284 ----
                        
                        // ----  Get a List Of All Folders  AND Display them 
----
!                       $folder_list = 
$GLOBALS['phpgw']->msg->get_folder_list();
                        if ($this->debug) { echo 'email.bofolder.folder_data: 
$folder_list[] dump:<pre>'; print_r($folder_list); echo '</pre>'; }
                        

Index: class.mail_msg_base.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware//email/inc/class.mail_msg_base.inc.php,v
retrieving revision 1.55
retrieving revision 1.56
diff -C2 -r1.55 -r1.56
*** class.mail_msg_base.inc.php 9 Jan 2002 00:30:53 -0000       1.55
--- class.mail_msg_base.inc.php 9 Jan 2002 10:55:29 -0000       1.56
***************
*** 66,69 ****
--- 66,70 ----
        var $session_cache_debug_nosave = False;
        
+       // DEPRECIATED: folder_list now cached to appsession / temporary cache
        // (B) "folder list" caching (default value here, will be overridden by 
preferences item "cache_data")
        // currently caches "mailsvr_namespace" and "get_folder_list" responses 
to the prefs DB
***************
*** 1207,1210 ****
--- 1208,1212 ----
                // do we have cached data that we can use?
                $class_cached_mailsvr_namespace = 
$this->_direct_access_arg_value('mailsvr_namespace', $acctnum);
+               if ($this->debug_args_special_handlers > 1) { echo 'mail_msg: 
get_mailsvr_namespace: check for L1 class var cached data: 
$this->_direct_access_arg_value(mailsvr_namespace, '.$acctnum.'); returns: 
'.serialize($class_cached_mailsvr_namespace).'<br>'; }
                if ($class_cached_mailsvr_namespace != '')
                {
***************
*** 1229,1232 ****
--- 1231,1250 ----
                }
                */
+               // -----------
+               // TRY CACHED DATA FROM APPSESSION
+               // -----------
+               // try to restore "mailsvr_namespace" from saved appsession 
data store
+               $appsession_cached_mailsvr_namespace = 
$this->read_session_cache_item('mailsvr_namespace', $acctnum);
+               if ($appsession_cached_mailsvr_namespace)
+               {
+                       // cache the result in "level one cache" class var 
holder
+                       if ($this->debug_args_special_handlers > 1) { echo 
'mail_msg: get_mailsvr_namespace: put appsession retored data into "level 1 
cache, class var" arg $this->set_arg_value(mailsvr_namespace, 
'.$appsession_cached_mailsvr_namespace['mailsvr_namespace'].', '.$acctnum.']) 
<br>'; }
+                       $this->set_arg_value('mailsvr_namespace', 
$appsession_cached_mailsvr_namespace['mailsvr_namespace'], $acctnum);
+                       
+                       if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_mailsvr_namespace: LEAVING, returned appsession cached data: 
'.serialize($appsession_cached_mailsvr_namespace['mailsvr_namespace']).'<br>'; }
+                       return 
$appsession_cached_mailsvr_namespace['mailsvr_namespace'];
+               }
+               
+               
                // no cached data of any kind we can use ...
                
***************
*** 1343,1347 ****
                $this->set_cached_data($my_function_name,'string',$name_space);
                */
!               
                if ($this->debug_args_special_handlers > 0) { echo 'mail_msg: 
get_mailsvr_namespace: LEAVING, returning $name_space: 
'.serialize($name_space).'<br>'; }
                return $name_space;
--- 1361,1371 ----
                $this->set_cached_data($my_function_name,'string',$name_space);
                */
!               // -----------
!               // SAVE DATA TO APPSESSION CACHE
!               // -----------
!               // save "mailsvr_namespace" to appsession data store
!               if ($this->debug_args_special_handlers > 1) { echo 'mail_msg: 
get_mailsvr_namespace: set appsession cache 
$this->save_session_cache_item(mailsvr_namespace, '.$name_space.', 
'.$acctnum.']) <br>'; }
!               $this->save_session_cache_item('mailsvr_namespace', 
$name_space, $acctnum);
! 
                if ($this->debug_args_special_handlers > 0) { echo 'mail_msg: 
get_mailsvr_namespace: LEAVING, returning $name_space: 
'.serialize($name_space).'<br>'; }
                return $name_space;
***************
*** 1559,1569 ****
        may call directly if you can't to manually force_refresh any cached 
data 
        */
!       function get_folder_list($mailsvr_stream='', $force_refresh=False)
        {
                // what acctnum is operative here, we can only get a folder 
list for one account at a time (obviously)
!               $this_acctnum = $this->get_acctnum();
!               
                if ($this->debug_args_special_handlers > 0) { echo 'mail_msg: 
get_folder_list: ENTERING<br>'; }
!               if ($this->debug_args_special_handlers > 1) { echo 'mail_msg: 
get_folder_list: for the rest of this function we will use $this_acctnum: 
['.$this_acctnum.'] <br>'; }
                
                if (stristr($this->skip_args_special_handlers, 
'get_folder_list'))
--- 1583,1596 ----
        may call directly if you can't to manually force_refresh any cached 
data 
        */
!       function get_folder_list($acctnum='', $force_refresh=False)
        {
                // what acctnum is operative here, we can only get a folder 
list for one account at a time (obviously)
!               if ((!isset($acctnum))
!               || ((string)$acctnum == ''))
!               {
!                       $acctnum = $this->get_acctnum();
!               }
                if ($this->debug_args_special_handlers > 0) { echo 'mail_msg: 
get_folder_list: ENTERING<br>'; }
!               if ($this->debug_args_special_handlers > 1) { echo 'mail_msg: 
get_folder_list: for the rest of this function we will use $acctnum: 
['.$acctnum.'] <br>'; }
                
                if (stristr($this->skip_args_special_handlers, 
'get_folder_list'))
***************
*** 1573,1602 ****
                        $fake_return[0]['folder_long'] = 'INBOX';
                        $fake_return[0]['folder_short'] = 'INBOX';
!                       $fake_return[0]['acctnum'] = $this_acctnum;
                        if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_folder_list: LEAVING, debug SKIP, $fake_return: 
'.serialize($fake_return).' <br>'; }
                        return $fake_return;
                }
                
!               if ($this->debug_args_special_handlers > 2) { echo 'mail_msg: 
get_folder_list: $$this->_direct_access_arg_value(folder_list) dump:<pre>'; 
print_r($this->_direct_access_arg_value('folder_list')); echo '</pre>'; }
!               
!               if ((!$mailsvr_stream)
!               || ($mailsvr_stream == ''))
!               {
!                       $mailsvr_stream = 
$this->get_arg_value('mailsvr_stream');
!               }
                
!               // check if class dcom reports that the folder list has changed
!               //$tmp_a = $this->a[$this->acctnum];
                
!               //if ((isset($tmp_a['dcom']))
!               //&& ($tmp_a['dcom']->folder_list_changed == True))
!               if ((is_object($GLOBALS['phpgw_dcom_'.$this_acctnum]->dcom))
!               && 
($GLOBALS['phpgw_dcom_'.$this_acctnum]->dcom->folder_list_changed == True))
                {
                        // class dcom recorded a change in the folder list
                        // supposed to happen when create or delete mailbox is 
called
                        // reset the changed flag
!                       // $tmp_a['dcom']->folder_list_changed = False;
!                       
$GLOBALS['phpgw_dcom_'.$this_acctnum]->dcom->folder_list_changed = False;
                        // set up for a force_refresh
                        $force_refresh = True;
--- 1600,1620 ----
                        $fake_return[0]['folder_long'] = 'INBOX';
                        $fake_return[0]['folder_short'] = 'INBOX';
!                       $fake_return[0]['acctnum'] = $acctnum;
                        if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_folder_list: LEAVING, debug SKIP, $fake_return: 
'.serialize($fake_return).' <br>'; }
                        return $fake_return;
                }
                
!               if ($this->debug_args_special_handlers > 2) { echo 'mail_msg: 
get_folder_list: $$this->_direct_access_arg_value(folder_list, '.$acctnum.') 
dump:<pre>'; print_r($this->_direct_access_arg_value('folder_list', $acctnum)); 
echo '</pre>'; }
                
!               $mailsvr_stream = $this->get_arg_value('mailsvr_stream', 
$acctnum);
                
!               // check if class dcom reports that the folder list has changed 
        
!               if ((is_object($GLOBALS['phpgw_dcom_'.$acctnum]->dcom))
!               && ($GLOBALS['phpgw_dcom_'.$acctnum]->dcom->folder_list_changed 
== True))
                {
                        // class dcom recorded a change in the folder list
                        // supposed to happen when create or delete mailbox is 
called
                        // reset the changed flag
!                       
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->folder_list_changed = False;
                        // set up for a force_refresh
                        $force_refresh = True;
***************
*** 1606,1609 ****
--- 1624,1628 ----
                        //$blank_list = array();
                        //$this->set_arg_value('folder_list', $blank_list);
+                       /*
                        $my_function_name = 'get_folder_list';
                        //$this->remove_cached_data($my_function_name);
***************
*** 1611,1618 ****
                        // which is probably a good idea, we do not want 
mismatched cached items
                        $this->remove_cached_data('');
                }
  
                // see if we have object class var cached data that we can use
!               $class_cached_folder_list = 
$this->_direct_access_arg_value('folder_list');
                if ((count($class_cached_folder_list) > 0)
                && ($force_refresh == False))
--- 1630,1640 ----
                        // which is probably a good idea, we do not want 
mismatched cached items
                        $this->remove_cached_data('');
+                       */
+                       // expire appsession cache
+                       $this->expire_session_cache_item('folder_list', 
$acctnum);
                }
  
                // see if we have object class var cached data that we can use
!               $class_cached_folder_list = 
$this->_direct_access_arg_value('folder_list', $acctnum);
                if ((count($class_cached_folder_list) > 0)
                && ($force_refresh == False))
***************
*** 1623,1628 ****
                        return $class_cached_folder_list;
                }
!               elseif (($this->get_pref_value('mail_server_type') == 'pop3')
!               || ($this->get_pref_value('mail_server_type') == 'pop3s'))
                {
                        // normalize the folder_list property
--- 1645,1650 ----
                        return $class_cached_folder_list;
                }
!               elseif (($this->get_pref_value('mail_server_type', $acctnum) == 
'pop3')
!               || ($this->get_pref_value('mail_server_type', $acctnum) == 
'pop3s'))
                {
                        // normalize the folder_list property
***************
*** 1632,1638 ****
                        $my_folder_list[0]['folder_long'] = 'INBOX';
                        $my_folder_list[0]['folder_short'] = 'INBOX';
!                       $my_folder_list[0]['acctnum'] = $this_acctnum;
                        // save result to "Level 1 cache" class arg holder var
!                       $this->set_arg_value('folder_list', $my_folder_list);
                        if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_folder_list: LEAVING,  pop3 servers only have one folder: 
INBOX<br>'; }
                        return $my_folder_list;
--- 1654,1660 ----
                        $my_folder_list[0]['folder_long'] = 'INBOX';
                        $my_folder_list[0]['folder_short'] = 'INBOX';
!                       $my_folder_list[0]['acctnum'] = $acctnum;
                        // save result to "Level 1 cache" class arg holder var
!                       $this->set_arg_value('folder_list', $my_folder_list, 
$acctnum);
                        if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_folder_list: LEAVING,  pop3 servers only have one folder: 
INBOX<br>'; }
                        return $my_folder_list;
***************
*** 1640,1643 ****
--- 1662,1666 ----
                elseif ($force_refresh == False)
                {
+                       /*
                        // -----------
                        // TRY CACHED DATA FROM PREFS DB
***************
*** 1646,1666 ****
                        $my_function_name = 'get_folder_list';
                        $cached_data = 
$this->get_cached_data($my_function_name,'array');
                        // if there's no data we'll get back a FALSE
                        if ($cached_data)
                        {
!                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: using *Prefs DB* cached folder list data<br>';}
!                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: setting object var 
$this->a['.$this_acctnum.'][folder_list] to hold list data<br>';}
                                // cached folder list does NOT contain 
"folder_short" data
                                // that cuts cached data in 1/2, no need to 
cache something this easy to deduce
                                // therefor... add FOLDER SHORT element to 
cached_data array structure
!                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: adding [folder_short] element to 
$this->a['.$this_acctnum.'][folder_list] array<br>';}
                                for ($i=0; $i<count($cached_data);$i++)
                                {
                                        $cached_data[$i]['folder_short'] = 
$this->get_folder_short($cached_data[$i]['folder_long']);
!                                       if ($this->debug_args_special_handlers 
> 2) { echo ' * * 
$cached_data['.$i.'][folder_long]='.$cached_folder_list[$i]['folder_long'].' ; 
$cached_folder_list['.$i.'][folder_short]='.$cached_folder_list[$i]['folder_short'].'<br>';}
                                }
-                               // cache the result in "Level 1 cache" class 
object var
-                               $this->set_arg_value('folder_list', 
$cached_data);
                                if ($this->debug_args_special_handlers > 2) { 
echo 'mail_msg: get_folder_list: $cached_data *after* adding "folder_short" 
data<pre>'; print_r($cached_data); echo '</pre>'; }
                                if ($this->debug_args_special_handlers > 0) { 
echo 'mail_msg: get_folder_list: LEAVING, got data from cache<br>'; }
                                return $cached_data;
--- 1669,1710 ----
                        $my_function_name = 'get_folder_list';
                        $cached_data = 
$this->get_cached_data($my_function_name,'array');
+                       */
+                       // -----------
+                       // TRY CACHED DATA FROM APPSESSION
+                       // -----------
+                       // try to restore "folder_list" from saved appsession 
data store
+                       $appsession_cached_folder_list = 
$this->read_session_cache_item('folder_list', $acctnum);
+                       if ($appsession_cached_folder_list)
+                       {
+                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: got appsession cached data<br>'; }
+                               $cached_data = 
$appsession_cached_folder_list['folder_list'];
+                               if ($this->debug_args_special_handlers > 2) { 
echo 'mail_msg: get_folder_list: appsession cached data dump<pre>'; 
print_r($cached_data); echo '</pre>'; }
+                               // we no longer need this var
+                               $appsession_cached_folder_list['folder_list'] = 
'';
+                       }
+                       else
+                       {
+                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: NO appsession cached data was available<br>'; }
+                               $cached_data = False;
+                       }
+                       
                        // if there's no data we'll get back a FALSE
                        if ($cached_data)
                        {
!                               //if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: using *Prefs DB* cached folder list data<br>';}
!                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: using appsession cached folder list data<br>';}
                                // cached folder list does NOT contain 
"folder_short" data
                                // that cuts cached data in 1/2, no need to 
cache something this easy to deduce
                                // therefor... add FOLDER SHORT element to 
cached_data array structure
!                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: adding [folder_short] element to 
$this->a['.$acctnum.'][folder_list] array<br>';}
                                for ($i=0; $i<count($cached_data);$i++)
                                {
                                        $cached_data[$i]['folder_short'] = 
$this->get_folder_short($cached_data[$i]['folder_long']);
!                                       if ($this->debug_args_special_handlers 
> 2) { echo ' * * 
$cached_data['.$i.'][folder_long]='.htmlspecialchars($cached_data[$i]['folder_long']).'
 ; 
$cached_data['.$i.'][folder_short]='.htmlspecialchars($cached_data[$i]['folder_short']).'<br>';}
                                }
                                if ($this->debug_args_special_handlers > 2) { 
echo 'mail_msg: get_folder_list: $cached_data *after* adding "folder_short" 
data<pre>'; print_r($cached_data); echo '</pre>'; }
+                               // cache the result in "Level 1 cache" class 
object var
+                               if ($this->debug_args_special_handlers > 1) { 
echo 'mail_msg: get_folder_list: put folder_list into Level 1 class var "cache" 
$this->set_arg_value(folder_list, $cached_data, '.$acctnum.');<br>';}
+                               $this->set_arg_value('folder_list', 
$cached_data, $acctnum);
                                if ($this->debug_args_special_handlers > 0) { 
echo 'mail_msg: get_folder_list: LEAVING, got data from cache<br>'; }
                                return $cached_data;
***************
*** 1679,1688 ****
                
                // Establish Email Server Connectivity Information
!               $server_str = $this->get_arg_value('mailsvr_callstr');
!               $name_space = $this->get_arg_value('mailsvr_namespace');
!               $delimiter = $this->get_arg_value('mailsvr_delimiter');
                
                // get a list of available folders from the server
!               if ($this->get_pref_value('imap_server_type') == 'UWash')
                {
                        if ($this->debug_args_special_handlers > 1) { echo 
'mail_msg: get_folder_list: mailserver is of type UWash<br>';}
--- 1723,1732 ----
                
                // Establish Email Server Connectivity Information
!               $server_str = $this->get_arg_value('mailsvr_callstr', $acctnum);
!               $name_space = $this->get_arg_value('mailsvr_namespace', 
$acctnum);
!               $delimiter = $this->get_arg_value('mailsvr_delimiter', 
$acctnum);
                
                // get a list of available folders from the server
!               if ($this->get_pref_value('imap_server_type', $acctnum) == 
'UWash')
                {
                        if ($this->debug_args_special_handlers > 1) { echo 
'mail_msg: get_folder_list: mailserver is of type UWash<br>';}
***************
*** 1698,1703 ****
                        // UWash will consider it relative to the mailuser's 
$HOME property as with "emails/*" (DOES THIS WORK ON ALL PLATFORMS??)
                        // BUT we use <tilde><slash> "~/" if no namespace is 
given
!                       //$mailboxes = 
$tmp_a['dcom']->listmailbox($mailsvr_stream, $server_str, "$name_space" 
."$delimiter" ."*");
!                       $mailboxes = 
$GLOBALS['phpgw_dcom_'.$this_acctnum]->dcom->listmailbox($mailsvr_stream, 
$server_str, "$name_space" ."$delimiter" ."*");
                        // UWASH IMAP returns information in this format:
                        // {SERVER_NAME:PORT}FOLDERNAME
--- 1742,1746 ----
                        // UWash will consider it relative to the mailuser's 
$HOME property as with "emails/*" (DOES THIS WORK ON ALL PLATFORMS??)
                        // BUT we use <tilde><slash> "~/" if no namespace is 
given
!                       $mailboxes = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->listmailbox($mailsvr_stream, 
$server_str, "$name_space" ."$delimiter" ."*");
                        // UWASH IMAP returns information in this format:
                        // {SERVER_NAME:PORT}FOLDERNAME
***************
*** 1714,1722 ****
                        // so - it's safe to include the delimiter here, but 
the INBOX will not be included in the list
                        // this is typically the ONLY TIME you would ever *not* 
use the delimiter between the namespace and what comes after it
!                       //$mailboxes = 
$this->a[$this_acctnum]['dcom']->listmailbox($mailsvr_stream, $server_str, 
"$name_space" ."*");
                        // UPDATED information of this issue: to get shared 
folders included in the return, better NOT include the "." delimiter
                        // example: Cyrus does not like anything but a "*" as 
the pattern IF you want shared folders returned.
                        //$mailboxes = 
$tmp_a['dcom']->listmailbox($mailsvr_stream, $server_str, "*");
!                       $mailboxes = 
$GLOBALS['phpgw_dcom_'.$this_acctnum]->dcom->listmailbox($mailsvr_stream, 
$server_str, "*");
                        // returns information in this format:
                        // {SERVER_NAME:PORT} NAMESPACE DELIMITER FOLDERNAME
--- 1757,1765 ----
                        // so - it's safe to include the delimiter here, but 
the INBOX will not be included in the list
                        // this is typically the ONLY TIME you would ever *not* 
use the delimiter between the namespace and what comes after it
!                       //$mailboxes = 
$this->a[$acctnum]['dcom']->listmailbox($mailsvr_stream, $server_str, 
"$name_space" ."*");
                        // UPDATED information of this issue: to get shared 
folders included in the return, better NOT include the "." delimiter
                        // example: Cyrus does not like anything but a "*" as 
the pattern IF you want shared folders returned.
                        //$mailboxes = 
$tmp_a['dcom']->listmailbox($mailsvr_stream, $server_str, "*");
!                       $mailboxes = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->listmailbox($mailsvr_stream, 
$server_str, "*");
                        // returns information in this format:
                        // {SERVER_NAME:PORT} NAMESPACE DELIMITER FOLDERNAME
***************
*** 1738,1744 ****
                        $my_folder_list[0]['folder_long'] = 'INBOX';
                        $my_folder_list[0]['folder_short'] = 'INBOX';
!                       $my_folder_list[0]['acctnum'] = $this_acctnum;
                        // save result to "Level 1 cache" class arg holder var
!                       $this->set_arg_value('folder_list', $my_folder_list);
                        if ($this->debug_args_special_handlers > 1) { echo 
'mail_msg: get_folder_list: error, no mailboxes returned from server, fallback 
to "INBOX" as only folder, $this->set_arg_value(folder_list, $my_folder_list) 
to hold that value<br>'; }
                        if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_folder_list: LEAVING, with error, no mailboxes returned from 
server, return list with only INBOX<br>'; }
--- 1781,1787 ----
                        $my_folder_list[0]['folder_long'] = 'INBOX';
                        $my_folder_list[0]['folder_short'] = 'INBOX';
!                       $my_folder_list[0]['acctnum'] = $acctnum;
                        // save result to "Level 1 cache" class arg holder var
!                       $this->set_arg_value('folder_list', $my_folder_list, 
$acctnum);
                        if ($this->debug_args_special_handlers > 1) { echo 
'mail_msg: get_folder_list: error, no mailboxes returned from server, fallback 
to "INBOX" as only folder, $this->set_arg_value(folder_list, $my_folder_list) 
to hold that value<br>'; }
                        if ($this->debug_args_special_handlers > 0) { echo 
'mail_msg: get_folder_list: LEAVING, with error, no mailboxes returned from 
server, return list with only INBOX<br>'; }
***************
*** 1784,1788 ****
                // make a $my_folder_list array structure with ONLY FOLDER LONG 
data
                // save that to cache, that cuts cached data in 1/2
!               // (LATER - we will add the "folder_short" data
                for ($i=0; $i<count($mailboxes);$i++)
                {
--- 1827,1831 ----
                // make a $my_folder_list array structure with ONLY FOLDER LONG 
data
                // save that to cache, that cuts cached data in 1/2
!               // (LATER - we will add the "folder_short" data)
                for ($i=0; $i<count($mailboxes);$i++)
                {
***************
*** 1790,1794 ****
                        if ($this->is_imap_folder($mailboxes[$i]))
                        {
!                               
//$this->a[$this_acctnum]['folder_list'][$i]['folder_long'] = 
$this->get_folder_long($mailboxes[$i]);
                                // what we (well, me, Angles) calls a "folder 
long" is the raw data returned from the server (fully qualified name)
                                // MINUS the bracketed server, so we are 
calling "folder long" a NAMESPACE_DELIMITER_FOLDER string
--- 1833,1837 ----
                        if ($this->is_imap_folder($mailboxes[$i]))
                        {
!                               
//$this->a[$acctnum]['folder_list'][$i]['folder_long'] = 
$this->get_folder_long($mailboxes[$i]);
                                // what we (well, me, Angles) calls a "folder 
long" is the raw data returned from the server (fully qualified name)
                                // MINUS the bracketed server, so we are 
calling "folder long" a NAMESPACE_DELIMITER_FOLDER string
***************
*** 1798,1805 ****
                                // AS SOON as possible, add data indicating 
WHICH ACCOUNT this folder list came from
                                // while it is still somewhat easy to determine 
this
!                               $my_folder_list[$next_idx]['acctnum'] = 
$this_acctnum;
                        }
                }
                if ($this->debug_args_special_handlers > 2) { echo 'mail_msg: 
get_folder_list: my_folder_list with only "folder_long" dump<pre>'; 
print_r($my_folder_list); echo '</pre>'; }
                // -----------
                // SAVE DATA TO PREFS DB CACHE (without the [folder_short] data)
--- 1841,1849 ----
                                // AS SOON as possible, add data indicating 
WHICH ACCOUNT this folder list came from
                                // while it is still somewhat easy to determine 
this
!                               $my_folder_list[$next_idx]['acctnum'] = 
$acctnum;
                        }
                }
                if ($this->debug_args_special_handlers > 2) { echo 'mail_msg: 
get_folder_list: my_folder_list with only "folder_long" dump<pre>'; 
print_r($my_folder_list); echo '</pre>'; }
+               /*
                // -----------
                // SAVE DATA TO PREFS DB CACHE (without the [folder_short] data)
***************
*** 1807,1810 ****
--- 1851,1861 ----
                $my_function_name = 'get_folder_list';
                
$this->set_cached_data($my_function_name,'array',$my_folder_list);
+               */
+               // -----------
+               // SAVE DATA TO APPSESSION DB CACHE (without the [folder_short] 
data)
+               // -----------
+               // save "folder_list" (without folder short data) to appsession 
data store
+               if ($this->debug_args_special_handlers > 1) { echo 'mail_msg: 
get_folder_list: set appsession cache 
$this->save_session_cache_item(folder_list, $my_folder_list, '.$acctnum.']) 
<br>'; }
+               $this->save_session_cache_item('folder_list', $my_folder_list, 
$acctnum);
                
                // add FOLDER SHORT element to folder_list array structure
***************
*** 1815,1824 ****
                }
                // cache the result to "level 1 cache" class arg holder var
!               $this->set_arg_value('folder_list', $my_folder_list);
                
                // finished, return the folder_list array atructure
                if ($this->debug_args_special_handlers > 2) { echo 'mail_msg: 
get_folder_list: finished, $my_folder_list dump:<pre>'; 
print_r($my_folder_list); echo '</pre>'; }
                if ($this->debug_args_special_handlers > 0) { echo 'mail_msg: 
get_folder_list: LEAVING, got folder data from server<br>'; }
-               //$this->a[$this->acctnum] = $tmp_a;
                return $my_folder_list;
        }
--- 1866,1875 ----
                }
                // cache the result to "level 1 cache" class arg holder var
!               if ($this->debug_args_special_handlers > 1) { echo 'mail_msg: 
get_folder_list: set Level 1 class var "cache" 
$this->set_arg_value(folder_list, $my_folder_list, '.$acctnum.') <br>'; }
!               $this->set_arg_value('folder_list', $my_folder_list, $acctnum);
                
                // finished, return the folder_list array atructure
                if ($this->debug_args_special_handlers > 2) { echo 'mail_msg: 
get_folder_list: finished, $my_folder_list dump:<pre>'; 
print_r($my_folder_list); echo '</pre>'; }
                if ($this->debug_args_special_handlers > 0) { echo 'mail_msg: 
get_folder_list: LEAVING, got folder data from server<br>'; }
                return $my_folder_list;
        }
***************
*** 1841,1847 ****
                        $mailsvr_stream = 
$this->get_arg_value('mailsvr_stream');
                }
! 
!               $folder_list = $this->get_folder_list($mailsvr_stream);
! 
                //$debug_folder_lookup = True;
                $debug_folder_lookup = False;
--- 1892,1899 ----
                        $mailsvr_stream = 
$this->get_arg_value('mailsvr_stream');
                }
!               
!               //$folder_list = $this->get_folder_list($mailsvr_stream);
!               $folder_list = $this->get_folder_list();
!               
                //$debug_folder_lookup = True;
                $debug_folder_lookup = False;

Index: class.mail_msg_display.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware//email/inc/class.mail_msg_display.inc.php,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -r1.27 -r1.28
*** class.mail_msg_display.inc.php      8 Jan 2002 15:06:03 -0000       1.27
--- class.mail_msg_display.inc.php      9 Jan 2002 10:55:29 -0000       1.28
***************
*** 145,149 ****
                {
                        // get the actual list of folders we are going to put 
into the combobox
!                       $folder_list = $this->get_folder_list('');
                        
                        // iterate thru the folder list, building the HTML tags 
using that data
--- 145,149 ----
                {
                        // get the actual list of folders we are going to put 
into the combobox
!                       $folder_list = $this->get_folder_list();
                        
                        // iterate thru the folder list, building the HTML tags 
using that data

Index: class.mail_msg_wrappers.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware//email/inc/class.mail_msg_wrappers.inc.php,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** class.mail_msg_wrappers.inc.php     9 Jan 2002 00:30:53 -0000       1.20
--- class.mail_msg_wrappers.inc.php     9 Jan 2002 10:55:29 -0000       1.21
***************
*** 164,171 ****
                        }
                        $stream = $this->get_arg_value('mailsvr_stream', 
$acctnum);
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = $tmp_a['dcom']->get_body($stream, 
$msgball['msgnum']);
                        $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->get_body($stream, $msgball['msgnum']);
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 164,168 ----
***************
*** 194,202 ****
                        $part_no = $msgball['part_no'];
                        //echo 'mail_msg(_wrappers): phpgw_fetchbody: 
processed: $acctnum: '.$acctnum.'; $stream: '.serialize($stream).'; $msgnum: 
'.$msgnum.'; $part_no: '.$part_no.'<br> * $msgball dump<pre>'; 
print_r($msgball); echo '</pre>';
!                       //$tmp_a = $this->a[$this->acctnum];
!                       //$retval = $tmp_a['dcom']->fetchbody($stream, $msgnum, 
$part_no, $flags);
!                       $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->fetchbody($stream, $msgnum, $part_no, 
$flags);
!                       //$this->a[$this->acctnum] = $tmp_a;
!                       return $retval;
                }
                /*
--- 191,195 ----
                        $part_no = $msgball['part_no'];
                        //echo 'mail_msg(_wrappers): phpgw_fetchbody: 
processed: $acctnum: '.$acctnum.'; $stream: '.serialize($stream).'; $msgnum: 
'.$msgnum.'; $part_no: '.$part_no.'<br> * $msgball dump<pre>'; 
print_r($msgball); echo '</pre>';
!                       return 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->fetchbody($stream, $msgnum, $part_no, 
$flags);
                }
                /*
***************
*** 245,252 ****
                The data communications object (class mail_dcom) is supplied by 
the class
                */
!               function get_msgball_list()
                {
                        // try to restore "msgball_list" from saved session 
data store
!                       $cached_msgball_list = 
$this->read_session_cache_item('msgball_list');
                        if ($cached_msgball_list)
                        {
--- 238,251 ----
                The data communications object (class mail_dcom) is supplied by 
the class
                */
!               function get_msgball_list($acctnum='')
                {
+                       if ((!isset($acctnum))
+                       || ((string)$acctnum == ''))
+                       {
+                               $acctnum = $this->get_acctnum();
+                       }
+               
                        // try to restore "msgball_list" from saved session 
data store
!                       $cached_msgball_list = 
$this->read_session_cache_item('msgball_list', $acctnum);
                        if ($cached_msgball_list)
                        {
***************
*** 256,263 ****
                        {
                                $server_msgnum_list = array();
!                               //$tmp_a = $this->a[$this->acctnum];
!                               //$server_msgnum_list = 
$tmp_a['dcom']->sort($this->get_arg_value('mailsvr_stream'), 
$this->get_arg_value('sort'), $this->get_arg_value('order'));
!                               $server_msgnum_list = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->sort($this->get_arg_value('mailsvr_stream'),
 $this->get_arg_value('sort'), $this->get_arg_value('order'));
!                               //$this->a[$this->acctnum] = $tmp_a;
                                // put more information about these particular 
messages into the msgball_list[] structure
                                $msgball_list = array();
--- 255,259 ----
                        {
                                $server_msgnum_list = array();
!                               $server_msgnum_list = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->sort($this->get_arg_value('mailsvr_stream',
 $acctnum), $this->get_arg_value('sort', $acctnum), 
$this->get_arg_value('order', $acctnum));
                                // put more information about these particular 
messages into the msgball_list[] structure
                                $msgball_list = array();
***************
*** 267,277 ****
                                if ($loops > 0)
                                {
!                                       $msg_folder = 
$this->prep_folder_out($this->get_arg_value('folder'));
!                                       $msg_acctnum = $this->get_acctnum();
                                        for($i=0;$i<$loops;$i++)
                                        {
                                                $msgball_list[$i]['msgnum'] = 
$server_msgnum_list[$i];
                                                $msgball_list[$i]['folder'] = 
$msg_folder;
!                                               $msgball_list[$i]['acctnum'] = 
$msg_acctnum;
                                                // see php manual page 
"function.parse-str.html" for explanation of the array'ing of the URI data
                                                // NOTE: this uri NEVER begins 
with a "&" here
--- 263,272 ----
                                if ($loops > 0)
                                {
!                                       $msg_folder = 
$this->prep_folder_out($this->get_arg_value('folder', $acctnum));
                                        for($i=0;$i<$loops;$i++)
                                        {
                                                $msgball_list[$i]['msgnum'] = 
$server_msgnum_list[$i];
                                                $msgball_list[$i]['folder'] = 
$msg_folder;
!                                               $msgball_list[$i]['acctnum'] = 
$acctnum;
                                                // see php manual page 
"function.parse-str.html" for explanation of the array'ing of the URI data
                                                // NOTE: this uri NEVER begins 
with a "&" here
***************
*** 284,288 ****
                                }
                                // save "msgball_list" to session data store
!                               $this->save_session_cache_item('msgball_list', 
$msgball_list);
                                return $msgball_list;
                        }
--- 279,283 ----
                                }
                                // save "msgball_list" to session data store
!                               $this->save_session_cache_item('msgball_list', 
$msgball_list, $acctnum);
                                return $msgball_list;
                        }
***************
*** 301,308 ****
                function get_folder_size()
                {
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$mailbox_detail = 
$tmp_a['dcom']->mailboxmsginfo($this->get_arg_value('mailsvr_stream'));
                        $mailbox_detail = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->mailboxmsginfo($this->get_arg_value('mailsvr_stream'));
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $mailbox_detail->Size;
                }
--- 296,300 ----
***************
*** 328,341 ****
                        the integers after you have done any math code and 
befor eyou display them to the user, it adds the thousands comma
                */
!               function get_folder_status_info($force_refresh=False)
                {
!                       if ($this->debug_session_caching > 0) { echo 
'class_msg: get_folder_status_info: ENTERING, $force_refresh: 
'.serialize($force_refresh).' <br>'; }
                        
                        // do we have cached data in L1 cache / class object 
var, that we can use
!                       $folder_status_info = 
$this->get_arg_value('folder_status_info');
                        if ((!$force_refresh)
                        && ($folder_status_info)
                        && (count($folder_status_info) > 0)
!                       && ($folder_status_info['folder_checked'] == 
$this->get_arg_value('folder')))
                        {
                                // this data is cached, L1 cache, temp cache, 
so it should still be "fresh"
--- 320,356 ----
                        the integers after you have done any math code and 
befor eyou display them to the user, it adds the thousands comma
                */
!               function get_folder_status_info($fldball='', 
$force_refresh=False)
                {
!                       if ($this->debug_session_caching > 0) { echo 
'class_msg: get_folder_status_info: ENTERING, $fldball: '.serialize($fldball).' 
; $force_refresh (DEPRECIATED): '.serialize($force_refresh).' <br>'; }
!                       
!                       if ( (!isset($fldball))
!                       || ($fldball == '') )
!                       {
!                               // we have NO instructions on a folder nor 
acctnum, so make a blank fldball
!                               $fldball = array();
!                               $fldball['acctnum'] = '';
!                               $fldball['folder'] = '';
!                       }
!                       // now we know we have a fldball structure to work 
with, analyse it
!                       if ((!isset($fldball['acctnum']))
!                       || ((string)$fldball['acctnum'] == ''))
!                       {
!                               $fldball['acctnum'] = $this->get_acctnum();
!                       }
!                       if ((!isset($fldball['folder']))
!                       || ((string)$fldball['folder'] == ''))
!                       {
!                               $fldball['folder'] = 
$this->get_arg_value('folder', $fldball['acctnum']);
!                       }
!                       $stream = $this->get_arg_value('mailsvr_stream', 
$fldball['acctnum']);
!                       $server_str = $this->get_arg_value('mailsvr_callstr', 
$fldball['acctnum']);
!                       if ($this->debug_session_caching > 2) { echo 
'class_msg: get_folder_status_info: will use $stream ['.serialize($stream).'] ; 
$server_str ['.$server_str.'] ; $fldball: '.serialize($fldball).' <br>'; }
                        
                        // do we have cached data in L1 cache / class object 
var, that we can use
!                       $folder_status_info = 
$this->get_arg_value('folder_status_info', $fldball['acctnum']);
                        if ((!$force_refresh)
                        && ($folder_status_info)
                        && (count($folder_status_info) > 0)
!                       && ($folder_status_info['folder_checked'] == 
$fldball['folder']))
                        {
                                // this data is cached, L1 cache, temp cache, 
so it should still be "fresh"
***************
*** 347,351 ****
                        $return_data = Array();
                        $return_data['is_imap'] = False;
!                       $return_data['folder_checked'] = 
$this->get_arg_value('folder');
                        $return_data['alert_string'] = '';
                        $return_data['number_new'] = 0;
--- 362,366 ----
                        $return_data = Array();
                        $return_data['is_imap'] = False;
!                       $return_data['folder_checked'] = $fldball['folder'];
                        $return_data['alert_string'] = '';
                        $return_data['number_new'] = 0;
***************
*** 355,363 ****
                        $return_data['uidvalidity'] = 0;
                        
!                       $server_str = $this->get_arg_value('mailsvr_callstr');
!                       //$tmp_a = $this->a[$this->acctnum];
!                       //$mailbox_status = 
$tmp_a['dcom']->status($this->get_arg_value('mailsvr_stream'),$server_str.$this->get_arg_value('folder'),SA_ALL);
!                       $mailbox_status = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->status($this->get_arg_value('mailsvr_stream'),$server_str.$this->get_arg_value('folder'),SA_ALL);
!                       //$this->a[$this->acctnum] = $tmp_a;
                        
                        // cache validity data - will be used to cache 
msg_list_array data, which is good until UID_NEXT changes
--- 370,374 ----
                        $return_data['uidvalidity'] = 0;
                        
!                       $mailbox_status = 
$GLOBALS['phpgw_dcom_'.$fldball['acctnum']]->dcom->status($stream,$server_str.$fldball['folder'],SA_ALL);
                        
                        // cache validity data - will be used to cache 
msg_list_array data, which is good until UID_NEXT changes
***************
*** 365,370 ****
                        $return_data['uidvalidity'] = 
$mailbox_status->uidvalidity;
                        
!                       if (($this->get_pref_value('mail_server_type') == 
'imap')
!                       || ($this->get_pref_value('mail_server_type') == 
'imaps'))
                        {
                                $return_data['is_imap'] = True;
--- 376,382 ----
                        $return_data['uidvalidity'] = 
$mailbox_status->uidvalidity;
                        
!                       $mail_server_type = 
$this->get_pref_value('mail_server_type', $fldball['acctnum']);
!                       if (($mail_server_type == 'imap')
!                       || ($mail_server_type == 'imaps'))
                        {
                                $return_data['is_imap'] = True;
***************
*** 404,419 ****
                        }
                        // cache data in a class var (L1 Cache)
!                       $this->set_arg_value('folder_status_info', 
$return_data);
                        if ($this->debug_session_caching > 0) { echo 
'class_msg: get_folder_status_info: LEAVING returning data obtained from 
server<br>'; }
                        return $return_data;
                }
                
                function phpgw_status($feed_folder_long='')
                {
                        $server_str = $this->get_arg_value('mailsvr_callstr');
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = 
$tmp_a['dcom']->status($this->get_arg_value('mailsvr_stream'),"$server_str"."$feed_folder_long",SA_ALL);
                        $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->status($this->get_arg_value('mailsvr_stream'),"$server_str"."$feed_folder_long",SA_ALL);
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 416,430 ----
                        }
                        // cache data in a class var (L1 Cache)
!                       if ($this->debug_session_caching > 2) { echo 
'class_msg: get_folder_status_info: saving to L1 class var cache, 
$this->set_arg_value(folder_status_info, $return_data, '.$fldball['acctnum'].') 
; $return_data dump:<pre>'; print_r($return_data); echo '</pre>'; }
!                       $this->set_arg_value('folder_status_info', 
$return_data, $fldball['acctnum']);
                        if ($this->debug_session_caching > 0) { echo 
'class_msg: get_folder_status_info: LEAVING returning data obtained from 
server<br>'; }
                        return $return_data;
                }
                
+               // FIXME: change arg to fldball
                function phpgw_status($feed_folder_long='')
                {
                        $server_str = $this->get_arg_value('mailsvr_callstr');
                        $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->status($this->get_arg_value('mailsvr_stream'),"$server_str"."$feed_folder_long",SA_ALL);
                        return $retval;
                }
***************
*** 421,437 ****
                function phpgw_server_last_error()
                {
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = $tmp_a['dcom']->server_last_error();
                        $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->server_last_error();
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
                
!               function phpgw_ping()
                {
!                       //$tmp_a = $this->a[$this->acctnum];
!                       //$retval = 
$tmp_a['dcom']->noop_ping_test($this->get_arg_value('mailsvr_stream'));
!                       $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->noop_ping_test($this->get_arg_value('mailsvr_stream'));
!                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 432,448 ----
                function phpgw_server_last_error()
                {
                        $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->server_last_error();
                        return $retval;
                }
                
!               function phpgw_ping($acctnum='')
                {
!                       if ((!isset($acctnum))
!                       || ((string)$acctnum == ''))
!                       {
!                               $acctnum = $this->get_acctnum();
!                       }
!                       $stream = $this->get_arg_value('mailsvr_stream', 
$acctnum);
!                       $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->noop_ping_test($stream);
                        return $retval;
                }
***************
*** 439,446 ****
                function phpgw_search($criteria,$flags='')
                {
!                       //$tmp_a = $this->a[$this->acctnum];
!                       //$retval = 
$tmp_a['dcom']->i_search($this->get_arg_value('mailsvr_stream'),$criteria,$flags);
!                       $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->i_search($this->get_arg_value('mailsvr_stream'),$criteria,$flags);
!                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 450,455 ----
                function phpgw_search($criteria,$flags='')
                {
!                       $stream = $this->get_arg_value('mailsvr_stream');
!                       $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->i_search($stream,$criteria,$flags);
                        return $retval;
                }
***************
*** 451,458 ****
                        $stream = $this->get_arg_value('mailsvr_stream', 
$acctnum);
                        $folder = $target_fldball['folder'];
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = $tmp_a['dcom']->createmailbox($stream, 
$folder);
                        $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->createmailbox($stream, $folder);
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 460,464 ----
***************
*** 460,470 ****
                function phpgw_deletemailbox($target_fldball)
                {
!                       $acctnum = (int)$target_fldball['acctnum'];
                        $stream = $this->get_arg_value('mailsvr_stream', 
$acctnum);
                        $folder = $target_fldball['folder'];
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = $tmp_a['dcom']->deletemailbox($stream, 
$folder);
                        $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->deletemailbox($stream, $folder);
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 466,473 ----
                function phpgw_deletemailbox($target_fldball)
                {
!                       $acctnum = $target_fldball['acctnum'];
                        $stream = $this->get_arg_value('mailsvr_stream', 
$acctnum);
                        $folder = $target_fldball['folder'];
                        $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->deletemailbox($stream, $folder);
                        return $retval;
                }
***************
*** 476,483 ****
                        $folder_old = $source_fldball['folder'];
                        $folder_new = $target_fldball['folder'];
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = $tmp_a['dcom']->renamemailbox($stream, 
$folder_old, $folder_new);
                        $retval = 
$GLOBALS['phpgw_dcom_'.$acctnum]->dcom->renamemailbox($stream, $folder_old, 
$folder_new);
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 479,483 ----
***************
*** 530,540 ****
                        && ($official_folder_long != ''))
                        {
!                               // delete session msg array data thAt is now 
stale
                                
$this->expire_session_cache_item('msgball_list');
                                // do the append
-                               //$tmp_a = $this->a[$this->acctnum];
-                               //$retval = 
$tmp_a['dcom']->append($this->get_arg_value('mailsvr_stream'), 
"$server_str"."$official_folder_long", $message, $flags);
                                $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->append($this->get_arg_value('mailsvr_stream'),
 "$server_str"."$official_folder_long", $message, $flags);
-                               //$this->a[$this->acctnum] = $tmp_a;
                                return $retval;
                        }
--- 530,537 ----
                        && ($official_folder_long != ''))
                        {
!                               // delete appsession msg array data thAt is now 
stale
                                
$this->expire_session_cache_item('msgball_list');
                                // do the append
                                $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->append($this->get_arg_value('mailsvr_stream'),
 "$server_str"."$official_folder_long", $message, $flags);
                                return $retval;
                        }
***************
*** 554,561 ****
                        $this->expire_session_cache_item('msgball_list');
                        
-                       //$tmp_a = $this->a[$this->acctnum];
-                       //$retval = 
$tmp_a['dcom']->mail_move($this->get_arg_value('mailsvr_stream'), $msg_list, 
$mailbox);
                        $retval = 
$GLOBALS['phpgw_dcom_'.$this->acctnum]->dcom->mail_move($this->get_arg_value('mailsvr_stream'),
 $msg_list, $mailbox);
-                       //$this->a[$this->acctnum] = $tmp_a;
                        return $retval;
                }
--- 551,555 ----
***************
*** 1033,1080 ****
                                                
$got_args['mailsvr_account_username'] = '';
                                        }
-                                       /*
-                                       // THESE menuaction args are being 
DEPRECIATED
-                                       // these are the supported menuaction 
strings
-                                       elseif ($this_arg_name == 
'index_menuaction')
-                                       {
-                                               $got_args['index_menuaction'] = 
'menuaction=email.uiindex.index';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       elseif ($this_arg_name == 
'mlist_menuaction')
-                                       {
-                                               $got_args['mlist_menuaction'] = 
'menuaction=email.uiindex.mlist';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       elseif ($this_arg_name == 
'delmov_menuaction')
-                                       {
-                                               $got_args['delmov_menuaction'] 
= 'menuaction=email.boaction.delmov';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       elseif ($this_arg_name == 
'get_attach_menuaction')
-                                       {
-                                               
$got_args['get_attach_menuaction'] = 'menuaction=email.boaction.get_attach';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       elseif ($this_arg_name == 
'view_html_menuaction')
-                                       {
-                                               
$got_args['view_html_menuaction'] = 'menuaction=email.boaction.view_html';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       elseif ($this_arg_name == 
'folder_menuaction')
-                                       {
-                                               $got_args['folder_menuaction'] 
= 'menuaction=email.uifolder.folder';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       elseif ($this_arg_name == 
'send_menuaction')
-                                       {
-                                               $got_args['send_menuaction'] = 
'menuaction=email.bosend.send';
-                                               //$got_args['index_menuaction'] 
.= '&acctnum='.$acctnum;
-                                       }
-                                       // use this uri in any auto-refresh 
request - filled during "fill_sort_order_start_msgnum()"
-                                       elseif ($this_arg_name == 
'index_refresh_uri')
-                                       {
-                                               $got_args['index_refresh_uri'] 
='';
-                                       }
-                                       */
                                        // experimental: Set Flag indicative 
we've run thru this function
                                        elseif ($this_arg_name == 
'already_grab_class_args_gpc')
--- 1027,1030 ----
***************
*** 1140,1148 ****
                        // ALWAYS expire "folder_status_info" because many time 
this expire function is called because of a message move or delete
                        $empty_array = array();
!                       $this->set_arg_value('folder_status_info', 
$empty_array);
                        if ($this->debug_session_caching > 1) { echo 'mail_msg: 
expire_session_cache_item: clearing L1 cache/class var $data_name = 
['.$data_name.']<br>'; }
!                       if ($this->get_isset_arg($data_name))
                        {
!                               $old_content = $this->get_arg_value($data_name);
                                if ($this->debug_session_caching > 2) { echo 
'mail_msg: expire_session_cache_item: L1 cache/class OLD value dump:<pre>'; 
print_r($old_content); echo '</pre>'; }
                                if (gettype($old_content) == 'array')
--- 1090,1098 ----
                        // ALWAYS expire "folder_status_info" because many time 
this expire function is called because of a message move or delete
                        $empty_array = array();
!                       $this->set_arg_value('folder_status_info', 
$empty_array, $acctnum);
                        if ($this->debug_session_caching > 1) { echo 'mail_msg: 
expire_session_cache_item: clearing L1 cache/class var $data_name = 
['.$data_name.']<br>'; }
!                       if ($this->get_isset_arg($data_name, $acctnum))
                        {
!                               $old_content = $this->get_arg_value($data_name, 
$acctnum);
                                if ($this->debug_session_caching > 2) { echo 
'mail_msg: expire_session_cache_item: L1 cache/class OLD value dump:<pre>'; 
print_r($old_content); echo '</pre>'; }
                                if (gettype($old_content) == 'array')
***************
*** 1155,1167 ****
                                }
                                // set the arg item to this blank value, 
effectively clearing/expiring it
!                               $this->set_arg_value($data_name, $empty_data);
                        }
                        // ---  now get rid of any "$data_name" value saved in 
the session cache  ---
                        // for session cache, we can simple set the value to an 
empty string to blank it out
                        $empty_data = '';
!                       $this->set_arg_value('folder_status_info', 
$empty_array);
                        // save blank data to session to erase/expire it
                        $empty_data = '';
!                       
$this->save_session_cache_item($data_name,$empty_data,$acctnum);
                        if ($this->debug_session_caching > 0) { echo 'mail_msg: 
expire_session_cache_item: LEAVING<br>'; }
                }
--- 1105,1117 ----
                                }
                                // set the arg item to this blank value, 
effectively clearing/expiring it
!                               $this->set_arg_value($data_name, $empty_data, 
$acctnum);
                        }
                        // ---  now get rid of any "$data_name" value saved in 
the session cache  ---
                        // for session cache, we can simple set the value to an 
empty string to blank it out
                        $empty_data = '';
!                       $this->set_arg_value('folder_status_info', 
$empty_array, $acctnum);
                        // save blank data to session to erase/expire it
                        $empty_data = '';
!                       $this->save_session_cache_item($data_name, $empty_data, 
$acctnum);
                        if ($this->debug_session_caching > 0) { echo 'mail_msg: 
expire_session_cache_item: LEAVING<br>'; }
                }
***************
*** 1169,1172 ****
--- 1119,1124 ----
                function 
save_session_cache_item($data_name='misc',$data,$acctnum='')
                {
+                       $has_handler = False;
+                       
                        if ((!isset($acctnum))
                        || ((string)$acctnum == ''))
***************
*** 1174,1184 ****
                                $acctnum = $this->get_acctnum();
                        }
-                       
                        if ($this->debug_session_caching > 0) { echo 'mail_msg: 
save_session_cache_item: ENTERED, 
$this->session_cache_enabled='.serialize($this->session_cache_enabled).'<br>'; }
                        if (($this->session_cache_enabled)
                        && (!$data))
                        {
                                // empty $data means "EXPIRE the data"
!                               $location = 
'acctnum='.(string)$acct_num.';dataname='.$data_name;
                                $app = 'email';
                                $meta_data = '';
--- 1126,1138 ----
                                $acctnum = $this->get_acctnum();
                        }
                        if ($this->debug_session_caching > 0) { echo 'mail_msg: 
save_session_cache_item: ENTERED, 
$this->session_cache_enabled='.serialize($this->session_cache_enabled).'<br>'; }
+                       
                        if (($this->session_cache_enabled)
                        && (!$data))
                        {
+                               // we know what to do here, so this data "has a 
handler"
+                               $has_handler = True;
                                // empty $data means "EXPIRE the data"
!                               $location = 
'acctnum='.(string)$acctnum.';data_name='.$data_name;
                                $app = 'email';
                                $meta_data = '';
***************
*** 1196,1249 ****
                        elseif ($this->session_cache_enabled)
                        {
!                               // set the data in appsession
!                               $folder_info = $this->get_folder_status_info();
!                               
!                               $meta_data = Array();
!                               $meta_data[$data_name] = $data;
!                               $meta_data['validity'] = Array();
                                if ($data_name == 'msgball_list')
                                {
!                                       $meta_data['validity']['folder_long'] = 
$this->get_arg_value('folder');
!                                       $meta_data['validity']['sort'] = 
$this->get_arg_value('sort');
!                                       $meta_data['validity']['order'] = 
$this->get_arg_value('order');
                                        $meta_data['validity']['uidnext'] = 
$folder_info['uidnext'];
                                        $meta_data['validity']['uidvalidity'] = 
$folder_info['uidvalidity'];
                                        $meta_data['validity']['number_all'] = 
$folder_info['number_all'];
!                                       
$meta_data['validity']['get_mailsvr_callstr'] = 
$this->get_arg_value('mailsvr_callstr');
!                                       
$meta_data['validity']['mailsvr_account_username'] = 
$this->get_arg_value('mailsvr_account_username');
                                }
!                               /*
!                               $accounts = array();
!                               $accounts[$acctnum] = array();
!                               $accounts[$acctnum]['data'] = array();
!                               $accounts[$acctnum]['data'][$data_name] = $data;
!                               $accounts[$acctnum]['data']['validity'] = 
Array();
!                               if ($data_name == 'msgball_list')
                                {
!                                       
$accounts[$acctnum]['data']['validity']['folder_long'] = 
$this->get_arg_value('folder');
!                                       
$accounts[$acctnum]['data']['validity']['sort'] = $this->get_arg_value('sort');
!                                       
$accounts[$acctnum]['data']['validity']['order'] = 
$this->get_arg_value('order');
!                                       
$accounts[$acctnum]['data']['validity']['uidnext'] = $folder_info['uidnext'];
!                                       
$accounts[$acctnum]['data']['validity']['uidvalidity'] = 
$folder_info['uidvalidity'];
!                                       
$accounts[$acctnum]['data']['validity']['get_mailsvr_callstr'] = 
$this->get_arg_value('mailsvr_callstr');
!                                       
$accounts[$acctnum]['data']['validity']['mailsvr_account_username'] = 
$this->get_arg_value('mailsvr_account_username');
                                }
!                               */
!                               $location = 
'acctnum='.(string)$acctnum.';dataname='.$data_name;
!                               $app = 'email';
!                               if ($this->debug_session_caching > 1) { echo 
'mail_msg: save_session_cache_item: location: ['.$location.'] $app='.$app.'; 
$meta_data dump:<pre>'; print_r($meta_data); echo '</pre>'; }
!                               if ($this->session_cache_debug_nosave == False)
                                {
!                                       
$GLOBALS['phpgw']->session->appsession($location,$app,$meta_data);
                                }
                                else
                                {
!                                       echo 'mail_msg: 
save_session_cache_item: session_cache_debug_nosave disallows actual saving of 
data<br>';
                                }
-                               if ($this->debug_session_caching > 0) { echo 
'mail_msg: save_session_cache_item: LEAVING, did set data<br>'; }
-                       }
-                       else
-                       {
-                               if ($this->debug_session_caching > 0) { echo 
'mail_msg: save_session_cache_item: with error - UNHANDLED if...then 
conditions<br>'; }
                        }
                }
--- 1150,1216 ----
                        elseif ($this->session_cache_enabled)
                        {
!                               if ($this->debug_session_caching > 1) { echo 
'mail_msg: save_session_cache_item: session_cache_enabled and data exists<br>'; 
}
!                               // process the data according to what it is
                                if ($data_name == 'msgball_list')
                                {
!                                       if ($this->debug_session_caching > 1) { 
echo 'mail_msg: save_session_cache_item: session_cache_enabled and data exists 
AND has a handler<br>'; }
!                                       // we know what to do here, so this 
data "has a handler"
!                                       $has_handler = True;
!                                       
!                                       // ----  set the data in appsession  
----
!                                       // we use folder_info for validity 
testing of data "stale" or not when we retrieve the cached data later
!                                       $folder_info = 
$this->get_folder_status_info();
!                                       // make the structure for the data
!                                       $meta_data = Array();
!                                       $meta_data[$data_name] = $data;
!                                       $meta_data['validity'] = Array();
!                                       $meta_data['validity']['folder_long'] = 
$this->get_arg_value('folder', $acctnum);
!                                       $meta_data['validity']['sort'] = 
$this->get_arg_value('sort', $acctnum);
!                                       $meta_data['validity']['order'] = 
$this->get_arg_value('order', $acctnum);
                                        $meta_data['validity']['uidnext'] = 
$folder_info['uidnext'];
                                        $meta_data['validity']['uidvalidity'] = 
$folder_info['uidvalidity'];
                                        $meta_data['validity']['number_all'] = 
$folder_info['number_all'];
!                                       
$meta_data['validity']['get_mailsvr_callstr'] = 
$this->get_arg_value('mailsvr_callstr', $acctnum);
!                                       
$meta_data['validity']['mailsvr_account_username'] = 
$this->get_arg_value('mailsvr_account_username', $acctnum);
                                }
!                               elseif (($data_name == 'mailsvr_namespace')
!                               || ($data_name == 'folder_list'))
                                {
!                                       if ($this->debug_session_caching > 1) { 
echo 'mail_msg: save_session_cache_item: session_cache_enabled and data exists 
AND has a handler<br>'; }
!                                       // we know what to do here, so this 
data "has a handler"
!                                       $has_handler = True;
!                                       // make the structure for the data
!                                       $meta_data = Array();
!                                       $meta_data[$data_name] = $data;
                                }
!                               else
                                {
!                                       // this data_name has no specific 
handler
!                                       if ($this->debug_session_caching > 0) { 
echo 'mail_msg: save_session_cache_item: error - NO HANDLER for 
data_name='.$data_name.'<br>'; }
!                                       // make an empty $meta_data Array as a 
sign there's no data to save
!                                       $meta_data = Array();
!                               }
!                               
!                               // save data, assuming we've "handled" it
!                               if ((isset($meta_data))
!                               && (count($meta_data) > 0))
!                               {
!                                       $location = 
'acctnum='.(string)$acctnum.';data_name='.$data_name;
!                                       $app = 'email';
!                                       if ($this->debug_session_caching > 1) { 
echo 'mail_msg: save_session_cache_item: location: ['.$location.'] 
$app='.$app.'; $meta_data dump:<pre>'; print_r($meta_data); echo '</pre>'; }
!                                       if ($this->session_cache_debug_nosave 
== False)
!                                       {
!                                               
$GLOBALS['phpgw']->session->appsession($location,$app,$meta_data);
!                                       }
!                                       else
!                                       {
!                                               echo 'mail_msg: 
save_session_cache_item: session_cache_debug_nosave disallows actual saving of 
data<br>';
!                                       }
!                                       if ($this->debug_session_caching > 0) { 
echo 'mail_msg: save_session_cache_item: LEAVING, did set data<br>'; }
                                }
                                else
                                {
!                                       if ($this->debug_session_caching > 0) { 
echo 'mail_msg: save_session_cache_item: unable to save data for data_name: 
['.$data_name.'] $meta_data is an array wit count of 0, probably unhandled 
data<br>'; }
                                }
                        }
                }
***************
*** 1261,1295 ****
                        if ($this->session_cache_enabled)
                        {
!                               $folder_info = $this->get_folder_status_info();
                                
!                               $location = 
'acctnum='.(string)$acctnum.';dataname='.$data_name;
                                $app = 'email';
                                // get session data
                                $got_data = 
$GLOBALS['phpgw']->session->appsession($location,$app);
-                               
                                if ($this->debug_session_caching > 1) { echo 
'mail_msg: read_session_cache_item: location: ['.$location.'] $app='.$app.'; 
$got_data dump:<pre>'; print_r($got_data); echo '</pre>'; }
                                
!                               // VERIFY this cached data is still valid
!                               if (($got_data)
!                               && ($data_name == 'msgball_list'))
!                               {
!                                       if ($this->debug_session_caching > 1) { 
echo 'mail_msg: read_session_cache_item: handling $data_name='.$data_name.' 
session validity and/or relevance<br>'; }
!                                       if 
(($got_data['validity']['folder_long'] == $this->get_arg_value('folder'))
!                                       && ($got_data['validity']['sort'] == 
$this->get_arg_value('sort'))
!                                       && ($got_data['validity']['order'] == 
$this->get_arg_value('order'))
!                                       && ($got_data['validity']['uidnext'] == 
$folder_info['uidnext'])
!                                       && 
($got_data['validity']['uidvalidity'] == $folder_info['uidvalidity'])
!                                       && ($got_data['validity']['number_all'] 
 == $folder_info['number_all'])
!                                       && 
($got_data['validity']['get_mailsvr_callstr'] == 
$this->get_arg_value('mailsvr_callstr'))
!                                       && 
($got_data['validity']['mailsvr_account_username'] == 
$this->get_arg_value('mailsvr_account_username')))
                                        {
!                                               if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, successfully restored valid $data_name='.$data_name.' session 
data<br>'; }
                                                return $got_data;
                                        }
                                        else
                                        {
!                                               if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, returning False, $data_name='.$data_name.' session was stale<br>'; }
                                                return False;
                                        }
                                }
                                elseif ($got_data)
--- 1228,1291 ----
                        if ($this->session_cache_enabled)
                        {
!                               if ($this->debug_session_caching > 1) { echo 
'mail_msg: read_session_cache_item: begin get data<br>'; }
                                
!                               $location = 
'acctnum='.(string)$acctnum.';data_name='.$data_name;
                                $app = 'email';
                                // get session data
                                $got_data = 
$GLOBALS['phpgw']->session->appsession($location,$app);
                                if ($this->debug_session_caching > 1) { echo 
'mail_msg: read_session_cache_item: location: ['.$location.'] $app='.$app.'; 
$got_data dump:<pre>'; print_r($got_data); echo '</pre>'; }
                                
!                               // use a specific handler for the data
!                               if ($data_name == 'msgball_list')
!                               {
!                                       if ($this->debug_session_caching > 1) { 
echo 'mail_msg: read_session_cache_item: handler exists for $data_name 
['.$data_name.']<br>'; }
!                                       // folder_info used to test validity 
(stale or not) of the cached msgball_list data
!                                       $folder_info = 
$this->get_folder_status_info();
!                                       
!                                       // VERIFY this cached data is still 
valid
!                                       if ($got_data)
                                        {
!                                               if 
($this->debug_session_caching > 1) { echo 'mail_msg: read_session_cache_item: 
handling $data_name='.$data_name.' session validity and/or relevance<br>'; }
!                                               if 
(($got_data['validity']['folder_long'] == $this->get_arg_value('folder', 
$acctnum))
!                                               && 
($got_data['validity']['sort'] == $this->get_arg_value('sort', $acctnum))
!                                               && 
($got_data['validity']['order'] == $this->get_arg_value('order', $acctnum))
!                                               && 
($got_data['validity']['uidnext'] == $folder_info['uidnext'])
!                                               && 
($got_data['validity']['uidvalidity'] == $folder_info['uidvalidity'])
!                                               && 
($got_data['validity']['number_all']  == $folder_info['number_all'])
!                                               && 
($got_data['validity']['get_mailsvr_callstr'] == 
$this->get_arg_value('mailsvr_callstr', $acctnum))
!                                               && 
($got_data['validity']['mailsvr_account_username'] == 
$this->get_arg_value('mailsvr_account_username', $acctnum)))
!                                               {
!                                                       if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, successfully restored valid $data_name='.$data_name.' session data, 
$acctnum: ['.$acctnum.']<br>'; }
!                                                       return $got_data;
!                                               }
!                                               else
!                                               {
!                                                       if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, returning False, $data_name='.$data_name.' session was STALE, 
$acctnum: ['.$acctnum.']<br>'; }
!                                                       return False;
!                                               }
!                                       }
!                                       else
!                                       {
!                                               if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, returning False, $data_name='.$data_name.' had NO data stored, 
$acctnum: ['.$acctnum.']<br>'; }
!                                               return False;
!                                       }
!                               }
!                               elseif (($data_name == 'mailsvr_namespace')
!                               || ($data_name == 'folder_list'))
!                               {
!                                       if ($this->debug_session_caching > 1) { 
echo 'mail_msg: read_session_cache_item: handler exists for $data_name 
['.$data_name.']<br>'; }
!                                       // this is not really a special handler
!                                       if ($got_data)
!                                       {
!                                               if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
restored $data_name='.$data_name.' data dump:<pre>'; print_r($got_data); echo 
'</pre>'; }
!                                               if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, successfully restored $data_name='.$data_name.' session data, 
$acctnum: ['.$acctnum.']<br>'; }
                                                return $got_data;
                                        }
                                        else
                                        {
!                                               if 
($this->debug_session_caching > 0) { echo 'mail_msg: read_session_cache_item: 
LEAVING, returning False, $data_name='.$data_name.' had NO data stored, 
$acctnum: ['.$acctnum.']<br>'; }
                                                return False;
                                        }
+                                       
                                }
                                elseif ($got_data)
***************
*** 1914,1918 ****
                                {
                                        if ($this->debug_args_oop_access > 0) { 
echo 'mail_msg(_wrappers): get_arg_value: LEAVING with HANDOFF to 
get_folder_list()<br>'; }
!                                       return $this->get_folder_list();
                                }
                                /*
--- 1910,1914 ----
                                {
                                        if ($this->debug_args_oop_access > 0) { 
echo 'mail_msg(_wrappers): get_arg_value: LEAVING with HANDOFF to 
get_folder_list()<br>'; }
!                                       return $this->get_folder_list($acctnum);
                                }
                                /*
***************
*** 2000,2003 ****
--- 1996,2000 ----
                {
                        if ($this->debug_args_oop_access > 1) { 
$this->_get_arg_is_known($arg_name, 'set_arg_value'); }
+                       if ($this->debug_args_oop_access > 0) { echo 
'mail_msg(_wrappers): set_arg_value: ENTERING, $arg_name: ['.$arg_name.'] ; 
$this_value: ['.$this_value.'] ; $acctnum: ['.$acctnum.']<br>'; }
                        
                        if ((!isset($acctnum))
***************
*** 2021,2024 ****
--- 2018,2022 ----
                                // SET it, any special processing should be 
taken care just above here
                                $this->a[$acctnum]['args'][$arg_name] = 
$this_value;
+                               if ($this->debug_args_oop_access > 0) { echo 
'mail_msg(_wrappers): set_arg_value: LEAVING, returning TRUE, set data 
$this->a['.$acctnum.'][args]['.$arg_name.']: 
['.$this->a[$acctnum]['args'][$arg_name].']<br>'; }
                                // return True to indicate success
                                return True;
***************
*** 2027,2030 ****
--- 2025,2029 ----
                        {
                                // return False to indicate invalid input 
$arg_name
+                               if ($this->debug_args_oop_access > 0) { echo 
'mail_msg(_wrappers): set_arg_value: LEAVING, returning FALSE, invalid 
$arg_name: ['.$arg_name.']<br>'; }
                                return False;
                        }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]