R48695 - /trunk/mail/inc/class.mail_compose.inc.php

Author: leithoff
New Revision: 48695

URL: http://svn.stylite.de/viewvc/egroupware?rev=48695&view=rev
Log:

  • Mail: resolve distributionlists upon saving as draft, infolog, tracker and storing sent message in designated send-folder

Modified:
trunk/mail/inc/class.mail_compose.inc.php

Modified: trunk/mail/inc/class.mail_compose.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/mail/inc/class.mail_compose.inc.php?rev=48695&r1=48694&r2=48695&view=diff

— trunk/mail/inc/class.mail_compose.inc.php (original)
+++ trunk/mail/inc/class.mail_compose.inc.php Tue Sep 23 10:23:10 2014
@@ -2155,20 +2155,7 @@
// Expand any mailing lists
foreach(array(‘to’,‘cc’,‘bcc’) as $field)
{

  •   	foreach((array)$_formData[$field] as $field_key => $address)
    
  •   	{
    
  •   		if(is_int($address))
    
  •   		{
    
  •   			// List was selected, expand to addresses
    
  •   			unset($_formData[$field][$field_key]);
    
  •   			$list = $GLOBALS['egw']->contacts->search('',array('n_fn','n_prefix','n_given','n_family','org_name','email','email_home'),'','','',False,'AND',false,array('list' =>(int)$address));
    
  •   			// Just add email addresses, they'll be checked below
    
  •   			foreach($list as $email)
    
  •   			{
    
  •   				$_formData[$field][] = $email['email'] ? $email['email'] : $email['email_home'];
    
  •   			}
    
  •   		}
    
  •   	}
    
  •   	$_formData[$field] = self::resolveEmailAddressList($_formData[$field]);
      }
    
      foreach((array)$_formData['to'] as $address) {
    

@@ -2434,6 +2421,37 @@
‘draftfolder’ => $this->mail_bo->profileID.mail_ui::$delimiter.$this->mail_bo->getDraftFolder()
));
}
+

  • /**

    • resolveEmailAddressList
    • @param array $_emailAddressList list of emailaddresses, may contain distributionlists
    • @return array return the list of emailaddresses with distributionlists resolved
  • */

  • static function resolveEmailAddressList($_emailAddressList)

  • {

  •   $addrFromList=array();
    
  •   foreach((array)$_emailAddressList as $ak => $address) {
    
  •   	if(is_int($address))
    
  •   	{
    
  •   		// List was selected, expand to addresses
    
  •   		unset($_emailAddressList[$ak]);
    
  •   		$list = $GLOBALS['egw']->contacts->search('',array('n_fn','n_prefix','n_given','n_family','org_name','email','email_home'),'','','',False,'AND',false,array('list' =>(int)$address));
    
  •   		// Just add email addresses, they'll be checked below
    
  •   		foreach($list as $email)
    
  •   		{
    
  •   			$addrFromList[] = $email['email'] ? $email['email'] : $email['email_home'];
    
  •   		}
    
  •   	}
    
  •   }
    
  •   if (!empty($addrFromList))
    
  •   {
    
  •   	foreach ($addrFromList as $addr)
    
  •   	{
    
  •   		if (!empty($addr)) $_emailAddressList[]=$addr;
    
  •   	}
    
  •   }
    
  •   return $_emailAddressList;
    
  • }

    /**

    • Save message as draft to specific folder
      @@ -2471,7 +2489,7 @@
      $BCCmail = ‘’;

      $this->createMessage($mail, $_formData, $identity);

  •   $this->sessionData['bcc'] = self::resolveEmailAddressList($this->sessionData['bcc']);
      foreach((array)$this->sessionData['bcc'] as $address) {
      	$address_array  = imap_rfc822_parse_adrlist((get_magic_quotes_gpc()?stripslashes($address):$address),'');
      	foreach((array)$address_array as $addressObject) {
    

@@ -2536,9 +2554,9 @@
$messageIsDraft = false;

	$this->sessionData['mailaccount']	= $_formData['mailaccount'];
  •   $this->sessionData['to']	= $_formData['to'];
    
  •   $this->sessionData['cc']	= $_formData['cc'];
    
  •   $this->sessionData['bcc']	= $_formData['bcc'];
    
  •   $this->sessionData['to']	= self::resolveEmailAddressList($_formData['to']);
    
  •   $this->sessionData['cc']	= self::resolveEmailAddressList($_formData['cc']);
    
  •   $this->sessionData['bcc']	= self::resolveEmailAddressList($_formData['bcc']);
      $this->sessionData['folder']	= $_formData['folder'];
      $this->sessionData['replyto']	= $_formData['replyto'];
      $this->sessionData['subject']	= trim($_formData['subject']);
    

@@ -2748,6 +2766,7 @@
}
// if copying mail to folder, or saving mail to infolog, we need to gather the needed information
if (count($folder) > 0 || $_formData[‘to_infolog’] == ‘on’ || $_formData[‘to_tracker’] == ‘on’) {

  •   	//error_log(__METHOD__.__LINE__.array2string($this->sessionData['bcc']));
      	foreach((array)$this->sessionData['bcc'] as $address) {
      		$address_array  = imap_rfc822_parse_adrlist((get_magic_quotes_gpc()?stripslashes($address):$address),'');
      		foreach((array)$address_array as $addressObject) {
    

Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk


eGroupWare-cvs mailing list
eGroupWare-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs