balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

settings-site-identity.php (4040B)


      1 <?php
      2 
      3 namespace Elementor\Core\Kits\Documents\Tabs;
      4 
      5 use Elementor\Controls_Manager;
      6 use Elementor\Core\Files\Assets\Files_Upload_Handler;
      7 use Elementor\Core\Base\Document;
      8 
      9 if ( ! defined( 'ABSPATH' ) ) {
     10 	exit; // Exit if accessed directly
     11 }
     12 
     13 class Settings_Site_Identity extends Tab_Base {
     14 
     15 	public function get_id() {
     16 		return 'settings-site-identity';
     17 	}
     18 
     19 	public function get_title() {
     20 		return esc_html__( 'Site Identity', 'elementor' );
     21 	}
     22 
     23 	public function get_group() {
     24 		return 'settings';
     25 	}
     26 
     27 	public function get_icon() {
     28 		return 'eicon-site-identity';
     29 	}
     30 
     31 	public function get_help_url() {
     32 		return 'https://go.elementor.com/global-site-identity';
     33 	}
     34 
     35 	protected function register_tab_controls() {
     36 		$custom_logo_id = get_theme_mod( 'custom_logo' );
     37 		$custom_logo_src = wp_get_attachment_image_src( $custom_logo_id, 'full' );
     38 
     39 		$site_icon_id = get_option( 'site_icon' );
     40 		$site_icon_src = wp_get_attachment_image_src( $site_icon_id, 'full' );
     41 
     42 		// If CANNOT upload svg normally, it will add a custom inline option to force svg upload if requested. (in logo and favicon)
     43 		$should_include_svg_inline_option = ! Files_Upload_Handler::is_enabled();
     44 
     45 		$this->start_controls_section(
     46 			'section_' . $this->get_id(),
     47 			[
     48 				'label' => $this->get_title(),
     49 				'tab' => $this->get_id(),
     50 			]
     51 		);
     52 
     53 		$this->add_control(
     54 			$this->get_id() . '_refresh_notice',
     55 			[
     56 				'type' => Controls_Manager::RAW_HTML,
     57 				'raw' => esc_html__( 'Changes will be reflected in the preview only after the page reloads.', 'elementor' ),
     58 				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
     59 			]
     60 		);
     61 
     62 		$this->add_control(
     63 			'site_name',
     64 			[
     65 				'label' => esc_html__( 'Site Name', 'elementor' ),
     66 				'default' => get_option( 'blogname' ),
     67 				'placeholder' => esc_html__( 'Choose name', 'elementor' ),
     68 				'label_block' => true,
     69 				'export' => false,
     70 			]
     71 		);
     72 
     73 		$this->add_control(
     74 			'site_description',
     75 			[
     76 				'label' => esc_html__( 'Site Description', 'elementor' ),
     77 				'default' => get_option( 'blogdescription' ),
     78 				'placeholder' => esc_html__( 'Choose description', 'elementor' ),
     79 				'label_block' => true,
     80 				'export' => false,
     81 			]
     82 		);
     83 
     84 		$this->add_control(
     85 			'site_logo',
     86 			[
     87 				'label' => esc_html__( 'Site Logo', 'elementor' ),
     88 				'type' => Controls_Manager::MEDIA,
     89 				'should_include_svg_inline_option' => $should_include_svg_inline_option,
     90 				'default' => [
     91 					'id' => $custom_logo_id,
     92 					'url' => $custom_logo_src ? $custom_logo_src[0] : '',
     93 				],
     94 				'description' => esc_html__( 'Suggested image dimensions: 350 × 100 pixels.', 'elementor' ),
     95 				'export' => false,
     96 			]
     97 		);
     98 
     99 		$this->add_control(
    100 			'site_favicon',
    101 			[
    102 				'label' => esc_html__( 'Site Favicon', 'elementor' ),
    103 				'type' => Controls_Manager::MEDIA,
    104 				'should_include_svg_inline_option' => $should_include_svg_inline_option,
    105 				'default' => [
    106 					'id' => $site_icon_id,
    107 					'url' => $site_icon_src ? $site_icon_src[0] : '',
    108 				],
    109 				'description' => esc_html__( 'Suggested favicon dimensions: 512 × 512 pixels.', 'elementor' ),
    110 				'export' => false,
    111 			]
    112 		);
    113 
    114 		$this->end_controls_section();
    115 	}
    116 
    117 	public function on_save( $data ) {
    118 		if (
    119 			! isset( $data['settings']['post_status'] ) ||
    120 			Document::STATUS_PUBLISH !== $data['settings']['post_status'] ||
    121 			// Should check for the current action to avoid infinite loop
    122 			// when updating options like: "blogname" and "blogdescription".
    123 			strpos( current_action(), 'update_option_' ) === 0
    124 		) {
    125 			return;
    126 		}
    127 
    128 		if ( isset( $data['settings']['site_name'] ) ) {
    129 			update_option( 'blogname', $data['settings']['site_name'] );
    130 		}
    131 
    132 		if ( isset( $data['settings']['site_description'] ) ) {
    133 			update_option( 'blogdescription', $data['settings']['site_description'] );
    134 		}
    135 
    136 		if ( isset( $data['settings']['site_logo'] ) ) {
    137 			set_theme_mod( 'custom_logo', $data['settings']['site_logo']['id'] );
    138 		}
    139 
    140 		if ( isset( $data['settings']['site_favicon'] ) ) {
    141 			update_option( 'site_icon', $data['settings']['site_favicon']['id'] );
    142 		}
    143 	}
    144 }