HEX
Server: LiteSpeed
System: Linux pulsar191.sitesanctuary.org 5.14.0-284.30.1.el9.tuxcare.els9.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jan 10 17:34:05 UTC 2025 x86_64
User: lgooir (1604)
PHP: 8.1.32
Disabled: exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/lgooir/.trash/rising-bamboo/inc/app/admin/class-settings.php
<?php
/**
 * RisingBambooCore.
 *
 * @package RisingBambooCore
 */

namespace RisingBambooCore\App\Admin;

use RisingBambooCore\Core\Singleton;
use RisingBambooCore\Helper\Helper;
use RisingBambooCore\Helper\Setting;

/**
 * Settings.
 */
class Settings extends Singleton {

	/**
	 * Construct.
	 */
	public function __construct() {
		add_action('init', [ $this, 'register_settings' ]);
	}

	/**
	 * Get settings.
	 *
	 * @return array[]
	 */
	public function get_settings(): array {
		$settings = [
			'google' => [
				[
					'name'    => 'analytics_status',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => false,
					],
				],
				[
					'name'    => 'analytics_key',
					'options' => [
						'type'         => 'string',
						'show_in_rest' => true,
					],
				],
				[
					'name'    => 'tag_manager_status',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => false,
					],
				],
				[
					'name'    => 'tag_manager_container',
					'options' => [
						'type'         => 'string',
						'show_in_rest' => true,
					],
				],
			],
			'facebook' => [
				[
					'name'    => 'pixel_status',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => false,
					],
				],
				[
					'name'    => 'pixel_id',
					'options' => [
						'type'         => 'string',
						'show_in_rest' => true,
					],
				],
			],

			'social_share' => [
				[
					'name'    => 'share_facebook',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => true,
					],
				],
				[
					'name'    => 'share_twitter',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => true,
					],
				],
				[
					'name'    => 'share_linkedin',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => true,
					],
				],
				[
					'name'    => 'share_pinterest',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => true,
					],
				],
				[
					'name'    => 'share_tumblr',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => true,
					],
				],
				[
					'name'    => 'share_email',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => true,
					],
				],
			],
			'contact' => [
				[
					'name'    => 'contact_phone',
					'options' => [
						'type'         => 'string',
						'show_in_rest' => true,
						'default'      => '',
					],
				],
				[
					'name'    => 'contact_email',
					'options' => [
						'type'         => 'string',
						'show_in_rest' => true,
						'default'      => '',
					],
				],
				[
					'name'    => 'contact_address',
					'options' => [
						'type'         => 'string',
						'show_in_rest' => true,
						'default'      => '',
					],
				],
			],
			'development' => [
				[
					'name'    => 'development_mode',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => false,
					],
				],
				[
					'name'    => 'development_override_settings',
					'options' => [
						'type'         => 'boolean',
						'show_in_rest' => true,
						'default'      => false,
					],
				],
			],
		];

		if ( Helper::woocommerce_activated() ) {
			$settings = wp_parse_args(
				[
					'woocommerce' => [
						[
							'name'    => 'woocommerce_brands',
							'options' => [
								'type'         => 'boolean',
								'show_in_rest' => true,
								'default'      => true,
							],
						],
						[
							'name'    => 'woocommerce_swatches',
							'options' => [
								'type'         => 'boolean',
								'show_in_rest' => true,
								'default'      => true,
							],
						],
						[
							'name'    => 'woocommerce_product_category_operator',
							'options' => [
								'type'         => 'string',
								'show_in_rest' => true,
								'default'      => 'or',
							],
						],
						[
							'name'    => 'woocommerce_shipping_estimate_time',
							'options' => [
								'type'         => 'boolean',
								'show_in_rest' => true,
								'default'      => true,
							],
						],
						[
							'name'    => 'woocommerce_shipping_estimate_time_type',
							'options' => [
								'type'         => 'string',
								'show_in_rest' => true,
								'default'      => 'day',
							],
						],
						[
							'name'    => 'woocommerce_shipping_estimate_time_round',
							'options' => [
								'type'         => 'number',
								'show_in_rest' => true,
								'default'      => 30,
							],
						],
						[
							'name'    => 'woocommerce_free_shipping_calculator',
							'options' => [
								'type'         => 'boolean',
								'show_in_rest' => true,
								'default'      => true,
							],
						],
						[
							'name'    => 'woocommerce_free_shipping_calculator_position',
							'options' => [
								'type'         => 'string',
								'show_in_rest' => true,
								'default'      => 'woocommerce_before_cart_table',
							],
						],
						[
							'name'    => 'woocommerce_free_shipping_calculator_mini_cart',
							'options' => [
								'type'         => 'boolean',
								'show_in_rest' => true,
								'default'      => true,
							],
						],
					],
				],
				$settings
			);
		}
		return $settings;
	}

	/**
	 * Register settings.
	 *
	 * @return void
	 */
	public function register_settings(): void {
		$setting_arr = $this->get_settings();
		foreach ( $setting_arr as  $group => $settings ) {
			foreach ( $settings as $setting ) {
				if ( isset($setting['name'], $setting['options']) ) {
					Setting::register_setting(
						$group,
						$setting['name'],
						$setting['options']
					);
				}
			}
		}
	}
}