get_user_notification_email( $userId ), $subject, $content, $content_type ); } /** * Method send_http_check_notification(). * * Send HTTP response email notification. * * @param mixed $email_settings Email settings. * @param array $sites_status Websites http status. * @param bool $plain_text Text format. * * @return bool False if failed. * * @uses \MainWP\Dashboard\MainWP_Logger::debug() * @uses \MainWP\Dashboard\MainWP_Notification_Template::get_template_html() */ public static function send_http_check_notification( $email_settings, $sites_status, $plain_text ) { if ( $plain_text ) { $content_type = "Content-Type: text/plain; charset=\"utf-8\"\r\n"; } else { $content_type = "Content-Type: text/html; charset=\"utf-8\"\r\n"; } $heading = $email_settings['heading']; $subject = $email_settings['subject']; $formated_content = MainWP_Notification_Template::instance()->get_template_html( 'emails/mainwp-after-update-http-check-email.php', array( 'sites_statuses' => $sites_status, 'heading' => $heading, ) ); $email = ''; if ( ! empty( $email_settings['recipients'] ) ) { $email .= ',' . $email_settings['recipients']; // send to recipients. } $email = trim( $email, ',' ); if ( ! empty( $email ) ) { MainWP_Logger::instance()->debug( 'http check :: send mail ::' ); static::send_wp_mail( $email, $subject, $formated_content, $content_type ); return true; } return false; } /** * Method send_license_deactivated_alert(). * * Send extensions license deactivated email notification. * * @param mixed $email_settings Email settings. * @param array $deactivated_license Websites http status. * @param bool $plain_text Text format. * * @return bool False if failed. */ public static function send_license_deactivated_alert( $email_settings, $deactivated_license, $plain_text ) { if ( $plain_text ) { $content_type = "Content-Type: text/plain; charset=\"utf-8\"\r\n"; } else { $content_type = "Content-Type: text/html; charset=\"utf-8\"\r\n"; } $heading = $email_settings['heading']; $subject = $email_settings['subject']; $formated_content = MainWP_Notification_Template::instance()->get_template_html( 'emails/mainwp-licenses-deactivated-alert-email.php', array( 'deactivated_licenses' => $deactivated_license, 'heading' => $heading, ) ); $email = ''; if ( ! empty( $email_settings['recipients'] ) ) { $email .= ',' . $email_settings['recipients']; // send to recipients. } $email = trim( $email, ',' ); if ( ! empty( $email ) ) { MainWP_Logger::instance()->debug( 'license deactivated alert:: send mail ::' ); static::send_wp_mail( $email, $subject, $formated_content, $content_type ); return true; } return false; } /** * Method send_daily_digest_notification(). * * Sent available updates notification email. * * @param array $email_settings Email settings. * @param bool $available_updates Update avaiable. * @param mixed $wp_updates WP updates. * @param mixed $plugin_updates Plugin updates. * @param mixed $theme_updates Theme updates. * @param mixed $sites_disconnected Sites disconnected. * @param array $params Other params. * * @return bool * * @uses \MainWP\Dashboard\MainWP_Logger::debug() * @uses \MainWP\Dashboard\MainWP_Notification_Template::get_template_html() */ public static function send_daily_digest_notification( $email_settings, $available_updates, $wp_updates, $plugin_updates, $theme_updates, $sites_disconnected, $params = array() ) { if ( ! is_array( $params ) ) { $params = array(); } $plain_text = isset( $params['plain_text'] ) ? $params['plain_text'] : ''; $sites_ids = isset( $params['sites_ids'] ) ? $params['sites_ids'] : false; $email_site = isset( $params['email_site'] ) ? $params['email_site'] : false; if ( $email_settings['disable'] ) { return false; // disabled send daily digest notification. } $email = ''; if ( ! empty( $email_settings['recipients'] ) ) { $email .= ',' . $email_settings['recipients']; // send to recipients, individual email settings or general email settings. } $email = trim( $email, ',' ); if ( empty( $email ) ) { return false; } if ( $plain_text ) { $content_type = "Content-Type: text/plain; charset=\"utf-8\"\r\n"; } else { $content_type = "Content-Type: text/html; charset=\"utf-8\"\r\n"; } /** * Filter: mainwp_daily_digest_content * * Filters the Daily Digest email content and adds support for enabling text/plain emails. * * @param array $sites_ids Array of sites IDs. * @param bool $plain_text Wether plain text mode is enabled. * * @since 4.1 */ $other_digest = apply_filters( 'mainwp_daily_digest_content', false, $sites_ids, $plain_text ); $heading = $email_settings['heading']; $formated_content = MainWP_Notification_Template::instance()->get_template_html( 'emails/mainwp-daily-digest-email.php', array( 'available_updates' => $available_updates, 'wp_updates' => $wp_updates, 'plugin_updates' => $plugin_updates, 'theme_updates' => $theme_updates, 'sites_disconnected' => $sites_disconnected, 'other_digest' => $other_digest, 'heading' => $heading, 'current_email_site' => $email_site, // support tokens process. ) ); $subject = $email_settings['subject']; $sent = static::send_wp_mail( $email, $subject, $formated_content, $content_type ); if ( $sent ) { MainWP_Logger::instance()->log_update_check( 'daily digest :: send mail :: successful :: ' . $email ); } else { MainWP_Logger::instance()->log_update_check( 'daily digest :: send mail :: failed :: ' . $email ); } return true; } /** * Method send_websites_uptime_monitoring(). * * Send websites status email notification. * * @param string $emails notification emails. * @param string $subject email subject. * @param string $mail_content email content. * @param bool $plain_text Text format. * @param object $site_mo Monitor website. * * @uses \MainWP\Dashboard\MainWP_Logger::debug() */ public static function send_websites_uptime_monitoring( $emails, $subject, $mail_content, $plain_text, $site_mo = false ) { if ( $plain_text ) { $content_type = "Content-Type: text/plain; charset=\"utf-8\"\r\n"; } else { $content_type = "Content-Type: text/html; charset=\"utf-8\"\r\n"; } if ( ! empty( $emails ) && ! empty( $mail_content ) ) { MainWP_Logger::instance()->log_uptime_notice( 'Uptime monitoring status :: send mail :: ' . $subject ); if ( $site_mo ) { $event_time = ! empty( $site_mo->hb_time_check ) ? gmdate( 'Y-m-d H:i:s', $site_mo->hb_time_check ) : ''; MainWP_Logger::instance()->log_uptime_notice( 'Sending notification :: [subject=' . esc_html( $subject ) . '] :: [event-time=' . $event_time . '] :: [monitorid=' . $site_mo->monitor_id . '] :: [monitor-url=' . ( empty( $site_mo->issub ) ? $site_mo->url : $site_mo->suburl ) . ']' ); } static::send_wp_mail( $emails, $subject, $mail_content, $content_type ); } } /** * Method send_websites_health_status_notification(). * * Send websites status email notification. * * @param string $email notification email. * @param string $subject subject. * @param string $mail_content email content. * @param bool $plain_text Text format. * * @uses \MainWP\Dashboard\MainWP_Logger::debug() */ public static function send_websites_health_status_notification( $email, $subject, $mail_content, $plain_text ) { if ( $plain_text ) { $content_type = "Content-Type: text/plain; charset=\"utf-8\"\r\n"; } else { $content_type = "Content-Type: text/html; charset=\"utf-8\"\r\n"; } if ( ! empty( $email ) && ! empty( $mail_content ) ) { MainWP_Logger::instance()->debug( 'sites health :: send mail ::' ); static::send_wp_mail( $email, $subject, $mail_content, $content_type ); } } /** * Method send_wp_mail(). * * Send email via wp_mail(). * * @param string $email send to email. * @param string $subject email content. * @param string $mail_content Text format. * @param string $content_type email content. */ public static function send_wp_mail( $email, $subject, $mail_content, $content_type = '' ) { if ( empty( $content_type ) ) { $content_type = "Content-Type: text/html; charset=\"utf-8\"\r\n"; } $from_header = array( 'from_name' => get_option( 'admin_email' ), 'from_email' => get_option( 'admin_email' ), ); $custom_header = apply_filters( 'mainwp_send_mail_from_header', false, $email, $subject ); if ( is_array( $custom_header ) && isset( $custom_header['from_name'] ) && isset( $custom_header['from_email'] ) && ! empty( $custom_header['from_name'] ) && ! empty( $custom_header['from_email'] ) ) { $from_header = $custom_header; } return wp_mail( $email, $subject, $mail_content, array( 'From: "' . $from_header['from_name'] . '" <' . $from_header['from_email'] . '>', $content_type, ) ); } }