• File: Options.php
  • Full Path: /home/dealkatnwc/www/wp-content/plugins/php-code-for-posts-master/Classes/Options.php
  • Date Modified: 02/11/2019 3:55 PM
  • File size: 4.4 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
class PhpCodeForPosts_Options {

	const OPTION_NAME = 'phppc_menu';

	protected $options;
	protected $multisite_options;
	public $blog_details;

	const OPTION_COMPLETEDEACTIVATION = 'complete_deactivation';
	const OPTION_CONTENTFILTER = 'content_filter';
	const OPTION_ENABLERICH = 'enable_richeditor';
	const OPTION_SHORTCODE = 'shortcode';
	const OPTION_SIDEBARFILTER = 'sidebar_filter';
	const OPTION_TABLEVERSION = 'table_version';
	const OPTION_AJAXIBLE = 'ajaxible';
	const OPTION_PARAMETER_EXTRACTION = 'parameter_extraction';
	const OPTION_MULTISITE_SETUP = 'multisite_setup';
	const OPTION_MULTISITE_SNIPPETS = 'multisite_snippets';
	const OPTION_MULTISTIE_SHORTCODE = 'multisite_shortcode';
	const OPTION_MULTISTIE_OWNOPTIONS = 'multisite_own_options';
	const OPTION_CROSSSITE_SNIPPETS = 'crosssite_snippets';
	const OPTION_MENUPOSITION = 'menu_position';
	const VALUE_MENUPOSITION_TOP = 'top';
	const VALUE_MENUPOSITION_SUB = 'sub';



	public function __construct()
	{
		$this->load_options();
		if (is_multisite()) {
			$this->load_multisite_options();
		}
	}

	public function get_blog_details()
	{
		if (is_null($this->blog_details)) {
			$this->blog_details = get_blog_details();
		}
		return $this->blog_details;
	}

	public function get_blog_id()
	{
		$this->get_blog_details();
		return $this->blog_details->blog_id;
	}

	public function snippet_modifications_allowed()
	{
		return (
			!is_multisite() ||
			$this->get_blog_id() == 1 ||
			$this->get_multisite_option('multisite_snippets') == 1
		);
	}

	public function option_modifications_allowed()
	{
		return (
			!is_multisite() ||
			$this->get_blog_id() == 1 ||
			$this->get_multisite_option('multisite_own_options')
		);
	}

	private function get_defaults()
	{
		return array(
			'complete_deactivation' 	=> 0,
			'content_filter' 			=> 1,
			'enable_richeditor' 		=> 1,
			'shortcode'					=> PhpCodeForPosts_Shortcode::DEFAULT_SHORTCODE,
			'sidebar_filter' 			=> 1,
			'table_version' 			=> 0,
			'ajaxible'					=> 1,
			'parameter_extraction'		=> 0,
			'multisite_setup'			=> 0,
			'multisite_snippets' 		=> 0,
			'crosssite_snippets' 		=> 0,
			'multisite_shortcode' 		=> PhpCodeForPosts_Shortcode::DEFAULT_MULTISITE_SHORTCODE,
			'multisite_own_options'		=> 0,
			'menu_position'             => 'top'
		);
	}

	private function get_default( $option_name )
	{
		$options = $this->get_defaults();
		return isset( $options[$option_name] ) ? $options[ $option_name ] : false;
	}

	private function load_options()
	{
		$this->options = get_option( self::OPTION_NAME, $this->get_defaults() );
	}

	private function load_multisite_options()
	{
		$this->multisite_options = get_blog_option( 1, self::OPTION_NAME, $this->get_defaults() );
	}

	public function save_options()
	{
		return update_option( self::OPTION_NAME, $this->options );
	}

	public function get_option( $option_name )
	{
		if (! $this->option_modifications_allowed() && $option_name != 'table_version' ) {
			return $this->get_multisite_option( $option_name );
		}

		if (! $this->has_option( $option_name ) ) {
			return $this->get_default( $option_name ) ;
		}

		return $this->options[$option_name];
	}

	public function get_multisite_option( $option_name )
	{
		if (! $this->multisite_has_option( $option_name ) ) {
			return $this->get_default( $option_name ) ;
		}

		return $this->multisite_options[$option_name];
	}

	public function set_option( $option_name, $option_value )
	{
		$this->options[$option_name] = $option_value;
	}

	public function has_option( $option_name )
	{
		return isset( $this->options[$option_name] );
	}

	public function multisite_has_option( $option_name )
	{
		return isset( $this->multisite_options[$option_name] );
	}

	public function save_posted_options( $post_fields )
	{
		if (! $this->option_modifications_allowed()) {
			return false;
		}
		foreach( $this->get_defaults() as $key => $value ) {
			if( isset( $post_fields[$key] ) ) {
				$this->options[$key] = $post_fields[$key];
			}
		}

		if ($this->options['shortcode'] == $this->options['multisite_shortcode']) {
			$this->options['multisite_shortcode'] = $this->get_default( 'multisite_shortcode' );
		}

		if ($this->options['shortcode'] == $this->options['multisite_shortcode']) {
			$this->options['shortcode'] = $this->get_default( 'shortcode' );
		}
		return $this->save_options();
	}
}