Automator_Functions::load_extra_options( $recipe )

load_extra_options


Parameters Parameters

$type

(Required)

$item_code

(Required)


Top ↑

Return Return

(void)


Source Source

File: src/core/lib/class-automator-functions.php

	public function load_extra_options( $recipe ) {
		// Get the extra options meta. This one should only exists during REST calls. In all other cases, this meta should nor exist
		$extra_options_meta = get_post_meta( $recipe['ID'], 'extra_options', true );
		// If the meta doesn't exist (initial recipe page load), replace it with an empty array
		$extra_options = empty( $extra_options_meta ) ? array() : $extra_options_meta;
		// We will loop through triggers and actions to see if any of them have extra optiosn to load
		$types_to_process = array( 'actions', 'triggers' );
		foreach ( $types_to_process as $type ) {
			foreach ( $recipe[ $type ] as $item ) {
				$item_code   = $item['meta']['code'];
				$integration = $item['meta']['integration'];
				// If extra options were already loaded for this item, bail
				if ( isset( $extra_options[ $integration ][ $item_code ] ) ) {
					continue;
				}
				// Otherwise, get the options callback from the integration definition
				if ( 'actions' === $type ) {
					$callback = Automator()->get->value_from_action_meta( $item_code, 'options_callback' );
				} elseif ( 'triggers' === $type ) {
					$callback = Automator()->get->value_from_trigger_meta( $item_code, 'options_callback' );
				}
				// If there is no callback found, bail
				if ( ! $callback ) {
					continue;
				}
				// If the callback is found, execute it
				$extra_options[ $integration ][ $item_code ] = call_user_func( $callback );
			}
		}
		// Store all the extra options in the post meta so that subsequent REST API calls won't need to load the options again
		update_post_meta( $recipe['ID'], 'extra_options', $extra_options );
		return $extra_options;
	}