/** * Service runner * @author Howard <*****@*****.**> * @return void */ public function run() { $wpl_format = wpl_request::getVar('wpl_format'); if (trim($wpl_format) == '') { return; } /** add listing menu **/ if ($wpl_format == 'b:listing:ajax') { $wpl_function = wpl_request::getVar('wpl_function'); if ($wpl_function == 'save') { $table_name = wpl_request::getVar('table_name'); $table_column = wpl_request::getVar('table_column'); $value = wpl_request::getVar('value'); /** for checking limitation on feature and hot tag **/ if (($table_column == 'sp_featured' or $table_column == 'sp_hot') and $value == 1) { _wpl_import('libraries.property'); $current_user_id = wpl_users::get_cur_user_id(); $user_data = wpl_users::get_wpl_user($current_user_id); $user_limit = $table_column == 'sp_featured' ? $user_data->maccess_num_feat : $user_data->maccess_num_hot; $model = new wpl_property(); $used = $model->get_properties_count(" AND `user_id`='{$current_user_id}' AND `{$table_column}`='1'"); if ($used >= $user_limit and $user_limit != '-1') { self::response(array('success' => '0', 'message' => '', 'data' => '', 'js' => "wplj(form_element_id).prop('checked', false); wpl_alert(\"" . __('Your membership limit reached. contact to administrator if you want to upgrade!', WPL_TEXTDOMAIN) . "\");")); } } } } }
/** * written by Francis * description: initialize pagination and properties for property manager page */ private function init_page() { /** global settings **/ $settings = wpl_settings::get_settings(); /** listing settings **/ $this->page_number = wpl_request::getVar('wplpage', 1); $limit = wpl_request::getVar('limit', $settings['default_page_size']); $start = wpl_request::getVar('start', ($this->page_number - 1) * $limit); $orderby = wpl_request::getVar('orderby', $settings['default_orderby']); $order = wpl_request::getVar('order', $settings['default_order']); $current_user_id = wpl_users::get_cur_user_id(); $where = array(); /** set page if start var passed **/ $this->page_number = $start / $limit + 1; wpl_request::setVar('wplpage', $this->page_number); $this->model = new wpl_property(); /** load user properties **/ if (!wpl_users::is_administrator($current_user_id)) { $where['sf_select_user_id'] = $current_user_id; } /** detect kind **/ $this->kind = wpl_request::getVar('kind', 0); if (!in_array($this->kind, wpl_flex::get_valid_kinds())) { /** import message tpl **/ $this->message = __('Invalid Request!', WPL_TEXTDOMAIN); parent::render($this->tpl_path, 'message'); return false; } $this->kind_label = wpl_flex::get_kind_label($this->kind); $where['sf_select_kind'] = $this->kind; /** Add search conditions to the where **/ $vars = array_merge(wpl_request::get('POST'), wpl_request::get('GET')); $where = array_merge($vars, $where); $this->model->start($start, $limit, $orderby, $order, $where, $this->kind); $query = $this->model->query(); $properties = $this->model->search($query); $this->model->finish(); /** get the number of all properties according to our query **/ $properties_count = $this->model->get_properties_count(); /** set pagination according to the number of items and limit **/ $this->pagination = wpl_pagination::get_pagination($properties_count, $limit); $plisting_fields = $this->model->get_plisting_fields(); $wpl_properties = array(); foreach ($properties as $property) { $wpl_properties[$property->id] = $this->model->full_render($property->id, $plisting_fields, $property); } $this->wpl_properties = $wpl_properties; return true; }
/** * For inserting logs in the logs table * @author Howard R <*****@*****.**> * @static * @param string $log_text * @param string $section * @param int $status * @param int $user_id * @param int $addon_id * @param int $priority * @param array $params * @return int */ public static function add($log_text, $section = '', $status = 1, $user_id = '', $addon_id = '', $priority = 3, $params = array()) { if (trim($log_text) == '') { return 0; } /** set parameters **/ $section = trim($section) != '' ? $section : 'no section'; $status = trim($status) != '' ? $status : 1; $user_id = trim($user_id) != '' ? $user_id : wpl_users::get_cur_user_id(); $addon_id = trim($addon_id) != '' ? $addon_id : 0; $log_date = date("Y-m-d H:i:s"); $ip = wpl_users::get_current_ip(); $params = json_encode($params); $query = "INSERT INTO `#__wpl_logs` (`user_id`,`addon_id`,`section`,`status`,`log_text`,`log_date`,`ip`,`priority`,`params`) VALUES ('{$user_id}','{$addon_id}','{$section}','{$status}','{$log_text}','{$log_date}','{$ip}','{$priority}','{$params}');"; return wpl_db::q($query, 'insert'); }
public function profile($instance = array()) { /** check access **/ if (!wpl_users::check_access('profilewizard')) { /** import message tpl **/ $this->message = __("You don't have access to this part!", WPL_TEXTDOMAIN); return parent::render($this->tpl_path, 'message'); } _wpl_import('libraries.flex'); $this->tpl = 'profile'; $this->kind = wpl_flex::get_kind_id('user'); $this->user_id = wpl_users::get_cur_user_id(); if (wpl_users::is_administrator($this->user_id) and wpl_request::getVar('id', 0)) { $this->user_id = wpl_request::getVar('id'); } $this->user_fields = wpl_flex::get_fields('', 1, $this->kind, 'pwizard', 1); $this->user_data = (array) wpl_users::get_wpl_data($this->user_id); /** import tpl **/ parent::render($this->tpl_path, $this->tpl); }
/** * Return User Property Count * @author Howard R <*****@*****.**> * @static * @param int $user_id * @param string $condition * @return int */ public static function get_users_properties_count($user_id = '', $condition = '') { /** get current user id **/ if (trim($user_id) == '') { $user_id = wpl_users::get_cur_user_id(); } $query = "SELECT COUNT(id) FROM `#__wpl_properties` WHERE `user_id`='{$user_id}' " . $condition; return wpl_db::select($query, 'loadResult'); }
/** * For creating admin bar menu * @author Howard <*****@*****.**> * @global object $wp_admin_bar */ public function wpl_admin_bar_menu() { $cur_user_id = wpl_users::get_cur_user_id(); $cur_user_data = wpl_users::get_user($cur_user_id); $cur_role = wpl_users::get_role($cur_user_id, false); $wpl_roles = wpl_users::get_wpl_roles(); $menus = wpl_global::get_menus('menu', 'backend'); $submenus = wpl_global::get_menus('submenu', 'backend'); global $wp_admin_bar; /** generate pages object **/ $controller = new wpl_controller(); if (wpl_users::is_administrator($cur_user_id) or $cur_user_data->data->wpl_data->id) { /** add menus **/ foreach ($menus as $menu) { $menu_slug = (!wpl_users::is_administrator($cur_user_id) and $menu->capability != 'current') ? 'wpl_admin_profile' : $menu->menu_slug; $wp_admin_bar->add_menu(array('id' => $menu->menu_slug, 'title' => __($menu->menu_title, WPL_TEXTDOMAIN), 'href' => wpl_global::get_wp_admin_url() . 'admin.php?page=' . $menu_slug)); } /** add sub menus **/ foreach ($submenus as $submenu) { if (!wpl_users::has_menu_access($submenu->menu_slug)) { continue; } if (!wpl_users::is_administrator($cur_user_id) and $submenu->capability != 'current') { continue; } $menu_title = $submenu->separator ? $controller->wpl_add_separator() . __($submenu->menu_title, WPL_TEXTDOMAIN) : __($submenu->menu_title, WPL_TEXTDOMAIN); $wp_admin_bar->add_menu(array('id' => $submenu->menu_slug, 'parent' => $submenu->parent, 'title' => $menu_title, 'href' => wpl_global::get_wp_admin_url() . 'admin.php?page=' . $submenu->menu_slug)); } } }
/** * Check user access to a certain section * @author Howard <*****@*****.**> * @static * @param string $access * @param int $user_id * @return int */ public static function check_access($access, $user_id = '') { if ($access == '') { return 1000; } /** get current user id **/ if (!trim($user_id)) { $user_id = wpl_users::get_cur_user_id(); } /** return admin access **/ if (wpl_users::is_administrator($user_id)) { return 1000; } if (!trim($user_id) or !wpl_users::is_wpl_user($user_id)) { $query = "SELECT `access_" . $access . "` FROM `#__wpl_users` WHERE `id`='-2'"; } else { $query = "SELECT `access_" . $access . "` FROM `#__wpl_users` WHERE `id`='{$user_id}'"; } $result = wpl_db::select($query, 'loadResult'); if ($result == '') { return 0; } return $result; }
/** * This function is for importing/updating properties into the WPL. It uses WPL standard format for importing * This function must call in everywhere that we need to import properties like MLS and IMPORTER Addons. * @author Howard <*****@*****.**> * @static * @param array $properties_to_import * @param string $wpl_unique_field * @param int $user_id * @param string $source * @param boolean $finalize * @param array $log_params * @return array property IDs */ public static function import($properties_to_import, $wpl_unique_field = 'mls_id', $user_id = '', $source = 'mls', $finalize = true, $log_params = array()) { if (!$user_id) { $user_id = wpl_users::get_cur_user_id(); } $pids = array(); $added = array(); // Used for logging results $updated = array(); // Used for logging results /** model **/ $model = new wpl_property(); $possible_columns = wpl_db::columns('wpl_properties'); foreach ($properties_to_import as $property_to_import) { $q = ''; $unique_value = ''; foreach ($property_to_import as $key => $row) { $wpl_field = $row['wpl_table_column'] ? $row['wpl_table_column'] : $key; $wpl_value = $row['wpl_value'] ? $row['wpl_value'] : ''; /** validation table column **/ if (!in_array($wpl_field, $possible_columns)) { continue; } /** set unique value **/ if ($wpl_field == $wpl_unique_field) { $unique_value = $wpl_value; } /** set user id value **/ if ($wpl_field == 'user_id') { $user_id = $wpl_value; } $q .= "`{$wpl_field}`='" . wpl_db::escape($wpl_value) . "',"; } $exists = $model->get_properties_count(" AND `{$wpl_unique_field}`='{$unique_value}'"); if (!$exists) { $pid = $model->create_property_default($user_id); } else { $pid = $model->pid($unique_value, $wpl_unique_field); } /** add property id to return **/ $pids[] = $pid; /** Add source and last sync date **/ if (in_array('source', $possible_columns) and in_array('last_sync_date', $possible_columns)) { $q .= "`source`='{$source}',"; $q .= "`last_sync_date`='" . date('Y-m-d H:i:s') . "',"; } $q = trim($q, ', '); $query = "UPDATE `#__wpl_properties` SET " . $q . " WHERE `id`='" . $pid . "'"; wpl_db::q($query); if ($finalize) { $mode = $exists ? 'edit' : 'add'; $model->finalize($pid, $mode, $user_id); } if ($exists) { $added[] = $unique_value; } else { $updated[] = $unique_value; } } /** Creating Log **/ if ($source == 'mls' and wpl_global::check_addon('mls')) { _wpl_import('libraries.addon_mls'); if (method_exists('wpl_addon_mls', 'log')) { wpl_addon_mls::log($added, $updated, $log_params); } } return $pids; }