<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/**
 * WooSidebars Base Class
 *
 * All functionality pertaining to core functionality of the WooSidebars plugin.
 *
 * @package WordPress
 * @subpackage WooSidebars
 * @author WooThemes
 * @since 1.0.0
 *
 * TABLE OF CONTENTS
 *
 * public $version
 * private $file
 * public $upper_limit
 *
 * private $token
 * private $prefix
 * public $conditions
 *
 * private $plugin_url
 * private $assets_url
 *
 * - __construct()
 * - init()
 * - register_post_type_columns()
 * - register_post_type()
 * - register_custom_columns()
 * - register_custom_column_headings()
 * - meta_box_setup()
 * - meta_box_content()
 * - meta_box_save()
 * - description_meta_box()
 * - enter_title_here()
 * - update_messages()
 * - get_registered_sidebars()
 * - register_custom_sidebars()
 * - init_sidebar_replacement()
 * - replace_sidebars()
 * - find_best_sidebars()
 * - enqueue_styles()
 * - add_post_column_headings()
 * - add_post_column_data()
 * - enable_custom_post_sidebars()
 * - multidimensional_search()
 *
 * - load_localisation()
 * - activation()
 * - register_plugin_version()
 */
class Woo_Sidebars {
	public $version;
	private $file;
	public $upper_limit;

	private $token;
	private $prefix;
	public $conditions;

	private $plugin_url;
	private $assets_url;

	/**
	 * __construct function.
	 *
	 * @access public
	 * @return void
	 */
	public function __construct ( $file ) {
		$this->version = '';
		$this->file = $file;
		$this->upper_limit = intval( apply_filters( 'woosidebars_upper_limit', 200 ) );

		$this->token = 'sidebar';
		$this->prefix = 'woo_sidebar_';

		/* Plugin URL/path settings. */
		$this->plugin_url = str_replace( '/classes', '', plugins_url( plugin_basename( dirname( __FILE__ ) ) ) );
		$this->assets_url = $this->plugin_url . '/assets';

		$this->conditions = new Woo_Conditions();
		$this->conditions->token = $this->token;
	} // End __construct()

	/**
	 * init function.
	 *
	 * @access public
	 * @return void
	 */
	public function init () {
		add_action( 'init', array( $this, 'load_localisation' ) );

		add_action( 'init', array( $this, 'register_post_type' ), 20 );
		add_action( 'admin_menu', array( $this, 'meta_box_setup' ), 20 );
		add_action( 'save_post', array( $this, 'meta_box_save' ) );
		add_filter( 'enter_title_here', array( $this, 'enter_title_here' ) );
		add_filter( 'post_updated_messages', array( $this, 'update_messages' ) );
		add_action( 'widgets_init', array( $this, 'register_custom_sidebars' ) );
		add_action( 'get_header', array( $this, 'init_sidebar_replacement' ) );

		if ( is_admin() ) {
			global $pagenow;

			add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ), 12 );
			if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && esc_attr( $_GET['post_type'] ) == $this->token ) {
				add_filter( 'manage_edit-' . $this->token . '_columns', array( $this, 'register_custom_column_headings' ), 10, 1 );
				add_action( 'manage_posts_custom_column', array( $this, 'register_custom_columns' ), 10, 2 );
			}
		}

		// By default, add post type support for sidebars to the "post" post type.
		add_post_type_support( 'post', 'woosidebars' );

		add_action( 'admin_head', array( $this, 'register_post_type_columns' ) );

		add_action( 'wp_ajax_woosidebars-post-enable', array( $this, 'enable_custom_post_sidebars' ) );

		// Run this on activation.
		register_activation_hook( $this->file, array( $this, 'activation' ) );
	} // End init()

	/**
	 * register_post_type_columns function.
	 *
	 * @access public
	 * @return void
	 */
	public function register_post_type_columns () {
		$post_type = get_post_type();

		if ( $post_type != '' && post_type_supports( $post_type, 'woosidebars' ) ) {
			add_filter( 'manage_edit-' . $post_type . '_columns', array( $this, 'add_post_column_headings' ), 10, 1 );
			add_action( 'manage_posts_custom_column', array( $this, 'add_post_column_data' ), 10, 2 );
			add_action( 'manage_pages_custom_column', array( $this, 'add_post_column_data' ), 10, 2 );
		}
	} // End register_post_type_columns()

	/**
	 * register_post_type function.
	 *
	 * @access public
	 * @return void
	 */
	public function register_post_type () {
		// Allow only users who can adjust the theme to view the WooSidebars admin.
		if ( ! current_user_can( 'edit_theme_options' ) ) return;

		$page = 'themes.php';

		$singular = __( 'Widget Area', 'woosidebars' );
		$plural = __( 'Widget Areas', 'woosidebars' );
		$rewrite = array( 'slug' => 'sidebars' );
		$supports = array( 'title', 'excerpt' );

		if ( $rewrite == '' ) { $rewrite = $this->token; }

		$labels = array(
			'name' => _x( 'Widget Areas', 'post type general name', 'woosidebars' ),
			'singular_name' => _x( 'Widget Area', 'post type singular name', 'woosidebars' ),
			'add_new' => _x( 'Add New', 'Widget Area' ),
			'add_new_item' => sprintf( __( 'Add New %s', 'woosidebars' ), $singular ),
			'edit_item' => sprintf( __( 'Edit %s', 'woosidebars' ), $singular ),
			'new_item' => sprintf( __( 'New %s', 'woosidebars' ), $singular ),
			'all_items' => sprintf( __( 'Widget Areas', 'woosidebars' ), $plural ),
			'view_item' => sprintf( __( 'View %s', 'woosidebars' ), $singular ),
			'search_items' => sprintf( __( 'Search %a', 'woosidebars' ), $plural ),
			'not_found' =>  sprintf( __( 'No %s Found', 'woosidebars' ), $plural ),
			'not_found_in_trash' => sprintf( __( 'No %s Found In Trash', 'woosidebars' ), $plural ),
			'parent_item_colon' => '',
			'menu_name' => $plural

		);
		$args = array(
			'labels' => $labels,
			'public' => false,
			'publicly_queryable' => true,
			'show_ui' => true,
			'show_in_nav_menus' => false,
			'show_in_admin_bar' => false,
			'show_in_menu' => $page,
			'query_var' => true,
			'rewrite' => $rewrite,
			'capability_type' => 'post',
			'has_archive' => 'sidebars',
			'hierarchical' => false,
			'menu_position' => null,
			'supports' => $supports
		);
		register_post_type( $this->token, $args );
	} // End register_post_type()

	/**
	 * register_custom_columns function.
	 *
	 * @access public
	 * @param string $column_name
	 * @param int $id
	 * @return void
	 */
	public function register_custom_columns ( $column_name, $id ) {
		global $wpdb, $post;

		$meta = get_post_custom( $id );
		$sidebars = $this->get_registered_sidebars();

		$this->conditions->setup_default_conditions_reference();

		switch ( $column_name ) {

			case 'sidebar_to_replace':
				$value = '';

				if ( isset( $meta['_sidebar_to_replace'] ) && ( $meta['_sidebar_to_replace'][0] != '' ) ) {
					$value = $meta['_sidebar_to_replace'][0];

					if ( isset( $sidebars[$value] ) ) {
						$value = $sidebars[$value]['name'];
					} else {
						$value .= '<br /><strong>' . __( '(Not in use by current theme)', 'woosidebars' ) . '</strong>';
					}
				}

				echo $value;
			break;

			case 'condition':
				$value = '';

				if ( isset( $meta['_condition'] ) && ( $meta['_condition'][0] != '' ) ) {
					foreach ( $meta['_condition'] as $k => $v ) {
						$value .= $this->multidimensional_search( $v, $this->conditions->conditions_reference ) . '<br />' . "\n";
					}
				}

				echo $value;
			break;

			default:
			break;

		}
	} // End register_custom_columns()

	/**
	 * register_custom_column_headings function.
	 *
	 * @access public
	 * @param array $defaults
	 * @return void
	 */
	public function register_custom_column_headings ( $defaults ) {
		$this->conditions->setup_default_conditions_reference();

		$new_columns = array( 'sidebar_to_replace' => __( 'Sidebar To Replace', 'woosidebars' ), 'condition' => __( 'Condition(s)', 'woosidebars' ) );

		$last_item = '';

		if ( isset( $defaults['date'] ) ) { unset( $defaults['date'] ); }

		if ( count( $defaults ) > 2 ) {
			$last_item = array_slice( $defaults, -1 );

			array_pop( $defaults );
		}
		$defaults = array_merge( $defaults, $new_columns );

		if ( $last_item != '' ) {
			foreach ( $last_item as $k => $v ) {
				$defaults[$k] = $v;
				break;
			}
		}

		return $defaults;
	} // End register_custom_column_headings()

	/**
	 * meta_box_setup function.
	 *
	 * @access public
	 * @return void
	 */
	public function meta_box_setup () {
		add_meta_box( 'sidebar-to-replace', __( 'Sidebar To Replace', 'woosidebars' ), array( $this, 'meta_box_content' ), $this->token, 'side', 'low' );

		// Remove "Custom Settings" meta box.
		remove_meta_box( 'woothemes-settings', 'sidebar', 'normal' );

		// Customise the "Excerpt" meta box for the sidebars.
		remove_meta_box( 'postexcerpt', $this->token, 'normal' );
		add_meta_box( 'sidebar-description', __( 'Description', 'woosidebars' ), array( $this, 'description_meta_box' ), $this->token, 'normal', 'core' );
	} // End meta_box_setup()

	/**
	 * meta_box_content function.
	 *
	 * @access public
	 * @return void
	 */
	public function meta_box_content () {
		global $post_id;

		$sidebars = $this->get_registered_sidebars();

		$selected_sidebar = get_post_meta( $post_id, '_sidebar_to_replace', true );

		$html = '';

		$html .= '<input type="hidden" name="woo_' . $this->token . '_noonce" id="woo_' . $this->token . '_noonce" value="' . wp_create_nonce( plugin_basename(__FILE__) ) . '" />';

		if ( count( $sidebars ) > 0 ) {
			$html .= '<select name="sidebar_to_replace" class="widefat">' . "\n";
				foreach ( $sidebars as $k => $v ) {
					$html .= '<option value="' . $v['id'] . '"' . selected( $selected_sidebar, $v['id'], false ) . '>' . $v['name'] . '</option>' . "\n";
				}
			$html .= '</select>' . "\n";
		} else {
			$html .= '<p>' . __( 'No sidebars are available with this theme.', 'woosidebars' ) . '</p>';
		}

		echo $html;

	} // End meta_box_content()

	/**
	 * meta_box_save function.
	 *
	 * @access public
	 * @param int $post_id
	 * @return void
	 */
	public function meta_box_save ( $post_id ) {
		global $post, $messages;

		// Verify
		if ( ( get_post_type() != $this->token ) || ! wp_verify_nonce( $_POST['woo_' . $this->token . '_noonce'], plugin_basename( __FILE__ ) ) ) {
			return $post_id;
		}

		if ( 'page' == $_POST['post_type'] ) {
			if ( ! current_user_can( 'edit_page', $post_id ) ) {
				return $post_id;
			}
		} else {
			if ( ! current_user_can( 'edit_post', $post_id ) ) {
				return $post_id;
			}
		}

		$fields = array( 'sidebar_to_replace' );

		foreach ( $fields as $f ) {

			${$f} = strip_tags(trim($_POST[$f]));

			if ( get_post_meta( $post_id, '_' . $f ) == '' ) {
				add_post_meta( $post_id, '_' . $f, ${$f}, true );
			} elseif( ${$f} != get_post_meta( $post_id, '_' . $f, true ) ) {
				update_post_meta( $post_id, '_' . $f, ${$f} );
			} elseif ( ${$f} == '' ) {
				delete_post_meta( $post_id, '_' . $f, get_post_meta( $post_id, '_' . $f, true ) );
			}
		}
	} // End meta_box_save()

	/**
	 * description_meta_box function.
	 *
	 * @param object $post
	 */
	public function description_meta_box ( $post ) {
		?>
		<label class="screen-reader-text" for="excerpt"><?php _e( 'Description', 'woosidebars' ); ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt; // textarea_escaped ?></textarea>
		<p><?php printf( __( 'Add an optional description, to be displayed when adding widgets to this widget area on the %sWidgets%s screen.', 'woosidebars' ), '<a href="' . esc_url( admin_url( 'widgets.php' ) ) . '">', '</a>' ); ?></p>
		<?php
	} // End description_meta_box()

	/**
	 * enter_title_here function.
	 *
	 * @access public
	 * @param string $title
	 * @return void
	 */
	public function enter_title_here ( $title ) {
		if ( get_post_type() == $this->token ) {
			$title = __( 'Enter widget area name here', 'woosidebars' );
		}
		return $title;
	} // End enter_title_here()

	/**
	 * update_messages function.
	 *
	 * @access public
	 * @param array $messages
	 * @return void
	 */
	public function update_messages ( $messages ) {
		if ( get_post_type() != $this->token ) {
			return $messages;
		}

		$messages[$this->token][1] = __( 'Widget Area updated.', 'woosidebars' );

		return $messages;
	} // End update_messages()

	/**
	 * get_registered_sidebars function.
	 *
	 * @access public
	 * @return void
	 */
	public function get_registered_sidebars () {
		global $wp_registered_sidebars;

		$sidebars = array();
		$to_ignore = array();

		$custom_sidebars = get_posts( array( 'post_type' => 'sidebar', 'numberposts' => intval( $this->upper_limit ), 'suppress_filters' => 'false' ) );
		if ( ! is_wp_error( $custom_sidebars ) && count( $custom_sidebars ) > 0 ) {
			foreach ( $custom_sidebars as $k => $v ) {
				$to_ignore[] = $v->post_name;
			}
		}

		if ( is_array( $wp_registered_sidebars ) && ( count( $wp_registered_sidebars ) > 0 ) ) {
			foreach ( $wp_registered_sidebars as $k => $v ) {
				if ( ! stristr( $v['id'], $this->prefix ) && ! stristr( $v['id'], 'woo_sbm_' ) && ! in_array( $v['id'], $to_ignore ) ) {
					$sidebars[$k] = $v;
				}
			}
		}

		return $sidebars;
	} // End get_registered_sidebars()

	/**
	 * register_custom_sidebars function.
	 *
	 * @access public
	 * @return void
	 */
	public function register_custom_sidebars () {
		$sidebars = get_posts( array( 'post_type' => 'sidebar', 'posts_per_page' => intval( $this->upper_limit ), 'suppress_filters' => 'false' ) );

		if ( count( $sidebars ) > 0 ) {
			foreach ( $sidebars as $k => $v ) {
				$args = apply_filters( 'woosidebars_sidebar_args', array(
					'name'        => $v->post_title,
					'id'          => $v->post_name,
					'description' => $v->post_excerpt,
				), $v, $this );
				register_sidebar( $args );
			}
		}
	} // End register_custom_sidebars()

	/**
	 * init_sidebar_replacement function.
	 *
	 * @access public
	 * @return void
	 */
	public function init_sidebar_replacement () {
		add_filter( 'sidebars_widgets', array( $this, 'replace_sidebars' ) );
	} // End init_sidebar_replacement()

	/**
	 * replace_sidebars function.
	 *
	 * @access public
	 * @param array $sidebars_widgets
	 * @return void
	 */
	public function replace_sidebars ( $sidebars_widgets ) {
		if ( is_admin() ) {
	 		return $sidebars_widgets;
	 	}

		// Determine the conditions to construct the query.
		$conditions = $this->conditions->conditions;

		if ( ! isset( $this->conditions->conditions ) || count( $this->conditions->conditions ) <= 0 ) {
			return $sidebars_widgets;
		}

	 	global $woo_custom_sidebar_data;

	 	if ( ! isset( $woo_custom_sidebar_data ) ) {

		 	$conditions_str = join( ', ', $conditions );

		 	$args = array(
		 		'post_type' => $this->token,
		 		'posts_per_page' => intval( $this->upper_limit ),
		 		'suppress_filters' => true
		 	);

		 	$meta_query = array(
		 					'key' => '_sidebar_to_replace',
		 					'compare' => '!=',
		 					'value' => ''
		 					);

		 	$args['meta_query'][] = $meta_query;

		 	$meta_query = array(
		 					'key' => '_condition',
		 					'compare' => 'IN',
		 					'value' => $conditions
		 					);

		 	$args['meta_query'][] = $meta_query;

		 	$sidebars = get_posts( $args );

		 	if ( count( $sidebars ) > 0 ) {
		 		foreach ( $sidebars as $k => $v ) {

					if ( defined( 'ICL_LANGUAGE_CODE' ) ) {
						// get the post language
						$wpml_element = apply_filters( 'wpml_element_language_code', ICL_LANGUAGE_CODE, array( 'element_id' => intval( $v->ID ), 'element_type' => 'post_sidebar' ) );
						// check if the current language matches the language of the sidebar
						if ( $wpml_element != ICL_LANGUAGE_CODE ) {
								continue;
						}
					}

		 			$to_replace = get_post_meta( $v->ID, '_sidebar_to_replace', true );
		 			$sidebars[$k]->to_replace = $to_replace;

		 			$conditions = get_post_meta( $v->ID, '_condition', false );

		 			$sidebars[$k]->conditions = array();

		 			// Remove any irrelevant conditions from the array.
		 			if ( is_array( $conditions ) ) {
		 				foreach ( $conditions as $i => $j ) {
		 					if ( in_array( $j, $this->conditions->conditions ) ) {
		 						$sidebars[$k]->conditions[] = $j;
		 					}
		 				}
		 			}

		 		}
		 	}

		 	$woo_custom_sidebar_data = $sidebars;
	 	}

		// Make sure only the most appropriate sidebars are kept.
		// $woo_custom_sidebar_data = $this->remove_unwanted_sidebars( $woo_custom_sidebar_data );
		$woo_custom_sidebar_data = $this->find_best_sidebars( $woo_custom_sidebar_data );

	 	if ( count( $woo_custom_sidebar_data ) > 0 ) {
	 		foreach ( $woo_custom_sidebar_data as $k => $v ) {
	 			$sidebar_id = $v->post_name;
				// $sidebar_id = $this->prefix . $v->ID;
	 			if ( isset( $sidebars_widgets[$sidebar_id] ) && isset( $v->to_replace ) && $v->to_replace != '' ) {
				 	$widgets = $sidebars_widgets[$sidebar_id];
					unset( $sidebars_widgets[$sidebar_id] );
					$sidebars_widgets[$v->to_replace] = $widgets;
				}
	 		}
	 	}

		return $sidebars_widgets;
	} // End replace_sidebars()

	/**
	 * find_best_sidebars function.
	 *
	 * @access public
	 * @param array $sidebars
	 * @return array $sorted_sidebars
	 */
	public function find_best_sidebars ( $sidebars ) {
		$sorted_sidebars = array();

		if ( ! isset( $this->conditions->conditions ) || count( $this->conditions->conditions ) <= 0 ) {
			return $sidebars;
		}

		// Keep track of each sidebar we'd like to replace widgets for.
		foreach ( $sidebars as $k => $v ) {
			if ( isset( $v->to_replace ) && ( $v->to_replace != '' ) && ! isset( $sorted_sidebars[$v->to_replace] ) ) {
				$sorted_sidebars[$v->to_replace] = '';
			}
		}

		foreach ( $sidebars as $k => $v ) {
			if ( isset( $sorted_sidebars[$v->to_replace] ) && ( $sorted_sidebars[$v->to_replace] == '' ) ) {
				$sorted_sidebars[$v->to_replace] = $v;
			} else {
				continue;
			}
		}

		return $sorted_sidebars;
	} // End find_best_sidebars()

	/**
	 * enqueue_styles function.
	 *
	 * @access public
	 * @return void
	 */
	public function enqueue_styles () {
		global $pagenow;

		if ( in_array( $pagenow, array( 'edit.php', 'post.php', 'post-new.php' ) ) ) {
			if ( get_post_type() != $this->token ) { return; }
			wp_enqueue_style( 'jquery-ui-tabs' );

			wp_register_style( $this->token . '-admin', $this->assets_url . '/css/admin.css', array(), '1.0.0' );
			wp_enqueue_style( $this->token . '-admin' );

			wp_dequeue_style( 'jquery-ui-datepicker' );

			if ( class_exists( 'WPSEO_Metabox' ) ) {
				// Dequeue unused WordPress SEO CSS files.
				wp_dequeue_style( 'edit-page' );
				wp_dequeue_style( 'metabox-tabs' );

				$color = get_user_meta( get_current_user_id(), 'admin_color', true );
				if ( '' == $color ) $color = 'fresh';

				wp_dequeue_style( 'metabox-' . $color );
			}
		}

		if ( in_array( $pagenow, array( 'edit.php' ) ) ) {
			wp_register_style( $this->token . '-admin-posts', $this->assets_url . '/css/admin-posts.css', array(), '1.0.0' );
			wp_enqueue_style( $this->token . '-admin-posts' );
		}
	} // End enqueue_styles()

	/**
	 * add_post_column_headings function.
	 *
	 * @access public
	 * @param array $defaults
	 * @return array $new_columns
	 */
	public function add_post_column_headings ( $defaults ) {
		$defaults['woosidebars_enable'] = __( 'Custom Sidebars', 'woosidebars' );
		return $defaults;
	} // End add_post_column_headings()

	/**
	 * add_post_column_data function.
	 *
	 * @access public
	 * @param string $column_name
	 * @param int $id
	 * @return void
	 */
	public function add_post_column_data ( $column_name, $id ) {
		global $wpdb, $post;
		$meta = get_post_custom( $id );

		switch ( $column_name ) {
			case 'woosidebars_enable':
				$image = 'success-off';
				$value = '';
				$class = 'custom-sidebars-disabled';

				if ( isset( $meta['_enable_sidebar'] ) && ( $meta['_enable_sidebar'][0] != '' ) && ( $meta['_enable_sidebar'][0] == 'yes' ) ) {
					$image = 'success';
					$class = 'custom-sidebars-enabled';
				}

				$url = wp_nonce_url( admin_url( 'admin-ajax.php?action=woosidebars-post-enable&post_id=' . $post->ID ), 'woosidebars-post-enable' );
				$value = '<span class="' . esc_attr( $class ) . '"><a href="' . esc_url( $url ) . '"><img src="' . esc_url( $this->assets_url . '/images/' . $image . '.png' ) . '" /></a></span>';

				echo $value;
			break;

			default:
			break;
		}
	} // End add_post_column_data()

	/**
	 * enable_custom_post_sidebars function.
	 *
	 * @access public
	 * @return void
	 */
	public function enable_custom_post_sidebars () {
		if( ! is_admin() ) die;
		if( ! current_user_can( 'edit_posts' ) ) wp_die( __( 'You do not have sufficient permissions to access this page.', 'woosidebars' ) );
		if( ! check_admin_referer( 'woosidebars-post-enable' ) ) wp_die( __( 'You have taken too long. Please go back and retry.', 'woosidebars' ) );

		$post_id = isset( $_GET['post_id'] ) && (int)$_GET['post_id'] ? (int)$_GET['post_id'] : '';

		if( ! $post_id ) die;

		$post = get_post( $post_id );
		if( ! $post ) die;

		$meta = get_post_meta( $post->ID, '_enable_sidebar', true );

		if ( $meta == 'yes' ) {
			update_post_meta($post->ID, '_enable_sidebar', 'no' );
		} else {
			update_post_meta($post->ID, '_enable_sidebar', 'yes' );
		}

		$sendback = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'ids' ), wp_get_referer() );
		wp_safe_redirect( esc_url( $sendback ) );
	} // End enable_custom_post_sidebars()

	/**
	 * multidimensional_search function.
	 *
	 * @access public
	 * @param string $needle
	 * @param array $haystack
	 * @return string $m
	 */
	public function multidimensional_search ( $needle, $haystack ) {
		if (empty( $needle ) || empty( $haystack ) ) {
            return false;
        }

        foreach ( $haystack as $key => $value ) {
            $exists = 0;
        	foreach ( (array)$needle as $nkey => $nvalue) {
                if ( ! empty( $value[$nvalue] ) && is_array( $value[$nvalue] ) ) {
                    return $value[$nvalue]['label'];
                }
            }
        }

        return false;
	} // End multidimensional_search()

	/**
	 * load_localisation function.
	 *
	 * @access public
	 * @since 1.0.0
	 * @return void
	 */
	public function load_localisation () {
		$lang_dir = trailingslashit( str_replace( 'classes', 'lang', plugin_basename( dirname(__FILE__) ) ) );
		load_plugin_textdomain( 'woosidebars', false, $lang_dir );
	} // End load_localisation()

	/**
	 * activation function.
	 *
	 * @access public
	 * @since 1.0.0
	 * @return void
	 */
	public function activation () {
		$this->register_plugin_version();
	} // End activation()

	/**
	 * register_plugin_version function.
	 *
	 * @access public
	 * @since 1.0.0
	 * @return void
	 */
	public function register_plugin_version () {
		if ( $this->version != '' ) {
			update_option( 'woosidebars' . '-version', $this->version );
		}
	} // End register_plugin_version()
} // End Class
?>
