Plugin Directory

Changeset 3267330


Ignore:
Timestamp:
04/05/2025 10:35:18 PM (12 months ago)
Author:
realtyna
Message:

version 5.0.0 released

Location:
real-estate-listing-realtyna-wpl
Files:
2545 added
38 edited

Legend:

Unmodified
Added
Removed
  • real-estate-listing-realtyna-wpl/trunk/WPL.php

    r3191515 r3267330  
    55 * Description: WPL is a professional WordPress real estate plugin created by Realtyna.
    66 * Author: Realtyna
    7  * Version: 4.14.14
     7 * Version: 5.0.0
    88 * Text Domain: real-estate-listing-realtyna-wpl
    99 * Domain Path: /languages
     
    2828 */
    2929define('WPL_TEXTDOMAIN', 'real-estate-listing-realtyna-wpl');
    30 define('WPL_VERSION', '4.14.14'); // WPL Version
     30define('WPL_VERSION', '5.0.0'); // WPL Version
    3131
    3232require WPL_ABSPATH.'config.php';
  • real-estate-listing-realtyna-wpl/trunk/assets/packages/ajax_uploader/UploadHandler.php

    r3080599 r3267330  
    8585            'readfile_chunk_size' => 10 * 1024 * 1024, // 10 MiB
    8686            // Defines which files can be displayed inline when downloaded:
    87             'inline_file_types' => '/\.(gif|jpe?g|png)$/i',
     87            'inline_file_types' => '/\.(gif|jpe?g|png|webp)$/i',
    8888            // Defines which files (based on their names) are accepted for upload:
    8989            'accept_file_types' => '/.+$/i',
     
    395395                $image_quality = null;
    396396                break;
     397            case 'webp':
     398                $src_img = imagecreatefromwebp($file_path);
     399                $write_image = 'imagewebp';
     400                $image_quality = null;
     401                break;
    397402            case 'png':
    398403                imagecolortransparent($new_img, imagecolorallocate($new_img, 0, 0, 0));
     
    749754                        case 'gif': $ext='.gif'; break;
    750755                        case 'bmp': $ext='.bmp'; break;
    751    
     756                        case 'webp': $ext='.webp'; break;
     757
    752758                        case 'jpg':
    753759                        case 'jpeg':
     
    888894            case 'gif':
    889895                return 'image/gif';
     896            case 'webp':
     897                return 'image/webp';
    890898            default:
    891899                return '';
  • real-estate-listing-realtyna-wpl/trunk/controller.php

    r3080599 r3267330  
    138138            else $this->showView($path);
    139139           
    140             return $output = ob_get_clean();
     140            return ob_get_clean();
    141141        }
    142142       
     
    165165   
    166166    /**
    167      * Adds separator betweens submenus
     167     * Adds separator between submenus
    168168     * @author Howard <howard@realtyna.com>
    169169     * @return string
  • real-estate-listing-realtyna-wpl/trunk/global.php

    r3191515 r3267330  
    190190            foreach($results as $result) self::$listing_types_by_id[$result->id] = $result;
    191191
    192             return (isset(self::$listing_types_by_id[$listing_id]) ? self::$listing_types_by_id[$listing_id] : NULL);
     192            return self::$listing_types_by_id[$listing_id] ?? null;
    193193        }
    194194    }
     
    18961896    public static function switch_language($language)
    18971897    {
    1898         $path = wpl_global::get_language_mo_path($language, 'wpl');
    1899         $wpl = wpl_global::load_textdomain('wpl', $path);
    1900 
    1901         $path = wpl_global::get_language_mo_path($language, 'real-estate-listing-realtyna-wpl');
    1902         $real_estate_listing_realtyna_wpl = wpl_global::load_textdomain('real-estate-listing-realtyna-wpl', $path);
    1903 
    1904         if($wpl or $real_estate_listing_realtyna_wpl) wpl_request::setVar('wpllang', $language);
    1905 
    1906         return ($wpl or $real_estate_listing_realtyna_wpl);
     1898        $path = wpl_global::get_language_mo_path($language, wpl_global::get_textdomain());
     1899        $loaded = wpl_global::load_textdomain(wpl_global::get_textdomain(), $path);
     1900        if($loaded) {
     1901            wpl_request::setVar('wpllang', $language);
     1902        }
     1903
     1904        return $loaded;
     1905    }
     1906
     1907    public static function get_textdomain()
     1908    {
     1909        return 'real-estate-listing-realtyna-wpl';
    19071910    }
    19081911
     
    19171920    public static function load_textdomain($domain, $mofile)
    19181921    {
    1919         /**
    1920          * load_textdomain accepts language directory instead of language file
    1921          * convert language file path to language directory
    1922          * @author John S. <john.s@realtyna.net>
    1923          */
    1924         if(!is_dir($mofile)){
    1925             $mofile = dirname($mofile);
    1926         }
    1927        
    19281922        if ( function_exists('load_textdomain') ){
    1929            
    19301923            return load_textdomain($domain, $mofile);
    1931            
    19321924        }
    1933        
    19341925        return false;
    1935        
    19361926    }
    19371927
     
    30553045        return $clear_string;
    30563046    }
     3047
     3048    public static function convert_camel_case_to_space($string) {
     3049        return preg_replace('/([a-z])([A-Z])/', '$1 $2', $string);
     3050    }
    30573051}
  • real-estate-listing-realtyna-wpl/trunk/libraries/create_query/locationtext_search.php

    r3080599 r3267330  
    145145        else // Search based on keyword
    146146        {
    147             $street = 'field_42';
    148             $location2 = 'location2_name';
    149             $location3 = 'location3_name';
    150             $location4 = 'location4_name';
    151             $location5 = 'location5_name';
    152             $location6 = 'location6_name';
    153            
    154             if(wpl_global::check_multilingual_status() and wpl_addon_pro::get_multiligual_status_by_column($street, $kind)) $street = wpl_addon_pro::get_column_lang_name($street, wpl_global::get_current_language(), false);
    155 
    156             $columns = array($street, $location2, $location3, $location4, $location5, $location6, 'location_text', 'zip_name', 'mls_id', 'field_308', 'meta_keywords', 'meta_description');
    157 
     147            $columns = array_keys(wpl_property::get_suggestion_fields($kind, '') ?? []);
     148            $columns = array_merge($columns, ['field_308', 'meta_keywords', 'meta_description']);
    158149            $query .= " AND `show_address` = '1' AND (";
    159150            foreach ($columns as $column)
  • real-estate-listing-realtyna-wpl/trunk/libraries/db.php

    r3191515 r3267330  
    2121{
    2222    public static $cachedNullable = [];
     23    public static $cachedQueries = [];
    2324    public static function q_raw($query, $type = '')
    2425    {
     
    3536     * @return mixed based on $type parameter
    3637     */
    37     public static function q($query, $type = '')
     38    public static function q($query, $type = '', $use_cache = false)
    3839    {
    3940        /** convert type to lowercase **/
     
    4142       
    4243        /** call select function if query type is select **/
    43         if($type == 'select') return wpl_db::select($query);
     44        if($type == 'select') return wpl_db::select($query, 'loadObjectList', $use_cache);
    4445       
    4546        /** db prefix **/
     
    256257     * @return mixed
    257258     */
    258     public static function select($query, $result = 'loadObjectList')
     259    public static function select($query, $result = 'loadObjectList', $use_cache = false)
    259260    {
    260261        /** db prefix **/
    261262        $query = self::_prefix($query);
     263
     264        $cacheKey = md5($query . $result);
     265        if($use_cache and array_key_exists($cacheKey, static::$cachedQueries)) {
     266            return static::$cachedQueries[$cacheKey];
     267        }
    262268       
    263269        /** db object **/
     
    289295        $end = round(microtime(true) * 1000);
    290296        do_action('wpl_db/select', $query, $start, $end, $result);
     297        static::$cachedQueries[$cacheKey] = $return;
    291298        return $return;
    292299    }
     
    303310     * @return mixed
    304311     */
    305     public static function get($selects, $table, $field, $value, $return_object = true, $condition = '')
     312    public static function get($selects, $table, $field, $value, $return_object = true, $condition = '', $use_cache = false)
    306313    {
    307314        $fields = '';
     
    322329        /** db prefix **/
    323330        $query = self::_prefix($query);
     331
     332        $cacheKey = md5('get_' . $query . ($return_object ? '1' : '0'));
     333        if($use_cache and array_key_exists($cacheKey, static::$cachedQueries)) {
     334            return static::$cachedQueries[$cacheKey];
     335        }
    324336       
    325337        /** db object **/
     
    327339       
    328340        if($selects != '*' and !is_array($selects)) {
    329             return $database->get_var($query);
    330         }
    331 
    332         if($return_object) {
    333             return $database->get_row($query);
    334         }
    335 
    336         return $database->get_row($query, ARRAY_A);
     341            $return = $database->get_var($query);
     342        } elseif($return_object) {
     343            $return = $database->get_row($query);
     344        } else {
     345            $return = $database->get_row($query, ARRAY_A);
     346        }
     347        static::$cachedQueries[$cacheKey] = $return;
     348        return $return;
    337349    }
    338350   
     
    432444        if(trim($table ?? '') == '') return false;
    433445
    434         $results = wpl_db::q(wpl_db::prepare('SHOW COLUMNS FROM %i', "#__$table"), "select");
     446        $results = wpl_db::q(wpl_db::prepare('SHOW COLUMNS FROM %i', "#__$table"), "select", true);
    435447       
    436448        $columns = array();
     
    600612            $query = str_replace('#__usermeta', $database->base_prefix.'usermeta', $query);
    601613            $query = str_replace('#__users', $database->base_prefix.'users', $query);
    602             $query = str_replace('#__realtyna_rf_mappings', $database->base_prefix.'realtyna_rf_mappings', $query);
     614            $query = str_replace('#__realtyna_rf_mappings', $database->get_blog_prefix().'realtyna_rf_mappings', $query);
    603615            $query = str_replace('#__blogs', $database->base_prefix.'blogs', $query);
    604616            $query = str_replace('#__wpl', $database->base_prefix.'wpl', $query);
     
    609621            $query = str_replace('#__usermeta', $database->base_prefix.'usermeta', $query);
    610622            $query = str_replace('#__users', $database->base_prefix.'users', $query);
     623            $query = str_replace('#__realtyna_rf_mappings', $database->get_blog_prefix().'realtyna_rf_mappings', $query);
    611624            $query = str_replace('#__', $database->prefix, $query);
    612625        }
  • real-estate-listing-realtyna-wpl/trunk/libraries/dbst_show/general.php

    r3191515 r3267330  
    337337       
    338338        $return['raw'] = $value;
    339         $return['unit_id'] = $values[$field->table_column.'_unit'];
     339        $return['unit_id'] = $values[$field->table_column.'_unit'] ?? 1;
    340340       
    341341        if(isset($options['if_zero']) and $options['if_zero'] == 2 and !trim($value)) $return['value'] = wpl_esc::return_html_t($options['call_text']);
  • real-estate-listing-realtyna-wpl/trunk/libraries/dbst_wizard/general.php

    r3191515 r3267330  
    130130                onChangeDateTime: function(dp,input)
    131131                {
    132                     ajax_save("' . $field->table_name . '","' . $field->table_column . '",input.val(),' . $item_id . ',;' . $field->id . ';)
     132                    ajax_save("' . $field->table_name . '","' . $field->table_column . '",input.val(),' . $item_id . ',' . $field->id . ');
    133133                }
    134134            });
  • real-estate-listing-realtyna-wpl/trunk/libraries/dbst_wizard/googlemap.php

    r3080599 r3267330  
    66{
    77    /** WPL Demographic addon **/
    8     $demographic_addon_objects = array();
    98    $demographic_objects = array();
    109    if(wpl_global::check_addon('demographic'))
     
    1211        _wpl_import('libraries.addon_demographic');
    1312        $demographic = new wpl_addon_demographic();
    14         $demographic_addon_objects = $demographic->get_all('id, name');
    1513
    1614        $demographic_objects = wpl_items::get_items($item_id, 'demographic', $kind);
     
    575573    </div>
    576574
    577     <?php if(wpl_global::check_addon('demographic') and count($demographic_addon_objects)): ?>
     575    <?php if(wpl_global::check_addon('demographic')): ?>
    578576    <div class="dmgfc-objects-wp" style="margin-top: 10px;">
    579577        <label for="wpl_dmgfc_objects<?php wpl_esc::attr($field->id); ?>"><?php wpl_esc::html('Apply boundary from Demographic addon'); ?></label>
    580         <select id="wpl_dmgfc_objects<?php wpl_esc::attr($field->id); ?>">
    581             <?php foreach ($demographic_addon_objects as $object): ?>
    582                 <option value="<?php wpl_esc::attr($object->id); ?>"><?php wpl_esc::html($object->name); ?></option>
    583             <?php endforeach; ?>
    584         </select>
     578        <?php $demographic->autocomplete(null, ['id' => 'wpl_dmgfc_objects' . $field->id]); ?>
    585579        <input type="button" class="wpl-button button-1" onclick="wpl_dmgfc_apply_shapes()" value="<?php wpl_esc::attr_t('Apply'); ?>">
    586580        <div id="wpl_dmgfc_objects_loading"></div>
  • real-estate-listing-realtyna-wpl/trunk/libraries/flex.php

    r3191515 r3267330  
    5050        }
    5151       
    52         return wpl_db::select("SELECT * FROM `#__wpl_dbst` WHERE 1 $condition ORDER BY `index` ASC", 'loadObjectList');
     52        return wpl_db::select("SELECT * FROM `#__wpl_dbst` WHERE 1 $condition ORDER BY `index` ASC", 'loadObjectList', true);
    5353    }
    5454   
     
    6262    public static function get_field($field_id)
    6363    {
    64         return wpl_db::select(wpl_db::prepare("SELECT * FROM `#__wpl_dbst` WHERE `id` = %d", $field_id), 'loadObject');
     64        return wpl_db::select(wpl_db::prepare("SELECT * FROM `#__wpl_dbst` WHERE `id` = %d", $field_id), 'loadObject', true);
    6565    }
    6666
     
    151151        if(trim($condition ?? '') == '') $condition = wpl_db::prepare(" AND `id` = %d", $category_id);
    152152       
    153         return wpl_db::select("SELECT * FROM `#__wpl_dbcat` WHERE 1 ".$condition, 'loadObject');
     153        return wpl_db::select("SELECT * FROM `#__wpl_dbcat` WHERE 1 ".$condition, 'loadObject', true);
    154154    }
    155155   
  • real-estate-listing-realtyna-wpl/trunk/libraries/html.php

    r3191515 r3267330  
    217217    public static function generate_head()
    218218    {
     219        $show = apply_filters( 'wpl_html/generate_head/show', true );
     220        if(!$show) {
     221            return;
     222        }
    219223        /** generate meta keywords **/
    220224        if(self::$meta_keywords)
  • real-estate-listing-realtyna-wpl/trunk/libraries/images.php

    r3191515 r3267330  
    2525    {
    2626        $source = $source ?? '';
    27         // Don't execute the function if source file doesn't exists.
     27        // Don't execute the function if source file doesn't exist.
    2828        if(!wpl_file::exists($source) and strpos($source, '://') === false) return $source;
     29        if(strpos($source, '://') === false and filesize($source) == 0 ) return $source;
    2930
    3031        // Set memory limit
  • real-estate-listing-realtyna-wpl/trunk/libraries/items.php

    r3191515 r3267330  
    3838            $media = $property['realty_feed_raw_data']->Media ?? [];
    3939            $records = [];
    40             $item_key = 0;
    4140            if(!empty($media)) {
    4241                foreach ($media as $media_item) {
    43                     $item_key++;
     42                    $item_key = $media_item['Order'];
    4443                    $records[] = (object)[
    4544                        'id' => $media_item['MediaKey'],
     
    6261                }
    6362            }
     63
     64            usort($records, function($a, $b) {
     65                if ($a->index > $b->index) {
     66                    return 1;
     67                } elseif ($a->index < $b->index) {
     68                    return -1;
     69                }
     70                return 0;
     71            });
    6472            // to show thumbnail url for thumbnails
    6573            add_filter('wpl_activities/listing_gallery/image_thumbnail_url', function($image_thumbnail_url, $image) {
     
    750758            $opendates[$j]['comment'] = $open_date->item_extra2;
    751759            $opendates[$j]['id'] = $open_date->id;
     760            $opendates[$j]['origin'] = $open_date;
    752761            $j++;
    753762        }
  • real-estate-listing-realtyna-wpl/trunk/libraries/locations.php

    r3191515 r3267330  
    560560
    561561        // Get All Locations
    562         $locations = wpl_db::select(wpl_db::prepare("SELECT `abbr`, `name` FROM %i WHERE 1", "#__wpl_location{$location_level}"), 'loadObjectList');
     562        $locations = wpl_db::select(wpl_db::prepare("SELECT `abbr`, `name` FROM %i WHERE ifnull(`abbr`, '') != ''", "#__wpl_location{$location_level}"), 'loadObjectList');
    563563
    564564        $names_by_abbr = array();
     
    598598
    599599        // Get All Locations
    600         $locations = wpl_db::select(wpl_db::prepare('SELECT `abbr`, `name` FROM %i WHERE 1', "#__wpl_location{$location_level}"), 'loadObjectList');
     600        $locations = wpl_db::select(wpl_db::prepare("SELECT `abbr`, `name` FROM %i WHERE ifnull(`abbr`, '') != ''", "#__wpl_location{$location_level}"), 'loadObjectList');
    601601
    602602        $names_by_abbr = array();
  • real-estate-listing-realtyna-wpl/trunk/libraries/property.php

    r3191515 r3267330  
    321321        // Generate Select
    322322        $this->select = $this->select ?? $this->generate_select($this->listing_fields, 'p');
     323        $this->select = apply_filters('wpl_property/start/select', $this->select);
    323324
    324325    }
     
    544545     * @return mixed
    545546     */
    546     public static function get_property_raw_data($property_id)
     547    public static function get_property_raw_data($property_id, $use_cache = false)
    547548    {
    548549        // First Validation
     
    554555
    555556        // Property Data
    556         $result = wpl_db::select(wpl_db::prepare("SELECT * FROM `#__wpl_properties` as p LEFT JOIN `#__wpl_properties2` as p2 ON p.`id` = p2.`id` WHERE p.`id`= %d", $property_id), 'loadAssoc');
     557        $result = wpl_db::select(wpl_db::prepare("SELECT * FROM `#__wpl_properties` as p LEFT JOIN `#__wpl_properties2` as p2 ON p.`id` = p2.`id` WHERE p.`id`= %d", $property_id), 'loadAssoc', $use_cache);
    557558
    558559        if(!empty($result) && empty($result['id'])) {
     
    12871288    {
    12881289        /** fetch property data if property id is setted **/
    1289         if($property_id) $property_data = self::get_property_raw_data($property_id);
     1290        if($property_id) $property_data = self::get_property_raw_data($property_id, true);
    12901291        if(!$property_id) $property_id = $property_data['id'];
    12911292
     
    16591660            $raw = wpl_rf_property::getInstance()->get_property_raw_data($property_id);
    16601661            if(!empty($raw)) {
    1661                 return $raw[$field_name];
     1662                return $raw[$field_name] ?? null;
    16621663            }
    16631664        }
    1664         return wpl_db::get($field_name, 'wpl_properties', 'id', $property_id);
     1665        return wpl_db::get($field_name, 'wpl_properties', 'id', $property_id, true, '', true);
    16651666    }
    16661667
     
    19191920        if(!$plisting_fields) $plisting_fields = self::get_plisting_fields();
    19201921
    1921         $raw_data = self::get_property_raw_data($property_id);
     1922        $raw_data = self::get_property_raw_data($property_id, true);
    19221923        if(!$raw_data) return array();
    19231924        if(!$property) $property = (object) $raw_data;
     
    27442745        $location6 = 'location6_name';
    27452746
    2746         if(wpl_global::check_multilingual_status() and wpl_addon_pro::get_multiligual_status_by_column($street, 0)) $street = wpl_addon_pro::get_column_lang_name($street, wpl_global::get_current_language(), false);
     2747        if(wpl_global::check_multilingual_status() and wpl_addon_pro::get_multiligual_status_by_column($street, $kind)) $street = wpl_addon_pro::get_column_lang_name($street, wpl_global::get_current_language(), false);
    27472748
    27482749        $queries = array(
  • real-estate-listing-realtyna-wpl/trunk/libraries/request.php

    r3191515 r3267330  
    221221    {
    222222        $apply = false;
    223         if(!isset($_SESSION[$key]))
    224         {
    225             $apply = true;
    226             $_SESSION[$key] = $value;
    227         }
    228         elseif(isset($_SESSION[$key]) and $override)
     223        if(!isset($_SESSION[$key]) || $override)
    229224        {
    230225            $apply = true;
     
    436431
    437432        $apply = false;
    438         if((!isset($_COOKIE[$key])) or (isset($_COOKIE[$key]) and $override))
     433        if((!isset($_COOKIE[$key]) or $override) and !headers_sent())
    439434        {
    440435            $apply = true;
  • real-estate-listing-realtyna-wpl/trunk/libraries/sef.php

    r3080599 r3267330  
    479479    {
    480480        if(!trim($post_id ?? '')) return '';
    481         return wpl_db::get('post_name', 'posts', 'id', $post_id);
     481        return wpl_db::get('post_name', 'posts', 'id', $post_id, true, '', true);
    482482    }
    483483   
     
    492492    {
    493493        if(!trim($post_name ?? "")) return 0;
    494         return wpl_db::get('ID', 'posts', 'post_name', $post_name);
     494        return wpl_db::get('ID', 'posts', 'post_name', $post_name, true, '', true);
    495495    }
    496496   
  • real-estate-listing-realtyna-wpl/trunk/libraries/services/sef.php

    r3191515 r3267330  
    235235
    236236        $metaTags['og:url'] = ['content' => str_replace('&', '&amp;', $property_link)];
    237         $metaTags['og:title'] = ['data-page-subject' => 'true', 'content' => $this->property_page_title];
    238         $metaTags['og:description'] = ['content' => strip_tags(stripslashes($property_data[$content_column] ?? ""))];
     237        $metaTags['og:title'] = ['data-page-subject' => 'true', 'content' => wpl_esc::return_attr($this->property_page_title)];
     238        $metaTags['og:description'] = ['content' => wpl_esc::return_attr(strip_tags(stripslashes($property_data[$content_column] ?? "")))];
    239239
    240240        $metaTags['twitter:card'] = ['content' => 'summary'];
    241         $metaTags['twitter:title'] = ['content' => $this->property_page_title];
    242         $metaTags['twitter:description'] = ['content' => strip_tags(stripslashes($property_data[$content_column] ?? ""))];
     241        $metaTags['twitter:title'] = ['content' => wpl_esc::return_attr($this->property_page_title)];
     242        $metaTags['twitter:description'] = ['content' => wpl_esc::return_attr(strip_tags(stripslashes($property_data[$content_column] ?? "")))];
    243243        $metaTags['twitter:url'] = ['content' => str_replace('&', '&amp;', $property_link)];
    244244       
  • real-estate-listing-realtyna-wpl/trunk/libraries/settings.php

    r3191515 r3267330  
    7979
    8080        $exists = wpl_settings::is_setting_exists($name, $category);
    81 
    82         if($exists) $result = wpl_settings::update_setting($name, $value, $category, $condition);
    83         else $result = wpl_settings::insert_setting($name, $value, $category);
     81        $old_value = null;
     82        if($exists) {
     83            $old_value = wpl_settings::get($name);
     84            $result = wpl_settings::update_setting($name, $value, $category, $condition);
     85        }
     86        else {
     87            $result = wpl_settings::insert_setting($name, $value, $category);
     88        }
     89        if($result) {
     90            do_action('wpl_settings/save_setting', $name, $value, $old_value);
     91        }
    8492
    8593        return $result;
     
    174182     * @return mixed
    175183     */
    176     public static function get($setting_name, $category = '')
     184    public static function get($setting_name, $category = '', $use_cache = true)
    177185    {
    178186        // Return from cache if exists
     
    190198
    191199        // Get Setting
    192         return wpl_db::get('setting_value', 'wpl_settings', '', '', true, $condition);
     200        return wpl_db::get('setting_value', 'wpl_settings', '', '', true, $condition, $use_cache);
    193201    }
    194202
     
    532540
    533541    public static function is_mls_on_the_fly() {
    534         return wpl_global::check_addon('pro')
    535             && (defined('REALTYNA_RF_SHELL_BASE_PATH') || defined('REALTYNA_MLS_ON_THE_FLY_VERSION'))
     542        return (defined('REALTYNA_RF_SHELL_BASE_PATH') || defined('REALTYNA_MLS_ON_THE_FLY_VERSION'))
    536543            && static::get('property_source') == 'rf'
    537544            && file_exists(_wpl_import('libraries.rf_shell.rf_property', true, true));
  • real-estate-listing-realtyna-wpl/trunk/libraries/users.php

    r3191515 r3267330  
    231231        if($cached) return $cached;
    232232       
    233         $user = wpl_db::select(wpl_db::prepare('SELECT * FROM `#__wpl_users` WHERE `id` = %d', $user_id), 'loadObject');
     233        $user = wpl_db::select(wpl_db::prepare('SELECT * FROM `#__wpl_users` WHERE `id` = %d', $user_id), 'loadObject', true);
    234234
    235235        // Set to Cache
     
    299299     * @return int
    300300     */
    301     public static function get_user_membership($user_id = NULL)
     301    public static function get_user_membership($user_id = NULL, $use_cache = true)
    302302    {
    303303        /** Current User **/
     
    307307        if(isset(self::$user_memberships[$user_id])) return self::$user_memberships[$user_id];
    308308       
    309         $membership_id = wpl_db::get('membership_id', 'wpl_users', 'id', $user_id);
     309        $membership_id = wpl_db::get('membership_id', 'wpl_users', 'id', $user_id, true, '', $use_cache);
    310310       
    311311        /** add to cache **/
     
    20002000    {
    20012001        $show_ajax = true;
    2002         $limit = 1;
     2002        $limit = 40;
    20032003        $condition = '';
    20042004        if($check_brokerage) {
     
    20192019            $fetched_users = array_keys($wpl_users);
    20202020            $missing_users = implode(',', array_diff($selected_user_id, $fetched_users));
    2021 
    2022             $wpl_user_list = wpl_db::select("SELECT * FROM `#__users` AS u INNER JOIN `#__wpl_users` AS wpl ON u.ID = wpl.id WHERE 1 $condition AND wpl.id in ($missing_users)");
    2023             foreach ($wpl_user_list as $key => $wpl_user) {
    2024                 $wpl_users[$key] = $wpl_user;
     2021            if(!empty($missing_users)) {
     2022                $wpl_user_list = wpl_db::select("SELECT * FROM `#__users` AS u INNER JOIN `#__wpl_users` AS wpl ON u.ID = wpl.id WHERE 1 $condition AND wpl.id in ($missing_users)");
     2023                foreach ($wpl_user_list as $key => $wpl_user) {
     2024                    $wpl_users[$key] = $wpl_user;
     2025                }
    20252026            }
    20262027        } else {
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/backend/general.php

    r3191515 r3267330  
    509509                <select name="<?php wpl_esc::attr($this->get_field_name('data')); ?>[<?php wpl_esc::attr($field->id); ?>][type]">
    510510                    <option value="text" <?php if (isset($value['type']) and $value['type'] == 'text') wpl_esc::e('selected="selected"'); ?> ><?php wpl_esc::html_t('Text'); ?></option>
     511                    <option value="multiple" <?php if (isset($value['type']) and $value['type'] == 'multiple') wpl_esc::e('selected="selected"'); ?> ><?php wpl_esc::html_t('Multiple'); ?></option>
    511512                    <option value="exacttext" <?php if (isset($value['type']) and $value['type'] == 'exacttext') wpl_esc::e('selected="selected"'); ?> ><?php wpl_esc::html_t('Exact text'); ?></option>
    512513                    <option value="checkbox" <?php if (isset($value['type']) and $value['type'] == "checkbox") wpl_esc::e('selected="selected"'); ?>><?php wpl_esc::html_t('Check box'); ?></option>
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/frontend/general.php

    r3191515 r3267330  
    22
    33defined('_WPLEXEC') or die('Restricted access');
    4 
     4error_reporting(E_ALL);
     5ini_set('display_errors', 1);
    56$imports = [
     7    'addon_calendar',
     8    'area',
     9    'checkbox',
     10    'date',
     11    'feature',
    612    'gallery',
    7     'date',
    8     'feature',
    9     'checkbox',
    1013    'listings',
    1114    'neighborhood',
    1215    'number',
     16    'price',
     17    'property_types',
     18    'ptcategory',
     19    'select',
     20    'separator',
     21    'text',
     22    'textarea',
     23    'textsearch',
    1324    'user_type',
    14     'textarea',
    15     'price',
    16     'area',
    17     'text',
    18     'textsearch',
    19     'separator',
    2025];
    2126
     
    2732
    2833$current = '';
     34
    2935
    3036$html .= apply_filters(
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/frontend/location_items/advanced_locationtext_search.php

    r3191515 r3267330  
    7878                wplj("#'.$element_id.'").val(ui.item.value);
    7979                wplj("#'.$element_column_id.'").val(ui.item.column);
    80                 wplj("#wpl_search_form_'.$widget_id.'").submit();
     80                wpl_do_search_'.$widget_id.'();
    8181            },
    8282            source: function (request, response) {
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/frontend/types/checkbox.php

    r3191515 r3267330  
    22defined('_WPLEXEC') or die('Restricted access');
    33
    4 function widget_search_frontend_general_select(
     4function widget_search_frontend_general_checkbox(
    55    $html,
    66    $type,
     
    6262}
    6363
    64 add_filter('widget_search/frontend/general/checkbox', 'widget_search_frontend_general_select', 10, 8);
    65 add_filter('widget_search/frontend/general/yesno', 'widget_search_frontend_general_select', 10, 8);
    66 add_filter('widget_search/frontend/general/select', 'widget_search_frontend_general_select', 10, 8);
     64add_filter('widget_search/frontend/general/checkbox', 'widget_search_frontend_general_checkbox', 10, 8);
     65add_filter('widget_search/frontend/general/yesno', 'widget_search_frontend_general_checkbox', 10, 8);
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/frontend/types/property_types.php

    r3191515 r3267330  
    1414    if ($type == 'property_types') {
    1515        $property_types = wpl_global::get_property_types();
    16         $property_types = apply_filters('widget_search/frontend/general/property_types', $property_types);
    1716
    1817        switch ($field['type']) {
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/frontend/types/select.php

    r3191515 r3267330  
    22defined('_WPLEXEC') or die('Restricted access');
    33
    4 function widget_search_frontend_general_gallery(
     4function widget_search_frontend_general_select(
    55    $html,
    66    $type,
     
    208208}
    209209
    210 add_filter('widget_search/frontend/general/gallery', 'widget_search_frontend_general_gallery', 10, 8);
     210add_filter('widget_search/frontend/general/select', 'widget_search_frontend_general_select', 10, 8);
  • real-estate-listing-realtyna-wpl/trunk/libraries/widget_search/frontend/types/text.php

    r3191515 r3267330  
    2121            case 'text':
    2222                $query_type = 'text';
     23                break;
     24
     25            case 'multiple':
     26                $query_type = 'multiple';
    2327                break;
    2428
  • real-estate-listing-realtyna-wpl/trunk/views/activities/agent_info/tmpl/default.php

    r3080599 r3267330  
    1111
    1212/** getting user id from current property (used in property_show and property_listing) **/
    13 if (!trim($main_user_id ?? '')) $main_user_id = $wpl_properties['current']['data']['user_id'];
     13if (!trim($main_user_id ?? '') and !empty($wpl_properties['current']['data']['user_id'])) {
     14    $main_user_id = $wpl_properties['current']['data']['user_id'];
     15}
    1416
    1517$user_ids = array();
  • real-estate-listing-realtyna-wpl/trunk/views/activities/property_manager_actions/tmpl/default.php

    r3191515 r3267330  
    4141                    <?php wpl_esc::html_t('User'); ?>:
    4242                </label>
    43                 <?php wpl_users::autocomplete($property_data['user_id'], [
     43                <?php wpl_users::autocomplete($property_data['user_id'] ?? 0, [
    4444                    'id' => 'pmanager_change_user_select' . $pid,
    4545                    'onchange' => 'change_user(' . $pid . ', this.value);',
  • real-estate-listing-realtyna-wpl/trunk/views/backend/listing/tmpl/scripts/js.php

    r3080599 r3267330  
    153153            }
    154154            else
     155           
    155156            {
    156157                wplj(ajax_loader_element).html('');
  • real-estate-listing-realtyna-wpl/trunk/views/backend/users/tmpl/autocomplete.php

    r3191515 r3267330  
    7272                data: 'wpl_format=b:users:ajax&wpl_function=autocomplete&_wpnonce=<?php wpl_esc::attr(wpl_security::create_nonce('wpl_users')); ?>&search=' + search_value,
    7373                success: function (data) {
    74                     const selected_values = wplj('#<?php wpl_esc::js($id); ?>').val();
    7574                    wplj('#<?php wpl_esc::js($id); ?> option:not(:selected)').remove();
    7675                    const option_values = [];
     
    8584                            wplj('#<?php wpl_esc::js($id); ?>').append('<option value="' + user.id + '">' + user.name + '</option>');
    8685                        }
    87                         wplj('#<?php wpl_esc::js($id); ?>').trigger("chosen:updated");
    88                         wplj('#<?php wpl_esc::js($id); ?>_chosen input').val(search_value);
    89                         wplj('#<?php wpl_esc::js($id); ?>_chosen input').get(0).focus();
    9086                    }
     87                    wplj('#<?php wpl_esc::js($id); ?>').trigger("chosen:updated");
     88                    wplj('#<?php wpl_esc::js($id); ?>_chosen input').val(search_value);
     89                    wplj('#<?php wpl_esc::js($id); ?>_chosen input').get(0).focus();
    9190                }
    9291            });
  • real-estate-listing-realtyna-wpl/trunk/views/backend/wpl/tmpl/internal_addons.php

    r3091044 r3267330  
    3232                    <?php if(!isset($settings['realtyna_envato_purchase'])): ?>
    3333                            <div class="wpl_realtyna_envato_container_drop"
    34                                  onclick="dropdown_envato_purchase_form();"><?php wpl_esc::html_t('Did you buy WPL from <i>CodeCanyon</i>? Click Here to get your username and password.'); ?></div>
     34                                 onclick="dropdown_envato_purchase_form();"><?php wpl_esc::e('Did you buy WPL from <i>CodeCanyon</i>? Click Here to get your username and password.'); ?></div>
    3535                        <div class="wpl_realtyna_envato_container">
    3636                                <input type="text" name="realtyna_envato_fullname" id="realtyna_envato_fullname"
     
    7777                    <span class="wpl_addon_info">
    7878                        <?php if(trim($addon['message'] ?? '') != ''): ?>
    79                         <span class="wpl_addon_message"><?php wpl_esc::attr($addon['message']); ?></span>
     79                        <span class="wpl_addon_message"><?php wpl_esc::e($addon['message']); ?></span>
    8080                        <?php endif; ?>
    8181                        <span title="<?php wpl_esc::attr_t('Version'); ?>"><?php wpl_esc::html($addon['version']); ?></span>
  • real-estate-listing-realtyna-wpl/trunk/views/basics/functions/wpl_ajax.php

    r3191515 r3267330  
    4343
    4444        $plisting_fields = $wpl_property->get_plisting_fields('', $kind);
    45         $wpl_property->start(0, count($ex_pids), wpl_settings::get('default_orderby'), wpl_settings::get('default_order'), ["sf_multiple_id" => $property_ids]);
     45        $wpl_property->start(0, count($ex_pids), wpl_settings::get('default_orderby'), wpl_settings::get('default_order'), ["sf_multiple_id" => $property_ids], $kind);
    4646        $wpl_property->query();
    4747        $properties = $wpl_property->search();
     
    394394            if (isset($parameters['enabled']) and $parameters['enabled'] == 'on') {
    395395                if (!wpl_db::num(wpl_db::prepare('SELECT COUNT(*) FROM `#__wpl_addon_watch_changes` WHERE `pid` = %d AND `user_id` = %d', $property_id, $user_id))) {
    396                     $query = "";
    397396                    wpl_db::q(wpl_db::prepare('INSERT INTO `#__wpl_addon_watch_changes` (`pid`, `user_id`) VALUES (%d, %d)', $property_id, $user_id), 'insert');
    398397                }
    399398            } else {
    400                 $query = "";
    401399                wpl_db::q(wpl_db::prepare('DELETE FROM `#__wpl_addon_watch_changes` WHERE `pid` = %d AND `user_id` = %d', $property_id, $user_id), 'delete');
    402400            }
  • real-estate-listing-realtyna-wpl/trunk/views/frontend/profile_show/wpl_abstract.php

    r3191515 r3267330  
    3838                wpl_request::setVar('uid', $this->uid);
    3939            }
     40           
     41            $this->uid = apply_filters('wpl_profile_show_controller_abstract/display/uid', $this->uid);
    4042
    4143            $check_access = wpl_global::check_access('public_profile',$this->uid);
  • real-estate-listing-realtyna-wpl/trunk/views/frontend/property_listing/wpl_abstract.php

    r3191515 r3267330  
    322322            if($this->model->isSourceRf()) {
    323323                $rf_markers = [];
     324                $listings = wpl_global::return_in_id_array(wpl_global::get_listings());
    324325                foreach($wpl_properties as $key => $wpl_property) {
    325326                    if($key == 'current' and !count($wpl_property)) continue;
     
    331332                        'googlemap_lt' => $wpl_property['googlemap_lt'],
    332333                        'googlemap_ln' => $wpl_property['googlemap_ln'],
    333                         'title' => wpl_global::wpl_minimize_price($wpl_property['price']),
    334                         'pids' => $wpl_property['id'] . '', // convert to string
    335                         'gmap_icon' => 'dot-blue.png',
     334                        'title' => wpl_render::render_price($wpl_property['price'], $wpl_property['price_unit'], '', wpl_global::wpl_minimize_price($wpl_property['price'])),
     335                        'pids' => $wpl_property['id'] . '', // convert to string to avoid javascript issue
     336                        'gmap_icon' => $listings[$wpl_property['listing']]['gicon'] ?? 'default.png',
    336337                    ];
    337338                }
  • real-estate-listing-realtyna-wpl/trunk/views/frontend/property_listing/wpl_ajax.php

    r3191515 r3267330  
    164164                            break;
    165165                        }
    166                         $output[] = array('title' => $title, 'label' => $found_item->{$column}, 'column' => $column, 'value' => $found_item->{$column});
     166                        $value = $found_item->{$column};
     167                        if($column == 'location_text') {
     168                            $value = wpl_property::generate_location_text((array) $found_item);
     169                        }
     170                        $output[] = array('title' => $title, 'label' => $value, 'column' => $column, 'value' => $value);
    167171                    }
    168172                    continue;
     
    234238        $gre = wpl_request::getVar('g-recaptcha-response', '');
    235239
     240        do_action('wpl_property_listing_controller/contact_listing_user/pre', $this);
     241
    236242        // check recaptcha
    237243        $gre_response = wpl_global::verify_google_recaptcha($gre, 'gre_listing_contact_activity');
    238244
     245        $check_security = apply_filters('wpl_property_listing_controller/contact_listing_user/check_security', true);
     246
    239247        $returnData = array();
    240248        if(!filter_var($email, FILTER_VALIDATE_EMAIL))
     
    243251            $returnData['message'] = wpl_esc::return_html_t('Your email is not a valid email!');
    244252        }
    245         elseif(!wpl_security::verify_nonce(wpl_request::getVar('_wpnonce', ''), 'wpl_listing_contact_form'))
     253        elseif($check_security and !wpl_security::verify_nonce(wpl_request::getVar('_wpnonce', ''), 'wpl_listing_contact_form'))
    246254        {
    247255            $returnData['success'] = 0;
  • real-estate-listing-realtyna-wpl/trunk/views/frontend/property_show/tmpl/default.php

    r3191515 r3267330  
    293293                                    <?php if(trim($listing_id ?? '') != ''): ?>
    294294                                        <li class="wpl-listing-id">
    295                                             <?php wpl_esc::html($this->wpl_properties['current']['materials']['mls_id']['name']).' : <span class="value">'.$listing_id.'</span>'; ?>
     295                                            <?php wpl_esc::html($this->wpl_properties['current']['materials']['mls_id']['name']) ?>: <span class="value"><?php wpl_esc::html($listing_id); ?></span>
    296296                                        </li>
    297297                                    <?php endif; ?>
  • real-estate-listing-realtyna-wpl/trunk/widgets/search/scripts/js.php

    r3191515 r3267330  
    174174
    175175/** main search function **/
    176 function wpl_do_search_<?php wpl_esc::numeric($this->widget_id); ?>()
     176function wpl_do_search_<?php wpl_esc::numeric($this->widget_id); ?>(remove_lat_long = false)
    177177{
    178178    request_str = wpl_get_request_str_<?php wpl_esc::numeric($this->widget_id); ?>();
     
    190190    else search_str = search_page + '?' + request_str;
    191191
     192    if(remove_lat_long) {
     193        request_str = wpl_update_qs('sf_tmin_googlemap_lt', '', request_str);
     194        request_str = wpl_update_qs('sf_tmax_googlemap_lt', '', request_str);
     195        request_str = wpl_update_qs('sf_tmin_googlemap_ln', '', request_str);
     196        request_str = wpl_update_qs('sf_tmax_googlemap_ln', '', request_str);
     197    }
    192198    <?php if(!$this->ajax): ?>
    193199    wpl_do_search_no_ajax<?php wpl_esc::numeric($this->widget_id); ?>(search_str);
Note: See TracChangeset for help on using the changeset viewer.