Trigger_Setup

Trait Trigger_Setup


Source Source

File: src/core/lib/recipe-parts/triggers/trait-trigger-setup.php

trait Trigger_Setup {
	/**
	 * @var
	 */
	protected $integration;
	/**
	 * @var string
	 */
	protected $author = 'Uncanny Automator';
	/**
	 * @var string
	 */
	protected $support_link = 'https://automatorplugin.com/knowledge-base/';
	/**
	 * @var bool
	 */
	protected $is_pro = false;
	/**
	 * @var bool
	 */
	protected $is_anonymous = false;
	/**
	 * @var bool
	 */
	protected $is_deprecated = false;
	/**
	 * @var
	 */
	protected $trigger_code;
	/**
	 * @var
	 */
	protected $trigger_meta;
	/**
	 * @var
	 */
	protected $action_hook;
	/**
	 * @var int
	 */
	protected $action_priority = 10;
	/**
	 * @var int
	 */
	protected $action_args_count = 1;
	/**
	 * @var
	 */
	protected $sentence;
	/**
	 * @var
	 */
	protected $readable_sentence;
	/**
	 * @var
	 */
	protected $options;
	/**
	 * @var
	 */
	protected $options_group;
	/**
	 * @var
	 */
	protected $trigger_tokens = array();
	/**
	 * @var
	 */
	protected $token_parser;
	/**
	 * @return mixed
	 */
	abstract protected function setup_trigger();
	/**
	 * @param bool $is_anonymous
	 */
	public function set_is_anonymous( bool $is_anonymous ): void {
		$this->is_anonymous = $is_anonymous;
	}
	/**
	 * @return bool
	 */
	public function get_is_anonymous(): bool {
		return $this->is_anonymous;
	}
	/**
	 * @param mixed $integration
	 */
	public function set_integration( string $integration ): void {
		$this->integration = $integration;
	}
	/**
	 * @param mixed $action_hook
	 */
	public function set_action_hook( $action_hook ): void {
		$this->action_hook = $action_hook;
	}
	/**
	 * @param mixed $sentence
	 */
	public function set_sentence( $sentence ): void {
		$this->sentence = $sentence;
	}
	/**
	 * @param mixed $readable_sentence
	 */
	public function set_readable_sentence( $readable_sentence ): void {
		$this->readable_sentence = $readable_sentence;
	}
	/**
	 * @param $author
	 */
	protected function set_author( $author ) {
		if ( empty( $author ) ) {
			$this->author = Automator()->get_author_name( $this->trigger_code );
		} else {
			$this->author = $author;
		}
	}
	/**
	 * @param $link
	 */
	protected function set_support_link( $link ) {
		if ( empty( $link ) ) {
			$this->support_link = Automator()->get_author_support_link( $this->trigger_code );
		} else {
			$this->support_link = $link;
		}
	}
	/**
	 * @param mixed $trigger_code
	 */
	public function set_trigger_code( $trigger_code ): void {
		$this->trigger_code = $trigger_code;
	}
	/**
	 * @param mixed $trigger_meta
	 */
	public function set_trigger_meta( $trigger_meta ): void {
		$this->trigger_meta = $trigger_meta;
	}
	/**
	 * @param bool $is_pro
	 */
	public function set_is_pro( bool $is_pro ): void {
		$this->is_pro = $is_pro;
	}
	/**
	 * @param bool $is_deprecated
	 */
	public function set_is_deprecated( bool $is_deprecated ): void {
		$this->is_deprecated = $is_deprecated;
	}
	/**
	 * @param int $action_priority
	 */
	public function set_action_priority( int $action_priority = 10 ): void {
		$this->action_priority = $action_priority;
	}
	/**
	 * @param int $arg_count
	 */
	protected function set_action_args_count( $arg_count = 1 ) {
		$this->action_args_count = $arg_count;
	}
	/**
	 * @param mixed $options
	 */
	public function set_options( array $options ): void {
		$this->options = $options;
	}
	/**
	 * @param $action
	 * @param int $priority
	 * @param int $args
	 */
	protected function add_action( $action, int $priority = 10, int $args = 1 ) {
		$this->set_action_hook( $action );
		$this->set_action_priority( $priority );
		$this->set_action_args_count( $args );
	}
	/**
	 * @return mixed
	 */
	protected function get_action() {
		return $this->action_hook;
	}
	/**
	 * @return int
	 */
	protected function get_action_priority() {
		return $this->action_priority;
	}
	/**
	 * @return int
	 */
	protected function get_action_args_count() {
		return $this->action_args_count;
	}
	/**
	 * @return mixed
	 */
	protected function get_integration() {
		return $this->integration;
	}
	/**
	 * @return mixed
	 */
	protected function get_code() {
		return $this->trigger_code;
	}
	/**
	 * @return string
	 */
	protected function get_author() {
		return $this->author;
	}
	/**
	 * @return string
	 */
	protected function get_support_link() {
		return $this->support_link;
	}
	/**
	 * @return bool
	 */
	public function get_is_pro(): bool {
		return $this->is_pro;
	}
	/**
	 * @return bool
	 */
	public function get_is_deprecated(): bool {
		return $this->is_deprecated;
	}
	/**
	 * @return mixed
	 */
	public function get_trigger_code() {
		return $this->trigger_code;
	}
	/**
	 * @return mixed
	 */
	public function get_trigger_meta() {
		return $this->trigger_meta;
	}
	/**
	 * @return mixed
	 */
	public function get_action_hook() {
		return $this->action_hook;
	}
	/**
	 * @return mixed
	 */
	public function get_sentence() {
		return $this->sentence;
	}
	/**
	 * @return mixed
	 */
	public function get_options() {
		return $this->options;
	}
	/**
	 * @return mixed
	 */
	protected function get_readable_sentence() {
		return $this->readable_sentence;
	}
	/**
	 * @return mixed
	 */
	public function get_options_group() {
		return $this->options_group;
	}
	/**
	 * @param mixed $options_group
	 */
	public function set_options_group( $options_group ): void {
		$this->options_group = $options_group;
	}
	/**
	 * @return mixed
	 */
	public function get_trigger_tokens(): array {
		return $this->trigger_tokens;
	}
	/**
	 * @param mixed $trigger_tokens
	 */
	public function set_trigger_tokens( array $trigger_tokens ): void {
		$this->trigger_tokens = $trigger_tokens;
	}
	/**
	 * @return mixed
	 */
	public function get_token_parser() {
		return $this->token_parser;
	}
	/**
	 * @param mixed $token_parser
	 */
	public function set_token_parser( $token_parser ): void {
		$this->token_parser = $token_parser;
	}

	/**
	 * Define and register the trigger by pushing it into the Automator object
	 */
	protected function register_trigger() {
		$trigger = array(
			'author'              => $this->get_author(),
			'support_link'        => $this->get_support_link(),
			'is_pro'              => $this->get_is_pro(),
			'is_deprecated'       => $this->get_is_deprecated(),
			'integration'         => $this->get_integration(),
			'code'                => $this->get_code(),
			'sentence'            => $this->get_sentence(),
			'select_option_name'  => $this->get_readable_sentence(),
			'action'              => $this->get_action(),
			'priority'            => $this->get_action_priority(),
			'accepted_args'       => $this->get_action_args_count(),
			'tokens'              => $this->get_trigger_tokens(),
			'token_parser'        => $this->get_token_parser(),
			'validation_function' => array( $this, 'validate' ),
		);
		if ( ! empty( $this->get_options() ) ) {
			$trigger['options'] = $this->get_options();
		}
		if ( ! empty( $this->get_options_group() ) ) {
			$trigger['options_group'] = $this->get_options_group();
		}
		$trigger = apply_filters( 'automator_register_trigger', $trigger );
		Automator()->register->trigger( $trigger );
	}
}

Methods Methods