* @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 { /** * Get instance of this object */ public static function get_instance(){ static $_instance; if( !$_instance ){ $_instance = new OpalEstate_Shortcodes(); } return $_instance; } /** * Static $shortcodes */ public $shortcodes; /** * defined list of shortcode and functions of this for each. */ public function __construct() { $this->shortcodes = [ 'search_properties_form' => [ 'code' => 'search_properties_form', 'label' => esc_html__( 'Search Properties Form', 'opalestate-pro' ) ], 'properties' => [ 'code' => 'properties', 'label' => esc_html__( 'Properties', 'opalestate-pro' ) ], 'search_properties_result' => [ 'code' => 'search_properties_result', 'label' => esc_html__( 'Search Properties Result', 'opalestate-pro' ) ], 'search_properties' => [ 'code' => 'search_properties', 'label' => esc_html__( 'Search Properties', 'opalestate-pro' ) ], 'search_split_maps' => [ 'code' => 'search_split_maps', 'label' => esc_html__( 'Search Split Maps', 'opalestate-pro' ) ], 'search_map_properties' => [ 'code' => 'search_map_properties', 'label' => esc_html__( 'Search Map Properties', 'opalestate-pro' ) ], 'ajax_map_search' => [ 'code' => 'ajax_map_search', 'label' => esc_html__( 'Ajax Search Map Properties', 'opalestate-pro' ) ], 'ajax_map_quick_search' => [ 'code' => 'ajax_map_quick_search', 'label' => esc_html__( 'Ajax Search Map Properties', 'opalestate-pro' ) ], 'register_form' => [ 'code' => 'register_form', 'label' => esc_html__( 'Register User Form', 'opalestate-pro' ) ], 'login_form' => [ 'code' => 'login_form', 'label' => esc_html__( 'Login Form', 'opalestate-pro' ) ], ]; foreach ( $this->shortcodes as $shortcode ) { add_shortcode( 'opalestate_' . $shortcode['code'], [ $this, $shortcode['code'] ] ); } if ( is_admin() ) { add_action( 'media_buttons', [ $this, 'shortcode_button' ] ); } } /** * Display all properties follow user when logined */ public function shortcode_button() { } /** * Display all properties follow user when logined */ public function search_properties_form ( $atts=[] ) { $atts = is_array( $atts ) ? $atts : []; $layout = 'collapse-advanced'; $default = array( 'hidden_labels' => true, 'display_more_options' => true, 'nobutton' => false, 'layout' => $layout ); $atts = array_merge( $default, $atts ); return opalestate_load_template_path( 'search-box/'.$layout, $atts ); } /** * Display all properties follow user when logined */ public function properties( $atts=[] ) { $atts = is_array( $atts ) ? $atts : []; $default = array ( 'posts_per_page' => 9, 'show_pagination' => true, 'column' => apply_filters( 'opalestate_properties_column_row', 3 ), 'layout' => 'content-property-grid-v2', 'showmode' => '', 'categories' => null, 'types' => null, 'labels' => null, 'cities' => null, 'statuses' => null, ); $atts = array_merge( $default, $atts ); return opalestate_load_template_path( 'shortcodes/properties', $atts ); } /** * [opalestate_search_properties_result] Display all properties follow user when logined */ public function search_properties_result( $atts=[] ) { $atts = is_array( $atts ) ? $atts : []; $default = array( 'style' => null, 'style_list' => null, 'column' => null, ); $atts = array_merge( $default, $atts ); $html = '
'; $html .= opalestate_load_template_path( 'shortcodes/ajax-map-search-result', $atts ); $html .= '
'; return $html; } /** * 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', [ 'loop' => '' ] ); } /** * Render search property page with vertical form and map */ public function search_split_maps( $atts=[] ) { $atts = is_array( $atts ) ? $atts : []; $default = array( 'search_form' => 'simple-city', 'paged' => 1 ); $atts = array_merge( $default, $atts ); return opalestate_load_template_path( 'shortcodes/search-split-maps', $atts ); } /** * Render search property page with vertical form and map */ public function search_map_properties() { return opalestate_load_template_path( 'shortcodes/search-map-properties', [ 'loop' => '' ] ); } /** * Render search property page with vertical form and map */ 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', [ 'loop' => '' ] ); } /** * Render search property page with vertical form and map */ public function ajax_map_quick_search() { return opalestate_load_template_path( 'shortcodes/ajax-map-quick-search', [ 'loop' => '' ] ); } /* * Register form show up */ public function register_form( $atts = [] ) { $atts = shortcode_atts( [ 'message' => '', 'redirect' => '', 'hide_title' => false, ], $atts ); return opalestate_load_template_path( 'user/register-form', $atts ); } /* * sign in show up */ public function login_form( $atts = [] ) { $atts = shortcode_atts( [ 'message' => '', 'redirect' => '', 'hide_title' => false, ], $atts ); return opalestate_load_template_path( 'user/login-form', $atts ); } } OpalEstate_Shortcodes::get_instance();