projects
/
platal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Same as 7eb43a1dbfc4e582f53fd03ad6f039b8bfd04bdd
[platal.git]
/
modules
/
search.php
diff --git
a/modules/search.php
b/modules/search.php
index
0413ae2
..
4e6e93f
100644
(file)
--- a/
modules/search.php
+++ b/
modules/search.php
@@
-109,11
+109,18
@@
class SearchModule extends PLModule
$base = 'referent/';
break;
}
$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));
} 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);
}
pl_redirect($url);
}
@@
-237,13
+244,12
@@
class SearchModule extends PLModule
}
// default search
}
// default search
- $q = preg_quote($q);
$unique = '`user_id`';
$db = '`auth_user_md5`';
$realid = false;
$beginwith = true;
$field2 = false;
$unique = '`user_id`';
$db = '`auth_user_md5`';
$realid = false;
$beginwith = true;
$field2 = false;
- $qsearch =
$q
;
+ $qsearch =
str_replace(array('%', '_'), '', $q)
;
switch ($type) {
case 'binetTxt':
switch ($type) {
case 'binetTxt':
@@
-275,7
+281,6
@@
class SearchModule extends PLModule
break;
case 'firstname':
$field = '`prenom`';
break;
case 'firstname':
$field = '`prenom`';
- $q = '(^|[ \\-])'.$q;
$beginwith = false;
break;
case 'fonctionTxt':
$beginwith = false;
break;
case 'fonctionTxt':
@@
-284,7
+289,6
@@
class SearchModule extends PLModule
$field = '`fonction_fr`';
$unique = '`uid`';
$realid = '`fonctions_def`.`id`';
$field = '`fonction_fr`';
$unique = '`uid`';
$realid = '`fonctions_def`.`id`';
- $qsearch = '(^|[ /\\-])'.$q;
$beginwith = false;
break;
case 'groupexTxt':
$beginwith = false;
break;
case 'groupexTxt':
@@
-302,7
+306,6
@@
class SearchModule extends PLModule
case 'name':
$field = '`nom`';
$field2 = '`nom_usage`';
case 'name':
$field = '`nom`';
$field2 = '`nom_usage`';
- $qsearch = '(^|[ \\-])'.$q;
$beginwith = false;
break;
case 'nationaliteTxt':
$beginwith = false;
break;
case 'nationaliteTxt':
@@
-316,7
+319,6
@@
class SearchModule extends PLModule
case 'nickname':
$field = '`profile_nick`';
$db = '`auth_user_quick`';
case 'nickname':
$field = '`profile_nick`';
$db = '`auth_user_quick`';
- $qsearch = '(^|[ \\-])'.$q;
$beginwith = false;
break;
case 'poste':
$beginwith = false;
break;
case 'poste':
@@
-351,24
+353,32
@@
class SearchModule extends PLModule
default: exit();
}
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_select = $field;
+ $field_t = make_field_test($field, $beginwith);
if ($field2) {
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',
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()) {
$nbResults = 0;
$res = "";
while ($result = $list->next()) {