Skip to content
Snippets Groups Projects
class-cfafa-acfe.php 3.85 KiB
Newer Older
  • Learn to ignore specific revisions
  • Christian Wach's avatar
    Christian Wach committed
    <?php
    /**
     * ACF Extended Class.
     *
     * Handles general "ACF Extended" functionality.
     *
     * @package Conditional_Form_Actions_For_ACFE
     */
    
    // Exit if accessed directly.
    defined( 'ABSPATH' ) || exit;
    
    /**
     * "ACF Extended" Class.
     *
     * A class that encapsulates ACF Extended functionality.
     *
     * @since 0.1
     */
    class CFAFA_ACFE {
    
    	/**
    	 * Plugin object.
    	 *
    	 * @since 0.1
    	 * @access public
    
    	 * @var Conditional_Form_Actions_For_ACFE
    
    Christian Wach's avatar
    Christian Wach committed
    	 */
    	public $plugin;
    
    
    	/**
    	 * ACF Extended plugin version.
    	 *
    	 * @since 0.2.0
    	 * @access public
    	 * @var string
    	 */
    	public $acfe_version;
    
    
    Christian Wach's avatar
    Christian Wach committed
    	/**
    	 * Constructor.
    	 *
    	 * @since 0.1
    	 *
    	 * @param object $plugin The plugin object.
    	 */
    	public function __construct( $plugin ) {
    
    		// Store references to objects.
    		$this->plugin = $plugin;
    
    		// Init when ACF class is loaded.
    		add_action( 'cfafa/loaded', [ $this, 'initialise' ] );
    
    	}
    
    	/**
    	 * Initialise this object.
    	 *
    	 * @since 0.1
    	 */
    	public function initialise() {
    
    		// Only do this once.
    		static $done;
    
    Christian Wach's avatar
    Christian Wach committed
    		if ( isset( $done ) && true === $done ) {
    
    Christian Wach's avatar
    Christian Wach committed
    			return;
    		}
    
    
    		// Bail if ACFE is not present.
    		if ( ! defined( 'ACFE_VERSION' ) ) {
    			$done = true;
    			return;
    		}
    
    		// Store ACFE version.
    		$this->acfe_version = ACFE_VERSION;
    
    
    Christian Wach's avatar
    Christian Wach committed
    		// Register hooks.
    		$this->register_hooks();
    
    		/**
    		 * Broadcast that this class is now loaded.
    		 *
    		 * @since 0.1
    		 */
    		do_action( 'cfafa/acfe/loaded' );
    
    		// We're done and loaded.
    		$done = true;
    
    	}
    
    	/**
    	 * Register hooks.
    	 *
    	 * @since 0.1
    	 */
    
    	private function register_hooks() {
    
    Christian Wach's avatar
    Christian Wach committed
    
    		// Register ACFE Form Actions.
    
    		if ( version_compare( $this->acfe_version, '0.9', '>=' ) ) {
    			add_action( 'acf/include_field_types', [ $this, 'register_form_actions_latest' ], 50 );
    		} else {
    			add_action( 'acfe/include_form_actions', [ $this, 'register_form_actions_legacy' ], 50 );
    		}
    
    Christian Wach's avatar
    Christian Wach committed
    
    
    Christian Wach's avatar
    Christian Wach committed
    		/*
    
    		// Clear Form Action Query Vars.
    
    Christian Wach's avatar
    Christian Wach committed
    		add_action( 'acfe/form/submit', [ $this, 'form_action_query_vars_clear' ] );
    		*/
    
    Christian Wach's avatar
    Christian Wach committed
    
    	}
    
    	/**
    	 * Clear the Form Action Query Vars.
    	 *
    	 * This means we get a fresh set of Query Vars during the load process after
    	 * a Form has been submitted.
    	 *
    	 * @since 0.1
    	 */
    	public function form_action_query_vars_clear() {
    
    		// Clear the array of Action results.
    		set_query_var( 'acfe_form_actions', [] );
    
    	}
    
    	/**
    
    	 * Register Form Actions for ACFE version 0.9.x.
    
    Christian Wach's avatar
    Christian Wach committed
    	 *
    
    	 * @since 0.2.0
    	 */
    	public function register_form_actions_latest() {
    
    		// Include class files.
    
    Christian Wach's avatar
    Christian Wach committed
    		include CFAFA_PATH . 'includes/form-actions/acfe-0.9.x/class-cfafa-form-action-base.php';
    		include CFAFA_PATH . 'includes/form-actions/acfe-0.9.x/class-cfafa-form-action-redirect.php';
    		include CFAFA_PATH . 'includes/form-actions/acfe-0.9.x/class-cfafa-form-action-email.php';
    
    
    		// Register the Form Actions.
    		acfe_register_form_action_type( 'CFAFA_ACFE_Form_Action_Redirect' );
    		acfe_register_form_action_type( 'CFAFA_ACFE_Form_Action_Email' );
    
    		// Maybe add WooCommerce Product Action.
    		if ( function_exists( 'WC' ) ) {
    
    Christian Wach's avatar
    Christian Wach committed
    			include CFAFA_PATH . 'includes/form-actions/acfe-0.9.x/class-cfafa-form-action-product.php';
    
    			acfe_register_form_action_type( 'CFAFA_ACFE_Form_Action_Product' );
    		}
    
    	}
    
    	/**
    	 * Register Form Actions for ACFE version 0.8.x.
    	 *
    	 * @since 0.2.0
    
    Christian Wach's avatar
    Christian Wach committed
    	 */
    
    	public function register_form_actions_legacy() {
    
    Christian Wach's avatar
    Christian Wach committed
    
    		// Include class files.
    
    Christian Wach's avatar
    Christian Wach committed
    		include CFAFA_PATH . 'includes/form-actions/acfe-0.8.x/class-cfafa-form-action-base.php';
    		include CFAFA_PATH . 'includes/form-actions/acfe-0.8.x/class-cfafa-form-action-redirect.php';
    		include CFAFA_PATH . 'includes/form-actions/acfe-0.8.x/class-cfafa-form-action-email.php';
    
    Christian Wach's avatar
    Christian Wach committed
    
    		// Instantiate the Form Actions.
    		new CFAFA_Form_Action_Redirect( $this );
    
    		new CFAFA_Form_Action_Email( $this );
    
    Christian Wach's avatar
    Christian Wach committed
    
    		// Maybe add WooCommerce Product Action.
    		if ( function_exists( 'WC' ) ) {
    
    Christian Wach's avatar
    Christian Wach committed
    			include CFAFA_PATH . 'includes/form-actions/acfe-0.8.x/class-cfafa-form-action-product.php';
    
    Christian Wach's avatar
    Christian Wach committed
    			new CFAFA_Form_Action_Product( $this );
    		}
    
    	}
    
    
    Christian Wach's avatar
    Christian Wach committed
    }