From 2e24c76b58f5e250bc9b68e0326eb5f2744c807b Mon Sep 17 00:00:00 2001 From: Alejandro Gallardo Date: Tue, 28 Oct 2014 13:15:23 +0100 Subject: [PATCH] Add additional search by user or group and extra user fields in social search --- main/inc/lib/usermanager.lib.php | 108 ++++++++++++++++++++++++++++++- main/social/search.php | 43 ++++++++---- 2 files changed, 135 insertions(+), 16 deletions(-) diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 7136bc5ce4..b4cef4a654 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -3568,6 +3568,7 @@ class UserManager $number_of_items = intval($number_of_items); $where_field = ""; + $where_extra_fields = UserManager::get_search_form_where_extra_fields(); if ($field_id != 0) { $where_field = " field_id = $field_id AND "; } @@ -3594,6 +3595,7 @@ class UserManager concat(u.firstname,' ',u.lastname) LIKE '%".$tag."%' OR concat(u.lastname,' ',u.firstname) LIKE '%".$tag."%' ) + ".(!empty($where_extra_fields)?$where_extra_fields:'')." AND url_rel_user.access_url_id=".api_get_current_access_url_id(); @@ -3626,6 +3628,75 @@ class UserManager return $return; } + + /** + * Get extra filtrable user fields (type select) + * @return array + */ + public static function get_extra_filtrable_fields() + { + $extra_field_list = UserManager::get_extra_fields(); + $extra_filtrabe_fields = array(); + if (is_array($extra_field_list)) { + foreach ($extra_field_list as $extra_field) { + //if is enabled to filter and is a "'; + $extra_fields .= ''; + foreach ($extra_field['data'] as $option) { + $checked=''; + if (isset($_GET[$varname])) { + if ($_GET[$varname]==$option[1]) { + $checked = 'selected="true"'; + } + } + $extra_fields .= ''; + } + $extra_fields .= ''; + $extra_fields .= '  '; + } + } + + $search_type = isset($_GET['search_type']) ? $_GET['search_type'] : null; + return ' '; + + '; } - + /** * Shows the user menu */ diff --git a/main/social/search.php b/main/social/search.php index c403e5f227..1f0ee7633f 100755 --- a/main/social/search.php +++ b/main/social/search.php @@ -136,8 +136,17 @@ $this_section = SECTION_SOCIAL; $tool_name = get_lang('Search'); $interbreadcrumb[] = array('url' => 'profile.php', 'name' => get_lang('SocialNetwork')); -$query = isset($_GET['q']) ? $_GET['q'] : null; -$query_vars = array('q' => $query); +$query = isset($_GET['q']) ? $_GET['q'] : null; +$query_search_type = isset($_GET['search_type']) ? $_GET['search_type'] : null; +$extra_fields = UserManager::get_extra_filtrable_fields(); +$query_extra_fields = array(); +$query_vars = array('q' => $query, 'search_type' => $query_search_type); +foreach ($extra_fields as $extra_field) { + $field_name = 'field_'.$extra_field['variable']; + if (isset($_GET[$field_name])) { + $query_vars[$field_name]=$_GET[$field_name]; + } +} $social_avatar_block = SocialManager::show_social_avatar_block('search'); $social_menu_block = SocialManager::show_social_menu('search'); @@ -145,22 +154,28 @@ $social_menu_block = SocialManager::show_social_menu('search'); $social_right_content = '
'.UserManager::get_search_form($query).'
'; // I'm searching something -if ($query != '') { +if ($query != '' || ($query_vars['search_type']=='1' && count($query_vars)>2) ) { $itemPerPage = 9; - $page = isset($_GET['users_page_nr']) ? intval($_GET['users_page_nr']) : 1; - $totalUsers = UserManager::get_all_user_tags($_GET['q'], 0, 0, $itemPerPage, true); - - $from = intval(($page - 1) * $itemPerPage); - // Get users from tags - $users = UserManager::get_all_user_tags($_GET['q'], 0, $from, $itemPerPage); + $search_type = $_GET['search_type']; + + if ($search_type=='0' || $search_type=='1') { + $page = isset($_GET['users_page_nr']) ? intval($_GET['users_page_nr']) : 1; + $totalUsers = UserManager::get_all_user_tags($_GET['q'], 0, 0, $itemPerPage, true); + + $from = intval(($page - 1) * $itemPerPage); + // Get users from tags + $users = UserManager::get_all_user_tags($_GET['q'], 0, $from, $itemPerPage); + } - $pageGroup = isset($_GET['groups_page_nr']) ? intval($_GET['groups_page_nr']) : 1; - // Groups - $fromGroups = intval(($pageGroup - 1) * $itemPerPage); + if ($search_type=='0' || $search_type=='2') { + $pageGroup = isset($_GET['groups_page_nr']) ? intval($_GET['groups_page_nr']) : 1; + // Groups + $fromGroups = intval(($pageGroup - 1) * $itemPerPage); - $totalGroups = GroupPortalManager::get_all_group_tags($_GET['q'], 0, $itemPerPage, true); - $groups = GroupPortalManager::get_all_group_tags($_GET['q'], $fromGroups, $itemPerPage); + $totalGroups = GroupPortalManager::get_all_group_tags($_GET['q'], 0, $itemPerPage, true); + $groups = GroupPortalManager::get_all_group_tags($_GET['q'], $fromGroups, $itemPerPage); + } if (empty($users) && empty($groups)) { $social_right_content .= get_lang('SorryNoResults');