コード例 #1
0
ファイル: notificationemaillib.php プロジェクト: rjsmelo/tiki
/**
 *\brief Send email notification to a list of emails or a list of (email, user) in a charset+language associated with each email
 * \param $watches : bidimensional array of watches. Each watch has user, language, email and watchId keys.
 * \param $dummy: unused
 * \param $subjectTpl: subject template file or null (ex: "submission_notifcation.tpl")
 * \param $subjectParam: le param to be inserted in the subject or null
 * \param $txtTpl : texte template file (ex: "submission_notifcation.tpl")
 * \param $from email from to not the default one
 * \ $smarty is supposed to be already built to fit $txtTpl
 * \return the nb of sent emails
 */
function sendEmailNotification($watches, $dummy, $subjectTpl, $subjectParam, $txtTpl, $from = '')
{
    global $prefs;
    $smarty = TikiLib::lib('smarty');
    $tikilib = TikiLib::lib('tiki');
    $userlib = TikiLib::lib('user');
    include_once 'lib/webmail/tikimaillib.php';
    $sent = 0;
    $smarty->assign('mail_date', $tikilib->now);
    $foo = parse_url($_SERVER["REQUEST_URI"]);
    $smarty->assign('mail_machine', $tikilib->httpPrefix(true) . $foo["path"]);
    $parts = explode('/', $foo['path']);
    if (count($parts) > 1) {
        unset($parts[count($parts) - 1]);
    }
    $smarty->assign('mail_machine_raw', $tikilib->httpPrefix(true) . implode('/', $parts));
    // TODO: mail_machine_site may be required for some sef url with rewrite to sub-directory. To refine. (nkoth)
    $smarty->assign('mail_machine_site', $tikilib->httpPrefix(true));
    if ($dummy == 'group_lead_mail' || $dummy == 'add_rem_mail') {
        $api = new TikiAddons_Api_Group();
        $subjectParam['gname'] = trim($subjectParam['gname']);
        $smarty->assign('mail_appdata', $subjectParam['app_data']);
        $smarty->assign('mail_group', $api->getOrganicGroupName($subjectParam['gname']));
        $url = '';
        if ($dummy == 'group_lead_mail') {
            $url = $api->getGroupManagementPage($subjectParam['gname']) . "?itemId=" . $api->getItemIdFromToken($subjectParam['gname']);
            $smarty->assign('mail_user', $subjectParam['user']);
            $smarty->assign('mail_real', $tikilib->get_user_preference($subjectParam['user'], 'realName', ''));
        } elseif ($dummy == 'add_rem_mail') {
            $url = $api->getGroupHomePage($subjectParam['gname']) . "?itemId=" . $api->getItemIdFromToken($subjectParam['gname']);
        }
        foreach ($watches as $key => $value) {
            $lang = $tikilib->get_user_preference($key, "language", $prefs['site_language']);
            if ($dummy != 'group_lead_mail') {
                // group_lead_mail already sets this
                $smarty->assign('mail_user', $key);
                $smarty->assign('mail_real', $tikilib->get_user_preference($key, 'realName', ''));
            }
            $smarty->assign('mail_remuser', $tikilib->get_user_preference($value, 'realName', ''));
            $userid = "user" . TikiLib::lib('user')->get_user_id($value);
            $smarty->assign('mail_userid', $userid);
            $smarty->assign('mail_site', $_SERVER['SERVER_NAME']);
            $smarty->assign('mail_url', $url);
            $foo = parse_url($_SERVER["REQUEST_URI"]);
            $machine = $tikilib->httpPrefix(true) . dirname($foo["path"]);
            if (substr($machine, -1) == '/') {
                $machine = substr($machine, 0, -1);
            }
            $smarty->assign('mail_machine', $machine);
            $mail = new TikiMail(null, $from);
            if ($key) {
                $mail->setUser($key);
            }
            if ($subjectTpl) {
                $mail_data = $smarty->fetchLang($lang, "mail/" . $subjectTpl);
                if ($subjectParam) {
                    $mail_data = sprintf($mail_data, $subjectParam);
                }
                $mail_data = preg_replace('/%[sd]/', '', $mail_data);
                // partial cleaning if param not supply and %s in text
                $mail->setSubject($mail_data);
            } else {
                $mail->setSubject($subjectParam);
            }
            $mail->setHtml($smarty->fetchLang($lang, "mail/" . $txtTpl));
            if ($mail->send(array(TikiLib::lib('user')->get_user_email($key)))) {
                $sent++;
            }
        }
    } else {
        foreach ($watches as $watch) {
            $mail = new TikiMail(null, $from);
            $smarty->assign('watchId', $watch['watchId']);
            if ($watch['user']) {
                $mail->setUser($watch['user']);
            }
            if ($subjectTpl) {
                $mail_data = $smarty->fetchLang($watch['language'], "mail/" . $subjectTpl);
                if ($subjectParam) {
                    $mail_data = sprintf($mail_data, $subjectParam);
                }
                $mail_data = preg_replace('/%[sd]/', '', $mail_data);
                // partial cleaning if param not supply and %s in text
                $mail->setSubject($mail_data);
            } else {
                $mail->setSubject($subjectParam);
            }
            $mail->setText($smarty->fetchLang($watch['language'], "mail/" . $txtTpl));
            if ($mail->send(array($watch['email']))) {
                $sent++;
            }
        }
    }
    return $sent;
}