HEX
Server: LiteSpeed
System: Linux dune179.sitesanctuary.org 5.14.0-427.40.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 16 07:08:17 EDT 2024 x86_64
User: h278792 (1197)
PHP: 8.1.29
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/h278792/public_html/wp-content/plugins/learnpress/inc/class-lp-emails.php
<?php
/**
 * Base class of LearnPress emails and helper functions.
 *
 * @author  ThimPress
 * @package LearnPress/Classes
 * @version 3.0.1
 * @editor tungnx
 * @modify 4.1.3
 */

/**
 * Prevent loading this file directly
 */
defined( 'ABSPATH' ) || exit();

if ( ! class_exists( 'LP_Emails' ) ) {
	/**
	 * Class LP_Emails
	 */
	class LP_Emails {

		/**
		 * List of all email actions.
		 *
		 * @var array
		 */
		public $emails = array();

		/**
		 * The single instance of the class
		 *
		 * @var LP_Emails
		 */
		protected static $_instance = null;

		/**
		 * @var LP_Email
		 */
		protected $_current = null;

		/**
		 * @var null
		 */
		protected $_last_current = null;

		/**
		 * LP_Emails constructor.
		 */
		protected function __construct() {
			if ( did_action( 'learn-press/emails-init' ) ) {
				return;
			}
			include_once LP_PLUGIN_PATH . 'inc/emails/class-lp-email.php';

			$this->register_emails();

			do_action( 'learn-press/emails-init', $this );
		}

		public function register_emails() {
			include_once 'emails/types/class-lp-email-type-order.php';
			include_once 'emails/types/class-lp-email-type-order-student.php';
			include_once 'emails/types/class-lp-email-type-order-guest.php';
			include_once 'emails/types/class-lp-email-type-order-admin.php';
			include_once 'emails/types/class-lp-email-type-order-instructor.php';
			include_once 'emails/types/class-lp-email-type-enrolled-course.php';
			include_once 'emails/types/class-lp-email-type-finished-course.php';
			include_once 'emails/types/class-lp-email-type-become-an-instructor.php';

			// New order
			$this->emails['LP_Email_New_Order_Admin']      = include_once 'emails/admin/class-lp-email-new-order-admin.php';
			$this->emails['LP_Email_New_Order_User']       = include_once 'emails/student/class-lp-email-new-order-user.php';
			$this->emails['LP_Email_New_Order_Instructor'] = include_once 'emails/instructor/class-lp-email-new-order-instructor.php';
			$this->emails['LP_Email_New_Order_Guest']      = include_once 'emails/guest/class-lp-email-new-order-guest.php';

			// Processing order
			$this->emails['LP_Email_Processing_Order_User']  = include_once 'emails/student/class-lp-email-processing-order-user.php';
			$this->emails['LP_Email_Processing_Order_Guest'] = include_once 'emails/guest/class-lp-email-processing-order-guest.php';

			// Completed order
			$this->emails['LP_Email_Completed_Order_Admin'] = include_once 'emails/admin/class-lp-email-completed-order-admin.php';
			$this->emails['LP_Email_Completed_Order_User']  = include_once 'emails/student/class-lp-email-completed-order-user.php';
			$this->emails['LP_Email_Completed_Order_Guest'] = include_once 'emails/guest/class-lp-email-completed-order-guest.php';

			// Cancelled order
			$this->emails['LP_Email_Cancelled_Order_Admin']      = include_once 'emails/admin/class-lp-email-cancelled-order-admin.php';
			$this->emails['LP_Email_Cancelled_Order_Instructor'] = include_once 'emails/instructor/class-lp-email-cancelled-order-instructor.php';
			$this->emails['LP_Email_Cancelled_Order_User']       = include_once 'emails/student/class-lp-email-cancelled-order-user.php';
			$this->emails['LP_Email_Cancelled_Order_Guest']      = include_once 'emails/guest/class-lp-email-cancelled-order-guest.php';

			// Enrolled course
			$this->emails['LP_Email_Enrolled_Course_Admin']      = include_once 'emails/admin/class-lp-email-enrolled-course-admin.php';
			$this->emails['LP_Email_Enrolled_Course_Instructor'] = include_once 'emails/instructor/class-lp-email-enrolled-course-instructor.php';
			$this->emails['LP_Email_Enrolled_Course_User']       = include_once 'emails/student/class-lp-email-enrolled-course-user.php';

			// Finished course
			$this->emails['LP_Email_Finished_Course_Admin']      = include_once 'emails/admin/class-lp-email-finished-course-admin.php';
			$this->emails['LP_Email_Finished_Course_Instructor'] = include_once 'emails/instructor/class-lp-email-finished-course-instructor.php';
			$this->emails['LP_Email_Finished_Course_User']       = include_once 'emails/student/class-lp-email-finished-course-user.php';

			// Become An Instructor
			$this->emails['LP_Email_Become_An_Instructor'] = include_once 'emails/admin/class-lp-email-become-an-instructor.php';
			$this->emails['LP_Email_Instructor_Accepted']  = include_once 'emails/instructor/class-lp-email-instructor-accepted.php';
			$this->emails['LP_Email_Instructor_Denied']    = include_once 'emails/instructor/class-lp-email-instructor-denied.php';

			// Forgot Password
			$this->emails['LP_Email_Reset_Password'] = include_once 'emails/types/class-lp-email-reset-password.php';

			do_action( 'learnpress/emails/register', $this->emails );
		}


		/**
		 * @version 1.0
		 */
		public function __clone() {
			_doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'learnpress' ), '1.0' );
		}

		/**
		 * @version 1.0
		 */
		public function __wakeup() {
			_doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'learnpress' ), '1.0' );
		}

		/**
		 * Init email notification hooks.
		 *
		 * @since 3.0.0
		 * @editor tungnx
		 * @reason comment - not use
		 */
		/*
		public static function init_email_notifications() {
			self::instance();
		}*/

		/**
		 * Push email notification into queue.
		 *
		 * @since 3.0.0
		 */
		/*
		public static function queue_email() {
			$data_queue = array(
				'filter' => current_filter(),
				'args'   => func_get_args(),
			);
			LP()->background( 'emailer' )->push_to_queue( $data_queue );
		}*/

		/**
		 * Send email notification.
		 *
		 * @editor tungnx
		 * @reason not use
		 * @deprecated 4.1.1
		 */
		/*
		public static function send_email() {
			try {
				$args = func_get_args();
				self::instance();
				do_action_ref_array( current_filter() . '/notification', $args );
			} catch ( Exception $e ) {
			}
		}*/

		/**
		 * Email header.
		 *
		 * @param string $heading
		 * @param bool   $echo
		 *
		 * @return string
		 * @editor tungnx
		 * @modify 4.1.4 comment - not used
		 */
		/*public function email_header( string $heading, bool $echo = true ): string {
			ob_start();
			learn_press_get_template( 'emails/email-header.php', array( 'email_heading' => $heading ) );
			$header = ob_get_clean();
			if ( $echo ) {
				echo $header;
			}

			return $header;
		}*/

		/**
		 * Email footer.
		 *
		 * @param string $footer_text
		 * @param bool   $echo
		 *
		 * @return string
		 * @editor tungnx
		 * @modify 4.1.4 comment - not used
		 */
		/*public function email_footer( string $footer_text, bool $echo = true ): string {
			ob_start();
			learn_press_get_template( 'emails/email-footer.php', array( 'footer_text' => $footer_text ) );
			$footer = ob_get_clean();
			if ( $echo ) {
				echo $footer;
			}

			return $footer;
		}*/

		public function set_current( $id ) {
			$this->_last_current = $this->_current;

			if ( $id instanceof LP_Email ) {
				$this->_current = $id->id;
			} else {
				$this->_current = $id;
			}
		}

		/**
		 * @return bool|LP_Email
		 */
		public function get_current() {
			return self::get_email( $this->_current );
		}

		public function reset_current() {
			$this->_current = $this->_last_current;
		}

		/**
		 * @param string $id
		 *
		 * @return LP_Email|bool
		 */
		public static function get_email( $id ) {
			static $emails = array();

			if ( ! $emails || empty( $emails[ $id ] ) ) {
				foreach ( self::instance()->emails as $class => $email ) {
					$emails[ $email->id ] = $class;
				}
			}

			return ! empty( $emails[ $id ] ) ? self::instance()->emails[ $emails[ $id ] ] : false;
		}

		/**
		 * Get image header in general settings.
		 *
		 * @return string
		 */
		public function get_image_header() {
			$image = LP()->settings->get( 'emails_general.header_image' );

			if ( ! empty( $image ) ) {
				$image = wp_get_attachment_image_url( $image, 'full' );
			}

			return $image;
		}

		/**
		 * Main LP_Mail Instance, ensures only one instance of LP_Mail is loaded or can be loaded.
		 *
		 * @since 3.0.0
		 *
		 * @return LP_Emails
		 */
		public static function instance() {

			if ( is_null( self::$_instance ) ) {
				self::$_instance = new self();
			}

			return self::$_instance;
		}

	}

}