/** *\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; }