Viewing File: /home/maglabs/exclusive/wp-content/plugins/g5-ere/inc/elementor.class.php
<?php
// Do not allow directly accessing this file.
if (!defined('ABSPATH')) {
exit('Direct script access denied.');
}
if (!class_exists('G5ERE_Elementor')) {
class G5ERE_Elementor
{
private static $_instance;
public static function getInstance()
{
if (self::$_instance == NULL) {
self::$_instance = new self();
}
return self::$_instance;
}
public function init()
{
add_filter('ube_get_element_configs', array($this, 'change_ube_get_element_configs'));
add_filter('ube_autoload_file_dir', array($this, 'change_ube_autoload_file_dir'), 10, 2);
add_action('init', array($this, 'register_scripts'));
add_filter('ube_element_listing_query_args', array($this, 'set_query_args'), 10, 2);
add_filter('ube_element_listing_query_args',array($this,'set_query_agent_args'),10,2);
add_filter( 'ube_element_listing_query_args', array( $this, 'set_query_agency_args' ), 10, 2 );
}
public function register_scripts()
{
wp_register_script(G5ERE()->assets_handle('properties'), G5ERE()->asset_url('assets/js/elements/properties.min.js'), array(), G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('properties-carousel'), G5ERE()->asset_url('assets/js/elements/properties-carousel.min.js'), array(), G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('sc-properties-slider'), G5ERE()->asset_url('assets/shortcode-js/properties-slider.min.js'), array(), G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('properties-slider'), G5ERE()->asset_url('assets/js/elements/properties-slider.min.js'), array(G5ERE()->assets_handle('sc-properties-slider')), G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('agent'),G5ERE()->asset_url('assets/js/elements/agent.min.js'),array(),G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('agent-slider'),G5ERE()->asset_url('assets/js/elements/agent-slider.min.js'),array(),G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('agent-singular'),G5ERE()->asset_url('assets/js/elements/agent-singular.min.js'),array(),G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('agency'),G5ERE()->asset_url('assets/js/elements/agency.min.js'),array(),G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('agency-slider'),G5ERE()->asset_url('assets/js/elements/agency-slider.min.js'),array(),G5ERE()->plugin_ver());
wp_register_script(G5ERE()->assets_handle('advanced-properties-locations'),G5ERE()->asset_url('assets/js/elements/advanced-properties-locations.min.js'),array(),G5ERE()->plugin_ver());
}
private function get_elements()
{
return apply_filters('g5ere_elements', array(
'Properties' => esc_html__('Properties', 'g5-ere'),
'Properties_Carousel' => esc_html__('Properties Carousel', 'g5-ere'),
'Properties_Locations' => esc_html__('Properties Locations', 'g5-ere'),
'Properties_Slider' => esc_html__('Properties Slider', 'g5-ere'),
'Property_Search_Form' => esc_html__('Property Search Form', 'g5-ere'),
'Agent' => esc_html__('Agent', 'g5-ere'),
'Agent_Search' => esc_html__('Agent Search', 'g5-ere'),
'Agent_Singular' => esc_html__('Agent Singular', 'g5-ere'),
'Agency_Search' => esc_html__('Agency Search', 'g5-ere'),
'Agency' => esc_html__('Agency', 'g5-ere'),
'Agent_Slider' => esc_html__('Agent Slider', 'g5-ere'),
'Agency_Slider' => esc_html__('Agency Slider', 'g5-ere'),
'Advanced_Properties_Locations' => esc_html__('Advanced Properties Locations', 'g5-ere'),
));
}
public function change_ube_get_element_configs($configs)
{
$elements = $this->get_elements();
$g5_elements = isset($configs['g5_elements']) ? $configs['g5_elements'] : array(
'title' => esc_html__('G5 Elements', 'g5-ere'),
'items' => array()
);
foreach ($elements as $k => $v) {
$g5_elements['items']["G5ERE_{$k}"] = array(
'title' => $v
);
}
$configs['g5_elements'] = $g5_elements;
return $configs;
}
public function change_ube_autoload_file_dir($path, $class)
{
$prefix = 'UBE_Element_G5ERE_';
if (strpos($class, $prefix) === 0) {
$file_name = substr($class, strlen($prefix));
$file_name = str_replace('_', '-', $file_name);
$file_name = strtolower($file_name);
return G5ERE()->locate_template("elements/$file_name/config.php");
}
return $path;
}
public function set_query_args($query_args, $atts)
{
if ($query_args['post_type'] === 'property') {
$query_args['meta_query'] = array();
$query_args['tax_query'] = array(
'relation' => 'AND',
);
if (isset($atts['sorting'])) {
$orderby_value = explode('-', $atts['sorting']);
$orderby = esc_attr($orderby_value[0]);
$order = !empty($orderby_value[1]) ? $orderby_value[1] : '';
$ordering = G5ERE()->query()->get_property_ordering_args($orderby, $order);
$query_args['orderby'] = $ordering['orderby'];
$query_args['order'] = $ordering['order'];
if (isset($ordering['meta_key']) && !empty($ordering['meta_key'])) {
$query_args['meta_key'] = $ordering['meta_key'];
}
if (isset($ordering['ere_orderby_featured'])) {
$query_args['ere_orderby_featured'] = $ordering['ere_orderby_featured'];
}
if (isset($ordering['ere_orderby_viewed'])) {
$query_args['ere_orderby_viewed'] = $ordering['ere_orderby_viewed'];
}
}
if (!isset($atts['show'])) {
$atts['show'] = '';
}
switch ($atts['show']) {
case 'featured':
$query_args['meta_query'][] = array(
'key' => ERE_METABOX_PREFIX . 'property_featured',
'value' => 1,
'compare' => '=',
);
break;
case 'new-in':
$query_args['orderby'] = 'date ID';
$query_args['order'] = 'DESC';
break;
case 'property':
$query_args['post__in'] = array_map('absint', $atts['ids']);
$query_args['posts_per_page'] = -1;
$query_args['orderby'] = 'post__in';
break;
}
if ($atts['show'] !== 'property') {
$taxonomy_narrow = array(
'property_type' => 'property-type',
'property_status' => 'property-status',
'property_feature' => 'property-feature',
'property_label' => 'property-label',
'property_state' => 'property-state',
'property_city' => 'property-city',
'property_neighborhood' => 'property-neighborhood',
);
foreach ($taxonomy_narrow as $k => $v) {
if (!empty($atts[$k])) {
$query_args['tax_query'][] = array(
'taxonomy' => $v,
//'terms' => array_filter( explode( ',', $atts[ $k ] ), 'absint' ),
'terms' => array_map('absint', $atts[$k]),
'field' => 'id',
'operator' => 'IN'
);
}
}
}
}
return $query_args;
}
public function set_query_agent_args($query_args,$atts) {
if ($query_args['post_type'] === 'agent') {
if ( isset( $atts['sorting'] ) ) {
$orderby_value = explode( '-', $atts['sorting'] );
$orderby = esc_attr( $orderby_value[0] );
$order = ! empty( $orderby_value[1] ) ? $orderby_value[1] : '';
$ordering = G5ERE()->query_agent()->get_agent_ordering_args( $orderby, $order );
$query_args['orderby'] = $ordering['orderby'];
$query_args['order'] = $ordering['order'];
}
switch ( $atts['show'] ) {
case 'new-in':
$query_args['orderby'] = 'date';
$query_args['order'] = 'DESC';
break;
case 'agent':
$query_args['post__in'] = array_map('absint',$atts['ids']);
$query_args['posts_per_page'] = - 1;
$query_args['orderby'] = 'post__in';
break;
}
if ( ! empty( $atts['agency'] ) ) {
$query_args['tax_query'][] = array(
'taxonomy' => 'agency',
//'terms' => array_filter( explode( ',', $atts['agency'] ), 'absint' ),
'terms' => array_map('absint',$atts['agency']),
'field' => 'id',
'operator' => 'IN'
);
}
}
return $query_args;
}
public function set_query_agency_args( $query_args, $atts ) {
if ( isset( $query_args['taxonomy'] ) && $query_args['taxonomy'] === 'agency' ) {
unset( $query_args['post_type'] );
unset( $query_args['post_status'] );
unset( $query_args['ignore_sticky_posts'] );
unset( $query_args['posts_per_page'] );
unset( $query_args['no_found_rows'] );
$query_args['number'] = $atts['posts_per_page'];
if ( ! empty( $atts['posts_per_page'] ) ) {
$query_args['number'] = absint( $atts['posts_per_page'] );
}
if ( ! empty( $atts['offset'] ) ) {
$query_args['offset'] = absint( $atts['offset'] );
}
if ( isset( $atts['sorting'] ) ) {
$orderby_value = explode( '-', $atts['sorting'] );
$orderby = esc_attr( $orderby_value[0] );
$order = ! empty( $orderby_value[1] ) ? $orderby_value[1] : '';
$ordering = G5ERE()->query_agency()->get_ordering_args_agency( $orderby, $order );
$query_args['orderby'] = $ordering['orderby'];
$query_args['order'] = $ordering['order'];
}
if ( ! empty( $atts['agency'] ) ) {
$query_args['term_taxonomy_id'] = $atts['agency'];
$query_args['number'] = '';
}
}
return $query_args;
}
}
}
Back to Directory
File Manager