# R48695 - /trunk/mail/inc/class.mail\_compose.inc.php

**URL:** <http://discourse.egroupware.org/t/r48695-trunk-mail-inc-class-mail-compose-inc-php/61855>\
**Category:** eGW-svn\
**Created:** [September 23, 2014, 8:23am UTC](http://discourse.egroupware.org/t/r48695-trunk-mail-inc-class-mail-compose-inc-php/61855 "2014-09-23T08:23:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![leithoff](http://discourse.egroupware.org/letter_avatar_proxy/v4/letter/l/58956e/32.png) [@leithoff](http://discourse.egroupware.org/u/leithoff)\
**Post date:** [September 23, 2014, 8:23am UTC](http://discourse.egroupware.org/t/r48695-trunk-mail-inc-class-mail-compose-inc-php/61855/1 "2014-09-23T08:23:10Z")

</div>

Author: leithoff  
New Revision: 48695

URL: [http://svn.stylite.de/viewvc/egroupware?rev=48695&view=rev](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](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;

```

- }

- 

- 

```
  $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](http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk)

* * *

eGroupWare-cvs mailing list  
[eGroupWare-cvs@lists.sourceforge.net](mailto:eGroupWare-cvs@lists.sourceforge.net)  
[https://lists.sourceforge.net/lists/listinfo/egroupware-cvs](https://lists.sourceforge.net/lists/listinfo/egroupware-cvs)
