Astra_Update_Transparent_Header::execute( array $args )
Execute the ability.
Description
Parameters
- $args
-
(array) (Required) Input arguments.
Return
(array) Result array.
Source
File: inc/abilities/customizer/header/transparent/class-astra-update-transparent-header.php
public function execute( $args ) {
if ( ! defined( 'ASTRA_THEME_SETTINGS' ) ) {
return Astra_Abilities_Response::error(
__( 'Astra theme is not active.', 'astra' ),
__( 'Please activate the Astra theme to use this feature.', 'astra' )
);
}
$updated = false;
$update_messages = array();
if ( isset( $args['enabled'] ) ) {
astra_update_option( 'transparent-header-enable', (bool) $args['enabled'] ? 1 : 0 );
$updated = true;
$update_messages[] = $args['enabled'] ? __( 'Transparent header enabled', 'astra' ) : __( 'Transparent header disabled', 'astra' );
}
if ( isset( $args['on_devices'] ) ) {
$on_devices = sanitize_text_field( $args['on_devices'] );
$valid_devices = array( 'both', 'desktop', 'mobile' );
if ( ! in_array( $on_devices, $valid_devices, true ) ) {
return Astra_Abilities_Response::error(
/* translators: %s: invalid device value */
sprintf( __( 'Invalid on_devices: %s.', 'astra' ), $on_devices ),
__( 'Valid options: both, desktop, mobile', 'astra' )
);
}
astra_update_option( 'transparent-header-on-devices', $on_devices );
$updated = true;
/* translators: %s: device visibility value */
$update_messages[] = sprintf( __( 'Device visibility set to %s', 'astra' ), $on_devices );
}
if ( isset( $args['logo'] ) && is_array( $args['logo'] ) ) {
$logo = $args['logo'];
if ( isset( $logo['different_logo'] ) ) {
astra_update_option( 'different-transparent-logo', (bool) $logo['different_logo'] ? 1 : 0 );
$updated = true;
}
if ( isset( $logo['logo_url'] ) ) {
astra_update_option( 'transparent-header-logo', esc_url_raw( $logo['logo_url'] ) );
$updated = true;
}
if ( isset( $logo['retina_logo_url'] ) ) {
astra_update_option( 'transparent-header-retina-logo', esc_url_raw( $logo['retina_logo_url'] ) );
$updated = true;
}
if ( isset( $logo['different_retina'] ) ) {
astra_update_option( 'different-transparent-retina-logo', (bool) $logo['different_retina'] ? 1 : 0 );
$updated = true;
}
if ( isset( $logo['logo_width'] ) && is_array( $logo['logo_width'] ) ) {
$sanitized_width = array();
$devices = array( 'desktop', 'tablet', 'mobile' );
foreach ( $devices as $device ) {
if ( isset( $logo['logo_width'][ $device ] ) ) {
$sanitized_width[ $device ] = absint( $logo['logo_width'][ $device ] );
}
}
astra_update_option( 'transparent-header-logo-width', $sanitized_width );
$updated = true;
}
$update_messages[] = __( 'Logo settings updated', 'astra' );
}
if ( isset( $args['border'] ) && is_array( $args['border'] ) ) {
if ( isset( $args['border']['size'] ) ) {
astra_update_option( 'transparent-header-main-sep', sanitize_text_field( $args['border']['size'] ) );
$updated = true;
}
if ( isset( $args['border']['color'] ) ) {
astra_update_option( 'transparent-header-main-sep-color', sanitize_text_field( $args['border']['color'] ) );
$updated = true;
}
$update_messages[] = __( 'Border settings updated', 'astra' );
}
if ( isset( $args['disable_on'] ) && is_array( $args['disable_on'] ) ) {
$disable_map = array(
'404_page' => 'transparent-header-disable-404-page',
'search_page' => 'transparent-header-disable-search-page',
'archive_pages' => 'transparent-header-disable-archive-pages',
'blog_index' => 'transparent-header-disable-index',
'latest_posts_index' => 'transparent-header-disable-latest-posts-index',
'pages' => 'transparent-header-disable-page',
'posts' => 'transparent-header-disable-posts',
);
foreach ( $disable_map as $key => $option_key ) {
if ( isset( $args['disable_on'][ $key ] ) ) {
$value = (bool) $args['disable_on'][ $key ] ? '1' : '0';
astra_update_option( $option_key, $value );
$updated = true;
}
}
$update_messages[] = __( 'Disable-on rules updated', 'astra' );
}
if ( isset( $args['colors'] ) && is_array( $args['colors'] ) ) {
$this->update_colors( $args['colors'] );
$updated = true;
$update_messages[] = __( 'Colors updated', 'astra' );
}
if ( ! $updated ) {
return Astra_Abilities_Response::error(
__( 'No changes specified.', 'astra' ),
__( 'Please provide at least one setting to update.', 'astra' )
);
}
/* translators: %s: comma-separated list of updated settings */
$message = sprintf( __( 'Transparent header settings updated: %s.', 'astra' ), implode( ', ', $update_messages ) );
return Astra_Abilities_Response::success(
$message,
array( 'updated' => true )
);
}
Expand full source code Collapse full source code View on Trac