phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] CVS: email/inc class.uisearch.inc.php, NONE, 1.1.2.1


From: Dave Hall <address@hidden>
Subject: [Phpgroupware-cvs] CVS: email/inc class.uisearch.inc.php, NONE, 1.1.2.1 class.boaction.inc.php, 1.17, 1.17.2.1 class.boattach_file.inc.php, 1.4, 1.4.2.1 class.bocompose.inc.php, 1.8, 1.8.2.1 class.bofilters.inc.php, 1.14, 1.14.2.1 class.bofolder.inc.php, 1.8, 1.8.2.1 class.boindex.inc.php, 1.30.2.3, 1.30.2.4 class.bomessage.inc.php, 1.14, 1.14.2.1 class.bopreferences.inc.php, 1.23.2.2, 1.23.2.3 class.bosend.inc.php, 1.11, 1.11.2.1 class.html_widgets.inc.php, 1.3.2.2, 1.3.2.3 class.mail_dcom.inc.php, 1.10, 1.10.2.1 class.mail_dcom_base.inc.php, 1.9, 1.9.2.1 class.mail_dcom_base_sock.inc.php, 1.24, 1.24.2.1 class.mail_dcom_imap.inc.php, 1.21, 1.21.2.1 class.mail_dcom_imap_sock.inc.php, 1.15, 1.15.2.1 class.mail_dcom_nntp.inc.php, 1.4, 1.4.2.1 class.mail_dcom_pop3.inc.php, 1.11, 1.11.2.1 class.mail_filters.inc.php, 1.7, 1.7.2.1 class.mail_msg.inc.php, 1.4, 1.4.2.1 class.mail_msg_base.inc.php, 1.78.2.3, 1.78.2.4 class.mail_msg_display.inc.php, 1.40.2.1, 1.40.2.2 class.mail_msg_wrappers.inc.php, 1.37.2.1, 1.37.2.2 class.mail_send.inc.php, 1.11, 1.11.2.1 class.msg_bootstrap.inc.php, 1.2, 1.2.2.1 class.so_mail_msg.inc.php, 1.1.1.1, 1.1.1.1.2.1 class.spell.inc.php, 1.2, 1.2.2.1 class.spell_struct.inc.php, 1.2, 1.2.2.1 class.spell_svc_none.inc.php, 1.2, 1.2.2.1 class.spell_svc_php.inc.php, 1.2, 1.2.2.1 class.svc_debug.inc.php, 1.1.1.1, 1.1.1.1.2.1 class.svc_nextmatches.inc.php, 1.2, 1.2.2.1 class.ui_mail_debug.inc.php, 1.2, 1.2.2.1 class.uiattach_file.inc.php, 1.2, 1.2.2.1 class.uicompose.inc.php, 1.4.2.1, 1.4.2.2 class.uifilters.inc.php, 1.12.2.2, 1.12.2.3 class.uifolder.inc.php, 1.4.2.1, 1.4.2.2 class.uiindex.inc.php, 1.21.2.1, 1.21.2.2 class.uijsaddressbook.inc.php, 1.3, 1.3.2.1 class.uimessage.inc.php, 1.9.2.2, 1.9.2.3 class.uipreferences.inc.php, 1.16.2.2, 1.16.2.3 functions.inc.php, 1.116, 1.116.2.1 hook_admin.inc.php, 1.6, 1.6.2.1 hook_home.inc.php, 1.56, 1.56.2.1 hook_preferences.inc.php, 1.14.2.4, 1.14.2.5
Date: Mon, 08 Sep 2003 04:34:10 -0400

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

Modified Files:
      Tag: Version-0_9_16-branch
        class.boaction.inc.php class.boattach_file.inc.php 
        class.bocompose.inc.php class.bofilters.inc.php 
        class.bofolder.inc.php class.boindex.inc.php 
        class.bomessage.inc.php class.bopreferences.inc.php 
        class.bosend.inc.php class.html_widgets.inc.php 
        class.mail_dcom.inc.php class.mail_dcom_base.inc.php 
        class.mail_dcom_base_sock.inc.php class.mail_dcom_imap.inc.php 
        class.mail_dcom_imap_sock.inc.php class.mail_dcom_nntp.inc.php 
        class.mail_dcom_pop3.inc.php class.mail_filters.inc.php 
        class.mail_msg.inc.php class.mail_msg_base.inc.php 
        class.mail_msg_display.inc.php class.mail_msg_wrappers.inc.php 
        class.mail_send.inc.php class.msg_bootstrap.inc.php 
        class.so_mail_msg.inc.php class.spell.inc.php 
        class.spell_struct.inc.php class.spell_svc_none.inc.php 
        class.spell_svc_php.inc.php class.svc_debug.inc.php 
        class.svc_nextmatches.inc.php class.ui_mail_debug.inc.php 
        class.uiattach_file.inc.php class.uicompose.inc.php 
        class.uifilters.inc.php class.uifolder.inc.php 
        class.uiindex.inc.php class.uijsaddressbook.inc.php 
        class.uimessage.inc.php class.uipreferences.inc.php 
        functions.inc.php hook_admin.inc.php hook_home.inc.php 
        hook_preferences.inc.php 
Added Files:
      Tag: Version-0_9_16-branch
        class.uisearch.inc.php 
Log Message:
merging AM 1.2-dev4-01


***** Error reading new file: [Errno 2] No such file or directory: 
'class.uisearch.inc.php'
Index: class.boaction.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.boaction.inc.php,v
retrieving revision 1.17
retrieving revision 1.17.2.1
diff -C2 -r1.17 -r1.17.2.1
*** class.boaction.inc.php      14 Mar 2003 04:00:10 -0000      1.17
--- class.boaction.inc.php      8 Sep 2003 08:33:30 -0000       1.17.2.1
***************
*** 26,29 ****
--- 26,31 ----
                        'view_html'     => True
                );
+               // class var to hold content to be downloaded
+               var $output_data='';
                // if bomessage wants this preserves, we detect that and store 
it here
                var $no_fmt='';
***************
*** 33,36 ****
--- 35,39 ----
[...977 lines suppressed...]
!                               $this->output_data = '';
                        }
                        // you may feed "end_request" a msgball or a fldball 
and "end_request" will close the acctnum specified therein
***************
*** 1054,1060 ****
                        
                        $this->msg_bootstrap = 
CreateObject('email.msg_bootstrap');
!                       
$this->msg_bootstrap->ensure_mail_msg_exists('emai.boaction.get_attach', 
$this->debug);
                        
!                       if ($this->debug > 0) { echo 'emai.boaction.view_html: 
creating $this->browser <br>'; }
                        $this->browser = CreateObject('phpgwapi.browser');
                        
--- 1120,1126 ----
                        
                        $this->msg_bootstrap = 
CreateObject('email.msg_bootstrap');
!                       
$this->msg_bootstrap->ensure_mail_msg_exists('email.boaction.get_attach', 
$this->debug);
                        
!                       if ($this->debug > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('email.boaction.view_html: creating 
$this->browser <br>'); }
                        $this->browser = CreateObject('phpgwapi.browser');
                        

Index: class.boattach_file.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.boattach_file.inc.php,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -C2 -r1.4 -r1.4.2.1
*** class.boattach_file.inc.php 14 Mar 2003 04:00:10 -0000      1.4
--- class.boattach_file.inc.php 8 Sep 2003 08:33:31 -0000       1.4.2.1
***************
*** 396,400 ****
                                $alert_msg = lang('Input Error:').'<br>'
                                        . lang('Please submit a filename to 
attach').'<br>'
!                                       . lang('You must click').' 
"'.lang('Attach File').'" '.lang('for the file to actually upload').'<br>'
                                        . '<br>';
                        }
--- 396,400 ----
                                $alert_msg = lang('Input Error:').'<br>'
                                        . lang('Please submit a filename to 
attach').'<br>'
!                                       . lang('You must click %1 for the file 
to actually upload','"'.lang('Attach File').'"').'.<br>'
                                        . '<br>';
                        }

Index: class.bocompose.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.bocompose.inc.php,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -C2 -r1.8 -r1.8.2.1

Index: class.bofilters.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.bofilters.inc.php,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -C2 -r1.14 -r1.14.2.1
*** class.bofilters.inc.php     14 Mar 2003 04:00:10 -0000      1.14
--- class.bofilters.inc.php     8 Sep 2003 08:33:31 -0000       1.14.2.1
***************
*** 722,725 ****
--- 722,730 ----
                        // we can only set a non-array value, but we can use 
array string for the base
                        // but we can grab structures
+ 
+                       // NEW we need to wipe the cached filters
+                       $my_location = '0;cached_prefs';
+                       if ($this->debug_set_prefs > 1) { echo 
'bofilters.save_all_filters_to_repository('.__LINE__.'): NEW: EXPIRE CACHED 
PREFERENCES, calling ->msg->so->so_appsession_passthru('.$my_location.', " 
")<br>'; }
+                       
$GLOBALS['phpgw']->msg->so->so_appsession_passthru($my_location, ' ');
                        
                        // first we delete any existing data at the desired 
prefs location
***************
*** 887,903 ****
                function do_filter()
                {
!                       if ($this->debug > 0) { echo 'bofilters.do_filter: 
ENTERING<br>'; }
                        if (count($this->all_filters) == 0)
                        {
!                               if ($this->debug > 0) { echo 
'bofilters.do_filter: LEAVING with ERROR, no filters exist<br>'; } 
                                return False;
                        }
                        
                        //if ($this->debug > 0) { echo 'bofilters.do_filter: 
LINE '.__LINE__.' call "->msg->event_begin_big_move" to notice event of 
impending big batch moves or deletes<br>'; }
                        //$GLOBALS['phpgw']->msg->event_begin_big_move(array(), 
'bofilters.do_filter: LINE '.__LINE__);
                        
                        // "False" means  return $this->not_set  if no filter 
number was found anywhere
                        $found_filter_num = $this->obtain_filer_num(False);
!                       if ($this->debug > 1) { echo 
'bofilters.obtain_filer_num: $found_filter_num : 
[<code>'.serialize($found_filter_num).'</code>]<br>'."\r\n"; }
                        
                        if ($found_filter_num == $this->not_set)
--- 892,913 ----
                function do_filter()
                {
!                       if ($this->debug > 0) { echo 
'bofilters.do_filter('.__LINE__.'): ENTERING<br>'; }
                        if (count($this->all_filters) == 0)
                        {
!                               if ($this->debug > 0) { echo 
'bofilters.do_filter('.__LINE__.'): LEAVING with ERROR, no filters exist<br>'; 
} 
                                return False;
                        }
                        
                        //if ($this->debug > 0) { echo 'bofilters.do_filter: 
LINE '.__LINE__.' call "->msg->event_begin_big_move" to notice event of 
impending big batch moves or deletes<br>'; }
+                       // CORRECTION: the move function now buffers the 
commands and the count of those buffered commands is kept there, where big move 
or not is now determined 
                        //$GLOBALS['phpgw']->msg->event_begin_big_move(array(), 
'bofilters.do_filter: LINE '.__LINE__);
                        
+                       // filtering thousands of messages can require more time
+                       if ($this->debug > 0) { echo 
'bofilters.do_filter('.__LINE__.'): calling set_time_limit giving value of 120 
ie 2 minutes? <br>'; } 
+                       set_time_limit(120);
+                       
                        // "False" means  return $this->not_set  if no filter 
number was found anywhere
                        $found_filter_num = $this->obtain_filer_num(False);
!                       if ($this->debug > 1) { echo 
'bofilters.do_filter('.__LINE__.'): $found_filter_num : 
[<code>'.serialize($found_filter_num).'</code>]<br>'."\r\n"; }
                        
                        if ($found_filter_num == $this->not_set)
***************
*** 907,911 ****
                                for ($filter_idx=0; $filter_idx < 
count($this->all_filters); $filter_idx++)
                                {
!                                       if ($this->debug > 1) { echo 
'bofilters.do_filter: run_all_finters_mode: calling 
$this->run_single_filter['.$filter_idx.']<br>'; }
                                        
$this->run_single_filter((int)$filter_idx);
                                        if ($this->just_testing())
--- 917,921 ----
                                for ($filter_idx=0; $filter_idx < 
count($this->all_filters); $filter_idx++)
                                {
!                                       if ($this->debug > 1) { echo 
'bofilters.do_filter('.__LINE__.'): run_all_finters_mode: calling 
$this->run_single_filter['.$filter_idx.']<br>'; }
                                        
$this->run_single_filter((int)$filter_idx);
                                        if ($this->just_testing())
***************
*** 920,924 ****
                                // we were given a filter_num, that means run 
THAT FILTER ONLY
                                $this->do_filter_apply_all = False;
!                               if ($this->debug > 1) { echo 
'bofilters.do_filter: run_single_filter mode: calling 
$this->run_single_filter['.$found_filter_num.']<br>'; }
                                
$this->run_single_filter((int)$found_filter_num);
                                if ($this->just_testing())
--- 930,934 ----
                                // we were given a filter_num, that means run 
THAT FILTER ONLY
                                $this->do_filter_apply_all = False;
!                               if ($this->debug > 1) { echo 
'bofilters.do_filter('.__LINE__.'): run_single_filter mode: calling 
$this->run_single_filter['.$found_filter_num.']<br>'; }
                                
$this->run_single_filter((int)$found_filter_num);
                                if ($this->just_testing())
***************
*** 956,960 ****
                                $GLOBALS['phpgw']->common->phpgw_header();
  
!                               echo '<h4>Apply Filters Report:</h4>'."\r\n";
                                for ($filter_idx=0; $filter_idx < 
count($this->all_filters); $filter_idx++)
                                {
--- 966,970 ----
                                $GLOBALS['phpgw']->common->phpgw_header();
  
!                               echo '<h4>'.lang('Apply Filters 
Report:').'</h4>'."\r\n";
                                for ($filter_idx=0; $filter_idx < 
count($this->all_filters); $filter_idx++)
                                {
***************
*** 963,985 ****
                                        
parse_str($this_filter['actions'][0]['folder'], $target_folder);
                                        echo '<p>'."\r\n"
!                                       .'<strong>Filter number 
'.(string)$filter_idx.':</strong>'.'<br>'."\r\n"
!                                       .'&nbsp;&nbsp;&nbsp;'.'filter name: 
['.$this_filter['filtername'].']<br>'."\r\n"
!                                       .'&nbsp;&nbsp;&nbsp;'.'number of 
matches: ['.(string)$num_matches.']'.'<br>'."\r\n"
!                                       .'&nbsp;&nbsp;&nbsp;'.'requested filter 
action: ['.$this_filter['actions'][0]['judgement'].'] ; Acctnum 
['.(string)$target_folder['acctnum'].'] ;  Folder: 
['.htmlspecialchars($target_folder['folder']).']<br>'."\r\n"
                                        .'</p>'."\r\n"
                                        .'<p>&nbsp;</p>'."\r\n";
                                }
                        }
!                       if ($this->debug > 1) { echo 'bofilters.do_filter: 
calling end_request<br>'; }
                        $GLOBALS['phpgw']->msg->end_request();
!                       if ($this->debug > 0) { echo 'bofilters.do_filter: 
LEAVING<br>'; }
                        $take_me_to_url = $GLOBALS['phpgw']->link(
                                                                                
'/index.php',
!                                                                               
'menuaction=email.uifilters.filters_list');
!                       $take_me_to_href = '<a href="'.$take_me_to_url.'"> Go 
Back </a>';
                        //Header('Location: ' . $take_me_to_url);
!                       echo 
'<br><p>'.'&nbsp;&nbsp;&nbsp;'.$take_me_to_href.'</p>';
  
!                       if ($this->debug > 0) { echo 'bofilters.do_filter: 
LEAVING<br>'; }
                }
                
--- 973,997 ----
                                        
parse_str($this_filter['actions'][0]['folder'], $target_folder);
                                        echo '<p>'."\r\n"
!                                       .'<strong>'.lang('Filter number').' 
'.(string)$filter_idx.':</strong>'.'<br>'."\r\n"
!                                       .'&nbsp;&nbsp;&nbsp;'.lang('filter 
name:').' ['.$this_filter['filtername'].']<br>'."\r\n"
!                                       .'&nbsp;&nbsp;&nbsp;'.lang('number of 
matches:').' ['.(string)$num_matches.']'.'<br>'."\r\n"
! 
!                                       .'&nbsp;&nbsp;&nbsp;'.lang('requested 
filter action:').' ['.$this_filter['actions'][0]['judgement'].'] ; Acctnum 
['.(string)$target_folder['acctnum'].'] ;  '.lang('Folder').': 
['.htmlspecialchars($target_folder['folder']).']<br>'."\r\n"
                                        .'</p>'."\r\n"
                                        .'<p>&nbsp;</p>'."\r\n";
                                }
                        }
!                       if ($this->debug > 1) { echo 
'bofilters.do_filter('.__LINE__.'): calling end_request<br>'; }
                        $GLOBALS['phpgw']->msg->end_request();
!                       if ($this->debug > 0) { echo 
'bofilters.do_filter('.__LINE__.'): LEAVING<br>'; }
                        $take_me_to_url = $GLOBALS['phpgw']->link(
                                                                                
'/index.php',
!                                                                               
//'menuaction=email.uifilters.filters_list');
!                                                                               
'menuaction=email.uiindex.index');
!                       $take_me_to_href = '<a href="'.$take_me_to_url.'"> 
'.lang('Go Back').' </a>';
                        //Header('Location: ' . $take_me_to_url);
!                       echo 
'<br><p>'.'&nbsp;&nbsp;&nbsp;'.$take_me_to_href.'</p><BR>';
  
!                       if ($this->debug > 0) { echo 
'bofilters.do_filter('.__LINE__.'): LEAVING<br>'; }
                }
                
***************
*** 993,1014 ****
                function run_single_filter($filter_num='')
                {
!                       if ($this->debug > 0) { echo 
'bofilters.run_single_filter: ENTERING, feed  $filter_num : 
[<code>'.serialize($filter_num).'</code>]<br>'; }
                        if (count($this->all_filters) == 0)
                        {
!                               if ($this->debug > 0) { echo 
'bofilters.run_single_filter: LEAVING with ERROR, no filters exist<br>'; }
                        }
                        $filter_exists = $this->filter_exists($filter_num);
                        if (!$filter_exists)
                        {
!                               if ($this->debug > 0) { echo 
'bofilters.run_single_filter: LEAVING with ERROR, filter data for $filter_num 
['.$filter_num.'] does not exist, return False<br>'; }
                                return False;
                        }
                        $this_filter = $this->all_filters[$filter_num];
!                       if ($this->debug > 2) { echo 
'bofilters.run_single_filter: $filter_num ['.$filter_num.'] ; $this_filter 
DUMP:<pre>'; print_r($this_filter); echo "</pre>\r\n"; }
                        
                        // WE NEED TO DO THIS FOR EVERY SOURCE ACCOUNT 
specified in this filter
                        for ($src_acct_loop_num=0; $src_acct_loop_num < 
count($this_filter['source_accounts']); $src_acct_loop_num++)
                        {
!                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter: source_accounts loop 
['.$src_acct_loop_num.']<br>'; }
                                
                                // ACCOUNT TO SEARCH (always filter source is 
INBOX)
--- 1005,1026 ----
                function run_single_filter($filter_num='')
                {
!                       if ($this->debug > 0) { echo 
'bofilters.run_single_filter('.__LINE__.'): ENTERING, feed  $filter_num : 
[<code>'.serialize($filter_num).'</code>]<br>'; }
                        if (count($this->all_filters) == 0)
                        {
!                               if ($this->debug > 0) { echo 
'bofilters.run_single_filter('.__LINE__.'): LEAVING with ERROR, no filters 
exist<br>'; }
                        }
                        $filter_exists = $this->filter_exists($filter_num);
                        if (!$filter_exists)
                        {
!                               if ($this->debug > 0) { echo 
'bofilters.run_single_filter('.__LINE__.'): LEAVING with ERROR, filter data for 
$filter_num ['.$filter_num.'] does not exist, return False<br>'; }
                                return False;
                        }
                        $this_filter = $this->all_filters[$filter_num];
!                       if ($this->debug > 2) { echo 
'bofilters.run_single_filter('.__LINE__.'): $filter_num ['.$filter_num.'] ; 
$this_filter DUMP:<pre>'; print_r($this_filter); echo "</pre>\r\n"; }
                        
                        // WE NEED TO DO THIS FOR EVERY SOURCE ACCOUNT 
specified in this filter
                        for ($src_acct_loop_num=0; $src_acct_loop_num < 
count($this_filter['source_accounts']); $src_acct_loop_num++)
                        {
!                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): source_accounts loop 
['.$src_acct_loop_num.']<br>'; }
                                
                                // ACCOUNT TO SEARCH (always filter source is 
INBOX)
***************
*** 1022,1031 ****
                                || 
(count($this->inbox_full_msgball_list[$src_acct_loop_num]) > 0))
                                {
!                                       if ($this->debug > 1) { echo 
'bofilters.run_single_filter: already obtained inbox_full_msgball_list, during 
a previous filter, for $src_acct_loop_num ['.$src_acct_loop_num.']<br>'; }
                                }
                                else
                                {
                                        // get FULL msgball list for this INBOX 
(we always filter INBOXs only)
!                                       if ($this->debug > 1) { echo 
'bofilters.run_single_filter: get_msgball_list for later XOR ing for 
<code>['.serialize($fake_fldball).']</code><br>'; }
                                        
//$this->inbox_full_msgball_list[$src_acct_loop_num] = 
$GLOBALS['phpgw']->msg->get_msgball_list($fake_fldball['acctnum'], 
$fake_fldball['folder']);
                                        // FIXME: FOR BACKWARDS COMPAT WE GET 
AN OLD STYLE MSGBALL LIST
--- 1034,1043 ----
                                || 
(count($this->inbox_full_msgball_list[$src_acct_loop_num]) > 0))
                                {
!                                       if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): already obtained 
inbox_full_msgball_list, during a previous filter, for $src_acct_loop_num 
['.$src_acct_loop_num.']<br>'; }
                                }
                                else
                                {
                                        // get FULL msgball list for this INBOX 
(we always filter INBOXs only)
!                                       if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): get_msgball_list for later XOR ing 
for <code>['.serialize($fake_fldball).']</code><br>'; }
                                        
//$this->inbox_full_msgball_list[$src_acct_loop_num] = 
$GLOBALS['phpgw']->msg->get_msgball_list($fake_fldball['acctnum'], 
$fake_fldball['folder']);
                                        // FIXME: FOR BACKWARDS COMPAT WE GET 
AN OLD STYLE MSGBALL LIST
***************
*** 1036,1040 ****
                                // FOR EACH MSG, GET IT'S RAW HEADERS
                                // only if we have not got them yet
!                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter: get headers for each msg in $src_acct_loop_num 
['.$src_acct_loop_num.']<br>'; }
                                for ($msg_iteration=0; $msg_iteration < 
count($this->inbox_full_msgball_list[$src_acct_loop_num]); $msg_iteration++)
                                {
--- 1048,1052 ----
                                // FOR EACH MSG, GET IT'S RAW HEADERS
                                // only if we have not got them yet
!                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): get headers for each msg in 
$src_acct_loop_num ['.$src_acct_loop_num.']<br>'; }
                                for ($msg_iteration=0; $msg_iteration < 
count($this->inbox_full_msgball_list[$src_acct_loop_num]); $msg_iteration++)
                                {
***************
*** 1044,1048 ****
                                                // we ALREADY hav the headers
                                                // continue to the next message
!                                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter: already obtained headers, during a previous 
filter, for $src_acct_loop_num ['.$src_acct_loop_num.']<br>'; }
                                                continue;
                                        }
--- 1056,1060 ----
                                                // we ALREADY hav the headers
                                                // continue to the next message
!                                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): already obtained headers, during a 
previous filter, for $src_acct_loop_num ['.$src_acct_loop_num.']<br>'; }
                                                continue;
                                        }
***************
*** 1119,1123 ****
                                        {
                                                // this message had already 
been filtered AND MOVED OR DELETED, continue to next loop
!                                               if ($this->debug > 1) { echo 
'<br>bofilters.run_single_filter: skipping... this message has already been 
moved, deleted by a previous filter, $src_acct_loop_num 
['.$src_acct_loop_num.'] $msg_iteration ['.$msg_iteration.']<br><br>'; }
                                                continue;
                                        }
--- 1131,1135 ----
                                        {
                                                // this message had already 
been filtered AND MOVED OR DELETED, continue to next loop
!                                               if ($this->debug > 1) { echo 
'<br>bofilters.run_single_filter('.__LINE__.'): skipping... this message has 
already been moved, deleted by a previous filter, $src_acct_loop_num 
['.$src_acct_loop_num.'] $msg_iteration ['.$msg_iteration.']<br><br>'; }
                                                continue;
                                        }
***************
*** 1126,1130 ****
                                        // this patiular message has not been 
looked at yet, initialize it match keeper value
                                        
$this->inbox_full_msgball_list[$src_acct_loop_num][$msg_iteration]['match_keeper']
 = 0;
!                                       if ($this->debug > 2) { echo 
'bofilters.run_single_filter: 
$this->inbox_full_msgball_list['.$src_acct_loop_num.']['.$msg_iteration.'][headers_text]
 DUMP:<pre>'; 
print_r($this->inbox_full_msgball_list[$src_acct_loop_num][$msg_iteration]['headers_text']);
 echo "</pre>\r\n"; }
                                                
                                        // every header line gets looked at by 
every row of match criteria
--- 1138,1142 ----
                                        // this patiular message has not been 
looked at yet, initialize it match keeper value
                                        
$this->inbox_full_msgball_list[$src_acct_loop_num][$msg_iteration]['match_keeper']
 = 0;
!                                       if ($this->debug > 2) { echo 
'bofilters.run_single_filter('.__LINE__.'): 
$this->inbox_full_msgball_list['.$src_acct_loop_num.']['.$msg_iteration.'][headers_text]
 DUMP:<pre>'; 
print_r($this->inbox_full_msgball_list[$src_acct_loop_num][$msg_iteration]['headers_text']);
 echo "</pre>\r\n"; }
                                                
                                        // every header line gets looked at by 
every row of match criteria
***************
*** 1132,1136 ****
                                        for ($matches_row=0; $matches_row < 
count($this_filter['matches']); $matches_row++)
                                        {
!                                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter: source_accounts loop ['.$src_acct_loop_num.'] ; 
$msg_iteration ['.$msg_iteration.'] ; $matches_row ['.$matches_row.']<br>'; }
                                                // Note on "RECIPIENT" :  
to,cc, bcc  "tri-fecta" all three headers must be considered
                                                // this is why we made a faux 
header line that contains all three of those in one line
--- 1144,1148 ----
                                        for ($matches_row=0; $matches_row < 
count($this_filter['matches']); $matches_row++)
                                        {
!                                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): source_accounts loop 
['.$src_acct_loop_num.'] ; $msg_iteration ['.$msg_iteration.'] ; $matches_row 
['.$matches_row.']<br>'; }
                                                // Note on "RECIPIENT" :  
to,cc, bcc  "tri-fecta" all three headers must be considered
                                                // this is why we made a faux 
header line that contains all three of those in one line
***************
*** 1154,1158 ****
                                                $inspect_me = 
stristr($headers_text, "\r\n".$search_key_imap);
                                                // inspect_me will be 
everything to the right of the "neede" INCLUDING the "needle" itself and the 
REST of the headers
!                                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter: $search_key_imap  ['.$search_key_imap.'] ; 
$comparator ['.$comparator.'] ; $search_for ['.$search_for.']<br>'; }
                                                if ($inspect_me)
                                                {
--- 1166,1170 ----
                                                $inspect_me = 
stristr($headers_text, "\r\n".$search_key_imap);
                                                // inspect_me will be 
everything to the right of the "neede" INCLUDING the "needle" itself and the 
REST of the headers
!                                               if ($this->debug > 1) { echo 
'bofilters.run_single_filter('.__LINE__.'): $search_key_imap  
['.$search_key_imap.'] ; $comparator ['.$comparator.'] ; $search_for 
['.$search_for.']<br>'; }
                                                if ($inspect_me)
                                                {
***************
*** 1165,1169 ****
                                                        // get everything FROM 
beginning of string TO  pos $cut_here (the end of the line);
                                                        $inspect_me = 
substr($inspect_me, 0, $cut_here);
!                                                       if ($this->debug > 1) { 
echo 'bofilters.run_single_filter: GOT HEADER TO LOOK IN: $inspect_me 
['.htmlspecialchars($inspect_me).']<br>'; }
                                                        // look for EXISTS or 
NOT EXISTS our search string
                                                        if
--- 1177,1181 ----
                                                        // get everything FROM 
beginning of string TO  pos $cut_here (the end of the line);
                                                        $inspect_me = 
substr($inspect_me, 0, $cut_here);
!                                                       if ($this->debug > 1) { 
echo 'bofilters.run_single_filter('.__LINE__.'): GOT HEADER TO LOOK IN: 
$inspect_me ['.htmlspecialchars($inspect_me).']<br>'; }
                                                        // look for EXISTS or 
NOT EXISTS our search string
                                                        if
***************
*** 1175,1179 ****
                                                        )
                                                        {
!                                                               if 
($this->debug > 1) { echo 'bofilters.run_single_filter: ** GOT ROW CRITERIA 
MATCH ** $matches_row '.$matches_row.'<br>'; }
                                                                // MATCH: this 
row matches the search criteria
                                                                // i.e. this 
header line does -or- does not have the seach for text, as requested
--- 1187,1191 ----
                                                        )
                                                        {
!                                                               if 
($this->debug > 1) { echo 'bofilters.run_single_filter('.__LINE__.'): ** GOT 
ROW CRITERIA MATCH ** $matches_row '.$matches_row.'<br>'; }
                                                                // MATCH: this 
row matches the search criteria
                                                                // i.e. this 
header line does -or- does not have the seach for text, as requested
***************
*** 1210,1214 ****
                                                        // header we are 
looking for does not exist in this messages headers
                                                        // probably lookinf for 
an "X-" header, like "X-Mailer:"
!                                                       if ($this->debug > 1) { 
echo 'bofilters.run_single_filter: requested header $search_key_imap  
['.$search_key_imap.'] not in this messages headers<br>'; }
                                                }
                                                // this is the last code that 
gets run BEFORE we move on to the next row of match criteria 
--- 1222,1226 ----
                                                        // header we are 
looking for does not exist in this messages headers
                                                        // probably lookinf for 
an "X-" header, like "X-Mailer:"
!                                                       if ($this->debug > 1) { 
echo 'bofilters.run_single_filter('.__LINE__.'): requested header 
$search_key_imap  ['.$search_key_imap.'] not in this messages headers<br>'; }
                                                }
                                                // this is the last code that 
gets run BEFORE we move on to the next row of match criteria 

Index: class.bofolder.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.bofolder.inc.php,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -C2 -r1.8 -r1.8.2.1
*** class.bofolder.inc.php      14 Mar 2003 04:00:10 -0000      1.8
--- class.bofolder.inc.php      8 Sep 2003 08:33:31 -0000       1.8.2.1
***************
*** 4,8 ****
        * http://www.anglemail.org                                              
        *
        * Written by Angelo (Angles) Puglisi <address@hidden>           *
!       * Copyright 2001, 2002 Angelo (Angles) Puglisi                          
*
        * --------------------------------------------                          
                        *
        *  This program is free software; you can redistribute it and/or modify 
it              *
--- 4,8 ----
        * http://www.anglemail.org                                              
        *
        * Written by Angelo (Angles) Puglisi <address@hidden>           *
!       * Copyright 2001, 2003 Angelo (Angles) Puglisi                          
*
        * --------------------------------------------                          
                        *
        *  This program is free software; you can redistribute it and/or modify 
it              *
***************
*** 26,30 ****
--- 26,33 ----
                var $use_cachable_status = True;
                //var $use_cachable_status = False;
+               
                var $debug = 0;
+               //var $debug = 3;
+               
                var $xi;
                
***************
*** 95,98 ****
--- 98,104 ----
                                        $source_fldball = 
$GLOBALS['phpgw']->msg->get_arg_value('source_fldball');
                                        $target_fldball = 
$GLOBALS['phpgw']->msg->get_arg_value('target_fldball');
+                                       if ($this->debug > 1) { echo 
'email.bofolder.folder_action('.__LINE__.'): we will delete, rename, or create 
a folder; ->msg->get_arg_value("action") is 
['.$GLOBALS['phpgw']->msg->get_arg_value('action').']'.'<br>'; }
+                                       if ($this->debug > 2) { echo 
'email.bofolder.folder_action('.__LINE__.'): $source_fldball DUMP<pre>'; 
print_r($source_fldball); echo '<pre>'; }
+                                       if ($this->debug > 2) { echo 
'email.bofolder.folder_action('.__LINE__.'): $target_fldball DUMP<pre>'; 
print_r($target_fldball); echo '<pre>'; }
                                        
                                        //  ----  Establish Email Server 
Connectivity Conventions  ----
***************
*** 142,146 ****
                                        
                                        // add server string to target folder
!                                       $target_fldball['folder'] = 
$server_str.$target_fldball['folder'];
                                        
                                        // NOTE the dcom class will set a flag 
indicating a folder list change, ->dcom->folder_list_changed=True
--- 148,157 ----
                                        
                                        // add server string to target folder
!                                       //$target_fldball['folder'] = 
$server_str.$target_fldball['folder'];
!                                       //$target_fldball['folder'] = 
$target_fldball['folder'];
!                                       $re_encoded = 
$GLOBALS['phpgw']->msg->prep_folder_out($target_fldball['folder']);
!                                       $target_fldball['folder'] = $re_encoded;
!                                       
!                                       if ($this->debug > 2) { echo 
'email.bofolder.folder_action('.__LINE__.'): processed $target_fldball 
DUMP<pre>'; print_r($target_fldball); echo '<pre>'; }
                                        
                                        // NOTE the dcom class will set a flag 
indicating a folder list change, ->dcom->folder_list_changed=True
***************
*** 153,162 ****
                                        || 
($GLOBALS['phpgw']->msg->get_arg_value('action') == 'create_expert'))
                                        {
!                                               $success = 
$GLOBALS['phpgw']->msg->phpgw_createmailbox($target_fldball);
                                        }
                                        elseif 
(($GLOBALS['phpgw']->msg->get_arg_value('action') == 'delete')
                                        || 
($GLOBALS['phpgw']->msg->get_arg_value('action') == 'delete_expert'))
                                        {
!                                               $success = 
$GLOBALS['phpgw']->msg->phpgw_deletemailbox($target_fldball);
                                        }
                                        elseif 
(($GLOBALS['phpgw']->msg->get_arg_value('action') == 'rename')
--- 164,182 ----
                                        || 
($GLOBALS['phpgw']->msg->get_arg_value('action') == 'create_expert'))
                                        {
!                                               if ($this->debug > 1) { echo 
'email.bofolder.folder_action('.__LINE__.'): calling 
->phpgw_createmailbox_ex($target_fldball) DUMP<pre>'; print_r($target_fldball); 
echo '<pre>'; }
!                                               //$success = 
$GLOBALS['phpgw']->msg->phpgw_createmailbox($target_fldball);
!                                               $success = 
$GLOBALS['phpgw']->msg->phpgw_createmailbox_ex($target_fldball);
!                                               // UPDATE: use new 
phpgw_createmailbox_ex, it wants NO server str, and a urlENcoded foldername
!                                               //$no_server_str = 
str_replace($server_str, '', $target_fldball['folder']);
!                                               //$re_encoded = 
$GLOBALS['phpgw']->msg->prep_folder_out($no_server_str);
!                                               //$target_fldball['folder'] = 
$re_encoded;
!                                               //if ($this->debug > 1) { echo 
'email.bofolder.folder_action('.__LINE__.'): calling 
->phpgw_createmailbox_ex($target_fldball) DUMP<pre>'; print_r($target_fldball); 
echo '<pre>'; }
!                                               //$success = 
$GLOBALS['phpgw']->msg->phpgw_createmailbox_ex($target_fldball);
                                        }
                                        elseif 
(($GLOBALS['phpgw']->msg->get_arg_value('action') == 'delete')
                                        || 
($GLOBALS['phpgw']->msg->get_arg_value('action') == 'delete_expert'))
                                        {
!                                               //$success = 
$GLOBALS['phpgw']->msg->phpgw_deletemailbox($target_fldball);
!                                               $success = 
$GLOBALS['phpgw']->msg->phpgw_deletemailbox_ex($target_fldball);
                                        }
                                        elseif 
(($GLOBALS['phpgw']->msg->get_arg_value('action') == 'rename')
***************
*** 165,188 ****
                                                // 
phpgw->msg->get_arg_value('source_folder') is taken directly from the listbox, 
so it *should* be official long name already
                                                // but it does need to be 
prep'd in because we prep out the foldernames put in that listbox
!                                               $source_preped = 
$GLOBALS['phpgw']->msg->prep_folder_in($source_fldball['folder']);
!                                               $source_fldball['folder'] = 
$source_preped;
                                                // add server string to source 
folder
!                                               $source_fldball['folder'] = 
$server_str.$source_fldball['folder'];
!                                               $success = 
$GLOBALS['phpgw']->msg->phpgw_renamemailbox($source_fldball, $target_fldball);
                                        }
                                        
                                        // Result Message
                                        if 
(($GLOBALS['phpgw']->msg->get_arg_value('action') == 'rename')
                                        || 
($GLOBALS['phpgw']->msg->get_arg_value('action') == 'rename_expert'))
                                        {
                                                $action_report =
!                                                       
$GLOBALS['phpgw']->msg->get_arg_value('action') .' '.lang('folder').' 
&quot;'.htmlspecialchars($source_fldball['folder']).'&quot; '
!                                                       .lang('to').' 
&quot;'.htmlspecialchars($target_fldball['folder']) .'&quot; '
                                                        .lang('result').' : ';
                                        }
                                        else
                                        {
!                                               $action_report = 
$GLOBALS['phpgw']->msg->get_arg_value('action').' '.lang('folder').' 
&quot;'.htmlspecialchars($target_fldball['folder']).'&quot; '
!                                               .lang('result').' : ';
                                        }
                                        // did it work or not
--- 185,253 ----
                                                // 
phpgw->msg->get_arg_value('source_folder') is taken directly from the listbox, 
so it *should* be official long name already
                                                // but it does need to be 
prep'd in because we prep out the foldernames put in that listbox
!                                               //$source_preped = 
$GLOBALS['phpgw']->msg->prep_folder_in($source_fldball['folder']);
!                                               //$source_fldball['folder'] = 
$source_preped;
                                                // add server string to source 
folder
!                                               //$source_fldball['folder'] = 
$server_str.$source_fldball['folder'];
!                                               //$success = 
$GLOBALS['phpgw']->msg->phpgw_renamemailbox($source_fldball, $target_fldball);
!                                               $src_re_encoded = 
$GLOBALS['phpgw']->msg->prep_folder_out($source_fldball['folder']);
!                                               $source_fldball['folder'] = 
$src_re_encoded;
!                                               $success = 
$GLOBALS['phpgw']->msg->phpgw_renamemailbox_ex($source_fldball, 
$target_fldball);
                                        }
                                        
                                        // Result Message
+                                       // we are not sure which folder will 
actually exists, new or old, so we can not really use "prep_folder_in" unless 
we check
+                                       if (isset($target_fldball['folder']))
+                                       {
+                                               if 
($GLOBALS['phpgw']->msg->prep_folder_in($target_fldball['folder']))
+                                               {
+                                                       $target_folder_decoded 
= $GLOBALS['phpgw']->msg->prep_folder_in($target_fldball['folder']);
+                                               }
+                                               elseif 
(urldecode($target_fldball['folder']))
+                                               {
+                                                       $target_folder_decoded 
= urldecode($target_fldball['folder']);
+                                               }
+                                               else
+                                               {
+                                                       $target_folder_decoded 
= lang('Unable to get target folder name');
+                                               }
+                                       }
+                                       if (isset($source_fldball['folder']))
+                                       {
+                                               if 
($GLOBALS['phpgw']->msg->prep_folder_in($source_fldball['folder']))
+                                               {
+                                                       $source_folder_decoded 
= $GLOBALS['phpgw']->msg->prep_folder_in($source_fldball['folder']);
+                                               }
+                                               elseif 
(urldecode($source_fldball['folder']))
+                                               {
+                                                       $source_folder_decoded 
= urldecode($source_fldball['folder']);
+                                               }
+                                               else
+                                               {
+                                                       $source_folder_decoded 
= lang('Unable to get source folder name');
+                                               }
+                                       }
+                                       
                                        if 
(($GLOBALS['phpgw']->msg->get_arg_value('action') == 'rename')
                                        || 
($GLOBALS['phpgw']->msg->get_arg_value('action') == 'rename_expert'))
                                        {
                                                $action_report =
!                                                       
'<em>'.$GLOBALS['phpgw']->msg->get_arg_value('action') .' 
'.lang('folder').'</em>'
!                                                       .'<br>'
!                                                       
.htmlspecialchars($source_folder_decoded)
!                                                       .'<br>'
!                                                       
.'<em>'.lang('to').'</em>'
!                                                       .'<br>'
!                                                       
.htmlspecialchars($target_folder_decoded)
!                                                       .'<br>'
                                                        .lang('result').' : ';
                                        }
                                        else
                                        {
!                                               $action_report = 
!                                                       
'<em>'.$GLOBALS['phpgw']->msg->get_arg_value('action').' 
'.lang('folder').'</em>'
!                                                       .'<br>'
!                                                       
.htmlspecialchars($target_folder_decoded)
!                                                       .'<br>'
!                                                       .lang('result').' : ';
                                        }
                                        // did it work or not

Index: class.boindex.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.boindex.inc.php,v
retrieving revision 1.30.2.3
retrieving revision 1.30.2.4
diff -C2 -r1.30.2.3 -r1.30.2.4
*** class.boindex.inc.php       6 Apr 2003 10:09:11 -0000       1.30.2.3
--- class.boindex.inc.php       8 Sep 2003 08:33:31 -0000       1.30.2.4
***************
*** 74,78 ****
                                'lang_total2'           => lang('Total 
Messages'),
                                'lang_size2'            => lang('Folder Size'),
!                               'stats_to_txt'          => '-', // this is not 
the word in other lang's as the other lang('to')'s
                                'lang_to'                       => lang('to'),
                                'lang_get_size'         => lang('get size'),
--- 74,80 ----
                                'lang_total2'           => lang('Total 
Messages'),
                                'lang_size2'            => lang('Folder Size'),
!                               //'stats_to_txt'                => lang('to'),
!                               // ralfbecker: this is not the word in other 
lang's as the other lang('to')'s
!                               'stats_to_txt'          => '-',
                                'lang_to'                       => lang('to'),
                                'lang_get_size'         => lang('get size'),
***************
*** 83,87 ****
                                'lang_delete'           => lang('delete'),
                                'mlist_attach_txt'      => lang('file'),
!                               'lang_inbox'            => lang('INBOX')
                                
                        );
--- 85,94 ----
                                'lang_delete'           => lang('delete'),
                                'mlist_attach_txt'      => lang('file'),
!                               'lang_inbox'            => lang('INBOX'),
!                               'lang_flagged'          => lang('flagged'),
!                               'lang_answered'         => lang('answered'),
!                               'lang_draft'            => lang('draft'),
!                               'lang_deleted'          => lang('deleted'),
!                               'lang_important'                => 
lang('important')
                                
                        );
***************
*** 573,587 ****
                        
                        // FIXME
- /* TEST-RALFBECKER
                        $this->xi['email_prefs_link'] = $GLOBALS['phpgw']->link(
                                                                '/index.php',
                                                                 
'menuaction=email.uipreferences.preferences'
                                                                
.'&ex_acctnum='.$GLOBALS['phpgw']->msg->get_acctnum());
- */
-                       $acctnum = $GLOBALS['phpgw']->msg->get_acctnum();
-                       $this->xi['email_prefs_link'] = 
$GLOBALS['phpgw']->link('/preferences/preferences.php',array(
-                               'appname' => 'email',
-                               'prefix'  => $acctnum ? 'ex_accounts/'.$acctnum 
: ''
-                       ));
                        
                        $this->xi['email_prefs_img'] = 
$GLOBALS['phpgw']->msg->img_maketag($GLOBALS['phpgw']->msg->_image_on('email',$this->icon_theme.'/customize-'.$this->icon_size,'_on'),$this->xi['folders_txt1'],'','','0');
--- 580,587 ----
***************
*** 612,615 ****
--- 612,616 ----
                        }
                        
+                       /*
                        // DEPRECIATED
                        $this->xi['ctrl_bar_acct_0_link'] = 
$GLOBALS['phpgw']->link(
***************
*** 635,639 ****
                                                                .'&start=');
                        $this->xi['ctrl_bar_acct_1_link'] = '<a 
href="'.$this->xi['ctrl_bar_acct_1_link'].'">'.'goto extra 1'.'</a>';
!                       
                        $this->xi['ctrl_bar_back1'] = 
$GLOBALS['phpgw_info']['theme']['row_on'];
                        
--- 636,640 ----
                                                                .'&start=');
                        $this->xi['ctrl_bar_acct_1_link'] = '<a 
href="'.$this->xi['ctrl_bar_acct_1_link'].'">'.'goto extra 1'.'</a>';
!                       */
                        $this->xi['ctrl_bar_back1'] = 
$GLOBALS['phpgw_info']['theme']['row_on'];
                        
***************
*** 774,778 ****
                        //if (  
$GLOBALS['phpgw']->msg->get_folder_short($GLOBALS['phpgw']->msg->get_arg_value('folder'))
                        // != 
$GLOBALS['phpgw']->msg->get_folder_short($GLOBALS['phpgw']->msg->get_pref_value('sent_folder_name')))
!                       // try this new core function
                        $querey_fldball = array();
                        $querey_fldball['acctnum'] = 
$GLOBALS['phpgw']->msg->get_acctnum();
--- 775,783 ----
                        //if (  
$GLOBALS['phpgw']->msg->get_folder_short($GLOBALS['phpgw']->msg->get_arg_value('folder'))
                        // != 
$GLOBALS['phpgw']->msg->get_folder_short($GLOBALS['phpgw']->msg->get_pref_value('sent_folder_name')))
!                       // UPDATE use this new core function
!                       // NOTE how to do the querey we need a folder name 
"prepped out" i.e. urlencoded
!                       // and also note that for some backwards reason the arg 
"folder" is one of the only times a folder name is stored "prepped in", this is 
a grandfathered in situation
!                       // NOTE: this common_folder_is querey for "Sent" folder 
can not be true unless user has pref "Use Sent Folder" set to True!
!                       // i.e. a folder named "Sent" is not THE sent folder 
unless the prefs say so
                        $querey_fldball = array();
                        $querey_fldball['acctnum'] = 
$GLOBALS['phpgw']->msg->get_acctnum();
***************
*** 805,825 ****
                        $this->xi['check_image'] = 
$GLOBALS['phpgw']->common->image_on('email','check','_on');
                        //$this->xi['mlist_attach'] = '<div 
align="right">'.'<img src="'.$this->xi['attach_img'].'" 
alt="'.$this->xi['mlist_attach_txt'].'">'.'</div>';
!                       $this->xi['mlist_attach'] = '<img 
src="'.$this->xi['attach_img'].'" alt="'.$this->xi['mlist_attach_txt'].'">';
                        $this->xi['flagged_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','flag-for-followup-16','_on')
!                                       .'" 
alt="'.$this->xi['FIXME_flagged'].'">';
                        $this->xi['answered_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','replied','_on')
!                                       .'" 
alt="'.$this->xi['FIXME_answered'].'">';
                        $this->xi['draft_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','regular_draft','_on')
!                                       .'" 
alt="'.$this->xi['FIXME_draft'].'">';
                        $this->xi['deleted_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','deleted','_on')
!                                       .'" 
alt="'.$this->xi['FIXME_deleted'].'">';
                        
                        // loop thru the messages and get the data that the UI 
will display
--- 810,843 ----
                        $this->xi['check_image'] = 
$GLOBALS['phpgw']->common->image_on('email','check','_on');
                        //$this->xi['mlist_attach'] = '<div 
align="right">'.'<img src="'.$this->xi['attach_img'].'" 
alt="'.$this->xi['mlist_attach_txt'].'">'.'</div>';
!                       $this->xi['mlist_attach'] = '<img 
src="'.$this->xi['attach_img'].'" title="'.$this->xi['mlist_attach_txt'].'" 
alt="'.$this->xi['mlist_attach_txt'].'">';
                        $this->xi['flagged_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','flag-for-followup-16','_on')
!                                       .'" 
title="'.$this->xi['lang_flagged'].'"'
!                                       .'" 
alt="'.$this->xi['lang_flagged'].'">';
                        $this->xi['answered_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','replied','_on')
!                                       .'" 
title="'.$this->xi['lang_answered'].'"'
!                                       .'" 
alt="'.$this->xi['lang_answered'].'">';
                        $this->xi['draft_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','regular_draft','_on')
!                                       .'" title="'.$this->xi['lang_draft'].'"'
!                                       .'" alt="'.$this->xi['lang_draft'].'">';
                        $this->xi['deleted_img'] = 
                                        '<img src="'
                                        
.$GLOBALS['phpgw']->common->image_on('email','deleted','_on')
!                                       .'" 
title="'.$this->xi['lang_deleted'].'"'
!                                       .'" 
alt="'.$this->xi['lang_deleted'].'">';
!                       /*
!                       // FUTURE USE: MS mail puts "important" indicator in 
the message headers
!                       // note do we have an image for this yet?
!                       $this->xi['important_img'] = 
!                                       '<img src="'
!                                       
.$GLOBALS['phpgw']->common->image_on('email','important','_on')
!                                       .'" 
title="'.$this->xi['lang_important'].'"'
!                                       .'" 
alt="'.$this->xi['lang_important'].'">';
!                       */
                        
                        // loop thru the messages and get the data that the UI 
will display
***************
*** 869,872 ****
--- 887,891 ----
                        if ($this->xi['mailsvr_supports_folders'])
                        {
+                               /*
                                $feed_args = Array();
                                $feed_args = Array(
***************
*** 882,885 ****
--- 901,911 ----
                                );
                                $this->xi['delmov_listbox'] = 
$GLOBALS['phpgw']->msg->all_folders_listbox($feed_args);
+                               */
+                               // UPDATE use the newer widgets high level 
function
+                               $my_widgets = 
CreateObject('email.html_widgets');
+                               $skip_fldball = array();
+                               $skip_fldball['acctnum'] = 
$GLOBALS['phpgw']->msg->get_acctnum();
+                               $skip_fldball['folder'] = 
$GLOBALS['phpgw']->msg->prep_folder_out($GLOBALS['phpgw']->msg->get_arg_value('folder'));
+                               $this->xi['delmov_listbox'] = 
$my_widgets->all_folders_combobox('delmov', True, $skip_fldball);
                        }
                        else
***************
*** 887,905 ****
                                $this->xi['delmov_listbox'] = '&nbsp;';
                        }
!                       $delmov_text = lang('Delete');
!                       $delmov_image = 
$GLOBALS['phpgw']->msg->img_maketag($GLOBALS['phpgw']->msg->_image_on('email',$this->icon_theme.'/trash-'.$this->icon_size,'_on'),$delmov_text,'','','0');
!                       $this->xi['delmov_image'] = $delmov_image;
!                       //$delmov_image = 
$GLOBALS['phpgw']->msg->img_maketag($GLOBALS['phpgw']->common->image_on('email',$icon_theme.'-trash-'.$icon_size,'_on'),$delmov_text,'','','0');
!                       //$delmov_image = 
$GLOBALS['phpgw']->msg->img_maketag($this->xi['image_dir'].'/'.$this->icon_theme.'-trash-'.$this->icon_size.'.gif',$this->xi['delmov_text'],'','','0');
                        $delmov_onclick = "javascript:do_action('delall')";
                        switch 
($GLOBALS['phpgw']->msg->get_pref_value('button_type',$acctnum)){
                                case 'text':
!                                       $this->xi['delmov_button'] = '<a 
href="'.$delmov_onclick.'">'.$delmov_text.'</a>';
                                        break;
                                case 'image':
!                                       $this->xi['delmov_button'] = '<a 
href="'.$delmov_onclick.'">'.$delmov_image.'</a>';
                                        break;
                                case 'both':
!                                       $this->xi['delmov_button'] = '<a 
href="'.$delmov_onclick.'">'.$delmov_image.'&nbsp;'.$delmov_text.'</a>';
                                        break;
                        }
--- 913,929 ----
                                $this->xi['delmov_listbox'] = '&nbsp;';
                        }
!                       $this->xi['delmov_image'] = 
$GLOBALS['phpgw']->msg->img_maketag($GLOBALS['phpgw']->msg->_image_on('email',$this->icon_theme.'/trash-'.$this->icon_size,'_on'),$this->xi['lang_delete'],'','','0');
!                       //$this->xi['delmov_image'] = 
$GLOBALS['phpgw']->msg->img_maketag($GLOBALS['phpgw']->common->image_on('email',$icon_theme.'-trash-'.$icon_size,'_on'),$this->xi['lang_delete'],'','','0');
!                       //$this->xi['delmov_image'] = 
$GLOBALS['phpgw']->msg->img_maketag($this->xi['image_dir'].'/'.$this->icon_theme.'-trash-'.$this->icon_size.'.gif',$this->xi['lang_delete'],'','','0');
                        $delmov_onclick = "javascript:do_action('delall')";
                        switch 
($GLOBALS['phpgw']->msg->get_pref_value('button_type',$acctnum)){
                                case 'text':
!                                       $this->xi['delmov_button'] = '<a 
href="'.$delmov_onclick.'">'.$this->xi['lang_delete'].'</a>';
                                        break;
                                case 'image':
!                                       $this->xi['delmov_button'] = '<a 
href="'.$delmov_onclick.'">'.$this->xi['delmov_image'].'</a>';
                                        break;
                                case 'both':
!                                       $this->xi['delmov_button'] = '<a 
href="'.$delmov_onclick.'">'.$this->xi['delmov_image'].'&nbsp;'.$this->xi['lang_delete'].'</a>';
                                        break;
                        }
***************
*** 1067,1081 ****
                                $this->xi['folders_btn'] = '&nbsp;';
                        }
- /* TEST-RALFBECKER
                        $this->xi['email_prefs_link'] = $GLOBALS['phpgw']->link(
                                                                '/index.php',
                                                                
'menuaction=email.uipreferences.preferences');
- */
-                       $acctnum = $GLOBALS['phpgw']->msg->get_acctnum();
-                       $this->xi['email_prefs_link'] = 
$GLOBALS['phpgw']->link('/preferences/preferences.php',array(
-                               'appname' => 'email',
-                               'prefix'  => $acctnum ? 'ex_accounts/'.$acctnum 
: ''
-                       ));
- 
                        $this->xi['filters_link'] = $GLOBALS['phpgw']->link(
                                                                
'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/filters.php');
--- 1091,1097 ----

Index: class.bomessage.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.bomessage.inc.php,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -C2 -r1.14 -r1.14.2.1
*** class.bomessage.inc.php     14 Mar 2003 04:00:10 -0000      1.14
--- class.bomessage.inc.php     8 Sep 2003 08:33:31 -0000       1.14.2.1
***************
*** 27,38 ****
--- 27,50 ----
                        'message_data'          => True
                );
+               // Convience var REFERENCE to globals[phpgw]->msg
+               var $msg='##NOTHING##';
+               
                var $preserve_no_fmt = True;
                //var $preserve_no_fmt = False;
                var $no_fmt='';
                
+               // do we show both plain and enhanced (html, apple "enriched") 
parts of an alternative set
+               // or do we hide the simpler plain part of the pair
+               var $hide_alt_hide = True;
+               //var $hide_alt_hide = False;
+               
                var $debug = 0;
                //var $debug = 2;
                //var $debug = 3;
                
+               // Special Debug data assembled about the message
+               var $show_debug_parts_summary=0;
+               //var $show_debug_parts_summary=1;
+               
                var $debug_nav = 0;
                
***************
*** 136,145 ****
                        @author Angles 
                        */
!                       $this->xi['lang_warn_has_iframe_maybe_klez'] = 
lang('warn_has_iframe_maybe_klez');
!                       $this->xi['lang_warn_script_tags'] = 
lang('warn_script_tags');
!                       $this->xi['lang_warn_b64_encoded_displayable'] = 
lang('warn_b64_encoded_displayable');
!                       $this->xi['lang_warn_attachment_only_mail'] = 
lang('warn_attachment_only_mail');
!                       $this->xi['lang_warn_attachment_name_dangerous'] = 
lang('warn_attachment_name_DANGEROUS');                      
!                       $this->xi['lang_warn_style_sheet'] = 
lang('warn_style_sheet');
                        
                        if ($this->debug > 2) { echo 
'class.bomessage.*constructor* ('.__LINE__.'): langs put in $this->xi 
DUMP:<pre>'; print_r($this->xi); echo '</pre>'; } 
--- 148,166 ----
                        @author Angles 
                        */
!                       //$this->xi['lang_warn_has_iframe_maybe_klez'] = 
lang('warn_has_iframe_maybe_klez');
!                       //$this->xi['lang_warn_script_tags'] = 
lang('warn_script_tags');
!                       //$this->xi['lang_warn_b64_encoded_displayable'] = 
lang('warn_b64_encoded_displayable');
!                       //$this->xi['lang_warn_attachment_only_mail'] = 
lang('warn_attachment_only_mail');
!                       //$this->xi['lang_warn_attachment_name_dangerous'] = 
lang('warn_attachment_name_DANGEROUS');                    
!                       //$this->xi['lang_warn_style_sheet'] = 
lang('warn_style_sheet');
!                       // Reiner Jung recommends putting the whole phrase 
right here instead of the lang file
!                       // it seems to make it easier for the translator to see 
the these as an example to translate
!                       $this->xi['lang_warn_has_iframe_maybe_klez'] = 
lang('html messages with the IFRAME  tag may be KLEZ or other worm emails.');
!                       $this->xi['lang_warn_script_tags'] = lang(' a scrips 
tag block of code, javascript or otherwise, is in an inline html message. Not 
necessarily bad, but user may want to know. This is SCRIPT ... code ... SCRIPT 
blocks, not the "OnMouseOver"  stuff.');
!                       $this->xi['lang_warn_b64_encoded_displayable'] = 
lang('It is not RFC standard to base64 encode a part of a message that is NOT 
an attachment. NOTE this check is currently done after the message is already 
being viewed, it should probably stop the message from being automatically 
displayed, i.e. give a "show this" button instead.');
!                       $this->xi['lang_warn_attachment_only_mail'] = 
lang('There is no text or other part of the email to display to the user, all 
part(s) are attachments.');
!                       $this->xi['lang_warn_attachment_name_dangerous'] = 
lang('Message has an attachment that is some kind of script or exe file that 
Windows users should be warned not to click on it. These are filenames like 
attachments the end with the usual "bad stuff", such as bat, inf, pif, com, 
exe, reg, vbs, and scr');                       
!                       $this->xi['lang_warn_style_sheet'] = lang('This is 
really a visual template conflict issue. The phpGW template already has it own 
CSS, and style sheets are cascading, subsequent CSS can be inherited by the 
page and TOTALLY B0RK the look of the template theme. Or maybe not, only 
certain CSS tags are really capable of this such as the css BODY property, or 
the A (href) properties.');
!                       
                        
                        if ($this->debug > 2) { echo 
'class.bomessage.*constructor* ('.__LINE__.'): langs put in $this->xi 
DUMP:<pre>'; print_r($this->xi); echo '</pre>'; } 
***************
*** 159,168 ****
                */
                function message_data()
!               {                       
!                       if ($this->debug > 0) { echo 'ENTERING: 
email.bomessage.message_data'.'<br>'; }
!                       
                        // make sure we have msg object and a server stream
!                       $this->msg_bootstrap = 
CreateObject("email.msg_bootstrap");
!                       
$this->msg_bootstrap->ensure_mail_msg_exists('email.bomessage.message_data', 
$this->debug);
                        
                        // ---- BEGIN BOMESSAGE ----
--- 180,196 ----
                */
                function message_data()
!               {                               
                        // make sure we have msg object and a server stream
!                       $this->msg_bootstrap = 
CreateObject('email.msg_bootstrap');
!                       
//$this->msg_bootstrap->ensure_mail_msg_exists('email.bomessage.message_data('.__LINE__.')',
 $this->debug);
!                       
$this->msg_bootstrap->ensure_mail_msg_exists('email.bomessage.message_data('.__LINE__.')');
!                       // we know we have msg object, now make convience 
reference
!                       if ($this->msg == '##NOTHING##')
!                       {
!                               $this->msg =& $GLOBALS['phpgw']->msg;
!                       }
!                       // now we can use msg object debug calls
!                       if ($this->debug > 0) { 
$this->msg->dbug->out('ENTERING: 
email.bomessage.message_data('.__LINE__.')'.'<br>'); }
!                       
                        
                        // ---- BEGIN BOMESSAGE ----
***************
*** 247,250 ****
--- 275,279 ----
                        if ($this->xi['mailsvr_supports_folders'])
                        {
+                               /*
                                $feed_args = Array();
                                $feed_args = Array(
***************
*** 260,263 ****
--- 289,299 ----
                                );
                                $this->xi['delmov_listbox'] = 
$GLOBALS['phpgw']->msg->all_folders_listbox($feed_args);
+                               */
+                               // UPDATE use the newer widgets high level 
function
+                               $my_cbox_widgets = 
CreateObject('email.html_widgets');
+                               $skip_fldball = array();
+                               $skip_fldball['acctnum'] = 
$GLOBALS['phpgw']->msg->get_acctnum();
+                               $skip_fldball['folder'] = 
$GLOBALS['phpgw']->msg->prep_folder_out($GLOBALS['phpgw']->msg->get_arg_value('folder'));
+                               $this->xi['delmov_listbox'] = 
$my_cbox_widgets->all_folders_combobox('delmov', True, $skip_fldball, 
$this->xi['lang_move_this_message_into']);
                        }
                        else
***************
*** 276,283 ****
                        // ----  General Information about The Message  -----
                        $msgball = 
$GLOBALS['phpgw']->msg->get_arg_value('msgball');
!                       if ($this->debug > 2) { echo 
'email.bomessage.message_data:  get_arg_value("msgball") dump: <pre>'; 
print_r($msgball); echo '</pre>'; }
                        $msg_struct = 
$GLOBALS['phpgw']->msg->phpgw_fetchstructure($msgball);
                        $msg_headers = 
$GLOBALS['phpgw']->msg->phpgw_header($msgball);
                        
                        /*
                        // MOVED TO EVENT, TRIGGERED BY GETTING A BODY OR BODY 
PART
--- 312,323 ----
                        // ----  General Information about The Message  -----
                        $msgball = 
$GLOBALS['phpgw']->msg->get_arg_value('msgball');
!                       
!                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'):  processed 
msgball DUMP:', $msgball); } 
                        $msg_struct = 
$GLOBALS['phpgw']->msg->phpgw_fetchstructure($msgball);
                        $msg_headers = 
$GLOBALS['phpgw']->msg->phpgw_header($msgball);
                        
+                       if ($this->debug > 2) { 
$this->msg->dbug->out('class.bomessage.message_data('.__LINE__.'): $msg_struct 
DUMP:', $msg_struct);  }
+                       if ($this->debug > 2) { 
$this->msg->dbug->out('class.bomessage.message_data('.__LINE__.'): $msg_headers 
DUMP:', $msg_headers);  }
+                       
                        /*
                        // MOVED TO EVENT, TRIGGERED BY GETTING A BODY OR BODY 
PART
***************
*** 297,304 ****
                        $folder_info = array();
                        $folder_info = 
$GLOBALS['phpgw']->msg->get_folder_status_info();
!                       if ($this->debug > 2) { echo 
'email.bomessage.message_data:  get_folder_status_info() dump: <pre>'; 
print_r($folder_info); echo '</pre>'; }
                        $totalmessages = $folder_info['number_all'];
                        
                        $subject = 
$GLOBALS['phpgw']->msg->get_subject($msg_headers,'');
                        $message_date = 
$GLOBALS['phpgw']->common->show_date($msg_headers->udate);
                        
--- 337,397 ----
                        $folder_info = array();
                        $folder_info = 
$GLOBALS['phpgw']->msg->get_folder_status_info();
!                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'):  
get_folder_status_info() DUMP:', $folder_info); }
                        $totalmessages = $folder_info['number_all'];
                        
                        $subject = 
$GLOBALS['phpgw']->msg->get_subject($msg_headers,'');
+ 
+                       /*
+ # begin GMT handling by "acros"
+ #le quitamos el offset a los mensajes de correo electrónico.
+ ######
+ $msg_date2=$msg_headers->date;
+ $comma = strpos($msg_date2,',');
+ 
+                       if($comma)
+                       {
+                               $msg_date2 = substr($msg_date2,$comma + 2);
+                       }
+                       //echo 'Msg Date : '.$msg_date."<br>\n";
+                       $dta = array();
+                       $ta = array();
+                  
+                       $dta = explode(' ',$msg_date2);
+                       $ta = explode(':',$dta[3]);
+ 
+                       if(substr($dta[4],0,3) <> 'GMT')
+                       {
+                               $tzoffset = substr($dta[4],0,1);
+                               (int)$tzhours = substr($dta[4],1,2);
+                               (int)$tzmins = substr($dta[4],3,2);
+ #echo"$ta[0] y $tzoffset";
+                               switch ($tzoffset)
+                               {
+                                       case '+': 
+                                               (int)$ta[0] -= (int)$tzhours;
+                                               (int)$ta[1] -= (int)$tzmins;
+ #echo"$ta[0]";
+                                               break;
+                                       case '-':
+                                               (int)$ta[0] += (int)$tzhours;
+                                               (int)$ta[1] += (int)$tzmins;
+                                               break;
+                               }
+                       }
+                  
+                       $new_time = 
mktime($ta[0],$ta[1],$ta[2],$GLOBALS['month_array'][strtolower($dta[1])],$dta[0],$dta[2])
 - ((60 * 60) * 
intval($GLOBALS['phpgw_info']['user']['preferences']['common']['tzoffset']));
+ 
+ 
+ $new_time2=gmdate("D, d M Y H:m:s",$new_time)." GMT";
+ $msg_headers->date = $new_time2;
+ $msg_headers->udate = $new_time;
+ #echo("<br>Hora cojonuda: $new_time2");
+ #echo"udate $msg_headers->udate<br>";
+ #echo"date $msg_headers->date<br>";
+ #echo"$new_time<br>";
+ #echo("estamos en bomessage 589<br>");
+ # end GMT handling by "acros"
+                       */
+ 
                        $message_date = 
$GLOBALS['phpgw']->common->show_date($msg_headers->udate);
                        
***************
*** 314,318 ****
                                .$this->no_fmt);
                        
-                       if ($this->debug > 2) { echo 
'class.bomessage.message_data: $msg_struct DUMP:<pre>'; print_r($msg_struct); 
echo '</pre>';  }
                        address@hidden(0);
                        
--- 407,410 ----
***************
*** 320,324 ****
                        // this is used at least by the calendar for the 
notifications
                        $this->xi['application'] = '';
!                       $msgtype = 
$GLOBALS['phpgw']->msg->phpgw_get_flag('X-phpGW-Type');
                        $this->xi['msgtype'] = $msgtype;
                        
--- 412,425 ----
                        // this is used at least by the calendar for the 
notifications
                        $this->xi['application'] = '';
!                       // THIS IS NOT CACHED DATA, only call this is 
session_cache_extreme is FALSE
!                       // or else we will connect even if we ALREADY HAVE THE 
BODY IN CACHE!!!
!                       if ($GLOBALS['phpgw']->msg->session_cache_extreme == 
True)
!                       {
!                               $msgtype = '';
!                       }
!                       else
!                       {
!                               $msgtype = 
$GLOBALS['phpgw']->msg->phpgw_get_flag('X-phpGW-Type');
!                       }
                        $this->xi['msgtype'] = $msgtype;
                        
***************
*** 370,374 ****
                        // in the event that the "get_msgball_list()" returns 
bogus data or is not available
                        $nav_data = 
$GLOBALS['phpgw']->msg->prev_next_navigation($folder_info['number_all']);
!                       if ($this->debug_nav > 2) { echo 
'email.bomessage.message_data: $nav_data[] dump <pre>: '; print_r($nav_data); 
echo '</pre>'; }
                        
                        // ----  "Go To Previous Message" Handling  -----
--- 471,475 ----
                        // in the event that the "get_msgball_list()" returns 
bogus data or is not available
                        $nav_data = 
$GLOBALS['phpgw']->msg->prev_next_navigation($folder_info['number_all']);
!                       if ($this->debug_nav > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): $nav_data[] 
DUMP:', $nav_data); }
                        
                        // ----  "Go To Previous Message" Handling  -----
***************
*** 482,485 ****
--- 583,588 ----
                                        $from_personal = 
$GLOBALS['phpgw']->msg->decode_header_string($from->personal);
                                }
+                               // escape certain undesirable chars before HTML 
display
+                               $from_personal =  
$GLOBALS['phpgw']->msg->htmlspecialchars_encode($from_personal);
                                // display "From" according to user preferences
                                if 
(($GLOBALS['phpgw']->msg->get_isset_pref('show_addresses'))
***************
*** 489,492 ****
--- 592,597 ----
                                        // user wants to see "personal" info 
AND the plain address, and we have both available to us
                                        $from_extra_info = ' ('.$from_plain.') 
';
+                                       // escape certain undesirable chars 
before HTML display
+                                       $from_extra_info =  
$GLOBALS['phpgw']->msg->htmlspecialchars_encode($from_extra_info);
                                }
                                else
***************
*** 542,546 ****
                        else
                        {
!                               for ($i = 0; $i < count($msg_headers->to); $i++)
                                {
                                        $topeople = $msg_headers->to[$i];
--- 647,658 ----
                        else
                        {
!                               $to_loops = count($msg_headers->to);
!                               // begin test of Maz Num of To loop limitation
!                               $max_to_loops = 25;
!                               if ($to_loops > $max_to_loops)
!                               {
!                                       $to_loops = $max_to_loops;
!                               }
!                               for ($i = 0; $i < $to_loops; $i++)
                                {
                                        $topeople = $msg_headers->to[$i];
***************
*** 554,561 ****
--- 666,677 ----
                                                $to_personal = 
$GLOBALS['phpgw']->msg->decode_header_string($topeople->personal);
                                        }
+                                       // escape certain undesirable chars 
before HTML display
+                                       $to_personal =  
$GLOBALS['phpgw']->msg->htmlspecialchars_encode($to_personal);
                                        if 
(($GLOBALS['phpgw']->msg->get_pref_value('show_addresses') != 'none')
                                        && ($to_personal != $to_plain))
                                        {
                                                $to_extra_info = ' 
('.$to_plain.') ';
+                                               // escape certain undesirable 
chars before HTML display
+                                               $to_extra_info =  
$GLOBALS['phpgw']->msg->htmlspecialchars_encode($to_extra_info);
                                        }
                                        else
***************
*** 604,608 ****
                        if (isset($msg_headers->cc) && count($msg_headers->cc) 
> 0)
                        {
!                               for ($i = 0; $i < count($msg_headers->cc); $i++)
                                {
                                        $ccpeople = $msg_headers->cc[$i];
--- 720,731 ----
                        if (isset($msg_headers->cc) && count($msg_headers->cc) 
> 0)
                        {
!                               $cc_loops = count($msg_headers->cc);
!                               // begin test of Maz Num of CC loop limitation
!                               $max_cc_loops = 25;
!                               if ($cc_loops > $max_cc_loops)
!                               {
!                                       $cc_loops = $max_cc_loops;
!                               }
!                               for ($i = 0; $i < $cc_loops; $i++)
                                {
                                        $ccpeople = $msg_headers->cc[$i];
***************
*** 616,619 ****
--- 739,744 ----
                                                $cc_personal = 
$GLOBALS['phpgw']->msg->decode_header_string($ccpeople->personal);
                                        }
+                                       // escape certain undesirable chars 
before HTML display
+                                       $cc_personal =  
$GLOBALS['phpgw']->msg->htmlspecialchars_encode($cc_personal);
                                        //if 
(($GLOBALS['phpgw_info']['user']['preferences']['email']['show_addresses'] != 
'none')
                                        if 
(($GLOBALS['phpgw']->msg->get_pref_value('show_addresses') != 'none')
***************
*** 621,624 ****
--- 746,751 ----
                                        {
                                                $cc_extra_info = ' 
('.$cc_plain.') ';
+                                               // escape certain undesirable 
chars before HTML display
+                                               $cc_extra_info =  
$GLOBALS['phpgw']->msg->htmlspecialchars_encode($cc_extra_info);
                                        }
                                        else
***************
*** 672,677 ****
                        // ---- Generate phpgw CUSTOM FLATTENED FETCHSTRUCTURE 
ARRAY  -----
                        $this->part_nice = Array();
                        $this->part_nice = 
$GLOBALS['phpgw']->msg->get_flat_pgw_struct($msg_struct);
!                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: $this->part_nice dump <pre>: '; 
print_r($this->part_nice); echo '</pre>'; }
                        
                        
--- 799,805 ----
                        // ---- Generate phpgw CUSTOM FLATTENED FETCHSTRUCTURE 
ARRAY  -----
                        $this->part_nice = Array();
+                       // NO NEED TO CACHE THIS DATA, NO CONTACT WITH 
MAILSERVER IS NEEDED FOR THIS DATA
                        $this->part_nice = 
$GLOBALS['phpgw']->msg->get_flat_pgw_struct($msg_struct);
!                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): 
$this->part_nice DUMP:', $this->part_nice); }
                        
                        
***************
*** 815,823 ****
                        
                        // ---- DEBUG: Show Information About Each Part  -----
!                       // --- UPDATE THIS debug output (gotta be a better way) 
and move it somewhere else ---
!                       $show_debug_parts = False;
!                       //$show_debug_parts = True;
!                       
!                       if ($this->debug > 3)
                        {
                                // what's the count in the array?
--- 943,947 ----
                        
                        // ---- DEBUG: Show Information About Each Part  -----
!                       if ($this->show_debug_parts_summary > 0)
                        {
                                // what's the count in the array?
***************
*** 832,844 ****
                                
                                $crlf = "\r\n";
!                               $msg_body_info = '<pre>' .$crlf;
                                $msg_body_info .= 'Top Level Headers:' .$crlf;
                                $msg_body_info .= $msg_raw_headers .$crlf;
                                $msg_body_info .= $crlf;
                                
                                $msg_body_info .= 'This message has 
'.$max_parts.' part(s)' .$crlf;
                                $msg_body_info .= 'deepest_level: 
'.$deepest_level .$crlf;
                                $msg_body_info .= 'Array Keys: 
'.$GLOBALS['phpgw']->msg->array_keys_str($this->part_nice) .$crlf;
                                $msg_body_info .= $crlf;
                                for ($i = 0; $i < count($this->part_nice); $i++)
                                {
--- 956,979 ----
                                
                                $crlf = "\r\n";
!                               //$msg_body_info = '<pre>' .$crlf;
                                $msg_body_info .= 'Top Level Headers:' .$crlf;
                                $msg_body_info .= $msg_raw_headers .$crlf;
                                $msg_body_info .= $crlf;
                                
+                               // what is the deepest level debth
+                               $deepest_level = 0;
+                               for ($i = 0; $i < count($this->part_nice); $i++)
+                               {
+                                       if 
($this->part_nice[$i]['ex_level_debth'] > $deepest_level)
+                                       {
+                                               $deepest_level = 
$this->part_nice[$i]['ex_level_debth'];
+                                       }
+                               }
+                               
                                $msg_body_info .= 'This message has 
'.$max_parts.' part(s)' .$crlf;
                                $msg_body_info .= 'deepest_level: 
'.$deepest_level .$crlf;
                                $msg_body_info .= 'Array Keys: 
'.$GLOBALS['phpgw']->msg->array_keys_str($this->part_nice) .$crlf;
                                $msg_body_info .= $crlf;
+                               
                                for ($i = 0; $i < count($this->part_nice); $i++)
                                {
***************
*** 931,937 ****
                                }
                                
!                               $msg_body_info .= '</pre>' .$crlf;
!                               $this->xi['msg_body_info'] = $msg_body_info;
!                               
//$GLOBALS['phpgw']->template->parse('V_debug_parts','B_debug_parts');
                        }
                        else
--- 1066,1074 ----
                                }
                                
!                               //$msg_body_info .= '</pre>' .$crlf;
!                               //$this->xi['msg_body_info'] = $msg_body_info;
!                               $this->xi['msg_body_info'] = '';
!                               
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): assembled 
debug data $msg_body_info DUMP:', $msg_body_info);
!                               
                        }
                        else
***************
*** 941,944 ****
--- 1078,1082 ----
                        }
                        
+                       
                        // -----  Message_Display Template Handles it from here 
 -------
                        $this->xi['theme_font'] = 
$GLOBALS['phpgw_info']['theme']['font'];
***************
*** 1016,1020 ****
                        // Force Echo Out Unformatted Text for email with 1 
part which is a large text messages (in bytes) , such as a system report from 
cron
                        // php (4.0.4pl1 last tested) and some imap servers 
(courier and uw-imap are confirmed) will time out retrieving this type of 
message
!                       $force_echo_size = 20000;
                        
                        
--- 1154,1159 ----
                        // Force Echo Out Unformatted Text for email with 1 
part which is a large text messages (in bytes) , such as a system report from 
cron
                        // php (4.0.4pl1 last tested) and some imap servers 
(courier and uw-imap are confirmed) will time out retrieving this type of 
message
!                       //$force_echo_size = 20000;
!                       $force_echo_size = 60000;
                        
                        
***************
*** 1059,1064 ****
                        for ($i = 0; $i < $count_part_nice; $i++)
                        {
!                               if ($this->debug > 2) { echo 
'email.bomessage.message_data: disp loop: '.($i+1).' of 
'.$count_part_nice.'<br>'; }
!                               if ($this->debug > 3) { echo 
'email.bomessage.message_data: d_loop: $this->part_nice[$i] DUMP<pre>'; 
print_r($this->part_nice[$i]); echo '</pre>'; }
                                // Do We Break out of this Loop Block
                                if ($done_processing)
--- 1198,1203 ----
                        for ($i = 0; $i < $count_part_nice; $i++)
                        {
!                               if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): disp loop: 
'.($i+1).' of '.$count_part_nice.'<br>'); }
!                               if ($this->debug > 3) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: 
$this->part_nice[$i] DUMP:', $this->part_nice[$i]); }
                                // Do We Break out of this Loop Block
                                if ($done_processing)
***************
*** 1081,1085 ****
                                || ($this->part_nice[$i]['m_description'] == 
'packagelist')) )
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: "Mime-Ignorant Email Server", Num Parts 
is 1 AND part is a container OR packagelist <br>'; }
                                        
                                        // ====  MIME IGNORANT SERVER  ====
--- 1220,1224 ----
                                || ($this->part_nice[$i]['m_description'] == 
'packagelist')) )
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: 
"Mime-Ignorant Email Server", Num Parts is 1 AND part is a container OR 
packagelist <br>'); }
                                        
                                        // ====  MIME IGNORANT SERVER  ====
***************
*** 1143,1147 ****
                                && ((int)$this->part_nice[$i]['bytes'] > 
$force_echo_size))
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: ECHO OUT: part meets five criteria 
<br>'; }
                                        
                                        $title_text = 
'&nbsp;'.$this->xi['lang_message'].': ';
--- 1282,1286 ----
                                && ((int)$this->part_nice[$i]['bytes'] > 
$force_echo_size))
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: ECHO 
OUT: part meets five criteria <br>'); }
                                        
                                        $title_text = 
'&nbsp;'.$this->xi['lang_message'].': ';
***************
*** 1192,1197 ****
                                elseif (($this->part_nice[$i]['m_description'] 
== 'presentable')
                                && (stristr($this->part_nice[$i]['m_keywords'], 
'HTML')))
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: part is HTML, presentable <br>'; }
                                        
                                        // get the body
--- 1331,1338 ----
                                elseif (($this->part_nice[$i]['m_description'] 
== 'presentable')
                                && (stristr($this->part_nice[$i]['m_keywords'], 
'HTML')))
+                               // enriched = part of APPLE MAIL multipart / 
alternative subpart where the html part usually is
+                               // HOWEVER enriched is not complete html so it 
will not render anything special in a browser so we can NOT treat enriched like 
html
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is HTML, presentable <br>'); }
                                        
                                        // get the body
***************
*** 1232,1238 ****
                                        // ---- HTML Related Parts Handling  
----
                                        $parent_idx = 
$this->part_nice[$i]['ex_parent_flat_idx'];
-                                       $msg_raw_headers = 
$GLOBALS['phpgw']->msg->phpgw_fetchheader($msgball);
                                        // NEEDS UPDATING !!!!!
!                                       $ms_related_str = 'X-MimeOLE: Produced 
By Microsoft MimeOLE';
                                        
                                        // ---- Replace "Related" part's ID 
with a mime reference link
--- 1373,1380 ----
                                        // ---- HTML Related Parts Handling  
----
                                        $parent_idx = 
$this->part_nice[$i]['ex_parent_flat_idx'];
                                        // NEEDS UPDATING !!!!!
!                                       //$msg_raw_headers = 
$GLOBALS['phpgw']->msg->phpgw_fetchheader($msgball);
!                                       //$ms_related_str = 'X-MimeOLE: 
Produced By Microsoft MimeOLE';
!                                       // NEW: use $msg_struct object to check 
for top level "RELATED" subtype
                                        
                                        // ---- Replace "Related" part's ID 
with a mime reference link
***************
*** 1240,1246 ****
                                        // update: now common in Ximian 
                                        if 
(($this->part_nice[$parent_idx]['m_html_related_kids'])
!                                       || (stristr($msg_raw_headers, 
$ms_related_str)))
                                        {
!                                               if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: * part is RELATED, HTML, presentable 
<br>'; }
                                                // typically it's the NEXT mime 
part that should be inserted into this one
                                                for ($rel = $i+1; $rel < 
count($this->part_nice)+1; $rel++)
--- 1382,1391 ----
                                        // update: now common in Ximian 
                                        if 
(($this->part_nice[$parent_idx]['m_html_related_kids'])
!                                       //|| (stristr($msg_raw_headers, 
$ms_related_str)))
!                                       //|| (stristr($msg_struct->subtype, 
'RELATED'))
!                                       //|| 
(stristr($this->part_nice[$parent_idx]['subtype'], 'RELATED')))
!                                       )
                                        {
!                                               if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: * 
part is RELATED, HTML, presentable <br>'); }
                                                // typically it's the NEXT mime 
part that should be inserted into this one
                                                for ($rel = $i+1; $rel < 
count($this->part_nice)+1; $rel++)
***************
*** 1285,1289 ****
                                                if 
(preg_match("/<iframe.*>.*<\/iframe>/ismx", $dsp))
                                                {
!                                                       if ($this->debug > 2) { 
echo 'email.bomessage.message_data: d_loop: part ** HAS IFRAME <br>'; }
                                                        
//$this->part_nice[$i]['d_threat_level'] .= 'warn_HAS_IFRAME_maybe_KLEZ ';
                                                        
$this->part_nice[$i]['d_threat_level'] .= 
$this->xi['lang_warn_has_iframe_maybe_klez'].' ';
--- 1430,1434 ----
                                                if 
(preg_match("/<iframe.*>.*<\/iframe>/ismx", $dsp))
                                                {
!                                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
** HAS IFRAME <br>'); }
                                                        
//$this->part_nice[$i]['d_threat_level'] .= 'warn_HAS_IFRAME_maybe_KLEZ ';
                                                        
$this->part_nice[$i]['d_threat_level'] .= 
$this->xi['lang_warn_has_iframe_maybe_klez'].' ';
***************
*** 1309,1313 ****
                                                // stuff the modified html in a 
hidden var, submit it then echo it back
                                                if 
(($this->part_nice[$parent_idx]['m_html_related_kids'])
!                                               || (stristr($msg_raw_headers, 
$ms_related_str)))
                                                {
                                                        // -- View As HTML 
Button With Special HTML RELATED handling
--- 1454,1461 ----
                                                // stuff the modified html in a 
hidden var, submit it then echo it back
                                                if 
(($this->part_nice[$parent_idx]['m_html_related_kids'])
!                                               //|| (stristr($msg_raw_headers, 
$ms_related_str)))
!                                               //|| 
(stristr($msg_struct->subtype, 'RELATED'))
!                                               //|| 
(stristr($this->part_nice[$parent_idx]['subtype'], 'RELATED')))
!                                               )
                                                {
                                                        // -- View As HTML 
Button With Special HTML RELATED handling
***************
*** 1408,1414 ****
                                        
//$GLOBALS['phpgw']->template->parse('V_display_part','B_display_part', True);
                                }
                                elseif ($this->part_nice[$i]['m_description'] 
== 'presentable')
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: part is presentable (non-html) <br>'; }
                                        
                                        // ----- get the part from the server
--- 1556,1576 ----
                                        
//$GLOBALS['phpgw']->template->parse('V_display_part','B_display_part', True);
                                }
+                               elseif (($this->part_nice[$i]['m_description'] 
== 'presentable')
+                               && (stristr($this->part_nice[$i]['m_keywords'], 
'alt_hide'))
+                               && ($this->hide_alt_hide == True))
+                               {
+                                       // is this a multipart alternative set, 
and this is the plain part, and do not want to show it
+                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is presentable BUT it is alt_hide so we do NOT want to show it <br>'); }
+                                       
+                                       // ----  DISPLAY INSTRUCTIONS  ----
+                                       $this->part_nice[$i]['d_instructions'] 
= 'skip';
+                                       // is this necessary here?
+                                       $this->part_nice[$i]['d_processed_as'] 
= 'empty_part';
+                                       // LOOP CONTROL
+                                       $done_processing = False;
+                               }
                                elseif ($this->part_nice[$i]['m_description'] 
== 'presentable')
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is presentable (non-html) <br>'); }
                                        
                                        // ----- get the part from the server
***************
*** 1556,1562 ****
                                        }
                                }
                                elseif ($this->part_nice[$i]['m_description'] 
== 'presentable/image')
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: part is presentable image <br>'; }
                                        
                                        $title_text = 
$this->xi['lang_section'].': '.$this->part_nice[$i]['m_part_num_mime'];
--- 1718,1738 ----
                                        }
                                }
+                               elseif (($this->part_nice[$i]['m_description'] 
== 'presentable/image')
+                               && (stristr($this->part_nice[$i]['m_keywords'], 
'alt_hide'))
+                               && ($this->hide_alt_hide == True))
+                               {
+                                       // is this a multipart alternative set, 
and this is the plain part, and do not want to show it
+                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is presentable IMAGE BUT it is alt_hide because it is html related to a parent 
so we do NOT want to show it again<br>'); }
+                                       
+                                       // ----  DISPLAY INSTRUCTIONS  ----
+                                       $this->part_nice[$i]['d_instructions'] 
= 'skip';
+                                       // is this necessary here?
+                                       $this->part_nice[$i]['d_processed_as'] 
= 'empty_part';
+                                       // LOOP CONTROL
+                                       $done_processing = False;
+                               }
                                elseif ($this->part_nice[$i]['m_description'] 
== 'presentable/image')
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is presentable image <br>'); }
                                        
                                        $title_text = 
$this->xi['lang_section'].': '.$this->part_nice[$i]['m_part_num_mime'];
***************
*** 1580,1589 ****
                                elseif ($this->part_nice[$i]['m_description'] 
== 'attachment')
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: part is attachment <br>'; }
                                        
                                        // if this is a 1 part message with 
only this attachment, WARN
                                        if (count($this->part_nice) == 1)
                                        {
!                                               if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: * WARN message has only 1 part and it is 
an attachment <br>'; }
                                                
//$this->part_nice[$i]['d_threat_level'] .= 'warn_attachment_only_mail ';
                                                
$this->part_nice[$i]['d_threat_level'] .= 
$this->xi['lang_warn_attachment_only_mail'].' ';
--- 1756,1765 ----
                                elseif ($this->part_nice[$i]['m_description'] 
== 'attachment')
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is attachment <br>'); }
                                        
                                        // if this is a 1 part message with 
only this attachment, WARN
                                        if (count($this->part_nice) == 1)
                                        {
!                                               if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: * 
WARN message has only 1 part and it is an attachment <br>'); }
                                                
//$this->part_nice[$i]['d_threat_level'] .= 'warn_attachment_only_mail ';
                                                
$this->part_nice[$i]['d_threat_level'] .= 
$this->xi['lang_warn_attachment_only_mail'].' ';
***************
*** 1593,1597 ****
                                        if 
(preg_match('/^.*\.(bat|inf|pif|com|exe|reg|vbs|scr)$/', 
$this->part_nice[$i]['ex_part_name']))
                                        {
!                                               if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: * WARN attachment has NEFARIOUS filename 
extension, ex_part_name: '.$this->part_nice[$i]['ex_part_name'].'<br>'; }
                                                
//$this->part_nice[$i]['d_threat_level'] .= 'warn_attachment_name_DANGEROUS ';
                                                
$this->part_nice[$i]['d_threat_level'] .= 
$this->xi['lang_warn_attachment_name_dangerous'].' ';
--- 1769,1773 ----
                                        if 
(preg_match('/^.*\.(bat|inf|pif|com|exe|reg|vbs|scr)$/', 
$this->part_nice[$i]['ex_part_name']))
                                        {
!                                               if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: * 
WARN attachment has NEFARIOUS filename extension, ex_part_name: 
'.$this->part_nice[$i]['ex_part_name'].'<br>'); }
                                                
//$this->part_nice[$i]['d_threat_level'] .= 'warn_attachment_name_DANGEROUS ';
                                                
$this->part_nice[$i]['d_threat_level'] .= 
$this->xi['lang_warn_attachment_name_dangerous'].' ';
***************
*** 1623,1627 ****
                                && ($this->part_nice[$i]['m_description'] != 
'packagelist'))
                                {
!                                       if ($this->debug > 2) { echo 
'email.bomessage.message_data: d_loop: part is ERROR - unknown <br>'; }
                                        
                                        // if we get here then we've got some 
kind of error, all things we know about are handle above
--- 1799,1803 ----
                                && ($this->part_nice[$i]['m_description'] != 
'packagelist'))
                                {
!                                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'): d_loop: part 
is ERROR - unknown <br>'); }
                                        
                                        // if we get here then we've got some 
kind of error, all things we know about are handle above
***************
*** 1688,1692 ****
                        // DO NOT end request yet because the "echo_out" part 
(if exists) will require this connection
                        //$GLOBALS['phpgw']->msg->end_request();
!                       if ($this->debug > 2) { echo 
'email.bomessage.message_data:  $this->part_nice (With Instructions) dump: 
<pre>'; print_r($this->part_nice); echo '</pre>'; }
                        
                }
--- 1864,1868 ----
                        // DO NOT end request yet because the "echo_out" part 
(if exists) will require this connection
                        //$GLOBALS['phpgw']->msg->end_request();
!                       if ($this->debug > 2) { 
$this->msg->dbug->out('email.bomessage.message_data('.__LINE__.'):  
$this->part_nice (With Instructions) DUMP:', $this->part_nice); }
                        
                }

Index: class.bopreferences.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.bopreferences.inc.php,v
retrieving revision 1.23.2.2
retrieving revision 1.23.2.3
diff -C2 -r1.23.2.2 -r1.23.2.3
*** class.bopreferences.inc.php 6 Apr 2003 10:09:11 -0000       1.23.2.2
--- class.bopreferences.inc.php 8 Sep 2003 08:33:31 -0000       1.23.2.3
***************
*** 33,36 ****
--- 33,38 ----
                );
                var $msg_bootstrap;
+               // convience reference to the msg object
+               var $msg='##NOTHING##';
                var $not_set='-1';
                var $std_prefs=array();
***************
*** 51,54 ****
--- 53,57 ----
[...1693 lines suppressed...]
                function obtain_ex_acctnum()
                {
!                       if ($this->debug_set_prefs > 0) { 
$this->msg->dbug->out('email: bopreferences.obtain_ex_acctnum: ENTERING<br>'); }
!                       if ($this->debug_set_prefs > 2) { 
$this->msg->dbug->out('email: bopreferences.obtain_ex_acctnum: 
$GLOBALS[HTTP_POST_VARS] DUMP:', $GLOBALS['phpgw']->msg->ref_POST); }
!                       if ($this->debug_set_prefs > 2) { 
$this->msg->dbug->out('email: bopreferences.obtain_ex_acctnum: 
$GLOBALS[HTTP_GET_VARS] DUMP:', $GLOBALS['phpgw']->msg->ref_GET); }
                        // get fromPOST or GET
                        $prelim_acctnum = '##NOTHING##';
***************
*** 1982,1986 ****
                                $final_acctnum = $prelim_acctnum;
                        }
!                       if ($this->debug_set_prefs > 0) { echo 
'email.bopreferences.obtain_ex_acctnum: LEAVING, returning $final_acctnum: 
['.serialize($final_acctnum).'] <br>'; }
                        return $final_acctnum;
                }
--- 1813,1817 ----
                                $final_acctnum = $prelim_acctnum;
                        }
!                       if ($this->debug_set_prefs > 0) { 
$this->msg->dbug->out('email.bopreferences.obtain_ex_acctnum: LEAVING, 
returning $final_acctnum: ['.serialize($final_acctnum).'] <br>'); }
                        return $final_acctnum;
                }

Index: class.bosend.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.bosend.inc.php,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -C2 -r1.11 -r1.11.2.1
*** class.bosend.inc.php        14 Mar 2003 04:00:21 -0000      1.11
--- class.bosend.inc.php        8 Sep 2003 08:33:32 -0000       1.11.2.1
***************
*** 40,43 ****
--- 40,44 ----
                var $debug_struct = 0;
                //var $debug_struct = 3;
+               var $company_disclaimer = '';
                
                function bosend()
***************
*** 45,48 ****
--- 46,53 ----
                        if ($this->debug_constructor > 0) { echo 'email.bosend 
*constructor*: ENTERING<br>'; }
                        
+                       // May 9, 2003 Ryan Bonham adds company disclaimer code
+                       // This Disclaimer will be added to any out going mail
+                       //var $company_disclaimer = "\r\n\r\n-- \r\n This 
message was sent using Forester GroupWare. Visit the Forest City Regional 
website at http://www.forestcityschool.org.\r\nThis message does not 
necessarily reflect the views of the Forest City Regional School District, nor 
has it been approved or sanctioned by it. \r\n";
+                       
                        $this->msg_bootstrap = 
CreateObject("email.msg_bootstrap");
                        
$this->msg_bootstrap->ensure_mail_msg_exists('email.bosend.constructor', 
$this->debug_send);
***************
*** 522,525 ****
--- 527,534 ----
                                $body = $body ."\r\n"."\r\n".'-- '."\r\n" 
.$user_sig ."\r\n";
                        }
+                       if ($this->company_disclaimer)
+                       {
+                               $body = $body .$this->company_disclaimer;
+                       }
                        // Step One Addition
                        // ---- Request Delivery Notification in Headers ----
***************
*** 911,915 ****
                                                        {
                                                                if 
($this->debug_struct > 2) { echo '$next_pos ['.$next_pos.'] :: string 
['.$datachunk.'] :: b64 version ['.base64_encode($datachunk).']<br>'."\r\n"; } 
!                                                               
$this->mail_out['body'][$body_part_num]['mime_body'][$next_pos] = 
base64_encode($datachunk);
                                                                $next_pos++;
                                                        }
--- 920,924 ----
                                                        {
                                                                if 
($this->debug_struct > 2) { echo '$next_pos ['.$next_pos.'] :: string 
['.$datachunk.'] :: b64 version ['.base64_encode($datachunk).']<br>'."\r\n"; } 
!                                                               
$this->mail_out['body'][$body_part_num]['mime_body'][$next_pos] = 
base64_encode($datachunk);
                                                                $next_pos++;
                                                        }

Index: class.html_widgets.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.html_widgets.inc.php,v
retrieving revision 1.3.2.2
retrieving revision 1.3.2.3
diff -C2 -r1.3.2.2 -r1.3.2.3
*** class.html_widgets.inc.php  6 Apr 2003 10:09:11 -0000       1.3.2.2
--- class.html_widgets.inc.php  8 Sep 2003 08:33:32 -0000       1.3.2.3
***************
*** 1,1760 ****
! <?php
!       
/**************************************************************************\
!       * AngleMail - E-Mail Module for phpGroupWare                            
        *
!       * http://www.anglemail.org                                              
                        *
!       * http://www.phpgroupware.org                                           
                        * 
!       */
!       
/**************************************************************************\
!       * AngleMail - HTML Widgets                                              
                        *
!       * This file written by "Angles" Angelo Puglisi <address@hidden> *
!       * Email related HTML Widgets and Utility Functions                      
                *
[...3648 lines suppressed...]
!                       <tr bgcolor="'.$row_on.'" class="row_on">
!                               <td width="100%" align="left">'."\r\n"
!                                       //.'<small style="font-size: 10pt;">'
!                                       .'<small style="font-size: xx-small;">'
!                                       .'<font color="brown">GeekBar:</font> '
!                                       .'Server Type: ['.$this_server_type.'] 
-- '
!                                       .'IMAP library: ['.$library_usage.'] -- 
'
!                                       .'AngleMail Table: 
['.$anglemail_table_exists.'] -- '
!                                       .'compression: ['.$compression.'] -- '
!                                       .'spelling: ['.$spell_available.'] -- '
!                                       .'using XSLT: ['.$using_xslt.'] -- '
!                                       .'did connect: ['.$did_connect.'] '
!                                       .'</small>'
!                               ."\r\n"
!                       .'      </td>
!                       </table>';
!                       return $geek_bar;
!               }
!       }
! ?>

Index: class.mail_dcom.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom.inc.php,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -C2 -r1.10 -r1.10.2.1
*** class.mail_dcom.inc.php     14 Mar 2003 04:00:42 -0000      1.10
--- class.mail_dcom.inc.php     8 Sep 2003 08:33:32 -0000       1.10.2.1
***************
*** 47,53 ****
--- 47,57 ----
        {
                $mail_server_type = $p1;
+               if ($debug_dcom) { echo 'DCOM DEBUG: found class feed arg $p1 
['.serialize($p1).']<br>'; }
+               //{ echo 'DCOM DEBUG: found class feed arg $p1 
['.serialize($p1).']<br>'; }
        }
        else
        {
+               if ($debug_dcom) { echo 'DCOM DEBUG: did NOT find class feed 
arg $p1 ['.serialize($p1).']<br>'; }
+               //{ echo 'DCOM DEBUG: did NOT find class feed arg $p1 
['.serialize($p1).']<br>'; }
                $mail_server_type = 
$GLOBALS['phpgw_info']['user']['preferences']['email']['mail_server_type'];
        }

Index: class.mail_dcom_base.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom_base.inc.php,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -C2 -r1.9 -r1.9.2.1
*** class.mail_dcom_base.inc.php        14 Mar 2003 04:00:44 -0000      1.9
--- class.mail_dcom_base.inc.php        8 Sep 2003 08:33:32 -0000       1.9.2.1
***************
*** 141,145 ****
                                $name['folder_before'] = 
substr($name['folder_before'], 1);
                                // translate
!                               $name['folder_after'] = 
imap_utf7_encode($name['folder_before']);
                                // replace old folder name with new folder name
                                $name['translated'] = 
str_replace($name['folder_before'], $name['folder_after'], $data_str);
--- 141,154 ----
                                $name['folder_before'] = 
substr($name['folder_before'], 1);
                                // translate
!                               if (function_exists('recode_string') == False)
!                               {
!                                       $name['folder_after'] = 
imap_utf7_encode($name['folder_before']);
!                               }
!                               else
!                               {
!                                       // Modif UTF-8 by Sam Przyswa so now 
compatible with MS-Outlook and Netscape accentued folder name
!                                       $name_tmp = 
recode_string("ISO-8859-1..UTF-7", $name['folder_before']);
!                                       $name['folder_after'] = 
str_replace("+", "&", $name_tmp);
!                               }
                                // replace old folder name with new folder name
                                $name['translated'] = 
str_replace($name['folder_before'], $name['folder_after'], $data_str);
***************
*** 254,258 ****
                                $name['folder_before'] = 
substr($name['folder_before'], 1);
                                // translate
!                               $name['folder_after'] = 
imap_utf7_decode($name['folder_before']);
                                // "imap_utf7_decode" returns False if no 
translation occured (supposed to, can return identical string too)
                                if ( ($name['folder_after'] == False)
--- 263,276 ----
                                $name['folder_before'] = 
substr($name['folder_before'], 1);
                                // translate
!                               if (function_exists('recode_string') == False)
!                               {
!                                       $name['folder_after'] = 
imap_utf7_decode($name['folder_before']);
!                               }
!                               else
!                               {
!                                       // Modif UTF-8 by Sam Przyswa so now 
compatible with MS-Outlook and Netscape accentued folder name
!                                       $name_tmp = str_replace("&", "+", 
$name['folder_before']);
!                                       $name['folder_after'] = 
recode_string("UTF-7..ISO-8859-1", $name_tmp);
!                               }
                                // "imap_utf7_decode" returns False if no 
translation occured (supposed to, can return identical string too)
                                if ( ($name['folder_after'] == False)
***************
*** 294,297 ****
--- 312,337 ----
                }
  
+               /*!
+               @function folder_list_did_change
+               @abstract if folder is created, deleted, or renamed this this 
function handles cleanup of stale data in main msg object. 
+               @author Angles
+               */
+               function folder_list_did_change()
+               {
+                       // NOTE THIS FLAG "folder_list_changed" IS NOW 
OBSOLETED SINCE THIS 
+                       // CALLBACK FUNCTION IS PROVEN TO WORK
+                       $this->folder_list_changed = True;
+                       if (is_object($GLOBALS['phpgw']->msg))
+                       {
+                               // call that classes "callback" function 
designed to handle cleaning stale folder_list there
+                               $sucess = 
$GLOBALS['phpgw']->msg->folder_list_change_callback();
+                               // if it was handled correctly, then reset the 
"folder_list_changed" because we did our job
+                               if ($sucess)
+                               {
+                                       $this->folder_list_changed = False;
+                               }
+                       }
+               }
+               
                /*!
                @function get_flag

Index: class.mail_dcom_base_sock.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom_base_sock.inc.php,v
retrieving revision 1.24
retrieving revision 1.24.2.1
diff -C2 -r1.24 -r1.24.2.1
*** class.mail_dcom_base_sock.inc.php   14 Mar 2003 04:00:48 -0000      1.24
--- class.mail_dcom_base_sock.inc.php   8 Sep 2003 08:33:32 -0000       1.24.2.1
***************
*** 319,322 ****
--- 319,324 ----
        class mail_dcom_base extends network
        {
+               // OBSOLETED "folder_list_changed" by the newer function 
"folder_list_did_change"
+               var $folder_list_changed=False;
                // Cached Data
                // raw message data from the server, some raw data, some 
exploded into a string list
***************
*** 596,599 ****
--- 598,624 ----
                {
                        return str_replace("\r\n", 'CRLF', $data);
+               }
+               
+               /*!
+               @function folder_list_did_change
+               @abstract if folder is created, deleted, or renamed this this 
function handles cleanup of stale data in main msg object. 
+               @discussion THIS IS A COPY OF THE FUNCTION IN THE NON-SOCK 
CLASS, THEY SHOULD BE THE SAME
+               @author Angles
+               */
+               function folder_list_did_change()
+               {
+                       // NOTE THIS FLAG "folder_list_changed" IS NOW 
OBSOLETED SINCE THIS 
+                       // CALLBACK FUNCTION IS PROVEN TO WORK
+                       $this->folder_list_changed = True;
+                       if (is_object($GLOBALS['phpgw']->msg))
+                       {
+                               // call that classes "callback" function 
designed to handle cleaning stale folder_list there
+                               $sucess = 
$GLOBALS['phpgw']->msg->folder_list_change_callback();
+                               // if it was handled correctly, then reset the 
"folder_list_changed" because we did our job
+                               if ($sucess)
+                               {
+                                       $this->folder_list_changed = False;
+                               }
+                       }
                }
                

Index: class.mail_dcom_imap.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom_imap.inc.php,v
retrieving revision 1.21
retrieving revision 1.21.2.1
diff -C2 -r1.21 -r1.21.2.1
*** class.mail_dcom_imap.inc.php        14 Mar 2003 04:00:51 -0000      1.21
--- class.mail_dcom_imap.inc.php        8 Sep 2003 08:33:32 -0000       1.21.2.1
***************
*** 45,49 ****
                {
                        $mailbox = $this->utf7_encode($mailbox);
!                       $this->folder_list_changed = True;
                        return imap_createmailbox($stream,$mailbox);
                }
--- 45,49 ----
                {
                        $mailbox = $this->utf7_encode($mailbox);
!                       $this->folder_list_did_change();
                        return imap_createmailbox($stream,$mailbox);
                }
***************
*** 51,55 ****
                function deletemailbox($stream,$mailbox)
                {
!                       $this->folder_list_changed = True;
                        $mailbox = $this->utf7_encode($mailbox);
                        return imap_deletemailbox($stream,$mailbox);
--- 51,55 ----
                function deletemailbox($stream,$mailbox)
                {
!                       $this->folder_list_did_change();
                        $mailbox = $this->utf7_encode($mailbox);
                        return imap_deletemailbox($stream,$mailbox);
***************
*** 58,62 ****
                function renamemailbox($stream,$mailbox_old,$mailbox_new)
                {
!                       $this->folder_list_changed = True;
                        $mailbox_old = $this->utf7_encode($mailbox_old);
                        $mailbox_new = $this->utf7_encode($mailbox_new);
--- 58,62 ----
                function renamemailbox($stream,$mailbox_old,$mailbox_new)
                {
!                       $this->folder_list_did_change();
                        $mailbox_old = $this->utf7_encode($mailbox_old);
                        $mailbox_new = $this->utf7_encode($mailbox_new);

Index: class.mail_dcom_imap_sock.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom_imap_sock.inc.php,v
retrieving revision 1.15
retrieving revision 1.15.2.1
diff -C2 -r1.15 -r1.15.2.1
*** class.mail_dcom_imap_sock.inc.php   14 Mar 2003 04:00:52 -0000      1.15
--- class.mail_dcom_imap_sock.inc.php   8 Sep 2003 08:33:32 -0000       1.15.2.1
***************
*** 275,278 ****
--- 275,280 ----
                        // not yet implemented
                        if ($this->debug_dcom >= 1) { echo 'imap: call to 
unimplemented socket function: createmailbox<br>'; }
+                       // eventually this will use this function to call for 
expiration of stale cached data, if any
+                       //$this->folder_list_did_change();
                        return true;
                }
***************
*** 285,290 ****
--- 287,307 ----
                        // not yet implemented
                        if ($this->debug_dcom >= 1) { echo 'imap: call to 
unimplemented socket function: deletemailbox<br>'; }
+                       // eventually this will use this function to call for 
expiration of stale cached data, if any
+                       //$this->folder_list_did_change();
                        return true;
                }
+               /*!
+               @function renamemailbox
+               @abstract not yet implemented in IMAP sockets module
+               */
+               function renamemailbox($stream,$mailbox_old,$mailbox_new)
+               {
+                       // not yet implemented
+                       if ($this->debug_dcom >= 1) { echo 'imap: call to 
unimplemented socket function: renamemailbox<br>'; }
+                       // eventually this will use this function to call for 
expiration of stale cached data, if any
+                       //$this->folder_list_did_change();
+                       return true;
+               }
+               
                /*!
                @function expunge

Index: class.mail_dcom_nntp.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom_nntp.inc.php,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -C2 -r1.4 -r1.4.2.1

Index: class.mail_dcom_pop3.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_dcom_pop3.inc.php,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -C2 -r1.11 -r1.11.2.1

Index: class.mail_filters.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_filters.inc.php,v
retrieving revision 1.7
retrieving revision 1.7.2.1
diff -C2 -r1.7 -r1.7.2.1

Index: class.mail_msg.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_msg.inc.php,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -C2 -r1.4 -r1.4.2.1

Index: class.mail_msg_base.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_msg_base.inc.php,v
retrieving revision 1.78.2.3
retrieving revision 1.78.2.4
diff -C2 -r1.78.2.3 -r1.78.2.4
*** class.mail_msg_base.inc.php 6 Apr 2003 10:09:11 -0000       1.78.2.3
--- class.mail_msg_base.inc.php 8 Sep 2003 08:33:32 -0000       1.78.2.4
***************
*** 235,238 ****
--- 235,241 ----
                var $acctnum = 0;
                var $fallback_default_acctnum = 0;
+               
+               // this object is 3 files, each an object "extending" the 
other, this prevents 3 constructor calls
+               var $been_constructed = False;
                // data storage for caching functions moved to SO object
                var $so = '##NOTHING##';
***************
*** 265,270 ****
[...1922 lines suppressed...]
                        }
                        else
                        {
                                $alt_tag = ' alt="['.$alt_default_txt.']"';
+                               $title_tag = '';
                        }
                        if ($height != '')
***************
*** 5721,5725 ****
                                $border_tag = '';
                        }
!                       $image_html = '<img src="'.$location.'"' .$height_tag 
.$width_tag .$border_tag .$alt_tag .'>';
                        return $image_html;
                }
--- 6097,6101 ----
                                $border_tag = '';
                        }
!                       $image_html = '<img src="'.$location.'"' .$height_tag 
.$width_tag .$border_tag .$title_tag .$alt_tag .'>';
                        return $image_html;
                }

Index: class.mail_msg_display.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_msg_display.inc.php,v
retrieving revision 1.40.2.1
retrieving revision 1.40.2.2
diff -C2 -r1.40.2.1 -r1.40.2.2
*** class.mail_msg_display.inc.php      6 Apr 2003 00:00:44 -0000       1.40.2.1
--- class.mail_msg_display.inc.php      8 Sep 2003 08:33:34 -0000       1.40.2.2
***************
*** 31,35 ****
  class mail_msg extends mail_msg_wrappers
  {
! 
        /*!
        @function get_common_langs
--- 31,50 ----
  class mail_msg extends mail_msg_wrappers
  {
!       
!       /*!
!       @function mail_msg
!       @abstract Constructor 
!       @discussion normally this would call $this->initialize_mail_msg which 
is a function in the base class, 
!       HOWEVER I had to stop the auto constructor runthrough because 
preferences class API keeps making 
!       copies of this object thus calling the constructor unnecessarily for 
what the pref API needs, which is 
!       only a few functions in this object, SO NOW this class has NO real auto 
called constructor, 
!       instead the initialization function needs to be explicitly called, 
which it is in the bootstrap class. 
!       */
!       function mail_msg()
!       {
!               //$this->initialize_mail_msg();
!               return;
!       }
!       
        /*!
        @function get_common_langs
***************
*** 119,124 ****
                }
                */
!               if (($query_fldball == $this->nothing)
!               || ($match_fld_name == $this->nothing))
                {
                        if ($this->debug_args_special_handlers > 0) { 
$this->dbug->out('mail_msg(_display)('.__LINE__.'): common_folder_is: LEAVING 
with Error, not enough param data supplied, so returning False<br>'); } 
--- 134,139 ----
                }
                */
!               if (((string)$query_fldball == $this->nothing)
!               || ((string)$match_fld_name == $this->nothing))
                {
                        if ($this->debug_args_special_handlers > 0) { 
$this->dbug->out('mail_msg(_display)('.__LINE__.'): common_folder_is: LEAVING 
with Error, not enough param data supplied, so returning False<br>'); } 
***************
*** 137,140 ****
--- 152,157 ----
                        return False;
                }
+               if ($this->debug_args_special_handlers > 1) { 
$this->dbug->out('mail_msg(_display)('.__LINE__.'): common_folder_is: 
$query_fldball DUMP:', $query_fldball); } 
+               
                // First, handle the easiest test - INBOX
                if (($match_fld_name == 'INBOX')
***************
*** 144,147 ****
--- 161,168 ----
                        return True;
                }
+               else
+               {
+                       if ($this->debug_args_special_handlers > 0) { 
$this->dbug->out('mail_msg(_display)('.__LINE__.'): common_folder_is: 
match_fld_name and $query_fldball["folder"], either one nor both were INBOX, so 
did not match the test, so continue with more checks...<br>'); } 
+               }
                // continue ...
                // does the mailserver have folders, if not then there is NO 
trash folder no matter what
***************
*** 720,726 ****
        @function prev_next_navigation
        @abstract ?
        @author Angles
        */
!       function prev_next_navigation($old_method_totalmessages=0)
        {
                //$debug_nav = True;
--- 741,748 ----
        @function prev_next_navigation
        @abstract ?
+       @discussion Adding ex_acctnum and ex_folder params AS AN EXPERIMENT. 
        @author Angles
        */
!       function prev_next_navigation($old_method_totalmessages=0, 
$ex_acctnum='', $ex_folder='')
        {
                //$debug_nav = True;
***************
*** 729,749 ****
                if ($debug_nav > 0) { $this->dbug->out('mail_msg_display: 
prev_next_navigation('.__LINE__.'): ENTERING, (try debug_index_page_display = 3 
to see data dumps)<br>'); }
                
-               // this gets a verified non stale msgball_list and puts it in 
cache, or uses the one in cache if it passes verified and not stale test
-               $this->get_msgball_list();
                // but we do not want a COPY of this data it can be thousands 
of items, so we try to get a reference
                $nav_data = array();
                $nav_data['msgball_list'] = array();
!               $ex_acctnum = $this->get_acctnum();
                if (($this->session_cache_enabled == True)
!               && 
(isset($this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'])))
!               //&& 
(isset($GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'])))
                {
!                       $nav_data['msgball_list'] =& 
$this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'];
!                       //$nav_data['msgball_list'] =& 
$GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'];
                }
                else
                {
                        // ok we could not obtain a reference for some reason, 
get a COPY then
!                       $nav_data['msgball_list'] = $this->get_msgball_list();
                }
                //$nav_data['msgnum_idx'] = 
$this->array_search_ex($this->get_arg_value('["msgball"]["msgnum"]'), 
$nav_data['msgball_list']);
--- 751,783 ----
                if ($debug_nav > 0) { $this->dbug->out('mail_msg_display: 
prev_next_navigation('.__LINE__.'): ENTERING, (try debug_index_page_display = 3 
to see data dumps)<br>'); }
                
                // but we do not want a COPY of this data it can be thousands 
of items, so we try to get a reference
                $nav_data = array();
                $nav_data['msgball_list'] = array();
!               // TESTING THIS AS AN OPTIONAL PARAM HERE
!               // we used to obtain it here no matter what, now it may be 
passed as a param
!               if ((!isset($ex_acctnum))
!               || ((string)$ex_acctnum == ''))
!               {
!                       $ex_acctnum = $this->get_acctnum();
!               }
!               // TESTING THIS AS AN OPTIONAL PARAM HERE
!               if ((!isset($ex_folder))
!               || ((string)$ex_folder == ''))
!               {
!                       $ex_folder = 
$this->prep_folder_out($this->get_arg_value('folder', $acctnum));
!               }
!               // TESTING this gets a verified non stale msgball_list and puts 
it in cache, or uses the one in cache if it passes verified and not stale test
!               //$this->get_msgball_list($ex_acctnum, $ex_folder);
!               // remember the actual msgball_list is a sub element of an 
array that includes validity info
                if (($this->session_cache_enabled == True)
!               && 
(isset($this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list'][$ex_folder]['msgball_list'])))
!               //&& 
(isset($GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'][$ex_folder])))
                {
!                       $nav_data['msgball_list'] =& 
$this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list'][$ex_folder]['msgball_list'];
                }
                else
                {
                        // ok we could not obtain a reference for some reason, 
get a COPY then
!                       $nav_data['msgball_list'] = 
$this->get_msgball_list($ex_acctnum, $ex_folder);
                }
                //$nav_data['msgnum_idx'] = 
$this->array_search_ex($this->get_arg_value('["msgball"]["msgnum"]'), 
$nav_data['msgball_list']);
***************
*** 829,837 ****
        
        /*!
!       @function all_ex_accounts_listbox
        @abstract Creates a listbox with all email accounts.
        @discussion  Used in the switch account combobox, and the filers page 
too, I think. The listbox 
        is sort of an HTML widget. For the raw data, see the function, it is 
easy to get the data without the 
!       HTML if you want that. 
        @author Angles
        */
--- 863,871 ----
        
        /*!
!       @function all_ex_accounts_listbox DEPRECIATED
        @abstract Creates a listbox with all email accounts.
        @discussion  Used in the switch account combobox, and the filers page 
too, I think. The listbox 
        is sort of an HTML widget. For the raw data, see the function, it is 
easy to get the data without the 
!       HTML if you want that. DEPRECIATED now should use function in widgets 
class. 
        @author Angles
        */
***************
*** 1042,1046 ****
        /*!
        @function get_who_wrote
!       @abstract 
        @author Angles and code from previous maintainer
        */
--- 1076,1080 ----
        /*!
        @function get_who_wrote
!       @abstract PROBABLY NO LONGER USED
        @author Angles and code from previous maintainer
        */
***************
*** 1071,1075 ****
                        // non-us-ascii chars in headers MUST be specially 
encoded, so decode them (if any) now
                        $personal = $this->decode_header_string($personal);
!                       //$personal = $this->qprint_rfc_header($personal);
                        $personal = $personal .' 
('.$from->mailbox.'@'.$from->host.')';
                }
--- 1105,1111 ----
                        // non-us-ascii chars in headers MUST be specially 
encoded, so decode them (if any) now
                        $personal = $this->decode_header_string($personal);
!                       ////$personal = $this->qprint_rfc_header($personal);
!                       // escape certain undesirable chars before HTML display
!                       $personal =  $this->htmlspecialchars_encode($personal);
                        $personal = $personal .' 
('.$from->mailbox.'@'.$from->host.')';
                }
***************
*** 1131,1135 ****
        /*!
        @function get_flat_pgw_struct
!       @abstract Message Structure Analysis, make multilevel php message 
struct into a flat array
        @param $struct (php structure from ?) 
        @discussion This is the meat of the home grown MIME analysis this app 
uses. 
--- 1167,1171 ----
        /*!
        @function get_flat_pgw_struct
!       @abstract Message Structure Analysis, make multilevel php message 
struct into a flat array aka "part_nice"
        @param $struct (php structure from ?) 
        @discussion This is the meat of the home grown MIME analysis this app 
uses. 
***************
*** 1138,1141 ****
--- 1174,1211 ----
        function get_flat_pgw_struct($struct)
        {
+               if ($this->debug_message_display > 0) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct:  ENTERING <br>'); }
+               //if ($this->debug_message_display > 1) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct:  param $msgball 
['.serialize($msgball).']<br>'); }
+               if ($this->debug_message_display > 2) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct:  param $struct DUMP:', 
$struct); }
+               
+               /*
+               // NO NEED TO CACHE THIS DATA, NO CONTACT WITH MAILSERVER IS 
NEEDED FOR THIS DATA
+               // try to get it from cache, this function handles checking for 
session_cache_extreme True or False
+               if ($this->session_cache_extreme == True)
+               {
+                       if ((isset($msgball['folder']))
+                       && (trim($msgball['folder']) != '')
+                       && (isset($msgball['acctnum']))
+                       && ((string)($msgball['acctnum']) != ''))
+                       {
+                               $ex_folder = $msgball['folder'];
+                               $ex_msgnum = $msgball['msgnum'];
+                       }
+                       else
+                       {
+                               $ex_folder = $this->prep_folder_out();
+                               $ex_msgnum = $this->get_acctnum();
+                       }
+                       // the cached data is returned as a ready to use array 
if it exists, or False if not existing
+                       $cache_flat_pgw_struct = 
$this->read_session_cache_item('flat_pgw_struct', $acctnum, $ex_folder, 
$ex_msgnum);
+                       //echo '** flat_pgw_struct: $specific_key 
['.$specific_key.'] :: $cache_flat_pgw_struct DUMP<pre>'; 
print_r($cache_phpgw_header); echo '</pre>';
+                       if ($cache_flat_pgw_struct)
+                       {
+                               if ($this->debug_message_display > 0) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct:  LEAVING returning 
cached data<br>'); }
+                               return $cache_flat_pgw_struct;
+                       }
+               }
+               if ($this->debug_message_display > 1) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct: beginning ... no 
cached data available or caching is not enabled<br>'); }
+               */
+               
                if (isset($this->not_set))
                {
***************
*** 1487,1491 ****
                        a) if no subpart(s) then we have either "presentable" 
or "attachment"
                        b) if subpart(s) and a boundary param, then we have a 
"packagelist" (HeadersOnly)
!                       c) else we have a container
                        */
                        if ((int)$part_nice[$i]['ex_num_subparts'] < 1)
--- 1557,1562 ----
                        a) if no subpart(s) then we have either "presentable" 
or "attachment"
                        b) if subpart(s) and a boundary param, then we have a 
"packagelist" (HeadersOnly)
!                       c) else we have a container.
!                       Presentable can be qualified with "image".
                        */
                        if ((int)$part_nice[$i]['ex_num_subparts'] < 1)
***************
*** 1513,1516 ****
--- 1584,1588 ----
                                {
                                        // not an attachment, nor an attachment 
that's an image for inline display
+                                       // so it is presentable
                                        $part_nice[$i]['m_description'] = 
'presentable';
                                }
***************
*** 1533,1537 ****
                        $part_nice[$i]['m_keywords'] = '';
                        if ((stristr($part_nice[$i]['subtype'], 'plain'))
!                       || (stristr($part_nice[$i]['subtype'], 'html')))
                        {
                                $part_nice[$i]['m_keywords'] .= 
$part_nice[$i]['subtype'] .' ';
--- 1605,1611 ----
                        $part_nice[$i]['m_keywords'] = '';
                        if ((stristr($part_nice[$i]['subtype'], 'plain'))
!                       || (stristr($part_nice[$i]['subtype'], 'html'))
!                       // enriched = part of APPLE MAIL multipart / 
alternative subpart where the html part usually is
!                       || (stristr($part_nice[$i]['subtype'], 'enriched')))
                        {
                                $part_nice[$i]['m_keywords'] .= 
$part_nice[$i]['subtype'] .' ';
***************
*** 1543,1546 ****
--- 1617,1709 ----
                        }
                        
+                       // keyword "alt_hide"
+                       // Also a keywords we use can be "alt_hide" which means 
that the 
+                       // part is part of an alternative pair of parts and 
this one can be hidden because 
+                       // it is the simpler text part, while we desire to show 
the html part as the better-to-show 
+                       // part, and showing 2 of the same, i.e. both of the 
alternatives, is undesirable.
+                       // so is a presentable part of an alternative pair of 
parts
+                       if ($part_nice[$i]['m_description'] == 'presentable')
+                       {
+                               // TEST THIS: 
+                               // (a) is the part text/plain
+                               // (b) if so, is that parent marked as 
multipart/related
+                               //// (c) is the very next part HTML, because 
apple uses "enhanced" which looks b0rked, 
+                               //// so that case needs the simpler part to 
also be shown.
+                               ////UPDATE this (c) thing will fail if the html 
is in a related nest, so skip this check
+                               // and CHECK 2 TIMES: note that we test 2 times
+                               // (1) the first is where the mail has only 2 
parts 
+                               // and AngleMail flatening code has left the 
top level headers out of the 
+                               // flat array, as it does sometimes.
+                               // (2) The second is for anything deep enough 
so that the parent part IS in the 
+                               // flat array, which is more typical.
+                               $presentable_parent_idx = 
$part_nice[$i]['ex_parent_flat_idx'];
+                               if (
+                                  ($part_nice[$i]['type'] == 'text')
+                               && ($part_nice[$i]['subtype'] == 'plain')
+                               && 
($part_nice[$presentable_parent_idx]['ex_parent_flat_idx'] == $not_set)
+                               && (stristr($struct->type, 'multipart'))
+                               // SHOULD BE THIS   && ((string)$struct->type 
== '1')  // "1" = "multipart"
+                               && (stristr($struct->subtype, 'alternative'))
+                               //&& ($part_nice[$i+1]['type'] == 'text')
+                               //&& ($part_nice[$i+1]['subtype'] == 'html')
+                               )
+                               {
+                                       // SET THIS FLAG: then, in presentation 
loop, we can decide not to show it
+                                       $part_nice[$i]['m_keywords'] .= 
'alt_hide' .' ';
+                               }
+                               // same as above but we do not need to look all 
the way back to the top level headers
+                               // ie because the parent part is included in 
the flat parts array
+                               elseif (
+                                  ($part_nice[$i]['ex_level_debth'] > 1)
+                               && ($part_nice[$i]['type'] == 'text')
+                               && ($part_nice[$i]['subtype'] == 'plain')
+                               && ($part_nice[$presentable_parent_idx]['type'] 
== 'multipart')
+                               && 
($part_nice[$presentable_parent_idx]['subtype'] == 'alternative')
+                               //&& ($part_nice[$i+1]['type'] == 'text')
+                               //&& ($part_nice[$i+1]['subtype'] == 'html')
+                               )
+                               {
+                                       // SET THIS FLAG: then, in presentation 
loop, we can decide not to show it
+                                       $part_nice[$i]['m_keywords'] .= 
'alt_hide' .' ';
+                               }
+                       }
+                       // more keyword "alt_hide"
+                       // ALSO use this same kind of test to hide images that 
get swapped into the main related part, 
+                       // so we do  not show these images on their own
+                       if ($part_nice[$i]['m_description'] == 
'presentable/image')
+                       {
+                               //echo '('.__LINE__.') presentable/image , 
$struct->type ['.$struct->type.'] , $struct->subtype 
['.$struct->subtype.']<br>';
+                               // TEST THIS: 
+                               // * IS the parent marked as multipart/related
+                               // and CHECK 2 TIMES: note that we test 2 times
+                               // (1) the first is where the mail has only 2 
parts 
+                               // and AngleMail flatening code has left the 
top level headers out of the 
+                               // flat array, as it does sometimes.
+                               // (2) The second is for anything deep enough 
so that the parent part IS in the 
+                               // flat array, which is more typical.
+                               $presentable_parent_idx = 
$part_nice[$i]['ex_parent_flat_idx'];
+                               if (
+                                  //ok I am an image, is my parent the top 
level headers
+                                  ($part_nice[$i]['ex_parent_flat_idx'] == 
$not_set)
+                               && ((string)$struct->type == '1')  // "1" = 
"multipart"
+                               && (stristr($struct->subtype, 'related'))
+                               )
+                               {
+                                       //echo '('.__LINE__.') 
presentable/image , alt_hide related to top level<br>';
+                                       // SET THIS FLAG: then, in presentation 
loop, we can decide not to show it
+                                       $part_nice[$i]['m_keywords'] .= 
'alt_hide' .' ';
+                               }
+                               // same as above but we do not need to look all 
the way back to the top level headers
+                               // ie because the parent part is included in 
the flat parts array
+                               elseif (
+                                  ($part_nice[$i]['ex_level_debth'] > 1)
+                               && ($part_nice[$presentable_parent_idx]['type'] 
== 'multipart')
+                               && 
($part_nice[$presentable_parent_idx]['subtype'] == 'related')
+                               )
+                               {
+                                       // SET THIS FLAG: then, in presentation 
loop, we can decide not to show it
+                                       $part_nice[$i]['m_keywords'] .= 
'alt_hide' .' ';
+                               }
+                       }
                        
                        // ------  EXCEPTIONS TO THE RULES  -------
***************
*** 1552,1561 ****
                        // "container" instead of "packagelist"
                        
!                       // (1) Exception: multipart/RELATED: for ex. Outl00k 
Stationary handling
                        // where an HTML part has references to other parts 
(images) in it
!                       // treat it's *child* multipart/alternative as 
"container", not as "packagelist"
                        $part_nice[$i]['m_html_related_kids'] = False;
                        $parent_idx = $part_nice[$i]['ex_parent_flat_idx'];
!                       if (($part_nice[$i]['ex_level_debth'] > 1)  // does not 
apply to level1, b/c level1 has no parent
                        && ($part_nice[$i]['type'] == 'multipart')
                        && ($part_nice[$i]['subtype'] == 'alternative')
--- 1715,1766 ----
                        // "container" instead of "packagelist"
                        
!                       // (1a) Exception: multipart/RELATED: for ex. Outl00k 
Stationary handling
                        // where an HTML part has references to other parts 
(images) in it
!                       // the first 2 tests simple set a "m_html_related_kids" 
flag
!                       // the 3rd test is another form of exception concerning 
related parts
!                       // which requires a change to "container" instead of 
"packagelist"
                        $part_nice[$i]['m_html_related_kids'] = False;
                        $parent_idx = $part_nice[$i]['ex_parent_flat_idx'];
!                       // level 1 has no parent in part_nice because we skip 
to presentable stuff
!                       // so in that case we need to check top level headers
!                       if (
!                          ($part_nice[$i]['type'] == 'text')
!                       && ($part_nice[$i]['subtype'] == 'html')
!                       && ($part_nice[$parent_idx]['type'] == 'multipart')
!                       && ($part_nice[$parent_idx]['subtype'] == 'alternative')
!                       && ($part_nice[$parent_idx]['ex_parent_flat_idx'] == 
$not_set)
!                       && (stristr($struct->subtype, 'RELATED'))
!                       )
!                       {
!                               // SET THIS FLAG: then, in presentation loop, 
see if a HTML part 
!                               // has a parent with this flag - if so, replace 
"id" reference(s) with 
!                               // http... mime reference(s). Example: MS 
Stationary mail's image background
!                               $part_nice[$parent_idx]['m_html_related_kids'] 
= True;
!                               //$part_nice[$i]['m_keywords'] .= 'id_swap' .' 
';
!                               $part_nice[$i]['m_keywords'] .= 'related' .' ';
!                       }
!                       // same as above but we do not need to look all the way 
back to the top level headers
!                       // ie an html part with a parent that is explicitly set 
as RELATED
!                       elseif (
!                          ($part_nice[$i]['ex_level_debth'] > 1)
!                       && ($part_nice[$i]['type'] == 'text')
!                       && ($part_nice[$i]['subtype'] == 'html')
!                       && ($part_nice[$parent_idx]['type'] == 'multipart')
!                       && ($part_nice[$parent_idx]['subtype'] == 'related')
!                       )
!                       {
!                               // SET THIS FLAG: then, in presentation loop, 
see if a HTML part 
!                               // has a parent with this flag - if so, replace 
"id" reference(s) with 
!                               // http... mime reference(s). Example: MS 
Stationary mail's image background
!                               $part_nice[$parent_idx]['m_html_related_kids'] 
= True;
!                               //$part_nice[$i]['m_keywords'] .= 'id_swap' .' 
';
!                               $part_nice[$i]['m_keywords'] .= 'related' .' ';
!                       }
!                       // (1b) Exception: multipart/RELATED: for ex. Outl00k 
Stationary handling
!                       // where an HTML part has references to other parts 
(images) in it
!                       // treat it's *child* multipart/alternative as 
"container", not as "packagelist"
!                       // similar to above but more serious, MANIPULATE 
"container" vs. "packagelist"
!                       // while also determining is it has related html style 
child parts
!                       elseif (($part_nice[$i]['ex_level_debth'] > 1)  // does 
not apply to level1, b/c level1 has no parent
                        && ($part_nice[$i]['type'] == 'multipart')
                        && ($part_nice[$i]['subtype'] == 'alternative')
***************
*** 1572,1575 ****
--- 1777,1807 ----
                                $part_nice[$i]['m_keywords'] .= 'id_swap' .' ';
                        }
+                       // (1c) Exception: multipart/RELATED: for ex.  
"courier-users digest, Vol 1 #2565 - 6 msgs" segment 3.1
+                       // DAMN this is similar to exception 1b, I wonder if I 
screwed 1b up and 1c is the real thing?
+                       // where an HTML part has references to other parts 
(images) in it
+                       // treat it's *child* multipart/alternative as 
"container", not as "packagelist"
+                       // similar to above but more serious, MANIPULATE 
"container" vs. "packagelist"
+                       // while also determining is it has related html style 
child parts
+                       //this is tricky because it is part of a segment 
alternative, and this is the htm part encased in a related subsegment
+                       // - 3.1.0 segment header (multipart / alternative)
+                       // -- 3.1.1 plain part  (text / plain)
+                       // --- 3.1.2 related subpart (subsegment) in entirety, 
both html part and image part (multipart / related) *** NEEDS TO BE A CONTAINER 
***
+                       // ---- 3.1.2.1 html part of the related segment (text 
/ html)
+                       // ---- 3.1.2.2 image part of the related subsegment  
(image / gif)
+                       elseif (($part_nice[$i]['ex_level_debth'] > 1)  // does 
not apply to level1, b/c level1 has no parent
+                       && ($part_nice[$i]['type'] == 'multipart')
+                       && ($part_nice[$i]['subtype'] == 'related')
+                       && ($part_nice[$parent_idx]['type'] == 'multipart')
+                       && ($part_nice[$parent_idx]['subtype'] == 
'alternative'))
+                       {
+                               // NOTE: treat it's *child* 
multipart/alternative as "container", not as "packagelist"
+                               $part_nice[$i]['m_description'] = 'container';
+                               $part_nice[$i]['m_keywords'] .= 'Force 
Container, id_swap' .' ';
+                               // SET THIS FLAG: then, in presentation loop, 
see if a HTML part 
+                               // has a parent with this flag - if so, replace 
"id" reference(s) with 
+                               // http... mime reference(s). Example: MS 
Stationary mail's image background
+                               $part_nice[$i]['m_html_related_kids'] = True;
+                               $part_nice[$i]['m_keywords'] .= 'id_swap' .' ';
+                       }
                        
                        // (2) Exception: multipart/APPLEDOUBLE  (ex. mac thru 
X.400 gateway)
***************
*** 1613,1619 ****
                        $part_nice[$i]['ex_part_href'] = 
$click_info['part_href'];
                        $part_nice[$i]['ex_part_clickable'] = 
$click_info['part_clickable'];
!               }               
                
                // finally, return the customized flat phpgw msg structure array
                return $part_nice;
        }
--- 1845,1853 ----
                        $part_nice[$i]['ex_part_href'] = 
$click_info['part_href'];
                        $part_nice[$i]['ex_part_clickable'] = 
$click_info['part_clickable'];
!               }
                
                // finally, return the customized flat phpgw msg structure array
+               if ($this->debug_message_display > 2) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct: returning $part_nice 
DUMP:', $part_nice); }
+               if ($this->debug_message_display > 0) { 
$this->dbug->out('mail_msg(display).get_flat_pgw_struct: LEAVING we made a 
$part_nice, returning it<br>'); }
                return $part_nice;
        }
***************
*** 1653,1659 ****
                // 1: TYPE
                $part_nice['type'] = $not_set; // Default value if not filled
!               if (isset($part->type) && $part->type)
                {
!                       switch ($part->type)
                        {
                                case TYPETEXT           : $part_type = 'text'; 
break;
--- 1887,1895 ----
                // 1: TYPE
                $part_nice['type'] = $not_set; // Default value if not filled
!               // note that 0 (the number ZERO) IS A VALID possible value 
here, so 0 != not filled ! 
!               if ((isset($part->type)) 
!               && (trim((string)$part->type) != ''))
                {
!                       switch ((int)$part->type)
                        {
                                case TYPETEXT           : $part_type = 'text'; 
break;
***************
*** 1680,1686 ****
                // 2: ENCODING
                $part_nice['encoding'] = $not_set; // Default value if not 
filled
!               if (isset($part->encoding) && $part->encoding)
                {
!                       switch ($part->encoding)
                        {
                                case ENC7BIT            : $part_encoding = 
'7bit'; break;
--- 1916,1924 ----
                // 2: ENCODING
                $part_nice['encoding'] = $not_set; // Default value if not 
filled
!               // note that 0 (the number ZERO) IS A VALID possible value 
here, so 0 != not filled ! 
!               if ((isset($part->encoding)) 
!               && (trim((string)$part->encoding) != ''))
                {
!                       switch ((int)$part->encoding)
                        {
                                case ENC7BIT            : $part_encoding = 
'7bit'; break;
***************
*** 2054,2057 ****
--- 2292,2297 ----
                // Make CLICKABLE link directly to this attachment or part
                $href_part_name = $this->decode_header_string($part_name);
+               // escape certain undesirable chars before HTML display
+               $href_part_name = 
$this->htmlspecialchars_encode($href_part_name);
                // ex_part_clickable
                $ex_part_clickable = '<a 
href="'.$ex_part_href.'">'.$href_part_name.'</a>';
***************
*** 2207,2210 ****
--- 2447,2453 ----
                        {
                                $_tf = 
$this->prep_folder_in($this->get_arg_value('tf'));
+                               // NOTE if the folder name has html unfriendly 
chars, like " or <, we need to do this just in case
+                               //echo '$this->htmlspecialchars_encode($_tf) 
['.$this->htmlspecialchars_encode($_tf).'] <br>';
+                               $_tf = $this->htmlspecialchars_encode($_tf);
                        }
                        else
***************
*** 2217,2229 ****
                                // these args are filled, indicating a MOVE was 
attempted
                                // but since 0 messages were in fact moved, 
there must have been an error
!                               $report_this = lang("Error moving messages 
to").' '.$_tf;
                        }
                        elseif ($this->get_arg_value('tm') == 1)
                        {
!                               $report_this = lang("1 message has been moved 
to").' '.$_tf;
                        }
                        else
                        {
!                               $report_this = $this->get_arg_value('tm').' 
'.lang("messages have been moved to").' '.$_tf;
                        }
                }
--- 2460,2472 ----
                                // these args are filled, indicating a MOVE was 
attempted
                                // but since 0 messages were in fact moved, 
there must have been an error
!                               $report_this = lang('Error moving messages 
to').' '.$_tf;
                        }
                        elseif ($this->get_arg_value('tm') == 1)
                        {
!                               $report_this = lang('1 message has been moved 
to').' '.$_tf;
                        }
                        else
                        {
!                               $report_this = $this->get_arg_value('tm').' 
'.lang('messages have been moved to').' '.$_tf;
                        }
                }
***************
*** 2298,2301 ****
--- 2541,2549 ----
                        $do_show_size = True;
                }
+               elseif ($this->get_isset_pref('show_foldersize'))
+               {
+                       // user has set the pref to always show the size of the 
folder
+                       $do_show_size = True;
+               }
                // if we get to here and $do_show_size  has not specifically 
been set to True, then False is the fallback default
                
***************
*** 2420,2432 ****
                if (!$msgball_list)
                {
                        // msgball_list may be thousands of items, try to fill 
the cache and get a reference
                        //GLOBALS[phpgw_session][phpgw_app_sessions][email]
!                       $this->get_msgball_list();
!                       $ex_acctnum = $this->get_acctnum();
                        if (($this->session_cache_enabled == True)
!                       && 
(isset($this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'])))
                        //&& 
(isset($GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'])))
                        {
!                               $msgball_list =& 
$this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'];
                                //$msgball_list =& 
$GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'];
                                //{ echo 'mail_msg_display: 
get_msg_list_display('.__LINE__.'): $msgball_list *REFERENCE* DUMP:<pre>'; 
print_r($msgball_list); echo '</pre>'; } 
--- 2668,2686 ----
                if (!$msgball_list)
                {
+                       // NOW WE USE FOLDER NAME ALSO IN THE DATA KEY FOR 
MSGBALL_LIST
+                       $ex_folder = $folder_info['fldball']['folder'];
+                       
                        // msgball_list may be thousands of items, try to fill 
the cache and get a reference
                        //GLOBALS[phpgw_session][phpgw_app_sessions][email]
!                       // fill the cache ? - NO this is folly
!                       //$this->get_msgball_list();
!                       //$ex_acctnum = $this->get_acctnum();
!                       // TESTING get the acctnum from the folder info
!                       $ex_acctnum = $folder_info['fldball']['acctnum'];
                        if (($this->session_cache_enabled == True)
!                       && 
(isset($this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list'][$ex_folder]['msgball_list'])))
                        //&& 
(isset($GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'])))
                        {
!                               $msgball_list =& 
$this->ref_SESSION['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list'][$ex_folder]['msgball_list'];
                                //$msgball_list =& 
$GLOBALS['phpgw_session']['phpgw_app_sessions']['email']['dat'][$ex_acctnum]['msgball_list']['msgball_list'];
                                //{ echo 'mail_msg_display: 
get_msg_list_display('.__LINE__.'): $msgball_list *REFERENCE* DUMP:<pre>'; 
print_r($msgball_list); echo '</pre>'; } 
***************
*** 2436,2440 ****
                        {
                                // ok we could not obtain a reference for some 
reason, get a COPY then
!                               $msgball_list = $this->get_msgball_list();
                        }
                }
--- 2690,2696 ----
                        {
                                // ok we could not obtain a reference for some 
reason, get a COPY then
!                               //$msgball_list = $this->get_msgball_list();
!                               // EXPERIMENT with passing arge to this
!                               $msgball_list = 
$this->get_msgball_list($ex_acctnum, $ex_folder);
                        }
                }
***************
*** 2518,2521 ****
--- 2774,2825 ----
                        $hdr_envelope = $this->phpgw_header($this_loop_msgball);
                        
+                       /*
+                       // begin GMT handling by "acros"
+                       // pongo bien la hora de los correos (GMT)
+ #                     echo"hora inicial $hdr_envelope->date<br>";
+ #                                             echo"hora inicial 
$hdr_envelope->udate<br>";
+ ///modificacion
+ $msg_date2=$hdr_envelope->date;
+ $comma = strpos($msg_date2,',');
+                       if($comma)
+                       {
+                               $msg_date2 = substr($msg_date2,$comma + 2);
+                       }
+                       //echo 'Msg Date : '.$msg_date."<br>\n";
+                       $dta = array();
+                       $ta = array();
+                       
+                       $dta = explode(' ',$msg_date2);
+                       $ta = explode(':',$dta[3]);
+                       if(substr($dta[4],0,3) <> 'GMT')
+                       {
+                               $tzoffset = substr($dta[4],0,1);
+                               (int)$tzhours = substr($dta[4],1,2);
+                               (int)$tzmins = substr($dta[4],3,2);
+ #echo"$ta[0] y $tzoffset";
+                               switch ($tzoffset)
+                               {
+                                       case '+': 
+                                               (int)$ta[0] -= (int)$tzhours;
+                                               (int)$ta[1] -= (int)$tzmins;
+ #echo"$ta[0]";
+                                               break;
+                                       case '-':
+                                               (int)$ta[0] += (int)$tzhours;
+                                               (int)$ta[1] += (int)$tzmins;
+                                               break;
+                               }
+                       }
+                       
+                       $new_time = 
mktime($ta[0],$ta[1],$ta[2],$GLOBALS['month_array'][strtolower($dta[1])],$dta[0],$dta[2])
 - ((60 * 60) * 
intval($GLOBALS['phpgw_info']['user']['preferences']['common']['tzoffset']));
+ $new_time2=gmdate("D, d M Y H:m:s",$new_time)." GMT";
+ $hdr_envelope->date = $new_time2;
+ $hdr_envelope->udate = $new_time;
+ #echo"hora final $hdr_envelope->udate<br>";
+ #echo"hora final $hdr_envelope->date<br>";
+                       #$message_date = 
$GLOBALS['phpgw']->common->show_date($msg_headers->udate);
+ //fin modificacion                    
+ // end GMT handling by "acros"
+                       */
                        // MESSAGE REFERENCE (a) NUMBER (b) FOLDER (c) ACCTNUM 
and (d) FAKE_URL EMBEDDED MULTI DATA
                        $msg_list_display[$x]['msgnum'] = 
$this_loop_msgball['msgnum'];
***************
*** 2634,2637 ****
--- 2938,2943 ----
                                $personal = $replyto;
                        }
+                       // escape certain undesirable chars before HTML display
+                       $personal = $this->htmlspecialchars_encode($personal);
                        
                        if (($this->get_pref_value('show_addresses') == 'from')
***************
*** 2681,2685 ****
                        // Part 1 of 2 of the From string (see above)
                        // NOTE: wasn't this decode_header_string proc already 
done above?
!                       $msg_list_display[$x]['from_name'] = 
$this->decode_header_string($personal);
  
                        // ----  From Link  ----
--- 2987,2992 ----
                        // Part 1 of 2 of the From string (see above)
                        // NOTE: wasn't this decode_header_string proc already 
done above?
!                       //$msg_list_display[$x]['from_name'] = 
$this->decode_header_string($personal);
!                       $msg_list_display[$x]['from_name'] = $personal;
  
                        // ----  From Link  ----
***************
*** 2713,2716 ****
--- 3020,3024 ----
                        // date_time has both date and time, which probably is 
long enough to make a TD cell wrap text to 2 lines
                        $msg_date_time = 
$GLOBALS['phpgw']->common->show_date($hdr_envelope->udate);
+ //echo"$msg_date_time";
                        
if($GLOBALS['phpgw']->common->show_date($hdr_envelope->udate,'Ymd') != 
date('Ymd'))
                        {
***************
*** 2732,2740 ****
                        if (!$hdr_envelope->to)
                        {
!                               $to_data_final = lang('undisclosed_recipients');
                        }
                        else
                        {
!                               for ($z = 0; $z < count($hdr_envelope->to); 
$z++)
                                {
                                        $topeople = $hdr_envelope->to[$z];
--- 3040,3055 ----
                        if (!$hdr_envelope->to)
                        {
!                               $to_data_final = lang('undisclosed recipients');
                        }
                        else
                        {
!                               $to_loops = count($hdr_envelope->to);
!                               // begin test of Maz Num of To loop limitation
!                               $max_to_loops = 25;
!                               if ($to_loops > $max_to_loops)
!                               {
!                                       $to_loops = $max_to_loops;
!                               }
!                               for ($z = 0; $z < $to_loops; $z++)
                                {
                                        $topeople = $hdr_envelope->to[$z];
***************
*** 2746,2751 ****
                                        else
                                        {
!                                               $to_person = 
$GLOBALS['phpgw']->msg->decode_header_string($topeople->personal);
                                        }
                                        $to_data_array[$z] = $to_person;
                                }
--- 3061,3068 ----
                                        else
                                        {
!                                               $to_person = 
$this->decode_header_string($topeople->personal);
                                        }
+                                       // escape certain undesirable chars 
before HTML display
+                                       $to_person = 
$this->htmlspecialchars_encode($to_person);
                                        $to_data_array[$z] = $to_person;
                                }
***************
*** 2777,2782 ****
        function _image_on($appname,$image,$extension='_on',$navbar=False)
        {
!               //$prefer_ext = '.gif';
!               $prefer_ext = '.png';
                return 
$GLOBALS['phpgw_info']['server']['webserver_url'].'/'.$appname.'/templates/default/images'.'/'.$image.$prefer_ext;
        }
--- 3094,3099 ----
        function _image_on($appname,$image,$extension='_on',$navbar=False)
        {
!               $prefer_ext = '.gif';
!               //$prefer_ext = '.png';
                return 
$GLOBALS['phpgw_info']['server']['webserver_url'].'/'.$appname.'/templates/default/images'.'/'.$image.$prefer_ext;
        }

Index: class.mail_msg_wrappers.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_msg_wrappers.inc.php,v
retrieving revision 1.37.2.1
retrieving revision 1.37.2.2
diff -C2 -r1.37.2.1 -r1.37.2.2
*** class.mail_msg_wrappers.inc.php     6 Apr 2003 00:00:44 -0000       1.37.2.1
--- class.mail_msg_wrappers.inc.php     8 Sep 2003 08:33:35 -0000       1.37.2.2
***************
*** 43,46 ****
--- 43,55 ----
        {
        
+               /*!
+               @function mail_msg_wrappers
+               @abstract CONSTRUCTOR place holder, does nothing  
+               */
+               function mail_msg_wrappers()
+               {
+                       return;
[...1356 lines suppressed...]
                * BEGIN PARAM / ARGS / PREFS  ACCESS FUNCTIONS                  
*
--- 4982,4986 ----
                
                
/**************************************************************************\
!               * END  CACHING HANDLERS                                         
                *
                * - - - - - - - - - - - - - - - - - - - - - - - - -             
                                                        *
                * BEGIN PARAM / ARGS / PREFS  ACCESS FUNCTIONS                  
*
***************
*** 4733,4737 ****
                @function set_pref_array
                @abstract set the entire preference data array FOR ONE ACCOUNT
!               @param $pref_array_data  (array) either (a) correctly formed 
emai pref array data, or (b) an empty array
                @param $acctnum  (int) OPTIONAL 
                @result boolean True is successfully sets $pref_array_data, 
False to indicate all we did was clear the args, no data was fed
--- 5253,5257 ----
                @function set_pref_array
                @abstract set the entire preference data array FOR ONE ACCOUNT
!               @param $pref_array_data  (array) either (a) correctly formed 
email pref array data, or (b) an empty array
                @param $acctnum  (int) OPTIONAL 
                @result boolean True is successfully sets $pref_array_data, 
False to indicate all we did was clear the args, no data was fed

Index: class.mail_send.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.mail_send.inc.php,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -C2 -r1.11 -r1.11.2.1
*** class.mail_send.inc.php     14 Mar 2003 04:01:08 -0000      1.11
--- class.mail_send.inc.php     8 Sep 2003 08:33:35 -0000       1.11.2.1
***************
*** 203,212 ****
                        $fromuser = $mail_out['mta_from'];
                        // START SMTP SESSION - now we can send our message. 
1st we identify ourselves and the sender
!                       $cmds = array (
!                               "\$src = \$this->msg2socket(\$socket,\"EHLO 
\$mymachine\r\n\");",
!                               "\$rrc = \$this->socket2msg(\$socket);",
!                               "\$src = \$this->msg2socket(\$socket,\"MAIL 
FROM:\$fromuser\r\n\");",
!                               "\$rrc = \$this->socket2msg(\$socket);"
!                       );
                        if ($this->debug_fake_send)
                        {
--- 203,242 ----
                        $fromuser = $mail_out['mta_from'];
                        // START SMTP SESSION - now we can send our message. 
1st we identify ourselves and the sender
! // START CHANGES JF
! // lets assume for the purpose of testing that these variables were already 
set up somewhere.
! // That still needs to be done properly.
! // angles: this is a temp handler until it gets in the email site setup page 
as site option
! $smtp_auth_login_required = False;
! //$smtp_auth_login_required = true;
! $mylogin = "xxxxxx";
! $mypassword = "xxxxxxxxxx";
! 
!                       if ($smtp_auth_login_required)
!                       {
!                               $mybase64login=base64_encode($mylogin);
!                               $mybase64password=base64_encode($mypassword);
!                               $cmds = array (
!                                       "\$src = 
\$this->msg2socket(\$socket,\"EHLO \$mymachine\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);",
!                                       "\$src = 
\$this->msg2socket(\$socket,\"AUTH LOGIN\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);",
!                                       "\$src = 
\$this->msg2socket(\$socket,\"\$mybase64login\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);",
!                                       "\$src = 
\$this->msg2socket(\$socket,\"\$mybase64password\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);",
!                                       "\$src = 
\$this->msg2socket(\$socket,\"MAIL FROM:\$fromuser\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);"
!                               );
!                       }
!                       else
!                       {
!                               $cmds = array (
!                                       "\$src = 
\$this->msg2socket(\$socket,\"EHLO \$mymachine\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);",
!                                       "\$src = 
\$this->msg2socket(\$socket,\"MAIL FROM:\$fromuser\r\n\");",
!                                       "\$rrc = \$this->socket2msg(\$socket);"
!                               );
!                       }
! // END CHANGES JF
                        if ($this->debug_fake_send)
                        {

Index: class.msg_bootstrap.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.msg_bootstrap.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1
*** class.msg_bootstrap.inc.php 14 Mar 2003 04:01:08 -0000      1.2
--- class.msg_bootstrap.inc.php 8 Sep 2003 08:33:35 -0000       1.2.2.1
***************
*** 49,52 ****
--- 49,55 ----
                var $do_login_ex = 0;
                
+               var $debug_level=0;
+               //var $debug_level=3;
+               
                function msg_bootstrap()
                {
***************
*** 123,127 ****
                function set_do_login($do_login='##NOTHING##', 
$called_by='not_provided')
                {
!                       if ($debug_level > 0) { echo 'ENTERING: msg_bootstrap: 
set_do_login: (called_by: '.$called_by.') param $do_login: 
['.serialize($do_login).']'.'<br>'; } 
                        // backward compat, when this was only true or false
                        if (is_bool($do_login))
--- 126,130 ----
                function set_do_login($do_login='##NOTHING##', 
$called_by='not_provided')
                {
!                       if ($this->debug_level > 0) { echo 'ENTERING: 
msg_bootstrap: set_do_login: (called_by: '.$called_by.') param $do_login: 
['.serialize($do_login).']'.'<br>'; } 
                        // backward compat, when this was only true or false
                        if (is_bool($do_login))
***************
*** 138,142 ****
                                }
                                // LEAVING HERE
!                               if ($debug_level > 0) { echo 'LEAVING: 
msg_bootstrap: set_do_login: (bool input) (called_by: '.$called_by.') 
$this->do_login: ['.$this->do_login.'] $this->do_login_ex: 
['.$this->do_login_ex.'] '.'<br>'; }
                                return $this->do_login;
                        }
--- 141,145 ----
                                }
                                // LEAVING HERE
!                               if ($this->debug_level > 0) { echo 'LEAVING: 
msg_bootstrap: set_do_login: (bool input) (called_by: '.$called_by.') 
$this->do_login: ['.$this->do_login.'] $this->do_login_ex: 
['.$this->do_login_ex.'] '.'<br>'; }
                                return $this->do_login;
                        }
***************
*** 176,180 ****
                                $this->do_login_ex = BS_LOGIN_ONLY_IF_NEEDED;
                        }
!                       if ($debug_level > 0) { echo 'LEAVING: msg_bootstrap: 
set_do_login: (not bool input) (called_by: '.$called_by.') $this->do_login: 
['.$this->do_login.'] $this->do_login_ex: ['.$this->do_login_ex.'] '.'<br>'; }
                        return $this->do_login_ex;
                }
--- 179,183 ----
                                $this->do_login_ex = BS_LOGIN_ONLY_IF_NEEDED;
                        }
!                       if ($this->debug_level > 0) { echo 'LEAVING: 
msg_bootstrap: set_do_login: (not bool input) (called_by: '.$called_by.') 
$this->do_login: ['.$this->do_login.'] $this->do_login_ex: 
['.$this->do_login_ex.'] '.'<br>'; }
                        return $this->do_login_ex;
                }
***************
*** 234,238 ****
                function ensure_mail_msg_exists($called_by='not_provided', 
$debug_level=0)
                {
!                       if ($debug_level > 0) { echo 'ENTERING: msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.')'.'<br>'; }
                        
                        // make sure do_login has been set
--- 237,245 ----
                function ensure_mail_msg_exists($called_by='not_provided', 
$debug_level=0)
                {
!                       if ($debug_level > $this->debug_level)
!                       {
!                               $this->debug_level = $debug_level;
!                       }
!                       if ($this->debug_level > 0) { echo 'ENTERING: 
msg_bootstrap: ensure_mail_msg_exists: (called_by: '.$called_by.')'.'<br>'; }
                        
                        // make sure do_login has been set
***************
*** 248,258 ****
                        
                        if (is_object($GLOBALS['phpgw']->msg))
                        {
!                               if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): is_object test: 
$GLOBALS[phpgw]->msg is already set, do not create again<br>'; }
                        }
                        else
                        {
!                               if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): $GLOBALS[phpgw]->msg is 
NOT set, creating mail_msg object<br>'; }
                                $GLOBALS['phpgw']->msg = 
CreateObject("email.mail_msg");
                        }
                        
--- 255,276 ----
                        
                        if (is_object($GLOBALS['phpgw']->msg))
+                       //if ((isset($GLOBALS['phpgw']->msg))
+                       //&& (isset($GLOBALS['phpgw']->msg->been_constructed))
+                       //&& ($GLOBALS['phpgw']->msg->been_constructed == True)
+                       //)
                        {
!                               if ($this->debug_level > 1) { echo 
'msg_bootstrap: ensure_mail_msg_exists('.__LINE__.'): (called_by: 
'.$called_by.'): is_object test: $GLOBALS[phpgw]->msg is already set, do not 
create again<br>'; }
                        }
                        else
                        {
!                               if ($this->debug_level > 1) { echo 
'msg_bootstrap: ensure_mail_msg_exists('.__LINE__.'): (called_by: 
'.$called_by.'): $GLOBALS[phpgw]->msg is NOT set, creating mail_msg 
object<br>'; }
                                $GLOBALS['phpgw']->msg = 
CreateObject("email.mail_msg");
+                               //$GLOBALS['phpgw']->msg =& 
CreateObject("email.mail_msg");
+                               
//include_once(PHPGW_INCLUDE_ROOT.'/email/inc/class.mail_msg_base.inc.php');
+                               
//include_once(PHPGW_INCLUDE_ROOT.'/email/inc/class.mail_msg_wrappers.inc.php');
+                               
//include_once(PHPGW_INCLUDE_ROOT.'/email/inc/class.mail_msg_display.inc.php');
+                               //$GLOBALS['phpgw']->msg =& new mail_msg;
+                               if ($this->debug_level > 1) { echo 
'msg_bootstrap: ensure_mail_msg_exists('.__LINE__.'): $GLOBALS[phpgw]->msg 
created mail_msg object, now calling needed initialization function aka manual 
constructor function, "initialize_mail_msg"<br>'; } 
+                               $GLOBALS['phpgw']->msg->initialize_mail_msg();
                        }
                        
***************
*** 260,264 ****
                        {
                                // mail_msg had already run thru 
"begin_request", do not call it again
!                               if ($debug_level > 0) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): LEAVING , msg object 
already initialized<br>'; }
                                return True;
                        }
--- 278,282 ----
                        {
                                // mail_msg had already run thru 
"begin_request", do not call it again
!                               if ($this->debug_level > 0) { echo 
'msg_bootstrap: ensure_mail_msg_exists('.__LINE__.'): (called_by: 
'.$called_by.'): LEAVING , msg object already initialized<br>'; }
                                return True;
                        }
***************
*** 266,276 ****
                        $args_array = Array();
                        // should we log in or not
!                       if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): $this->do_login: 
['.serialize($this->do_login).']<br>'; }
                        $args_array['do_login'] = $this->do_login;
!                       if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): $this->do_login_ex: 
['.serialize($this->do_login_ex).']<br>'; }
                        $args_array['do_login_ex'] = $this->do_login_ex;
                        
                        // "start your engines"
!                       if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): call msg->begin_request 
with args array:<pre>'; print_r($args_array); echo '</pre>'; }
                        $some_stream = 
$GLOBALS['phpgw']->msg->begin_request($args_array);
                        // error if login failed
--- 284,294 ----
                        $args_array = Array();
                        // should we log in or not
!                       if ($this->debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): $this->do_login: 
['.serialize($this->do_login).']<br>'; }
                        $args_array['do_login'] = $this->do_login;
!                       if ($this->debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): $this->do_login_ex: 
['.serialize($this->do_login_ex).']<br>'; }
                        $args_array['do_login_ex'] = $this->do_login_ex;
                        
                        // "start your engines"
!                       if ($this->debug_level > 1) { echo 'msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.'): call msg->begin_request 
with args array:<pre>'; print_r($args_array); echo '</pre>'; }
                        $some_stream = 
$GLOBALS['phpgw']->msg->begin_request($args_array);
                        // error if login failed
***************
*** 282,286 ****
                        // login error will halt this script execution
                        // else all is good to go and script continues... 
!                       if ($debug_level > 0) { echo 'EXIT: msg_bootstrap: 
ensure_mail_msg_exists: (called_by: '.$called_by.')'.'<br>'; }
                }
                
--- 300,305 ----
                        // login error will halt this script execution
                        // else all is good to go and script continues... 
!                       if ($this->debug_level > 2) { echo 'msg_bootstrap: 
about to leave ensure_mail_msg_exists, $GLOBALS[] DUMP:<pre>'; 
print_r($GLOBALS); echo '</pre>'; }
!                       if ($this->debug_level > 0) { echo 'EXIT: 
msg_bootstrap: ensure_mail_msg_exists: (called_by: '.$called_by.')'.'<br>'; }
                }
                
***************
*** 301,313 ****
                        //$debug_level = 3;
                        
!                       if ($debug_level > 0) { echo 'ENTERING: msg_bootstrap: 
ensure_utility_classes: <br>'; }
                        
                        if (is_object($GLOBALS['phpgw']->widgets))
                        {
!                               if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_utility_classes: is_object test: $GLOBALS[phpgw]->widgets is already 
set, do not create again<br>'; }
                        }
                        else
                        {
!                               if ($debug_level > 1) { echo 'msg_bootstrap: 
ensure_utility_classes: $GLOBALS[phpgw]->widgets is NOT set, creating 
html_widgets object<br>'; }
                                $my_widgets = 
CreateObject("email.html_widgets");
                                $GLOBALS['phpgw']->widgets = $my_widgets;
--- 320,332 ----
                        //$debug_level = 3;
                        
!                       if ($this->debug_level > 0) { echo 'ENTERING: 
msg_bootstrap: ensure_utility_classes: <br>'; }
                        
                        if (is_object($GLOBALS['phpgw']->widgets))
                        {
!                               if ($this->debug_level > 1) { echo 
'msg_bootstrap: ensure_utility_classes: is_object test: 
$GLOBALS[phpgw]->widgets is already set, do not create again<br>'; }
                        }
                        else
                        {
!                               if ($this->debug_level > 1) { echo 
'msg_bootstrap: ensure_utility_classes: $GLOBALS[phpgw]->widgets is NOT set, 
creating html_widgets object<br>'; }
                                $my_widgets = 
CreateObject("email.html_widgets");
                                $GLOBALS['phpgw']->widgets = $my_widgets;
***************
*** 315,319 ****
                        
                        
!                       if ($debug_level > 0) { echo 'EXIT: msg_bootstrap: 
ensure_utility_classes: <br>'; }
                }
  
--- 334,338 ----
                        
                        
!                       if ($this->debug_level > 0) { echo 'EXIT: 
msg_bootstrap: ensure_utility_classes: <br>'; }
                }
  

Index: class.so_mail_msg.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.so_mail_msg.inc.php,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
diff -C2 -r1.1.1.1 -r1.1.1.1.2.1
*** class.so_mail_msg.inc.php   13 Mar 2003 20:03:17 -0000      1.1.1.1
--- class.so_mail_msg.inc.php   8 Sep 2003 08:33:35 -0000       1.1.1.1.2.1
***************
*** 35,39 ****
        class so_mail_msg
        {
!       
                /*!
                @cabability appsession TEMPORARY DATA CACHING - data we generate
--- 35,61 ----
        class so_mail_msg
        {
!               var $use_group_data=True;
!               //var $use_group_data=False;
!               var $data_group_array=array();
!               var $data_group_done_filled=0;
!               // when something with a folder triggers gathering of group data
!               // store that something here so we know what triggered 
gathering group data
!               // because if "folder_status_info" is the trigger, it may not 
contain the 
!               // folder that is actually what we need later on, because "show 
number new 
!               // in combobox" will cache that for ALL folders, so a request 
for that 
!               // status info may to fill the combobox and have nothing to do 
with the 
!               // folder in which we are later going to need the group data.
!               var $data_group_last_trigger = '';
!               
!               /*!
!               @function so_mail_msg
!               @abstract Constructor 
!               */
!               function so_mail_msg()
!               {
!                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: ('.__LINE__.'): 
*constructor*<br>'); } 
!                       return;
!               }
!               
                /*!
                @cabability appsession TEMPORARY DATA CACHING - data we generate
***************
*** 217,223 ****
                @author Angles
                */
!               function expire_db_session_bulk_data($called_by='not_specified')
                {
!                       
                        // for DB sessions_db, OR used for anglemail table
                        if (($GLOBALS['phpgw_info']['server']['sessions_type'] 
== 'db')
--- 239,245 ----
                @author Angles
                */
!               function 
expire_db_session_bulk_data($called_by='not_specified', 
$wipe_absolutely_everything=False)
                {
!                       $this->so_clear_data_group();                   
                        // for DB sessions_db, OR used for anglemail table
                        if (($GLOBALS['phpgw_info']['server']['sessions_type'] 
== 'db')
***************
*** 261,301 ****
                                }
                                
!                               // RE-INSERT IMPORTANT DATA
!                               for ($i=0; $i < 
count($GLOBALS['phpgw']->msg->extra_and_default_acounts); $i++)
                                {
!                                       if 
($GLOBALS['phpgw']->msg->extra_and_default_acounts[$i]['status'] == 'enabled')
                                        {
!                                               $this_acctnum = 
$GLOBALS['phpgw']->msg->extra_and_default_acounts[$i]['acctnum'];
!                                               if 
($retained_data[$this_acctnum]['mailsvr_callstr'])
                                                {
!                                                       if 
($GLOBALS['phpgw']->msg->use_private_table == True)
!                                                       {
!                                                               
$this->so_set_data((string)$this_acctnum.';mailsvr_callstr', 
$retained_data[$this_acctnum]['mailsvr_callstr']);
!                                                       }
!                                                       else
                                                        {
!                                                               
$GLOBALS['phpgw']->session->appsession((string)$this_acctnum.';mailsvr_callstr',
 'email', $retained_data[$this_acctnum]['mailsvr_callstr']);
                                                        }
!                                               }
!                                               if 
($retained_data[$this_acctnum]['folder_list'])
!                                               {
!                                                       if 
($GLOBALS['phpgw']->msg->use_private_table == True)
                                                        {
!                                                               
$this->so_set_data((string)$this_acctnum.';folder_list', 
$retained_data[$this_acctnum]['folder_list']);
                                                        }
!                                                       else
                                                        {
!                                                               
$GLOBALS['phpgw']->session->appsession((string)$this_acctnum.';folder_list', 
'email', $retained_data[$this_acctnum]['folder_list']);
!                                                       }
!                                               }
!                                               if 
($retained_data[$this_acctnum]['mailsvr_namespace'])
!                                               {
!                                                       if 
($GLOBALS['phpgw']->msg->use_private_table == True)
!                                                       {
!                                                               
$this->so_set_data((string)$this_acctnum.';mailsvr_namespace', 
$retained_data[$this_acctnum]['mailsvr_namespace']);
!                                                       }
!                                                       else
!                                                       {
!                                                               
$GLOBALS['phpgw']->session->appsession((string)$this_acctnum.';mailsvr_namespace',
 'email', $retained_data[$this_acctnum]['mailsvr_namespace']);
                                                        }
                                                }
--- 283,326 ----
                                }
                                
!                               if ($wipe_absolutely_everything == False)
                                {
!                                       // RE-INSERT IMPORTANT DATA
!                                       for ($i=0; $i < 
count($GLOBALS['phpgw']->msg->extra_and_default_acounts); $i++)
                                        {
!                                               if 
($GLOBALS['phpgw']->msg->extra_and_default_acounts[$i]['status'] == 'enabled')
                                                {
!                                                       $this_acctnum = 
$GLOBALS['phpgw']->msg->extra_and_default_acounts[$i]['acctnum'];
!                                                       if 
($retained_data[$this_acctnum]['mailsvr_callstr'])
                                                        {
!                                                               if 
($GLOBALS['phpgw']->msg->use_private_table == True)
!                                                               {
!                                                                       
$this->so_set_data((string)$this_acctnum.';mailsvr_callstr', 
$retained_data[$this_acctnum]['mailsvr_callstr']);
!                                                               }
!                                                               else
!                                                               {
!                                                                       
$GLOBALS['phpgw']->session->appsession((string)$this_acctnum.';mailsvr_callstr',
 'email', $retained_data[$this_acctnum]['mailsvr_callstr']);
!                                                               }
                                                        }
!                                                       if 
($retained_data[$this_acctnum]['folder_list'])
                                                        {
!                                                               if 
($GLOBALS['phpgw']->msg->use_private_table == True)
!                                                               {
!                                                                       
$this->so_set_data((string)$this_acctnum.';folder_list', 
$retained_data[$this_acctnum]['folder_list']);
!                                                               }
!                                                               else
!                                                               {
!                                                                       
$GLOBALS['phpgw']->session->appsession((string)$this_acctnum.';folder_list', 
'email', $retained_data[$this_acctnum]['folder_list']);
!                                                               }
                                                        }
!                                                       if 
($retained_data[$this_acctnum]['mailsvr_namespace'])
                                                        {
!                                                               if 
($GLOBALS['phpgw']->msg->use_private_table == True)
!                                                               {
!                                                                       
$this->so_set_data((string)$this_acctnum.';mailsvr_namespace', 
$retained_data[$this_acctnum]['mailsvr_namespace']);
!                                                               }
!                                                               else
!                                                               {
!                                                                       
$GLOBALS['phpgw']->session->appsession((string)$this_acctnum.';mailsvr_namespace',
 'email', $retained_data[$this_acctnum]['mailsvr_namespace']);
!                                                               }
                                                        }
                                                }
***************
*** 315,322 ****
--- 340,367 ----
                {
                        $look_for_me = 'phpgw_anglemail';
+                       
+                       // have we cached this in SESSION cache - NOT the AM 
table itself!
+                       $appsession_key = $look_for_me.'_exists';
+                       $affirmative_value = 'yes';
+                       $negative_value = 'no';
+                       $appsession_returns = 
$this->so_appsession_passthru($appsession_key);
+                       if ($appsession_returns == $affirmative_value)
+                       {
+                               //echo 'so_am_table_exists: result: Actual 
APPSESSION reports stored info saying table ['.$look_for_me.'] DOES exist<br>';
+                               return True;
+                       }
+                       elseif ($appsession_returns == $negative_value)
+                       {
+                               //echo 'so_am_table_exists: result: Actual 
APPSESSION reports stored info saying table ['.$look_for_me.'] does NOT 
exist<br>';
+                               return False;
+                       }
+                       
+                       // NO APPSESSION data, continue ...
                        $table_names = $GLOBALS['phpgw']->db->table_names();
                        $table_names_serialized = serialize($table_names);
                        if (strstr($table_names_serialized, $look_for_me))
                        {
+                               // STORE THE POSITIVE ANSWER
+                               $this->so_appsession_passthru($appsession_key, 
$affirmative_value);
                                //echo 'so_am_table_exists: result: table 
['.$look_for_me.'] DOES exist<br>';
                                return True;
***************
*** 324,327 ****
--- 369,374 ----
                        else
                        {
+                               // STORE THE NEGATIVE ANSWER
+                               $this->so_appsession_passthru($appsession_key, 
$negative_value);
                                //echo 'so_am_table_exists: result: table 
['.$look_for_me.'] does NOT exist<br>';
                                return False;
***************
*** 337,346 ****
                @abstract ?
                */
!               function so_set_data($data_key, $content)
                {
                        $account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
                        $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
!                       $content = serialize($content);
!                       $content = 
$GLOBALS['phpgw']->db->db_addslashes($content);
                        
                        $GLOBALS['phpgw']->db->query("SELECT content FROM 
phpgw_anglemail WHERE "
--- 384,426 ----
                @abstract ?
                */
!               function so_set_data($data_key, $content, $compression=False)
                {
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_set_data('.__LINE__.'): 
ENTERING, $data_key ['.$data_key.'], $compression 
['.serialize($compression).']<br>'); }
                        $account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
                        $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
!                       // for compression, first choice is BZ2, second choice 
is GZ
!                       //if (($compression)
!                       //&& (function_exists('bzcompress')))
!                       //{
!                       //      $content_preped = 
base64_encode(bzcompress(serialize($content)));
!                       //      $content = '';
!                       //      unset($content);
!                       //      if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_set_data('.__LINE__.'): 
$compression is ['.serialize($compression).'] AND we did serialize and <font 
color="green">did BZ2 compress</font>, no addslashes for compressed 
content<br>'); }
!                       //}
!                       //else
!                       if (($compression)
!                       && (function_exists('gzcompress')))
!                       {
!                               $content_preped = 
base64_encode(gzcompress(serialize($content)));
!                               $content = '';
!                               unset($content);
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_set_data('.__LINE__.'): 
$compression is ['.serialize($compression).'] AND we did serialize and <font 
color="green">did GZ compress</font>, no addslashes for compressed 
content<br>'); }
!                       }
!                       else
!                       {
!                               // addslashes only if NOT compressing data
!                               // serialize only is NOT a string
!                               if (is_string($content))
!                               {
!                                       $content_preped = 
$GLOBALS['phpgw']->db->db_addslashes($content);
!                               }
!                               else
!                               {
!                                       $content_preped = 
$GLOBALS['phpgw']->db->db_addslashes(serialize($content));
!                               }
!                               $content = '';
!                               unset($content);
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_set_data('.__LINE__.'): 
$compress is ['.serialize($compress).'] AND we did serialize with NO 
compression<br>'); }
!                       }
                        
                        $GLOBALS['phpgw']->db->query("SELECT content FROM 
phpgw_anglemail WHERE "
***************
*** 350,360 ****
                        {
                                $GLOBALS['phpgw']->db->query("INSERT INTO 
phpgw_anglemail (account_id,data_key,content) "
!                                       . "VALUES ('" . $account_id . "','" . 
$data_key . "','" . $content . "')",__LINE__,__FILE__);
                        }
                        else
                        {
!                               $GLOBALS['phpgw']->db->query("UPDATE 
phpgw_anglemail set content='" . $content 
                                        . "' WHERE account_id='" . $account_id 
. "' AND data_key='" . $data_key . "'",__LINE__,__FILE__);
                        }
                }
                
--- 430,441 ----
                        {
                                $GLOBALS['phpgw']->db->query("INSERT INTO 
phpgw_anglemail (account_id,data_key,content) "
!                                       . "VALUES ('" . $account_id . "','" . 
$data_key . "','" . $content_preped . "')",__LINE__,__FILE__);
                        }
                        else
                        {
!                               $GLOBALS['phpgw']->db->query("UPDATE 
phpgw_anglemail set content='" . $content_preped 
                                        . "' WHERE account_id='" . $account_id 
. "' AND data_key='" . $data_key . "'",__LINE__,__FILE__);
                        }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_set_data('.__LINE__.'): 
LEAVING <br>'); }
                }
                
***************
*** 363,389 ****
                @abstract ?
                */
!               function so_get_data($data_key)
                {
!                       $account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
!                       $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
                        
!                       $GLOBALS['phpgw']->db->query("SELECT content FROM 
phpgw_anglemail WHERE "
!                               . "account_id = '".$account_id."' AND data_key 
= '".$data_key."'",__LINE__,__FILE__);
                        
!                       if ($GLOBALS['phpgw']->db->num_rows()==0)
                        {
!                               return False;
                        }
                        else
                        {
!                               $GLOBALS['phpgw']->db->next_record();
!                               //return 
unserialize($GLOBALS['phpgw']->db->f('content', 'stripslashes'));
!                               $my_content = 
$GLOBALS['phpgw']->db->f('content', 'stripslashes');
                                if (!$my_content)
                                {
                                        return False;
                                }
!                               $my_content = unserialize($my_content);
!                               return $my_content;
                        }
                }
--- 444,651 ----
                @abstract ?
                */
!               function so_get_data($data_key, $compression=False)
                {
!                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
ENTERING, $data_key ['.$data_key.'], $compression 
['.serialize($compression).']<br>'); }
                        
!                       // initialize vars to blank
!                       $my_content = '';
!                       $my_content_preped = '';
                        
!                       if (($this->use_group_data == True)
!                       && ($this->so_have_data_group() == False)
!                       && ($this->data_group_done_filled < 3))
                        {
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
requesting to fill group data<br>'); }
!                               // TRUE = make this into a generic LIKE match 
string
!                               $func_returns = 
$this->so_fill_data_group($data_key, True);
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
fill group data function returns $func_returns 
['.serialize($func_returns).']<br>'); }
!                       }
!                       elseif (
!                          ($this->use_group_data == True)
!                       && ($this->so_have_data_group() == True)
!                       && ($this->data_group_done_filled < 3)
!                       && (strstr($this->data_group_last_trigger, 
'folder_status_info'))
!                       && (!strstr($data_key, 'folder_status_info'))
!                       )
!                       {
!                               // the folder_status_info retry allowed, 
!                               // if folder_status_info was the thing that 
triggered getting group data, 
!                               // i.e. the first thing to come in here with a 
folder element in it,
!                               // then we are allowed one more try for the 
next item that is requested 
!                               // after that that is NOT folder_status_info
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
folder_ststus_info retry block, first trigger was folder_status_info, so now 
wipe existing group data and retry<br>'); }
!                               $this->so_clear_data_group();
!                               // TRUE = make this into a generic LIKE match 
string
!                               $func_returns = 
$this->so_fill_data_group($data_key, True);
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
retry of fill group data function returns $func_returns 
['.serialize($func_returns).']<br>'); }
!                       }
!                       
!                       if (($this->use_group_data == False)
!                       || ($this->so_have_data_group() == False))
!                       {
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
group data either disabled or nothing returned, requesting individual data 
record<br>'); }
!                               $account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
!                               $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
!                               
!                               $GLOBALS['phpgw']->db->query("SELECT content 
FROM phpgw_anglemail WHERE "
!                                       . "account_id = '".$account_id."' AND 
data_key = '".$data_key."'",__LINE__,__FILE__);
!                               
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
$GLOBALS[phpgw]->db->num_rows() = ['.$GLOBALS['phpgw']->db->num_rows().'] 
<br>'); } 
!                               
!                               if ($GLOBALS['phpgw']->db->num_rows()==0)
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, returning False<br>'); }
!                                       return False;
!                               }
!                       }
!                       
!                       if (($compression)
!                       //&& ((function_exists('bzdecompress')) || 
(function_exists('gzuncompress')) )
!                       && (function_exists('gzuncompress')))
!                       {
!                               if (($this->use_group_data == True)
!                               && ($this->so_have_data_group() == True))
!                               {
!                                       // no stripslashes for compressed data 
(False)
!                                       $my_content = 
$this->so_lookup_data_group($data_key, False);
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
using SO_LOOKUP_DATA_GROUP <br>'); }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
so_lookup_data_group $my_content DUMP:', $my_content); }
!                               }
!                               else
!                               {
!                                       $GLOBALS['phpgw']->db->next_record();
!                                       // no stripslashes for compressed data
!                                       $my_content = 
$GLOBALS['phpgw']->db->f('content');
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
query for individual record, NOT using group data<br>'); }
!                               }
!                               $comp_desc = array();
!                               $comp_desc['before_decomp'] = 'NA';
!                               $comp_desc['after_decomp'] = 'NA';
!                               $comp_desc['ratio_txt'] = 'NA';
!                               $comp_desc['ratio_math'] = 'NA';
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $comp_desc['before_decomp'] = strlen($my_content); } 
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
strlen($my_content) is ['.$comp_desc['before_decomp'].'], BEFORE decompress, 
$compression is ['.serialize($compression).']<br>'); }
!                               //if ($GLOBALS['phpgw']->msg->debug_so_class > 
2) { $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
$GLOBALS[phpgw]->db->next_record() yields $my_content DUMP:', $my_content); }
!                               if (!$my_content)
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, returning False<br>'); }
!                                       return False;
!                               }
!                               // for compression, first choice is BZ2, second 
choice is GZ
!                               // NEW: BZ2 is SLOWER than zlib
!                               //if (function_exists('bzdecompress'))
!                               //{
!                               //      $my_content_preped = 
unserialize(bzdecompress(base64_decode($my_content)));
!                               //      if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { $comp_desc['after_decomp'] = 
strlen(serialize($my_content_preped)); $comp_desc['ratio_math'] = 
(string)(round(($comp_desc['after_decomp']/$comp_desc['before_decomp']), 1) * 
1).'X'; $comp_desc['ratio_txt'] = 'pre/post is ['.$comp_desc['before_decomp'].' 
to '.$comp_desc['after_decomp']; }
!                               //      if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
$compression: ['.serialize($compression).'] using <font color="brown">BZ2 
decompress</font> pre/post is ['.$comp_desc['ratio_txt'].']; ratio: 
['.$comp_desc['ratio_math'].'] <br>'); }
!                               //}
!                               //else
!                               if (function_exists('gzuncompress'))
!                               {
!                                       $my_content_preped = 
unserialize(gzuncompress(base64_decode($my_content)));
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { $comp_desc['after_decomp'] = 
strlen(serialize($my_content_preped)); $comp_desc['ratio_math'] = 
(string)(round(($comp_desc['after_decomp']/$comp_desc['before_decomp']), 1) * 
1).'X'; $comp_desc['ratio_txt'] = 'pre/post is ['.$comp_desc['before_decomp'].' 
to '.$comp_desc['after_decomp']; }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
$compression: ['.serialize($compression).'] using <font color="brown">GZ 
uncompress</font> pre/post is ['.$comp_desc['ratio_txt'].']; ratio: 
['.$comp_desc['ratio_math'].'] <br>'); }
!                               }
!                               else
!                               {
!                                       $my_content_preped = '';
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
ERROR: $compression: ['.serialize($compression).'] <font 
color="brown">decompression ERROR</font> neither "bzdecompress" (first choice) 
nor "gzuncompress" (second choice) is available<br>'); }
!                               }
!                               $my_content = '';
!                               unset($my_content);
!                               if (!$my_content_preped)
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
AFTER DECOMPRESS and UNserialization $my_content_preped is GONE!'); }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, returning False, <font color="red">content did not unserialize, 
compression was in use </font> <br>'); }
!                                       return False;
!                               }
!                               else
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
AFTER DECOMPRESS and UNserialization $my_content_preped DUMP:', 
$my_content_preped); }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, got content, <font color="brown"> did decompress </font> , returning 
that content<br>'); }
!                                       return $my_content_preped;
!                               }
                        }
                        else
                        {
!                               if (($this->use_group_data == True)
!                               && ($this->so_have_data_group() == True))
!                               {
!                                       // not using compression so we will 
stripslashes
!                                       $my_content = 
$this->so_lookup_data_group($data_key, True);
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
using SO_LOOKUP_DATA_GROUP <br>'); }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
so_lookup_data_group $my_content DUMP:', $my_content); }
!                               }
!                               else
!                               {
!                                       $GLOBALS['phpgw']->db->next_record();
!                                       // NOTE: we only stripslashes when NOT 
using compression
!                                       $my_content = 
$GLOBALS['phpgw']->db->f('content', 'stripslashes');
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
query for individual record, NOT using group data<br>'); }
!                               }
!                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
strlen($my_content) is ['.strlen($my_content).']<br>'); }
!                               //if ($GLOBALS['phpgw']->msg->debug_so_class > 
2) { $GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
$GLOBALS[phpgw]->db->next_record() yields $my_content DUMP:', $my_content); }
                                if (!$my_content)
                                {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, returning False<br>'); }
                                        return False;
                                }
!                               // we serialize only NON-strings, 
!                               // so unserialize only if content is already 
serialized
!                               //if 
($GLOBALS['phpgw']->msg->is_serialized_str($my_content) == True)
!                               if 
($GLOBALS['phpgw']->msg->is_serialized_smarter($my_content) == True)
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): we 
need to unserialize this <br>'); }
!                                       $my_content_preped = 
unserialize($my_content);
!                                       // DID IT WORK
!                                       //$try_recover = True;
!                                       $try_recover = False;
!                                       if (!$my_content_preped)
!                                       {
!                                               if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): <b> 
<font color="red">ERROR unserializing </font> </b> , probably a slashes 
problem<br>'); }
!                                               if ($try_recover == True)
!                                               {
!                                                       // try some recovery 
methods
!                                                       $my_content_recover = 
$my_content;
!                                                       $my_content_recover = 
str_replace(':"',':_LEGITQUOTE_',$my_content_recover);
!                                                       $my_content_recover = 
str_replace('":','_LEGITQUOTE_:',$my_content_recover);
!                                                       $my_content_recover = 
str_replace('";','_LEGITQUOTE_;',$my_content_recover);
!                                                       //$my_content_recover = 
str_replace('\/','_ESCAPEDSLASH_',$my_content_recover);
!                                                       //$my_content_recover = 
str_replace('/','\/',$my_content_recover);
!                                                       $my_content_recover = 
str_replace('\\','\\\\',$my_content_recover);
!                                                       // HACK
!                                                       //$my_content_recover = 
str_replace('/','//',$my_content_recover);
!                                                       //$my_content_recover = 
str_replace('"','/"',$my_content_recover);
!                                                       $my_content_recover = 
str_replace('\"','\_LEGITQUOTE_',$my_content_recover);
!                                                       $my_content_recover = 
str_replace('"','\"',$my_content_recover);
!                                                       $my_content_recover = 
str_replace('_LEGITQUOTE_','"',$my_content_recover);
!                                                       //$my_content_recover = 
str_replace('_ESCAPEDSLASH_','\/',$my_content_recover);
!                                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
so_lookup_data_group $my_content_recover DUMP:', $my_content_recover); }
!                                                       $my_content_preped = 
unserialize($my_content_recover);
!                                                       if (!$my_content_preped)
!                                                       {
!                                                               if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): <b> 
<font color="red">2nd ERROR unserializing </font> </b> , recovery did not work, 
probably a slashes problem<br>'); }
!                                                       }
!                                               }
!                                       }
!                               }
!                               else
!                               {
!                                       $my_content_preped = $my_content;
!                               }
!                               $my_content = '';
!                               unset($my_content);
!                               if (!$my_content_preped)
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
AFTER UNserialization $my_content_preped is GONE!'); }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, returning False, <font color="red">content did not unserialize </font> 
<br>'); }
!                                       return False;
!                               }
!                               else
!                               {
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
AFTER UNserialization $my_content_preped DUMP:', $my_content_preped); }
!                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: so_get_data('.__LINE__.'): 
LEAVING, got content, returning that content<br>'); }
!                                       return $my_content_preped;
!                               }
                        }
                }
***************
*** 399,402 ****
--- 661,665 ----
                        $GLOBALS['phpgw']->db->query("DELETE FROM 
phpgw_anglemail "
                                . " WHERE account_id='" . $account_id . "' AND 
data_key='" . $data_key . "'",__LINE__,__FILE__);
+                       $this->so_clear_data_group($data_key);
                }
                
***************
*** 410,415 ****
--- 673,1058 ----
                        $GLOBALS['phpgw']->db->query("DELETE FROM 
phpgw_anglemail "
                                . " WHERE account_id='" . $account_id . 
"'",__LINE__,__FILE__);
+                       $this->so_clear_data_group();
                }
                
+               /*!
+               @function so_prop_use_group_data
+               @abstract Delphi style property function for "use_group_data"
+               @discussion This Delphi style property function replaces the 
typical "get" and 
+               "set" function. No arg passed will return the current value. 
Passing False 
+               or an empty string sets "use_group_data" to False, 
+               passing anything else as an arg sets "use_group_data" to true.
+               @author Angles
+               */
+               function so_prop_use_group_data($feed_value='##NOTHING##')
+               {
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 ENTERING, current $this->use_group_data 
['.serialize($this->use_group_data).'], $feed_value 
['.serialize($feed_value).']<br>'); }
+                       if ((string)$feed_value == '##NOTHING##')
+                       {
+                               // do nothing skip down to the return statement
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 do nothing, $feed_value ['.serialize($feed_value).'] == "##NOTHING##" means 
only return current property<br>'); }
+                               //return $this->use_group_data;
+                       }
+                       elseif ($feed_value)
+                       {
+                               if ($this->use_group_data != True)
+                               {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 toggle $this->use_group_data to True, and thus call "so_clear_data_group" and 
set "data_group_done_filled" to 0 and then set to True<br>'); }
+                                       // maybe we should clear any stored 
data, huh?
+                                       $this->so_clear_data_group();
+                                       // and maybe we should reset this 
excess query counter too, huh?
+                                       $this->data_group_done_filled = 0;
+                                       $this->use_group_data = True;
+                               }
+                               else
+                               {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 do nothing, use_group_data is already TRUE<br>'); }
+                               }
+                       }
+                       elseif (!$feed_value)
+                       {
+                               if ($this->use_group_data != False)
+                               {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 toggle $this->use_group_data to False, and thus call "so_clear_data_group" and 
then set to False<br>'); }
+                                       // maybe we should clear any stored 
data, huh?
+                                       $this->so_clear_data_group();
+                                       $this->use_group_data = False;
+                               }
+                               else
+                               {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 do nothing, use_group_data is already FALSE<br>'); }
+                               }
+                       }
+                       else
+                       {
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 ERROR why am I here?<br>'); }
+                       }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_prop_use_group_data('.__LINE__.'):
 LEAVING, returning $this->use_group_data 
['.serialize($this->use_group_data).']<br>'); }
+                       return $this->use_group_data;
+               }
+               
+               /*!
+               @function so_fill_data_group
+               @abstract ?
+               */
+               function so_fill_data_group($data_key_partial='', 
$make_like=True)
+               {
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
 ENTERING, $data_key_partial ['.$data_key_partial.']  $make_like 
['.serialize($make_like).']<br>'); }
+                       if ($this->use_group_data == False)
+                       {
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 0) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
 LEAVING returning False<br>'); }
+                               return False;
+                       }
+                       
+                       $this->data_group_array = array();
+                       if (!$data_key_partial)
+                       {
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 0) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
 LEAVING returning False<br>'); }
+                               return False;
+                       }
+                       
+                       if ($make_like)
+                       {
+                               $orig_data_key_partial = $data_key_partial;
+                               $data_key_exploded = array();
+                               $data_key_exploded = 
explode(';',$orig_data_key_partial);
+                               //SQL pattern matching allows you to use `_' to 
match any single character 
+                               //and `%' to match an arbitrary number of 
characters (including zero characters)
+                               // make acctnum;ANY THING;folder for our LIKE 
querey
+                               if ((isset($data_key_exploded[0]))
+                               && (isset($data_key_exploded[2])))
+                               {
+                                       // fill this class var, what triggered 
the gathering of group data?
+                                       // because if it was 
"folder_status_info" then later we are allowed to try again
+                                       // since cached folder stats may be 
simply to fill the combobox and not related 
+                                       // to the folder we really need the 
group data for
+                                       $this->data_group_last_trigger = 
$data_key_partial;
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
  setting $this->data_group_last_trigger 
['.$this->data_group_last_trigger.']<br>'); }
+                                       // prep for group data query
+                                       $data_key = 
$data_key_exploded[0].';%;'.$data_key_exploded[2].';%';
+                                       //$data_key = 
$data_key_exploded[0].'\;%\;'.$data_key_exploded[2].'\;%';
+                                       //$data_key = 
(string)$data_key_exploded[0].'%'.$data_key_exploded[2].'%';
+                                       // HOWEVER 2 things also are kept in 
the DB that do NOT HAVE A ";" after the folder name
+                                       $data_key_msgball = 
(string)$data_key_exploded[0].';msgball_list;'.$data_key_exploded[2];
+                                       //$data_key_folder_status_info = 
(string)$data_key_exploded[0].';folder_status_info;'.$data_key_exploded[2];
+                                       // so below we use the LIKE and then OR 
= for those 2 additional things, all in one query
+                                       // without the ";" after the folder 
name, the wildcard "%" could match INBOX[anything]
+                                       // that is bad because if inbox is the 
namespace, we get  the ENITRE database instead if just INBOX with "INBOX%"
+                                       // so we use "INBOX;%" to avoid that 
madness, 
+                                       // but add those other 2 items so we do 
not EXCLUSE them because of the lack of trailing ";" as their data_key
+                                       
+                                       // DAMN get the folder status info for 
EVERY FOLDER in case we need it for the combo box
+                                       $data_key_folder_status_info = 
(string)$data_key_exploded[0].';folder_status_info;%';
+                                       
+                                       // OK there are some other things we 
should get too
+                                       // these are data that are associated 
with the account in general, no folder value is used
+                                       // NOTE IT IS RARE these are actually 
needed one we do fill the group data
+                                       // because the first data_key with a 
folder in it will trigger the filling of group data
+                                       // this means these things probably 
were requested earlier on in the page view anyway
+                                       $data_key_folder_list = 
(string)$data_key_exploded[0].';folder_list';
+                                       $data_key_mailsvr_callstr = 
(string)$data_key_exploded[0].';mailsvr_callstr';
+                                       $data_key_mailsvr_namespace = 
(string)$data_key_exploded[0].';mailsvr_namespace';
+                               }
+                               //elseif (isset($data_key_exploded[0]))
+                               //{
+                               //      // NO FOLDER means the way we get mass 
group data will not work
+                               //      $data_key = 
+                               //      // NO FOLDER so we can not get these 2 
things we would also look for
+                               //      $data_key_msgball = '';
+                               //      $data_key_folder_status_info = '';
+                               //      // HOWEVER ...
+                               //      // OK there are some other things we 
can still get
+                               //      // these are data that are associated 
with the account in general, no folder value is used
+                               //      $data_key_folder_list = 
(string)$data_key_exploded[0].';folder_list';
+                               //      $data_key_mailsvr_callstr = 
(string)$data_key_exploded[0].';mailsvr_callstr';
+                               //      $data_key_mailsvr_namespace = 
(string)$data_key_exploded[0].';mailsvr_namespace';
+                               //}
+                               else
+                               {
+                                       // Data Key does NOT have a folder name
+                                       // means the way we get mass group data 
will not be worth it
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
 LEAVING returning False<br>'); }
+                                       return False;
+                               }
+                       }
+                       else
+                       {
+                               $data_key = $data_key_partial;
+                               $data_key_msgball = '';
+                               $data_key_folder_status_info = '';
+                               $data_key_folder_list = '';
+                               $data_key_mailsvr_callstr = '';
+                               $data_key_mailsvr_namespace = '';
+                       }
+                       
+                       $account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
+                       //if (($data_key)
+                       //&& ($data_key_msgball)
+                       //&& ($data_key_folder_status_info))
+                       //{
+                       //      $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
+                       //      $data_key_msgball = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_msgball);
+                       //      $data_key_folder_status_info = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_folder_status_info);
+                       //      $GLOBALS['phpgw']->db->query("SELECT * FROM 
phpgw_anglemail WHERE "
+                       //              . "account_id = '".$account_id
+                       //              ."' AND (data_key LIKE '".$data_key
+                       //              ."' OR data_key = '".$data_key_msgball
+                       //              ."' OR data_key LIKE 
'".$data_key_folder_status_info
+                       //              ."')"
+                       //              ,__LINE__,__FILE__);
+                       //}
+                       if (($data_key)
+                       && ($data_key_msgball)
+                       && ($data_key_folder_status_info)
+                       && ($data_key_folder_list)
+                       && ($data_key_mailsvr_callstr)
+                       && ($data_key_mailsvr_namespace))
+                       {
+                               $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
+                               $data_key_msgball = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_msgball);
+                               $data_key_folder_status_info = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_folder_status_info);
+                               $data_key_folder_list = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_folder_list);
+                               $data_key_mailsvr_callstr = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_mailsvr_callstr);
+                               $data_key_mailsvr_namespace = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_mailsvr_namespace);
+                               $GLOBALS['phpgw']->db->query("SELECT * FROM 
phpgw_anglemail WHERE "
+                                       . "account_id = '".$account_id
+                                       ."' AND (data_key LIKE '".$data_key
+                                       ."' OR data_key = '".$data_key_msgball
+                                       ."' OR data_key LIKE 
'".$data_key_folder_status_info
+                                       ."' OR data_key = 
'".$data_key_folder_list
+                                       ."' OR data_key = 
'".$data_key_mailsvr_callstr
+                                       ."' OR data_key = 
'".$data_key_mailsvr_namespace
+                                       ."')"
+                                       ,__LINE__,__FILE__);
+                       }
+                       //elseif (($data_key_folder_list)
+                       //&& ($data_key_mailsvr_callstr)
+                       //&& ($data_key_mailsvr_namespace))
+                       //{
+                       //      $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
+                       //      $data_key_msgball = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_msgball);
+                       //      $data_key_folder_status_info = 
$GLOBALS['phpgw']->db->db_addslashes($data_key_folder_status_info);
+                       //      $GLOBALS['phpgw']->db->query("SELECT * FROM 
phpgw_anglemail WHERE "
+                       //              . "account_id = '".$account_id
+                       //              ."' AND (data_key = 
'".$data_key_folder_list
+                       //              ."' OR data_key = 
'".$data_key_mailsvr_callstr
+                       //              ."' OR data_key = 
'".$data_key_mailsvr_namespace
+                       //              ."')"
+                       //              ,__LINE__,__FILE__);
+                       //}
+                       else
+                       {
+                               $data_key = 
$GLOBALS['phpgw']->db->db_addslashes($data_key);
+                               $GLOBALS['phpgw']->db->query("SELECT * FROM 
phpgw_anglemail WHERE "
+                                       . "account_id = '".$account_id."' AND 
data_key LIKE '".$data_key."'",__LINE__,__FILE__);
+                       }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: 
so_fill_data_group('.__LINE__.'): $data_key ['.htmlspecialchars($data_key).'] 
$data_key_msgball ['.htmlspecialchars($data_key_msgball).'] 
$data_key_folder_status_info 
['.htmlspecialchars($data_key_folder_status_info).']<br>'); }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: 
so_fill_data_group('.__LINE__.'): $data_key_folder_list 
['.htmlspecialchars($data_key_folder_list).'] $data_key_mailsvr_callstr 
['.htmlspecialchars($data_key_mailsvr_callstr).'] $data_key_mailsvr_namespace 
['.htmlspecialchars($data_key_mailsvr_namespace).']<br>'); }
+                       $num_rows = $GLOBALS['phpgw']->db->num_rows();
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 1) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: 
so_fill_data_group('.__LINE__.'): $num_rows ['.$num_rows.']<br>'); }
+                       if ($num_rows == 0)
+                       {
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 0) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
 LEAVING returning False<br>'); }
+                               return False;
+                       }
+                       // increment counter how many times we have filled 
group data
+                       // maybe some day we use to tell us when this is not 
appropriate if overused for some transactions
+                       $this->data_group_done_filled++;
+                       
+                       for ($i = 0; $i < $num_rows; $i++)
+                       {
+                               $GLOBALS['phpgw']->db->next_record();
+                               $my_data_key = 
$GLOBALS['phpgw']->db->f('data_key', 'stripslashes');
+                               // NOTE: we only stripslashes when NOT using 
compression
+                               // so we will stripslashes later if we need to
+                               $my_content = 
$GLOBALS['phpgw']->db->f('content');
+                               $this->data_group_array[$my_data_key] = 
$my_content;
+                       }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 2) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg: 
so_fill_data_group('.__LINE__.'): $this->data_group_array DUMP:', 
$this->data_group_array); }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_fill_data_group('.__LINE__.'):
 LEAVING returning TRUE, did fill group data<br>'); }
+                       return True;
+               }
+               
+               /*!
+               @function so_have_data_group
+               @abstract ?
+               */
+               function so_have_data_group()
+               {
+                       if (!$this->data_group_array)
+                       {
+                               return False;
+                       }
+                       else
+                       {
+                               return True;
+                       }
+               }
+               
+               /*!
+               @function so_clear_data_group
+               @abstract ?
+               */
+               function so_clear_data_group($data_key='')
+               {
+                       if (!$this->data_group_array)
+                       {
+                               return False;
+                       }
+                       
+                       if (!$data_key)
+                       {
+                               // wipe everything
+                               $this->data_group_array = array();
+                               return True;
+                       }
+                       elseif (isset($this->data_group_array[$data_key]))
+                       {
+                               // erease only one element
+                               $this->data_group_array[$data_key] = '';
+                               unset($this->data_group_array[$data_key]);
+                               return True;
+                       }
+                       else
+                       {
+                               // supposed to erease a single element but it 
is not set
+                               return False;
+                       }
+               }
+               
+               /*!
+               @function so_lookup_data_group
+               @abstract ?
+               */
+               function so_lookup_data_group($data_key, $do_stripslashes='')
+               {
+                       if ($this->use_group_data == False)
+                       {
+                               return False;
+                       }
+                       if (!$this->data_group_array)
+                       {
+                               return False;
+                       }
+                       if (!isset($this->data_group_array[$data_key]))
+                       {
+                               return False;
+                       }
+                       
+                       if ($do_stripslashes)
+                       {
+                               return 
stripslashes($this->data_group_array[$data_key]);
+                       }
+                       else
+                       {
+                               return $this->data_group_array[$data_key];
+                       }
+               }
+ 
+               
+               /*!
+               @function so_appsession_passthru
+               @abstract this will ONLY use the ACTUAL REAL APPSESSION of 
phpgwapi 
+               @param $location (string) in phpgwapi session speak this is the 
"name" of the information aka the 
+               key in a key value pair
+               @param $location (string) OPTIONAL the value in the key value 
pair. Empty will erase I THINK the 
+               apsession data stored for the "name" aka the "location". 
+               @discussion This is a SIMPLE PASSTHRU for the real phpgwapi 
session call. This function will 
+               never use the anglemail table, it is intended for stuff we 
REALLY want to last only for one session. 
+               @author Angles
+               */
+               function 
so_appsession_passthru($location='',$data='##NOTHING##', $compression=False)
+               {
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 ENTERING: $location ['.$location.'], $compression 
['.serialize($compression).']<br>'); }
+                       if ($GLOBALS['phpgw']->msg->session_cache_enabled == 
False)
+                       {
+                               // flag means we do not use any session caching
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 0) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 LEAVING, msg->session_cache_enabled False, so disabled session caching, 
returning False<br>'); }
+                               return False;
+                       }
+                       // ok we are allowed to do session caching ...
+                       // since $data may be boolean, boolean True will == any 
filled string
+                       // so for accuracy here we need to case $data as a 
string to do a real == statement
+                       if ((string)$data == '##NOTHING##')
+                       {
+                               // means we are GETTING data from appsession
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 request to get data<br>'); }
+                               if (($compression)
+                               && (function_exists('gzuncompress')))
+                               {
+                                       $content = 
$GLOBALS['phpgw']->session->appsession($location, 'email');
+                                       $content_preped = 
base64_encode(gzuncompress(serialize($content)));
+                                       $content = '';
+                                       unset($content);
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 LEAVING, returning passthru data hopefully<br>'); }
+                                       return $content_preped;
+                               }
+                               else
+                               {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 LEAVING, returning passthru data<br>'); }
+                                       return 
$GLOBALS['phpgw']->session->appsession($location, 'email');
+                               }
+                       }
+                       else
+                       {
+                               // means we are SETTING data to appsession
+                               if ($GLOBALS['phpgw']->msg->debug_so_class > 1) 
{ 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 request to SET data<br>'); }
+                               if (($compression)
+                               && (function_exists('gzcompress')))
+                               {
+                                       $content_preped = 
base64_encode(gzcompress(serialize($data)));
+                                       $data = '';
+                                       unset($data);
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 LEAVING, returning passthru value<br>'); }
+                                       return 
$GLOBALS['phpgw']->session->appsession($location, 'email', $content_preped);
+                               }
+                               else
+                               {
+                                       if 
($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 LEAVING, returning passthru value<br>'); }
+                                       return 
$GLOBALS['phpgw']->session->appsession($location, 'email', $data);
+                               }
+                       }
+                       if ($GLOBALS['phpgw']->msg->debug_so_class > 0) { 
$GLOBALS['phpgw']->msg->dbug->out('so_mail_msg.so_appsession_passthru('.__LINE__.'):
 ERROR: we should have returned by now<br>'); }
+               }
        }
  ?>

Index: class.spell.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.spell.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1

Index: class.spell_struct.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.spell_struct.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1

Index: class.spell_svc_none.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.spell_svc_none.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1

Index: class.spell_svc_php.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.spell_svc_php.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1

Index: class.svc_debug.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.svc_debug.inc.php,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
diff -C2 -r1.1.1.1 -r1.1.1.1.2.1
*** class.svc_debug.inc.php     13 Mar 2003 20:03:17 -0000      1.1.1.1
--- class.svc_debug.inc.php     8 Sep 2003 08:33:35 -0000       1.1.1.1.2.1
***************
*** 38,41 ****
--- 38,46 ----
                var $debugdata=array();
                
+               // for timimg, this is filled with data the first CALL to a 
class functions
+               var $t_first_call = '##NOTHING##';
+               // this is filled on CREATION of this class
+               var $t_on_creation = '##NOTHING##';
+               
                // available debug output types
                var 
$available_debug_outputs=array('echo_out','fill_array','fill_array__another_window','FUTURE');
***************
*** 52,56 ****
                function svc_debug()
                {
!                       // do nothing here
                }
                
--- 57,167 ----
                function svc_debug()
                {
!                       // fill a timestamp
!                       if ($this->t_on_creation == '##NOTHING##')
!                       {
!                               $this->t_on_creation = array();
!                               $this->t_on_creation['raw'] = microtime();
!                               // we'll finish it later
!                               $this->t_on_creation['useful'] == '##NOTHING##';
!                       }
!                       return;
!               }
!               
!               
!               /*!
!               @function ensure_time_stamps
!               @abstract ? 
!               */
!               function ensure_time_stamps()
!               {
!                       // get a useful timestamp out of the constructor filled 
creation mtime
!                       if (!isset($this->t_on_creation['useful'])
!                       || ($this->t_on_creation['useful'] == '##NOTHING##'))
!                       {
!                               list($this->t_on_creation['t_micro'], 
$this->t_on_creation['t_int']) = explode(' ', $this->t_on_creation['raw']);
!                               $this->t_on_creation['full_str'] = '';
!                               $this->t_on_creation['full_str'] = 
(string)$this->t_on_creation['t_int'].(string)substr($this->t_on_creation['t_micro'],
 1);
!                               $this->t_on_creation['useful'] = 
$this->microtime_to_useful($this->t_on_creation['raw']);
!                               // add one second in for use when time rolls 
over from 9 sec to "10" sec 
!                               //$this->t_on_creation['useful_plus_one_sec'] = 
$this->useful_add_one_sec($this->t_on_creation['useful']);
!                       }
!                       // not the "since first call to a function here" 
timestamp
!                       if ($this->t_first_call == '##NOTHING##')
!                       {
!                               $this->t_first_call = array();
!                               $this->t_first_call['raw'] = microtime();
!                               list($this->t_first_call['t_micro'], 
$this->t_first_call['t_int']) = explode(' ', $this->t_first_call['raw']);
!                               $this->t_first_call['full_str'] = '';
!                               $this->t_first_call['full_str'] = 
(string)$this->t_first_call['t_int'].(string)substr($this->t_first_call['t_micro'],
 1);
!                               
!                               $this->t_first_call['useful'] = 
$this->microtime_to_useful($this->t_first_call['raw']);
!                               //$this->t_on_creation['useful_plus_one_sec'] = 
$this->useful_add_one_sec($this->t_on_creation['useful']);
!                       }
!               }
!               
!               /*!
!               @function microtime_to_useful
!               @abstract ? 
!               */
!               function microtime_to_useful($feed_micro_str)
!               {
!                       // microtime gives us "0.26469400 1050637805"
!                       // split the parts
!                       list($t_micro, $t_int) = explode(' ', $feed_micro_str);
!                       // shorten the microsec by 2 numbers
!                       $t_micro_short = substr($t_micro,0, -2);
!                       // replace the "0." at pos 1 of microsec with the2  
final sec digit (05 in this example)
!                       $last_sec_digits = substr($t_int,-2);
!                       $useful_t_micro = 
str_replace('0.',$last_sec_digits,$t_micro_short);
!                       // now return an int that is last_sec_digitS concat 
with t_micro into one BIG INT
!                       return (int)$useful_t_micro;
!               }
!               
!               /*!
!               @function microtime_to_useful
!               @abstract ? 
!               */
!               function diff_to_seconds($feed_diff)
!               {
!                       // microtime gives us "0.26469400 1050637805"
!                       // micro part is 8 digits
!                       // cut that by 2 digits, then add the last 2 second 
digits from the seconds part
!                       // so we have S=seconds M=microseconds
!                       // SSMMMMMM
!                       // so the diff between 2 of these variable length, 
let's standardize it
!                       // also, the diff of length 6 or less is not yet a 
second of difference
!                       $feed_diff = (string)$feed_diff;
!                       $feed_diff_length = strlen($feed_diff);
!                       $return_diff = '';
!                       if ($feed_diff_length <= 6)
!                       {
!                               if (function_exists('str_pad') == False)
!                               {
!                                       // we need to add 0 digits preappended 
to this diff
!                                       $return_diff = $feed_diff;
!                                       $add_digits = 6 - $feed_diff_length;
!                                       for ($i = 0; $i < $add_digits; $i++)
!                                       {
!                                               $return_diff = '0'.$return_diff;
!                                       }
!                               }
!                               else
!                               {
!                                       // same thing using str_pad
!                                       $return_diff = str_pad($feed_diff, 6, 
'0', STR_PAD_LEFT);
!                               }
!                               // now add the dot "."
!                               $return_diff = '0.'.$return_diff;
!                       }
!                       else
!                       {                       
!                               // diff of length 7 or more, then digit 1 out 
of 7 is a second second+ diff.
!                               // position to add dot "." to the string is 
leaving 6 digits after the dot
!                               $micro_part = substr($feed_diff, -6);
!                               $return_diff = str_replace($micro_part, 
'.'.$micro_part, $feed_diff);
!                               
!                       }
!                       
!                       return $return_diff;
                }
                
***************
*** 71,75 ****
                */
                function out($str='', $dump_obj='', $output_to='')
!               {                       
                        // normalize some params
                        if ((!$output_to)
--- 182,186 ----
                */
                function out($str='', $dump_obj='', $output_to='')
!               {       
                        // normalize some params
                        if ((!$output_to)
***************
*** 80,87 ****
                        $output_to = $this->debugoutput_to;
                        
                        if (!$str)
                        {
!                               $str = 'mail_msg_display: out: no debug message 
provided';
                        }
                        // output the debug info
                        if ($output_to == 'echo_out')
--- 191,214 ----
                        $output_to = $this->debugoutput_to;
                        
+                       $this->ensure_time_stamps();
+                       $current_mtime = microtime();
+                       // this returns mtime as an INTEGER so we can actually 
use it
+                       $current_useful = 
$this->microtime_to_useful($current_mtime);
+                       //$diff = $current_useful - 
$this->t_first_call['useful'];
+                       $diff = $current_useful - 
$this->t_on_creation['useful'];
+                       $diff = $this->diff_to_seconds($diff);
+                       $diff = (string)$diff;
+                       
                        if (!$str)
                        {
!                               $str = 'svc_debug: out('.__LINE__.'): out: no 
debug message provided';
                        }
+                       
+                       // add time stamp
+                       //$str = '<small>('.$this->t_first_call['raw'].' :: 
'.$this->t_first_call['useful'].')</small> '.$str;
+                       //$str = 
'<small>('.$this->t_first_call['full_str'].')</small> '.$str;
+                       //$str = 
'<small>('.$this->t_first_call['float'].')</small> '.$str;
+                       $str = '<small><font 
color="brown">(+'.$diff.')</font></small> '.$str;
+                       
                        // output the debug info
                        if ($output_to == 'echo_out')
***************
*** 91,97 ****
                                && ($dump_obj))
                                {
!                                       echo '<pre>';
!                                       print_r($dump_obj);
!                                       echo '</pre>';
                                }
                        }
--- 218,224 ----
                                && ($dump_obj))
                                {
!                                       echo '<pre>'; print_r($dump_obj); echo 
'</pre>';
!                                       // EXPIREMENTAL
!                                       //echo 
'<br><small>'.$this->fake_print_r($dump_obj).'</small></br>';
                                }
                        }
***************
*** 101,110 ****
                                // do this for simple "fill_array" and for 
"fill_array__another_window"
                                $this->debugdata[] = $str;
                                if ((isset($dump_obj))
                                && ($dump_obj))
                                {
                                        //$this->debugdata[] = 
'<pre>'.serialize($dump_obj).'</pre>';
!                                       $this->debugdata[] = '<br 
/>'.serialize($dump_obj).'<br />';
                                        //$this->debugdata[] = '<br 
/>'.$this->htmlspecialchars_encode(serialize($dump_obj)).'<br />';
                                }
                        }
--- 228,247 ----
                                // do this for simple "fill_array" and for 
"fill_array__another_window"
                                $this->debugdata[] = $str;
+                               // fake_print_r does not yet work on objects
                                if ((isset($dump_obj))
+                               && (is_object($dump_obj)))
+                               {
+                                       //$this->debugdata[] = '<br 
/>'.serialize($dump_obj).'<br />';
+                                       $this->debugdata[] = '<br /> 
<pre>'.$this->print_r_log($dump_obj).'</pre> <br />';
+                               }
+                               elseif ((isset($dump_obj))
                                && ($dump_obj))
                                {
                                        //$this->debugdata[] = 
'<pre>'.serialize($dump_obj).'</pre>';
!                                       //$this->debugdata[] = '<br 
/>'.serialize($dump_obj).'<br />';
                                        //$this->debugdata[] = '<br 
/>'.$this->htmlspecialchars_encode(serialize($dump_obj)).'<br />';
+                                       // this works ok
+                                       //$this->debugdata[] = '<br 
/><small>'.$this->fake_print_r($dump_obj).'</small><br />';
+                                       $this->debugdata[] = '<br /> 
<pre>'.$this->print_r_log($dump_obj).'</pre> <br />';
                                }
                        }
***************
*** 175,178 ****
--- 312,342 ----
                                        $this_line = preg_replace('/(&lt;font 
color=&quot;)(.*)(&quot;&gt;)(.*)(&lt;\/font&gt;)/U','<font color="\2"> \4 
</font>',$this_line);
                                        $this_line = str_replace(' 
__LINEBREAK_BR__ ', '<br />', $this_line);
+                                       $this_line = str_replace(' 
__LINEBREAK__ ', '<br />', $this_line);
+                                       // NEW STUFF
+                                       // <small> .. </small>
+                                       $this_line = 
str_replace('&lt;small&gt;', '<small>', $this_line);
+                                       $this_line = 
str_replace('&lt;/small&gt;', '</small>', $this_line);
+                                       // <li> .. </li>
+                                       $this_line = str_replace('&lt;li&gt;', 
'<li>', $this_line);
+                                       $this_line = str_replace('&lt;/li&gt;', 
'</li>', $this_line);
+                                       // <u> .. </u>
+                                       $this_line = str_replace('&lt;u&gt;', 
'<u>', $this_line);
+                                       $this_line = str_replace('&lt;/u&gt;', 
'</u>', $this_line);
+                                       // =&gt
+                                       $this_line = str_replace('=&amp;gt;', 
'=&gt;', $this_line);
+                                       // <code> .. </code>
+                                       $this_line = 
str_replace('&lt;code&gt;', '<code>', $this_line);
+                                       $this_line = 
str_replace('&lt;/code&gt;', '</code>', $this_line);
+                                       // <pre> .. </pre>
+                                       $this_line = str_replace('&lt;pre&gt;', 
'<pre>', $this_line);
+                                       $this_line = 
str_replace('&lt;/pre&gt;', '</pre>', $this_line);
+                                       // <ul style="list-style-type: none;"> 
.. </ul>
+                                       $this_line = str_replace('&lt;ul 
style=&quot;list-style-type: none;&quot;&gt;', '<ul style="list-style-type: 
none;">', $this_line);
+                                       $this_line = str_replace('&lt;/ul&gt;', 
'</ul>', $this_line);
+                                       //$this_line = preg_replace('/(&lt;font 
color=&quot;)(.*)(&quot;&gt;)(.*)(&lt;\/font&gt;)/U','<font color="\2"> \4 
</font>',$this_line);
+                                       // &gt .. &lt
+                                       $this_line = str_replace('&amp;lt;', 
'&lt;', $this_line);
+                                       $this_line = str_replace('&amp;gt;', 
'&gt;', $this_line);
+                                       
                                        $temp_data .= '<br />+ '.$this_line;
                                }
***************
*** 235,238 ****
--- 399,406 ----
  var _console = null;
  var _did_output = 0;
+ // do we close it every page view and start blank with next page
+ // do we keep the window open and keep appending
+ var _append_to_console = 0;
+ //var _append_to_console = 1;
  function do_debug(msg)
  {
***************
*** 253,257 ****
        // or not calling close will add the next page view debug data to the 
existing text here
        // ALSO calling close requires the open statement check above
!       //_console.document.close();
        _did_output = 1;
  }
--- 421,427 ----
        // or not calling close will add the next page view debug data to the 
existing text here
        // ALSO calling close requires the open statement check above
!       if (_append_to_console == 0) {
!               _console.document.close();
!       }
        _did_output = 1;
  }
***************
*** 272,275 ****
--- 442,498 ----
                        
                        return $other_window_js;
+               }
+               
+               
+               /*!
+               @function fake_print_r
+               @abstract like php print_r EXCEPT it returns an html string 
instead of echoing out
+               @discussion This made by Seek3r as part of the phpgwapi file 
"php3_support_functions", it 
+               is simply copied here for easier use. I, Angles, made almost no 
changes to the original Seek3r code 
+               in this function which had been called "print_r" in said file. 
+               @author Seek3r, Angles
+               */
+               function fake_print_r($array,$print=False)
+               {
+                       $str = '';
+                       if(gettype($array)=="array")
+                       {
+                               //$str .= '<ul>';
+                               $str .= '<ul style="list-style-type: none;">';
+                               while (list($index, $subarray) = each($array) )
+                               {
+                                       $str .= '<li>'.$index.' 
<code>=&gt;</code>';
+                                       //$str .= print_r($subarray,$print);
+                                       $str .= 
$this->fake_print_r($subarray,$print);
+                                       $str .= '</li>';
+                               }
+                               $str .= '</ul>';
+                       }
+                       else
+                       {
+                               $str .= $array;
+                       }
+                       if($print)
+                       {
+                               echo $str;
+                       }
+                       else
+                       {
+                               return $str;
+                       }
+               }
+               
+               /*!
+               @function print_r_log
+               @abstract user example on php site about print_r as a var 
string using OB
+               @discussion ?
+               */
+               function print_r_log($var)
+               {
+                       ob_start();
+                       print_r($var);
+                       $ret_str = ob_get_contents();
+                       ob_end_clean();
+                       return $ret_str;
                }
                

Index: class.svc_nextmatches.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.svc_nextmatches.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1
*** class.svc_nextmatches.inc.php       14 Mar 2003 04:01:12 -0000      1.2
--- class.svc_nextmatches.inc.php       8 Sep 2003 08:33:35 -0000       1.2.2.1
***************
*** 333,337 ****
                                //$img_full = 
$GLOBALS['phpgw']->common->image('email',$img);
                                $img_full = 
$GLOBALS['phpgw']->msg->_image_on('email',$img,'_on');
!                               $image_part = '<img src="'.$img_full.'" 
border="0" alt="'.$alt_text.'">';
                                return '<a 
href="'.$out_vars['common_uri'].'&start='.$out_vars['start'].'">'.$image_part.'</a>';
                        }
--- 333,337 ----
                                //$img_full = 
$GLOBALS['phpgw']->common->image('email',$img);
                                $img_full = 
$GLOBALS['phpgw']->msg->_image_on('email',$img,'_on');
!                               $image_part = '<img src="'.$img_full.'" 
border="0" title="'.$alt_text.'"  alt="'.$alt_text.'">';
                                return '<a 
href="'.$out_vars['common_uri'].'&start='.$out_vars['start'].'">'.$image_part.'</a>';
                        }
***************
*** 363,367 ****
                                //$img_full = 
$GLOBALS['phpgw']->common->image('email',$img);
                                $img_full = 
$GLOBALS['phpgw']->msg->_image_on('email',$img,'_on');
!                               return '<img src="'.$img_full.'" border="0" 
alt="'.$alt_text.'">'."\r\n"; 
                        }
                }
--- 363,367 ----
                                //$img_full = 
$GLOBALS['phpgw']->common->image('email',$img);
                                $img_full = 
$GLOBALS['phpgw']->msg->_image_on('email',$img,'_on');
!                               return '<img src="'.$img_full.'" border="0" 
title="'.$alt_text.'" alt="'.$alt_text.'">'."\r\n"; 
                        }
                }

Index: class.ui_mail_debug.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.ui_mail_debug.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1
*** class.ui_mail_debug.inc.php 14 Mar 2003 04:01:12 -0000      1.2
--- class.ui_mail_debug.inc.php 8 Sep 2003 08:33:36 -0000       1.2.2.1
***************
*** 49,53 ****
                var $debug=0;
                //var $debug=1;
!               
                
                /*!
--- 49,53 ----
                var $debug=0;
                //var $debug=1;
!               var $tpl='##NOTHING##';
                
                /*!
***************
*** 60,64 ****
                        
                        $this->widgets = CreateObject("email.html_widgets");
!                       
                        if ($this->debug > 0) { echo 'EXIT: 
email.ui_mail_debug.CONSTRUCTOR'.'<br>'."\r\n"; }
                }
--- 60,64 ----
                        
                        $this->widgets = CreateObject("email.html_widgets");
!                       $this->ensure_tpl_object();
                        if ($this->debug > 0) { echo 'EXIT: 
email.ui_mail_debug.CONSTRUCTOR'.'<br>'."\r\n"; }
                }
***************
*** 80,83 ****
--- 80,84 ----
                        //$this->msg_bootstrap->set_do_login(False);
                        
$this->msg_bootstrap->ensure_mail_msg_exists('emai.ui_mail_debug.invoke_bootatrap',
 $this->debug);              
+                       
                        if ($this->debug > 0) { echo 'EXITing: 
email.ui_mail_debug.invoke_bootatrap'.'<br>'; }
                }
***************
*** 103,106 ****
--- 104,131 ----
                        if ($this->debug > 0) { echo 'EXITing: 
email.ui_mail_debug.end_msg_session_object'.'<br>'; }
                }
+ 
+               /*!
+               @function ensure_tpl_object
+               @abstract sets class var "tpl" depending on whether or not XSLT 
is in use or not.
+               @author Angles
+               */
+               function ensure_tpl_object()
+               {
+                       // NOW WE KNOW WE HAVE A MSG OBJECT so handle xslt tpl 
issue now
+                       if ($this->tpl == '##NOTHING##')
+                       {
+                               if (is_object($GLOBALS['phpgw']->xslttpl) == 
False)
+                               {
+                                       // we point to the global template for 
this version of phpgw templatings
+                                       $this->tpl =& 
$GLOBALS['phpgw']->template;
+                                       //$this->tpl = 
CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
+                               }
+                               else
+                               {
+                                       // we use a PRIVATE template object for 
0.9.14 conpat and during xslt porting
+                                       $this->tpl = 
CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
+                               }
+                       }
+               }
                
                
/**************************************************************************\
***************
*** 120,137 ****
                        if ($this->debug > 0) { echo 'ENTERING: 
email.ui_mail_debug.index'.'<br>'; }
                        
!                       unset($GLOBALS['phpgw_info']['flags']['noheader']);
!                       unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
!                       $GLOBALS['phpgw_info']['flags']['noappheader'] = True;
!                       $GLOBALS['phpgw_info']['flags']['noappfooter'] = True;
!                       $GLOBALS['phpgw']->common->phpgw_header();
                        
!                       $GLOBALS['phpgw']->template->set_file(array(
                                'T_debug_main' => 'debug.tpl'
                        ));
!                       
$GLOBALS['phpgw']->template->set_block('T_debug_main','B_before_echo','V_before_echo');
!                       
$GLOBALS['phpgw']->template->set_block('T_debug_main','B_after_echo','V_after_echo');
                        
                        
!                       $GLOBALS['phpgw']->template->set_var('page_desc', 
'Email Debug Stuff');
                        
                        // make a list of available debub calls
--- 145,169 ----
                        if ($this->debug > 0) { echo 'ENTERING: 
email.ui_mail_debug.index'.'<br>'; }
                        
!                       if (is_object($GLOBALS['phpgw']->xslttpl) == False)
!                       {
!                               
unset($GLOBALS['phpgw_info']['flags']['noheader']);
!                               
unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
!                               $GLOBALS['phpgw_info']['flags']['noappheader'] 
= True;
!                               $GLOBALS['phpgw_info']['flags']['noappfooter'] 
= True;
!                               $GLOBALS['phpgw']->common->phpgw_header();
!                       }
!                       else
!                       {
!                               
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
!                       }
                        
!                       $this->tpl->set_file(array(
                                'T_debug_main' => 'debug.tpl'
                        ));
!                       
$this->tpl->set_block('T_debug_main','B_before_echo','V_before_echo');
!                       
$this->tpl->set_block('T_debug_main','B_after_echo','V_after_echo');
                        
                        
!                       $this->tpl->set_var('page_desc', 'Email Debug Stuff');
                        
                        // make a list of available debub calls
***************
*** 140,178 ****
                        //$this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('phpinfo page');
!                       $GLOBALS['phpgw']->template->set_var('func_E1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=get_defined_constants'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('get_defined_constants 
DUMP');
!                       $GLOBALS['phpgw']->template->set_var('func_E2', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_dump'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('dump the entire 
globals[] array');
!                       $GLOBALS['phpgw']->template->set_var('func_E3', 
$this->widgets->get_href());
                        
                        // DUMP functions
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=common.debug_list_core_functions'));
                        
$this->widgets->set_href_clickme('common.debug_list_core_functions');
!                       $GLOBALS['phpgw']->template->set_var('func_D1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_phpgw_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
globals[phpgw] structure');
!                       $GLOBALS['phpgw']->template->set_var('func_D2', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_phpgw_info_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
globals[phpgw_info] structure');
!                       $GLOBALS['phpgw']->template->set_var('func_D3', 
$this->widgets->get_href());
                        
                        
//$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_phpgw_session_dump'));
                        //$this->widgets->set_href_clickme('dump the entire 
globals[phpgw_session] structure');
!                       //$GLOBALS['phpgw']->template->set_var('func_D4', 
$this->widgets->get_href());
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=ref_session_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
msg->ref_SESSION structure');
!                       $GLOBALS['phpgw']->template->set_var('func_D4', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=msg_object_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
globals[phpgw]->msg object');
!                       $GLOBALS['phpgw']->template->set_var('func_D5', 
$this->widgets->get_href());
                        
                        // inline docs
--- 172,214 ----
                        //$this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('phpinfo page');
!                       $this->tpl->set_var('func_E1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=get_defined_constants'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('get_defined_constants 
DUMP');
!                       $this->tpl->set_var('func_E2', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_dump'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('dump the entire 
globals[] array');
!                       $this->tpl->set_var('func_E3', 
$this->widgets->get_href());
                        
                        // DUMP functions
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=common.debug_list_core_functions'));
                        
$this->widgets->set_href_clickme('common.debug_list_core_functions');
!                       $this->tpl->set_var('func_D1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_phpgw_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
globals[phpgw] structure');
!                       $this->tpl->set_var('func_D2', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_phpgw_info_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
globals[phpgw_info] structure');
!                       $this->tpl->set_var('func_D3', 
$this->widgets->get_href());
                        
                        
//$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=globals_phpgw_session_dump'));
                        //$this->widgets->set_href_clickme('dump the entire 
globals[phpgw_session] structure');
!                       //$this->tpl->set_var('func_D4', 
$this->widgets->get_href());
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=ref_session_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
msg->ref_SESSION structure');
!                       $this->tpl->set_var('func_D4', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=msg_object_dump'));
                        $this->widgets->set_href_clickme('dump the entire 
globals[phpgw]->msg object');
!                       $this->tpl->set_var('func_D5', 
$this->widgets->get_href());
!                       
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=preferences_object_dump'));
!                       $this->widgets->set_href_clickme('dump the entire 
$GLOBALS[phpgw]->preferences object');
!                       $this->tpl->set_var('func_D6', 
$this->widgets->get_href());
                        
                        // inline docs
***************
*** 180,258 ****
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
phpgwapi');                       
!                       $GLOBALS['phpgw']->template->set_var('func_I1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=phpwebhosting'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
phpwebhosing VFS');
!                       $GLOBALS['phpgw']->template->set_var('func_I2', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email');
!                       $GLOBALS['phpgw']->template->set_var('func_I3', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_msg_base.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_msg_base.inc.php"');
!                       $GLOBALS['phpgw']->template->set_var('func_I4', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_msg_display.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_msg_display.inc.php"');
!                       $GLOBALS['phpgw']->template->set_var('func_I5', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_msg_wrappers.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_msg_wrappers.inc.php"');
!                       $GLOBALS['phpgw']->template->set_var('func_I6', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_dcom_imap_sock.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_dcom_imap_sock.inc.php"');
!                       $GLOBALS['phpgw']->template->set_var('func_I7', 
$this->widgets->get_href());
                        
                        // other stuff
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=copyinteresting'));
                        $this->widgets->set_href_clickme('copy emails in BOB 
interesting to Local folder (no workie)');
!                       $GLOBALS['phpgw']->template->set_var('func_O1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=env_test'));
                        $this->widgets->set_href_clickme('utility for testing 
env code parts');
!                       $GLOBALS['phpgw']->template->set_var('func_O2', 
$this->widgets->get_href());
                        
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=make_table'));
                        $this->widgets->set_href_clickme('Create the email DB 
table');
!                       $GLOBALS['phpgw']->template->set_var('func_O3', 
$this->widgets->get_href());
                        
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=rm_table'));
                        $this->widgets->set_href_clickme('Delete the email DB 
table');
!                       $GLOBALS['phpgw']->template->set_var('func_O4', 
$this->widgets->get_href());
!                       
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=so_am_table_exists'));
!                       $this->widgets->set_href_clickme('Check if email DB 
table exists');
!                       $GLOBALS['phpgw']->template->set_var('func_O5', 
$this->widgets->get_href());
                        
!                       
$GLOBALS['phpgw']->template->parse('V_before_echo','B_before_echo');
!                       $GLOBALS['phpgw']->template->pfp('out','T_debug_main');
                        
!                       // IF we need to show debug data, now is the time
!                       $this->show_desired_data();
                        
                        
                        if ($this->debug > 0) { echo 'EXITing...: 
email.ui_mail_debug.index'.'<br>'; }
                        
!                       // clear the previous tpl var and fill the ending one
!                       
$GLOBALS['phpgw']->template->set_var('V_before_echo','');
!                       
$GLOBALS['phpgw']->template->parse('V_after_echo','B_after_echo');
!                       $GLOBALS['phpgw']->template->pfp('out','T_debug_main');
                }
                
                function show_desired_data()
                {
!                       // DAMN, we need a ->msg just to do the ref_GET stuff
!                       $this->invoke_bootatrap();
                        
!                       echo 'REQUEST_URI: 
'.$GLOBALS['phpgw']->msg->ref_SERVER['REQUEST_URI'].'<br>';
!                       echo 'QUERY_STRING: 
'.$GLOBALS['phpgw']->msg->ref_SERVER['QUERY_STRING'].'<br>';
                        
                        if ((isset($GLOBALS['phpgw']->msg->ref_GET['dfunc']))
--- 216,325 ----
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
phpgwapi');                       
!                       $this->tpl->set_var('func_I1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=phpwebhosting'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
phpwebhosing VFS');
!                       $this->tpl->set_var('func_I2', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email');
!                       $this->tpl->set_var('func_I3', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_msg_base.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_msg_base.inc.php"');
!                       $this->tpl->set_var('func_I4', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_msg_display.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_msg_display.inc.php"');
!                       $this->tpl->set_var('func_I5', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_msg_wrappers.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_msg_wrappers.inc.php"');
!                       $this->tpl->set_var('func_I6', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/doc/inlinedocparser.php?app=email&fn=class.mail_dcom_imap_sock.inc.php'));
                        $this->widgets->set_href_target('new');
                        $this->widgets->set_href_clickme('inlinedocparser for 
email, file "class.mail_dcom_imap_sock.inc.php"');
!                       $this->tpl->set_var('func_I7', 
$this->widgets->get_href());
                        
                        // other stuff
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=copyinteresting'));
                        $this->widgets->set_href_clickme('copy emails in BOB 
interesting to Local folder (no workie)');
!                       $this->tpl->set_var('func_O1', 
$this->widgets->get_href());
                        
                        
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=env_test'));
                        $this->widgets->set_href_clickme('utility for testing 
env code parts');
!                       $this->tpl->set_var('func_O2', 
$this->widgets->get_href());
                        
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=db_admin_make_table'));
                        $this->widgets->set_href_clickme('Create the email DB 
table');
!                       $this->tpl->set_var('func_O3', 
$this->widgets->get_href());
                        
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=db_admin_rm_table'));
                        $this->widgets->set_href_clickme('Delete the email DB 
table');
!                       $this->tpl->set_var('func_O4', 
$this->widgets->get_href());
                        
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=db_admin_clear_entire_table'));
!                       $this->widgets->set_href_clickme('Wipe the email DB 
table');
!                       $this->tpl->set_var('func_O5', 
$this->widgets->get_href());
                        
!                       
$this->widgets->set_href_link($GLOBALS['phpgw']->link('/index.php','menuaction=email.ui_mail_debug.index&dfunc=db_am_table_exists'));
!                       $this->widgets->set_href_clickme('Check if email DB 
table exists');
!                       $this->tpl->set_var('func_O6', 
$this->widgets->get_href());
                        
+                       if (is_object($GLOBALS['phpgw']->xslttpl) == False)
+                       {
+                               
$this->tpl->parse('V_before_echo','B_before_echo');
+                               $this->tpl->pfp('out','T_debug_main');
+                               // IF we need to show debug data, now is the 
time
+                               $this->show_desired_data();
+                               // new way to handle debug data, if there is 
debug data, this will put it in the template source data vars
+                               $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
+                               // clear the previous tpl var and fill the 
ending one
+                               $this->tpl->set_var('V_before_echo','');
+                               
$this->tpl->parse('V_after_echo','B_after_echo');
+                               $this->tpl->pfp('out','T_debug_main');
+                       }
+                       else
+                       {
+                               $this->tpl->set_unknowns('comment');
+                               //$this->tpl->set_unknowns('remove');
+                               $data = array();
+                               //$data['appname'] = lang('E-Mail');
+                               //$data['function_msg'] = lang('Folders');
+                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('Debugging Page');
+                               // IF we need to show debug data, now is the 
time
+                               $this->show_desired_data();
+                               // new way to handle debug data, if there is 
debug data, this will put it in the template source data vars
+                               $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
+                               $data['email_page'] = 
$this->tpl->parse('out','T_debug_main');
+                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
+                               
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
+                       }
                        
                        if ($this->debug > 0) { echo 'EXITing...: 
email.ui_mail_debug.index'.'<br>'; }
                        
!                       $this->end_msg_session_object();
                }
                
                function show_desired_data()
                {
!                       // DAMN, we need a ->msg just to do the ref_GET stuff 
and tpl stuff
!                       $this->invoke_bootatrap();
!                       
!                       // NOW WE HAVE A MSG OBJECT!!! we can use its debug 
functions now
                        
!                       //echo 'REQUEST_URI: 
'.$GLOBALS['phpgw']->msg->ref_SERVER['REQUEST_URI'].'<br>';
!                       //echo 'QUERY_STRING: 
'.$GLOBALS['phpgw']->msg->ref_SERVER['QUERY_STRING'].'<br>';
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 REQUEST_URI: '.$GLOBALS['phpgw']->msg->ref_SERVER['REQUEST_URI'].'<br>');
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 QUERY_STRING: '.$GLOBALS['phpgw']->msg->ref_SERVER['QUERY_STRING'].'<br>');
!                       
!                       $desired_function = '';
!                       $uri_confirm = '';
                        
                        if ((isset($GLOBALS['phpgw']->msg->ref_GET['dfunc']))
***************
*** 260,268 ****
                        {
                                $desired_function = 
$GLOBALS['phpgw']->msg->ref_GET['dfunc'];
!                               echo "You requested: 
".$desired_function.'<br>'."\r\n";
                        }
                        else
                        {
!                               echo "no desired data";
                                return;
                        }
--- 327,347 ----
                        {
                                $desired_function = 
$GLOBALS['phpgw']->msg->ref_GET['dfunc'];
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 You requested: '.$desired_function.'<br>');
!                               
!                               // some things require you manually type in 
"&confirn=1" to really make it work
!                               if 
((isset($GLOBALS['phpgw']->msg->ref_GET['confirm']))
!                               && ($GLOBALS['phpgw']->msg->ref_GET['confirm'] 
!= ''))
!                               {
!                                       $uri_confirm = 
$GLOBALS['phpgw']->msg->ref_GET['confirm'];
!                                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 confirm token is present in URI: '.$uri_confirm.'<br>');
!                               }
!                               else
!                               {
!                                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 no confirm token is in the URI'.'<br>');
!                               }
                        }
                        else
                        {
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 no desired data'.'<br>');
                                return;
                        }
***************
*** 276,289 ****
                        {
                                // this function echos out its data
!                               echo 'get_defined_constants DUMP:<pre>';
!                               print_r(get_defined_constants());
!                               echo '</pre>';
                        }
                        elseif ($desired_function == 'globals_dump')
                        {
                                // this function echos out its data
!                               echo 'GLOBALS[] array dump:<pre>';
!                               print_r($GLOBALS) ;
!                               echo '</pre>';
  
                        }
--- 355,367 ----
                        {
                                // this function echos out its data
!                               //echo 'get_defined_constants DUMP:<pre>'; 
print_r(get_defined_constants()); echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 get_defined_constants DUMP:', get_defined_constants());
!                               
                        }
                        elseif ($desired_function == 'globals_dump')
                        {
                                // this function echos out its data
!                               //echo 'GLOBALS[] array dump:<pre>'; 
print_r($GLOBALS) ; echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 GLOBALS[] array DUMP:', $GLOBALS);
  
                        }
***************
*** 296,331 ****
                        {
                                // this function echos out its data
!                               echo 'GLOBALS[phpgw] dump:<pre>';
!                               print_r($GLOBALS['phpgw']) ;
!                               echo '</pre>';
! 
                        }
                        elseif ($desired_function == 'globals_phpgw_info_dump')
                        {
                                // this function echos out its data
!                               echo 'GLOBALS[phpgw_info] dump:<pre>';
!                               print_r($GLOBALS['phpgw_info']) ;
!                               echo '</pre>';
                        }
                        elseif ($desired_function == 
'globals_phpgw_session_dump')
                        {
                                // this function echos out its data
!                               echo 'GLOBALS[phpgw_session] dump:<pre>';
!                               print_r($GLOBALS['phpgw_session']) ;
!                               echo '</pre>';
                        }
                        elseif ($desired_function == 'ref_session_dump')
                        {
                                // this function echos out its data
!                               echo 'msg->ref_SESSION dump:<pre>';
!                               print_r($GLOBALS['phpgw']->msg->ref_SESSION) ;
!                               echo '</pre>';
                        }
                        elseif ($desired_function == 'msg_object_dump')
                        {
                                // this function echos out its data
!                               echo 'GLOBALS[phpgw]->msg dump:<pre>';
!                               print_r($GLOBALS['phpgw']->msg) ;
!                               echo '</pre>';
                        }
                        elseif ($desired_function == 'copyinteresting')
--- 374,409 ----
                        {
                                // this function echos out its data
!                               //echo 'GLOBALS[phpgw] dump:<pre>'; 
print_r($GLOBALS['phpgw']) ; echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 GLOBALS[phpgw] DUMP:', $GLOBALS['phpgw']);
                        }
                        elseif ($desired_function == 'globals_phpgw_info_dump')
                        {
                                // this function echos out its data
!                               //echo 'GLOBALS[phpgw_info] dump:<pre>'; 
print_r($GLOBALS['phpgw_info']) ; echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 GLOBALS[phpgw_info] DUMP:', $GLOBALS['phpgw_info']);
                        }
                        elseif ($desired_function == 
'globals_phpgw_session_dump')
                        {
                                // this function echos out its data
!                               //echo 'GLOBALS[phpgw_session] dump:<pre>'; 
print_r($GLOBALS['phpgw_session']) ; echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 GLOBALS[phpgw_session] DUMP:', $GLOBALS['phpgw_session']);
                        }
                        elseif ($desired_function == 'ref_session_dump')
                        {
                                // this function echos out its data
!                               //echo 'msg->ref_SESSION dump:<pre>'; 
print_r($GLOBALS['phpgw']->msg->ref_SESSION); echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 msg->ref_SESSION DUMP:', $GLOBALS['phpgw']->msg->ref_SESSION);
                        }
                        elseif ($desired_function == 'msg_object_dump')
                        {
                                // this function echos out its data
!                               //echo 'GLOBALS[phpgw]->msg dump:<pre>'; 
print_r($GLOBALS['phpgw']->msg) ; echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 GLOBALS[phpgw]->msg DUMP:', $GLOBALS['phpgw']->msg);
!                       }
!                       elseif ($desired_function == 'preferences_object_dump')
!                       {
!                               // this function echos out its data
!                               //echo '$GLOBALS[phpgw]->preferences 
dump:<pre>'; print_r($GLOBALS['phpgw']->preferences) ; echo '</pre>';
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 GLOBALS[phpgw]->preferences DUMP:', $GLOBALS['phpgw']->preferences);
                        }
                        elseif ($desired_function == 'copyinteresting')
***************
*** 337,355 ****
                                $this->env_test();
                        }
!                       elseif ($desired_function == 'make_table')
                        {
!                               $this->make_table();
                        }
!                       elseif ($desired_function == 'rm_table')
                        {
!                               $this->rm_table();
                        }
!                       elseif ($desired_function == 'so_am_table_exists')
                        {
!                               $this->so_am_table_exists();
                        }
                        else
                        {
!                               echo 'unknown desired debug request: 
"'.$desired_function.'"<br>';
                        }
                        
--- 415,437 ----
                                $this->env_test();
                        }
!                       elseif ($desired_function == 'db_admin_make_table')
!                       {
!                               $this->db_admin_make_table($uri_confirm);
!                       }
!                       elseif ($desired_function == 'db_admin_rm_table')
                        {
!                               $this->db_admin_rm_table($uri_confirm);
                        }
!                       elseif ($desired_function == 
'db_admin_clear_entire_table')
                        {
!                               
$this->db_admin_clear_entire_table($uri_confirm);
                        }
!                       elseif ($desired_function == 'db_am_table_exists')
                        {
!                               $this->db_am_table_exists();
                        }
                        else
                        {
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 unknown desired debug request: '.$desired_function.']<br>');
                        }
                        
***************
*** 357,365 ****
                        // BUT WILL WE NEED IT AGAIN?
                        // php does not have a definitive destructor, so we 
have to guess where script will end
!                       echo 'emai.ui_mail_debug. line '.__LINE__.': calling 
"end_msg_session_object" so I hope you do not need it anymore<br>';
!                       $this->end_msg_session_object();
                }       
                
!               
                function copyinteresting()
                {
--- 439,451 ----
                        // BUT WILL WE NEED IT AGAIN?
                        // php does not have a definitive destructor, so we 
have to guess where script will end
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.show_desired_data('.__LINE__.'):
 calling "end_msg_session_object" so I hope you do not need it anymore<br>');
!                       
!                       // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
!                       //$this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
!                       // TOO SOON to end msg object
!                       //$this->end_msg_session_object();
                }       
                
!               // THIS NEVER WORKED
                function copyinteresting()
                {
***************
*** 413,416 ****
--- 499,503 ----
                }
                
+               // this evenually made it to boaction and is not used there
                function env_test()
                {
***************
*** 468,473 ****
                }
                
!               function make_table()
                {
                        // this function makes a table for email in the phpgw DB
                        //$account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
--- 555,567 ----
                }
                
!               
!               function db_admin_make_table($really_do_it=False)
                {
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_make_table('.__LINE__.'):
 ENTERING<br>');
+                       if ($really_do_it == False)
+                       {
+                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_make_table('.__LINE__.'):
 param $really_do_it ['.serialize($really_do_it).'] so we are DO NOTHING, and 
we EXIT<br>');
+                               return;
+                       }
                        // this function makes a table for email in the phpgw DB
                        //$account_id = 
get_account_id($accountid,$GLOBALS['phpgw']->session->account_id);
***************
*** 481,487 ****
                        
                        $table_names = $GLOBALS['phpgw']->db->table_names();
!                       echo '$table_names dump:<pre>';
!                       print_r($table_names) ;
!                       echo '</pre>';
                        /*
                        'phpgw_anglemail' => array(
--- 575,581 ----
                        
                        $table_names = $GLOBALS['phpgw']->db->table_names();
!                       //echo '$table_names dump:<pre>'; 
print_r($table_names); echo '</pre>';
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_make_table('.__LINE__.'):
 $table_names DUMP:', $table_names);
!                       
                        /*
                        'phpgw_anglemail' => array(
***************
*** 496,541 ****
                                'uc' => array()
                        */
                }
                
!               function rm_table()
                {
                        // this function drops the table for email in the phpgw 
DB
                        $sTableName = 'phpgw_anglemail';
                        $query = "DROP TABLE " . $sTableName;
                        $GLOBALS['phpgw']->db->query($query,__LINE__,__FILE__);
                        
                        $table_names = $GLOBALS['phpgw']->db->table_names();
!                       echo '$table_names dump:<pre>';
!                       print_r($table_names) ;
!                       echo '</pre>';
                }
                
!               function so_admin_clear_entire_table()
                {
                        // If you issue a DELETE with no WHERE clause, all rows 
are deleted.
                        // THIS WIPES THE TABLE CLEAN OF ALL DATA
                        $GLOBALS['phpgw']->db->query("DELETE FROM 
phpgw_anglemail",__LINE__,__FILE__);
                }
                
!               function so_am_table_exists()
                {
                        $look_for_me = 'phpgw_anglemail';
                        $table_names = $GLOBALS['phpgw']->db->table_names();
                        $table_names_serialized = serialize($table_names);
                        if (strstr($table_names_serialized, $look_for_me))
                        {
!                               echo 'so_am_table_exists: result: table 
['.$look_for_me.'] DOES exist<br>';
!                               // return True;
                        }
                        else
                        {
!                               echo 'so_am_table_exists: result: table 
['.$look_for_me.'] does NOT exist<br>';
!                               // return False;
                        }
!                       echo '$table_names dump:<pre>';
!                       print_r($table_names) ;
!                       echo '</pre>';
                }
                
                // these bext functions will go inti the future SO class
                function so_set_data($data_key, $content)
--- 590,657 ----
                                'uc' => array()
                        */
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_make_table('.__LINE__.'):
 LEAVING<br>');
                }
                
!               function db_admin_rm_table($really_do_it=False)
                {
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_rm_table('.__LINE__.'):
 ENTERING<br>');
+                       if (!$really_do_it)
+                       {
+                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_rm_table('.__LINE__.'):
 param $really_do_it ['.serialize($really_do_it).'] so we are DO NOTHING, and 
we EXIT<br>');
+                               return;
+                       }
                        // this function drops the table for email in the phpgw 
DB
                        $sTableName = 'phpgw_anglemail';
                        $query = "DROP TABLE " . $sTableName;
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_rm_table('.__LINE__.'):
 about to CALL 
$GLOBALS[phpgw]->db->query('.$query.','.__LINE__.','.__FILE__.');<br>');
                        $GLOBALS['phpgw']->db->query($query,__LINE__,__FILE__);
                        
                        $table_names = $GLOBALS['phpgw']->db->table_names();
!                       //echo '$table_names dump:<pre>'; 
print_r($table_names); echo '</pre>';
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_rm_table('.__LINE__.'):
 $table_names DUMP:', $table_names);
                }
                
!               function db_admin_clear_entire_table($really_do_it=False)
                {
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_clear_entire_table('.__LINE__.'):
 ENTERING<br>');
+                       if (!$really_do_it)
+                       {
+                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_clear_entire_table('.__LINE__.'):
 param $really_do_it ['.serialize($really_do_it).'] so we are DO NOTHING, and 
we EXIT<br>');
+                               return;
+                       }
                        // If you issue a DELETE with no WHERE clause, all rows 
are deleted.
                        // THIS WIPES THE TABLE CLEAN OF ALL DATA
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_clear_entire_table('.__LINE__.'):
 param $really_do_it ['.serialize($really_do_it).'] so we CALL 
$GLOBALS[phpgw]->db->query("DELETE FROM 
phpgw_anglemail",'.__LINE__.','.__FILE__.');<br>');
                        $GLOBALS['phpgw']->db->query("DELETE FROM 
phpgw_anglemail",__LINE__,__FILE__);
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_admin_clear_entire_table('.__LINE__.'):
 LEAVING<br>');
                }
                
!               function db_am_table_exists()
                {
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_am_table_exists('.__LINE__.'):
 ENTERING<br>');
                        $look_for_me = 'phpgw_anglemail';
+                       $found_table = False;
+                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_am_table_exists('.__LINE__.'):
 about to call $GLOBALS[phpgw]->db->table_names()<br>'); 
                        $table_names = $GLOBALS['phpgw']->db->table_names();
                        $table_names_serialized = serialize($table_names);
                        if (strstr($table_names_serialized, $look_for_me))
                        {
!                               
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_am_table_exists('.__LINE__.'):
 result: table ['.$look_for_me.'] DOES exist<br>');
!                               $found_table = True;
                        }
                        else
                        {
!                               
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_am_table_exists('.__LINE__.'):
 result: table ['.$look_for_me.'] does NOT exist<br>');
!                               $found_table = False;
                        }
!                       //echo '$table_names dump:<pre>'; 
print_r($table_names); echo '</pre>';
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_am_table_exists('.__LINE__.'):
 $table_names DUMP:', $table_names);
!                       
!                       
$GLOBALS['phpgw']->msg->dbug->out('ui_mail_debug.db_am_table_exists('.__LINE__.'):
 LEAVING: returning ['.serialize($found_table).']<br>');
!                       return $found_table;
                }
                
+               /*
                // these bext functions will go inti the future SO class
                function so_set_data($data_key, $content)
***************
*** 601,604 ****
--- 717,721 ----
                                . " WHERE account_id='" . $account_id . 
"'",__LINE__,__FILE__);
                }
+               */
                
        }

Index: class.uiattach_file.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uiattach_file.inc.php,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -r1.2 -r1.2.2.1

Index: class.uicompose.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uicompose.inc.php,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -C2 -r1.4.2.1 -r1.4.2.2
*** class.uicompose.inc.php     20 Apr 2003 21:07:56 -0000      1.4.2.1
--- class.uicompose.inc.php     8 Sep 2003 08:33:36 -0000       1.4.2.2
***************
*** 53,57 ****
                        $this->bo->compose($reuse_feed_args);
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 53,57 ----
                        $this->bo->compose($reuse_feed_args);
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 65,70 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail').' - '.lang('Compose');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we are the BO and the UI, we take care of 
outputting the HTML to the client browser
--- 65,69 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we are the BO and the UI, we take care of 
outputting the HTML to the client browser
***************
*** 77,81 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 76,79 ----
***************
*** 165,169 ****
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we are the BO and the UI, we take care of 
outputting the HTML to the client browser
--- 163,169 ----
                        }
                        
!                       // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
!                       $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we are the BO and the UI, we take care of 
outputting the HTML to the client browser
***************
*** 172,186 ****
                        else
                        {
                                $this->tpl->set_unknowns('comment');
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('compose message');
                                $data['email_page'] = 
$this->tpl->parse('out','T_compose_out');
-                               // new way to handle debug data, if this array 
has anything, put it in the template source data vars
-                               if ($GLOBALS['phpgw']->msg->debugdata)
-                               {
-                                       $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->get_debugdata_stack();
-                               }
                                
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
--- 172,182 ----
                        else
                        {
+                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('compose message');
                                $this->tpl->set_unknowns('comment');
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('compose 
message');
                                $data['email_page'] = 
$this->tpl->parse('out','T_compose_out');
                                
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));

Index: class.uifilters.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uifilters.inc.php,v
retrieving revision 1.12.2.2
retrieving revision 1.12.2.3
diff -C2 -r1.12.2.2 -r1.12.2.3
*** class.uifilters.inc.php     21 Apr 2003 15:28:08 -0000      1.12.2.2
--- class.uifilters.inc.php     8 Sep 2003 08:33:36 -0000       1.12.2.3
***************
*** 65,69 ****
                function filters_edit()
                {                       
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 65,69 ----
                function filters_edit()
                {                       
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 77,82 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('EMail Filters');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
--- 77,81 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
***************
*** 88,92 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 87,90 ----
***************
*** 184,191 ****
                                                                
'menuaction=email.bofilters.do_filter'
                                                                
.'&filter_num='.$filter_num);
!                       $apply_this_filter_href = '<a 
href="'.$apply_this_filter_url.'"><b>*APPLY*</b> This Filter</a>';
                        
                        $test_this_filter_url = 
$apply_this_filter_url.'&filter_test=1';
!                       $test_this_filter_href = '<a 
href="'.$test_this_filter_url.'">Test Run This Filter</a>';
                        
                        
$this->tpl->set_var('apply_this_filter_href',$apply_this_filter_href);
--- 182,189 ----
                                                                
'menuaction=email.bofilters.do_filter'
                                                                
.'&filter_num='.$filter_num);
!                       $apply_this_filter_href = '<a 
href="'.$apply_this_filter_url.'">'.lang('<b>*apply*</b> this filter').'</a>';
                        
                        $test_this_filter_url = 
$apply_this_filter_url.'&filter_test=1';
!                       $test_this_filter_href = '<a 
href="'.$test_this_filter_url.'">'.lang('Test Run This Filter').'</a>';
                        
                        
$this->tpl->set_var('apply_this_filter_href',$apply_this_filter_href);
***************
*** 398,402 ****
                                
$this->tpl->set_var('match_textbox_txt',$match_textbox_txt);
                                
$this->tpl->set_var('V_match_left_td',$V_match_left_td);
!                               if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                                {
                                        
$this->tpl->parse('V_matches_row','B_matches_row',True);
--- 396,400 ----
                                
$this->tpl->set_var('match_textbox_txt',$match_textbox_txt);
                                
$this->tpl->set_var('V_match_left_td',$V_match_left_td);
!                               if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                                {
                                        
$this->tpl->parse('V_matches_row','B_matches_row',True);
***************
*** 407,411 ****
                                }
                        }
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless == False)
                        {
                                
$this->tpl->set_var('V_matches_row',$V_matches_row);
--- 405,409 ----
                                }
                        }
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt == False)
                        {
                                
$this->tpl->set_var('V_matches_row',$V_matches_row);
***************
*** 545,550 ****
                        
                        // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
!                       $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                //$this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
--- 543,548 ----
                        
                        // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
!                       $this->tpl->set_var('debugdata', 
trim($GLOBALS['phpgw']->msg->dbug->notice_pagedone()));
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                //$this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
***************
*** 559,572 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('Edit Filters');
                                $data['email_page'] = 
$this->tpl->parse('out','T_filters_out');
-                               // new way to handle debug data, if this array 
has anything, put it in the template source data vars
-                               //if ($GLOBALS['phpgw']->msg->dbug->debugdata)
-                               //{
-                               //      $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->get_debugdata_stack();
-                               //}
-                               //$data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone();
-                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
--- 557,564 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('Edit Filters');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('Edit Filters');
                                $data['email_page'] = 
$this->tpl->parse('out','T_filters_out');
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
***************
*** 648,652 ****
                function filters_list()
                {
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 640,644 ----
                function filters_list()
                {
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 660,665 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail INBOX Filters List');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
--- 652,656 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
***************
*** 671,675 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 662,665 ----
***************
*** 741,755 ****
                                        $tr_color_class = (($i + 1)/2 == 
floor(($i + 1)/2)) ? 'row_off' : 'row_on';
                                        
!                                       $filters_list[$i]['move_up_url'] = 
$GLOBALS['phpgw']->link(
!                                                                       
'/index.php',
!                                                                        
'menuaction=email.bofilters.move_up'
!                                                                       
.'&filter_num='.$i);
!                                       $filters_list[$i]['move_up_href'] = '<a 
href="'.$filters_list[$i]['move_up_url'].'">'.lang('Move Up').'</a>';
                                        
!                                       $filters_list[$i]['move_down_url'] = 
$GLOBALS['phpgw']->link(
!                                                                       
'/index.php',
!                                                                        
'menuaction=email.bofilters.move_down'
!                                                                       
.'&filter_num='.$i);
!                                       $filters_list[$i]['move_down_href'] = 
'<a href="'.$filters_list[$i]['move_down_url'].'">'.lang('Move Down').'</a>';
                                        
                                        $filters_list[$i]['edit_url'] = 
$GLOBALS['phpgw']->link(
--- 731,770 ----
                                        $tr_color_class = (($i + 1)/2 == 
floor(($i + 1)/2)) ? 'row_off' : 'row_on';
                                        
!                                                                               
// Don't move up the first filter (Sam Przyswa)
!                                       if ($i != 0)
!                                       {
!                                               
$filters_list[$i]['move_up_url'] = $GLOBALS['phpgw']->link(
!                                                                               
'/index.php',
!                                                                               
 'menuaction=email.bofilters.move_up'
!                                                                               
.'&filter_num='.$i);
!                                               
$filters_list[$i]['move_up_href'] = '<a 
href="'.$filters_list[$i]['move_up_url'].'">'.lang('Move Up').'</a>';
!                                       }
!                                       else
!                                       {
!                                               
$filters_list[$i]['move_up_url'] = $GLOBALS['phpgw']->link(
!                                                                               
'/index.php',
!                                                                               
 'menuaction=email.bofilters.move_up'
!                                                                               
.'&filter_num='.$i);
!                                               
$filters_list[$i]['move_up_href'] = '<a 
href="'.$filters_list[$i]['move_up_url'].'"></a>';
!                                       }
                                        
!                                       // Don't move down the last filter (Sam 
Przyswa)
!                                       if ($i != $loops-1)
!                                       {
!                                               
$filters_list[$i]['move_down_url'] = $GLOBALS['phpgw']->link(
!                                                                               
'/index.php',
!                                                                               
 'menuaction=email.bofilters.move_down'
!                                                                               
.'&filter_num='.$i);
!                                               
$filters_list[$i]['move_down_href'] = '<a 
href="'.$filters_list[$i]['move_down_url'].'">'.lang('Move Down').'</a>';
!                                       }
!                                       else
!                                       {
!                                               
$filters_list[$i]['move_down_url'] = $GLOBALS['phpgw']->link(
!                                                                               
'/index.php',
!                                                                               
 'menuaction=email.bofilters.move_down'
!                                                                               
.'&filter_num='.$i);
!                                               
$filters_list[$i]['move_down_href'] = '<a 
href="'.$filters_list[$i]['move_down_url'].'"></a>';
!                                       }
!                                       // end of changes (Sam Przyswa)
                                        
                                        $filters_list[$i]['edit_url'] = 
$GLOBALS['phpgw']->link(
***************
*** 772,776 ****
                                        
$this->tpl->set_var('edit_href',$filters_list[$i]['edit_href']);
                                        
$this->tpl->set_var('delete_href',$filters_list[$i]['delete_href']);
!                                       if 
($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                                        {
                                                
$this->tpl->parse('V_filter_list_row','B_filter_list_row', True);
--- 787,791 ----
                                        
$this->tpl->set_var('edit_href',$filters_list[$i]['edit_href']);
                                        
$this->tpl->set_var('delete_href',$filters_list[$i]['delete_href']);
!                                       if 
($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                                        {
                                                
$this->tpl->parse('V_filter_list_row','B_filter_list_row', True);
***************
*** 782,786 ****
                                }
                        }
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless == False)
                        {
                                        
$this->tpl->set_var('V_filter_list_row',$V_filter_list_row);
--- 797,801 ----
                                }
                        }
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt == False)
                        {
                                        
$this->tpl->set_var('V_filter_list_row',$V_filter_list_row);
***************
*** 807,814 ****
                        
                        $test_all_filters_url = 
$run_all_filters_url.'&filter_test=1';
!                       $test_all_filters_href = '<a 
href="'.$test_all_filters_url.'">Test All Filters</a>';
                        
$this->tpl->set_var('test_all_filters_href',$test_all_filters_href);
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // COMMENT NEXT LINE OUT for producvtion use, 
(unknowns should be "remove"d in production use)
--- 822,831 ----
                        
                        $test_all_filters_url = 
$run_all_filters_url.'&filter_test=1';
!                       $test_all_filters_href = '<a 
href="'.$test_all_filters_url.'">'.lang('Test All Filters').'</a>';
                        
$this->tpl->set_var('test_all_filters_href',$test_all_filters_href);
                        
!                       // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
!                       $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // COMMENT NEXT LINE OUT for producvtion use, 
(unknowns should be "remove"d in production use)
***************
*** 822,827 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('Filters List');
                                $data['email_page'] = 
$this->tpl->parse('out','T_filters_list');
                                
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
--- 839,845 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('Filters List');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('Filters List');
                                $data['email_page'] = 
$this->tpl->parse('out','T_filters_list');
                                
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));

Index: class.uifolder.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uifolder.inc.php,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -C2 -r1.4.2.1 -r1.4.2.2
*** class.uifolder.inc.php      20 Apr 2003 21:07:56 -0000      1.4.2.1
--- class.uifolder.inc.php      8 Sep 2003 08:33:36 -0000       1.4.2.2
***************
*** 34,38 ****
                        $this->bo->folder();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 34,38 ----
                        $this->bo->folder();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 46,51 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail').' - '.lang('Folder');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
--- 46,50 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
***************
*** 59,63 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 58,61 ----
***************
*** 131,137 ****
                        // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
                        $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
-                               //$this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
                                // COMMENT NEXT LINE OUT for producvtion use, 
(unknowns should be "remove"d in production use)
                                $this->tpl->set_unknowns('comment');
--- 129,134 ----
                        // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
                        $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // COMMENT NEXT LINE OUT for producvtion use, 
(unknowns should be "remove"d in production use)
                                $this->tpl->set_unknowns('comment');
***************
*** 147,156 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('Folders');
                                $data['email_page'] = 
$this->tpl->parse('out','T_folder_out');
-                               // new way to handle debug data, if there is 
debug data, this will put it in the template source data vars
-                               //$data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone();
-                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
--- 144,151 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('Folders');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('Folders');
                                $data['email_page'] = 
$this->tpl->parse('out','T_folder_out');
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }

Index: class.uiindex.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uiindex.inc.php,v
retrieving revision 1.21.2.1
retrieving revision 1.21.2.2
diff -C2 -r1.21.2.1 -r1.21.2.2
*** class.uiindex.inc.php       20 Apr 2003 21:07:56 -0000      1.21.2.1
--- class.uiindex.inc.php       8 Sep 2003 08:33:36 -0000       1.21.2.2
***************
*** 45,49 ****
                        $this->bo->index_data();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                $this->index_old_tpl();
--- 45,49 ----
                        $this->bo->index_data();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                $this->index_old_tpl();
***************
*** 139,142 ****
--- 139,143 ----
                        
$this->widgets->set_toolbar_msg($GLOBALS['phpgw']->msg->report_moved_or_deleted());
                        
$this->tpl->set_var('widget_toolbar',$this->widgets->get_toolbar());
+                       
$this->tpl->set_var('geek_bar',$this->widgets->get_geek_bar());
                        // stats row, generated in a single function call
                        $this->tpl->set_var('stats_data_display', 
$this->bo->get_index_stats_block((string)$GLOBALS['phpgw']->msg->get_pref_value('layout')));
***************
*** 412,418 ****
                function index_xslt_tpl()
                {
-                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail').' - '.lang('list messages');
- 
-                       $GLOBALS['phpgw_info']['flags']['xslt_app'] = True;
                        $GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        
--- 413,416 ----
***************
*** 427,434 ****
--- 425,436 ----
                        
$this->widgets->set_toolbar_msg($GLOBALS['phpgw']->msg->report_moved_or_deleted());
                        $widget_toolbar = $this->widgets->get_toolbar();
+                       $geek_bar = $this->widgets->get_geek_bar();
                        
                        $data = array(
+                               //'appname' => lang('E-Mail'),
+                               //'function_msg' => lang('list messages'),
                                'index_js' => $this->index_xslt_javascript(),
                                'widget_toolbar' => $widget_toolbar,
+                               'geek_bar' => $geek_bar,
                                'stats_data_display' => 
$this->bo->get_index_stats_block((string)$GLOBALS['phpgw']->msg->get_pref_value('layout')),
                                'arrows_backcolor_class' => 
$this->bo->xi['arrows_backcolor_class'],
***************
*** 465,474 ****
                        );
                        // new way to handle debug data, if this array has 
anything, put it in the template source data vars
-                       //if ($GLOBALS['phpgw']->msg->dbug->debugdata)
-                       //{
-                       //      $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->get_debugdata_stack();
-                       //}
                        $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone();
                        
                        
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('index' => $data));
                        
--- 467,474 ----
                        );
                        // new way to handle debug data, if this array has 
anything, put it in the template source data vars
                        $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone();
                        
+                       $GLOBALS['phpgw_info']['flags']['email']['app_header'] 
= lang('E-Mail') . ': ' . lang('list messages');
+                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail') . ': ' . lang('list messages');
                        
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('index' => $data));
                        

Index: class.uijsaddressbook.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uijsaddressbook.inc.php,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -C2 -r1.3 -r1.3.2.1

Index: class.uimessage.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uimessage.inc.php,v
retrieving revision 1.9.2.2
retrieving revision 1.9.2.3
diff -C2 -r1.9.2.2 -r1.9.2.3
*** class.uimessage.inc.php     21 Apr 2003 15:28:09 -0000      1.9.2.2
--- class.uimessage.inc.php     8 Sep 2003 08:33:36 -0000       1.9.2.3
***************
*** 43,47 ****
                        $this->bo->message_data();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 43,47 ----
                        $this->bo->message_data();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 55,60 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // NOW we can out the header, because 
"index_data()" filled this global
--- 55,59 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // NOW we can out the header, because 
"index_data()" filled this global
***************
*** 72,76 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 71,74 ----
***************
*** 92,95 ****
--- 90,95 ----
                        $this->widgets = CreateObject('email.html_widgets');
                        
$this->tpl->set_var('widget_toolbar',$this->widgets->get_toolbar());
+                       // geek_bar
+                       
$this->tpl->set_var('geek_bar',$this->widgets->get_geek_bar());
                        
                        if (!empty($this->xi['msgtype']))
***************
*** 261,264 ****
--- 261,271 ----
                        // -----  SHOW MESSAGE  -------
                        //@set_time_limit(120);
+                       
+                       //if ($GLOBALS['phpgw']->msg->phpgw_before_xslt == 
False)
+                       //{
+                               // fix a b0rk in template showing last item 2 
times under XSLT
+                               $final_V_display_part = '';
+                       //}
+                       
                        $count_part_nice = count($this->bo->part_nice);
                        for ($i = 0; $i < $count_part_nice; $i++)
***************
*** 269,273 ****
                                        
$this->tpl->set_var('display_str',$this->bo->part_nice[$i]['display_str']);
                                        
$this->tpl->set_var('message_body',$this->bo->part_nice[$i]['message_body']);
!                                       
$this->tpl->parse('V_display_part','B_display_part', True);
                                }
                                elseif 
($this->bo->part_nice[$i]['d_instructions'] == 'echo_out')
--- 276,289 ----
                                        
$this->tpl->set_var('display_str',$this->bo->part_nice[$i]['display_str']);
                                        
$this->tpl->set_var('message_body',$this->bo->part_nice[$i]['message_body']);
!                                       
//$this->tpl->parse('V_display_part','B_display_part', True);
!                                       //if 
($GLOBALS['phpgw']->msg->phpgw_before_xslt)
!                                       //{
!                                       //      
$this->tpl->parse('V_display_part','B_display_part', True);
!                                       //}
!                                       //else
!                                       //{
!                                               // fix a b0rk in template 
showing last item 2 times under XSLT
!                                               $final_V_display_part .= 
$this->tpl->parse('V_display_part','B_display_part');
!                                       //}
                                }
                                elseif 
($this->bo->part_nice[$i]['d_instructions'] == 'echo_out')
***************
*** 306,309 ****
--- 322,333 ----
                        //@set_time_limit(0);
                        
+                       //if ($GLOBALS['phpgw']->msg->phpgw_before_xslt == 
False)
+                       //{
+                       //      // fix a b0rk in template showing last item 2 
times under XSLT
+                               
$this->tpl->set_var('V_display_part',$final_V_display_part);
+                               $final_V_display_part = '';
+                               unset($final_V_display_part);
+                       //}
+                       
                        // new way to handle debug data, if there is debug 
data, this will put it in the template source data vars
                        $this->tpl->set_var('debugdata', 
$GLOBALS['phpgw']->msg->dbug->notice_pagedone());
***************
*** 315,319 ****
                                // echo dump already outputted the template
                        }
!                       elseif ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                $this->tpl->pfp('out','T_message_main');
--- 339,343 ----
                                // echo dump already outputted the template
                        }
!                       elseif ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                $this->tpl->pfp('out','T_message_main');
***************
*** 325,330 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('show message');
                                $data['email_page'] = 
$this->tpl->parse('out','T_message_main');
                                // new way to handle debug data, if this array 
has anything, put it in the template source data vars
--- 349,355 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('show message');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('show message');
                                $data['email_page'] = 
$this->tpl->parse('out','T_message_main');
                                // new way to handle debug data, if this array 
has anything, put it in the template source data vars
***************
*** 345,349 ****
                        }
                        // tell apache to release emeory back to the system on 
script end
!                       //apache_child_terminate();
  
                        // close down ALL mailserver streams
--- 370,383 ----
                        }
                        // tell apache to release emeory back to the system on 
script end
!                       //if ((isset($_SERVER['SERVER_SOFTWARE']))
!                       //&& (stristr($_SERVER['SERVER_SOFTWARE'], 'apache'))
!                       if ((getenv('SERVER_SOFTWARE'))
!                       && (stristr(getenv('SERVER_SOFTWARE'), 'apache'))
!                       && (function_exists('apache_child_terminate'))
!                       && (ini_get('child_terminate')))
!                       {
!                               //echo 'doing apache_child_terminate';
!                               apache_child_terminate();
!                       }
  
                        // close down ALL mailserver streams
***************
*** 365,369 ****
                        $this->bo->message_data();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 399,403 ----
                        $this->bo->message_data();
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 373,384 ****
                        else
                        {
                                // we use a PRIVATE template object for 0.9.14 
conpat and during xslt porting
                                $this->tpl = 
CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['noheader'] = True;
!                       $GLOBALS['phpgw_info']['flags']['nonavbar'] = True;
!                       $GLOBALS['phpgw_info']['flags']['noappheader'] = True;
!                       $GLOBALS['phpgw_info']['flags']['noappfooter'] = True;
                        
                        $this->tpl->set_file(array(
--- 407,438 ----
                        else
                        {
+                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                // we use a PRIVATE template object for 0.9.14 
conpat and during xslt porting
                                $this->tpl = 
CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
!                       {
!                               $GLOBALS['phpgw_info']['flags']['noheader'] = 
True;
!                               $GLOBALS['phpgw_info']['flags']['nonavbar'] = 
True;
!                               $GLOBALS['phpgw_info']['flags']['noappheader'] 
= True;
!                               $GLOBALS['phpgw_info']['flags']['noappfooter'] 
= True;
!                       }
!                       else
!                       {
!                               $GLOBALS['phpgw_info']['flags']['printview'] = 
True;
!                               $GLOBALS['phpgw_info']['flags']['headonly'] = 
True;
!                               
!                               //$GLOBALS['phpgw_info']['navbar'] = '';
!                               
!                               
//$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
!                               
!                               // FIXME how to get rid of other template stuff 
here for XSLT?
!                               $GLOBALS['phpgw_info']['flags']['noheader'] = 
True;
!                               $GLOBALS['phpgw_info']['flags']['nonavbar'] = 
True;
!                               $GLOBALS['phpgw_info']['flags']['noappheader'] 
= True;
!                               $GLOBALS['phpgw_info']['flags']['noappfooter'] 
= True;
!                       }
!                       
                        
                        $this->tpl->set_file(array(
***************
*** 497,509 ****
                                // echo dump already outputted the template
                        }
!                       else
                        {
                                $this->tpl->pfp('out','T_message_printable');
                                //$GLOBALS['phpgw']->common->phpgw_footer();
                        }
-                       
-                       // ----  Finish The HTML Tags  ----
-                       echo "</body> \r\n";
-                       echo "</html> \r\n";
                        
                        if (is_object($GLOBALS['phpgw']->msg))
--- 551,577 ----
                                // echo dump already outputted the template
                        }
!                       elseif ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                $this->tpl->pfp('out','T_message_printable');
                                //$GLOBALS['phpgw']->common->phpgw_footer();
+                               // ----  Finish The HTML Tags  ----
+                               echo "</body> \r\n";
+                               echo "</html> \r\n";
+                       }
+                       else
+                       {
+                               $this->tpl->set_unknowns('comment');
+                               $this->tpl->pfp('out','T_message_printable');
+                               //// ----  Finish The HTML Tags  ----
+                               echo "</body> \r\n";
+                               echo "</html> \r\n";
+                               ////$this->tpl->set_unknowns('remove');
+                               
+                               $data = array();
+                               //$data['appname'] = lang('E-Mail');
+                               //$data['function_msg'] = lang('show message');
+                               //$data['email_page'] = 
$this->tpl->parse('out','T_message_printable');
+                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
                        
                        if (is_object($GLOBALS['phpgw']->msg))

Index: class.uipreferences.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/class.uipreferences.inc.php,v
retrieving revision 1.16.2.2
retrieving revision 1.16.2.3
diff -C2 -r1.16.2.2 -r1.16.2.3
*** class.uipreferences.inc.php 20 Apr 2003 21:07:56 -0000      1.16.2.2
--- class.uipreferences.inc.php 8 Sep 2003 08:33:36 -0000       1.16.2.3
***************
*** 67,71 ****
                function create_prefs_block($feed_prefs='')
                {
- //echo "feed_prefs=<pre>"; print_r($feed_prefs); echo "</pre>\n";
                        if ($this->debug > 0 ) { echo 
'email.uipreferences.create_prefs_block: ENTERING, $this->bo->account_group: 
['.$this->bo->account_group.']; $this->bo->acctnum: 
['.$this->bo->acctnum.']<br>'; }
                        $return_block = '';
--- 67,70 ----
***************
*** 336,340 ****
                        if ($this->debug > 1) { echo 
'email.uipreferences.preferences: just set $this->bo->account_group to 
['.$this->bo->account_group.']<br>'; }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 335,339 ----
                        if ($this->debug > 1) { echo 
'email.uipreferences.preferences: just set $this->bo->account_group to 
['.$this->bo->account_group.']<br>'; }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 348,353 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail preferences');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
--- 347,351 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
***************
*** 359,363 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 357,360 ----
***************
*** 476,480 ****
                        // output the template
                        if ($this->debug > 0) { echo 
'email.uipreferences.preferences: LEAVING, about to output the template<br>'; }
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                $this->tpl->set_unknowns('comment');
--- 473,477 ----
                        // output the template
                        if ($this->debug > 0) { echo 
'email.uipreferences.preferences: LEAVING, about to output the template<br>'; }
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                $this->tpl->set_unknowns('comment');
***************
*** 487,499 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('E-Mail 
preferences');
                                $data['email_page'] = 
$this->tpl->parse('out','T_prefs_ui_out');
-                               // new way to handle debug data, if this array 
has anything, put it in the template source data vars
-                               //if ($GLOBALS['phpgw']->msg->dbug->debugdata)
-                               //{
-                               //      $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->get_debugdata_stack();
-                               //}
-                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
--- 484,491 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('E-Mail 
preferences');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('E-Mail preferences');
                                $data['email_page'] = 
$this->tpl->parse('out','T_prefs_ui_out');
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
***************
*** 520,524 ****
                        if ($this->debug > 1) { echo 
'email.uipreferences.ex_accounts_edit: we just set $this->bo->acctnum to 
['.serialize($this->bo->acctnum).']<br>'; }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 512,516 ----
                        if ($this->debug > 1) { echo 
'email.uipreferences.ex_accounts_edit: we just set $this->bo->acctnum to 
['.serialize($this->bo->acctnum).']<br>'; }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 531,537 ****
                                $this->tpl = 
CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
                        }
! 
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail Extra Accounts');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
--- 523,528 ----
                                $this->tpl = 
CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
                        }
!                       
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
***************
*** 543,547 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 534,537 ----
***************
*** 673,677 ****
                        // output the template
                        if ($this->debug > 0) { echo 
'email.uipreferences.ex_accounts_edit: LEAVING, about to output the 
template<br>'; }
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                $this->tpl->set_unknowns('comment');
--- 663,667 ----
                        // output the template
                        if ($this->debug > 0) { echo 
'email.uipreferences.ex_accounts_edit: LEAVING, about to output the 
template<br>'; }
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                $this->tpl->set_unknowns('comment');
***************
*** 684,696 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('E-Mail Extra 
Accounts');
                                $data['email_page'] = 
$this->tpl->parse('out','T_prefs_ui_out');
-                               // new way to handle debug data, if this array 
has anything, put it in the template source data vars
-                               //if ($GLOBALS['phpgw']->msg->dbug->debugdata)
-                               //{
-                               //      $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->get_debugdata_stack();
-                               //}
-                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
--- 674,681 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('E-Mail Extra 
Accounts');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('E-Mail Extra Accounts');
                                $data['email_page'] = 
$this->tpl->parse('out','T_prefs_ui_out');
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
***************
*** 700,704 ****
                function ex_accounts_list()
                {
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                // we point to the global template for this 
version of phpgw templatings
--- 685,689 ----
                function ex_accounts_list()
                {
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                // we point to the global template for this 
version of phpgw templatings
***************
*** 712,717 ****
                        }
                        
!                       $GLOBALS['phpgw_info']['flags']['app_header'] = 
lang('E-Mail Extra Accounts List');
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
--- 697,701 ----
                        }
                        
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                
unset($GLOBALS['phpgw_info']['flags']['noheader']);
***************
*** 723,727 ****
                        else
                        {
-                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
True;
                                
$GLOBALS['phpgw']->xslttpl->add_file(array('app_data'));
                        }
--- 707,710 ----
***************
*** 814,818 ****
                        
                        // output the template
!                       if ($GLOBALS['phpgw']->msg->phpgw_0914_orless)
                        {
                                $this->tpl->set_unknowns('comment');
--- 797,801 ----
                        
                        // output the template
!                       if ($GLOBALS['phpgw']->msg->phpgw_before_xslt)
                        {
                                $this->tpl->set_unknowns('comment');
***************
*** 825,837 ****
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               $data['appname'] = lang('E-Mail');
!                               $data['function_msg'] = lang('E-Mail Extra 
Accounts List');
                                $data['email_page'] = 
$this->tpl->parse('out','T_prefs_ex_accounts');
-                               // new way to handle debug data, if this array 
has anything, put it in the template source data vars
-                               //if ($GLOBALS['phpgw']->msg->dbug->debugdata)
-                               //{
-                               //      $data['debugdata'] = 
$GLOBALS['phpgw']->msg->dbug->get_debugdata_stack();
-                               //}
-                               
//$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('uimessage' => $data));
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }
--- 808,815 ----
                                //$this->tpl->set_unknowns('remove');
                                $data = array();
!                               //$data['appname'] = lang('E-Mail');
!                               //$data['function_msg'] = lang('E-Mail Extra 
Accounts List');
!                               
$GLOBALS['phpgw_info']['flags']['email']['app_header'] = lang('E-Mail') . ': ' 
. lang('E-Mail Extra Accounts List');
                                $data['email_page'] = 
$this->tpl->parse('out','T_prefs_ex_accounts');
                                
$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('generic_out' => $data));
                        }

Index: functions.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/functions.inc.php,v
retrieving revision 1.116
retrieving revision 1.116.2.1
diff -C2 -r1.116 -r1.116.2.1

Index: hook_admin.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/hook_admin.inc.php,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -C2 -r1.6 -r1.6.2.1

Index: hook_home.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/hook_home.inc.php,v
retrieving revision 1.56
retrieving revision 1.56.2.1
diff -C2 -r1.56 -r1.56.2.1
*** hook_home.inc.php   14 Mar 2003 04:01:54 -0000      1.56
--- hook_home.inc.php   8 Sep 2003 08:33:36 -0000       1.56.2.1
***************
*** 166,209 ****
                                .'</td>'."\r\n"
                                .$form_folder_switch_closetag;
!               }
                
!               if ((isset($prev_currentapp))
!               && ($prev_currentapp)
!               && ($GLOBALS['phpgw_info']['flags']['currentapp'] != 
$prev_currentapp))
                {
!                       $GLOBALS['phpgw_info']['flags']['currentapp'] = 
$prev_currentapp;
                }
                
!               $portalbox = CreateObject('phpgwapi.listbox',
!                       Array(
!                               'title'     => $title,
!                               'primary'   => 
$GLOBALS['phpgw_info']['theme']['navbar_bg'],
!                               'secondary' => 
$GLOBALS['phpgw_info']['theme']['navbar_bg'],
!                               'tertiary'  => 
$GLOBALS['phpgw_info']['theme']['navbar_bg'],
!                               'width'     => '100%',
!                               'outerborderwidth' => '0',
!                               'header_background_image' => 
$GLOBALS['phpgw']->common->image('phpgwapi/templates/phpgw_website','bg_filler')
!                       )
!               );
!               $app_id = $GLOBALS['phpgw']->applications->name2id('email');
!               $GLOBALS['portal_order'][] = $app_id;
!               $var = Array(
!                       'up'       => Array('url' => '/set_box.php', 'app' => 
$app_id),
!                       'down'     => Array('url' => '/set_box.php', 'app' => 
$app_id),
!                       'close'    => Array('url' => '/set_box.php', 'app' => 
$app_id),
!                       'question' => Array('url' => '/set_box.php', 'app' => 
$app_id),
!                       'edit'     => Array('url' => '/set_box.php', 'app' => 
$app_id)
!               );
! 
!               while(list($key,$value) = each($var))
!               {
!                       $portalbox->set_controls($key,$value);
!               }
! 
!               $portalbox->data = $data;
! 
!               // output the portalbox and below it (1) the folders listbox 
(if applicable) and (2) Compose New mail link
!               echo "\n".'<!-- BEGIN Mailbox info 
-->'."\n".$portalbox->draw($extra_data).'<!-- END Mailbox info -->'."\n";
        }
        // we create the msg object initially so we can have access to the 
multi-account preferences, 
        // so even if we did not output any data here, we still must call this 
"end_request" function, it is kind of like a destructor
--- 166,305 ----
                                .'</td>'."\r\n"
                                .$form_folder_switch_closetag;
!               }
                
!               // how to display this data
!               if (is_object($GLOBALS['phpgw']->xslttpl))
!               {
!                       $phpgw_before_xslt = False;
!               }
!               else
                {
!                       $phpgw_before_xslt = True;
                }
                
!               // now display according to the version of the template system 
in use
!               if ($phpgw_before_xslt == True)
!               {
!                       // the is the OLD, pre-xslt way to display pref items
!                       // reset the currentapp to whatever it was
!                       if ((isset($prev_currentapp))
!                       && ($prev_currentapp)
!                       && ($GLOBALS['phpgw_info']['flags']['currentapp'] != 
$prev_currentapp))
!                       {
!                               $GLOBALS['phpgw_info']['flags']['currentapp'] = 
$prev_currentapp;
!                       }
!                       $portalbox = CreateObject('phpgwapi.listbox',
!                               Array(
!                                       'title'     => $title,
!                                       'primary'   => 
$GLOBALS['phpgw_info']['theme']['navbar_bg'],
!                                       'secondary' => 
$GLOBALS['phpgw_info']['theme']['navbar_bg'],
!                                       'tertiary'  => 
$GLOBALS['phpgw_info']['theme']['navbar_bg'],
!                                       'width'     => '100%',
!                                       'outerborderwidth' => '0',
!                                       'header_background_image' => 
$GLOBALS['phpgw']->common->image('phpgwapi/templates/phpgw_website','bg_filler')
!                               )
!                       );
!                       $app_id = 
$GLOBALS['phpgw']->applications->name2id('email');
!                       $GLOBALS['portal_order'][] = $app_id;
!                       $var = Array(
!                               'up'       => Array('url' => '/set_box.php', 
'app' => $app_id),
!                               'down'     => Array('url' => '/set_box.php', 
'app' => $app_id),
!                               'close'    => Array('url' => '/set_box.php', 
'app' => $app_id),
!                               'question' => Array('url' => '/set_box.php', 
'app' => $app_id),
!                               'edit'     => Array('url' => '/set_box.php', 
'app' => $app_id)
!                       );
!       
!                       while(list($key,$value) = each($var))
!                       {
!                               $portalbox->set_controls($key,$value);
!                       }
!       
!                       $portalbox->data = $data;
!       
!                       // output the portalbox and below it (1) the folders 
listbox (if applicable) and (2) Compose New mail link
!                       echo "\n".'<!-- BEGIN Mailbox info 
-->'."\n".$portalbox->draw($extra_data).'<!-- END Mailbox info -->'."\n";
!               }
!               else
!               {
!                       // this is the xslt template era                        
!                       // adjust the title for no html tags
!                       $title = lang('EMail').' '.$inbox_data['alert_string'];
!                       
!                       $GLOBALS['phpgw']->translation->add_app('email');
!                       //$GLOBALS['phpgw']->translation->add_app('E-Mail');
!       
!                       $app_id = 
$GLOBALS['phpgw']->applications->name2id('email');
!                       $GLOBALS['portal_order'][] = $app_id;
!                       
!                       $GLOBALS['phpgw']->portalbox->set_params(
!                               array(
!                                       'app_id'        => $app_id,
!                                       'title'         => $title
!                               )
!                       );
!                       // assemble the data BRUTE FORCE
!                       // FIXME apparently needs an xsl file called 
"portal.xsl"
!                       /*
!                       $main_data = '<table border="0" width="100%">'."\r\n";
!                       for($i=0; $i<count($data); $i++)
!                       {
!                               $main_data .= 
!                                       '<tr>'
!                                               .'<td width="2%" align="right"> 
&nbsp; </td>'
!                                               .'<td width="98%" align="left">'
!                                                       .'<a 
href="'.$data[$i]['link'].'">'.$data[$i]['text'].'</a>'
!                                               .'</td>'
!                                       .'</tr>'."\r\n";
!                       }
!                       $main_data .= 
!                               '<td width="2%"> &nbsp; </td>'
!                               .$form_folder_switch_opentag
!                               .'<td width="98%" align="left">'."\r\n"
!                                       .'&nbsp;<strong>'.lang('E-Mail 
Folders').':</strong>&nbsp;'
!                                       .$folder_switch_combobox
!                                       .'&nbsp; &nbsp;'.$compose_href
!                               .'</td>'."\r\n"
!                               .$form_folder_switch_closetag;
!                       
!                       $main_data .= '</table>'."\r\n";
!                       */
!                       $main_data = 
!                               '<table border="0" width="100%">'
!                               .'<tr>'."\r\n"
!                                       .'<td width="100%" align="left">'."\r\n"
!                                               .'<ul>'."\r\n";
!                       for($i=0; $i<count($data); $i++)
!                       {
!                               $main_data .= '<li>'.'<a 
href="'.$data[$i]['link'].'">'.$data[$i]['text'].'</a>'.'</li>'."\r\n";
!                       }
!                       $main_data .=
!                                               '</ul>'."\r\n"
!                                       .'</td>'."\r\n"
!                               .'</tr>'."\r\n"
!                               .'<tr><td><hr></td></tr>'."\r\n"
!                               .'<tr>'."\r\n"
!                                       .$form_folder_switch_opentag
!                                       .'<td width="100%" align="left">'."\r\n"
!                                               .'&nbsp;<strong>'.lang('E-Mail 
Folders').':</strong>&nbsp;'
!                                               .$folder_switch_combobox
!                                               .'&nbsp; &nbsp;'.$compose_href
!                                       .'</td>'."\r\n"
!                                       .$form_folder_switch_closetag
!                               .'</tr>'."\r\n"
!                               .'</table>'."\r\n";
!                       
!                       $GLOBALS['phpgw']->portalbox->draw($main_data);
!                       
!                       // reset the currentapp to whatever it was
!                       if ((isset($prev_currentapp))
!                       && ($prev_currentapp)
!                       && ($GLOBALS['phpgw_info']['flags']['currentapp'] != 
$prev_currentapp))
!                       {
!                               $GLOBALS['phpgw_info']['flags']['currentapp'] = 
$prev_currentapp;
!                       }
!                       
!               }
        }
+       
        // we create the msg object initially so we can have access to the 
multi-account preferences, 
        // so even if we did not output any data here, we still must call this 
"end_request" function, it is kind of like a destructor

Index: hook_preferences.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/inc/hook_preferences.inc.php,v
retrieving revision 1.14.2.4
retrieving revision 1.14.2.5
diff -C2 -r1.14.2.4 -r1.14.2.5
*** hook_preferences.inc.php    6 Apr 2003 10:09:12 -0000       1.14.2.4
--- hook_preferences.inc.php    8 Sep 2003 08:33:36 -0000       1.14.2.5
***************
*** 15,24 ****
        $title = $appname;
        $file = Array(
!       //TEST-RALFBECKER       'E-Mail Preferences'    => 
$GLOBALS['phpgw']->link('/index.php','menuaction=email.uipreferences.preferences'),
!               'E-Mail Preferences'    => 
$GLOBALS['phpgw']->link('/preferences/preferences.php','appname=email&prefix='),
     // need empty prefix
                'Extra E-Mail Accounts' => 
$GLOBALS['phpgw']->link('/index.php','menuaction=email.uipreferences.ex_accounts_list'),
                'E-Mail Filters'        => 
$GLOBALS['phpgw']->link('/index.php','menuaction=email.uifilters.filters_list')
        );
!       display_section($appname,$file);
  }
  ?>
--- 15,43 ----
        $title = $appname;
        $file = Array(
!               //'E-Mail Preferences'  => 
$GLOBALS['phpgw']->link('/index.php','menuaction=email.uipreferences.preferences'),
!               'E-Mail Preferences'    => 
$GLOBALS['phpgw']->link('/preferences/preferences.php','appname=email&prefix='),
     // need empty prefix
                'Extra E-Mail Accounts' => 
$GLOBALS['phpgw']->link('/index.php','menuaction=email.uipreferences.ex_accounts_list'),
                'E-Mail Filters'        => 
$GLOBALS['phpgw']->link('/index.php','menuaction=email.uifilters.filters_list')
        );
!       
!       if (is_object($GLOBALS['phpgw']->xslttpl))
!       {
!               $phpgw_before_xslt = False;
!       }
!       else
!       {
!               $phpgw_before_xslt = True;
!       }
!       // now display according to the version of the template system in use
!       if ($phpgw_before_xslt == True)
!       {
!               // the is the OLD, pre-xslt way to display pref items
!               display_section($appname,$title,$file);
!       }
!       else
!       {
!               // this is the xslt template era
!               display_section($appname,$file);
!       }
  }
  ?>





reply via email to

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