$base = 'referent/';
break;
}
- pl_redirect($base . $forlife);
+
+ require_once 'user.func.inc.php';
+ $login = get_user_forlife($forlife, '_silent_user_callback');
+ if ($login) {
+ pl_redirect($base . $login);
+ }
+ $_REQUEST['quick'] = $forlife;
+ $_GET['quick'] = $forlife;
} elseif (strpos($quick, 'doc:') === 0) {
$url = 'Docs/Recherche?';
$url .= 'action=search&q=' . urlencode(substr($quick, 4));
- $url .= '&group=' . urlencode('-Equipe,-Main,-PmWiki,-Site');
+ $url .= '&group=' . urlencode('-Equipe,-Main,-PmWiki,-Site,-Review');
pl_redirect($url);
}
}
// default search
- $q = preg_quote($q);
$unique = '`user_id`';
$db = '`auth_user_md5`';
$realid = false;
$beginwith = true;
$field2 = false;
- $qsearch = $q;
+ $qsearch = str_replace(array('%', '_'), '', $q);
switch ($type) {
case 'binetTxt':
break;
case 'firstname':
$field = '`prenom`';
- $q = '(^|[ \\-])'.$q;
$beginwith = false;
break;
case 'fonctionTxt':
$field = '`fonction_fr`';
$unique = '`uid`';
$realid = '`fonctions_def`.`id`';
- $qsearch = '(^|[ /\\-])'.$q;
$beginwith = false;
break;
case 'groupexTxt':
case 'name':
$field = '`nom`';
$field2 = '`nom_usage`';
- $qsearch = '(^|[ \\-])'.$q;
$beginwith = false;
break;
case 'nationaliteTxt':
case 'nickname':
$field = '`profile_nick`';
$db = '`auth_user_quick`';
- $qsearch = '(^|[ \\-])'.$q;
$beginwith = false;
break;
case 'poste':
default: exit();
}
+ function make_field_test($fields, $beginwith) {
+ $tests = array();
+ $tests[] = $fields . ' LIKE CONCAT({?}, \'%\')';
+ if (!$beginwith) {
+ $tests[] = $fields . ' LIKE CONCAT(\'% \', {?}, \'%\')';
+ $tests[] = $fields . ' LIKE CONCAT(\'%-\', {?}, \'%\')';
+ }
+ return '(' . implode(' OR ', $tests) . ')';
+ }
$field_select = $field;
+ $field_t = make_field_test($field, $beginwith);
if ($field2) {
- $field_select = 'IF('.$field.' REGEXP {?}, '.$field.', '.$field2.')';
- }
-
- if ($beginwith) {
- $qsearch = '^'.$qsearch;
+ $field2_t = make_field_test($field2, $beginwith);
+ $field_select = 'IF(' . $field_t . ', ' . $field . ', ' . $field2. ')';
}
- $list = XDB::iterator('SELECT '.$field_select.' AS field,
- COUNT(DISTINCT '.$unique.') AS nb
- '.($realid?(', '.$realid.' AS id'):'').'
- FROM '.$db.'
- WHERE '.$field.' REGEXP {?}'.
- ($field2?(' OR '.$field2.' REGEXP {?}'):'').'
- GROUP BY '.$field_select.'
+ $list = XDB::iterator('SELECT ' . $field_select . ' AS field,
+ COUNT(DISTINCT ' . $unique . ') AS nb
+ ' . ($realid ? (', ' . $realid . ' AS id') : '') . '
+ FROM ' . $db . '
+ WHERE ' . $field_t .
+ ($field2 ? (' OR ' . $field2_t) : '') . '
+ GROUP BY ' . $field_select . '
ORDER BY nb DESC
LIMIT 11',
- $qsearch, $qsearch, $qsearch, $qsearch);
+ $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch,
+ $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch);
$nbResults = 0;
$res = "";
while ($result = $list->next()) {