- switch ($type) {
- case 'binetTxt':
- $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`';
- 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`';
- $unique = 'uid';
- $realid = '`profile_networking_enum`.`network_type`';
- break;
- case 'city':
- $db = 'geoloc_localities INNER JOIN
- profile_addresses ON (geoloc_localities.id = profile_addresses.localityId)';
- $unique = 'uid';
- $field ='geoloc_localities.name';
- break;
- case 'countryTxt':
- $db = 'geoloc_countries INNER JOIN
- profile_addresses ON (geoloc_countries.iso_3166_1_a2 = profile_addresses.countryId)';
- $unique = 'pid';
- $field = 'geoloc_countries.countryFR';
- $realid = 'geoloc_countries.iso_3166_1_a2';
- break;
- case 'entreprise':
- $db = 'profile_job_enum INNER JOIN
- profile_job ON (profile_job.jobid = profile_job_enum.id)';
- $field = 'profile_job_enum.name';
- $unique = 'profile_job.uid';
- break;
- case 'fonctionTxt':
- $db = 'fonctions_def INNER JOIN
- profile_job ON (profile_job.fonctionid = fonctions_def.id)';
- $field = 'fonction_fr';
- $unique = 'uid';
- $realid = 'fonctions_def.id';
- $beginwith = false;
- break;
- case 'groupexTxt':
- $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';
- $field2 = 'a.diminutif';
- if (strlen($q) > 2)
- $beginwith = false;
- $realid = 'a.id';
- $unique = 'm.uid';
- 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)';
- $field = 'geoloc_countries.nationalityFR';
- $realid = 'geoloc_countries.iso_3166_1_a2';
- break;
- case 'description':
- $db = 'profile_job';
- $field = 'description';
- $unique = 'uid';
- break;
- case 'schoolTxt':
- $db = 'profile_education_enum INNER JOIN
- profile_education ON (profile_education_enum.id = profile_education.eduid)';
- $field = 'profile_education_enum.name';
- $unique = 'uid';
- $realid = 'profile_education_enum.id';
- if (strlen($q) > 2)
- $beginwith = false;
- break;
- case 'secteurTxt':
- $db = 'profile_job_sector_enum INNER JOIN
- profile_job ON (profile_job.sectorid = profile_job_sector_enum.id)';
- $field = 'profile_job_sector_enum.name';
- $realid = 'profile_job_sector_enum.id';
- $unique = 'uid';
- $beginwith = false;
- break;
- case 'subSubSector':
- $db = 'profile_job_subsubsector_enum';
- $field = 'name';
- $beginwith = false;
- $unique = 'name';
- $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`';
- $beginwith = false;
- break;
- default: exit();
- }
+ if ($cache->numRows() > 0) {
+ $cached = true;
+ $data = explode("\n", $cache->fetchOneCell());
+ $list = array();
+ foreach ($data as $line) {
+ if ($line != '') {
+ $aux = explode("\t", $line);
+ $item = array(
+ 'field' => $aux[0],
+ 'nb' => $aux[1],
+ 'id' => $aux[2]
+ );
+ $item['value'] = self::format_autocomplete($item);
+ array_push($list, $item);
+ }
+ }
+ } else {
+ $enums = array(
+ 'binet_text' => DirEnum::BINETS,
+ 'groupex_text' => DirEnum::GROUPESX,
+ 'section_text' => DirEnum::SECTIONS,
+ 'networking_type_text' => DirEnum::NETWORKS,
+ 'locality_text' => DirEnum::LOCALITIES,
+ 'country_text' => DirEnum::COUNTRIES,
+ 'entreprise' => DirEnum::COMPANIES,
+ 'jobterm_text' => DirEnum::JOBTERMS,
+ 'description' => DirEnum::JOBDESCRIPTION,
+ 'nationalite_text' => DirEnum::NATIONALITIES,
+ 'school_text' => DirEnum::EDUSCHOOLS,
+ );
+ if (!array_key_exists($type, $enums)) {
+ exit();
+ }