From 35aedff220db98c5ef8267502d7288c5cdc17f4a Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sat, 25 Aug 2007 18:41:30 +0200 Subject: [PATCH] Revert "Initial work on the rewriting of the profile/edit page" This reverts commit 45c358a97c9e7a0ba3c4c77b5e6d922d7482bfaa. --- classes/plwizard.php | 43 +++-------- htdocs/css/keynote.css | 45 +----------- modules/profile.php | 166 ++++++++++++++++++++++++++++++------------ templates/profile/general.tpl | 2 +- 4 files changed, 131 insertions(+), 125 deletions(-) diff --git a/classes/plwizard.php b/classes/plwizard.php index 7b6721d..9a58afe 100644 --- a/classes/plwizard.php +++ b/classes/plwizard.php @@ -69,31 +69,27 @@ class PlWizard protected $stateless; protected $pages; - protected $titles; protected $lookup; public function __construct($name, $layout, $stateless = false) { - $this->name = 'wiz_' . $name; - $this->layout = $layout; + $this->name = 'wiz_' . $name; + $this->layout = $layout; $this->stateless = $stateless; $this->pages = array(); $this->lookup = array(); - $this->titles = array(); if (!isset($_SESSION[$this->name])) { $_SESSION[$this->name] = array(); } - $_SESSION[$this->name . '_page'] = null; - $_SESSION[$this->name . '_stack'] = array(); + $_SESSION[$this->name . '_page'] = null; } - public function addPage($class, $title,$id = null) + public function addPage($class, $id = null) { if ($id != null) { $this->lookup[$id] = count($this->pages); } - $this->pages[] = $class; - $this->titles[] = $title; + $this->pages[] = $class; } public function set($varname, $value) @@ -127,7 +123,7 @@ class PlWizard $_SESSION[$this->name . '_page'] = null; } - private function getPage($id) + private function &getPage($id) { $page = $this->pages[$id]; return new $page($this); @@ -141,24 +137,15 @@ class PlWizard if (!is_null($curpage)) { $page = $this->getPage($curpage); $next = $page->process(); - $last = $curpage; switch ($next) { case PlWizard::FIRST_PAGE: $curpage = 0; break; case PlWizard::PREVIOUS_PAGE: - if (!$this->stateless && count($_SESSION[$this->name . '_stack'])) { - $curpage = array_pop($_SESSION[$this->name . '_stack']); - } elseif ($curpage && $this->stateless) { - $curpage--; - } else { - $curpage = 0; - } + $curpage--; break; case PlWizard::NEXT_PAGE: - if ($curpage < count($this->pages) - 1) { - $curpage++; - } + $curpage++; break; case PlWizard::LAST_PAGE: $curpage = count($this->pages) - 1; @@ -168,25 +155,15 @@ class PlWizard $curpage = is_numeric($next) ? $next : $this->lookup[$curpage]; break; } - if (!$this->stateless) { - array_push($_SESSION[$this->name . '_stack'], $last); - } + } else { + $curpage = 0; } if ($this->stateless && (in_array($pgid, $this->lookup) || isset($this->pages[$pgid]))) { $curpage = $pgid; } - if (is_null($curpage)) { - $curpage = 0; - } // Prepare the page $page = $this->getPage($curpage); - $smarty->changeTpl($this->layout); - $smarty->assign('pages', $this->titles); - $smarty->assign('current', $curpage); - $smarty->assign('stateless', $this->stateless); - $smarty->assign('wiz_baseurl', $baseurl); - $smarty->assign('tab_width', (int)(99 / count($this->pages))); $smarty->assign('wiz_page', $page->template()); $page->prepare($smarty); } diff --git a/htdocs/css/keynote.css b/htdocs/css/keynote.css index 94fa8aa..f70beff 100644 --- a/htdocs/css/keynote.css +++ b/htdocs/css/keynote.css @@ -285,50 +285,7 @@ div.long td.rt { width: 65%; } 6 Profil [ onglets des profils ] *******************************************************************************/ - -.wizard { - margin-left: -16px; -} - -.wizard .wiz_header { - height: 32px; - width: 100%; - background-color: #aaa; - margin-bottom: 1em; -} - -.wizard .wiz_header .wiz_tab { - background-color: #aaa; - vertical-align: middle; - height: 100%; - text-align: center; - font-size: 75%; - border-right: 1px solid #888; -} - -.wizard .wiz_header .active { - background-color: #444; - color: #fff; -} - -.wizard .wiz_header .wiz_tab:hover { - background-color: #777; -} - -.wizard .wiz_header .wiz_tab a { - color: #000; - text-decoration: none; - vertical-align: middle; -} - -.wizard .wiz_header .active a { - color: #fff; -} - -.wizard .wiz_content { - margin-left: 16px; -} - + table.flags, tr.flags { margin: 0.5em 0 0 0; padding: 0; diff --git a/modules/profile.php b/modules/profile.php index 5a3f125..013199d 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -130,7 +130,7 @@ class ProfileModule extends PLModule WHERE user_id = {?} AND type="photo"', S::v('uid')); } elseif (Env::v('cancel')) { - $sql = XDB::query('DELETE FROM requests + $sql = XDB::query('DELETE FROM requests WHERE user_id={?} AND type="photo"', S::v('uid')); } @@ -159,7 +159,7 @@ class ProfileModule extends PLModule if (is_numeric($x)) { $res = XDB::query( - "SELECT alias + "SELECT alias FROM aliases AS a INNER JOIN auth_user_md5 AS u ON (a.id=u.user_id AND a.type='a_vie') WHERE matricule={?}", $x); @@ -255,11 +255,19 @@ 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) + function handler_p_edit(&$page, $opened_tab = 'general') { global $globals; - // Finish registration procedure + $page->changeTpl('profile/edit.tpl'); + + $page->addCssLink('profil.css'); + $page->assign('xorg_title', 'Polytechnique.org - Mon Profil'); + + require_once dirname(__FILE__) . '/profile/tabs.inc.php'; + require_once 'profil.func.inc.php'; + require_once 'synchro_ax.inc.php'; + if (Post::v('register_from_ax_question')) { XDB::execute('UPDATE auth_user_quick SET profile_from_ax = 1 @@ -297,32 +305,96 @@ class ProfileModule extends PLModule } } - // 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::v('bestalias'), S::v('uid')); $page->trig('Ton profil a été synchronisé avec celui du site polytechniciens.com'); } - // Misc checks - // TODO: Block if birth date is missing ? + // pour tous les tabs, la date de naissance pour verifier + // quelle est bien rentree et la date. + $res = XDB::query( + "SELECT naissance, DATE_FORMAT(date, '%d.%m.%Y') + FROM auth_user_md5 + WHERE user_id={?}", S::v('uid')); + list($naissance, $date_modif_profil) = $res->fetchOneRow(); + + // lorsqu'on n'a pas la date de naissance en base de données + if (!$naissance) { + // la date de naissance n'existait pas et vient d'être soumise dans la variable + if (Env::has('birth')) { + //en cas d'erreur : + if (!ereg('[0-3][0-9][0-1][0-9][1][9]([0-9]{2})', Env::v('birth'))) { + $page->assign('etat_naissance', 'query'); + $page->trig('Date de naissance incorrecte ou incohérente.'); + return; + } - $wiz = new PlWizard('Profil', 'core/plwizard.tpl', true); - require_once dirname(__FILE__) . '/profile/page.inc.php'; - $wiz->addPage('ProfileGeneral', 'Général', 'general'); - $wiz->addPage('ProfileAddress', 'Adresses personnelles', 'adresses'); - $wiz->addPage('ProfileGroups', 'Groupes X - Binets', 'poly'); - $wiz->addPage('ProfileDeco', 'Décorations - Medals', 'deco'); - $wiz->addPage('ProfilePro', 'Informations professionnelles', 'emploi'); - $wiz->addPage('ProfileSkills', 'Compétences diverses', 'skill'); - $wiz->addPage('ProfileMentor', 'Mentoring', 'mentor'); - $wiz->apply($page, 'profile/edit', $opened_tab); + //sinon + $birth = sprintf("%s-%s-%s", substr(Env::v('birth'), 4, 4), + substr(Env::v('birth'), 2, 2), + substr(Env::v('birth'), 0, 2)); + XDB::execute("UPDATE auth_user_md5 + SET naissance={?} + WHERE user_id={?}", $birth, + S::v('uid')); + $page->assign('etat_naissance', 'ok'); + return; + } - $page->addCssLink('profil.css'); - $page->assign('xorg_title', 'Polytechnique.org - Mon Profil'); + $page->assign('etat_naissance', 'query'); + return; // on affiche le formulaire pour naissance + } + + //doit-on faire un update ? + if (Env::has('modifier') || Env::has('suivant')) { + require_once dirname(__FILE__) . "/profile/get_{$opened_tab}.inc.php"; + require_once dirname(__FILE__) . "/profile/verif_{$opened_tab}.inc.php"; + + if($page->nb_errs()) { + require_once dirname(__FILE__) . "/profile/assign_{$opened_tab}.inc.php"; + $page->assign('onglet', $opened_tab); + $page->assign('onglet_tpl', "profile/$opened_tab.tpl"); + return; + } + + $date=date("Y-m-j");//nouvelle date de mise a jour + + //On sauvegarde l'uid pour l'AX + /* on sauvegarde les changements dans user_changes : + * on a juste besoin d'insérer le user_id de la personne dans la table + */ + XDB::execute('REPLACE INTO user_changes SET user_id={?}', + S::v('uid')); + + if (!S::has('suid')) { + require_once 'notifs.inc.php'; + register_watch_op(S::v('uid'), WATCH_FICHE); + } + + // mise a jour des champs relatifs au tab ouvert + require_once dirname(__FILE__) . "/profile/update_{$opened_tab}.inc.php"; + + $log =& $_SESSION['log']; + $log->log('profil', $opened_tab); + $page->assign('etat_update', 'ok'); + } + + if (Env::has('suivant')) { + pl_redirect('profile/edit/' . get_next_tab($opened_tab)); + } + + require_once dirname(__FILE__) . "/profile/get_{$opened_tab}.inc.php"; + require_once dirname(__FILE__) . "/profile/verif_{$opened_tab}.inc.php"; + require_once dirname(__FILE__) . "/profile/assign_{$opened_tab}.inc.php"; + + $page->assign('onglet', $opened_tab); + $page->assign('onglet_tpl', "profile/$opened_tab.tpl"); + + return; } function handler_p_orange(&$page) @@ -358,7 +430,7 @@ class ProfileModule extends PLModule } elseif ($promo_sortie == $promo + 3) { XDB::execute( - "UPDATE auth_user_md5 set promo_sortie={?} + "UPDATE auth_user_md5 set promo_sortie={?} WHERE user_id={?}", $promo_sortie, S::v('uid')); $page->trig('Ton statut "orange" a été supprimé.'); $page->assign('promo_sortie_old', $promo_sortie); @@ -480,20 +552,20 @@ 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) + $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)", $where); $set->addMod('mentor', 'Référents'); $set->apply('referent/search', $page, $action, $subaction); if ($set->count() > 100) { - $page->assign('recherche_trop_large', true); + $page->assign('recherche_trop_large', true); } } - $page->changeTpl('profile/referent.tpl'); + $page->changeTpl('profile/referent.tpl'); } - function handler_ref_sect(&$page, $sect) + function handler_ref_sect(&$page, $sect) { header('Content-Type: text/html; charset=utf-8'); $page->changeTpl('include/field.select.tpl', NO_SKIN); @@ -501,7 +573,7 @@ class ProfileModule extends PLModule $page->assign('id', 'ssect_field'); $page->assign('name', 'ss_secteur'); $it = XDB::iterator("SELECT id,label AS field - FROM emploi_ss_secteur + FROM emploi_ss_secteur WHERE secteur = {?}", $sect); $page->assign('list', $it); } @@ -541,7 +613,7 @@ class ProfileModule extends PLModule $page->assign('usage_old', $usage_old); $page->assign('alias_old', $alias_old); - $nom_usage = replace_accent(trim(Env::v('nom_usage'))); + $nom_usage = replace_accent(trim(Env::v('nom_usage'))); $nom_usage = strtoupper($nom_usage); $page->assign('usage_req', $nom_usage); @@ -566,17 +638,17 @@ class ProfileModule extends PLModule { $page->changeTpl('profile/groupesx.tpl'); $page->assign('xorg_title', 'Polytechnique.org - Promo, Groupes X, Binets'); - + $req = XDB::query(' - SELECT m.asso_id, a.nom, diminutif, a.logo IS NOT NULL AS has_logo, + SELECT m.asso_id, a.nom, diminutif, a.logo IS NOT NULL AS has_logo, COUNT(e.eid) AS events, mail_domain AS lists - FROM groupex.membres AS m + FROM groupex.membres AS m INNER JOIN groupex.asso AS a ON(m.asso_id = a.id) LEFT JOIN groupex.evenements AS e ON(e.asso_id = m.asso_id AND e.archive = 0) WHERE uid = {?} GROUP BY m.asso_id ORDER BY a.nom', S::i('uid')); $page->assign('assos', $req->fetchAllAssoc()); } - + function handler_vcard(&$page, $x = null) { if (is_null($x)) { @@ -597,22 +669,22 @@ class ProfileModule extends PLModule $page->changeTpl('profile/admin_trombino.tpl'); $page->assign('xorg_title','Polytechnique.org - Administration - Trombino'); $page->assign('uid', $uid); - + $q = XDB::query( "SELECT a.alias,promo FROM auth_user_md5 AS u INNER JOIN aliases AS a ON ( u.user_id = a.id AND type='a_vie' ) WHERE user_id = {?}", $uid); list($forlife, $promo) = $q->fetchOneRow(); - + switch ($action) { - + case "original": header("Content-type: image/jpeg"); readfile("/home/web/trombino/photos".$promo."/".$forlife.".jpg"); exit; break; - + case "new": $data = file_get_contents($_FILES['userfile']['tmp_name']); list($x, $y) = getimagesize($_FILES['userfile']['tmp_name']); @@ -622,12 +694,12 @@ class ProfileModule extends PLModule "REPLACE INTO photo SET uid={?}, attachmime = {?}, attach={?}, x={?}, y={?}", $uid, $mimetype, $data, $x, $y); break; - + case "delete": XDB::execute('DELETE FROM photo WHERE uid = {?}', $uid); break; } - + $page->assign('forlife', $forlife); } function handler_admin_binets(&$page, $action = 'list', $id = null) { @@ -642,34 +714,34 @@ class ProfileModule extends PLModule $page->assign('xorg_title','Polytechnique.org - Administration - Formations'); $page->assign('title', 'Gestion des formations'); $table_editor = new PLTableEditor('admin/formations','applis_def','id'); - $table_editor->add_join_table('applis_ins','aid',true); + $table_editor->add_join_table('applis_ins','aid',true); $table_editor->describe('text','intitulé',true); $table_editor->describe('url','site web',false); $table_editor->apply($page, $action, $id); - } + } function handler_admin_groupesx(&$page, $action = 'list', $id = null) { $page->assign('xorg_title','Polytechnique.org - Administration - Groupes X'); $page->assign('title', 'Gestion des Groupes X'); $table_editor = new PLTableEditor('admin/groupes-x','groupesx_def','id'); - $table_editor->add_join_table('groupesx_ins','gid',true); + $table_editor->add_join_table('groupesx_ins','gid',true); $table_editor->describe('text','intitulé',true); $table_editor->describe('url','site web',false); $table_editor->apply($page, $action, $id); - } + } function handler_admin_sections(&$page, $action = 'list', $id = null) { $page->assign('xorg_title','Polytechnique.org - Administration - Sections'); $page->assign('title', 'Gestion des Sections'); $table_editor = new PLTableEditor('admin/sections','sections','id'); $table_editor->describe('text','intitulé',true); $table_editor->apply($page, $action, $id); - } + } function handler_admin_secteurs(&$page, $action = 'list', $id = null) { $page->assign('xorg_title','Polytechnique.org - Administration - Secteurs'); $page->assign('title', 'Gestion des Secteurs'); $table_editor = new PLTableEditor('admin/secteurs','emploi_secteur','id'); $table_editor->describe('label','intitulé',true); $table_editor->apply($page, $action, $id); - } + } function handler_admin_medals(&$page, $action = 'list', $id = null) { $page->assign('xorg_title','Polytechnique.org - Administration - Distinctions'); $page->assign('title', 'Gestion des Distinctions'); @@ -680,9 +752,9 @@ class ProfileModule extends PLModule $table_editor->apply($page, $action, $id); if ($id && $action == 'edit') { $page->changeTpl('profile/admin_decos.tpl'); - + $mid = $id; - + if (Post::v('act') == 'del') { XDB::execute('DELETE FROM profile_medals_grades WHERE mid={?} AND gid={?}', $mid, Post::i('gid')); } elseif (Post::v('act') == 'new') { @@ -696,7 +768,7 @@ class ProfileModule extends PLModule $res = XDB::iterator('SELECT gid, text, pos FROM profile_medals_grades WHERE mid={?} ORDER BY pos', $mid); $page->assign('grades', $res); } - } + } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/templates/profile/general.tpl b/templates/profile/general.tpl index bd754c6..b515d4d 100644 --- a/templates/profile/general.tpl +++ b/templates/profile/general.tpl @@ -21,7 +21,7 @@ {**************************************************************************} -{* include file="profile/applis.js.tpl" *} +{include file="profile/applis.js.tpl"}
-- 2.1.4