Automattic\WooCommerce\Blocks\AIContent

UpdatePatterns::apply_ai_responses_to_patterns()privateWC 1.0

Applies the AI responses to the patterns.

Method of the class: UpdatePatterns{}

No Hooks.

Return

Mixed.

Usage

// private - for code of main (parent) class only
$result = $this->apply_ai_responses_to_patterns( $patterns, $ai_responses );
$patterns(array) (required)
The array of patterns.
$ai_responses(array) (required)
The array of AI responses.

UpdatePatterns::apply_ai_responses_to_patterns() code WC 9.8.1

private function apply_ai_responses_to_patterns( array $patterns, array $ai_responses ) {
	foreach ( $patterns as $i => $pattern ) {
		$pattern_slug = $pattern['slug'];

		if ( ! in_array( $pattern_slug, self::WC_PATTERNS_IN_THE_ASSEMBLER, true ) ) {
			continue;
		}

		foreach ( $ai_responses as $ai_response ) {
			$ai_response = json_decode( $ai_response['completion'], true );

			if ( isset( $ai_response[ $pattern_slug ] ) ) {
				$ai_response_content = $ai_response[ $pattern_slug ];

				$counter = 1;
				if ( isset( $patterns[ $i ]['content']['titles'] ) ) {
					foreach ( $patterns[ $i ]['content']['titles'] as $j => $title ) {
						if ( ! isset( $ai_response_content[ $counter ] ) ) {
							$ai_response_content[ $counter ] = $ai_response_content[ $counter - 1 ] ?? '';
						}

						$patterns[ $i ]['content']['titles'][ $j ]['default'] = $this->sanitize_string( $ai_response_content[ $counter ] );

						$counter ++;
					}
				}

				if ( isset( $patterns[ $i ]['content']['descriptions'] ) ) {
					foreach ( $patterns[ $i ]['content']['descriptions'] as $k => $description ) {
						if ( ! isset( $ai_response_content[ $counter ] ) ) {
							$ai_response_content[ $counter ] = $ai_response_content[ $counter - 1 ] ?? '';
						}

						$patterns[ $i ]['content']['descriptions'][ $k ]['default'] = $this->sanitize_string( $ai_response_content[ $counter ] );

						$counter ++;
					}
				}

				if ( isset( $patterns[ $i ]['content']['buttons'] ) ) {
					foreach ( $patterns[ $i ]['content']['buttons'] as $l => $button ) {
						if ( ! isset( $ai_response_content[ $counter ] ) ) {
							$ai_response_content[ $counter ] = $ai_response_content[ $counter - 1 ] ?? '';
						}

						$patterns[ $i ]['content']['buttons'][ $l ]['default'] = $this->sanitize_string( $ai_response_content[ $counter ] );

						$counter ++;
					}
				}
			}
		}
	}

	return $patterns;
}