{SITE_NAME} : 站点名称 {nickname} : 当前用户名称 {email} : 用户电子邮件 {code} : 验证码 {newPassword}: 新密码 {useTraffic}: 已用流量 {transfer} : 总流量 {expireTime}: 到期时间 {avatar}: 用户头像 (必须与 {email} 同时使用) {REGISTER_URL}: 注册校验链接
public static placeholderReplace ( $content, $params ) : string | ||
$content | ||
$params | array | |
Результат | string |
public static function placeholderReplace($content, $params)
{
if ($params['REGISTER_URL'] != null) {
$url = BASE_URL . 'auth/verification?verification=' . urlencode($params['REGISTER_URL']);
$params['REGISTER_URL'] = "<a href=\"{$url}\" target=\"_blank\" title=\"点击校验您的账户并完成注册!\">{$url}</a>";
}
if ($params['avatar'] === true) {
$params['avatar'] = Utils::gravatar($params['email']);
}
// 替换
$content = str_replace(['{SITE_NAME}', '{nickname}', '{email}', '{code}', '{newPassword}', '{useTraffic}', '{transfer}', '{expireTime}', '{REGISTER_URL}', '{avatar}'], [SITE_NAME, $params['nickname'], $params['email'], $params['code'], $params['newPassword'], $params['useTraffic'], $params['transfer'], $params['expireTime'], $params['REGISTER_URL'], $params['avatar']], $content);
return $content;
}
public function run() { $users = User::getUserArrayByExpire(); $notificationMail = Option::get('mail_stop_expire_notification'); $mailContentTemplate = Option::get('custom_mail_stop_expire_content'); if (!$notificationMail) { Option::set('mail_stop_expire_notification', 0); // 设置邮件提醒的系统参数 } $mailer = Mailer::getInstance(); $mailer->toQueue(true); foreach ($users as $user) { $user->stop(); Logger::getInstance()->info('user [' . $user->email . '] 未续费或流量超用已被暂停服务'); if ($notificationMail) { $mail = new Mail(); $mail->to = $user->email; $mail->subject = '[' . SITE_NAME . '] ' . "用户 {$user->nickname},您的账户由于未续费或流量超用已被暂停服务"; $params = ['nickname' => $user->nickname, 'email' => $user->email, 'useTraffic' => Utils::flowAutoShow($user->flow_up + $user->flow_down), 'transfer' => Utils::flowAutoShow($user->transfer), 'expireTime' => date('Y-m-d H:i:s', $user->expireTime)]; $mailContent = Utils::placeholderReplace($mailContentTemplate, $params); $mailContent .= "<p style=\"padding: 1.5em 1em 0; color: #999; font-size: 12px;\">—— 本邮件由 " . SITE_NAME . " (<a href=\"" . BASE_URL . "\">" . BASE_URL . "</a>) 账户管控系统发送</p>"; $mail->content = $mailContent; $mailer->send($mail); } } // 避免频繁更新 Option 单例对象,循环结束后再执行 if ($notificationMail) { Option::set('mail_queue', 1); } // 2016-04-26 15:00 - by @Sendya Fixed issue #62 // User::enableUsersByExpireTime(); // 启用已续费且流量未超过的用户 }