forked from extern/egroupware
remove identity if alias is removed with "-alias" AND create_identity is "yes"
This commit is contained in:
parent
9a2cd797e6
commit
7fe6eead5a
@ -389,6 +389,7 @@ function do_edit_mail($type, array $arg0s)
|
|||||||
{
|
{
|
||||||
case 'alias':
|
case 'alias':
|
||||||
$create_identity = strtolower(array_shift($args)) === 'yes';
|
$create_identity = strtolower(array_shift($args)) === 'yes';
|
||||||
|
$delete_identity = $args[0][0] == '-';
|
||||||
array_modify($data['mailAlternateAddress'], $args);
|
array_modify($data['mailAlternateAddress'], $args);
|
||||||
break;
|
break;
|
||||||
case 'forward':
|
case 'forward':
|
||||||
@ -407,12 +408,17 @@ function do_edit_mail($type, array $arg0s)
|
|||||||
if ($type == 'alias' && $create_identity && $args)
|
if ($type == 'alias' && $create_identity && $args)
|
||||||
{
|
{
|
||||||
// check if user allready has an identity created for given aliases
|
// check if user allready has an identity created for given aliases
|
||||||
foreach(Api\Mail\Account::identities($account, false, 'ident_email', $account_id) as $email)
|
foreach(Api\Mail\Account::identities($account, false, 'ident_email', $account_id) as $ident_id => $email)
|
||||||
{
|
{
|
||||||
if (($key = array_search($email, $args)) !== false)
|
if (($key = array_search($email, $args)) !== false)
|
||||||
{
|
{
|
||||||
unset($args[$key]);
|
unset($args[$key]);
|
||||||
}
|
}
|
||||||
|
// delete identities, if "-" is used and email of identity matches given ones and is not standard identity
|
||||||
|
elseif ($delete_identity && $ident_id != $account->ident_id)
|
||||||
|
{
|
||||||
|
Api\Mail\Account::delete_identity($ident_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// create not existing identities by copying standard identity plus alias as email
|
// create not existing identities by copying standard identity plus alias as email
|
||||||
foreach($args as $email)
|
foreach($args as $email)
|
||||||
@ -456,16 +462,16 @@ function array_modify(&$arr, array &$mod)
|
|||||||
{
|
{
|
||||||
case '-':
|
case '-':
|
||||||
$mod[0] = substr($mod[0], 1);
|
$mod[0] = substr($mod[0], 1);
|
||||||
$arr = array_unique(array_diff($arr, $mod));
|
$arr = array_values(array_unique(array_diff($arr, $mod)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '+';
|
case '+';
|
||||||
$mod[0] = substr($mod[0], 1);
|
$mod[0] = substr($mod[0], 1);
|
||||||
$arr = array_unique(array_merge($arr, $mod));
|
$arr = array_values(array_unique(array_merge($arr, $mod)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$arr = array_unique($mod);
|
$arr = array_values(array_unique($mod));
|
||||||
}
|
}
|
||||||
return $arr;
|
return $arr;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user