Fixing search user query. see BT#6708

1.9.x
Julio Montoya 12 years ago
parent 6145ecbe5e
commit 5f631064a2
  1. 43
      main/inc/lib/usermanager.lib.php
  2. 9
      main/social/search.php

@ -3086,6 +3086,7 @@ class UserManager
$user_table = Database::get_main_table(TABLE_MAIN_USER); $user_table = Database::get_main_table(TABLE_MAIN_USER);
$table_user_tag = Database::get_main_table(TABLE_MAIN_TAG); $table_user_tag = Database::get_main_table(TABLE_MAIN_TAG);
$table_user_tag_values = Database::get_main_table(TABLE_MAIN_USER_REL_TAG); $table_user_tag_values = Database::get_main_table(TABLE_MAIN_USER_REL_TAG);
$access_url_rel_user_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tag = Database::escape_string($tag); $tag = Database::escape_string($tag);
$field_id = intval($field_id); $field_id = intval($field_id);
@ -3097,32 +3098,30 @@ class UserManager
$where_field = " field_id = $field_id AND "; $where_field = " field_id = $field_id AND ";
} }
$addInnerJoin = null;
if (true) {
$access_url_rel_user_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$addInnerJoin = " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id = url_rel_user.user_id)";
}
// all the information of the field // all the information of the field
if ($getCount) { if ($getCount) {
$select = "SELECT count(u.user_id) count"; $select = "SELECT count(DISTINCT u.user_id) count";
} else { } else {
$select = "SELECT u.user_id, u.username, firstname, lastname, email, tag, picture_uri"; $select = "SELECT DISTINCT u.user_id, u.username, firstname, lastname, email, tag, picture_uri";
} }
$sql = " $select $sql = " $select
FROM $user_table u $addInnerJoin FROM $user_table u
LEFT JOIN $table_user_tag_values uv ON (u.user_id AND uv.user_id) LEFT JOIN $table_user_tag ut ON (uv.tag_id = ut.id) INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id = url_rel_user.user_id)
LEFT JOIN $table_user_tag_values uv ON (u.user_id AND uv.user_id AND uv.user_id = url_rel_user.user_id)
LEFT JOIN $table_user_tag ut ON (uv.tag_id = ut.id)
WHERE WHERE
($where_field tag LIKE '$tag%') OR ($where_field tag LIKE '$tag%') OR
(u.firstname LIKE '%".$tag."%' OR u.lastname LIKE '%".$tag."%' OR (
u.username LIKE '%".$tag."%' OR concat(u.firstname,' ',u.lastname) LIKE '%".$tag."%' OR u.firstname LIKE '%".$tag."%' OR
concat(u.lastname,' ',u.firstname) LIKE '%".$tag."%' )"; u.lastname LIKE '%".$tag."%' OR
u.username LIKE '%".$tag."%' OR
if (api_get_multiple_access_url() && api_get_current_access_url_id() != -1) { concat(u.firstname,' ',u.lastname) LIKE '%".$tag."%' OR
$sql.= " AND url_rel_user.access_url_id=".api_get_current_access_url_id(); concat(u.lastname,' ',u.firstname) LIKE '%".$tag."%'
} )
AND
url_rel_user.access_url_id=".api_get_current_access_url_id();
$keyword_active = true; $keyword_active = true;
// only active users // only active users
@ -3131,11 +3130,12 @@ class UserManager
} }
// avoid anonymous // avoid anonymous
$sql .= " AND u.status <> 6 "; $sql .= " AND u.status <> 6 ";
$sql .= " ORDER BY username";
$sql .= " LIMIT $from , $number_of_items";
$sql .= "ORDER BY username";
$sql .= " LIMIT $from,$number_of_items";
$result = Database::query($sql); $result = Database::query($sql);
$return = array(); $return = array();
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
if ($getCount) { if ($getCount) {
$row = Database::fetch_array($result, 'ASSOC'); $row = Database::fetch_array($result, 'ASSOC');
@ -3143,9 +3143,8 @@ class UserManager
} }
while ($row = Database::fetch_array($result, 'ASSOC')) { while ($row = Database::fetch_array($result, 'ASSOC')) {
if (isset($return[$row['user_id']]) && !empty($return[$row['user_id']]['tag'])) { if (isset($return[$row['user_id']]) && !empty($return[$row['user_id']]['tag'])) {
$row['tag'] = $return[$row['user_id']]['tag'].' '.Display::url($row['tag'], api_get_path(WEB_PATH).'main/social/search.php?q='.$row['tag'], array('class' => 'tag')); $url = Display::url($row['tag'], api_get_path(WEB_PATH).'main/social/search.php?q='.$row['tag'], array('class' => 'tag'));
} else { $row['tag'] = $url;
$row['tag'] = Display::url($row['tag'], api_get_path(WEB_PATH).'main/social/search.php?q='.$row['tag'], array('class' => 'tag'));
} }
$return[$row['user_id']] = $row; $return[$row['user_id']] = $row;
} }

@ -195,12 +195,9 @@ if ($query != '') {
$status_icon = Display::span('', array('class' => 'offline_user_in_text')); $status_icon = Display::span('', array('class' => 'offline_user_in_text'));
} }
$user['tag'] = isset($user['tag']) ? $user['tag'] : null; $tag = isset($user['tag']) ? ' <br /><br />'.$user['tag'] : null;
$user_info['complete_name'] = Display::url( $user_info['complete_name'] = Display::url($status_icon.$user_info['complete_name'], $url);
$status_icon.$user_info['complete_name'],
$url
).'<br /><br />'.$user['tag'];
$invitations = $user['tag'].$send_inv.$send_msg; $invitations = $user['tag'].$send_inv.$send_msg;
@ -265,7 +262,7 @@ if ($query != '') {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>'; $item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>'; $item_3 = '<div class="box_description_group_content" ></div>';
} }
$item_4 = '<div class="box_description_group_tags" >'.$tags.'</div>'; $item_4 = '<div class="box_description_group_tags">'.$tags.'</div>';
$item_5 = '<div class="box_description_group_actions" >'.$url_open.get_lang('SeeMore').$url_close.'</div>'; $item_5 = '<div class="box_description_group_actions" >'.$url_open.get_lang('SeeMore').$url_close.'</div>';
$grid_item_2 = $item_0.$item_1.$item_2.$item_3.$item_4.$item_5; $grid_item_2 = $item_0.$item_1.$item_2.$item_3.$item_4.$item_5;
$grid_groups[] = array('', $grid_item_2); $grid_groups[] = array('', $grid_item_2);

Loading…
Cancel
Save