Current File : /home/getxxhzo/xpertbee.com/wp-content/plugins/hurrytimer/includes/ActionManager.php
<?php

namespace Hurrytimer;

/**
 *
 * This class handle actions executions
 *
 * Class ActionManager
 *
 * @package Hurrytimer
 */
class ActionManager
{
    /**
     * @var Campaign
     */
    protected $campaign;

    public function __construct( $campaign )
    {
        $this->campaign = $campaign;
        add_filter( 'wp_insert_post_data', function ( $data ) {
            global $hurryt_saving_post;
            $hurryt_saving_post = true;

            return $data;
        } );
        add_action( 'save_post', function () {
            global $hurryt_saving_post;
            $hurryt_saving_post = false;
        } );

    }

    function is_disabled()
    {
        $disable_actions = hurryt_is_admin_area() && hurryt_settings()[ 'disable_actions' ];
        return filter_var( apply_filters( 'hurryt_disable_actions', $disable_actions ), FILTER_VALIDATE_BOOLEAN );
    }

    public function run()
    {

        if ( $this->is_disabled() ) {
            return;
        }

        /**
         * @deprecated 2.3.0 Use `hurryt_campaign_finished` instead.
         */
        do_action( "hurryt_{$this->campaign->get_id()}_campaign_ended", $this->campaign );

        do_action( "hurryt_campaign_finished", $this->campaign->get_id() );

        foreach ( $this->campaign->actions as $action ) {
            switch ( $action[ 'id' ] ) {

                case C::ACTION_REDIRECT;
                    $this->redirect_to( $action[ 'redirectUrl' ] );
                    break;
                case C::ACTION_CHANGE_STOCK_STATUS:
                    $this->change_stock_status( $action[ 'wcStockStatus' ] );
                    break;
            }
        }
    }

    function redirect_to( $url )
    {
        global $hurryt_saving_post;
        if ( $hurryt_saving_post ) {
            return;
        }

        if ( !empty( trim( $url ) ) ) {
            wp_redirect( $url );
            return;
        }
    }

    function change_stock_status( $stock_status )
    {
        $wc_campaign = new WCCampaign();
        $wc_campaign->change_stock_status( $this->campaign, $stock_status );

        return;
    }
}