phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] CVS: email ChangeLog.beta1final--1.0,1.1,1.2 ChangeLo


From: Ralf Becker <address@hidden>
Subject: [Phpgroupware-cvs] CVS: email ChangeLog.beta1final--1.0,1.1,1.2 ChangeLog.codehere--1.1,1.2,1.3 ChangeLog.core--1.1,1.1,1.2 ChangeLog.lex--1.1,1.1,1.2 ChangeLog.ryan--1.1,1.1,1.2 addressbook-js.changelog.txt,1.1,1.2 addressbook-js.php,1.1,1.2 addressbook.php,1.37,1.38 attach_file.php,1.27,1.28 compose.php,1.50,1.51 index.php,1.89,1.90 view_image.php,1.15,1.16 test.php,1.1,NONE
Date: Thu, 13 Mar 2003 23:04:07 -0500

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

Modified Files:
        ChangeLog.beta1final--1.0 ChangeLog.codehere--1.1 
        ChangeLog.core--1.1 ChangeLog.lex--1.1 ChangeLog.ryan--1.1 
        addressbook-js.changelog.txt addressbook-js.php 
        addressbook.php attach_file.php compose.php index.php 
        view_image.php 
Removed Files:
        test.php 
Log Message:
final comit to make all changes from the import HEAD

Index: ChangeLog.beta1final--1.0
===================================================================
RCS file: /cvsroot/phpgroupware/email/ChangeLog.beta1final--1.0,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ChangeLog.beta1final--1.0   25 Oct 2002 12:59:11 -0000      1.1
--- ChangeLog.beta1final--1.0   14 Mar 2003 03:59:14 -0000      1.2
***************
*** 1 ****
! # do not edit -- automatically generated by larch changelog
--- 1 ----
! # do not edit -- automatically generated by larch changelog

Index: ChangeLog.codehere--1.1
===================================================================
RCS file: /cvsroot/phpgroupware/email/ChangeLog.codehere--1.1,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** ChangeLog.codehere--1.1     15 Nov 2002 07:32:54 -0000      1.2
--- ChangeLog.codehere--1.1     14 Mar 2003 03:59:18 -0000      1.3
***************
*** 1,2835 ****
! # do not edit -- automatically generated by arch changelog
! # tag: address@hidden/anglemail--codehere--1.1
! #
! 
! 2002-10-24 GMT        Angles Puglisi <address@hidden> patch-65
! 
!     Summary:
!       spead tweaks for large moves, including using refernces 
!     Revision:
!       anglemail--codehere--1.1--patch-65
[...6566 lines suppressed...]
!     version 1.1, this branch was sourced from anglemail--core--1.1 and is 
called 
!     anglemail--codehere--1.1, and when code here is ready, it should be star 
merged 
!     back into anglemail-core.
!     
!     So far, anglemail--beta1final--1.0 -> continuation -> 
anglemail--core--1.1 
!     and now -> continuation -> anglemail--codehere--1.1
!     
!     SO FAR ALL THESE BRANCHES ARE IDENTICAL. This is just setting the coding 
!     structure for next phase of development, no changes have yet been made 
!     to anglemail--core--1.1 and this branch anglemail--codehere--1.1 has no 
!     changes yet as we are just now making it, and of course "beta1final" 
!     is CLOSED, no more coding in that branch.
! 
!     new directories:
!      {arch}/anglemail/anglemail--codehere
!      {arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log
! 
! 

Index: ChangeLog.core--1.1
===================================================================
RCS file: /cvsroot/phpgroupware/email/ChangeLog.core--1.1,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ChangeLog.core--1.1 25 Oct 2002 12:59:11 -0000      1.1
--- ChangeLog.core--1.1 14 Mar 2003 03:59:47 -0000      1.2
***************
*** 1,413 ****
! # do not edit -- automatically generated by arch changelog
! # tag: address@hidden/anglemail--core--1.1
! #
! 
! 2002-09-21 GMT        Angles Puglisi <address@hidden> patch-3
! 
!     Summary:
!       update merge anglemail-codehere (at patch-42) into anglemail-core
!     Revision:
!       anglemail--core--1.1--patch-3
! 
!     Update merge anglemail-codehere (at patch-42) into anglemail-core.
!     
!     Anglemail-codehere at patch-42 is just after the new addressbook by lex 
!     was merged into the codehere tree, and after some significant bug fixes 
!     including now working with register globals on of off.
!     
!     So this was a good time to merge this code back into the core branch.
!     
!     This after release of tarball anglemail-1.1-pre04-07.tar.bz2
!     
!     The following paragraph was generated by arch command log-for-merge.
!     
!     Patches applied:
!     
!       * address@hidden/anglemail--codehere--1.1--patch-42
!          merge in addressbook code by lex, original one is optional, manual 
merge.
!     
!       * address@hidden/anglemail--codehere--1.1--patch-41
!          fix object call redirects, attach_file is now 
class.boattach_files.attach
!     
!       * address@hidden/anglemail--codehere--1.1--patch-40
!          fix the fix to the FILES data in attach_file.php
!     
!       * address@hidden/anglemail--codehere--1.1--patch-39
!          fix FILES upload vars and 0k file size, and properly redirect and 
kill script after sending mail
!     
!       * address@hidden/anglemail--codehere--1.1--patch-38
!          base64 encode 57 bytes at a time, and clear lines after sending
!     
!       * address@hidden/anglemail--codehere--1.1--patch-37
!          fix for php v4.2 and greater Superglobals issue
!     
!       * address@hidden/anglemail--codehere--1.1--patch-36
!          merge in lex changes for non-aadybook files
!     
!       * address@hidden/anglemail--codehere--1.1--patch-35
!          prep_folder_in checks for UWash foldername of "bare slash"
!     
!       * address@hidden/anglemail--codehere--1.1--patch-34
!          better RH login "recovering" message, and always try that recovery
!     
!       * address@hidden/anglemail--codehere--1.1--patch-33
!          update email lang files from Savannah CVS sources
!     
!       * address@hidden/anglemail--codehere--1.1--patch-32
!          fix decode rfc2047 encoded attachment name MIME headers with download
!     
!       * address@hidden/anglemail--codehere--1.1--patch-31
!          feature additions from Alex Borges
!     
!       * address@hidden/anglemail--codehere--1.1--patch-30
!          patch to hook_notifywindow, thanks Dave Hall
!     
!       * address@hidden/anglemail--codehere--1.1--patch-29
!          added debugging output to utf7 en/decode, verified working as per RFC
!     
!       * address@hidden/anglemail--codehere--1.1--patch-28
!          patch to attach_file to show file size, thanks Dave Hall
!     
!       * address@hidden/anglemail--codehere--1.1--patch-27
!          validate UWash namespace does not contain "bad" stuff
!     
! 
!     new files:
!      addressbook-chnagelog.txt addressbook-js.php
!      inc/selectboxes.js templates/default/addressbook-js-bits.tpl
!      templates/default/addressbook-js.tpl
!      templates/default/addressbook-real-plain.tpl-UNUSED
!      templates/default/addressbook.tpl-BAD
!      templates/default/addressbook.tpl-ORIG
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-27
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-28
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-29
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-30
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-31
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-32
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-33
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-34
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-35
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-36
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-37
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-38
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-39
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-40
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-41
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-42
! 
!     modified files:
!      ChangeLog.codehere--1.1 ChangeLog.core--1.1 attach_file.php
!      inc/class.boaction.inc.php inc/class.boattach_file.inc.php
!      inc/class.bocompose.inc.php inc/class.bofilters.inc.php
!      inc/class.bopreferences.inc.php inc/class.bosend.inc.php
!      inc/class.mail_dcom_base.inc.php
!      inc/class.mail_dcom_base_sock.inc.php
!      inc/class.mail_dcom_pop3_sock.inc.php
!      inc/class.mail_msg_base.inc.php
!      inc/class.mail_msg_wrappers.inc.php
!      inc/class.mail_send.inc.php inc/class.spell.inc.php
!      inc/class.svc_nextmatches.inc.php
!      inc/class.ui_mail_debug.inc.php inc/class.uicompose.inc.php
!      inc/class.uimessage.inc.php inc/class.uipreferences.inc.php
!      inc/hook_notifywindow.inc.php index.php setup/phpgw_da.lang
!      setup/phpgw_fr.lang setup/phpgw_pt.lang
!      templates/default/addressbook.tpl
!      templates/default/attach_file.tpl
!      templates/default/attach_file_blocks.tpl
!      templates/default/compose.tpl
! 
!     new patches:
!      address@hidden/anglemail--codehere--1.1--patch-27
!      address@hidden/anglemail--codehere--1.1--patch-28
!      address@hidden/anglemail--codehere--1.1--patch-29
!      address@hidden/anglemail--codehere--1.1--patch-30
!      address@hidden/anglemail--codehere--1.1--patch-31
!      address@hidden/anglemail--codehere--1.1--patch-32
!      address@hidden/anglemail--codehere--1.1--patch-33
!      address@hidden/anglemail--codehere--1.1--patch-34
!      address@hidden/anglemail--codehere--1.1--patch-35
!      address@hidden/anglemail--codehere--1.1--patch-36
!      address@hidden/anglemail--codehere--1.1--patch-37
!      address@hidden/anglemail--codehere--1.1--patch-38
!      address@hidden/anglemail--codehere--1.1--patch-39
!      address@hidden/anglemail--codehere--1.1--patch-40
!      address@hidden/anglemail--codehere--1.1--patch-41
!      address@hidden/anglemail--codehere--1.1--patch-42
! 
! 
! 2002-08-04 GMT        Angles Puglisi <address@hidden> patch-2
! 
!     Summary:
!       update merge anglemail--codehere--1.1--patch-26 into 
anglemail--core--1.1
!     Revision:
!       anglemail--core--1.1--patch-2
! 
!     Update merge anglemail--codehere--1.1--patch-26 into 
anglemail--core--1.1, 
!     where anglemail--codehere--1.1--patch-26 has been released in tarball 
form 
!     as file anglemail-1.1-pre3-15.tar.bz2 and, although needing some bug 
fixes, 
!     had been used in production with general success.
!     
!     Time was good to merge since this code is now a "known" element, and 
!     even the bugs it has are "known" so this merges known elements into the 
!     core branch and allows continued development in the codehere branch.
!     
!     The following paragraph was generated by arch command log-for-merge.
!     
!     Patches applied:
!     
!       * address@hidden/anglemail--codehere--1.1--patch-26
!          fix mail svc_nextmatches to work with the redirect replacement
!     
!       * address@hidden/anglemail--codehere--1.1--patch-25
!          made generalized make new env functions in boaction for public use
!     
!       * address@hidden/anglemail--codehere--1.1--patch-24
!          expande no-redirect, handle curley braces, increase big threshhold 
to 95
!     
!       * address@hidden/anglemail--codehere--1.1--patch-23
!          post-multi-delete redirect replaced with a direct object call
!     
!       * address@hidden/anglemail--codehere--1.1--patch-22
!          add docs, fix comment in index tpl file
!     
!       * address@hidden/anglemail--codehere--1.1--patch-21
!          added docs for move, delete, and expunge functions. DOCS ONLY.
!     
!       * address@hidden/anglemail--codehere--1.1--patch-20
!          fix append to sent items folder
!     
!       * address@hidden/anglemail--codehere--1.1--patch-19
!          migrate to "industrial_interacct_mail_move", track what needs 
expunging, only expunge when done
!     
!       * address@hidden/anglemail--codehere--1.1--patch-18
!          bugfixs for extreme caching being on or off
!     
!       * address@hidden/anglemail--codehere--1.1--patch-17
!          wrap all new "extreme" caching in conditionals so it can be turned 
off
!     
!       * address@hidden/anglemail--codehere--1.1--patch-16
!          add function to clear all "extreme" cache items, and not be 
"extreme" for big moves
!     
!       * address@hidden/anglemail--codehere--1.1--patch-15
!          fix moves, deleted, and expunging in extreme caching mode
!     
!       * address@hidden/anglemail--codehere--1.1--patch-14
!          first try at no logins unless absolutely necessary
!     
!       * address@hidden/anglemail--codehere--1.1--patch-13
!          folder stats now cached and assumed valid for X time, events keep it 
current
!     
!       * address@hidden/anglemail--codehere--1.1--patch-12
!          implement "extreme" cache management with option in not using it
!     
!       * address@hidden/anglemail--codehere--1.1--patch-11
!          Skeleton code for recycling on msgball_list cache
!     
!       * address@hidden/anglemail--codehere--1.1--patch-10
!          First code for "events" triggers used to alter cached data.
!     
!       * address@hidden/anglemail--codehere--1.1--patch-9
!          added docs for caching 
!     
!       * address@hidden/anglemail--codehere--1.1--patch-8
!          fix non-contiguous Received filter b0rk, decode rfc headers can 
handle multiline now
!     
!       * address@hidden/anglemail--codehere--1.1--patch-7
!          expire single "phpgw_header" element for unseen message we are going 
to view
!     
!       * address@hidden/anglemail--codehere--1.1--patch-6
!          Added phpgw_header data to appsession cache
!     
!       * address@hidden/anglemail--codehere--1.1--patch-5
!          sleep 1 sec in end_request, phpgw_fetchstructure data now cached in 
appsession
!     
! 
!     new files:
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-10
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-11
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-12
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-13
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-14
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-15
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-16
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-17
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-18
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-19
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-20
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-21
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-22
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-23
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-24
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-25
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-26
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-5
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-6
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-7
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-8
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-9
! 
!     modified files:
!      ChangeLog.codehere--1.1 ChangeLog.core--1.1
!      inc/class.boaction.inc.php inc/class.bofilters.inc.php
!      inc/class.bofolder.inc.php inc/class.boindex.inc.php
!      inc/class.bomessage.inc.php inc/class.bosend.inc.php
!      inc/class.html_widgets.inc.php inc/class.mail_filters.inc.php
!      inc/class.mail_msg_base.inc.php
!      inc/class.mail_msg_display.inc.php
!      inc/class.mail_msg_wrappers.inc.php
!      inc/class.msg_bootstrap.inc.php
!      inc/class.svc_nextmatches.inc.php
!      inc/class.ui_mail_debug.inc.php inc/class.uifilters.inc.php
!      inc/class.uifolder.inc.php inc/class.uiindex.inc.php
!      inc/class.uimessage.inc.php templates/default/debug.tpl
!      templates/default/index_main_b0_l1.tpl
!      templates/default/index_main_b0_l2.tpl
! 
!     new patches:
!      address@hidden/anglemail--codehere--1.1--patch-10
!      address@hidden/anglemail--codehere--1.1--patch-11
!      address@hidden/anglemail--codehere--1.1--patch-12
!      address@hidden/anglemail--codehere--1.1--patch-13
!      address@hidden/anglemail--codehere--1.1--patch-14
!      address@hidden/anglemail--codehere--1.1--patch-15
!      address@hidden/anglemail--codehere--1.1--patch-16
!      address@hidden/anglemail--codehere--1.1--patch-17
!      address@hidden/anglemail--codehere--1.1--patch-18
!      address@hidden/anglemail--codehere--1.1--patch-19
!      address@hidden/anglemail--codehere--1.1--patch-20
!      address@hidden/anglemail--codehere--1.1--patch-21
!      address@hidden/anglemail--codehere--1.1--patch-22
!      address@hidden/anglemail--codehere--1.1--patch-23
!      address@hidden/anglemail--codehere--1.1--patch-24
!      address@hidden/anglemail--codehere--1.1--patch-25
!      address@hidden/anglemail--codehere--1.1--patch-26
!      address@hidden/anglemail--codehere--1.1--patch-5
!      address@hidden/anglemail--codehere--1.1--patch-6
!      address@hidden/anglemail--codehere--1.1--patch-7
!      address@hidden/anglemail--codehere--1.1--patch-8
!      address@hidden/anglemail--codehere--1.1--patch-9
! 
! 
! 2002-06-13 GMT        Angles Puglisi <address@hidden> patch-1
! 
!     Summary:
!       replay merge anglemail-codehere into anglemail-core
!     Revision:
!       anglemail--core--1.1--patch-1
! 
!     Merge fixes and new stuff in codehere branch in to core. 
!     This includes fix for the "view as html" button, some 
!     basic detection of KLEZ iframe mails and "unfriendly" attachment 
!     filename extensions for winbloze users, add company to 
!     the addressbook (thanks dave hall), compose normalized 
!     to 80 char lines, images for "add to addressbook" are normal 
!     sized now.
!     
!     Also, this version uses "notls" instead of "novalidate-cert" 
!     for the RedHat php IMAP bug fix because normal IMAP on port 
!     143 should not be encrypted, but port 143 traffic was 
!     STARTTLS encrypted unless "notls" is used. Note that 
!     SSL IMAP works as usual if encryption is desired.
!     
!     Since codehere was branched FROM core and the two branches had
!     never been previously merged, core was ignorant of the codehere 
!     patchlogs, which effectively meant that merging by update or 
!     star-merge would produce an error about core not having a 
!     patchlog for codehere.
!     
!     So, this replay merge does 2 things, 1. it does the actual merge 
!     which is now the right the right time to merge anyway, and 
!     2. it lets the two branches "co-mingle" so now they know 
!     about each other and core will certainly have change logs 
!     for codehere, at least up to codehere patch4.
!     
!     So hopefully the more exotic merging techniques will be 
!     available for these 2 branches in the future because of this.
!     
!     Note if this replay does the trick, then do a trivial 
!     replay of new branches back into its trunk just so that trunk 
!     has a change log for the new branch. We shall see...
!     
!     The following paragraph was generated by arch command log-for-merge.
!     
!     Patches applied:
!     
!       * address@hidden/anglemail--codehere--1.1--patch-4
!          better detection of "bad" attachments, make compose box 78 chars wide
!     
!       * address@hidden/anglemail--codehere--1.1--patch-3
!          Addressbook fix by address@hidden, more work on IMAP sockets class
!     
!       * address@hidden/anglemail--codehere--1.1--patch-2
!          fix view as html as reference, give basic warnings for nefarious 
parts
!     
!       * address@hidden/anglemail--codehere--1.1--patch-1
!          first commit to codehere, add docs and alias decode headers to a 
better function
!     
!       * address@hidden/anglemail--codehere--1.1--base-0
!          first tree FROM anglemail core 1.1 FOR coding new stuff, merge back 
when ready
!     
! 
!     new files:
!      ChangeLog.codehere--1.1 ChangeLog.core--1.1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/base-0
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-2
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-3
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-4
! 
!     modified files:
!      addressbook.php inc/class.bomessage.inc.php
!      inc/class.html_widgets.inc.php inc/class.mail_dcom.inc.php
!      inc/class.mail_dcom_base_sock.inc.php
!      inc/class.mail_dcom_imap_sock.inc.php
!      inc/class.mail_msg_base.inc.php
!      inc/class.ui_mail_debug.inc.php
!      templates/default/addressbook.tpl
!      templates/default/compose.tpl templates/default/debug.tpl
!      templates/default/index_main_b0_l2.OLD.tpl
! 
!     new directories:
!      {arch}/anglemail/anglemail--codehere
!      {arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log
! 
!     new patches:
!      address@hidden/anglemail--codehere--1.1--base-0
!      address@hidden/anglemail--codehere--1.1--patch-1
!      address@hidden/anglemail--codehere--1.1--patch-2
!      address@hidden/anglemail--codehere--1.1--patch-3
!      address@hidden/anglemail--codehere--1.1--patch-4
! 
! 
! 2002-06-05 GMT        Angles Puglisi <address@hidden> base-0
! 
!     Summary:
!       first tree for anglemail version 1.1, this is the core, base branch for 
1.1
!     Revision:
!       anglemail--core--1.1--base-0
! 
!     branched from address@hidden/anglemail--beta1final--1.0--base-0
!     
!     Sourced from anglemail beta1final, this is a continuation branch from 
that and
!     this the FIRST branch that is anglemail version 1.1, and this is the 
CORE, BASE 
!     branch for anglemail 1.1, all other development for anglemail 1.1 will 
branch 
!     from this tree and merge back into this tree when ready, should be 
continuation 
!     from this branch, should be able to use star merge to get changes into 
this 
!     core mail "trunk" branch.
!     
!     Used this coommand sequence:
!     CMD: cd src/anglemail/anglemail-beta1final
!     CMD: larch prepare-branch anglemail--beta1final--1.0 anglemail--core--1.1 
src/anglemail/anglemail-core
!     CMD: cd src/anglemail/anglemail-core
!     CMD: edit this log file you are reading now
! 
!     new directories:
!      {arch}/anglemail/anglemail--core
!      {arch}/anglemail/anglemail--core/anglemail--core--1.1
!      {arch}/anglemail/anglemail--core/anglemail--core--1.1/address@hidden
!      
{arch}/anglemail/anglemail--core/anglemail--core--1.1/address@hidden/patch-log
! 
! 
--- 1,413 ----
! # do not edit -- automatically generated by arch changelog
! # tag: address@hidden/anglemail--core--1.1
! #
! 
! 2002-09-21 GMT        Angles Puglisi <address@hidden> patch-3
! 
!     Summary:
!       update merge anglemail-codehere (at patch-42) into anglemail-core
!     Revision:
!       anglemail--core--1.1--patch-3
! 
!     Update merge anglemail-codehere (at patch-42) into anglemail-core.
!     
!     Anglemail-codehere at patch-42 is just after the new addressbook by lex 
!     was merged into the codehere tree, and after some significant bug fixes 
!     including now working with register globals on of off.
!     
!     So this was a good time to merge this code back into the core branch.
!     
!     This after release of tarball anglemail-1.1-pre04-07.tar.bz2
!     
!     The following paragraph was generated by arch command log-for-merge.
!     
!     Patches applied:
!     
!       * address@hidden/anglemail--codehere--1.1--patch-42
!          merge in addressbook code by lex, original one is optional, manual 
merge.
!     
!       * address@hidden/anglemail--codehere--1.1--patch-41
!          fix object call redirects, attach_file is now 
class.boattach_files.attach
!     
!       * address@hidden/anglemail--codehere--1.1--patch-40
!          fix the fix to the FILES data in attach_file.php
!     
!       * address@hidden/anglemail--codehere--1.1--patch-39
!          fix FILES upload vars and 0k file size, and properly redirect and 
kill script after sending mail
!     
!       * address@hidden/anglemail--codehere--1.1--patch-38
!          base64 encode 57 bytes at a time, and clear lines after sending
!     
!       * address@hidden/anglemail--codehere--1.1--patch-37
!          fix for php v4.2 and greater Superglobals issue
!     
!       * address@hidden/anglemail--codehere--1.1--patch-36
!          merge in lex changes for non-aadybook files
!     
!       * address@hidden/anglemail--codehere--1.1--patch-35
!          prep_folder_in checks for UWash foldername of "bare slash"
!     
!       * address@hidden/anglemail--codehere--1.1--patch-34
!          better RH login "recovering" message, and always try that recovery
!     
!       * address@hidden/anglemail--codehere--1.1--patch-33
!          update email lang files from Savannah CVS sources
!     
!       * address@hidden/anglemail--codehere--1.1--patch-32
!          fix decode rfc2047 encoded attachment name MIME headers with download
!     
!       * address@hidden/anglemail--codehere--1.1--patch-31
!          feature additions from Alex Borges
!     
!       * address@hidden/anglemail--codehere--1.1--patch-30
!          patch to hook_notifywindow, thanks Dave Hall
!     
!       * address@hidden/anglemail--codehere--1.1--patch-29
!          added debugging output to utf7 en/decode, verified working as per RFC
!     
!       * address@hidden/anglemail--codehere--1.1--patch-28
!          patch to attach_file to show file size, thanks Dave Hall
!     
!       * address@hidden/anglemail--codehere--1.1--patch-27
!          validate UWash namespace does not contain "bad" stuff
!     
! 
!     new files:
!      addressbook-chnagelog.txt addressbook-js.php
!      inc/selectboxes.js templates/default/addressbook-js-bits.tpl
!      templates/default/addressbook-js.tpl
!      templates/default/addressbook-real-plain.tpl-UNUSED
!      templates/default/addressbook.tpl-BAD
!      templates/default/addressbook.tpl-ORIG
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-27
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-28
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-29
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-30
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-31
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-32
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-33
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-34
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-35
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-36
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-37
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-38
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-39
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-40
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-41
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-42
! 
!     modified files:
!      ChangeLog.codehere--1.1 ChangeLog.core--1.1 attach_file.php
!      inc/class.boaction.inc.php inc/class.boattach_file.inc.php
!      inc/class.bocompose.inc.php inc/class.bofilters.inc.php
!      inc/class.bopreferences.inc.php inc/class.bosend.inc.php
!      inc/class.mail_dcom_base.inc.php
!      inc/class.mail_dcom_base_sock.inc.php
!      inc/class.mail_dcom_pop3_sock.inc.php
!      inc/class.mail_msg_base.inc.php
!      inc/class.mail_msg_wrappers.inc.php
!      inc/class.mail_send.inc.php inc/class.spell.inc.php
!      inc/class.svc_nextmatches.inc.php
!      inc/class.ui_mail_debug.inc.php inc/class.uicompose.inc.php
!      inc/class.uimessage.inc.php inc/class.uipreferences.inc.php
!      inc/hook_notifywindow.inc.php index.php setup/phpgw_da.lang
!      setup/phpgw_fr.lang setup/phpgw_pt.lang
!      templates/default/addressbook.tpl
!      templates/default/attach_file.tpl
!      templates/default/attach_file_blocks.tpl
!      templates/default/compose.tpl
! 
!     new patches:
!      address@hidden/anglemail--codehere--1.1--patch-27
!      address@hidden/anglemail--codehere--1.1--patch-28
!      address@hidden/anglemail--codehere--1.1--patch-29
!      address@hidden/anglemail--codehere--1.1--patch-30
!      address@hidden/anglemail--codehere--1.1--patch-31
!      address@hidden/anglemail--codehere--1.1--patch-32
!      address@hidden/anglemail--codehere--1.1--patch-33
!      address@hidden/anglemail--codehere--1.1--patch-34
!      address@hidden/anglemail--codehere--1.1--patch-35
!      address@hidden/anglemail--codehere--1.1--patch-36
!      address@hidden/anglemail--codehere--1.1--patch-37
!      address@hidden/anglemail--codehere--1.1--patch-38
!      address@hidden/anglemail--codehere--1.1--patch-39
!      address@hidden/anglemail--codehere--1.1--patch-40
!      address@hidden/anglemail--codehere--1.1--patch-41
!      address@hidden/anglemail--codehere--1.1--patch-42
! 
! 
! 2002-08-04 GMT        Angles Puglisi <address@hidden> patch-2
! 
!     Summary:
!       update merge anglemail--codehere--1.1--patch-26 into 
anglemail--core--1.1
!     Revision:
!       anglemail--core--1.1--patch-2
! 
!     Update merge anglemail--codehere--1.1--patch-26 into 
anglemail--core--1.1, 
!     where anglemail--codehere--1.1--patch-26 has been released in tarball 
form 
!     as file anglemail-1.1-pre3-15.tar.bz2 and, although needing some bug 
fixes, 
!     had been used in production with general success.
!     
!     Time was good to merge since this code is now a "known" element, and 
!     even the bugs it has are "known" so this merges known elements into the 
!     core branch and allows continued development in the codehere branch.
!     
!     The following paragraph was generated by arch command log-for-merge.
!     
!     Patches applied:
!     
!       * address@hidden/anglemail--codehere--1.1--patch-26
!          fix mail svc_nextmatches to work with the redirect replacement
!     
!       * address@hidden/anglemail--codehere--1.1--patch-25
!          made generalized make new env functions in boaction for public use
!     
!       * address@hidden/anglemail--codehere--1.1--patch-24
!          expande no-redirect, handle curley braces, increase big threshhold 
to 95
!     
!       * address@hidden/anglemail--codehere--1.1--patch-23
!          post-multi-delete redirect replaced with a direct object call
!     
!       * address@hidden/anglemail--codehere--1.1--patch-22
!          add docs, fix comment in index tpl file
!     
!       * address@hidden/anglemail--codehere--1.1--patch-21
!          added docs for move, delete, and expunge functions. DOCS ONLY.
!     
!       * address@hidden/anglemail--codehere--1.1--patch-20
!          fix append to sent items folder
!     
!       * address@hidden/anglemail--codehere--1.1--patch-19
!          migrate to "industrial_interacct_mail_move", track what needs 
expunging, only expunge when done
!     
!       * address@hidden/anglemail--codehere--1.1--patch-18
!          bugfixs for extreme caching being on or off
!     
!       * address@hidden/anglemail--codehere--1.1--patch-17
!          wrap all new "extreme" caching in conditionals so it can be turned 
off
!     
!       * address@hidden/anglemail--codehere--1.1--patch-16
!          add function to clear all "extreme" cache items, and not be 
"extreme" for big moves
!     
!       * address@hidden/anglemail--codehere--1.1--patch-15
!          fix moves, deleted, and expunging in extreme caching mode
!     
!       * address@hidden/anglemail--codehere--1.1--patch-14
!          first try at no logins unless absolutely necessary
!     
!       * address@hidden/anglemail--codehere--1.1--patch-13
!          folder stats now cached and assumed valid for X time, events keep it 
current
!     
!       * address@hidden/anglemail--codehere--1.1--patch-12
!          implement "extreme" cache management with option in not using it
!     
!       * address@hidden/anglemail--codehere--1.1--patch-11
!          Skeleton code for recycling on msgball_list cache
!     
!       * address@hidden/anglemail--codehere--1.1--patch-10
!          First code for "events" triggers used to alter cached data.
!     
!       * address@hidden/anglemail--codehere--1.1--patch-9
!          added docs for caching 
!     
!       * address@hidden/anglemail--codehere--1.1--patch-8
!          fix non-contiguous Received filter b0rk, decode rfc headers can 
handle multiline now
!     
!       * address@hidden/anglemail--codehere--1.1--patch-7
!          expire single "phpgw_header" element for unseen message we are going 
to view
!     
!       * address@hidden/anglemail--codehere--1.1--patch-6
!          Added phpgw_header data to appsession cache
!     
!       * address@hidden/anglemail--codehere--1.1--patch-5
!          sleep 1 sec in end_request, phpgw_fetchstructure data now cached in 
appsession
!     
! 
!     new files:
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-10
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-11
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-12
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-13
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-14
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-15
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-16
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-17
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-18
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-19
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-20
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-21
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-22
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-23
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-24
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-25
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-26
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-5
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-6
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-7
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-8
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-9
! 
!     modified files:
!      ChangeLog.codehere--1.1 ChangeLog.core--1.1
!      inc/class.boaction.inc.php inc/class.bofilters.inc.php
!      inc/class.bofolder.inc.php inc/class.boindex.inc.php
!      inc/class.bomessage.inc.php inc/class.bosend.inc.php
!      inc/class.html_widgets.inc.php inc/class.mail_filters.inc.php
!      inc/class.mail_msg_base.inc.php
!      inc/class.mail_msg_display.inc.php
!      inc/class.mail_msg_wrappers.inc.php
!      inc/class.msg_bootstrap.inc.php
!      inc/class.svc_nextmatches.inc.php
!      inc/class.ui_mail_debug.inc.php inc/class.uifilters.inc.php
!      inc/class.uifolder.inc.php inc/class.uiindex.inc.php
!      inc/class.uimessage.inc.php templates/default/debug.tpl
!      templates/default/index_main_b0_l1.tpl
!      templates/default/index_main_b0_l2.tpl
! 
!     new patches:
!      address@hidden/anglemail--codehere--1.1--patch-10
!      address@hidden/anglemail--codehere--1.1--patch-11
!      address@hidden/anglemail--codehere--1.1--patch-12
!      address@hidden/anglemail--codehere--1.1--patch-13
!      address@hidden/anglemail--codehere--1.1--patch-14
!      address@hidden/anglemail--codehere--1.1--patch-15
!      address@hidden/anglemail--codehere--1.1--patch-16
!      address@hidden/anglemail--codehere--1.1--patch-17
!      address@hidden/anglemail--codehere--1.1--patch-18
!      address@hidden/anglemail--codehere--1.1--patch-19
!      address@hidden/anglemail--codehere--1.1--patch-20
!      address@hidden/anglemail--codehere--1.1--patch-21
!      address@hidden/anglemail--codehere--1.1--patch-22
!      address@hidden/anglemail--codehere--1.1--patch-23
!      address@hidden/anglemail--codehere--1.1--patch-24
!      address@hidden/anglemail--codehere--1.1--patch-25
!      address@hidden/anglemail--codehere--1.1--patch-26
!      address@hidden/anglemail--codehere--1.1--patch-5
!      address@hidden/anglemail--codehere--1.1--patch-6
!      address@hidden/anglemail--codehere--1.1--patch-7
!      address@hidden/anglemail--codehere--1.1--patch-8
!      address@hidden/anglemail--codehere--1.1--patch-9
! 
! 
! 2002-06-13 GMT        Angles Puglisi <address@hidden> patch-1
! 
!     Summary:
!       replay merge anglemail-codehere into anglemail-core
!     Revision:
!       anglemail--core--1.1--patch-1
! 
!     Merge fixes and new stuff in codehere branch in to core. 
!     This includes fix for the "view as html" button, some 
!     basic detection of KLEZ iframe mails and "unfriendly" attachment 
!     filename extensions for winbloze users, add company to 
!     the addressbook (thanks dave hall), compose normalized 
!     to 80 char lines, images for "add to addressbook" are normal 
!     sized now.
!     
!     Also, this version uses "notls" instead of "novalidate-cert" 
!     for the RedHat php IMAP bug fix because normal IMAP on port 
!     143 should not be encrypted, but port 143 traffic was 
!     STARTTLS encrypted unless "notls" is used. Note that 
!     SSL IMAP works as usual if encryption is desired.
!     
!     Since codehere was branched FROM core and the two branches had
!     never been previously merged, core was ignorant of the codehere 
!     patchlogs, which effectively meant that merging by update or 
!     star-merge would produce an error about core not having a 
!     patchlog for codehere.
!     
!     So, this replay merge does 2 things, 1. it does the actual merge 
!     which is now the right the right time to merge anyway, and 
!     2. it lets the two branches "co-mingle" so now they know 
!     about each other and core will certainly have change logs 
!     for codehere, at least up to codehere patch4.
!     
!     So hopefully the more exotic merging techniques will be 
!     available for these 2 branches in the future because of this.
!     
!     Note if this replay does the trick, then do a trivial 
!     replay of new branches back into its trunk just so that trunk 
!     has a change log for the new branch. We shall see...
!     
!     The following paragraph was generated by arch command log-for-merge.
!     
!     Patches applied:
!     
!       * address@hidden/anglemail--codehere--1.1--patch-4
!          better detection of "bad" attachments, make compose box 78 chars wide
!     
!       * address@hidden/anglemail--codehere--1.1--patch-3
!          Addressbook fix by address@hidden, more work on IMAP sockets class
!     
!       * address@hidden/anglemail--codehere--1.1--patch-2
!          fix view as html as reference, give basic warnings for nefarious 
parts
!     
!       * address@hidden/anglemail--codehere--1.1--patch-1
!          first commit to codehere, add docs and alias decode headers to a 
better function
!     
!       * address@hidden/anglemail--codehere--1.1--base-0
!          first tree FROM anglemail core 1.1 FOR coding new stuff, merge back 
when ready
!     
! 
!     new files:
!      ChangeLog.codehere--1.1 ChangeLog.core--1.1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/base-0
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-2
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-3
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log/patch-4
! 
!     modified files:
!      addressbook.php inc/class.bomessage.inc.php
!      inc/class.html_widgets.inc.php inc/class.mail_dcom.inc.php
!      inc/class.mail_dcom_base_sock.inc.php
!      inc/class.mail_dcom_imap_sock.inc.php
!      inc/class.mail_msg_base.inc.php
!      inc/class.ui_mail_debug.inc.php
!      templates/default/addressbook.tpl
!      templates/default/compose.tpl templates/default/debug.tpl
!      templates/default/index_main_b0_l2.OLD.tpl
! 
!     new directories:
!      {arch}/anglemail/anglemail--codehere
!      {arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden
!      
{arch}/anglemail/anglemail--codehere/anglemail--codehere--1.1/address@hidden/patch-log
! 
!     new patches:
!      address@hidden/anglemail--codehere--1.1--base-0
!      address@hidden/anglemail--codehere--1.1--patch-1
!      address@hidden/anglemail--codehere--1.1--patch-2
!      address@hidden/anglemail--codehere--1.1--patch-3
!      address@hidden/anglemail--codehere--1.1--patch-4
! 
! 
! 2002-06-05 GMT        Angles Puglisi <address@hidden> base-0
! 
!     Summary:
!       first tree for anglemail version 1.1, this is the core, base branch for 
1.1
!     Revision:
!       anglemail--core--1.1--base-0
! 
!     branched from address@hidden/anglemail--beta1final--1.0--base-0
!     
!     Sourced from anglemail beta1final, this is a continuation branch from 
that and
!     this the FIRST branch that is anglemail version 1.1, and this is the 
CORE, BASE 
!     branch for anglemail 1.1, all other development for anglemail 1.1 will 
branch 
!     from this tree and merge back into this tree when ready, should be 
continuation 
!     from this branch, should be able to use star merge to get changes into 
this 
!     core mail "trunk" branch.
!     
!     Used this coommand sequence:
!     CMD: cd src/anglemail/anglemail-beta1final
!     CMD: larch prepare-branch anglemail--beta1final--1.0 anglemail--core--1.1 
src/anglemail/anglemail-core
!     CMD: cd src/anglemail/anglemail-core
!     CMD: edit this log file you are reading now
! 
!     new directories:
!      {arch}/anglemail/anglemail--core
!      {arch}/anglemail/anglemail--core/anglemail--core--1.1
!      {arch}/anglemail/anglemail--core/anglemail--core--1.1/address@hidden
!      
{arch}/anglemail/anglemail--core/anglemail--core--1.1/address@hidden/patch-log
! 
! 

Index: ChangeLog.lex--1.1
===================================================================
RCS file: /cvsroot/phpgroupware/email/ChangeLog.lex--1.1,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ChangeLog.lex--1.1  25 Oct 2002 12:59:11 -0000      1.1
--- ChangeLog.lex--1.1  14 Mar 2003 03:59:49 -0000      1.2
***************
*** 1,1240 ****
! # do not edit -- automatically generated by arch changelog
! # tag: address@hidden/anglemail--lex--1.1
! #
! 
! 2002-10-17 GMT        Angles Puglisi <address@hidden> patch-22
! 
!     Summary:
!       commit to lex "anglemail-1.1-pre5-03-lex4" from 021014
!     Revision:
!       anglemail--lex--1.1--patch-22
[...2451 lines suppressed...]
!     branched from address@hidden/anglemail--codehere--1.1--patch-35
!     
!     That was the source branch and latest revision for this new branch. This 
is 
!     a "continuation" branch. Purpose is an anglemail branch for lex's code, 
so 
!     a tarball can be dumped here and committed as new revision for 
anglemail-lex.
!     
!     Then merging is possible between the branches (hopefully). This is to 
simplify 
!     maintenance of tracking various trees of anglemail and merging them.
!     
! 
!     modified files:
!      ChangeLog.codehere--1.1
! 
!     new directories:
!      {arch}/anglemail/anglemail--lex
!      {arch}/anglemail/anglemail--lex/anglemail--lex--1.1
!      {arch}/anglemail/anglemail--lex/anglemail--lex--1.1/address@hidden
!      
{arch}/anglemail/anglemail--lex/anglemail--lex--1.1/address@hidden/patch-log
! 
! 

Index: ChangeLog.ryan--1.1
===================================================================
RCS file: /cvsroot/phpgroupware/email/ChangeLog.ryan--1.1,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ChangeLog.ryan--1.1 25 Oct 2002 12:59:11 -0000      1.1
--- ChangeLog.ryan--1.1 14 Mar 2003 03:59:52 -0000      1.2
***************
*** 1,915 ****
! # do not edit -- automatically generated by arch changelog
! # tag: address@hidden/anglemail--ryan--1.1
! #
! 
! 2002-10-18 GMT        Angles Puglisi <address@hidden> patch-12
! 
!     Summary:
!       merge into ryan "anglemail-1.1-pre5-03-rcb1-lex5-unified" on 021017
!     Revision:
!       anglemail--ryan--1.1--patch-12
[...2323 lines suppressed...]
!      address@hidden/anglemail--codehere--1.1--patch-44
!      address@hidden/anglemail--codehere--1.1--patch-45
!      address@hidden/anglemail--codehere--1.1--patch-46
!      address@hidden/anglemail--codehere--1.1--patch-47
!      address@hidden/anglemail--codehere--1.1--patch-48
!      address@hidden/anglemail--codehere--1.1--patch-49
!      address@hidden/anglemail--codehere--1.1--patch-50
!      address@hidden/anglemail--codehere--1.1--patch-51
!      address@hidden/anglemail--core--1.1--base-0
!      address@hidden/anglemail--core--1.1--patch-1
!      address@hidden/anglemail--core--1.1--patch-2
!      address@hidden/anglemail--core--1.1--patch-3
!      address@hidden/anglemail--lex--1.1--patch-6
!      address@hidden/anglemail--lex--1.1--patch-7
!      address@hidden/anglemail--lex--1.1--patch-8
!      address@hidden/anglemail--lex--1.1--patch-9
!      address@hidden/anglemail--lex--1.1--patch-10
!      address@hidden/anglemail--lex--1.1--patch-11
! 
! 

Index: addressbook-js.changelog.txt
===================================================================
RCS file: /cvsroot/phpgroupware/email/addressbook-js.changelog.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** addressbook-js.changelog.txt        25 Oct 2002 12:59:11 -0000      1.1
--- addressbook-js.changelog.txt        14 Mar 2003 03:59:53 -0000      1.2
***************
*** 1,75 ****
! Hi....:)... good that one of you three are checkling this...
! 
! Difference from the preceding tarball:
! -This text file
! -Comments in addressbook.php
! -The addressbook remembers whatever is in the destination boxes (to,cc and 
bcc) and this data
!  survives a submit. This is needed since, when you click on a name in the 
source (where the names resulting from a query appear)
!  , we do a form.submit so we can go and fetch the extra user data from the 
database -if, and only if, a) U selected ONE name and 
!  b) the More Data checkbox is on
! 
! 
! TODO:
! - Keep cleaning up and documenting
! - When you click on a name in the destination boxs, say, to select it for 
removal, this thing does a submit and, so, if u have a single
!   entry in this places, you effectively cannot remove them (its now a 
documented feature...:P)
! - What should happen is, you click on one of the names in the destination 
boxes, it does the submit but IT SEARCHES for the extra data
!   AND REMEMBERS your selection in this boxes....it shouldnt be that hard but 
its very very late (4:30) so im leaving
! 
! Please dont hate it, help me improve it.... i think this email clients can be 
cool and easy to use, lets give this kind of 
! thing a chance to attract new users and developers into the whole project.
! 
! Sunday 22 of september
! 
! New Stuff:
! - Change the name of this file from addressbook-chnglog.txt to 
addressbook-js.changelog.txt
! - Changes in selectboxes.js to support a couple of functions we needed for 
the rest of the changes
! - You now can select a single user from a destination box and his data will 
be shown in the more data textarea box
! - Formatting changes in the addressbook-js.tpl to make this thing 
smaller...this was supposed to run in 800x600, now i have no idea how
!   to cram all that inside that
! - The addressbook now remembers everything you clicked regardless of where u 
did it with the exeptions mentioned in the next section
! 
! TODO:
! - Keep cleaning and documenting
! - It would be nice if the destination boxes content didnt die when u hit a 
category, sometimes u want to send mail to different categories
! - Sleep, but this is no time to do that.... im going to take a crack at a 
"forward as inline" functionality as a user preference
! 
! 
!  
! Monday 23 of september
! - Lots of caching gets performed so that we dont go and fetch the whole thing 
everytime we click on a name.
! - Bug that made the boxes forget what was in them if u clicked on the 
more-data button
! - Created preferences for your screensize which controls both the size of the 
window that gets poped up and the fonts of
!   the html widgets withing them.
! - Your addressbook choice is now a preference
! 
! TODO:
! - Keep cleaning and documenting
! - It would be nice if the destination boxes content didnt die when u hit a 
category, sometimes u want to send mail to different categories
! - Search button still not working...pretty stupid
! - U guys go and test it.... id the behaviour is good, i will move to make it 
a class.... please check it out... i think its production qualuty...im putting 
it online about wensday
! 
! Wendsday October 9 2002
! - This changelog entry makes up for the last releases of no documenting the 
changes
! - This thing went into a major overhaul, the js addressbook now is 
implemented in two classes
!   class.uijsaddressbook and class.bojsaddressbook.
! - The templates also changed as we moved to an event driven model of two 
frames, one hidden, one shown
!   The shown frame is basicaly what we were using as an index file 
(addressbook-js.php). The second frame
!   is dynamicaly set byu the event system when it needs to go fetch data from 
the server.
! - The particular stuff each of this classes provides will be put into angles 
documentation style
!   once my life is a bit stabler
! - Major changes include the hability to select the fields you want shown for 
user data, extreme use
!   of caching to improve performance... etc
! 
! BUGFIXES:
! - This addressbook now remembers everything with each page submit, actually, 
it will remember your
!   last selections and queries for the rest of your phpgw session.
! - This thing now uses the event system for most everything that doesnt 
involve a query to the database (and ill move that as well)
!   this means it cannot forget your selections on any of the relevant boxes 
unless you requery the database, in which case the present
!   selection of the nameselect box is unimportant and the destboxes are 
refeched from cache.... this baby rocks....
! 
! TODO:
! - I have tons of documentation to do, i know.... its good that tony doesnt 
live here cause he would probably shoot me
!   since he is so good at it himself... I promise it wont take long.
! 
! 
--- 1,75 ----
! Hi....:)... good that one of you three are checkling this...
! 
! Difference from the preceding tarball:
! -This text file
! -Comments in addressbook.php
! -The addressbook remembers whatever is in the destination boxes (to,cc and 
bcc) and this data
!  survives a submit. This is needed since, when you click on a name in the 
source (where the names resulting from a query appear)
!  , we do a form.submit so we can go and fetch the extra user data from the 
database -if, and only if, a) U selected ONE name and 
!  b) the More Data checkbox is on
! 
! 
! TODO:
! - Keep cleaning up and documenting
! - When you click on a name in the destination boxs, say, to select it for 
removal, this thing does a submit and, so, if u have a single
!   entry in this places, you effectively cannot remove them (its now a 
documented feature...:P)
! - What should happen is, you click on one of the names in the destination 
boxes, it does the submit but IT SEARCHES for the extra data
!   AND REMEMBERS your selection in this boxes....it shouldnt be that hard but 
its very very late (4:30) so im leaving
! 
! Please dont hate it, help me improve it.... i think this email clients can be 
cool and easy to use, lets give this kind of 
! thing a chance to attract new users and developers into the whole project.
! 
! Sunday 22 of september
! 
! New Stuff:
! - Change the name of this file from addressbook-chnglog.txt to 
addressbook-js.changelog.txt
! - Changes in selectboxes.js to support a couple of functions we needed for 
the rest of the changes
! - You now can select a single user from a destination box and his data will 
be shown in the more data textarea box
! - Formatting changes in the addressbook-js.tpl to make this thing 
smaller...this was supposed to run in 800x600, now i have no idea how
!   to cram all that inside that
! - The addressbook now remembers everything you clicked regardless of where u 
did it with the exeptions mentioned in the next section
! 
! TODO:
! - Keep cleaning and documenting
! - It would be nice if the destination boxes content didnt die when u hit a 
category, sometimes u want to send mail to different categories
! - Sleep, but this is no time to do that.... im going to take a crack at a 
"forward as inline" functionality as a user preference
! 
! 
!  
! Monday 23 of september
! - Lots of caching gets performed so that we dont go and fetch the whole thing 
everytime we click on a name.
! - Bug that made the boxes forget what was in them if u clicked on the 
more-data button
! - Created preferences for your screensize which controls both the size of the 
window that gets poped up and the fonts of
!   the html widgets withing them.
! - Your addressbook choice is now a preference
! 
! TODO:
! - Keep cleaning and documenting
! - It would be nice if the destination boxes content didnt die when u hit a 
category, sometimes u want to send mail to different categories
! - Search button still not working...pretty stupid
! - U guys go and test it.... id the behaviour is good, i will move to make it 
a class.... please check it out... i think its production qualuty...im putting 
it online about wensday
! 
! Wendsday October 9 2002
! - This changelog entry makes up for the last releases of no documenting the 
changes
! - This thing went into a major overhaul, the js addressbook now is 
implemented in two classes
!   class.uijsaddressbook and class.bojsaddressbook.
! - The templates also changed as we moved to an event driven model of two 
frames, one hidden, one shown
!   The shown frame is basicaly what we were using as an index file 
(addressbook-js.php). The second frame
!   is dynamicaly set byu the event system when it needs to go fetch data from 
the server.
! - The particular stuff each of this classes provides will be put into angles 
documentation style
!   once my life is a bit stabler
! - Major changes include the hability to select the fields you want shown for 
user data, extreme use
!   of caching to improve performance... etc
! 
! BUGFIXES:
! - This addressbook now remembers everything with each page submit, actually, 
it will remember your
!   last selections and queries for the rest of your phpgw session.
! - This thing now uses the event system for most everything that doesnt 
involve a query to the database (and ill move that as well)
!   this means it cannot forget your selections on any of the relevant boxes 
unless you requery the database, in which case the present
!   selection of the nameselect box is unimportant and the destboxes are 
refeched from cache.... this baby rocks....
! 
! TODO:
! - I have tons of documentation to do, i know.... its good that tony doesnt 
live here cause he would probably shoot me
!   since he is so good at it himself... I promise it wont take long.
! 
! 

Index: addressbook-js.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/addressbook-js.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** addressbook-js.php  25 Oct 2002 12:59:11 -0000      1.1
--- addressbook-js.php  14 Mar 2003 03:59:53 -0000      1.2
***************
*** 1,528 ****
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - email/addressbook                                      
   *
!       * http://www.phpgroupware.org                                           
   *
!       * Written by Bettina Gille address@hidden                          *
!       * -----------------------------------------------                       
   *
!       *  This program is free software; you can redistribute it and/or modify 
it *
!       *  under the terms of the GNU General Public License as published by 
the   *
!       *  Free Software Foundation; either version 2 of the License, or (at 
your  *
!       *  option) any later version.                                           
   *
[...1027 lines suppressed...]
!               
$GLOBALS['phpgw']->template->set_var('record_row_num',count($fields));
!               $GLOBALS['phpgw']->template->set_var('space_to_fit',str_pad("", 
5, " ", STR_PAD_LEFT));
!               $GLOBALS['phpgw']->template->set_var('lang_name',lang("Name"));
!               $GLOBALS['phpgw']->template->set_var('name',$completename);
!               
$GLOBALS['phpgw']->template->set_var('lang_title',lang("Title"));
!               
$GLOBALS['phpgw']->template->set_var('title',$entry[0]['title']);
!               
$GLOBALS['phpgw']->template->set_var('lang_phone',lang("Phone"));
!               
$GLOBALS['phpgw']->template->set_var('phone',$entry[0]['tel_work']);
!               
$GLOBALS['phpgw']->template->set_var('lang_organization',lang("Organization"));
!               
$GLOBALS['phpgw']->template->set_var('organization',$entry[0]['org_name']);
!               $GLOBALS['phpgw']->template->set_var('',$largest);
! 
!               
$GLOBALS['phpgw']->template->parse('V_addressbook_record','B_addressbook_record',True);
!       }
!       $GLOBALS['phpgw']->template->set_var('lang_done',lang('Done'));
!       $GLOBALS['phpgw']->template->parse('out','addressbook_names_t',True);
!       $GLOBALS['phpgw']->template->p('out');
! 
!       $GLOBALS['phpgw']->common->phpgw_exit();
! ?>

Index: addressbook.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/addressbook.php,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -r1.37 -r1.38
*** addressbook.php     25 Oct 2002 12:45:52 -0000      1.37
--- addressbook.php     14 Mar 2003 03:59:55 -0000      1.38
***************
*** 1,229 ****
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - email/addressbook                                      
   *
!       * http://www.phpgroupware.org                                           
   *
!       * Written by Bettina Gille address@hidden                          *
!       * -----------------------------------------------                       
   *
!       *  This program is free software; you can redistribute it and/or modify 
it *
!       *  under the terms of the GNU General Public License as published by 
the   *
!       *  Free Software Foundation; either version 2 of the License, or (at 
your  *
!       *  option) any later version.                                           
   *
!       
\**************************************************************************/
!       
!       /* $Id$ */
! 
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'noheader' => True,
!               'nonavbar' => True,
!               'currentapp' => 'email',
!               'enable_nextmatchs_class' => True
!       );
! 
!       include('../header.inc.php');
! 
!       $GLOBALS['phpgw']->template->set_file(array(
!               'addressbook_list_t' => 'addressbook.tpl',
!               'addressbook_list' => 'addressbook.tpl'
!       ));
!       
$GLOBALS['phpgw']->template->set_block('addressbook_list_t','addressbook_list','list');
! 
!       $d = CreateObject('phpgwapi.contacts');
!       $c = CreateObject('phpgwapi.categories');
!       $c->app_name = 'addressbook';
!       
!       $include_personal = True;
!       
!       $charset = $GLOBALS['phpgw']->translation->translate('charset');
!       $GLOBALS['phpgw']->template->set_var('charset',$charset);
!       
$GLOBALS['phpgw']->template->set_var('title',$GLOBALS['phpgw_info']['site_title']);
!       
$GLOBALS['phpgw']->template->set_var('bg_color',$GLOBALS['phpgw_info']['theme']['bg_color']);
!       
$GLOBALS['phpgw']->template->set_var('lang_addressbook_action',lang('Address 
book'));
!       
$GLOBALS['phpgw']->template->set_var('font',$GLOBALS['phpgw_info']['theme']['font']);
! 
!       $GLOBALS['phpgw']->template->set_var('lang_search',lang('Search'));
!       
$GLOBALS['phpgw']->template->set_var('search_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php'));
!       $GLOBALS['phpgw']->template->set_var('lang_select_cats',lang('Select 
category'));
! 
!       if (! $start)
!       {
!               $start = 0;
!       }
! 
!       if (!$filter)
!       {
!               $filter = 'none';
!       }
! 
!       if (!$cat_id)
!       {
!               if ($filter == 'none')
!               {
!                       $qfilter  = 'tid=n';
!               }
!               elseif ($filter == 'private')
!               {
!                       $qfilter  = 
'tid=n,owner='.$GLOBALS['phpgw_info']['user']['account_id'];
!               }
!               else
!               {
!                       $qfilter = 'tid=n,owner='.$filter;
!               }
!       }
!       else
!       {
!               if ($filter == 'none')
!               {
!                       $qfilter  = 'tid=n,cat_id='.$cat_id;
!               }
!               elseif ($filter == 'private')
!               {
!                       $qfilter  = 
'tid=n,owner='.$GLOBALS['phpgw_info']['user']['account_id'].',cat_id='.$cat_id; 
!               }
!               else
!               {
!                       $qfilter = 'tid=n,owner='.$filter.'cat_id='.$cat_id;
!               }
!       }
! 
!       if 
(($GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']) &&
!       ($GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'] > 
0))
!       {
!               $offset = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
!       }
!       else
!       {
!               $offset = 15;
!       }
! 
!       $account_id = $GLOBALS['phpgw_info']['user']['account_id'];
! 
!       $cols = array (
!               'n_given'    => 'n_given',
!               'n_family'   => 'n_family',
!               'org_name'   => 'org_name',
!               'email'      => 'email',
!               'email_home' => 'email_home'
!       );
! 
!       $entries = 
$d->read($start,$offset,$cols,$query,$qfilter,$sort,$order,$account_id);
! 
!       //------------------------------------------- nextmatch 
--------------------------------------------
!       $left = 
$GLOBALS['phpgw']->nextmatchs->left('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',$start,$d->total_records,"&order=$order&filter=$filter&sort=$sort&query=$query");
!       $right = 
$GLOBALS['phpgw']->nextmatchs->right('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',$start,$d->total_records,"&order=$order&filter=$filter&sort=$sort&query=$query");
!       $GLOBALS['phpgw']->template->set_var('left',$left);
!       $GLOBALS['phpgw']->template->set_var('right',$right);
! 
!       if ($d->total_records > 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'])
!       {
!               
$GLOBALS['phpgw']->template->set_var('lang_showing',lang('showing x - x of 
x',($start + 1),($start + 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']),$d->total_records));
!       }
!       else
!       {
!               
$GLOBALS['phpgw']->template->set_var('lang_showing',lang('showing 
x',$d->total_records));
!       }
!       // --------------------------------------- end nextmatch 
------------------------------------------
! 
!       // ------------------- list header variable template-declaration 
-----------------------
!       
$GLOBALS['phpgw']->template->set_var('th_bg',$GLOBALS['phpgw_info']['theme']['th_bg']);
!       
$GLOBALS['phpgw']->template->set_var('sort_firstname',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'n_given',$order,'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',lang('Firstname')));
!       
$GLOBALS['phpgw']->template->set_var('sort_lastname',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'n_family',$order,'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',lang('Lastname')));
!       
$GLOBALS['phpgw']->template->set_var('sort_company',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'org_name',$order,'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',lang('Company')));
!       $GLOBALS['phpgw']->template->set_var('lang_email',lang('Select work 
email address'));
!       $GLOBALS['phpgw']->template->set_var('lang_hemail',lang('Select home 
email address'));
!       
$GLOBALS['phpgw']->template->set_var('cats_list',$c->formated_list('select','all',$cat_id,'True'));
!       $GLOBALS['phpgw']->template->set_var('lang_select',lang('Select'));
!       
!       
//$GLOBALS['phpgw']->template->set_var('cats_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',"sort=$sort&order=$order&filter=$filter&start=$start&query=$query&cat_id=$cat_id"));
!       // thanks to  address@hidden for fixing drop down list filtering by 
categories
!       
$GLOBALS['phpgw']->template->set_var('cats_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',"sort=$sort&order=$order&filter=$filter&start=$start&query=$query"));
! 
!       // --------------------------- end header declaration 
----------------------------------
!       for ($i=0;$i<count($entries);$i++)
!       {
!               $tr_color = 
$GLOBALS['phpgw']->nextmatchs->alternate_row_color($tr_color);
!               $GLOBALS['phpgw']->template->set_var('tr_color',$tr_color);
!               $firstname = $entries[$i]['n_given'];
!               if (!$firstname)
!               {
!                       $firstname = '&nbsp;';
!               }
!               $lastname = $entries[$i]['n_family'];
!               if (!$lastname)
!               {
!                       $lastname = '&nbsp;';
!               }
!               // thanks to  address@hidden for adding company
!               $company = $entries[$i]['org_name'];
!               if (!$company)
!               {
!                       $company = '&nbsp;';
!               }
!               
!               $personal_firstname = '';
!               $personal_lastname = '';
!               $personal_part = '';
!               if ((isset($firstname)) &&
!                       ($firstname != '') &&
!                       ($firstname != '&nbsp;'))
!               {
!                       $personal_firstname = $firstname.' ';
!               }
!               if ((isset($lastname)) &&
!                       ($lastname != '') &&
!                       ($lastname != '&nbsp;'))
!               {
!                       $personal_lastname = $lastname;
!               }
!               $personal_part = $personal_firstname.$personal_lastname;
!               
!               if (($personal_part == '') ||
!                       ($include_personal == False))
!               {
!                       $id     = $entries[$i]['id'];
!                       $email  = $entries[$i]['email'];
!                       $hemail = $entries[$i]['email_home'];
!               }
!               else
!               {
!                       $id = $entries[$i]['id'];
!                       if ((isset($entries[$i]['email'])) &&
!                               (trim($entries[$i]['email']) != ''))
!                       {
!                               $email  = '&quot;'.$personal_part.'&quot; 
&lt;'.$entries[$i]['email'].'&gt;';
!                       }
!                       else
!                       {
!                               $email  = $entries[$i]['email'];
!                       }
!                       if ((isset($entries[$i]['email_home'])) &&
!                       (trim($entries[$i]['email_home']) != ''))
!                       {
!                               $hemail = '&quot;'.$personal_part.'&quot; 
&lt;'.$entries[$i]['email_home'].'&gt;';
!                       }
!                       else
!                       {
!                               $hemail = $entries[$i]['email_home'];
!                       }
!               }
!               
!               // --------------------- template declaration for list records 
--------------------------
!               $GLOBALS['phpgw']->template->set_var(array(
!                       'firstname' => $firstname,
!                       'lastname'  => $lastname,
!                       'company'       => $company
!               ));
! 
!               $GLOBALS['phpgw']->template->set_var('id',$id);
!               $GLOBALS['phpgw']->template->set_var('email',$email);
!               $GLOBALS['phpgw']->template->set_var('hemail',$hemail);
! 
!               
$GLOBALS['phpgw']->template->parse('list','addressbook_list',True);
!       }
!       // --------------------------- end record declaration 
---------------------------
! 
!       $GLOBALS['phpgw']->template->set_var('lang_done',lang('Done'));
!       $GLOBALS['phpgw']->template->parse('out','addressbook_list_t',True);
!       $GLOBALS['phpgw']->template->p('out');
! 
!       $GLOBALS['phpgw']->common->phpgw_exit();
! ?>
--- 1,229 ----
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - email/addressbook                                      
   *
!       * http://www.phpgroupware.org                                           
   *
!       * Written by Bettina Gille address@hidden                          *
!       * -----------------------------------------------                       
   *
!       *  This program is free software; you can redistribute it and/or modify 
it *
!       *  under the terms of the GNU General Public License as published by 
the   *
!       *  Free Software Foundation; either version 2 of the License, or (at 
your  *
!       *  option) any later version.                                           
   *
!       
\**************************************************************************/
!       
!       /* $Id$ */
! 
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'noheader' => True,
!               'nonavbar' => True,
!               'currentapp' => 'email',
!               'enable_nextmatchs_class' => True
!       );
! 
!       include('../header.inc.php');
! 
!       $GLOBALS['phpgw']->template->set_file(array(
!               'addressbook_list_t' => 'addressbook.tpl',
!               'addressbook_list' => 'addressbook.tpl'
!       ));
!       
$GLOBALS['phpgw']->template->set_block('addressbook_list_t','addressbook_list','list');
! 
!       $d = CreateObject('phpgwapi.contacts');
!       $c = CreateObject('phpgwapi.categories');
!       $c->app_name = 'addressbook';
!       
!       $include_personal = True;
!       
!       $charset = $GLOBALS['phpgw']->translation->translate('charset');
!       $GLOBALS['phpgw']->template->set_var('charset',$charset);
!       
$GLOBALS['phpgw']->template->set_var('title',$GLOBALS['phpgw_info']['site_title']);
!       
$GLOBALS['phpgw']->template->set_var('bg_color',$GLOBALS['phpgw_info']['theme']['bg_color']);
!       
$GLOBALS['phpgw']->template->set_var('lang_addressbook_action',lang('Address 
book'));
!       
$GLOBALS['phpgw']->template->set_var('font',$GLOBALS['phpgw_info']['theme']['font']);
! 
!       $GLOBALS['phpgw']->template->set_var('lang_search',lang('Search'));
!       
$GLOBALS['phpgw']->template->set_var('search_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php'));
!       $GLOBALS['phpgw']->template->set_var('lang_select_cats',lang('Select 
category'));
! 
!       if (! $start)
!       {
!               $start = 0;
!       }
! 
!       if (!$filter)
!       {
!               $filter = 'none';
!       }
! 
!       if (!$cat_id)
!       {
!               if ($filter == 'none')
!               {
!                       $qfilter  = 'tid=n';
!               }
!               elseif ($filter == 'private')
!               {
!                       $qfilter  = 
'tid=n,owner='.$GLOBALS['phpgw_info']['user']['account_id'];
!               }
!               else
!               {
!                       $qfilter = 'tid=n,owner='.$filter;
!               }
!       }
!       else
!       {
!               if ($filter == 'none')
!               {
!                       $qfilter  = 'tid=n,cat_id='.$cat_id;
!               }
!               elseif ($filter == 'private')
!               {
!                       $qfilter  = 
'tid=n,owner='.$GLOBALS['phpgw_info']['user']['account_id'].',cat_id='.$cat_id; 
!               }
!               else
!               {
!                       $qfilter = 'tid=n,owner='.$filter.'cat_id='.$cat_id;
!               }
!       }
! 
!       if 
(($GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']) &&
!       ($GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'] > 
0))
!       {
!               $offset = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
!       }
!       else
!       {
!               $offset = 15;
!       }
! 
!       $account_id = $GLOBALS['phpgw_info']['user']['account_id'];
! 
!       $cols = array (
!               'n_given'    => 'n_given',
!               'n_family'   => 'n_family',
!               'org_name'   => 'org_name',
!               'email'      => 'email',
!               'email_home' => 'email_home'
!       );
! 
!       $entries = 
$d->read($start,$offset,$cols,$query,$qfilter,$sort,$order,$account_id);
! 
!       //------------------------------------------- nextmatch 
--------------------------------------------
!       $left = 
$GLOBALS['phpgw']->nextmatchs->left('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',$start,$d->total_records,"&order=$order&filter=$filter&sort=$sort&query=$query");
!       $right = 
$GLOBALS['phpgw']->nextmatchs->right('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',$start,$d->total_records,"&order=$order&filter=$filter&sort=$sort&query=$query");
!       $GLOBALS['phpgw']->template->set_var('left',$left);
!       $GLOBALS['phpgw']->template->set_var('right',$right);
! 
!       if ($d->total_records > 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'])
!       {
!               
$GLOBALS['phpgw']->template->set_var('lang_showing',lang('showing x - x of 
x',($start + 1),($start + 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']),$d->total_records));
!       }
!       else
!       {
!               
$GLOBALS['phpgw']->template->set_var('lang_showing',lang('showing 
x',$d->total_records));
!       }
!       // --------------------------------------- end nextmatch 
------------------------------------------
! 
!       // ------------------- list header variable template-declaration 
-----------------------
!       
$GLOBALS['phpgw']->template->set_var('th_bg',$GLOBALS['phpgw_info']['theme']['th_bg']);
!       
$GLOBALS['phpgw']->template->set_var('sort_firstname',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'n_given',$order,'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',lang('Firstname')));
!       
$GLOBALS['phpgw']->template->set_var('sort_lastname',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'n_family',$order,'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',lang('Lastname')));
!       
$GLOBALS['phpgw']->template->set_var('sort_company',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'org_name',$order,'/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',lang('Company')));
!       $GLOBALS['phpgw']->template->set_var('lang_email',lang('Select work 
email address'));
!       $GLOBALS['phpgw']->template->set_var('lang_hemail',lang('Select home 
email address'));
!       
$GLOBALS['phpgw']->template->set_var('cats_list',$c->formated_list('select','all',$cat_id,'True'));
!       $GLOBALS['phpgw']->template->set_var('lang_select',lang('Select'));
!       
!       
//$GLOBALS['phpgw']->template->set_var('cats_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',"sort=$sort&order=$order&filter=$filter&start=$start&query=$query&cat_id=$cat_id"));
!       // thanks to  address@hidden for fixing drop down list filtering by 
categories
!       
$GLOBALS['phpgw']->template->set_var('cats_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/addressbook.php',"sort=$sort&order=$order&filter=$filter&start=$start&query=$query"));
! 
!       // --------------------------- end header declaration 
----------------------------------
!       for ($i=0;$i<count($entries);$i++)
!       {
!               $tr_color = 
$GLOBALS['phpgw']->nextmatchs->alternate_row_color($tr_color);
!               $GLOBALS['phpgw']->template->set_var('tr_color',$tr_color);
!               $firstname = $entries[$i]['n_given'];
!               if (!$firstname)
!               {
!                       $firstname = '&nbsp;';
!               }
!               $lastname = $entries[$i]['n_family'];
!               if (!$lastname)
!               {
!                       $lastname = '&nbsp;';
!               }
!               // thanks to  address@hidden for adding company
!               $company = $entries[$i]['org_name'];
!               if (!$company)
!               {
!                       $company = '&nbsp;';
!               }
!               
!               $personal_firstname = '';
!               $personal_lastname = '';
!               $personal_part = '';
!               if ((isset($firstname)) &&
!                       ($firstname != '') &&
!                       ($firstname != '&nbsp;'))
!               {
!                       $personal_firstname = $firstname.' ';
!               }
!               if ((isset($lastname)) &&
!                       ($lastname != '') &&
!                       ($lastname != '&nbsp;'))
!               {
!                       $personal_lastname = $lastname;
!               }
!               $personal_part = $personal_firstname.$personal_lastname;
!               
!               if (($personal_part == '') ||
!                       ($include_personal == False))
!               {
!                       $id     = $entries[$i]['id'];
!                       $email  = $entries[$i]['email'];
!                       $hemail = $entries[$i]['email_home'];
!               }
!               else
!               {
!                       $id = $entries[$i]['id'];
!                       if ((isset($entries[$i]['email'])) &&
!                               (trim($entries[$i]['email']) != ''))
!                       {
!                               $email  = '&quot;'.$personal_part.'&quot; 
&lt;'.$entries[$i]['email'].'&gt;';
!                       }
!                       else
!                       {
!                               $email  = $entries[$i]['email'];
!                       }
!                       if ((isset($entries[$i]['email_home'])) &&
!                       (trim($entries[$i]['email_home']) != ''))
!                       {
!                               $hemail = '&quot;'.$personal_part.'&quot; 
&lt;'.$entries[$i]['email_home'].'&gt;';
!                       }
!                       else
!                       {
!                               $hemail = $entries[$i]['email_home'];
!                       }
!               }
!               
!               // --------------------- template declaration for list records 
--------------------------
!               $GLOBALS['phpgw']->template->set_var(array(
!                       'firstname' => $firstname,
!                       'lastname'  => $lastname,
!                       'company'       => $company
!               ));
! 
!               $GLOBALS['phpgw']->template->set_var('id',$id);
!               $GLOBALS['phpgw']->template->set_var('email',$email);
!               $GLOBALS['phpgw']->template->set_var('hemail',$hemail);
! 
!               
$GLOBALS['phpgw']->template->parse('list','addressbook_list',True);
!       }
!       // --------------------------- end record declaration 
---------------------------
! 
!       $GLOBALS['phpgw']->template->set_var('lang_done',lang('Done'));
!       $GLOBALS['phpgw']->template->parse('out','addressbook_list_t',True);
!       $GLOBALS['phpgw']->template->p('out');
! 
!       $GLOBALS['phpgw']->common->phpgw_exit();
! ?>

Index: attach_file.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/attach_file.php,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -r1.27 -r1.28
*** attach_file.php     25 Oct 2002 12:45:52 -0000      1.27
--- attach_file.php     14 Mar 2003 03:59:56 -0000      1.28
***************
*** 1,368 ****
! <?php
!   /**************************************************************************\
!   * phpGroupWare - E-Mail                                                    *
!   * http://www.phpgroupware.org                                              *
!   * This file written by Joseph Engo <address@hidden>                *
!   * --------------------------------------------                             *
!   *  This program is free software; you can redistribute it and/or modify it *
!   *  under the terms of the GNU General Public License as published by the   *
!   *  Free Software Foundation; either version 2 of the License, or (at your  *
!   *  option) any later version.                                              *
!   \**************************************************************************/
! 
!       /* $Id$ */
!       
!       /*!
!       @function attach_file.php_the_file
!       @abstract attach_file.php is DEPRECIATED, use menuaction 
"email.boattach_file.attach" instead. 
!       */
!       
!       $phpgw_flags = Array(
!               'currentapp' => 'email',
!               'enable_network_class' => True,
!               'noheader'   => True,
!               'nonavbar'   => True
!       );
!       
!       $GLOBALS['phpgw_info']['flags'] = $phpgw_flags;
! 
!       include('../header.inc.php');
!       
!       $fup_debug=0;
!       //$fup_debug=2;
!       
!       // #### TESTING BO OBJECT, BYPASSES BYPASS THIS FILE
!       echo 'this file "attach_file.php" is depreciated, use the BO class 
instead<br>';
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
!       return;
!       // #### TESTING BO OBJECT, BYPASSES BYPASS THIS FILE
!       
!       
!       // we need a msg object BUT NO LOGIN IS NEEDED
!       $my_msg_bootstrap = '';
!       $my_msg_bootstrap = CreateObject("email.msg_bootstrap");
!       $my_msg_bootstrap->set_do_login(False);
!       $my_msg_bootstrap->ensure_mail_msg_exists('email: attach_file.php', 0);
! 
!       $GLOBALS['phpgw']->template->set_file(
!               Array(
!                       'T_attach_file' => 'attach_file.tpl',
!                       'T_attach_file_blocks' => 'attach_file_blocks.tpl'
!               )
!       );
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_alert_msg','V_alert_msg');
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_attached_list','V_attached_list');
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_attached_none','V_attached_none');
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_delete_btn','V_delete_btn');
! 
!       // initialize some variables
!       $alert_msg = '';
!       $totalfiles = 0;
! 
!       // ensure existance of PHPGROUPWARE temp dir
!       // note: this is different from apache temp dir, and different from any 
other temp file location set in php.ini
!       if (!file_exists($GLOBALS['phpgw_info']['server']['temp_dir']))
!       {
!               mkdir($GLOBALS['phpgw_info']['server']['temp_dir'],0700);
!       }
! 
!       // if we were NOT able to create this temp directory, then make an 
ERROR report
!       if (!file_exists($GLOBALS['phpgw_info']['server']['temp_dir']))
!       {
!               $alert_msg .= 'Error:'.'<br>'
!                       . 'Server is unable to access phpgw tmp 
directory'.'<br>'
!                       . $GLOBALS['phpgw_info']['server']['temp_dir'].'<br>'
!                       . 'Please check your configuration'.'<br>'
!                       . '<br>';
!       }
! 
!       if (!file_exists($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . 
$GLOBALS['phpgw_info']['user']['sessionid']))
!       {
!               mkdir($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . 
$GLOBALS['phpgw_info']['user']['sessionid'],0700);
!       }
! 
!       //$uploaddir = $GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . 
$GLOBALS['phpgw_info']['user']['sessionid'] . SEP;
!       $uploaddir = $GLOBALS['phpgw']->msg->att_files_dir;
!       
!       // if we were NOT able to create this temp directory, then make an 
ERROR report
!       if (!file_exists($uploaddir))
!       {
!               $alert_msg .= 'Error:'.'<br>'
!                       . 'Server is unable to access phpgw email tmp 
directory'.'<br>'
!                       . $uploaddir.'<br>'
!                       . 'Please check your configuration'.'<br>'
!                       . '<br>';
!       }
! 
!       /*
!       //PHP VARIABLES NOTES: 
!       // $uploadedfile was the name of the file box in the submitted form, 
and php3 gives it additional properties:
!       // $uploadedfile_name   $uploadedfile_size   $uploadedfile_type
!       // php4 also does this, but the preffered way is to use the new (for 
php4) $HTTP_POST_FILES global array
!       // $HTTP_POST_FILES['uploadedfile']['name']   .. .['type']   ... 
['size']  ... ['tmp_name']
!       // note that $uploadedfile_type and 
$HTTP_POST_FILES['uploadedfile']['type'] *may* not be correct filled
!       // UPDATE: php > 4.2 prefers "superglobal" $_FILES, actually 4.1+ can 
use that $_FILES
!       // 
!       // FILE SIZE NOTES:
!       // file size limits may depend on: (a) <input type="hidden" 
name="MAX_FILE_SIZE" value="whatever">
!       // (b) these values in php.ini: "post_max_size" "upload_max_filesize" 
"memory_limit" "max_execution_time"
!       // also see http://www.php.net/bugs.php?id=8377  for the status of an 
upload bug not fixed as of 4.0.4
!       // also note that uploading file to *memory* is wasteful
!       */
!       
!       // probably UNNECESSARY debug code, delete it after this is all stable
!       if (($GLOBALS['phpgw']->msg->minimum_version("4.1.0"))
!       && (!isset($GLOBALS['phpgw']->msg->ref_FILES)))
!       {
!               echo 'file attach_file ('.__LINE__.') ERROR: 
$GLOBALS[phpgw]->msg->ref_FILES should be set here, but it IS NOT set<br>';
!       }
!       
!       // the following code only applies to php < 4.1.0 where that 
superglobal was not available
!       // thanks Dave Hall for this code suggestion
!       if (
!         (! (isset($HTTP_POST_FILES) || isset($GLOBALS['HTTP_POST_FILES'])) )
!         && ($GLOBALS['phpgw']->msg->minimum_version("4.1.0") == False)
!       )
!       {
!               $_FILES = $GLOBALS['HTTP_POST_FILES'];
!               global $_FILES;
!               // REDEFINE THE REFERENCE TO THE FILES DATA
!               $GLOBALS['phpgw']->msg->ref_FILES = &$_FILES;
!       }
!       // yes I am aware that the above code and the below code kind of deal 
with the same thing
!       // if  the above code still does not give a good reference to FILES 
data, below there is "oldschool" fallback code
!       // also I do not want to force global something every script run when 
it is only needed here
!       
!       
!       // clean / prepare PHP provided file info
!       // note that "uploadedfile" is the POST submit form identification for 
the file
!       if ( ($GLOBALS['phpgw']->msg->minimum_version("4.1.0"))
!       // or we may have otherwise obtained a good reference above
!       || (isset($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile'])) )
!       {
!               $file_tmp_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['tmp_name']));
!               $file_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['name']));
!               $file_size = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['size']));
!               $file_type = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['type']));
!               if ($fup_debug > 1) { echo 'ref_FILE dump: 
'.htmlspecialchars(serialize($GLOBALS['phpgw']->msg->ref_FILES)).'<br>'; } 
!       }
!       else
!       {
!               // php less then 4.1 uses these pre-superglobals enviornment 
vars
!               $file_tmp_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile));
!               $file_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile_name));
!               $file_size = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile_size));
!               $file_type = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile_type));        
!       }
!       
!       // sometimes PHP is very clue-less about MIME types, and gives NO 
file_type
!       // rfc default for unknown MIME type is:
!       $mime_type_default = 'application/octet-stream';
!       // so if PHP did not pass any file_type info, then substitute the rfc 
default value
!       if (trim($file_type) == '')
!       {
!               $file_type = $mime_type_default;
!       }
! 
!       // Netscape 6 sometimes passes file_name with a full path, we need to 
extract just the filename
!       function wbasename($input)
!       {
!               if (strstr($input, SEP) == False)
!               {
!                       // no filesystem seperator is present
!                       return $input;
!               }
! 
!               for($i=0; $i < strlen($input); $i++ )
!               {
!                       $pos = strpos($input, SEP, $i);
!                       if ($pos != false)
!                       {
!                               $lastpos = $pos;
!                       }
!               }
!               return substr($input, $lastpos + 1, strlen($input));
!       }
        // now use that function to get a clean file name
!       if ($fup_debug > 1) { echo 'file_name (pre-wbasename): ' .$file_name 
.'<br>'; } 
!       // Netscape 6 passes file_name with a full path, we need to extract 
just the filename
!       $file_name = wbasename($file_name);
! 
!       // Some server side attachment upload handling code is borrowed from
!       // Squirrelmail <Luke Ehresman> http://www.squirrelmail.org
!       // particularly the moving, temporary naming, and the ".info" file code.
!       if ($action == lang('Delete'))
!       {
!               for ($i=0; $i<count($delete); $i++)
!               {
!                       unlink($uploaddir.SEP.$delete[$i]);
!                       unlink($uploaddir.SEP.$delete[$i] . '.info');
!               }
!       }
! 
!       //if ($action == 'Attach File')
!       if (($action == lang('Attach File'))
!       && ($file_tmp_name != '')
!       && ($file_tmp_name != 'none'))
!       {
!               srand((double)microtime()*1000000);
!               $random_number = rand(100000000,999999999);
!               $newfilename = md5($file_tmp_name.', '.$file_name.', 
'.$GLOBALS['phpgw_info']['user']['sessionid'].time().getenv('REMOTE_ADDR').$random_number);
! 
!               // Check for uploaded file of 0-length, or no file (patch from 
Zone added by Milosch)
!               //if ($file_tmp_name == "none" && $file_size == 0) This could 
work also
!               if ($file_size == 0)
!               {
!                       touch ($uploaddir.SEP.$newfilename);
!               }
!               else
!               {
!                       copy($file_tmp_name, $uploaddir.SEP.$newfilename);
!               }
! 
!               $ftp = fopen($uploaddir.SEP.$newfilename . '.info','wb');
!               fputs($ftp,$file_type."\n".$file_name."\n");
!               fclose($ftp);
!       }
!       elseif (($action == lang('Attach File')) &&
!               (($file_tmp_name == '') || ($file_tmp_name == 'none')))
!       {
!               $langed_attach_file = lang("Attach File");
!               $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>';
!       }
! 
!       $dh = opendir($uploaddir);
!       //while ($file = readdir($dh)) // 
http://www.php.net/manual/en/function.readdir.php says this is wrong ... 
!       while (false !== ($file = readdir($dh))) // is correct according to the 
manual but only works with 4.0.0RC2+
!       {
!               if (($file != '.')
!               && ($file != '..')
!               && (ereg("\.info",$file)))
!               {
!                       $file_info = file($uploaddir.SEP.$file);
!                       
!                       //get filesize in kb, but do not tell user a file is 
0kb, because it is probably closer to 1kb
!                       $real_file = str_replace('.info','',$file);
!                       $real_file_size = ((int) 
(@filesize($uploaddir.SEP.$real_file)/1024));
!                       if ($real_file_size < 1)
!                       {
!                               $real_file_size = 1;
!                       }
!                       
!                       if ($fup_debug > 2) { echo 'FILE contents DUMP: <pre>'; 
print_r(file($uploaddir.SEP.$real_file)); echo '</pre>'; } 
!                       // for every file, fill the file list template with it
!                       
$GLOBALS['phpgw']->template->set_var('ckbox_delete_name','delete[]');
!                       
$GLOBALS['phpgw']->template->set_var('ckbox_delete_value',substr($file,0,-5));
!                       
$GLOBALS['phpgw']->template->set_var('hidden_delete_name',substr($file,0,-5));
!                       
$GLOBALS['phpgw']->template->set_var('hidden_delete_filename',
!                                       $file_info[1]);
!                       
$GLOBALS['phpgw']->template->set_var('ckbox_delete_filename',
!                                       //$file_info[1].' ('.((int) 
(@filesize($uploaddir.SEP.$real_file)/1024)).'k)'); //also shows file size in kb
!                                       $file_info[1].' 
('.$real_file_size.'k)'); //also shows file size in kb
!                       
$GLOBALS['phpgw']->template->parse('V_attached_list','B_attached_list',True);
!                       $totalfiles++;
!               }
!       }
!       closedir($dh);
!       if ($totalfiles == 0)
!       {
!               // there is no list of files, clear that block
!               $GLOBALS['phpgw']->template->set_var('V_attached_list','');
!               // there is no delete button because there are no files to 
delete, clear that block
!               $GLOBALS['phpgw']->template->set_var('V_delete_btn','');
!               // show the none block
!               $GLOBALS['phpgw']->template->set_var('text_none',lang('None'));
!               
$GLOBALS['phpgw']->template->parse('V_attached_none','B_attached_none');
!       }
!       else
!       {
!               // we have files, clear the "no files" block
!               $GLOBALS['phpgw']->template->set_var('V_attached_none','');
!               // fill the delete sublit form
!               
$GLOBALS['phpgw']->template->set_var('btn_delete_name','action');
!               
$GLOBALS['phpgw']->template->set_var('btn_delete_value',lang('Delete'));
!               
$GLOBALS['phpgw']->template->parse('V_delete_btn','B_delete_btn');
!       }
! 
!       $body_tags = 'bgcolor="'.$GLOBALS['phpgw_info']['theme']['bg_color'].'" 
alink="'.$GLOBALS['phpgw_info']['theme']['alink'].'" 
link="'.$GLOBALS['phpgw_info']['theme']['link'].'" 
vlink="'.$GLOBALS['phpgw_info']['theme']['vlink'].'"';
!       if (!$GLOBALS['phpgw_info']['server']['htmlcompliant'])
!       {
!               $body_tags .= ' topmargin="0" marginheight="0" marginwidth="0" 
leftmargin="0"';
!       }
! 
!       // begin DEBUG INFO
!       $debuginfo .= '--uploadedfile info: <br>'
!               . '$GLOBALS[phpgw_info][server][temp_dir]: 
'.$GLOBALS['phpgw_info']['server']['temp_dir'].'<br>'
!               . '$GLOBALS[phpgw_info][user][sessionid]: 
'.$GLOBALS['phpgw_info']['user']['sessionid'].'<br>'
!               . 'uploaddir: '.$uploaddir.'<br>'
!               . 'file_tmp_name: ' .$file_tmp_name .'<br>'
!               . 'file_name: ' .$file_name .'<br>'
!               . 'file_size: ' .$file_size .'<br>'
!               . 'file_type: ' .$file_type .'<br>'
!               . '<br>'
!               . 'totalfiles: ' .$totalfiles .'<br>'
!               . 'file_info_count: '.count($file_info) .'<br>'
!               . '<br>';
!       if (count($file_info) > 0)
!       {
!               $debuginfo .= '<br> file_info[0]='.$file_info[0] .'<br> 
file_info[1]='.$file_info[1];
!       }
!       $debuginfo .= '<br>';
!       //print_debug('$debuginfo', $debuginfo);
!       if ($fup_debug > 1) { echo '$debuginfo: '.$debuginfo.'<br>'; } 
!       // end DEBUG INFO
! 
!       $charset = lang('charset');
!       $GLOBALS['phpgw']->template->set_var('charset',$charset);
!       
$GLOBALS['phpgw']->template->set_var('page_title',$GLOBALS['phpgw_flags']['currentapp']
 . ' - ' .lang('File attachment'));
!       
$GLOBALS['phpgw']->template->set_var('font_family',$GLOBALS['phpgw_info']['theme']['font']);
!       $GLOBALS['phpgw']->template->set_var('body_tags',$body_tags);
!       if ($alert_msg != '')
!       {
!               $GLOBALS['phpgw']->template->set_var('alert_msg',$alert_msg);
!               $GLOBALS['phpgw']->template->parse('V_alert_msg','B_alert_msg');
!       }
!       else
!       {
!               $GLOBALS['phpgw']->template->set_var('V_alert_msg','');
!       }
!       $GLOBALS['phpgw']->template->set_var('form_method','POST');
!       
$GLOBALS['phpgw']->template->set_var('form_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/attach_file.php'));
!       $GLOBALS['phpgw']->template->set_var('text_attachfile',lang('Attach 
file'));
!       $GLOBALS['phpgw']->template->set_var('text_currattached',lang('Current 
attachments (%1)',$totalfiles));
!       $GLOBALS['phpgw']->template->set_var('txtbox_upload_desc',lang('File'));
!       
$GLOBALS['phpgw']->template->set_var('txtbox_upload_name','uploadedfile');
!       $GLOBALS['phpgw']->template->set_var('btn_attach_name','action');
!       $GLOBALS['phpgw']->template->set_var('btn_attach_value',lang('Attach 
File'));
!       $GLOBALS['phpgw']->template->set_var('btn_done_name','done');
!       $GLOBALS['phpgw']->template->set_var('btn_done_value',lang('Done'));
!          $GLOBALS['phpgw']->template->set_var('btn_done_js','copyback()');
!          $GLOBALS['phpgw']->template->set_var('form1_name','doit');
! 
!       $GLOBALS['phpgw']->template->pfp('out','T_attach_file');
! 
!       //$GLOBALS['phpgw']->common->phpgw_exit();
!       if (is_object($GLOBALS['phpgw']->msg))
!       {
!               $terminate = True;
!       }
!       else
!       {
!               $terminate = False;
!       }
!       
!       if ($terminate == True)
!       {
!               // close down ALL mailserver streams
!               $GLOBALS['phpgw']->msg->end_request();
!               // destroy the object
!               $GLOBALS['phpgw']->msg = '';
!               unset($GLOBALS['phpgw']->msg);
!       }
!       
!       // shut down this transaction
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
! ?>
--- 1,368 ----
! <?php
!   /**************************************************************************\
!   * phpGroupWare - E-Mail                                                    *
!   * http://www.phpgroupware.org                                              *
!   * This file written by Joseph Engo <address@hidden>                *
!   * --------------------------------------------                             *
!   *  This program is free software; you can redistribute it and/or modify it *
!   *  under the terms of the GNU General Public License as published by the   *
!   *  Free Software Foundation; either version 2 of the License, or (at your  *
!   *  option) any later version.                                              *
!   \**************************************************************************/
! 
!       /* $Id$ */
!       
!       /*!
!       @function attach_file.php_the_file
!       @abstract attach_file.php is DEPRECIATED, use menuaction 
"email.boattach_file.attach" instead. 
!       */
!       
!       $phpgw_flags = Array(
!               'currentapp' => 'email',
!               'enable_network_class' => True,
!               'noheader'   => True,
!               'nonavbar'   => True
!       );
!       
!       $GLOBALS['phpgw_info']['flags'] = $phpgw_flags;
! 
!       include('../header.inc.php');
!       
!       $fup_debug=0;
!       //$fup_debug=2;
!       
!       // #### TESTING BO OBJECT, BYPASSES BYPASS THIS FILE
!       echo 'this file "attach_file.php" is depreciated, use the BO class 
instead<br>';
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
!       return;
!       // #### TESTING BO OBJECT, BYPASSES BYPASS THIS FILE
!       
!       
!       // we need a msg object BUT NO LOGIN IS NEEDED
!       $my_msg_bootstrap = '';
!       $my_msg_bootstrap = CreateObject("email.msg_bootstrap");
!       $my_msg_bootstrap->set_do_login(False);
!       $my_msg_bootstrap->ensure_mail_msg_exists('email: attach_file.php', 0);
! 
!       $GLOBALS['phpgw']->template->set_file(
!               Array(
!                       'T_attach_file' => 'attach_file.tpl',
!                       'T_attach_file_blocks' => 'attach_file_blocks.tpl'
!               )
!       );
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_alert_msg','V_alert_msg');
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_attached_list','V_attached_list');
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_attached_none','V_attached_none');
!       
$GLOBALS['phpgw']->template->set_block('T_attach_file_blocks','B_delete_btn','V_delete_btn');
! 
!       // initialize some variables
!       $alert_msg = '';
!       $totalfiles = 0;
! 
!       // ensure existance of PHPGROUPWARE temp dir
!       // note: this is different from apache temp dir, and different from any 
other temp file location set in php.ini
!       if (!file_exists($GLOBALS['phpgw_info']['server']['temp_dir']))
!       {
!               mkdir($GLOBALS['phpgw_info']['server']['temp_dir'],0700);
!       }
! 
!       // if we were NOT able to create this temp directory, then make an 
ERROR report
!       if (!file_exists($GLOBALS['phpgw_info']['server']['temp_dir']))
!       {
!               $alert_msg .= 'Error:'.'<br>'
!                       . 'Server is unable to access phpgw tmp 
directory'.'<br>'
!                       . $GLOBALS['phpgw_info']['server']['temp_dir'].'<br>'
!                       . 'Please check your configuration'.'<br>'
!                       . '<br>';
!       }
! 
!       if (!file_exists($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . 
$GLOBALS['phpgw_info']['user']['sessionid']))
!       {
!               mkdir($GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . 
$GLOBALS['phpgw_info']['user']['sessionid'],0700);
!       }
! 
!       //$uploaddir = $GLOBALS['phpgw_info']['server']['temp_dir'] . SEP . 
$GLOBALS['phpgw_info']['user']['sessionid'] . SEP;
!       $uploaddir = $GLOBALS['phpgw']->msg->att_files_dir;
!       
!       // if we were NOT able to create this temp directory, then make an 
ERROR report
!       if (!file_exists($uploaddir))
!       {
!               $alert_msg .= 'Error:'.'<br>'
!                       . 'Server is unable to access phpgw email tmp 
directory'.'<br>'
!                       . $uploaddir.'<br>'
!                       . 'Please check your configuration'.'<br>'
!                       . '<br>';
!       }
! 
!       /*
!       //PHP VARIABLES NOTES: 
!       // $uploadedfile was the name of the file box in the submitted form, 
and php3 gives it additional properties:
!       // $uploadedfile_name   $uploadedfile_size   $uploadedfile_type
!       // php4 also does this, but the preffered way is to use the new (for 
php4) $HTTP_POST_FILES global array
!       // $HTTP_POST_FILES['uploadedfile']['name']   .. .['type']   ... 
['size']  ... ['tmp_name']
!       // note that $uploadedfile_type and 
$HTTP_POST_FILES['uploadedfile']['type'] *may* not be correct filled
!       // UPDATE: php > 4.2 prefers "superglobal" $_FILES, actually 4.1+ can 
use that $_FILES
!       // 
!       // FILE SIZE NOTES:
!       // file size limits may depend on: (a) <input type="hidden" 
name="MAX_FILE_SIZE" value="whatever">
!       // (b) these values in php.ini: "post_max_size" "upload_max_filesize" 
"memory_limit" "max_execution_time"
!       // also see http://www.php.net/bugs.php?id=8377  for the status of an 
upload bug not fixed as of 4.0.4
!       // also note that uploading file to *memory* is wasteful
!       */
!       
!       // probably UNNECESSARY debug code, delete it after this is all stable
!       if (($GLOBALS['phpgw']->msg->minimum_version("4.1.0"))
!       && (!isset($GLOBALS['phpgw']->msg->ref_FILES)))
!       {
!               echo 'file attach_file ('.__LINE__.') ERROR: 
$GLOBALS[phpgw]->msg->ref_FILES should be set here, but it IS NOT set<br>';
!       }
!       
!       // the following code only applies to php < 4.1.0 where that 
superglobal was not available
!       // thanks Dave Hall for this code suggestion
!       if (
!         (! (isset($HTTP_POST_FILES) || isset($GLOBALS['HTTP_POST_FILES'])) )
!         && ($GLOBALS['phpgw']->msg->minimum_version("4.1.0") == False)
!       )
!       {
!               $_FILES = $GLOBALS['HTTP_POST_FILES'];
!               global $_FILES;
!               // REDEFINE THE REFERENCE TO THE FILES DATA
!               $GLOBALS['phpgw']->msg->ref_FILES = &$_FILES;
!       }
!       // yes I am aware that the above code and the below code kind of deal 
with the same thing
!       // if  the above code still does not give a good reference to FILES 
data, below there is "oldschool" fallback code
!       // also I do not want to force global something every script run when 
it is only needed here
!       
!       
!       // clean / prepare PHP provided file info
!       // note that "uploadedfile" is the POST submit form identification for 
the file
!       if ( ($GLOBALS['phpgw']->msg->minimum_version("4.1.0"))
!       // or we may have otherwise obtained a good reference above
!       || (isset($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile'])) )
!       {
!               $file_tmp_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['tmp_name']));
!               $file_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['name']));
!               $file_size = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['size']));
!               $file_type = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($GLOBALS['phpgw']->msg->ref_FILES['uploadedfile']['type']));
!               if ($fup_debug > 1) { echo 'ref_FILE dump: 
'.htmlspecialchars(serialize($GLOBALS['phpgw']->msg->ref_FILES)).'<br>'; } 
!       }
!       else
!       {
!               // php less then 4.1 uses these pre-superglobals enviornment 
vars
!               $file_tmp_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile));
!               $file_name = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile_name));
!               $file_size = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile_size));
!               $file_type = 
$GLOBALS['phpgw']->msg->stripslashes_gpc(trim($uploadedfile_type));        
!       }
!       
!       // sometimes PHP is very clue-less about MIME types, and gives NO 
file_type
!       // rfc default for unknown MIME type is:
!       $mime_type_default = 'application/octet-stream';
!       // so if PHP did not pass any file_type info, then substitute the rfc 
default value
!       if (trim($file_type) == '')
!       {
!               $file_type = $mime_type_default;
!       }
! 
!       // Netscape 6 sometimes passes file_name with a full path, we need to 
extract just the filename
!       function wbasename($input)
!       {
!               if (strstr($input, SEP) == False)
!               {
!                       // no filesystem seperator is present
!                       return $input;
!               }
! 
!               for($i=0; $i < strlen($input); $i++ )
!               {
!                       $pos = strpos($input, SEP, $i);
!                       if ($pos != false)
!                       {
!                               $lastpos = $pos;
!                       }
!               }
!               return substr($input, $lastpos + 1, strlen($input));
!       }
        // now use that function to get a clean file name
!       if ($fup_debug > 1) { echo 'file_name (pre-wbasename): ' .$file_name 
.'<br>'; } 
!       // Netscape 6 passes file_name with a full path, we need to extract 
just the filename
!       $file_name = wbasename($file_name);
! 
!       // Some server side attachment upload handling code is borrowed from
!       // Squirrelmail <Luke Ehresman> http://www.squirrelmail.org
!       // particularly the moving, temporary naming, and the ".info" file code.
!       if ($action == lang('Delete'))
!       {
!               for ($i=0; $i<count($delete); $i++)
!               {
!                       unlink($uploaddir.SEP.$delete[$i]);
!                       unlink($uploaddir.SEP.$delete[$i] . '.info');
!               }
!       }
! 
!       //if ($action == 'Attach File')
!       if (($action == lang('Attach File'))
!       && ($file_tmp_name != '')
!       && ($file_tmp_name != 'none'))
!       {
!               srand((double)microtime()*1000000);
!               $random_number = rand(100000000,999999999);
!               $newfilename = md5($file_tmp_name.', '.$file_name.', 
'.$GLOBALS['phpgw_info']['user']['sessionid'].time().getenv('REMOTE_ADDR').$random_number);
! 
!               // Check for uploaded file of 0-length, or no file (patch from 
Zone added by Milosch)
!               //if ($file_tmp_name == "none" && $file_size == 0) This could 
work also
!               if ($file_size == 0)
!               {
!                       touch ($uploaddir.SEP.$newfilename);
!               }
!               else
!               {
!                       copy($file_tmp_name, $uploaddir.SEP.$newfilename);
!               }
! 
!               $ftp = fopen($uploaddir.SEP.$newfilename . '.info','wb');
!               fputs($ftp,$file_type."\n".$file_name."\n");
!               fclose($ftp);
!       }
!       elseif (($action == lang('Attach File')) &&
!               (($file_tmp_name == '') || ($file_tmp_name == 'none')))
!       {
!               $langed_attach_file = lang("Attach File");
!               $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>';
!       }
! 
!       $dh = opendir($uploaddir);
!       //while ($file = readdir($dh)) // 
http://www.php.net/manual/en/function.readdir.php says this is wrong ... 
!       while (false !== ($file = readdir($dh))) // is correct according to the 
manual but only works with 4.0.0RC2+
!       {
!               if (($file != '.')
!               && ($file != '..')
!               && (ereg("\.info",$file)))
!               {
!                       $file_info = file($uploaddir.SEP.$file);
!                       
!                       //get filesize in kb, but do not tell user a file is 
0kb, because it is probably closer to 1kb
!                       $real_file = str_replace('.info','',$file);
!                       $real_file_size = ((int) 
(@filesize($uploaddir.SEP.$real_file)/1024));
!                       if ($real_file_size < 1)
!                       {
!                               $real_file_size = 1;
!                       }
!                       
!                       if ($fup_debug > 2) { echo 'FILE contents DUMP: <pre>'; 
print_r(file($uploaddir.SEP.$real_file)); echo '</pre>'; } 
!                       // for every file, fill the file list template with it
!                       
$GLOBALS['phpgw']->template->set_var('ckbox_delete_name','delete[]');
!                       
$GLOBALS['phpgw']->template->set_var('ckbox_delete_value',substr($file,0,-5));
!                       
$GLOBALS['phpgw']->template->set_var('hidden_delete_name',substr($file,0,-5));
!                       
$GLOBALS['phpgw']->template->set_var('hidden_delete_filename',
!                                       $file_info[1]);
!                       
$GLOBALS['phpgw']->template->set_var('ckbox_delete_filename',
!                                       //$file_info[1].' ('.((int) 
(@filesize($uploaddir.SEP.$real_file)/1024)).'k)'); //also shows file size in kb
!                                       $file_info[1].' 
('.$real_file_size.'k)'); //also shows file size in kb
!                       
$GLOBALS['phpgw']->template->parse('V_attached_list','B_attached_list',True);
!                       $totalfiles++;
!               }
!       }
!       closedir($dh);
!       if ($totalfiles == 0)
!       {
!               // there is no list of files, clear that block
!               $GLOBALS['phpgw']->template->set_var('V_attached_list','');
!               // there is no delete button because there are no files to 
delete, clear that block
!               $GLOBALS['phpgw']->template->set_var('V_delete_btn','');
!               // show the none block
!               $GLOBALS['phpgw']->template->set_var('text_none',lang('None'));
!               
$GLOBALS['phpgw']->template->parse('V_attached_none','B_attached_none');
!       }
!       else
!       {
!               // we have files, clear the "no files" block
!               $GLOBALS['phpgw']->template->set_var('V_attached_none','');
!               // fill the delete sublit form
!               
$GLOBALS['phpgw']->template->set_var('btn_delete_name','action');
!               
$GLOBALS['phpgw']->template->set_var('btn_delete_value',lang('Delete'));
!               
$GLOBALS['phpgw']->template->parse('V_delete_btn','B_delete_btn');
!       }
! 
!       $body_tags = 'bgcolor="'.$GLOBALS['phpgw_info']['theme']['bg_color'].'" 
alink="'.$GLOBALS['phpgw_info']['theme']['alink'].'" 
link="'.$GLOBALS['phpgw_info']['theme']['link'].'" 
vlink="'.$GLOBALS['phpgw_info']['theme']['vlink'].'"';
!       if (!$GLOBALS['phpgw_info']['server']['htmlcompliant'])
!       {
!               $body_tags .= ' topmargin="0" marginheight="0" marginwidth="0" 
leftmargin="0"';
!       }
! 
!       // begin DEBUG INFO
!       $debuginfo .= '--uploadedfile info: <br>'
!               . '$GLOBALS[phpgw_info][server][temp_dir]: 
'.$GLOBALS['phpgw_info']['server']['temp_dir'].'<br>'
!               . '$GLOBALS[phpgw_info][user][sessionid]: 
'.$GLOBALS['phpgw_info']['user']['sessionid'].'<br>'
!               . 'uploaddir: '.$uploaddir.'<br>'
!               . 'file_tmp_name: ' .$file_tmp_name .'<br>'
!               . 'file_name: ' .$file_name .'<br>'
!               . 'file_size: ' .$file_size .'<br>'
!               . 'file_type: ' .$file_type .'<br>'
!               . '<br>'
!               . 'totalfiles: ' .$totalfiles .'<br>'
!               . 'file_info_count: '.count($file_info) .'<br>'
!               . '<br>';
!       if (count($file_info) > 0)
!       {
!               $debuginfo .= '<br> file_info[0]='.$file_info[0] .'<br> 
file_info[1]='.$file_info[1];
!       }
!       $debuginfo .= '<br>';
!       //print_debug('$debuginfo', $debuginfo);
!       if ($fup_debug > 1) { echo '$debuginfo: '.$debuginfo.'<br>'; } 
!       // end DEBUG INFO
! 
!       $charset = lang('charset');
!       $GLOBALS['phpgw']->template->set_var('charset',$charset);
!       
$GLOBALS['phpgw']->template->set_var('page_title',$GLOBALS['phpgw_flags']['currentapp']
 . ' - ' .lang('File attachment'));
!       
$GLOBALS['phpgw']->template->set_var('font_family',$GLOBALS['phpgw_info']['theme']['font']);
!       $GLOBALS['phpgw']->template->set_var('body_tags',$body_tags);
!       if ($alert_msg != '')
!       {
!               $GLOBALS['phpgw']->template->set_var('alert_msg',$alert_msg);
!               $GLOBALS['phpgw']->template->parse('V_alert_msg','B_alert_msg');
!       }
!       else
!       {
!               $GLOBALS['phpgw']->template->set_var('V_alert_msg','');
!       }
!       $GLOBALS['phpgw']->template->set_var('form_method','POST');
!       
$GLOBALS['phpgw']->template->set_var('form_action',$GLOBALS['phpgw']->link('/'.$GLOBALS['phpgw_info']['flags']['currentapp'].'/attach_file.php'));
!       $GLOBALS['phpgw']->template->set_var('text_attachfile',lang('Attach 
file'));
!       $GLOBALS['phpgw']->template->set_var('text_currattached',lang('Current 
attachments (%1)',$totalfiles));
!       $GLOBALS['phpgw']->template->set_var('txtbox_upload_desc',lang('File'));
!       
$GLOBALS['phpgw']->template->set_var('txtbox_upload_name','uploadedfile');
!       $GLOBALS['phpgw']->template->set_var('btn_attach_name','action');
!       $GLOBALS['phpgw']->template->set_var('btn_attach_value',lang('Attach 
File'));
!       $GLOBALS['phpgw']->template->set_var('btn_done_name','done');
!       $GLOBALS['phpgw']->template->set_var('btn_done_value',lang('Done'));
!          $GLOBALS['phpgw']->template->set_var('btn_done_js','copyback()');
!          $GLOBALS['phpgw']->template->set_var('form1_name','doit');
! 
!       $GLOBALS['phpgw']->template->pfp('out','T_attach_file');
! 
!       //$GLOBALS['phpgw']->common->phpgw_exit();
!       if (is_object($GLOBALS['phpgw']->msg))
!       {
!               $terminate = True;
!       }
!       else
!       {
!               $terminate = False;
!       }
!       
!       if ($terminate == True)
!       {
!               // close down ALL mailserver streams
!               $GLOBALS['phpgw']->msg->end_request();
!               // destroy the object
!               $GLOBALS['phpgw']->msg = '';
!               unset($GLOBALS['phpgw']->msg);
!       }
!       
!       // shut down this transaction
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
! ?>

Index: compose.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/compose.php,v
retrieving revision 1.50
retrieving revision 1.51
diff -C2 -r1.50 -r1.51
*** compose.php 25 Oct 2002 12:59:11 -0000      1.50
--- compose.php 14 Mar 2003 03:59:59 -0000      1.51
***************
*** 1,93 ****
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - E-Mail *
!       * http://www.phpgroupware.org *
!       * Based on Aeromail by Mark C3ushman <address@hidden> *
!       * http://the.cushman.net/ *
!       * Currently maintained by Angles <address@hidden> *
!       * -------------------------------------------- *
!       * This program is free software; you can redistribute it and/or modify 
it *
!       * under the terms of the GNU General Public License as published by the 
*
!       * Free Software Foundation; either version 2 of the License, or (at 
your *
!       * option) any later version.  *
!       
\**************************************************************************/
!       /* $Id$ */
!       
!       Header('Cache-Control: no-cache');
!       Header('Pragma: no-cache');
!       Header('Expires: Sat, Jan 01 2000 01:01:01 GMT');
!   
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'currentapp' => 'email',
!               'noheader' => True,
!               'nofooter' => True,
!               'nonavbar' => True,
!               'noappheader' => True,
!               'noappfooter' => True
!       );
!       include('../header.inc.php');
!       
!       // we need a msg object BUT NO LOGIN IS NEEDED
!       $my_msg_bootstrap = '';
!       $my_msg_bootstrap = CreateObject("email.msg_bootstrap");
!       $my_msg_bootstrap->set_do_login(False);
!       $my_msg_bootstrap->ensure_mail_msg_exists('email: compose.php', 0);
!       
!       // time limit should be controlled elsewhere
!       //@set_time_limit(0);
!       $pass_the_ball_uri = '';
!       
!       if ($GLOBALS['phpgw']->msg->get_isset_arg('fldball'))
!       {
!               $my_fldball = $GLOBALS['phpgw']->msg->get_arg_value('fldball');
!               $pass_the_ball_uri = '&fldball[folder]='.$my_fldball['folder']
!                                               
.'&fldball[acctnum]='.$my_fldball['acctnum'];
!       }
!       elseif ($GLOBALS['phpgw']->msg->get_isset_arg('msgball'))
!       {
!               $my_msgball = $GLOBALS['phpgw']->msg->get_arg_value('msgball');
!               $pass_the_ball_uri = '&msgball[folder]='.$my_msgball['folder']
!                                               
.'&msgball[acctnum]='.$my_msgball['acctnum']
!                                               
.'&msgball[msgnum]='.$my_msgball['msgnum'];
!       }
!       else
!       {
!               $pass_the_ball_uri = '&fldball[folder]=INBOX'
!                                               .'&fldball[acctnum]=0';
!       }
!       
!       header('Location: '.$GLOBALS['phpgw']->link(
!                               '/index.php',
!                               'menuaction=email.uicompose.compose'.
!                                $pass_the_ball_uri.
!                               '&to='.$to.
!                               '&cc='.$cc.
!                               '&bcc='.$bcc.
!                               '&subject='.$subject.
!                               '&body='.$body.
!                               '&personal='.$personal.
!                               '&sort='.$sort.
!                               '&order='.$order.
!                               '&start='.$start));
!       
!       if (is_object($GLOBALS['phpgw']->msg))
!       {
!               $terminate = True;
!       }
!       else
!       {
!               $terminate = False;
!       }
!       
!       if ($terminate == True)
!       {
!               // close down ALL mailserver streams
!               $GLOBALS['phpgw']->msg->end_request();
!               // destroy the object
!               $GLOBALS['phpgw']->msg = '';
!               unset($GLOBALS['phpgw']->msg);
!       }
!       // shut down this transaction
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
! 
! ?>
--- 1,93 ----
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - E-Mail *
!       * http://www.phpgroupware.org *
!       * Based on Aeromail by Mark C3ushman <address@hidden> *
!       * http://the.cushman.net/ *
!       * Currently maintained by Angles <address@hidden> *
!       * -------------------------------------------- *
!       * This program is free software; you can redistribute it and/or modify 
it *
!       * under the terms of the GNU General Public License as published by the 
*
!       * Free Software Foundation; either version 2 of the License, or (at 
your *
!       * option) any later version.  *
!       
\**************************************************************************/
!       /* $Id$ */
!       
!       Header('Cache-Control: no-cache');
!       Header('Pragma: no-cache');
!       Header('Expires: Sat, Jan 01 2000 01:01:01 GMT');
!   
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'currentapp' => 'email',
!               'noheader' => True,
!               'nofooter' => True,
!               'nonavbar' => True,
!               'noappheader' => True,
!               'noappfooter' => True
!       );
!       include('../header.inc.php');
!       
!       // we need a msg object BUT NO LOGIN IS NEEDED
!       $my_msg_bootstrap = '';
!       $my_msg_bootstrap = CreateObject("email.msg_bootstrap");
!       $my_msg_bootstrap->set_do_login(False);
!       $my_msg_bootstrap->ensure_mail_msg_exists('email: compose.php', 0);
!       
!       // time limit should be controlled elsewhere
!       //@set_time_limit(0);
!       $pass_the_ball_uri = '';
!       
!       if ($GLOBALS['phpgw']->msg->get_isset_arg('fldball'))
!       {
!               $my_fldball = $GLOBALS['phpgw']->msg->get_arg_value('fldball');
!               $pass_the_ball_uri = '&fldball[folder]='.$my_fldball['folder']
!                                               
.'&fldball[acctnum]='.$my_fldball['acctnum'];
!       }
!       elseif ($GLOBALS['phpgw']->msg->get_isset_arg('msgball'))
!       {
!               $my_msgball = $GLOBALS['phpgw']->msg->get_arg_value('msgball');
!               $pass_the_ball_uri = '&msgball[folder]='.$my_msgball['folder']
!                                               
.'&msgball[acctnum]='.$my_msgball['acctnum']
!                                               
.'&msgball[msgnum]='.$my_msgball['msgnum'];
!       }
!       else
!       {
!               $pass_the_ball_uri = '&fldball[folder]=INBOX'
!                                               .'&fldball[acctnum]=0';
!       }
!       
!       header('Location: '.$GLOBALS['phpgw']->link(
!                               '/index.php',
!                               'menuaction=email.uicompose.compose'.
!                                $pass_the_ball_uri.
!                               '&to='.$to.
!                               '&cc='.$cc.
!                               '&bcc='.$bcc.
!                               '&subject='.$subject.
!                               '&body='.$body.
!                               '&personal='.$personal.
!                               '&sort='.$sort.
!                               '&order='.$order.
!                               '&start='.$start));
!       
!       if (is_object($GLOBALS['phpgw']->msg))
!       {
!               $terminate = True;
!       }
!       else
!       {
!               $terminate = False;
!       }
!       
!       if ($terminate == True)
!       {
!               // close down ALL mailserver streams
!               $GLOBALS['phpgw']->msg->end_request();
!               // destroy the object
!               $GLOBALS['phpgw']->msg = '';
!               unset($GLOBALS['phpgw']->msg);
!       }
!       // shut down this transaction
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
! 
! ?>

Index: index.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/index.php,v
retrieving revision 1.89
retrieving revision 1.90
diff -C2 -r1.89 -r1.90
*** index.php   25 Oct 2002 12:45:52 -0000      1.89
--- index.php   14 Mar 2003 04:00:00 -0000      1.90
***************
*** 1,101 ****
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - E-Mail                                                 
   *
!       * http://www.phpgroupware.org                                           
   *
!       * Based on Aeromail by Mark C3ushman <address@hidden>                   
 *
!       *          http://the.cushman.net/                                      
   *
!       * Currently maintained by Angles <address@hidden>                 *
!       * 
------------------------------------------------------------------------ *
!       *  This program is free software; you can redistribute it and/or modify 
it *
!       *  under the terms of the GNU General Public License as published by 
the   *
!       *  Free Software Foundation; either version 2 of the License, or (at 
your  *
!       *  option) any later version.                                           
   *
!       
\**************************************************************************/
! 
!       /* $Id$ */
! 
!       Header('Cache-Control: no-cache');
!       Header('Pragma: no-cache');
!       Header('Expires: Sat, Jan 01 2000 01:01:01 GMT');
!   
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'currentapp'  => 'email',
!               'noheader'    => True,
!               'nofooter'    => True,
!               'nonavbar'    => True,
!               'noappheader' => True,
!               'noappfooter' => True
!       );
!       include('../header.inc.php');
! 
!       /*
!       time limit should be controlled elsewhere
!       @set_time_limit(0);
! 
!       this index page is acting like a calling app which wants the HTML 
produced by mail.uiindex.index
!       but DOES NOT want mail.uiindex.index to actually echo or print out any 
HTML
!       we, the calling app, will handle the outputting of the HTML
!       $is_modular = True;
!       */
!       
!       $simple_redirect = True;
!       //$simple_redirect = False;
!       
!       if ($simple_redirect == True)
!       {
!               //header('Location: 
'.$GLOBALS['phpgw']->link('/index.php','menuaction=email.uiindex.index'));
!               
$GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/index.php','menuaction=email.uiindex.index'));
!               if (is_object($GLOBALS['phpgw']->msg))
!               {
!                       // close down ALL mailserver streams
!                       $GLOBALS['phpgw']->msg->end_request();
!                       // destroy the object
!                       $GLOBALS['phpgw']->msg = '';
!                       unset($GLOBALS['phpgw']->msg);
!               }
!               // shut down this transaction
!               $GLOBALS['phpgw']->common->phpgw_exit(False);
!       }
!       else
!       {
!               /* 
!               // OBSOLETED CODE
!               // pretend we are a calling app outputting some HTML, including 
the header and navbar
!               $GLOBALS['phpgw']->common->phpgw_header();
!               echo parse_navbar();
!               // retrieve the html data from class uiindex
!               $obj = CreateObject('email.uiindex');
!               $obj->set_is_modular(True);
!               $retured_html = $obj->index();
!               // time for us to output the returned html data
!               echo $retured_html;
!               // now as the calling app, it's time to output the bottom of 
the page
!               $GLOBALS['phpgw']->common->phpgw_footer();
!               */
!               
!               /*
!               // NOTE: this does NOT WORK
!               // make a uiinex object and make it do its job
!               // it will output the header, navbar, class HTML data, and 
footer
!               class uiindex_holder
!               {
!                       var $uiindex_obj = '';
!               }
!               
!               $my_msg_bootstrap = '';
!               $my_msg_bootstrap = CreateObject('email.msg_bootstrap');
!               $my_msg_bootstrap->ensure_mail_msg_exists('index.php', 3);
!               
!               echo 'calling CreateObject email.uiindex <br>';
!               $GLOBALS['phphw_uiindex'] = new uiindex_holder;
!               $GLOBALS['phphw_uiindex']->uiindex_obj = 
CreateObject('email.uiindex');
!               echo 'done calling CreateObject email.uiindex <br>';
!               $GLOBALS['phphw_uiindex']->uiindex_obj->index();
!               // STRANGEly enough, menuaction=email.uiindex.index as 
non-module STILL requires an
!               // outside-the-class entity to call common->phpgw_footer(), 
eventhough the class itself will
!               // output the header and navbar, but it may not output 
common->phpgw_footer() else page gets 2 footers
!               //$GLOBALS['phpgw']->common->phpgw_footer();
!               */
!       }
!       
! ?>
--- 1,101 ----
! <?php
!       
/**************************************************************************\
!       * phpGroupWare - E-Mail                                                 
   *
!       * http://www.phpgroupware.org                                           
   *
!       * Based on Aeromail by Mark C3ushman <address@hidden>                   
 *
!       *          http://the.cushman.net/                                      
   *
!       * Currently maintained by Angles <address@hidden>                 *
!       * 
------------------------------------------------------------------------ *
!       *  This program is free software; you can redistribute it and/or modify 
it *
!       *  under the terms of the GNU General Public License as published by 
the   *
!       *  Free Software Foundation; either version 2 of the License, or (at 
your  *
!       *  option) any later version.                                           
   *
!       
\**************************************************************************/
! 
!       /* $Id$ */
! 
!       Header('Cache-Control: no-cache');
!       Header('Pragma: no-cache');
!       Header('Expires: Sat, Jan 01 2000 01:01:01 GMT');
!   
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'currentapp'  => 'email',
!               'noheader'    => True,
!               'nofooter'    => True,
!               'nonavbar'    => True,
!               'noappheader' => True,
!               'noappfooter' => True
!       );
!       include('../header.inc.php');
! 
!       /*
!       time limit should be controlled elsewhere
!       @set_time_limit(0);
! 
!       this index page is acting like a calling app which wants the HTML 
produced by mail.uiindex.index
!       but DOES NOT want mail.uiindex.index to actually echo or print out any 
HTML
!       we, the calling app, will handle the outputting of the HTML
!       $is_modular = True;
!       */
!       
!       $simple_redirect = True;
!       //$simple_redirect = False;
!       
!       if ($simple_redirect == True)
!       {
!               //header('Location: 
'.$GLOBALS['phpgw']->link('/index.php','menuaction=email.uiindex.index'));
!               
$GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/index.php','menuaction=email.uiindex.index'));
!               if (is_object($GLOBALS['phpgw']->msg))
!               {
!                       // close down ALL mailserver streams
!                       $GLOBALS['phpgw']->msg->end_request();
!                       // destroy the object
!                       $GLOBALS['phpgw']->msg = '';
!                       unset($GLOBALS['phpgw']->msg);
!               }
!               // shut down this transaction
!               $GLOBALS['phpgw']->common->phpgw_exit(False);
!       }
!       else
!       {
!               /* 
!               // OBSOLETED CODE
!               // pretend we are a calling app outputting some HTML, including 
the header and navbar
!               $GLOBALS['phpgw']->common->phpgw_header();
!               echo parse_navbar();
!               // retrieve the html data from class uiindex
!               $obj = CreateObject('email.uiindex');
!               $obj->set_is_modular(True);
!               $retured_html = $obj->index();
!               // time for us to output the returned html data
!               echo $retured_html;
!               // now as the calling app, it's time to output the bottom of 
the page
!               $GLOBALS['phpgw']->common->phpgw_footer();
!               */
!               
!               /*
!               // NOTE: this does NOT WORK
!               // make a uiinex object and make it do its job
!               // it will output the header, navbar, class HTML data, and 
footer
!               class uiindex_holder
!               {
!                       var $uiindex_obj = '';
!               }
!               
!               $my_msg_bootstrap = '';
!               $my_msg_bootstrap = CreateObject('email.msg_bootstrap');
!               $my_msg_bootstrap->ensure_mail_msg_exists('index.php', 3);
!               
!               echo 'calling CreateObject email.uiindex <br>';
!               $GLOBALS['phphw_uiindex'] = new uiindex_holder;
!               $GLOBALS['phphw_uiindex']->uiindex_obj = 
CreateObject('email.uiindex');
!               echo 'done calling CreateObject email.uiindex <br>';
!               $GLOBALS['phphw_uiindex']->uiindex_obj->index();
!               // STRANGEly enough, menuaction=email.uiindex.index as 
non-module STILL requires an
!               // outside-the-class entity to call common->phpgw_footer(), 
eventhough the class itself will
!               // output the header and navbar, but it may not output 
common->phpgw_footer() else page gets 2 footers
!               //$GLOBALS['phpgw']->common->phpgw_footer();
!               */
!       }
!       
! ?>

Index: view_image.php
===================================================================
RCS file: /cvsroot/phpgroupware/email/view_image.php,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** view_image.php      25 Oct 2002 12:45:52 -0000      1.15
--- view_image.php      14 Mar 2003 04:00:04 -0000      1.16
***************
*** 1,70 ****
! <?php
!   /**************************************************************************\
!   * phpGroupWare - E-Mail                                                    *
!   * http://www.phpgroupware.org                                              *
!   * Based on Aeromail by Mark Cushman <address@hidden>                     *
!   *          http://the.cushman.net/                                         *
!   * --------------------------------------------                             *
!   *  This program is free software; you can redistribute it and/or modify it *
!   *  under the terms of the GNU General Public License as published by the   *
!   *  Free Software Foundation; either version 2 of the License, or (at your  *
!   *  option) any later version.                                              *
!   \**************************************************************************/
! 
!   /* $Id$ */
! 
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'currentapp' => 'email',
!               'enable_network_class' => True, 
!               'noheader' => True,
!               'nonavbar' => True
!       );
!       include('../header.inc.php');
!       /*
!       if (isset($GLOBALS['phpgw_info']['flags']['newsmode']) && 
$GLOBALS['phpgw_info']['flags']['newsmode'])
!       {
!               $GLOBALS['phpgw']->common->read_preferences('nntp');
!       }
!       @set_time_limit(0);
! 
!       echo 'Mailbox = '.$mailbox.'<br>'."\n";
!       echo 'Mailbox = '.$GLOBALS['phpgw']->msg->mailsvr_stream.'<br>'."\n";
!       echo 'Msgnum = '.$m.'<br>'."\n";
!       echo 'Part Number = '.$p.'<br>'."\n";
!       echo 'Subtype = '.$s.'<br>'."\n";
!       */
!       //$data = 
$GLOBALS['phpgw']->dcom->fetchbody($GLOBALS['phpgw']->msg->mailsvr_stream, $m, 
$p);
!       $data = $GLOBALS['phpgw']->msg->phpgw_fetchbody($p);
!       //$picture = $GLOBALS['phpgw']->dcom->base64($data);
!       $picture = $GLOBALS['phpgw']->msg->de_base64($data);
! 
!       //  echo strlen($picture)."<br>\n";
!       //  echo $data;
! 
!       Header('Content-length: '.strlen($picture));
!       Header('Content-type: image/'.$s);
!       Header('Content-disposition: attachment; filename="'.urldecode($n).'"');
!       echo $picture;
!       flush();
! 
        // IS THIS FILE EVER USED ANYMORE?
!       if (is_object($GLOBALS['phpgw']->msg))
!       {
!               $terminate = True;
!       }
!       else
!       {
!               $terminate = False;
!       }
!       
!       if ($terminate == True)
!       {
!               // close down ALL mailserver streams
!               $GLOBALS['phpgw']->msg->end_request();
!               // destroy the object
!               $GLOBALS['phpgw']->msg = '';
!               unset($GLOBALS['phpgw']->msg);
!       }
!       // shut down this transaction
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
! ?>
--- 1,70 ----
! <?php
!   /**************************************************************************\
!   * phpGroupWare - E-Mail                                                    *
!   * http://www.phpgroupware.org                                              *
!   * Based on Aeromail by Mark Cushman <address@hidden>                     *
!   *          http://the.cushman.net/                                         *
!   * --------------------------------------------                             *
!   *  This program is free software; you can redistribute it and/or modify it *
!   *  under the terms of the GNU General Public License as published by the   *
!   *  Free Software Foundation; either version 2 of the License, or (at your  *
!   *  option) any later version.                                              *
!   \**************************************************************************/
! 
!   /* $Id$ */
! 
!       $GLOBALS['phpgw_info']['flags'] = array(
!               'currentapp' => 'email',
!               'enable_network_class' => True, 
!               'noheader' => True,
!               'nonavbar' => True
!       );
!       include('../header.inc.php');
!       /*
!       if (isset($GLOBALS['phpgw_info']['flags']['newsmode']) && 
$GLOBALS['phpgw_info']['flags']['newsmode'])
!       {
!               $GLOBALS['phpgw']->common->read_preferences('nntp');
!       }
!       @set_time_limit(0);
! 
!       echo 'Mailbox = '.$mailbox.'<br>'."\n";
!       echo 'Mailbox = '.$GLOBALS['phpgw']->msg->mailsvr_stream.'<br>'."\n";
!       echo 'Msgnum = '.$m.'<br>'."\n";
!       echo 'Part Number = '.$p.'<br>'."\n";
!       echo 'Subtype = '.$s.'<br>'."\n";
!       */
!       //$data = 
$GLOBALS['phpgw']->dcom->fetchbody($GLOBALS['phpgw']->msg->mailsvr_stream, $m, 
$p);
!       $data = $GLOBALS['phpgw']->msg->phpgw_fetchbody($p);
!       //$picture = $GLOBALS['phpgw']->dcom->base64($data);
!       $picture = $GLOBALS['phpgw']->msg->de_base64($data);
! 
!       //  echo strlen($picture)."<br>\n";
!       //  echo $data;
! 
!       Header('Content-length: '.strlen($picture));
!       Header('Content-type: image/'.$s);
!       Header('Content-disposition: attachment; filename="'.urldecode($n).'"');
!       echo $picture;
!       flush();
! 
        // IS THIS FILE EVER USED ANYMORE?
!       if (is_object($GLOBALS['phpgw']->msg))
!       {
!               $terminate = True;
!       }
!       else
!       {
!               $terminate = False;
!       }
!       
!       if ($terminate == True)
!       {
!               // close down ALL mailserver streams
!               $GLOBALS['phpgw']->msg->end_request();
!               // destroy the object
!               $GLOBALS['phpgw']->msg = '';
!               unset($GLOBALS['phpgw']->msg);
!       }
!       // shut down this transaction
!       $GLOBALS['phpgw']->common->phpgw_exit(False);
! ?>

--- test.php DELETED ---





reply via email to

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