Your IP : 216.73.217.94


Current Path : /home2/noxxprod/public_html/wp-content/plugins/ultrapress/components/ultra-send-email/
Upload File :
Current File : //home2/noxxprod/public_html/wp-content/plugins/ultrapress/components/ultra-send-email/setup.php

<?php
/**
 * X component for ultrapress
 *
 * this component add new page
 */


if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * this class define functionality of the component.
 *
 * @package    Ultrapress
 * @subpackage Ultrapress/components
 * @author     meedawi <meedawi.med@gmail.com>
 */


if ( ! class_exists( 'ultra_Send_Email' ) ) {
class ultra_Send_Email {
	/**
	 * Instance.
	 *
	 * Holds the plugin instance.
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var Plugin
	 */
	private  static $instance = null;
	/**
	 * trigger.
	 *
	 * trigger of component. it will be used to trigger component
	 *
	 * use namespace, example: 'namespace/something'
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var trigger
	 */
	public static $trigger = 'ultra/send_email'; 
	/**
	 * name.
	 *
	 * name of component.
	 *
	 * use namespace, example: 'namespace-something'
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var name
	 */ 
	public static $name = 'ultra-send-email'; 
	/**
	 * version of component
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var version
	 */
	public static $version = '1.0.0'; 
	/**
	 * the description of component
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @var description
	 */
	public static $description = 'send email'; 
	/**
	 * Holds the component input arguments.
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var accepted_args
	 */
	public static $accepted_args = array(
		'sender_name' => array(
			'primal' => 0,
			'type_of_variable' => 0,
			'required' => 0,
			'description' => '(string) name of the email author. only work if <from> is set. defaut is: Wordpress',   // description of arg
		),
		'from' => array(
			'primal' => 1,
			'type_of_variable' => 0,
			'required' => 0,
			'description' => '(string) email addresses OR ID of user who want to send the email. default is: WordPress default sender',   // description of arg
		),
		'to' => array(
			'primal' => 1,
			'type_of_variable' => 0,
			'required' => 1,
			'description' => '(string) email addresses OR ID of user to send the email to.',   // description of arg
		),
		'subject' => array(
			'primal' => 1,
			'type_of_variable' => 0,
			'required' => 1,
			'description' => '(string) Email subject',   // description of arg
		),
		'message' => array(
				'primal' => 1,
				'type_of_variable' => 0,
				'required' => 1,
				'description' => '(string) Message contents',   // description of arg
			),
	);
	/**
	 * Holds the component additional input arguments.
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var additional_input
	 */
	public static $additional_input = array( );
	/**
	 * Holds the component outputs
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @var outputs
	 */
	public static $outputs = array(
		'/success' => array(
			'description' => 'email sent successfully', //  description  of output
			'name' => 'success', //  name  of output
			'args' => array(),
		),
		'/fail' => array(
			'description' => 'ERROR: email not sent',
			'name' => 'fail', //  name  of output
			'args' => array(),
		)

	);

	/**
	 * Clone.
	 *
	 * Disable class cloning and throw an error on object clone.
	 *
	 * The whole idea of the singleton design pattern is that there is a single
	 * object. Therefore, we don't want the object to be cloned.
	 *
	 * @access public
	 * @since 1.0.0
	 */
	public function __clone() {}
	/**
	 * Wakeup.
	 *
	 * Disable unserializing of the class.
	 *
	 * @access public
	 * @since 1.0.0
	 */
	public function __wakeup() {}
	/**
	 * Instance.
	 *
	 * Ensures only one instance of the plugin class is loaded or can be loaded.
	 *
	 * @since 1.0.0
	 * @access public
	 * @static
	 *
	 * @return Plugin An instance of the class.
	 */
	public static function instance() {
		if ( is_null( self::$instance ) ) {
			self::$instance = new self();
		}
		return self::$instance;
	}
	/**
	 * get_component_info.
	 *
	 * get the info of components.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array
	 */
	public function get_component_info() {
		// put the url of component icon here
		$icon_url =  'img/Email-icon.png';

		// put the url of outputs icon here
		$success =  'img/success-icon.png';
	    $fail = 'img/fail-icon.png';

	    self::$outputs[ '/success' ][ 'output_icon_url' ] = $success;
	    self::$outputs[ '/fail' ][ 'output_icon_url' ] = $fail;

		$info = array(
			'trigger' => self::$trigger,
			'name' => self::$name,
			'version' => self::$version,
			'description' => self::$description,
			'input' => self::$accepted_args,
			'additional_input' => self::$additional_input,
			'outputs' => self::$outputs,
			'icon_url' => $icon_url, 
			'path_of_component_dir' =>  plugin_dir_path( __FILE__ ), 
			'url_of_component_dir' => plugin_dir_url( __FILE__ ),
		);
		return $info;
	}
	/**
	 * get_triggers.
	 *
	 * triggers to be added.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array
	 */
	public function get_triggers() {
		return array();
	}
	/**
	 * setup.
	 *
	 * setup the component.
	 * Fires on Ultrapress loaded, after Ultrapress has finished loading but
	 * before any headers are sent.
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function setup() {
		$info = self::instance()->get_component_info();
		$trig = self::instance()->get_triggers();
		Ultrapress_Class::add_trigger($trig);
		Ultrapress_Class::install_component($info);
	}
	/**
	 * filter_args.
	 *
	 * filter hook to add additional arguments.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array  $args primal args
	 *
	 * @return array
	 */
	public function filter_args($args) {
		// only primal args

		return $args;
	}
	/**
	 * run the component
	 *
	 * Fired by self::$trigger hook
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array    $ultra_args   arguments
	 */
	public function run($ultra_args) {
		/**
 		* Define the array of defaults
 		*/ 
		$defaults = array();

		/**
 		* Parse incoming $args into an array and merge it with $defaults
 		*/ 
		$ultra_args['args'] = wp_parse_args( $ultra_args['args'], $defaults );
		$args =  $ultra_args['args'];

		// do the work here

		if (is_numeric( $args['to'] )) {
			$user = get_user_by('id', $args['to']);
			if ( ! empty( $user ) ) {
				$to = $user->user_email;
			} else {
				$args_fail = array();
				$ultra_args['args'] = $args_fail;

				// trigger second_output_example
				Ultrapress_Class::do_action($ultra_args, '/fail');
				return false;
			}
			
		} else {
			$to      = sanitize_email($args['to']);
		}

		$from = '';	
		if (array_key_exists('from', $args)) {
			if (is_numeric( $args['from'] )) {
				$user = get_user_by('id', $args['from']);
				if ($user) {
					$from = $user->user_email;
				}	
			} else {
				$from = sanitize_email($args['from']);
			}			
		}

		if (array_key_exists('sender_name', $args)) {
			$sender_name = sanitize_text_field($args['sender_name']);
		} else {
			$sender_name =  'Wordpress';
		}
		
		$headers = array('Content-Type: text/html; charset=UTF-8');
		if ($from) {
			$headers[] = "From: $sender_name <$from>";
		} 
		
		$subject = sanitize_text_field($args['subject']);
		$message = sanitize_text_field($args['message']);
		
		$condition = wp_mail( $to, $subject, $message, $headers );

		if ( $condition ) {		
			$args_success = array(
			);

			$ultra_args['args'] = $args_success;

			// trigger first_output_example
			Ultrapress_Class::do_action($ultra_args, '/success');
		} else {	
			// ex: if error
			$args_fail = array();

			$ultra_args['args'] = $args_fail;

			// trigger second_output_example
			Ultrapress_Class::do_action($ultra_args, '/fail');
		}
	}
	/**
	 * Plugin constructor.
	 *
	 * Initializing Ultrapress plugin.
	 *
	 * @since 1.0.0
	 * @access private
	 */
	private function __construct() {
		add_action( 'ultrapress/loaded', [ $this, 'setup' ], 0 );
		add_action( self::$trigger, [ $this, 'run' ], 10,1);
		add_filter( self::$trigger . '/filter_args', [ $this, 'filter_args' ], 10,1 );
	}
}
}


ultra_Send_Email::instance();