From: x2003bruneau Date: Mon, 23 Apr 2007 17:33:39 +0000 (+0000) Subject: Can't search nickname on public search X-Git-Tag: xorg/0.9.14~58 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=c0c9f7720a593412356950b6653e2962e71f86b9;p=platal.git Can't search nickname on public search git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1732 839d8a87-29fc-0310-9880-83ba4fa771e5 --- diff --git a/bin/search.rebuild_db.php b/bin/search.rebuild_db.php index 829d032..9d46bdf 100755 --- a/bin/search.rebuild_db.php +++ b/bin/search.rebuild_db.php @@ -32,9 +32,10 @@ $res = XDB::iterRow('SELECT auth_user_md5.user_id, nom, prenom, nom_usage, prof LEFT JOIN auth_user_quick USING(user_id)'); $i = 0; $muls = array(1, 1, 1, 0.2); +$pub = array(true, true, true, false); while ($tmp = $res->next()) { $uid = array_shift($tmp); - _user_reindex($uid, $tmp, $muls); + _user_reindex($uid, $tmp, $muls, $pub); printf("\r%u / %u", ++$i, $res->total()); } diff --git a/include/user.func.inc.php b/include/user.func.inc.php index ae26305..03e437e 100644 --- a/include/user.func.inc.php +++ b/include/user.func.inc.php @@ -730,7 +730,7 @@ function set_user_details($uid, $details) { // }}} // {{{ function _user_reindex -function _user_reindex($uid, $keys, $muls) +function _user_reindex($uid, $keys, $muls, $pubs) { foreach ($keys as $i => $key) { if ($key == '') { @@ -742,9 +742,9 @@ function _user_reindex($uid, $keys, $muls) while ($toks) { $token = strtolower(replace_accent(array_pop($toks) . $token)); $score = ($toks ? 0 : 10 + $first) * $muls[$i]; - XDB::execute("REPLACE INTO search_name (token, uid, soundex, score) - VALUES ({?}, {?}, {?}, {?})", - $token, $uid, soundex_fr($token), $score); + XDB::execute("REPLACE INTO search_name (token, uid, soundex, score, flags) + VALUES ({?}, {?}, {?}, {?}, {?})", + $token, $uid, soundex_fr($token), $score, $pubs[$i] ? 'public' : ''); $first = 0; } } @@ -774,11 +774,11 @@ function user_reindex($uid) { XDB::execute("DELETE FROM search_name WHERE uid={?}", $uid); $res = XDB::query("SELECT prenom, nom, nom_usage, profile_nick FROM auth_user_md5 INNER JOIN auth_user_quick USING(user_id) WHERE auth_user_md5.user_id = {?}", $uid); if ($res->numRows()) { - _user_reindex($uid, $res->fetchOneRow(), array(1,1,1,0.2)); + _user_reindex($uid, $res->fetchOneRow(), array(1,1,1,0.2), array(true, true, true, false)); } else { // not in auth_user_quick => still "pending" $res = XDB::query("SELECT prenom, nom, nom_usage FROM auth_user_md5 WHERE auth_user_md5.user_id = {?}", $uid); if ($res->numRows()) { - _user_reindex($uid, $res->fetchOneRow(), array(1,1,1)); + _user_reindex($uid, $res->fetchOneRow(), array(1,1,1), array(true, true, true)); } } } diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index d4405c0..e650e57 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -284,8 +284,12 @@ class QuickSearch extends SField function get_select_statement() { $join = ""; + $and = ''; foreach ($this->strings as $i => $s) { - $join .= "INNER JOIN search_name AS sn$i ON (u.user_id = sn$i.uid)\n"; + if (!S::logged()) { + $and = "AND FIND_IN_SET('public', sn$i.flags)"; + } + $join .= "INNER JOIN search_name AS sn$i ON (u.user_id = sn$i.uid $and)\n"; } return $join; } diff --git a/upgrade/0.9.14/06_search.sql b/upgrade/0.9.14/06_search.sql index e47a7c4..32b6d7a 100644 --- a/upgrade/0.9.14/06_search.sql +++ b/upgrade/0.9.14/06_search.sql @@ -1,4 +1,5 @@ alter table search_name add column soundex char(4) not null; alter table search_name add key soundex (soundex); +alter table search_name add flags set('public') not null default ''; # vim:set syntax=mysql: