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;
}
// Determines is the user is registered, and fetches the user infos in
// the appropriate way.
- $res = XDB::query("SELECT perms IN ('admin','user','disabled')
- FROM auth_user_md5
- WHERE user_id = {?}", $login->id());
- if ($res->fetchOneCell()) {
+ $owner = $login->owner();
+ if (!$owner || $owner->state != 'pending') {
$new = Env::v('modif') == 'new';
- $user = get_user_details($login->login(), S::v('uid'), $view);
+ // XXX: Deprecated...
+ $user = get_user_details($login->hrid(), S::i('uid'), $view);
} else {
$new = false;
$user = array();
if (S::logged()) {
- pl_redirect('marketing/public/' . $login->login());
+ pl_redirect('marketing/public/' . $owner->login());
}
}
// 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 = "";
}
// 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);
function handler_ax(&$page, $user = null)
{
- $user = User::get($user);
+ $user = Profile::get($user);
if (!$user) {
return PL_NOT_FOUND;
}
-
- $res = XDB::query("SELECT matricule_ax
- FROM auth_user_md5
- WHERE user_id = {?}", $user->id());
- $mat = $res->fetchOneCell();
- if (!intval($mat)) {
- $page->kill("Le matricule AX de {$user->login()} est inconnu");
+ if (!$user->ax_id) {
+ $page->kill("Le matricule AX de {$user->hrid()} est inconnu");
}
- http_redirect("http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id=$mat");
+ http_redirect("http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id=" . $user->ax_id);
}
- function handler_p_edit(&$page, $opened_tab = null, $mode = null, $success = null)
+ function handler_p_edit(&$page, $user = null, $opened_tab = null, $mode = null, $success = null)
{
global $globals;
- // AX Synchronization
- require_once 'synchro_ax.inc.php';
- if (is_ax_key_missing()) {
- $page->assign('no_private_key', true);
- }
- if (Env::v('synchro_ax') == 'confirm' && !is_ax_key_missing()) {
- ax_synchronize(S::user()->login(), S::v('uid'));
- $page->trigSuccess('Ton profil a été synchronisé avec celui du site polytechniciens.com');
+ 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;
+ }
}
// Build the page
$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');
$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
- FROM auth_user_md5
- WHERE user_id = {?} AND naissance = '0000-00-00'", S::i('uid'));
- if ($res->numRows()) {
+ if (!$user->birthdate) {
$page->trigWarning("Ta date de naissance n'est pas renseignée, ce qui t'empêcheras de réaliser"
. " la procédure de récupération de mot de passe si un jour tu le perdais.");
}
$page->assign('names', build_javascript_names($data));
}
- function handler_p_orange(&$page)
+ function handler_p_orange(&$page, $pid = null)
{
$page->changeTpl('profile/orange.tpl');
require_once 'validations.inc.php';
-
- $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.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'));
-
- list($promo, $promo_sortie_old, $promo_display, $sexe) = $res->fetchOneRow();
- $page->assign('promo_sortie_old', $promo_sortie_old);
- $page->assign('promo', $promo);
- $page->assign('promo_display', $promo_display);
- $page->assign('sexe', $sexe);
+ $profile = Profile::get($pid);
+ if (is_null($profile)) {
+ return PL_NOT_FOUND;
+ }
+ $page->assign('promo_sortie_old', $profile->grad_year);
+ $page->assign('promo', $profile->entry_year);
+ $page->assign('promo_display', $profile->promo());
+ $page->assign('sexe', $profile->isFemale());
if (!Env::has('promo_sortie')) {
return;
}
$promo_sortie = Env::i('promo_sortie');
-
+ $promo = $profile->entry_year;
if ($promo_sortie < 1000 || $promo_sortie > 9999) {
$page->trigError('L\'année de sortie doit être un nombre de quatre chiffres.');
- }
- elseif ($promo_sortie < $promo + 3) {
+ } elseif ($promo_sortie < $promo + 3) {
$page->trigError('Trop tôt !');
- }
- elseif ($promo_sortie == $promo_sortie_old) {
+ } elseif ($promo_sortie == $promo_sortie_old) {
$page->trigWarning('Tu appartiens déjà à la promotion correspondante à cette année de sortie.');
- }
- elseif ($promo_sortie == $promo + 3) {
- XDB::execute("UPDATE profile_education
+ } elseif ($promo_sortie == $promo + 3) {
+ XDB::execute('UPDATE profile_education
SET grad_year = {?}
- WHERE uid = {?} AND FIND_IN_SET('primary', flags)", $promo_sortie, S::v('uid'));
- $page->trigSuccess('Ton statut "orange" a été supprimé.');
- $page->assign('promo_sortie_old', $promo_sortie);
- }
- else {
+ WHERE uid = {?} AND FIND_IN_SET(\'primary\', flags)',
+ $promo_sortie, $profile->id());
+ $page->trigSuccess('Ton statut "orange" a été supprimé.');
+ $page->assign('promo_sortie_old', $promo_sortie);
+ } else {
$page->assign('promo_sortie', $promo_sortie);
if (Env::has('submit')) {
}
}
- function handler_referent(&$page, $x = null)
+ function handler_referent(&$page, $user)
{
require_once 'user.func.inc.php';
$page->changeTpl('profile/fiche_referent.tpl', SIMPLE);
- $user = User::get($x);
- if ($user == null) {
+ $user = Profile::get($user);
+ if (!$user) {
return PL_NOT_FOUND;
}
- $res = XDB::query("SELECT cv FROM auth_user_md5 WHERE user_id = {?}", $user->id());
- $cv = $res->fetchOneCell();
-
$page->assign_by_ref('user', $user);
- $page->assign('cv', MiniWiki::WikiToHTML($cv, true));
- $page->assign('adr_pro', get_user_details_pro($user->id()));
+ $page->assign('cv', MiniWiki::WikiToHTML($user->cv, true));
+ //TODO: waiting for job refactoring to be done
+ //$page->assign('adr_pro', get_user_details_pro($user->id()));
///// recuperations infos referent
//expertise
- $res = XDB::query("SELECT expertise FROM profile_mentor WHERE uid = {?}", $user->id());
+ $res = XDB::query('SELECT expertise
+ FROM profile_mentor
+ WHERE uid = {?}', $user->id());
$page->assign('expertise', $res->fetchOneCell());
// Sectors