function addToAddressesList(array $data)
{
global $CFG_GLPI;
// No email set : get default for user
if (!isset($data['email']) && isset($data['users_id'])) {
$data['email'] = UserEmail::getDefaultForUser($data['users_id']);
}
$new_mail = trim(Toolbox::strtolower($data['email']));
$new_lang = '';
// Default USER TYPE is ANONYMOUS
$notificationoption = array('usertype' => self::ANONYMOUS_USER);
if (isset($data['language'])) {
$new_lang = trim($data['language']);
}
$username = '';
if (isset($data['name']) && !empty($data['name'])) {
$username = $data['name'];
}
if (isset($data['users_id']) && $data['users_id'] > 0) {
$user = new User();
if (!$user->getFromDB($data['users_id']) || $user->getField('is_deleted') == 1 || $user->getField('is_active') == 0 || !is_null($user->getField('begin_date')) && $user->getField('begin_date') > $_SESSION["glpi_currenttime"] || !is_null($user->getField('end_date')) && $user->getField('end_date') < $_SESSION["glpi_currenttime"]) {
// unknown, deleted or disabled user
return false;
}
$filt = getEntitiesRestrictRequest('AND', 'glpi_profiles_users', '', $this->getEntity(), true);
$prof = Profile_User::getUserProfiles($data['users_id'], $filt);
if (!count($prof)) {
// No right on the entity of the object
return false;
}
if (empty($username)) {
$username = formatUserName(0, $user->getField('name'), $user->getField('realname'), $user->getField('firstname'), 0, 0, true);
}
// It is a GLPI user :
$notificationoption['usertype'] = self::GLPI_USER;
if (Auth::isAlternateAuth($user->fields['authtype']) || $user->fields['authtype'] == Auth::NOT_YET_AUTHENTIFIED && Auth::isAlternateAuth(Auth::checkAlternateAuthSystems())) {
$notificationoption['usertype'] = self::EXTERNAL_USER;
}
}
// Pass user type as argument ? forced for specific cases
if (isset($data['usertype'])) {
$notificationoption['usertype'] = $data['usertype'];
}
$notificationoption = array_merge($this->addAdditionnalUserInfo($data), $notificationoption);
if (!empty($new_mail)) {
if (NotificationMail::isUserAddressValid($new_mail) && !isset($this->target[$new_mail])) {
$param = array('language' => empty($new_lang) ? $CFG_GLPI["language"] : $new_lang, 'email' => $new_mail, 'additionnaloption' => $notificationoption, 'username' => $username);
if (isset($data['users_id']) && $data['users_id']) {
$param['users_id'] = $data['users_id'];
}
$this->target[$new_mail] = $param;
}
}
}