HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/posscale/public_html/WP-POS/wp-content/themes/angle/functions/wpzoom/components/option.php
<?php

/**
 * WPZOOM Framework Options Manager
 *
 * @category WPZOOM
 */
class option {
	public static $options = array();
	public static $evoOptions;

	/**
	 * Option prefix.
	 *
	 * @since 1.7.1. Changed access from 'private' to 'public'
	 *
	 * @var string
	 */
	public static $prefix = 'wpzoom_';

	public static function init() {
		self::loadOptions();
	}

	public static function set( $name, $value ) {

		// Update customizer option if exists
		if ( self::is_on_customizer( $name ) ) {
			set_theme_mod( $name, $value );
		}

		update_option( self::$prefix . $name, $value );

		self::$options[ $name ] = $value;

		return $value;
	}

	public static function get( $name, $echo = false ) {
		$result = false;

		// Check option from customizer
		if ( self::is_on_customizer( $name ) ) {
			$default = self::get_customizer_default_value( $name );

			// If the modification name does not exist, then the $default will be passed
			$result = get_theme_mod( $name, $default );
		} elseif ( isset( self::$options[ $name ] ) ) {
			$result = self::$options[ $name ];
		}

		if ( $result === false ) {
			$result = get_option( self::$prefix . $name );
		}

		if ( $result === false ) {
			return;
		}

		if ( ! $echo ) {
			return $result;
		}

		echo $result;
	}

	public static function delete( $name ) {
		$args = func_get_args();
		$num  = count( $args );

		if ( $num == 1 ) {
			return ( delete_option( self::$prefix . $args[0] ) ? true : false );
		} elseif ( $num > 1 ) {
			foreach ( $args as $option ) {
				if ( ! delete_option( self::$prefix . $option ) ) {
					return false;
				}
			}
			return true;
		}
		return false;
	}

	public static function is_on( $name ) {
		return ( self::get( $name ) === 'on' || self::get( $name ) === true || self::get( $name ) === '1' );
	}

	/**
	 * Check if option is on Customizer.
	 *
	 * @since 1.7.0.
	 *
	 * @return bool
	 */
	public static function is_on_customizer( $name ) {
		$default = self::get_customizer_default_value( $name );

		return ( get_theme_mod( $name, $default ) !== false );
	}

	/**
	 * Get default value by option name from customizer data.
	 *
	 * @since 1.7.3.
	 *
	 * @param string $name Option name
	 *
	 * @return bool
	 */
	public static function get_customizer_default_value( $name ) {
		$customizer_data = apply_filters( 'wpzoom_customizer_data', array() );

		foreach ( $customizer_data as $data ) {
			foreach ( $data['options'] as $id => $option ) {
				if ( $id === $name && isset( $option['setting']['default'] ) ) {
					$value = $option['setting']['default'];

					if ( is_bool( $value ) && $value === false ) {
						$value = '0';
					}

					return $value;
				}
			}
		}

		return false;
	}

	private static function loadOptions() {
		self::$options = self::getOptions();
	}

	public static function getOptions() {
		self::$evoOptions = self::getOptionsArray();

		$rOptions = self::$evoOptions;

		unset( $rOptions['menu'] );

		foreach ( $rOptions as $column ) {
			foreach ( $column as $row ) {
				if ( isset( $row['id'] ) ) {
					$id = $row['id'];
				} else {
					continue;
				}

				$ignored = array( 'misc_export', 'misc_export_widgets', 'misc_debug' );
				if ( in_array( $id, $ignored ) ) {
					continue;
				}

				$fetched_option = self::is_on_customizer( $id ) ? get_theme_mod( $id ) : get_option( self::$prefix . $id );

				if ( $fetched_option === false ) {
					$globalOptions[ $id ] = isset( $row['std'] ) ? $row['std'] : '';
					update_option( self::$prefix . $id, $globalOptions[ $id ] );
				} else {
					$globalOptions[ $id ] = $fetched_option;
				}
			}
		}

		return $globalOptions;
	}

	public static function getJsOptions() {
		$rOptions = self::getOptionsArray();
		$options  = array();

		foreach ( $rOptions as $column ) {
			foreach ( $column as $row ) {
				if ( ! isset( $row['js'] ) || ! isset( $row['id'] ) ) {
					continue;
				}

				$id    = $row['id'];
				$value = self::get( $id );

				if ( $value === false ) {
					$options[ $id ] = isset( $row['std'] ) ? $row['std'] : '';
				} else {
					$options[ $id ] = $value;
				}

				if ( $options[ $id ] === 'on' ) {
					$options[ $id ] = true;
				}

				if ( $options[ $id ] === 'off' ) {
					$options[ $id ] = false;
				}
			}
		}

		return $options;
	}

	public static function getCustomizerJsOptions() {
		$customizer_data = apply_filters( 'wpzoom_customizer_data', array() );
		$options         = array();

		foreach ( $customizer_data as $data ) {
			foreach ( $data['options'] as $id => $option ) {
				$value = self::get( $id );

				if ( is_null( $value ) ) {
					continue;
				} else {
					$options[ $id ] = $value;
				}

				if ( $options[ $id ] === 'on' ) {
					$options[ $id ] = true;
				}

				if ( $options[ $id ] === 'off' ) {
					$options[ $id ] = false;
				}
			}
		}

		return $options;
	}

	public static function getCustomizerJsOptionsDefaults() {
		$customizer_data = apply_filters( 'wpzoom_customizer_data', array() );
		$options         = array();

		foreach ( $customizer_data as $data ) {
			foreach ( $data['options'] as $id => $option ) {
				$options[ $id ] = isset( $option['setting'] ) && isset( $option['setting']['default'] ) ? $option['setting']['default'] : null;

				if ( $options[ $id ] === 'on' ) {
					$options[ $id ] = true;
				}

				if ( $options[ $id ] === 'off' ) {
					$options[ $id ] = false;
				}
			}
		}

		return $options;
	}

	public static function setupOptions( $xoptions, $decode = false ) {
		if ( $decode ) {
			$xoptions = unserialize( stripslashes( base64_decode( $xoptions ) ) );
		}

		self::$evoOptions = self::getOptionsArray();

		foreach ( self::$evoOptions as $name => $options ) {
			$name = explode( 'id', $name );
			if ( isset( $name[1] ) && $name[1] != '' ) {
				$rOptions[] = $options;
			}
		}

		foreach ( $rOptions as $column ) {
			foreach ( $column as $row ) {
				$ignored = array( 'preheader', 'startsub', 'endsub' );
				if ( in_array( $row['type'], $ignored ) ) {
					continue;
				}

				if ( isset( $row['id'] ) ) {
					$id = $row['id'];

					self::set( $id, $xoptions[ $id ] );
				}
			}
		}
	}

	public static function getOptionsArray() {
		$option_files = apply_filters(
			'zoom_option_files',
			array(
				sprintf( '%s/theme/options.php', FUNC_INC ), // for backwards compatibility
				sprintf( '%s/options.php', FUNC_INC ),
				sprintf( '%s/options.php', WPZOOM_INC ),
			)
		);

		/**
		 * Check if supplied files exists and load options definitions from them.
		 */
		$options = array();
		foreach ( $option_files as $file ) {
			if ( ! file_exists( $file ) ) {
				continue;
			}
			$options[] = include $file;
		}

		$merged = call_user_func_array( 'array_merge_recursive', $options );

		/*
		 * Move down framework section.
		 */
		$opt = $merged['menu']['framework'];
		unset( $merged['menu']['framework'] );
		$merged['menu']['framework'] = $opt;

		/*
		 * Move down Import/Export section.
		 */
		$opt = $merged['menu']['import-export'];
		unset( $merged['menu']['import-export'] );
		$merged['menu']['import-export'] = $opt;

		/**
		 * Merge options and return an array of options.
		 */
		return $merged;
	}

	public static function reset() {
		global $wpdb;

		self::$evoOptions = self::getOptionsArray();

		foreach ( self::$evoOptions as $name => $options ) {
			
			$name = explode( 'id', $name );

			if ( ( isset( $name[1] ) && $name[1] != '' ) || 
				 ( isset( $name[0] ) && 'portfolio' == $name[0] ) )
			{
				$rOptions[] = $options;
			}
		}

		foreach ( $rOptions as $column ) {
			foreach ( $column as $row ) {
				$ignored = array( 'preheader', 'startsub', 'endsub' );
				if ( in_array( $row['type'], $ignored ) ) {
					continue;
				}

				if ( isset( $row['id'] ) ) {
					$id = $row['id'];

					self::delete( $id );
				}
			}
		}

		if ( isset( $_GET['page'] ) ) {
			$send = $_GET['page'];
			header( "Location: admin.php?page=$send" );
		}
	}

	public static function getWidgetOptions() {
			global $wpdb;

			$q = "SELECT * FROM $wpdb->options WHERE option_name LIKE 'widget_%'";
			$q = $wpdb->get_results( $q );

			$widgetOptions = array();

		foreach ( $q as $option ) {
			$widgetOptions[ $option->option_name ] = maybe_unserialize( $option->option_value );
		}

			// Get sidebar widgets locations
			$widgetOptions['sidebars_widgets'] = get_option( 'sidebars_widgets' );

			return $widgetOptions;
	}

	public static function setupWidgetOptions( $options, $decode = false ) {
		if ( $decode ) {
			$options = unserialize( stripslashes( base64_decode( $options ) ) );
		}

		if ( ! is_array( $options ) ) {
			return false;
		}

		$builder_widgets = array();

		$sidebars_widgets = wp_get_sidebars_widgets();
		if ( is_array( $sidebars_widgets ) && ! empty( $sidebars_widgets ) ) {
			foreach ( $sidebars_widgets as $sidebar_id => $widgets ) {
				if ( preg_match( '/^_wpzlb-page-[0-9]+-widgets$/i', $sidebar_id ) ) {
					foreach ( $widgets as $widget_id ) {
							$builder_widgets[ preg_replace( '/-[0-9]+$/', '', $widget_id ) ][] = intval( preg_replace( '/^.+-([0-9]+)$/', '$1', $widget_id ) );
					}
				}
			}
		}

		foreach ( $options as $id => $option ) {
			$current_value = get_option( $id );
			$keep          = array();
			$option_value  = '';

			if ( $id == 'sidebars_widgets' ) {
				foreach ( $current_value as $sidebar_id => $widgets ) {
					if ( preg_match( '/^_wpzlb-page-[0-9]+-widgets$/i', $sidebar_id ) ) {
						$keep[ $sidebar_id ] = $widgets;
					}
				}
			} else {
				$widget_id = preg_replace( '/^widget_/i', '', $id );

				if ( isset( $builder_widgets[ $widget_id ] ) ) {
					foreach ( $current_value as $widget_num => $widget_settings ) {
						if ( in_array( $widget_num, $builder_widgets[ $widget_id ] ) ) {
							$keep[ $widget_num ] = $widget_settings;
						}
					}
				}
			}

			if ( is_array( $option ) ) {
				$option_value = $keep + $option;
			} else {
				$option_value = $option;
			}

			update_option( $id, $option_value );
		}
	}

	public static function export_options() {
		return base64_encode( serialize( self::getOptions() ) );
	}

	public static function export_widgets() {
		return base64_encode( serialize( self::getWidgetOptions() ) );
	}

	public static function get_empty() {
		return '';
	}
}