X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fsearch.php;h=0504a77bacdab605ac7008dda55b50e407fbe566;hb=f0f8c37536df916c072d6dd5a128c94bd2653eaa;hp=c43a29520822f82a0961f9eb0c7e65726f3e81de;hpb=82af3fc3b6e003b0cbbcf4faf4ed4f0ea5c07570;p=platal.git diff --git a/modules/search.php b/modules/search.php index c43a295..0504a77 100644 --- a/modules/search.php +++ b/modules/search.php @@ -24,15 +24,16 @@ class SearchModule extends PLModule function handlers() { return array( - 'search' => $this->make_hook('quick', AUTH_PUBLIC), - 'search/adv' => $this->make_hook('advanced', AUTH_COOKIE, 'directory_ax'), - 'advanced_search.php' => $this->make_hook('redir_advanced', AUTH_PUBLIC), - 'search/autocomplete' => $this->make_hook('autocomplete', AUTH_COOKIE, 'directory_ax', NO_AUTH), - 'search/list' => $this->make_hook('list', AUTH_COOKIE, 'directory_ax', NO_AUTH), - 'jobs' => $this->make_hook('referent', AUTH_COOKIE), - 'emploi' => $this->make_hook('referent', AUTH_COOKIE), - 'referent/search' => $this->make_hook('referent', AUTH_COOKIE), - 'search/referent/countries' => $this->make_hook('referent_countries', AUTH_COOKIE), + 'search' => $this->make_hook('quick', AUTH_PUBLIC), + 'search/adv' => $this->make_hook('advanced', AUTH_COOKIE, 'directory_ax'), + 'advanced_search.php' => $this->make_hook('redir_advanced', AUTH_PUBLIC), + 'search/autocomplete' => $this->make_hook('autocomplete', AUTH_COOKIE, 'directory_ax', NO_AUTH), + 'search/list' => $this->make_hook('list', AUTH_COOKIE, 'directory_ax', NO_AUTH), + 'search/list/count' => $this->make_hook('list_count', AUTH_COOKIE, 'directory_ax', NO_AUTH), + 'jobs' => $this->make_hook('referent', AUTH_COOKIE, 'user'), + 'emploi' => $this->make_hook('referent', AUTH_COOKIE, 'user'), + 'referent/search' => $this->make_hook('referent', AUTH_COOKIE, 'user'), + 'search/referent/countries' => $this->make_hook('referent_countries', AUTH_COOKIE, 'user'), ); } @@ -96,8 +97,7 @@ class SearchModule extends PLModule if ($user) { pl_redirect($base . $user->login()); } - $_REQUEST['quick'] = $login; - $_GET['quick'] = $login; + Get::set('quick', $login); } elseif (strpos($quick, 'doc:') === 0) { $url = 'Docs/Recherche?'; $url .= 'action=search&q=' . urlencode(substr($quick, 4)); @@ -121,10 +121,9 @@ class SearchModule extends PLModule require_once 'userset.inc.php'; $view = new QuickSearchSet(); $view->addMod('minifiche', 'Mini-fiches', true, array('with_score' => true, 'starts_with' => $byletter)); + $view->addMod('map', 'Planisphère'); if (S::logged() && !Env::i('nonins')) { $view->addMod('trombi', 'Trombinoscope', false, array('with_promo' => true, 'with_score' => true)); - // TODO: Reactivate when the new map is completed. - // $view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'search/adv')); } $view->apply('search', $page, $model); @@ -150,6 +149,7 @@ class SearchModule extends PLModule function handler_advanced($page, $model = null, $byletter = null) { global $globals; + $page->addJsLink('search.js'); $page->assign('advanced',1); $networks = DirEnum::getOptions(DirEnum::NETWORKS); @@ -157,6 +157,18 @@ class SearchModule extends PLModule $networks[0] = '-'; ksort($networks); $page->assign('networking_types', $networks); + $origin_corps_list = DirEnum::getOptions(DirEnum::CURRENTCORPS); + $current_corps_list = DirEnum::getOptions(DirEnum::ORIGINCORPS); + $corps_rank_list = DirEnum::getOptions(DirEnum::CORPSRANKS); + $origin_corps_list[0] = '-'; + $current_corps_list[0] = '-'; + $corps_rank_list[0] = '-'; + ksort($origin_corps_list); + ksort($current_corps_list); + ksort($corps_rank_list); + $page->assign('origin_corps_list', $origin_corps_list); + $page->assign('current_corps_list', $current_corps_list); + $page->assign('corps_rank_list', $corps_rank_list); if (!Env::has('rechercher') && $model != 'geoloc') { $this->form_prepare(); @@ -176,8 +188,7 @@ class SearchModule extends PLModule } else { $view->addMod('minifiche', 'Mini-fiches', true, array('starts_with' => $byletter)); $view->addMod('trombi', 'Trombinoscope', false, array('with_promo' => true)); - // TODO: Reactivate when the new map is completed. - // $view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'search/adv')); + $view->addMod('map', 'Planisphère'); if (S::user()->checkPerms(User::PERM_EDIT_DIRECTORY) || S::admin()) { $view->addMod('addresses', 'Adresses postales', false); } @@ -232,17 +243,17 @@ class SearchModule extends PLModule } $enums = array( - 'binetTxt' => DirEnum::BINETS, - 'groupexTxt' => DirEnum::GROUPESX, - 'sectionTxt' => DirEnum::SECTIONS, - 'networking_typeTxt' => DirEnum::NETWORKS, - 'city' => DirEnum::LOCALITIES, - 'countryTxt' => DirEnum::COUNTRIES, - 'entreprise' => DirEnum::COMPANIES, - 'jobtermTxt' => DirEnum::JOBTERMS, - 'description' => DirEnum::JOBDESCRIPTION, - 'nationaliteTxt' => DirEnum::NATIONALITIES, - 'schoolTxt' => DirEnum::EDUSCHOOLS, + '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(); @@ -297,7 +308,22 @@ class SearchModule extends PLModule break; case 'country': $ids = DirEnum::getOptionsIter(DirEnum::COUNTRIES); - $page->assign('onchange', 'changeCountry(this.value)'); + $page->assign('onchange', 'changeAddressComponents(\'' . $type . '\', this.value)'); + break; + case 'administrative_area_level_1': + case 'administrative_area_level_2': + case 'locality': + $page->assign('onchange', 'changeAddressComponents(\'' . $type . '\', this.value)'); + case 'postal_code': + $ids = XDB::iterator("SELECT pace1.id, pace1.long_name AS field + FROM profile_addresses_components_enum AS pace1 + INNER JOIN profile_addresses_components AS pac1 ON (pac1.component_id = pace1.id) + INNER JOIN profile_addresses_components AS pac2 ON (pac1.pid = pac2.pid AND pac1.jobid = pac2.jobid AND pac1.id = pac2.id + AND pac1.groupid = pac2.groupid AND pac1.type = pac2.type) + INNER JOIN profile_addresses_components_enum AS pace2 ON (pac2.component_id = pace2.id AND FIND_IN_SET({?}, pace2.types)) + WHERE pace2.id = {?} AND FIND_IN_SET({?}, pace1.types) AND pac1.type = 'home' + GROUP BY pace1.long_name", + Env::v('previous'), Env::v('value'), $type); break; case 'diploma': if (Env::has('school') && Env::i('school') != 0) { @@ -312,21 +338,6 @@ class SearchModule extends PLModule case 'nationalite': $ids = DirEnum::getOptionsIter(DirEnum::NATIONALITIES); break; - case 'administrativearea': - if (Env::has('country')) { - $ids = DirEnum::getOptionsIter(DirEnum::ADMINAREAS, Env::v('country')); - } else { - $ids = DirEnum::getOptionsIter(DirEnum::ADMINAREAS); - } - $page->assign('onchange', 'changeAdministrativeArea(this.value)'); - break; - case 'subadministrativearea': - if (Env::has('administrativearea')) { - $ids = DirEnum::getOptionsIter(DirEnum::SUBADMINAREAS, Env::v('administrativearea')); - } else { - $ids = DirEnum::getOptionsIter(DirEnum::SUBADMINAREAS); - } - break; case 'school': $ids = DirEnum::getOptionsIter(DirEnum::EDUSCHOOLS); $page->assign('onchange', 'changeSchool(this.value)');