Fix user list extra field advanced search form see BT#12607

pull/2487/head
jmontoyaa 9 years ago
parent 7160e393d0
commit 14e0e594c4
  1. 88
      main/admin/user_list.php

@ -299,41 +299,63 @@ function prepare_user_sql_query($is_count)
}
$variables = Session::read('variables_to_show', []);
if (!empty($variables)) {
$extraField = new ExtraField('user');
$extraFieldResult = [];
$extraFieldHasData = [];
foreach ($variables as $variable) {
if (isset($_GET['extra_'.$variable])) {
if (is_array($_GET['extra_'.$variable])) {
$values = $_GET['extra_'.$variable];
} else {
$values = [$_GET['extra_'.$variable]];
}
$extraField = new ExtraField('user');
if (empty($values)) {
continue;
}
$extraFieldResult = [];
foreach ($variables as $variable) {
if (isset($_GET['extra_'.$variable])) {
if (is_array($_GET['extra_'.$variable])) {
$values = $_GET['extra_'.$variable];
} else {
$values = [$_GET['extra_'.$variable]];
}
$info = $extraField->get_handler_field_info_by_field_variable($variable);
if (empty($info)) {
continue;
}
$info = $extraField->get_handler_field_info_by_field_variable(
$variable
);
foreach ($values as $value) {
if ($info['field_type'] == ExtraField::FIELD_TYPE_TAG) {
$result = $extraField->getAllUserPerTag($info['id'], $value);
$result = empty($result) ? [] : array_column($result, 'user_id');
} else {
$result = UserManager::get_extra_user_data_by_value(
$variable,
$value
);
if (empty($info)) {
continue;
}
if (!empty($result)) {
$extraFieldResult = array_merge($extraFieldResult, $result);
foreach ($values as $value) {
if (empty($value)) {
continue;
}
if ($info['field_type'] == ExtraField::FIELD_TYPE_TAG) {
$result = $extraField->getAllUserPerTag(
$info['id'],
$value
);
$result = empty($result) ? [] : array_column(
$result,
'user_id'
);
} else {
$result = UserManager::get_extra_user_data_by_value(
$variable,
$value
);
}
$extraFieldHasData[] = true;
if (!empty($result)) {
$extraFieldResult = array_merge(
$extraFieldResult,
$result
);
}
}
}
}
}
if (!empty($extraFieldResult)) {
$sql .= " AND (u.id IN ('".implode("','", $extraFieldResult)."')) ";
if (!empty($extraFieldHasData)) {
$sql .= " AND (u.id IN ('".implode("','", $extraFieldResult)."')) ";
}
}
// adding the filter to see the user's only of the current access_url
@ -441,7 +463,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
{
$sql = prepare_user_sql_query(false);
if (!in_array($direction, array('ASC','DESC'))) {
$direction = 'ASC';
$direction = 'ASC';
}
$column = intval($column);
$from = intval($from);
@ -452,12 +474,12 @@ function get_user_data($from, $number_of_items, $column, $direction)
$sql .= " WHERE u.creator_id = ".api_get_user_id();
}
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$res = Database::query($sql);
$users = array ();
$users = array();
$t = time();
while ($user = Database::fetch_row($res)) {
$userPicture = UserManager::getUserPicture($user[0], USER_IMAGE_SIZE_SMALL);
@ -468,7 +490,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
$expiration_time = convert_sql_date($user[10]);
// if expiration date is passed, store a special value for active field
if ($expiration_time < $t) {
$user[7] = '-1';
$user[7] = '-1';
}
}

Loading…
Cancel
Save