Initial Commit
This commit is contained in:
114
inc/managers/class-discount-code-manager.php
Normal file
114
inc/managers/class-discount-code-manager.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
/**
|
||||
* Discount_Codes Manager
|
||||
*
|
||||
* Handles processes related to events.
|
||||
*
|
||||
* @package WP_Ultimo
|
||||
* @subpackage Managers/Discount_Code_Manager
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
namespace WP_Ultimo\Managers;
|
||||
|
||||
use WP_Ultimo\Managers\Base_Manager;
|
||||
use WP_Ultimo\Logger;
|
||||
|
||||
// Exit if accessed directly
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
/**
|
||||
* Handles processes related to events.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
class Discount_Code_Manager extends Base_Manager {
|
||||
|
||||
use \WP_Ultimo\Apis\Rest_Api, \WP_Ultimo\Apis\WP_CLI, \WP_Ultimo\Traits\Singleton;
|
||||
|
||||
/**
|
||||
* The manager slug.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @var string
|
||||
*/
|
||||
protected $slug = 'discount_code';
|
||||
|
||||
/**
|
||||
* The model class associated to this manager.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @var string
|
||||
*/
|
||||
protected $model_class = '\\WP_Ultimo\\Models\\Discount_Code';
|
||||
|
||||
/**
|
||||
* Instantiate the necessary hooks.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return void
|
||||
*/
|
||||
public function init() {
|
||||
|
||||
$this->enable_rest_api();
|
||||
|
||||
$this->enable_wp_cli();
|
||||
|
||||
add_action('wu_gateway_payment_processed', array($this, 'maybe_add_use_on_payment_received'));
|
||||
|
||||
} // end init;
|
||||
|
||||
/**
|
||||
* Listens for payments received in order to increase the discount code uses.
|
||||
*
|
||||
* @since 2.0.4
|
||||
*
|
||||
* @param \WP_Ultimo\Models\Payment $payment The payment received.
|
||||
* @return void
|
||||
*/
|
||||
public function maybe_add_use_on_payment_received($payment) {
|
||||
|
||||
if (!$payment) {
|
||||
|
||||
return;
|
||||
|
||||
} // end if;
|
||||
|
||||
/*
|
||||
* Try to fetch the original cart of the payment.
|
||||
* We want only to increase the number of uses
|
||||
* for the first time payments are done.
|
||||
*/
|
||||
$original_cart = $payment->get_meta('wu_original_cart');
|
||||
|
||||
if (is_a($original_cart, \WP_Ultimo\Checkout\Cart::class) === false) {
|
||||
|
||||
return;
|
||||
|
||||
} // end if;
|
||||
|
||||
$discount_code = $original_cart->get_discount_code();
|
||||
|
||||
if (!$discount_code) {
|
||||
|
||||
return;
|
||||
|
||||
} // end if;
|
||||
|
||||
/*
|
||||
* Refetch the object, as the original version
|
||||
* might be too old and out-of-date by now.
|
||||
*/
|
||||
$discount_code = wu_get_discount_code($discount_code->get_id());
|
||||
|
||||
if ($discount_code) {
|
||||
|
||||
$discount_code->add_use();
|
||||
|
||||
$discount_code->save();
|
||||
|
||||
} // end if;
|
||||
|
||||
} // end maybe_add_use_on_payment_received;
|
||||
|
||||
} // end class Discount_Code_Manager;
|
Reference in New Issue
Block a user