X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile.php;h=562ebc4d9fcffb6d5a3b213c5d7352d07f250c9d;hb=efe597c5795234724bc3df508bd628f9860a9c32;hp=a7b4b1b4233e12a62f08b47fffb1d3052ad8bb82;hpb=1b5926018d2e0659fd7617529b63031a5cb8e531;p=platal.git diff --git a/modules/profile.php b/modules/profile.php index a7b4b1b..562ebc4 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -39,6 +39,7 @@ class ProfileModule extends PLModule 'profile/networking' => $this->make_hook('networking', AUTH_PUBLIC), 'profile/ajax/job' => $this->make_hook('ajax_job', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/secteur' => $this->make_hook('ajax_secteur', AUTH_COOKIE, 'user', NO_AUTH), + 'profile/ajax/ssecteur' => $this->make_hook('ajax_ssecteur', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/skill' => $this->make_hook('ajax_skill', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/searchname' => $this->make_hook('ajax_searchname', AUTH_COOKIE, 'user', NO_AUTH), 'javascript/education.js' => $this->make_hook('education_js', AUTH_COOKIE), @@ -222,8 +223,11 @@ class ProfileModule extends PLModule return PL_NOT_FOUND; } - $login = S::logged() ? User::get($x) : User::getSilent($x); + $login = (!is_numeric($x) || S::has_perms()) ? Profile::get($x) : null; if (!$login) { + if (S::logged()) { + $page->trigError($x . ' inconnu dans l\'annuaire'); + } return PL_NOT_FOUND; } @@ -248,25 +252,25 @@ class ProfileModule extends PLModule WHERE user_id = {?}", $login->id()); if ($res->fetchOneCell()) { $new = Env::v('modif') == 'new'; - $user = get_user_details($login->login(), S::v('uid'), $view); + $user = get_user_details($login->hrid(), S::v('uid'), $view); } else { $new = false; $user = array(); if (S::logged()) { - pl_redirect('marketing/public/' . $login->login()); + pl_redirect('marketing/public/' . $login->hrid()); } } // Profile view are logged. if (S::logged()) { - S::logger()->log('view_profile', $login->login()); + S::logger()->log('view_profile', $login->hrid()); } // Sets the title of the html page. $page->setTitle($login->fullName()); // Prepares the display of the user's mugshot. - $photo = 'photo/' . $login->login() . ($new ? '/req' : ''); + $photo = 'photo/' . $login->hrid() . ($new ? '/req' : ''); if (!isset($user['photo_pub']) || !has_user_right($user['photo_pub'], $view)) { $photo = ""; } @@ -292,24 +296,15 @@ class ProfileModule extends PLModule // Determines and displays the virtual alias. global $globals; - $res = XDB::query( - "SELECT alias - FROM virtual - INNER JOIN virtual_redirect USING (vid) - INNER JOIN auth_user_quick ON (user_id = {?} AND emails_alias_pub = 'public') - WHERE (redirect={?} OR redirect={?}) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $login->id(), - $login->forlifeEmail(), - // TODO(vzanotti): get ride of all @m4x.org addresses in the - // virtual redirect base, and remove this über-ugly hack. - $login->login() . '@' . $globals->mail->domain2); - $page->assign('virtualalias', $res->fetchOneCell()); + $owner = $login->owner(); + if ($owner) { + $page->assign('virtualalias', $owner->emailAlias()); + } // Adds miscellaneous properties to the display. // Adds the global user property array to the display. $page->assign_by_ref('x', $user); - $page->assign_by_ref('user', $login); + $page->assign_by_ref('user', $owner); $page->assign('logged', has_user_right('private', $view)); $page->assign('view', $view); @@ -463,25 +458,44 @@ class ProfileModule extends PLModule $page->assign('i', $id); $page->assign('job', array()); $page->assign('new', true); - $res = XDB::query("SELECT id, label - FROM emploi_secteur"); + $res = XDB::query("SELECT id, name AS label + FROM profile_job_sector_enum"); $page->assign('secteurs', $res->fetchAllAssoc()); $res = XDB::query("SELECT id, fonction_fr, FIND_IN_SET('titre', flags) AS title FROM fonctions_def ORDER BY id"); $page->assign('fonctions', $res->fetchAllAssoc()); + require_once "emails.combobox.inc.php"; + fill_email_combobox($page); } - function handler_ajax_secteur(&$page, $id, $sect, $ssect = -1) + function handler_ajax_secteur(&$page, $id, $jobid, $jobpref, $sect, $ssect = -1) { header('Content-Type: text/html; charset=utf-8'); - $res = XDB::iterator("SELECT id, label - FROM emploi_ss_secteur - WHERE secteur = {?}", $sect); + $res = XDB::iterator("SELECT id, name AS label, FIND_IN_SET('optgroup', flags) AS optgroup + FROM profile_job_subsector_enum + WHERE sectorid = {?}", $sect); $page->changeTpl('profile/jobs.secteur.tpl', NO_SKIN); $page->assign('id', $id); $page->assign('ssecteurs', $res); $page->assign('sel', $ssect); + if ($id != -1) { + $page->assign('change', 1); + $page->assign('jobid', $jobid); + $page->assign('jobpref', $jobpref); + } + } + + function handler_ajax_ssecteur(&$page, $id, $ssect, $sssect = -1) + { + header('Content-Type: text/html; charset=utf-8'); + $res = XDB::iterator("SELECT id, name AS label + FROM profile_job_subsubsector_enum + WHERE subsectorid = {?}", $ssect); + $page->changeTpl('profile/jobs.soussecteur.tpl', NO_SKIN); + $page->assign('id', $id); + $page->assign('sssecteurs', $res); + $page->assign('sel', $sssect); } function handler_ajax_skill(&$page, $cat, $id) @@ -519,9 +533,9 @@ class ProfileModule extends PLModule require_once 'validations.inc.php'; - $res = XDB::query("SELECT e.entry_year, e.grad_year, d.promo_display, FIND_IN_SET('femme', u.flags) AS sexe + $res = XDB::query("SELECT e.entry_year, e.grad_year, d.promo, FIND_IN_SET('femme', u.flags) AS sexe FROM auth_user_md5 AS u - INNER JOIN profile_display AS d ON (d.uid = u.user_id) + INNER JOIN profile_display AS d ON (d.pid = u.user_id) INNER JOIN profile_education AS e ON (e.uid = u.user_id AND FIND_IN_SET('primary', e.flags)) WHERE u.user_id = {?}", S::v('uid')); @@ -586,16 +600,16 @@ class ProfileModule extends PLModule ///// recuperations infos referent //expertise - $res = XDB::query("SELECT expertise FROM mentor WHERE uid = {?}", $user->id()); + $res = XDB::query("SELECT expertise FROM profile_mentor WHERE uid = {?}", $user->id()); $page->assign('expertise', $res->fetchOneCell()); //secteurs $secteurs = $ss_secteurs = Array(); $res = XDB::iterRow( - "SELECT s.label, ss.label - FROM mentor_secteurs AS m - LEFT JOIN emploi_secteur AS s ON(m.secteur = s.id) - LEFT JOIN emploi_ss_secteur AS ss ON(m.secteur = ss.secteur AND m.ss_secteur = ss.id) + "SELECT s.name AS label, ss.name AS label + FROM profile_mentor_sector AS m + LEFT JOIN profile_job_sector_enum AS s ON(m.sectorid = s.id) + LEFT JOIN profile_job_subsector_enum AS ss ON(m.sectorid = ss.sectorid AND m.subsectorid = ss.id) WHERE uid = {?}", $user->id()); while (list($sec, $ssec) = $res->next()) { $secteurs[] = $sec; @@ -607,8 +621,8 @@ class ProfileModule extends PLModule //pays $res = XDB::query( "SELECT gp.pays - FROM mentor_pays AS m - LEFT JOIN geoloc_pays AS gp ON(m.pid = gp.a2) + FROM profile_mentor_country AS m + LEFT JOIN geoloc_pays AS gp ON (m.country = gp.a2) WHERE uid = {?}", $user->id()); $page->assign('pays', $res->fetchColumn()); @@ -623,7 +637,7 @@ class ProfileModule extends PLModule $page->setTitle('Conseil Pro'); //recuperation des noms de secteurs - $res = XDB::iterRow("SELECT id, label FROM emploi_secteur"); + $res = XDB::iterRow("SELECT id, name AS label FROM profile_job_sector_enum"); $secteurs[''] = ''; while (list($tmp_id, $tmp_label) = $res->next()) { $secteurs[$tmp_id] = $tmp_label; @@ -631,7 +645,7 @@ class ProfileModule extends PLModule $page->assign_by_ref('secteurs', $secteurs); // nb de mentors - $res = XDB::query("SELECT count(*) FROM mentor"); + $res = XDB::query("SELECT count(*) FROM profile_mentor"); $page->assign('mentors_number', $res->fetchOneCell()); // On vient d'un formulaire @@ -642,12 +656,12 @@ class ProfileModule extends PLModule $expertise_champ = XDB::escape(Env::v('expertise')); if ($pays_sel != "''") { - $where[] = "mp.pid = $pays_sel"; + $where[] = "mp.country = $pays_sel"; } if ($secteur_sel != "''") { - $where[] = "ms.secteur = $secteur_sel"; + $where[] = "ms.sectorid = $secteur_sel"; if ($ss_secteur_sel != "''") { - $where[] = "ms.ss_secteur = $ss_secteur_sel"; + $where[] = "ms.subsectorid = $ss_secteur_sel"; } } if ($expertise_champ != "''") { @@ -657,9 +671,9 @@ class ProfileModule extends PLModule if ($where) { $where = join(' AND ', $where); - $set = new UserSet("INNER JOIN mentor AS m ON (m.uid = u.user_id) - LEFT JOIN mentor_pays AS mp ON (mp.uid = m.uid) - LEFT JOIN mentor_secteurs AS ms ON (ms.uid = m.uid)", + $set = new UserSet("INNER JOIN profile_mentor AS m ON (m.uid = u.user_id) + LEFT JOIN profile_mentor_country AS mp ON (mp.uid = m.uid) + LEFT JOIN profile_mentor_sector AS ms ON (ms.uid = m.uid)", $where); $set->addMod('mentor', 'Référents'); $set->apply('referent/search', $page, $action, $subaction); @@ -677,9 +691,9 @@ class ProfileModule extends PLModule $page->assign('onchange', 'setSSecteurs()'); $page->assign('id', 'ssect_field'); $page->assign('name', 'ss_secteur'); - $it = XDB::iterator("SELECT id,label AS field - FROM emploi_ss_secteur - WHERE secteur = {?}", $sect); + $it = XDB::iterator("SELECT id, name AS field + FROM profile_job_subsector_enum + WHERE sectorid = {?}", $sect); $page->assign('list', $it); } @@ -688,14 +702,14 @@ class ProfileModule extends PLModule header('Content-Type: text/html; charset=utf-8'); $page->changeTpl('include/field.select.tpl', NO_SKIN); $page->assign('name', 'pays_sel'); - $where = ($ssect ? ' AND ms.ss_secteur = {?}' : ''); + $where = ($ssect ? ' AND ms.subsectorid = {?}' : ''); $it = XDB::iterator("SELECT a2 AS id, pays AS field - FROM geoloc_pays AS g - INNER JOIN mentor_pays AS mp ON (mp.pid = g.a2) - INNER JOIN mentor_secteurs AS ms ON (ms.uid = mp.uid) - WHERE ms.secteur = {?} $where - GROUP BY a2 - ORDER BY pays", $sect, $ssect); + FROM geoloc_pays AS g + INNER JOIN profile_mentor_country AS mp ON (mp.country = g.a2) + INNER JOIN profile_mentor_sector AS ms ON (ms.uid = mp.uid) + WHERE ms.sectorid = {?} $where + GROUP BY a2 + ORDER BY pays", $sect, $ssect); $page->assign('list', $it); }