[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.147.61.125: ~ $
<?php
/**
 * Main class to handle tutor native e-commerce.
 *
 * @package Tutor\Ecommerce
 * @author Themeum <support@themeum.com>
 * @link https://themeum.com
 * @since 3.0.0
 */

namespace Tutor\Ecommerce;

use TUTOR\Course;
use Tutor\Ecommerce\PaymentHandler;
use TUTOR\Input;
use Tutor\PaymentGateways\Configs\PaypalConfig;
use Tutor\PaymentGateways\GatewayFactory;
use Tutor\PaymentGateways\PaypalGateway;

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

/**
 * Class Ecommerce
 *
 * @since 3.0.0
 */
class Ecommerce {

	/**
	 * Native ecommerce engin
	 *
	 * @since 3.0.0
	 *
	 * @var string
	 */
	const MONETIZE_BY = 'tutor';

	/**
	 * Construct function to initialize e-commerce classes
	 *
	 * @since 3.0.0
	 *
	 * @param bool $register_hooks register hooks.
	 */
	public function __construct( $register_hooks = true ) {

		if ( ! $register_hooks ) {
			return;
		}

		add_filter( 'tutor_monetization_options', array( $this, 'add_monetization_option' ) );

		new Settings();
		new Tax();
		// Include currency file.
		require_once tutor()->path . 'ecommerce/currency.php';

		if ( ! tutor_utils()->is_monetize_by_tutor() ) {
			return;
		}

		add_action( 'save_post_' . tutor()->course_post_type, array( $this, 'save_price' ), 10, 2 );

		new AdminMenu();
		new CartController();
		new CheckoutController();
		new OrderController();
		new OrderActivitiesController();
		new CouponController();
		new BillingController();
		new HooksHandler();
		new EmailController();
		new PaymentHandler();
	}

	/**
	 * Save course price and course sale price.
	 *
	 * @since 3.0.0
	 *
	 * @param int   $post_ID course ID.
	 * @param mixed $post    course details.
	 *
	 * @return void
	 */
	public function save_price( $post_ID, $post ) {
		if ( ! tutor_utils()->is_monetize_by_tutor() ) {
			return;
		}

		$course_price = Input::post( 'course_price', 0, Input::TYPE_NUMERIC );
		$sale_price   = Input::post( 'course_sale_price', 0, Input::TYPE_NUMERIC );

		if ( $course_price ) {
			update_post_meta( $post_ID, Course::COURSE_PRICE_META, $course_price );
		}

		if ( Input::has( 'course_sale_price' ) ) {
			update_post_meta( $post_ID, Course::COURSE_SALE_PRICE_META, $sale_price );
		}
	}

	/**
	 * Add monetization option.
	 *
	 * @since 3.0.0
	 *
	 * @param array $arr options.
	 *
	 * @return array
	 */
	public function add_monetization_option( $arr ) {
		$arr[ self::MONETIZE_BY ] = __( 'Native', 'tutor' );
		return array_reverse( $arr );
	}

	/**
	 * Create & return payment gateway object
	 *
	 * Return instance expose setup_payment_and_redirect & get_webhook_data
	 * methods for creating payments.
	 *
	 * @since 3.0.0
	 *
	 * @param string $gateway Reference class of gateway.
	 *
	 * @throws \Exception Throw exception if error occur.
	 *
	 * @return GatewayBase
	 */
	public static function get_payment_gateway_object( string $gateway ) {
		try {
			return GatewayFactory::create( $gateway );
		} catch ( \Throwable $th ) {
			throw new \Exception( $th->getMessage() );
		}
	}

	/**
	 * Get payment gateways with reference class
	 *
	 * @since 3.0.0
	 *
	 * @param string $gateway gateway name.
	 *
	 * @return array|null
	 */
	public static function payment_gateways_with_ref( $gateway = null ) {
		$arr = array(
			'paypal' => array(
				'gateway_class' => PaypalGateway::class,
				'config_class'  => PaypalConfig::class,
			),
		);

		$arr = apply_filters( 'tutor_payment_gateways_with_class', $arr );

		return is_null( $gateway ) ? $arr : $arr[ $gateway ] ?? null;
	}

	/**
	 * Check if a payment gateway configured
	 *
	 * @since 1.0.0
	 *
	 * @param string $gateway_slug Payment gateway name.
	 *
	 * @return bool
	 */
	public static function is_payment_gateway_configured( $gateway_slug ) {
		$payment_settings = Settings::get_payment_gateway_settings( $gateway_slug );
		if ( isset( $payment_settings['is_manual'] ) && $payment_settings['is_manual'] ) {
			return true;
		}

		$gateway_ref = self::payment_gateways_with_ref( $gateway_slug );
		if ( $gateway_ref ) {
			try {
				$gateway_obj  = self::get_payment_gateway_object( $gateway_ref['gateway_class'] );
				$config_class = $gateway_obj->get_config_class();
				return ( new $config_class() )->is_configured();
			} catch ( \Throwable $th ) {
				return false;
			}
		}

		return false;
	}

	/**
	 * Get error message for unfinished payment method
	 *
	 * @since 3.0.0
	 *
	 * @param string $payment_method payment method name.
	 *
	 * @return string error message for incomplete payment method setup.
	 */
	public static function get_incomplete_payment_setup_error_message( $payment_method ) {
		/* translators: %s: payment gateway */
		return sprintf( __( '%s payment method is not configured properly. Please contact with site administrator!', 'tutor' ), ucfirst( $payment_method ) );
	}

	/**
	 * Get payment method label.
	 *
	 * @since 3.0.0
	 *
	 * @param string $payment_method payment method name.
	 *
	 * @return string
	 */
	public static function get_payment_method_label( $payment_method ) {
		$payment_method_labels = array(
			'paypal' => __( 'PayPal', 'tutor' ),
		);

		$payment_method_labels = apply_filters( 'tutor_payment_method_labels', $payment_method_labels );

		return $payment_method_labels[ $payment_method ] ?? ucfirst( $payment_method );
	}
}

Filemanager

Name Type Size Permission Actions
PaymentGateways Folder 0755
AdminMenu.php File 2.34 KB 0644
BillingController.php File 5.57 KB 0644
CartController.php File 5.46 KB 0644
CheckoutController.php File 26.97 KB 0644
CouponController.php File 21.48 KB 0644
Ecommerce.php File 5.12 KB 0644
EmailController.php File 24.96 KB 0644
HooksHandler.php File 11.75 KB 0644
OptionKeys.php File 1.77 KB 0644
OrderActivitiesController.php File 4.57 KB 0644
OrderController.php File 33.34 KB 0644
PaymentHandler.php File 4.25 KB 0644
Settings.php File 12.7 KB 0644
Tax.php File 6.35 KB 0644
currency.php File 27.51 KB 0644