<?php 
/**
 * $Desc$
 *
 * @version    $Id$
 * @package    opalestate
 * @author     Opal  Team <info@wpopal.com >
 * @copyright  Copyright (C) 2019 wpopal.com. All Rights Reserved.
 * @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * @website  http://www.wpopal.com
 * @support  http://www.wpopal.com/support/forum.html
 */
 
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * @class OpalEstate_Shortcodes
 *
 * @version 1.0
 */
class OpalEstate_Shortcodes{

	/**
	 * Static $shortcodes
	 */
	public $shortcodes;

	/**
	 * defined list of shortcode and functions of this for each.
	 */
	public function __construct(){

	 	$this->shortcodes = array(

	 		'search_properties_result'	=> array( 'code' => 'search_properties_result', 'label' => esc_html__( 'Search Properties Result', 'opalestate-pro' ) ),
	 		'search_properties'    		=> array( 'code' => 'search_properties', 'label'    	=> esc_html__( 'Search Properties', 'opalestate-pro' ) ),
	 		'search_properties_v'  		=> array( 'code' => 'search_properties_v', 'label'   	=> esc_html__( 'Search Properties Vertical', 'opalestate-pro' ) ),
	 	
	 		'search_map_properties'		=> array( 'code' => 'search_map_properties', 'label' 	=> esc_html__( 'Search Map Properties', 'opalestate-pro' ) ),
	 		'ajax_map_search'			=> array( 'code' => 'ajax_map_search', 'label' 			=> esc_html__( 'Ajax Search Map Properties', 'opalestate-pro' ) ),
	 		'ajax_map_quick_search'	    => array( 'code' => 'ajax_map_quick_search', 'label' 	=> esc_html__( 'Ajax Search Map Properties', 'opalestate-pro' ) ),
	 		'register_form'	    		=> array( 'code' => 'register_form', 'label' 			=> esc_html__( 'Register User Form', 'opalestate-pro' ) ),
	 		'login_form'	    	    => array( 'code' => 'login_form', 'label' 				=> esc_html__( 'Login Form', 'opalestate-pro' ) ),
	 	);

	 	foreach( $this->shortcodes as $shortcode ){ 
	 		add_shortcode( 'opalestate_'.$shortcode['code'] , array( $this, $shortcode['code'] ) );
	 	}

	 	if( is_admin() ){
	 		add_action( 'media_buttons', array( $this, 'shortcode_button' ) );
	 	}

	}

	public function shortcode_button(){
		
	}

	public function search_properties_result(){
		return opalestate_load_template_path( 'shortcodes/search-properties-result' );
	}



	/**
	 * Display all properties follow user when logined
	 */
	public function agent_property(){
		return opalestate_load_template_path( 'shortcodes/agent-property-listing' );
	}

	/**
	 * Render search property page with horizontal form and map
	 */
	public function search_properties(){
		return opalestate_load_template_path( 'shortcodes/search-properties', array( 'loop' => '') );
	}

	/**
	 * Render search property page with vertical form and map
	 */
	public function search_properties_v(){
		return opalestate_load_template_path( 'shortcodes/search-properties-v', array( 'loop' => '') );
	}

	public function search_map_properties(){
		return opalestate_load_template_path( 'shortcodes/search-map-properties', array( 'loop' => '') );	
	}

	public function ajax_map_search(){ 
		wp_enqueue_script( 'sticky-kit', OPALESTATE_PLUGIN_URL . 'assets/js/jquery.sticky-kit.min.js'  );
		return opalestate_load_template_path( 'shortcodes/ajax-map-search', array( 'loop' => '') );	
	}

	public function ajax_map_quick_search(){ 
		return  opalestate_load_template_path( 'shortcodes/ajax-map-quick-search', array( 'loop' => '') );	
	}

	/* register form show up */
	public function register_form( $atts = array() ) {
		$atts = shortcode_atts( array(
 				'message' 	=> '',
 				'redirect'	=> '',
 				'hide_title'	=> false
			), $atts );
		return opalestate_load_template_path( 'user/register-form', $atts );
	}

	/* sign in show up */
	public function login_form( $atts = array() ) {
		$atts = shortcode_atts( array(
 				'message' 	=> '',
 				'redirect'	=> '',
 				'hide_title'	=> false
			), $atts );
		return opalestate_load_template_path( 'user/login-form', $atts );
	}

}

new OpalEstate_Shortcodes();