Exemplo n.º 1
0
 /**
  * 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) . "\");"));
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 /**
  * 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');
 }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
 /**
  * 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');
 }
Exemplo n.º 6
0
 /**
  * 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));
         }
     }
 }
Exemplo n.º 7
0
 /**
  * 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;
 }
Exemplo n.º 8
0
 /**
  * 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;
 }