Sindbad~EG File Manager

Current Path : /home/xiedrke/entrepot/wp-content/plugins/realpress/app/Helpers/
Upload File :
Current File : /home/xiedrke/entrepot/wp-content/plugins/realpress/app/Helpers/Settings.php

<?php

namespace RealPress\Helpers;

use RealPress\Helpers\Translation\PolyLang;
use RealPress\Helpers\Translation\WPML;

/**
 * Class Settings
 * @package RealPress\Helpers
 */
class Settings {
	/**
	 * Get all options
	 *
	 * @return false|mixed|void|null
	 */
	public static function get_all_settings( $lang = '' ) {

		if ( PolyLang::is_active() ) {
			$current_lang = pll_current_language();
			if ( ! empty( $lang ) ) {
				return self::get_pll_setting( $lang );
			} elseif ( $current_lang && pll_default_language() !== $current_lang ) {

				return self::get_pll_setting( $current_lang );
			} else {
				return self::get_settings();
			}
		}

		if ( WPML::is_active() ) {
			$current_lang = WPML::get_current_language();
			$default_lang = WPML::get_default_language();
			if ( ! empty( $lang ) ) {
				return self::get_wpml_setting( $lang );
			} elseif ( $current_lang && $default_lang !== $current_lang ) {
				return self::get_wpml_setting( $current_lang );
			} else {
				return self::get_settings();
			}
		}

		return self::get_settings();
	}

	/**
	 * @return array|null
	 */
	public static function get_settings() {
		static $settings = null;
		if ( null === $settings ) {
			$settings = get_option( self::get_option_key() );
			if ( empty( $settings ) ) {
				$settings = self::get_default_data();
			} else { // Handle when add key, remove key or change key settings
				//If key exist in config, not in settings, add key into key into settings
				$settings = wp_parse_args(
					$settings,
					self::get_default_data()
				);
				//If key exist in settings, not in config, remove key in settings
				$diff_key = array_diff_key( $settings, self::get_default_data() );
				if ( ! empty( $diff_key ) ) {
					foreach ( $diff_key as $key => $value ) {
						unset( $settings[ $key ] );
					}
				}
			}
		}

		return $settings;
	}

	/**
	 * @param $lang
	 *
	 * @return array
	 */
	public static function get_wpml_setting( $lang = '' ) {
		static $wpml_settings = null;

		if ( empty( $lang ) ) {
			$lang = WPML::get_current_language();
		}

		if ( null === $wpml_settings || ! isset( $wpml_settings[ $lang ] ) ) {
			$wpml_settings[ $lang ] = get_option( self::get_option_key( $lang ) );
			if ( empty( $wpml_settings[ $lang ] ) ) {
				$wpml_settings[ $lang ] = self::get_default_data();
			} else {
				$wpml_settings[ $lang ] = wp_parse_args(
					$wpml_settings[ $lang ],
					self::get_default_data()
				);
				//If key exist in settings, not in config, remove key in settings
				$diff_key = array_diff_key( $wpml_settings[ $lang ], self::get_default_data() );
				if ( ! empty( $diff_key ) ) {
					foreach ( $diff_key as $key => $value ) {
						unset( $wpml_settings[ $lang ][ $key ] );
					}
				}
			}
		}

		return $wpml_settings[ $lang ];
	}

	/**
	 * @return array
	 */
	public static function get_pll_setting( $lang = '' ) {
		static $pll_settings = null;

		if ( empty( $lang ) ) {
			$lang = pll_current_language();
		}


		if ( null === $pll_settings || ! isset( $pll_settings[ $lang ] ) ) {
			$pll_settings[ $lang ] = get_option( self::get_option_key( $lang ) );
			if ( empty( $pll_settings[ $lang ] ) ) {
				$pll_settings[ $lang ] = self::get_default_data();
			} else {
				$pll_settings[ $lang ] = wp_parse_args(
					$pll_settings[ $lang ],
					self::get_default_data()
				);
				//If key exist in settings, not in config, remove key in settings
				$diff_key = array_diff_key( $pll_settings[ $lang ], self::get_default_data() );
				if ( ! empty( $diff_key ) ) {
					foreach ( $diff_key as $key => $value ) {
						unset( $pll_settings[ $lang ][ $key ] );
					}
				}
			}
		}

		return $pll_settings[ $lang ];
	}

	/**
	 * @return array
	 */
	public static function get_default_data() {
		$config = Config::instance()->get( 'realpress-setting' );

		return Config::instance()->get_default_data( $config );
	}

	/**
	 * @param string $group_key
	 *
	 * @return array|false|\stdClass|string
	 */
	public static function get_setting_detail( string $group_key = '', $lang = '' ) {
		global $rp_lang;

		if ( ! empty( $rp_lang ) ) {
			$lang = $rp_lang;
		}

		return self::get_all_settings( $lang )[ $group_key ] ?? '';
	}

	/**
	 * @return string
	 */
	public static function get_property_slug(): string {
		$settings = self::get_all_settings();

		if ( empty( $settings->group->url_slug->fields->property_slug->value ) ) {
			return REALPRESS_PROPERTY_CPT;
		}

		return $settings->group->url_slug->fields->property_slug->value;
	}

	/**
	 * @return array|false|\stdClass|string
	 */
	public static function get_agent_slug() {
		$agent_slug = self::get_setting_detail( 'group:slug:fields:agent' );

		if ( PolyLang::is_active() ) {
			$agent_slug = self::get_setting_detail( 'group:slug:fields:agent', pll_default_language() );
		}

		if ( WPML::is_active() ) {
			$agent_slug = self::get_setting_detail( 'group:slug:fields:agent', WPML::get_default_language() );
		}

		if ( $agent_slug === '' ) {
			$agent_slug = REALPRESS_AGENT_ROLE;
		}

		return $agent_slug;
	}

	/**
	 * @return array|false|\stdClass|string
	 */
	public static function get_advanced_search() {
		$advanced_search = self::get_setting_detail( 'group:advanced_search:fields:advanced_search' );
		unset( $advanced_search['order'] );

		return $advanced_search;
	}

	public static function get_property_per_page() {
		$property_per_page = self::get_setting_detail( 'group:property:fields:property_per_page' );
		if ( empty( $property_per_page ) ) {
			$property_per_page = 10;
		}

		return apply_filters( 'realpress/filter/property_per_page', $property_per_page );
	}

	/**
	 * @return array|false|int|\stdClass|string
	 */
	public static function get_search_suggest_property_number() {
		$property_per_page = self::get_setting_detail( 'group:advanced_search:fields:search_suggest_property_number' );
		if ( empty( $property_per_page ) ) {
			$property_per_page = 10;
		}

		return $property_per_page;
	}

	/**
	 * @return array|false|int|\stdClass|string
	 */
	public static function get_agent_per_page() {
		$agent_per_page = self::get_setting_detail( 'group:agent:fields:agent_per_page' );
		if ( empty( $agent_per_page ) ) {
			$agent_per_page = 10;
		}

		return $agent_per_page;
	}

	/**
	 * @param $key
	 *
	 * @return array|\stdClass|string
	 */
	public static function get_page_id( $key ) {
		$page_id = Settings::get_setting_detail( 'group:page:fields:' . $key );

		if ( empty( $page_id ) ) {
			return '';
		}

		if ( get_post_status( $page_id ) !== 'publish' ) {
			return '';
		}

		return $page_id;
	}

	/**
	 * @param $key
	 * @param $value
	 *
	 * @return void
	 */
	public static function update_field( $key, $value ) {
		$settings = self::get_all_settings();

		if ( ! isset( $settings[ $key ] ) ) {
			return;
		}

		$settings[ $key ] = $value;

		update_option( Settings::get_option_key(), $settings );
	}

	/**
	 * @return array
	 */
	public static function get_all_static_pages() {
		$settings = self::get_all_settings();
		$fields   = Config::instance()->get( 'realpress-setting:group:page:fields' );
		$fields   = array_keys( $fields );

		$page_ids = array();
		foreach ( $fields as $field ) {
			if ( ! empty( $settings[ 'group:page:fields:' . $field ] ) ) {
				$page_ids[] = $settings[ 'group:page:fields:' . $field ];
			}
		}

		return $page_ids;
	}

	public static function get_pagination_type() {
		$pagination_type = self::get_setting_detail( 'group:advanced:fields:pagination_type' );

		//For demo
		if ( isset( $_GET['view'] ) && ( $_GET['view'] === 'loadmore' || $_GET['view'] === 'infinite_scroll' ) ) {
			return $_GET['view'];
		}

		return apply_filters( 'realpress/filter/pagination_type', $pagination_type );
	}

	/**
	 * @return mixed|null
	 */
	public static function get_option_key( $lang = '' ) {
		$option_key = REALPRESS_OPTION_KEY;

		if ( empty( $lang ) ) {
			if ( PolyLang::is_active() ) {
				$option_key .= '_' . pll_current_language();
			}

			if ( WPML::is_active() ) {
				$option_key .= '_' . WPML::get_current_language();
			}
		} else {
			$option_key .= '_' . $lang;
		}

		return apply_filters( 'realpress/filter/option_key', $option_key );
	}
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists