public static function send($senderId, $recipientId, $title, $question) { $title = trim($title); $question = trim($question); $errors = array(); if (empty($senderId)) { $errors['sender'] = 'Invalid sender ID.'; } if (empty($recipientId)) { $errors['recipient'] = 'Invalid recipient ID.'; } if (empty($title)) { $errors['title'] = 'Title is required.'; } if (empty($question)) { $errors['question'] = 'Question is required.'; } if (!empty($errors)) { throw new Exception(serialize($errors)); } if ($senderId == $recipientId) { $errors['recipient'] = 'You cannot send question to yourself.'; } $sender = get_userdata($senderId); if (empty($sender)) { $errors['sender'] = 'Unknown sender.'; } $recipient = get_userdata($recipientId); if (empty($recipient)) { $errors['recipient'] = 'Unknown recipient.'; } if (!empty($errors)) { throw new Exception(serialize($errors)); } $replace = array('[blogname]' => get_bloginfo('name'), '[username]' => strip_tags($sender->display_name), '[title]' => htmlspecialchars($title), '[question]' => htmlspecialchars($question)); $to = sprintf('%s <%s>', $recipient->display_name, $recipient->user_email); $replyTo = sprintf('%s <%s>', $sender->display_name, $sender->user_email); CMA_Email::send($to, CMA_Settings::getOption(CMA_Settings::OPTION_PRIVATE_QUESTION_EMAIL_SUBJECT), CMA_Settings::getOption(CMA_Settings::OPTION_PRIVATE_QUESTION_EMAIL_TEMPLATE), $replace, array('Reply-To: ' . $replyTo)); // return wp_mail($to, $subject, $template, array('Reply-To: '. $replyTo)); }
public function notifyAboutNewAnswer($lastAnswerId) { global $wpdb; $lastAnswer = CMA_Answer::getById($lastAnswerId); $receivers = array(); // All users are receivers if (CMA_Settings::getOption(CMA_Settings::OPTION_NEW_ANSWER_NOTIFY_EVERYBODY_ENABLED) and !$lastAnswer->isPrivate()) { $users = $wpdb->get_results("SELECT ID, user_email FROM {$wpdb->users}", ARRAY_A); foreach ($users as $user) { if ($this->isVisible($user['ID'])) { $receivers[] = $user['user_email']; } } unset($users); } else { // Users followers if (CMA_Settings::getOption(CMA_Settings::OPTION_ENABLE_THREAD_FOLLOWING)) { $followers = $this->getFollowersEngine()->getFollowers(); if (!empty($followers)) { foreach ($followers as $user_id) { if ($user_id != $lastAnswer->getAuthorId() and $this->isVisible($user_id)) { $user = get_userdata($user_id); if (!empty($user->user_email)) { $receivers[] = $user->user_email; } } } } unset($followers); } } $receivers = apply_filters('cma_answer_notification_emails', $receivers, $lastAnswerId); if ($lastAnswer->isPrivate()) { if ($threadAuthor = $this->getAuthor()) { $receivers = array_intersect($receivers, array($threadAuthor->user_email)); } } // Admin custom receivers' emails if (CMA_Settings::getOption(CMA_Settings::OPTION_NEW_ANSWER_ADMIN_NOTIFICATION_ENABLED)) { $receivers = array_merge($receivers, CMA_Settings::getOption(CMA_Settings::OPTION_POST_ADMIN_NOTIFICATION_EMAIL)); } $receivers = array_filter(array_unique($receivers)); if (!empty($receivers)) { $message = CMA_Settings::getOption(CMA_Settings::OPTION_THREAD_NOTIFICATION); $title = CMA_Settings::getOption(CMA_Settings::OPTION_THREAD_NOTIFICATION_TITLE); $replace = array('[blogname]' => get_bloginfo('name'), '[question_title]' => strip_tags($this->getTitle()), '[question_body]' => strip_tags($this->getContent()), '[answer]' => strip_tags($lastAnswer->getContent()), '[comment_link]' => $lastAnswer->getPermalink(), '[author]' => strip_tags($lastAnswer->getAuthor()->display_name), '[ip]' => $lastAnswer->getAuthorIP(), '[opt_out_url]' => CMA_ThreadNewsletter::getOptOutUrl($this, CMA_ThreadNewsletter::TYPE_THREAD)); CMA_Email::send($receivers, $title, $message, $replace); /* $headers = array(); foreach($receivers as $email) { if (is_email($email)) { $headers[] = ' Bcc: '. $email; } } wp_mail(null, $title, $message, $headers); */ } }
public function sendNotifications() { $thread = $this->getThread(); $receivers = array(); // Admin notification emails if (CMA_Settings::getOption(CMA_Settings::OPTION_NEW_COMMENT_ADMIN_NOTIFICATION_ENABLED)) { $receivers = array_merge($receivers, CMA_Settings::getOption(CMA_Settings::OPTION_POST_ADMIN_NOTIFICATION_EMAIL)); } // User subscribers email if (CMA_Settings::getOption(CMA_Settings::OPTION_ENABLE_THREAD_FOLLOWING) and CMA_Settings::getOption(CMA_Settings::OPTION_NEW_COMMENT_NOTIFICATION_ENABLED)) { $followers = $thread->getFollowersEngine()->getFollowers(); if (!empty($followers)) { foreach ($followers as $user_id) { if ($user_id != $this->getAuthorId() and $thread->isVisible($user_id)) { $user = get_userdata($user_id); if (!empty($user->user_email)) { $receivers[] = $user->user_email; } } } } } $receivers = array_filter(array_unique($receivers)); if (!empty($receivers)) { $replace = array('[blogname]' => get_bloginfo('name'), '[question_title]' => strip_tags($thread->getTitle()), '[question_body]' => strip_tags($thread->getContent()), '[comment_link]' => $this->getPermalink(), '[comment]' => strip_tags($this->getContent()), '[author]' => strip_tags($this->getAuthor()->display_name), '[opt_out_url]' => CMA_ThreadNewsletter::getOptOutUrl($this->getThread(), CMA_ThreadNewsletter::TYPE_THREAD)); $subject = strtr(CMA_Settings::getOption(CMA_Settings::OPTION_NEW_COMMENT_NOTIFICATION_TITLE), $replace); $message = strtr(CMA_Settings::getOption(CMA_Settings::OPTION_NEW_COMMENT_NOTIFICATION_CONTENT), $replace); CMA_Email::send($receivers, $subject, $message); /* $headers = array(); foreach($receivers as $email) { $email = trim($email); if (is_email($email)) { $headers[] = ' Bcc: '. $email; } } if (!empty($headers)) wp_mail(null, $subject, $message, $headers); */ } }
static function bestAnswerNotification(CMA_Thread $thread) { global $wpdb; $answer = $thread->getBestAnswer(); $receivers = array(); $receiversOption = CMA_Settings::getOption(CMA_Settings::OPTION_NOTIF_BEST_ANSWER_RECEIVERS); if (in_array(CMA_Settings::NOTIF_QUESTION_AUTHOR, $receiversOption)) { $receivers[] = $thread->getAuthorEmail(); } if (in_array(CMA_Settings::NOTIF_ANSWER_AUTHOR, $receiversOption)) { $receivers[] = $answer->getAuthorEmail(); } if (in_array(CMA_Settings::NOTIF_FOLLOWERS, $receiversOption)) { $receivers = array_merge($receivers, $thread->getFollowersEmails()); } if (in_array(CMA_Settings::NOTIF_CONTRIBUTORS, $receiversOption)) { $receivers = array_merge($receivers, $thread->getContributorsEmails()); $receivers[] = $thread->getAuthorEmail(); } $receivers = array_filter(array_unique($receivers)); if (!empty($receivers)) { $message = CMA_Settings::getOption(CMA_Settings::OPTION_NOTIF_BEST_ANSWER_CONTENT); $title = CMA_Settings::getOption(CMA_Settings::OPTION_NOTIF_BEST_ANSWER_TITLE); $replace = array('[blogname]' => get_bloginfo('name'), '[question_title]' => strip_tags($thread->getTitle()), '[question_body]' => strip_tags($thread->getContent()), '[question_author]' => strip_tags($thread->getAuthorName()), '[answer]' => strip_tags($answer->getContent()), '[answer_link]' => $answer->getPermalink(), '[answer_author]' => strip_tags($answer->getAuthorName())); CMA_Email::send($receivers, $title, $message, $replace); } }