Files
szkoleniauryzaj.pl/wp-content/plugins/password-protected/includes/activity-report-email/class-password-protected-send-email-notification.php
2026-04-26 23:47:49 +02:00

90 lines
2.9 KiB
PHP

<?php
defined( 'ABSPATH' ) || exit;
if ( ! class_exists( 'Password_Protected_Send_Email_Notification' ) ) {
class Password_Protected_Send_Email_Notification {
private static $instance;
private function __construct() {
add_filter( 'cron_schedules', array( $this, 'cron_schedules' ) );
add_action( 'init', array( $this, 'init_cron' ) );
add_action( 'password_protected_email_notification_hook', array( $this, 'send_email_notification' ) );
}
public function cron_schedules( $schedules ) {
$schedules['password_protected_email_notification'] = array(
'interval' => Password_protected_Activity_Report_Settings::get_report_interval(),
'display' => __( 'Password Protected Email Notification Interval', 'password-protected' ),
);
return $schedules;
}
public function init_cron() {
if ( ! wp_next_scheduled( 'password_protected_email_notification_hook' ) ) {
wp_schedule_event( time(), 'password_protected_email_notification', 'password_protected_email_notification_hook' );
}
}
public function send_email_notification() {
global $wpdb;
$timestamps = Password_Protected_Activity_Logs::get_time_from_keyword( 'thisweek' );
$sql = 'SELECT
SUM( IF ( `status` = %s, 1, 0 ) ) as success,
SUM( IF ( `status` = %s, 1, 0 ) ) as failed
FROM %i WHERE created_at between %d and %d;';
$sql = $wpdb->prepare( $sql, 'Success', 'Failure', $wpdb->prefix . 'pp_activity_logs', $timestamps[0], $timestamps[1] );
$results = $wpdb->get_row( $sql, ARRAY_A );
$success_attempts =
$failed_attempts = 0;
if ( is_array( $results ) ) {
if ( isset( $results['success'] ) ) {
$success_attempts = absint( $results['success'] );
}
if ( isset( $results['failed'] ) ) {
$failed_attempts = absint( $results['failed'] );
}
}
$total_attempts = $success_attempts + $failed_attempts;
$template = $this->get_template( $success_attempts, $failed_attempts, $total_attempts, $timestamps );
$headers = $this->get_html_headers();
$subject = sprintf(
'[ %s, %s ]',
get_bloginfo( 'name' ),
__( 'Password Protected Activity Log Notification', 'password-protected' )
);
return wp_mail( get_option( 'admin_email' ), $subject, $template, $headers );
}
private function get_template( $success, $failed, $total, $time ) {
ob_start();
require_once PASSWORD_PROTECTED_DIR . 'templates/emails/activity-notification.php';
return ob_get_clean();
}
private function get_html_headers() {
$headers = array(
'Content-type: text/html',
);
return implode( "\r\n", apply_filters( 'password_protected_email_headers', $headers ) );
}
public static function get_instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
}
}
Password_Protected_Send_Email_Notification::get_instance();
#F03B3E, #04AA5E, #4685EC, #CA1329, #FBBA40