{
global $globals;
- $res = XDB::query("SELECT MIN(`diminutif`), MAX(`diminutif`)
- FROM `groupex`.`asso`
- WHERE `cat` = 'Promotions'");
+ $res = XDB::query("SELECT MIN(diminutif), MAX(diminutif)
+ FROM #groupex#.asso
+ WHERE cat = 'Promotions'");
list($min, $max) = $res->fetchOneRow();
$page->assign('promo_min', $min);
$page->assign('promo_max', $max);
S::logger()->log('search', 'quick=' . $quick);
}
$list = 'profile|prf|fiche|fic|referent|ref|mentor';
- if (S::has_perms()) {
+ if (S::admin()) {
$list .= '|admin|adm|ax';
}
if (preg_match('/^(' . $list . '):([-a-z]+(\.[-a-z]+(\.\d{2,4})?)?)$/', replace_accent($quick), $matches)) {
function handler_advanced(&$page, $action = null, $subaction = null)
{
global $globals;
- require_once 'geoloc.inc.php';
+ require_once 'geocoding.inc.php';
$this->load('search.inc.php');
$page->assign('advanced',1);
$page->addJsLink('jquery.autocomplete.js');
'binet' => array('field' => 'id', 'table' => 'binets_def', 'text' => 'text', 'exact' => false),
'networking_type' => array('field' => 'network_type', 'table' => 'profile_networking_enum',
'text' => 'name', 'exact' => false),
- 'groupex' => array('field' => 'id', 'table' => 'groupex.asso',
+ 'groupex' => array('field' => 'id', 'table' => '#groupex#.asso',
'text' => "(cat = 'GroupesX' OR cat = 'Institutions') AND pub = 'public' AND nom",
'exact' => false),
'section' => array('field' => 'id', 'table' => 'sections', 'text' => 'text', 'exact' => false),
// result1|nb1
// result2|nb2
// ...
- header('Content-Type: text/plain; charset="UTF-8"');
+ pl_content_headers("text/plain");
$q = preg_replace(array('/\*+$/', // always look for $q*
'/([\^\$\[\]])/', // escape special regexp char
'/\*/'), // replace joker by regexp joker
array('',
'\\\\\1',
'.*'),
- $_REQUEST['q']);
+ Env::s('q'));
if (!$q) exit();
// try to look in cached results
- $cache = XDB::query('SELECT `result`
- FROM `search_autocomplete`
- WHERE `name` = {?} AND
- `query` = {?} AND
- `generated` > NOW() - INTERVAL 1 DAY',
+ $cache = XDB::query('SELECT result
+ FROM search_autocomplete
+ WHERE name = {?} AND
+ query = {?} AND
+ generated > NOW() - INTERVAL 1 DAY',
$type, $q);
if ($res = $cache->fetchOneCell()) {
echo $res;
}
// default search
- $unique = '`user_id`';
- $db = '`auth_user_md5`';
+ $unique = 'pid';
+ $db = 'profiles';
$realid = false;
$beginwith = true;
$field2 = false;
switch ($type) {
case 'binetTxt':
- $db = '`binets_def` INNER JOIN
- `binets_ins` ON(`binets_def`.`id` = `binets_ins`.`binet_id`)';
- $field = '`binets_def`.`text`';
+ $db = 'binets_def INNER JOIN
+ binets_ins ON(binets_def.id = binets_ins.binet_id)';
+ $field = 'binets_def.text';
if (strlen($q) > 2)
$beginwith = false;
- $realid = '`binets_def`.`id`';
+ $realid = 'binets_def.id';
break;
case 'networking_typeTxt':
- $db = '`profile_networking_enum` INNER JOIN
- `profile_networking` ON(`profile_networking`.`network_type` = `profile_networking_enum`.`network_type`)';
- $field = '`profile_networking_enum`.`name`';
+ $db = 'profile_networking_enum INNER JOIN
+ profile_networking ON(profile_networking.network_type = profile_networking_enum.network_type)';
+ $field = 'profile_networking_enum.name';
$unique = 'uid';
- $realid = '`profile_networking_enum`.`network_type`';
+ $realid = 'profile_networking_enum.network_type';
break;
case 'city':
$db = 'geoloc_localities INNER JOIN
$beginwith = false;
break;
case 'groupexTxt':
- $db = "groupex.asso AS a INNER JOIN
- groupex.membres AS m ON(a.id = m.asso_id
+ $db = "#groupex#.asso AS a INNER JOIN
+ #groupex#.membres AS m ON(a.id = m.asso_id
AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')
AND a.pub = 'public')";
$field='a.nom';
break;
case 'nationaliteTxt':
$db = 'geoloc_countries INNER JOIN
- auth_user_md5 ON (geoloc_countries.a2 = auth_user_md5.nationalite
- OR geoloc_countries.a2 = auth_user_md5.nationalite2
- OR geoloc_countries.a2 = auth_user_md5.nationalite3)';
+ profile ON (geoloc_countries.a2 IN (profile.nationality1, profile.nationality2, profile.nationality3))';
$field = 'geoloc_countries.nationalityFR';
$realid = 'geoloc_countries.iso_3166_1_a2';
break;
$unique = 'uid';
$beginwith = false;
break;
- case 'sss_secteur':
+ case 'subSubSector':
$db = 'profile_job_subsubsector_enum';
$field = 'name';
$beginwith = false;
$distinct = false;
break;
case 'sectionTxt':
- $db = '`sections` INNER JOIN
- `auth_user_md5` ON(`auth_user_md5`.`section` = `sections`.`id`)';
- $field = '`sections`.`text`';
- $realid = '`sections`.`id`';
+ $db = 'sections AS acs
+ INNER JOIN profiles AS acp ON (acp.section = acs.id)';
+ $field = 'acs.text';
+ $realid = 'acs.id';
$beginwith = false;
break;
default: exit();
$res .= "\n";
}
}
- XDB::query('REPLACE INTO `search_autocomplete`
+ XDB::query('REPLACE INTO search_autocomplete
VALUES ({?}, {?}, {?}, NOW())',
$type, $q, $res);
echo $res;
function handler_list(&$page, $type = null, $idVal = null)
{
// Give the list of all values possible of type and builds a select input for it
- $field = '`text`';
- $id = '`id`';
+ $field = 'text';
+ $id = 'id';
$where = '';
switch ($type) {
case 'binet':
- $db = '`binets_def`';
+ $db = 'binets_def';
break;
case 'networking_type':
- $db = '`profile_networking_enum`';
- $field = '`name`';
- $id = '`network_type`';
+ $db = 'profile_networking_enum';
+ $field = 'name';
+ $id = 'network_type';
break;
case 'country':
$db = 'geoloc_countries';
$page->assign('onchange', 'changeCountry(this.value)');
break;
case 'fonction':
- $db = '`fonctions_def`';
- $field = '`fonction_fr`';
+ $db = 'fonctions_def';
+ $field = 'fonction_fr';
break;
case 'diploma':
- header('Content-Type: text/xml; charset="UTF-8"');
+ pl_content_headers("text/xml");
$this->get_diplomas();
$page->changeTpl('search/adv.grade.form.tpl', NO_SKIN);
return;
case 'groupex':
- $db = 'groupex.asso';
+ $db = '#groupex#.asso';
$where = " WHERE (cat = 'GroupesX' OR cat = 'Institutions') AND pub = 'public'";
$field = 'nom';
break;
case 'nationalite':
$db = 'geoloc_countries INNER JOIN
- auth_user_md5 ON (geoloc_countries.iso_3166_1_a2 = auth_user_md5.nationalite
- OR geoloc_countries.iso_3166_1_a2 = auth_user_md5.nationalite2
- OR geoloc_countries.iso_3166_1_a2 = auth_user_md5.nationalite3)';
+ profiles AS acp ON (acgp.a2 IN (acp.nationality1, acp.nationality2, acp.nationality3))';
$field = 'nationalityFR';
$id = 'iso_3166_1_a2';
break;
$page->assign('onchange', 'changeSchool(this.value)');
break;
case 'section':
- $db = '`sections`';
+ $db = 'sections';
break;
case 'secteur':
$db = 'profile_job_sector_enum INNER JOIN
default: exit();
}
if (isset($idVal)) {
- header('Content-Type: text/plain; charset="UTF-8"');
+ pl_content_headers("text/plain");
$result = XDB::query('SELECT '.$field.' AS field FROM '.$db.' WHERE '.$id.' = {?} LIMIT 1',$idVal);
echo $result->fetchOneCell();
exit();
}
- header('Content-Type: text/xml; charset="UTF-8"');
+ pl_content_headers("text/xml");
$page->changeTpl('include/field.select.tpl', NO_SKIN);
$page->assign('name', $type);
$page->assign('list', XDB::iterator('SELECT '.$field.' AS field,