Astra_Update_Container_Layout::execute( array $args )

Execute the ability.


Description


Parameters

$args

(array) (Required) Input arguments.


Return

(array) Result array.


Source

File: inc/abilities/customizer/globals/container/class-astra-update-container-layout.php

	public function execute( $args ) {
		$theme_options = get_option( ASTRA_THEME_SETTINGS, array() );
		if ( ! is_array( $theme_options ) ) {
			$theme_options = array();
		}

		$updated         = false;
		$update_messages = array();

		$layout_labels = array(
			'normal-width-container' => __( 'Normal', 'astra' ),
			'narrow-width-container' => __( 'Narrow', 'astra' ),
			'full-width-container'   => __( 'Full Width', 'astra' ),
		);

		$style_labels = array(
			'boxed'   => __( 'Boxed', 'astra' ),
			'unboxed' => __( 'Unboxed', 'astra' ),
		);

		if ( isset( $args['container_layout'] ) && ! empty( $args['container_layout'] ) ) {
			$container_layout = sanitize_text_field( $args['container_layout'] );

			$valid_layouts = array( 'normal-width-container', 'narrow-width-container', 'full-width-container' );
			if ( ! in_array( $container_layout, $valid_layouts, true ) ) {
				return Astra_Abilities_Response::error(
					/* translators: %s: invalid layout value */
					sprintf( __( 'Invalid container layout: %s.', 'astra' ), $container_layout ),
					__( 'Valid options: normal-width-container, narrow-width-container, full-width-container', 'astra' )
				);
			}

			$theme_options['ast-site-content-layout'] = $container_layout;
			$updated                                  = true;

			/* translators: %s: layout label */
			$update_messages[] = sprintf( __( 'Container layout set to %s', 'astra' ), $layout_labels[ $container_layout ] );
		}

		if ( isset( $args['container_style'] ) && ! empty( $args['container_style'] ) ) {
			$container_style = sanitize_text_field( $args['container_style'] );

			$valid_styles = array( 'boxed', 'unboxed' );
			if ( ! in_array( $container_style, $valid_styles, true ) ) {
				return Astra_Abilities_Response::error(
					/* translators: %s: invalid style value */
					sprintf( __( 'Invalid container style: %s.', 'astra' ), $container_style ),
					__( 'Valid options: boxed, unboxed', 'astra' )
				);
			}

			$theme_options['site-content-style'] = $container_style;
			$updated                             = true;

			/* translators: %s: style label */
			$update_messages[] = sprintf( __( 'Container style set to %s', 'astra' ), $style_labels[ $container_style ] );
		}

		if ( ! $updated ) {
			return Astra_Abilities_Response::error(
				__( 'No changes specified.', 'astra' ),
				__( 'Please provide either container_layout or container_style to update.', 'astra' )
			);
		}

		update_option( ASTRA_THEME_SETTINGS, $theme_options );

		$current_layout = isset( $theme_options['ast-site-content-layout'] ) ? $theme_options['ast-site-content-layout'] : 'normal-width-container';
		$current_style  = isset( $theme_options['site-content-style'] ) ? $theme_options['site-content-style'] : 'boxed';

		$message = implode( ' and ', $update_messages ) . '.';

		return Astra_Abilities_Response::success(
			$message,
			array(
				'container_layout'       => $current_layout,
				'container_layout_label' => isset( $layout_labels[ $current_layout ] ) ? $layout_labels[ $current_layout ] : $current_layout,
				'container_style'        => $current_style,
				'container_style_label'  => isset( $style_labels[ $current_style ] ) ? $style_labels[ $current_style ] : $current_style,
				'note'                   => __( 'Container style applies only when layout is set to Normal or Narrow.', 'astra' ),
			)
		);
	}


User Contributed Notes

You must log in before being able to contribute a note or feedback.