X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile.php;h=51d65682d9f077825b67d2a62e56728a3ee89035;hb=4ca15c312b905eea712b71d077c7a8b24f9d3b01;hp=ef9bec933ed25fac7487df648a7f2d2ce13b04fc;hpb=6e32823cd4907b77bbaf4af85ef6e1be986fbeef;p=platal.git diff --git a/modules/profile.php b/modules/profile.php index ef9bec9..51d6568 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -1,6 +1,6 @@ $this->make_hook('education_js', AUTH_COOKIE), 'javascript/grades.js' => $this->make_hook('grades_js', AUTH_COOKIE), 'profile/medal' => $this->make_hook('medal', AUTH_PUBLIC), + 'profile/name_info' => $this->make_hook('name_info', AUTH_PUBLIC), 'profile/orange' => $this->make_hook('p_orange', AUTH_MDP), 'profile/usage' => $this->make_hook('p_usage', AUTH_MDP), @@ -139,6 +140,19 @@ class ProfileModule extends PLModule exit; } + function handler_name_info(&$page) + { + header('Content-Type: text/html; charset=utf-8'); + $page->changeTpl('profile/name_info.tpl', SIMPLE); + $res = XDB::iterator("SELECT name, explanations, + FIND_IN_SET('public', flags) AS public, + FIND_IN_SET('has_particle', flags) AS has_particle + FROM profile_name_search_enum + WHERE NOT FIND_IN_SET('not_displayed', flags) + ORDER BY NOT FIND_IN_SET('public', flags)"); + $page->assign('types', $res); + } + function handler_networking(&$page, $mid) { $res = XDB::query("SELECT icon @@ -224,8 +238,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; } @@ -250,25 +267,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 = ""; } @@ -294,24 +311,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); @@ -338,10 +346,26 @@ class ProfileModule extends PLModule http_redirect("http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id=$mat"); } - function handler_p_edit(&$page, $opened_tab = null, $mode = null) + function handler_p_edit(&$page, $user = null, $opened_tab = null, $mode = null) { global $globals; + if (is_null($user)) { + $user = S::user(); + if (!$user->hasProfile()) { + return PL_NOT_FOUND; + } else { + pl_redirect('profile/edit/' . $user->profile()->hrid()); + } + } else { + $user = Profile::get($user); + if (!$user) { + return PL_NOT_FOUND; + } else if (!S::user()->canEdit($user) && Platal::notAllowed()) { + return PL_FORBIDDEN; + } + } + // AX Synchronization require_once 'synchro_ax.inc.php'; if (is_ax_key_missing()) { @@ -358,7 +382,9 @@ class ProfileModule extends PLModule $page->addJsLink('grades.js'); $page->addJsLink('profile.js'); $page->addJsLink('jquery.autocomplete.js'); - $wiz = new PlWizard('Profil', PlPage::getCoreTpl('plwizard.tpl'), true, true); + $wiz = new PlWizard('Profil', PlPage::getCoreTpl('plwizard.tpl'), true, true, false); + $wiz->addUserData('profile', $user); + $wiz->addUserData('owner', $user->owner()); $this->load('page.inc.php'); $wiz->addPage('ProfileGeneral', 'Général', 'general'); $wiz->addPage('ProfileAddresses', 'Adresses personnelles', 'adresses'); @@ -367,7 +393,7 @@ class ProfileModule extends PLModule $wiz->addPage('ProfileJobs', 'Informations professionnelles', 'emploi'); $wiz->addPage('ProfileSkills', 'Compétences diverses', 'skill'); $wiz->addPage('ProfileMentor', 'Mentoring', 'mentor'); - $wiz->apply($page, 'profile/edit', $opened_tab, $mode); + $wiz->apply($page, 'profile/edit/' . $user->hrid(), $opened_tab, $mode); // Misc checks $res = XDB::query("SELECT user_id @@ -440,7 +466,7 @@ class ProfileModule extends PLModule function handler_ajax_edu(&$page, $eduid, $class) { header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('profile/edu.tpl', NO_SKIN); + $page->changeTpl('profile/general.edu.tpl', NO_SKIN); $res = XDB::iterator("SELECT id, field FROM profile_education_field_enum ORDER BY field");