NotificationTargetCommonITILObject::getLinkedUserByType PHP Method

getLinkedUserByType() public method

Add linked users to the notified users list
public getLinkedUserByType ( $type )
$type type of linked users
    function getLinkedUserByType($type)
    {
        global $DB, $CFG_GLPI;
        $userlinktable = getTableForItemType($this->obj->userlinkclass);
        $fkfield = $this->obj->getForeignKeyField();
        //Look for the user by his id
        $query = $this->getDistinctUserSql() . ",\n                      `{$userlinktable}`.`use_notification` AS notif,\n                      `{$userlinktable}`.`alternative_email` AS altemail\n               FROM `{$userlinktable}`\n               LEFT JOIN `glpi_users` ON (`{$userlinktable}`.`users_id` = `glpi_users`.`id`)" . $this->getProfileJoinSql() . "\n               WHERE `{$userlinktable}`.`{$fkfield}` = '" . $this->obj->fields["id"] . "'\n                     AND `{$userlinktable}`.`type` = '{$type}'";
        foreach ($DB->request($query) as $data) {
            //Add the user email and language in the notified users list
            if ($data['notif']) {
                $author_email = UserEmail::getDefaultForUser($data['users_id']);
                $author_lang = $data["language"];
                $author_id = $data['users_id'];
                if (!empty($data['altemail']) && $data['altemail'] != $author_email && NotificationMail::isUserAddressValid($data['altemail'])) {
                    $author_email = $data['altemail'];
                }
                if (empty($author_lang)) {
                    $author_lang = $CFG_GLPI["language"];
                }
                if (empty($author_id)) {
                    $author_id = -1;
                }
                $this->addToAddressesList(array('email' => $author_email, 'language' => $author_lang, 'users_id' => $author_id));
            }
        }
        // Anonymous user
        $query = "SELECT `alternative_email`\n                FROM `{$userlinktable}`\n                WHERE `{$userlinktable}`.`{$fkfield}` = '" . $this->obj->fields["id"] . "'\n                      AND `{$userlinktable}`.`users_id` = 0\n                      AND `{$userlinktable}`.`use_notification` = 1\n                      AND `{$userlinktable}`.`type` = '{$type}'";
        foreach ($DB->request($query) as $data) {
            if (NotificationMail::isUserAddressValid($data['alternative_email'])) {
                $this->addToAddressesList(array('email' => $data['alternative_email'], 'language' => $CFG_GLPI["language"], 'users_id' => -1));
            }
        }
    }