Skip to content
Snippets Groups Projects
class-cfafa-acfe.php 3.9 KiB
Newer Older
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', '>=' ) && version_compare( $this->acfe_version, '895', '<' ) ) {
			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
}