From 5e172a0dfdc70163cd0100f93e1132c683bebe09 Mon Sep 17 00:00:00 2001 From: x2000coic Date: Sat, 27 Mar 2004 15:03:22 +0000 Subject: [PATCH] Migration du profil MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit c'est fonctionnel, mais sans plus : - il faut améliorer l'intégration de la css - permettre une meilleure customisation des titres des champs, des textes, des agencements... en particulier pour l'onglet mentor et compétences où le tpl appelle 2 grosses fonctions php qui font l'affichage... --- configs/menu.conf.php | 2 +- configs/profil.conf | 11 ++ htdocs/getphoto.php | 20 ++- htdocs/profil.php | 184 ++++++++++++++++++++++++ include/applis.func.inc.php | 32 +++++ include/geoloc.inc.php | 44 ++++++ include/profil.func.inc.php | 65 +++++++++ include/profil.inc.php | 13 ++ include/profil/profil_adresses.inc.php | 77 ++++++++++ include/profil/profil_emploi.inc.php | 135 ++++++++++++++++++ include/profil/profil_general.inc.php | 58 ++++++++ include/profil/profil_mentor.inc.php | 164 +++++++++++++++++++++ include/profil/profil_poly.inc.php | 93 ++++++++++++ include/profil/profil_skill.inc.php | 203 ++++++++++++++++++++++++++ include/profil/update_adresses.inc.php | 64 +++++++++ include/profil/update_emploi.inc.php | 23 +++ include/profil/update_general.inc.php | 22 +++ include/profil/update_mentor.inc.php | 10 ++ include/profil/update_poly.inc.php | 6 + include/profil/update_skill.inc.php | 5 + include/profil/verif_adresses.inc.php | 205 ++++++++++++++++++++++++++ include/profil/verif_emploi.inc.php | 87 +++++++++++ include/profil/verif_general.inc.php | 25 ++++ include/profil/verif_mentor.inc.php | 55 +++++++ include/profil/verif_poly.inc.php | 0 include/profil/verif_skill.inc.php | 4 + include/tabs.inc.php | 77 ++++++++++ templates/profil.tpl | 82 +++++++++++ templates/profil/adresses.tpl | 186 ++++++++++++++++++++++++ templates/profil/emploi.tpl | 254 +++++++++++++++++++++++++++++++++ templates/profil/general.tpl | 232 ++++++++++++++++++++++++++++++ templates/profil/mentor.tpl | 178 +++++++++++++++++++++++ templates/profil/naissance.tpl | 49 +++++++ templates/profil/poly.tpl | 134 +++++++++++++++++ templates/profil/skill.tpl | 121 ++++++++++++++++ 35 files changed, 2915 insertions(+), 5 deletions(-) create mode 100644 configs/profil.conf create mode 100644 htdocs/profil.php create mode 100644 include/geoloc.inc.php create mode 100644 include/profil.func.inc.php create mode 100644 include/profil.inc.php create mode 100644 include/profil/profil_adresses.inc.php create mode 100644 include/profil/profil_emploi.inc.php create mode 100644 include/profil/profil_general.inc.php create mode 100644 include/profil/profil_mentor.inc.php create mode 100644 include/profil/profil_poly.inc.php create mode 100644 include/profil/profil_skill.inc.php create mode 100644 include/profil/update_adresses.inc.php create mode 100644 include/profil/update_emploi.inc.php create mode 100644 include/profil/update_general.inc.php create mode 100644 include/profil/update_mentor.inc.php create mode 100644 include/profil/update_poly.inc.php create mode 100644 include/profil/update_skill.inc.php create mode 100644 include/profil/verif_adresses.inc.php create mode 100644 include/profil/verif_emploi.inc.php create mode 100644 include/profil/verif_general.inc.php create mode 100644 include/profil/verif_mentor.inc.php create mode 100644 include/profil/verif_poly.inc.php create mode 100644 include/profil/verif_skill.inc.php create mode 100644 include/tabs.inc.php create mode 100644 templates/profil.tpl create mode 100644 templates/profil/adresses.tpl create mode 100644 templates/profil/emploi.tpl create mode 100644 templates/profil/general.tpl create mode 100644 templates/profil/mentor.tpl create mode 100644 templates/profil/naissance.tpl create mode 100644 templates/profil/poly.tpl create mode 100644 templates/profil/skill.tpl diff --git a/configs/menu.conf.php b/configs/menu.conf.php index 8dc8058..e62b2af 100644 --- a/configs/menu.conf.php +++ b/configs/menu.conf.php @@ -5,7 +5,7 @@ if(logged()) { 0 => Array( 'Page d\'accueil' => 'login.php' ), 'Personnaliser' => Array( 'Mes emails' => 'emails.php' , - 'Mon profil' => '###url###' , + 'Mon profil' => 'profil.php' , 'Mes contacts' => 'mescontacts.php' , 'Mon mot de passe' => 'motdepassemd5.php' , 'Mes préférences' => 'preferences.php' diff --git a/configs/profil.conf b/configs/profil.conf new file mode 100644 index 0000000..2b5a4d6 --- /dev/null +++ b/configs/profil.conf @@ -0,0 +1,11 @@ +# +# Textes du profil +# + + +#page du formulaire pour la date de naissance +profil_naissance_erreur = """Date de naissance incorrecte ou incohérente. + Exemple: 1er février 1990 se rentre 01021990.""" +profil_naissance_titre = "Date de naissance" +profil_naissance_intro = "Avant d'accéder à ton profil pour la première fois, tu dois donner ta date de naissance au format JJMMAAAA. Elle ne sera plus demandée par la suite et ne pourra être changée. Elle servira en cas de perte du mot de passe comme sécurité supplémentaire, et uniquement à cela. Elle n'est jamais visible ou lisible." +profil_naissance_titre = "Date de naissance" diff --git a/htdocs/getphoto.php b/htdocs/getphoto.php index 8349a25..d6eb5df 100644 --- a/htdocs/getphoto.php +++ b/htdocs/getphoto.php @@ -1,14 +1,26 @@ // Example php script to demonstrate the direct passing of binary data // to the user. More infos at http://www.phpbuilder.com // Syntax: getdata.php3?id= +function url($url) { + $chemins = Array('.', '..', '/'); + foreach ($chemins as $ch) + if (file_exists("$ch/login.php") || file_exists("$ch/public/login.php")) + return "$ch/$url"; + return ""; +} + if(isset($_REQUEST['x'])) { if(isset($_REQUEST['req']) && $_REQUEST['req']="true") { $myphoto = PhotoReq::get_unique_request($_REQUEST['x']); diff --git a/htdocs/profil.php b/htdocs/profil.php new file mode 100644 index 0000000..e47bb1a --- /dev/null +++ b/htdocs/profil.php @@ -0,0 +1,184 @@ +assign_by_ref('profil_error',$str_error); + +//on charge les fonctions +require_once('profil.inc.php'); + +//on met a jour $opened_tab et $new_tab qui sont le tab du POST et le tab demande +// Tout d'abord, quel est le tab actuel ? +// si on vient d'un POST, old_tab etait le tab courant +if(isset($_REQUEST['old_tab'])) + if(isset($tabname_array[$_REQUEST['old_tab']])) // on verifie que la valeur postee existe bien + $opened_tab = $_REQUEST['old_tab']; + + +//en cas de bouton valider + passer au suivant, on definit ces deux variables +if(isset($_REQUEST['modifier+suivant'])){ + $_REQUEST['modifier'] = 'modifier'; + $_REQUEST['go_to_next'] = 'go_to_next'; +} + +$new_tab = $opened_tab; + +if(isset($_REQUEST['new_tab'])){ + if(isset($tabname_array[$_REQUEST['new_tab']])) + $new_tab = $_REQUEST['new_tab']; + else + $new_tab = $opened_tab; +} +else + $new_tab = $opened_tab; + +//echo "opening profil_{$opened_tab}.inc.php
"; +require_once("profil/profil_{$opened_tab}.inc.php"); + +// pour tous les tabs, on recupere les bits car on a besoin de tous les bits pour en mettre a jour un, la date d naissance pour verifier +// quelle est bien rentree et la date. +$sql = "SELECT ". +"FIND_IN_SET('mobile_public', bits), FIND_IN_SET('mobile_ax', bits)". +", FIND_IN_SET('web_public', bits)". +", FIND_IN_SET('libre_public', bits)". +", naissance, DATE_FORMAT(date,'%d.%m.%Y')". +" FROM auth_user_md5". +" WHERE user_id=".$_SESSION['uid']; + +$result = mysql_query($sql); +list($mobile_public, $mobile_ax, +$web_public, $libre_public, +$naissance, $date_modif_profil) = mysql_fetch_row($result); + +if(mysql_errno($conn) !=0) echo mysql_errno($conn).": ".mysql_error($conn); + +//en cas de modifications +if(isset($_REQUEST['modifier']) && ($opened_tab == 'general')){ + $mobile_public = (isset($_REQUEST['mobile_public'])); + $mobile_ax = (isset($_REQUEST['mobile_ax'])); + $libre_public = (isset($_REQUEST['libre_public'])); + $web_public = (isset($_REQUEST['web_public'])); +} + + +// lorsqu'on n'a pas la date de naissance en base de données +if (!$naissance && !$no_update_bd) { + + # la date de naissance n'existait pas et vient d'être soumise dans la variable + # $_REQUEST['birth'] + if (isset($_REQUEST['birth']) && !$no_update_bd) { + + //en cas d'erreur : + if (!ereg("[0-3][0-9][0-1][0-9][1][9]([0-9]{2})", $_REQUEST['birth'])) { + $page->assign('etat_naissance','erreur'); + $page->run();//on reaffiche le formulaire + } + + //sinon + mysql_query("UPDATE auth_user_md5 SET naissance='{$_REQUEST['birth']}' WHERE user_id=".$_SESSION['uid']); + $page->assign('etat_naissance','ok'); + $page->run(); +} +else + $page->assign('etat_naissance','query'); + $page->run();//on affiche le formulaire pour naissance +} + + +// inclure tous les tests sur les champs du formulaire +require_once("profil/verif_{$opened_tab}.inc.php"); + +if($str_error!=""){ + $new_tab = $opened_tab; +} +else{ + if(isset($_REQUEST['go_to_next'])) + $new_tab = get_next_tab($opened_tab); + + //doit-on faire un update ? + if (!empty($_REQUEST['modifier']) && !$no_update_bd) { + + $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 + */ + $sql="insert into user_changes ('{$_SESSION['uid']}')"; + /* l'insertion ne se fait que s'il n'existe pas un enregistrement avec le même + * user_id car user_id est la clé primaire. + */ + mysql_query($sql); + + //Mise a jour des bits + // bits : set('mobile_public','mobile_ax','web_public','libre_public') + $bits_reply = ""; + if ($mobile_public) $bits_reply .= 'mobile_public,'; + if ($mobile_ax) $bits_reply .= 'mobile_ax,'; + if ($web_public) $bits_reply .= 'web_public,'; + if ($libre_public) $bits_reply .= 'libre_public,'; + if (!empty($bits_reply)) $bits_reply = substr($bits_reply, 0, -1); + $sql = "UPDATE auth_user_md5 set bits = '$bits_reply'"; + // si on est en suid on ne met pas à jour la date + if(isset($_SESSION['suid'])) { + $sql = $sql." WHERE user_id={$_SESSION['uid']}"; + } else { + $sql = $sql.",date='$date' WHERE user_id={$_SESSION['uid']}"; + } + mysql_query($sql); + + // mise a jour des champs relatifs au tab ouvert + require_once("profil/update_{$opened_tab}.inc.php"); + + //Warning : ca ne marche que si update_.inc.php contient bien une requete mysql qui mettra errno a 0 + if (mysql_errno() == 0 /*|| mysql_affected_rows() == 1*/ ) { + + $_SESSION['log']->log("profil"); + + $page->assign('etat_update','ok'); + + //echo "opening profil_$new_tab.inc.php
"; + require_once("profil/profil_{$new_tab}.inc.php"); + require_once("profil/verif_{$new_tab}.inc.php"); + } + else{ + $page->assign('etat_update','error'); + if($site_dev){ + echo mysql_error(); + echo '(message d\'erreur seulement présent en dev)
'; + } + + } + + }//fin if(update) + else { + /* le profil n'a pas encore été soumis, on se contente de l'afficher pour + * permettre une modification + * si les boutons "plus..." ont été cliqués, on indique à la variable qui + * contrôle l'affichage des listes de choix d'afficher tous les choix pour le + * bouton cliquer (ex: toutes les applis) + */ + + require_once("profil/profil_{$new_tab}.inc.php"); + require_once("profil/verif_{$new_tab}.inc.php"); + + + } +}//fin else(!erreur) + +$page->assign('onglet',$new_tab); +$page->assign('onglet_last', get_last_tab()); +$page->assign('onglet_tpl',"profil/$new_tab.tpl"); +$page->run(); + +?> diff --git a/include/applis.func.inc.php b/include/applis.func.inc.php index 80583ff..8cb9af3 100644 --- a/include/applis.func.inc.php +++ b/include/applis.func.inc.php @@ -7,7 +7,9 @@ * @see include/form_data_maj.inc.php * @see include/form_profil.inc.php * @see include/form_rech_av.inc.php + */ function applis_options($current=0) { + global $globals; echo ''; $res=$globals->db->query("select * from applis_def order by text"); while ($arr_appli=mysql_fetch_array($res)) { @@ -16,7 +18,37 @@ function applis_options($current=0) { echo '>'.$arr_appli["text"]."\n"; } } +/** pour appeller applis_options depuis smarty + */ +function _applis_options_smarty($params){ + if(!isset($params['selected'])) + $params['selected'] = 0; + applis_options($params['selected']); +} +$page->register_function('applis_options','_applis_options_smarty'); + + +/** affiche un Array javascript contenant les types de chaque appli */ +function applis_type(){ + $res=mysql_query("select type from applis_def order by text"); + if (list($appli_type)=mysql_fetch_row($res)) + echo "new Array('".str_replace(",","','",$appli_type)."')"; + while (list($appli_type)=mysql_fetch_row($res)) + echo ",\nnew Array('".str_replace(",","','",$appli_type)."')"; + mysql_free_result($res); +} +$page->register_function('applis_type','applis_type'); + +/** affiche tous les types possibles d'applis + */ +function applis_type_all(){ + $res = mysql_query("show columns from applis_def like 'type'"); + $arr_appli = mysql_fetch_array($res); + echo str_replace(")","",str_replace("set(","",$arr_appli["Type"])); + mysql_free_result($res); +} +$page->register_function('applis_type_all','applis_type_all'); /** formatte une ecole d'appli pour l'affichage */ diff --git a/include/geoloc.inc.php b/include/geoloc.inc.php new file mode 100644 index 0000000..e76ae28 --- /dev/null +++ b/include/geoloc.inc.php @@ -0,0 +1,44 @@ +%s\n",$my_id,($current==$my_id?"selected":""),$my_pays); +} +function _geoloc_pays_smarty($params){ + if(!isset($params['pays'])) + return; + geoloc_pays($params['pays']); +} +$page->register_function('geoloc_pays', '_geoloc_pays_smarty'); + +/** donne la liste deroulante des regions pour un pays + * @param $pays le pays dont on veut afficher les regions + * @param $current la region actuellement selectionnee + * @return echo + */ +function geoloc_region($pays,$current) { + $sql = "SELECT region,name FROM geoloc_region where a2='".$pays."' ORDER BY name"; + $result = mysql_query($sql); + + echo ""; + while (list($regid,$regname) = mysql_fetch_row($result)) + printf("\n",$regid,($current==$regid?"selected":""),$regname); +} +function _geoloc_region_smarty($params){ + if(!isset($params['pays'])) + return; + if(!isset($params['region'])) + return; + geoloc_region($params['pays'], $params['region']); +} +$page->register_function('geoloc_region', '_geoloc_region_smarty'); + +?> + diff --git a/include/profil.func.inc.php b/include/profil.func.inc.php new file mode 100644 index 0000000..c662071 --- /dev/null +++ b/include/profil.func.inc.php @@ -0,0 +1,65 @@ +\n",($valeur==0?"selected":"")); + while (list($my_id,$my_text) = mysql_fetch_row($result)) { + printf("\n",$my_id,($valeur==$my_id?"selected":""),$my_text); + } + mysql_free_result($result); +} + +function _select_options_smarty($params){ + if((!isset($params['table'])) || (!isset($params['valeur']))) + return; + if(!isset($params['champ'])) + $params['champ'] = 'text'; + if(!isset($params['pad']) || !($params['pad'])) + $pad = false; + else + $pad = true; + if(!isset($params['where'])) + $params['where'] = ''; + select_options($params['table'], $params['valeur'], $params['champ'], $pad, $params['where']); +} + +?> diff --git a/include/profil.inc.php b/include/profil.inc.php new file mode 100644 index 0000000..636422c --- /dev/null +++ b/include/profil.inc.php @@ -0,0 +1,13 @@ +register_modifier('print_html','_print_html_modifier'); +$page->register_function('select_db_table','_select_options_smarty'); +$page->register_function('draw_onglets','draw_all_tabs'); + + + +?> diff --git a/include/profil/profil_adresses.inc.php b/include/profil/profil_adresses.inc.php new file mode 100644 index 0000000..6fd9240 --- /dev/null +++ b/include/profil/profil_adresses.inc.php @@ -0,0 +1,77 @@ +assign_by_ref('adresses', $adresses); + +//recuperation des donnees de la bd +$res = mysql_query( + "SELECT + FIND_IN_SET('res-secondaire', statut), FIND_IN_SET('courrier', statut), + FIND_IN_SET('active', statut), FIND_IN_SET('temporaire', statut), + adr1, adr2, adr3, cp, ville, + pays, region, tel, fax, + FIND_IN_SET('adr_public', visibilite), FIND_IN_SET('adr_ax', visibilite), + FIND_IN_SET('tel_public', visibilite), FIND_IN_SET('tel_ax', visibilite) + FROM adresses + WHERE uid = {$_SESSION['uid']} AND NOT FIND_IN_SET('pro',statut) ".$sql_order +); + +$nb_adr = mysql_num_rows($res); + +for ($i = 1; $i <= $nb_adr; $i++) { + $adrid = $adrids[$i]; + list( + $adresses[$adrid]['secondaire'], $adresses[$adrid]['courrier'], + $adresses[$adrid]['active'], $adresses[$adrid]['temporaire'], + $adresses[$adrid]['adr1'], $adresses[$adrid]['adr2'], $adresses[$adrid]['adr3'], $adresses[$adrid]['cp'], $adresses[$adrid]['ville'], + $adresses[$adrid]['pays'], $adresses[$adrid]['region'], $adresses[$adrid]['tel'], $adresses[$adrid]['fax'], + $adresses[$adrid]['adr_public'], $adresses[$adrid]['adr_ax'], + $adresses[$adrid]['tel_public'], $adresses[$adrid]['tel_ax']) = mysql_fetch_row($res); + $adresses[$adrid]['nouvelle'] = 'modif'; + $adresses[$adrid]['numero_formulaire'] = -1; +} + +?> diff --git a/include/profil/profil_emploi.inc.php b/include/profil/profil_emploi.inc.php new file mode 100644 index 0000000..d57184b --- /dev/null +++ b/include/profil/profil_emploi.inc.php @@ -0,0 +1,135 @@ + \n"; + foreach($secteurs as $sid => $slabel){ + echo "\n"; + } +} +function select_fonction($fonction){ + global $fonctions, $fonctions_titre; + reset($fonctions); + echo "\n"; + foreach($fonctions as $fid => $flabel){ + if($fonctions_titre[$fid] == 1) + echo "\n"; + else + echo "\n"; + } +} +function select_ss_secteur($secteur,$ss_secteur){ + if($secteur != ''){ + echo "\n"; + $res = mysql_query("SELECT id, label FROM emploi_ss_secteur WHERE secteur = '$secteur'"); + while(list($tmp_id, $tmp_label) = mysql_fetch_row($res)){ + echo "\n"; + } + } + else{ + echo "\n"; + } +} + +//fonctions pour smarty +function _select_secteur_smarty($params){ + select_secteur($params['secteur']); +} +function _select_ss_secteur_smarty($params){ + if(!isset($params['secteur'])) return; + select_ss_secteur($params['secteur'], $params['ss_secteur']); +} +function _select_fonction_smarty($params){ + select_fonction($params['fonction']); +} +$page->register_function('select_secteur', '_select_secteur_smarty'); +$page->register_function('select_ss_secteur', '_select_ss_secteur_smarty'); +$page->register_function('select_fonction', '_select_fonction_smarty'); + + +$res = mysql_query("SELECT entrid, entreprise, secteur, ss_secteur, poste, fonction, + adr1, adr2, adr3, cp, ville, pays, region, tel, fax, + FIND_IN_SET('entreprise_public',visibilite),FIND_IN_SET('entreprise_ax',visibilite),FIND_IN_SET('adr_public',visibilite), + FIND_IN_SET('adr_ax',visibilite),FIND_IN_SET('tel_public',visibilite),FIND_IN_SET('tel_ax',visibilite) + FROM entreprises + WHERE uid = '{$_SESSION['uid']}' ORDER BY entrid"); +//echo mysql_error(); +$nb_res = mysql_num_rows($res); +for($i = 0; $i < $nb_res ; $i++){ + list($endrid[$i], $entreprise[$i], $secteur[$i], $ss_secteur[$i], $poste[$i], $fonction[$i], + $adrpro1[$i], $adrpro2[$i], $adrpro3[$i], $cppro[$i], $villepro[$i], $payspro[$i], $regionpro[$i], + $telpro[$i], $faxpro[$i], $entreprise_public[$i], $entreprise_ax[$i], $adrpro_public[$i], $adrpro_ax[$i], + $telpro_public[$i], $telpro_ax[$i]) = mysql_fetch_row($res); +} +//limite dure a 2 +for($i = $nb_res; $i < 2 ; $i++){ + $endrid[$i] = $i; + $entreprise[$i] = ''; + $secteur[$i] = ''; + $ss_secteur[$i] = ''; + $poste[$i] = ''; + $fonction[$i] = '0'; + $adrpro1[$i] = ''; + $adrpro2[$i] = ''; + $adrpro3[$i] = ''; + $cppro[$i] = ''; + $villepro[$i] = ''; + $payspro[$i] = '00'; + $regionpro[$i] = ''; + $telpro[$i] = ''; + $faxpro[$i] = ''; + $entreprise_public[$i] = ''; + $entreprise_ax[$i] =''; + $adrpro_public[$i] = ''; + $adrpro_ax[$i] = ''; + $telpro_public[$i] = ''; + $telpro_ax[$i] = ''; +} + +$page->assign_by_ref('endrid',$endrid); +$page->assign_by_ref('entreprise',$entreprise); +$page->assign_by_ref('secteur',$secteur); +$page->assign_by_ref('ss_secteur',$ss_secteur); +$page->assign_by_ref('poste',$poste); +$page->assign_by_ref('fonction',$fonction); +$page->assign_by_ref('adrpro1',$adrpro1); +$page->assign_by_ref('adrpro2',$adrpro2); +$page->assign_by_ref('adrpro3',$adrpro3); +$page->assign_by_ref('cppro',$cppro); +$page->assign_by_ref('villepro',$villepro); +$page->assign_by_ref('payspro',$payspro); +$page->assign_by_ref('regionpro',$regionpro); +$page->assign_by_ref('telpro',$telpro); +$page->assign_by_ref('faxpro',$faxpro); +$page->assign_by_ref('entreprise_public',$entreprise_public); +$page->assign_by_ref('entreprise_ax',$entreprise_ax); +$page->assign_by_ref('adrpro_public',$adrpro_public); +$page->assign_by_ref('adrpro_ax',$adrpro_ax); +$page->assign_by_ref('telpro_public',$telpro_public); +$page->assign_by_ref('telpro_ax',$telpro_ax); + +//recuperation des donnees sur les secteurs : + +$res = mysql_query("SELECT id, label from emploi_secteur"); + +while(list($tmp_secteur_id, $tmp_secteur_label) = mysql_fetch_row($res)){ + $secteurs[$tmp_secteur_id] = $tmp_secteur_label; +} + +//recuperation des donnees sur les fonctions : +$res = mysql_query("SELECT id, fonction_fr, FIND_IN_SET('titre', flags) from fonctions_def ORDER BY id"); + +while(list($tmp_fonction_id, $tmp_fonction_label, $tmp_fonction_titre) = mysql_fetch_row($res)){ + $fonctions[$tmp_fonction_id] = $tmp_fonction_label; + $fonctions_titre[$tmp_fonction_id] = $tmp_fonction_titre; +} + +//recuperation du CV +$res = mysql_query("SELECT cv from auth_user_md5 where user_id = '{$_SESSION['uid']}'"); +list($cv) = mysql_fetch_row($res); +$page->assign_by_ref('cv',$cv); + +?> diff --git a/include/profil/profil_general.inc.php b/include/profil/profil_general.inc.php new file mode 100644 index 0000000..3465d8a --- /dev/null +++ b/include/profil/profil_general.inc.php @@ -0,0 +1,58 @@ +assign_by_ref('nom', $nom); +$page->assign_by_ref('prenom', $prenom); +$page->assign_by_ref('promo', $promo); +$page->assign_by_ref('epouse', $epouse); +$page->assign_by_ref('femme', $femme); +$page->assign_by_ref('alias', $alias); + + + +replace_ifset($nationalite,'nationalite'); +$page->assign_by_ref('nationalite',$nationalite); + +replace_ifset($mobile,'mobile'); +$page->assign_by_ref('mobile',$mobile); + +replace_ifset($web,"web"); +$page->assign_by_ref('web',$web); + +replace_ifset($libre,"libre"); +$page->assign_by_ref('libre',$libre); + +replace_ifset($appli_id1,"appli_id1"); +replace_ifset($appli_id2,"appli_id2"); +$page->assign_by_ref('appli_id1',$appli_id1); +$page->assign_by_ref('appli_id2',$appli_id2); +replace_ifset($appli_type1,"appli_type1"); +replace_ifset($appli_type2,"appli_type2"); +$page->assign_by_ref('appli_type1',$appli_type1); +$page->assign_by_ref('appli_type2',$appli_type2); + +?> diff --git a/include/profil/profil_mentor.inc.php b/include/profil/profil_mentor.inc.php new file mode 100644 index 0000000..fe704aa --- /dev/null +++ b/include/profil/profil_mentor.inc.php @@ -0,0 +1,164 @@ +'; else echo ''; +?> + + + + +    + + + retirer + + +'; else echo ''; +?> + + + + + + + ajouter + + + + \n"; + $res = mysql_query("SELECT id, label FROM emploi_secteur"); + while(list($tmp_id, $tmp_label) = mysql_fetch_row($res)){ + echo "\n"; + } +} + +function select_ss_secteur($secteur,$ss_secteur){ + if($secteur != ''){ + echo "\n"; + $res = mysql_query("SELECT id, label FROM emploi_ss_secteur WHERE secteur = '$secteur'"); + while(list($tmp_id, $tmp_label) = mysql_fetch_row($res)){ + echo "\n"; + } + } + else{ + echo "\n"; + } +} + +function affiche_secteurs(){ + global $mentor_sid, $mentor_secteur, $mentor_ssid, $mentor_ss_secteur, $nb_mentor_secteurs, $max_mentor_secteurs; + global $mentor_secteur_id_new; + for($i = 1; $i <= $nb_mentor_secteurs ; $i++){ + if ($i%2) echo ''; else echo ''; +?> + + + + + + + + retirer + + +'; else echo ''; +?> + + + + + + + + ajouter + + + +register_function('print_pays','_print_pays_smarty'); +$page->register_function('print_secteurs_mentor','_print_secteurs_mentor_smarty'); + + +$max_mentor_pays = 10; +$max_mentor_secteurs = 10; + +//suppression eventuelle d'un pays +if(isset($_POST['mentor_pays_op']) && ($_POST['mentor_pays_op'] == 'retirer')) +{ + if(isset($_POST['mentor_pays_id'])) + { + $id_supprimee = $_POST['mentor_pays_id']; + mysql_query("DELETE FROM mentor_pays WHERE uid = {$_SESSION['uid']} AND pid = '$id_supprimee' LIMIT 1"); + } +} + +//suppression d'un secteur / ss-secteur +if(isset($_POST['mentor_secteur_op']) && ($_POST['mentor_secteur_op'] == 'retirer')) +{ + if(isset($_POST['mentor_secteur_id'])) + { + $id_supprimee = $_POST['mentor_secteur_id']; + mysql_query("DELETE FROM mentor_secteurs WHERE uid = {$_SESSION['uid']} AND secteur = '$id_supprimee' LIMIT 1"); + } +} + +//recuperation de l'expertise +$res = mysql_query("SELECT expertise FROM mentor WHERE uid = {$_SESSION['uid']}"); + +if(mysql_num_rows($res) > 0){ + list($mentor_expertise) = mysql_fetch_row($res); +} +else{ + $mentor_expertise = ''; +} +$mentor_expertise_bd = $mentor_expertise; + +$page->assign_by_ref('mentor_expertise', $mentor_expertise); +//recuperation des pays +$res = mysql_query("SELECT m.pid, p.pays + FROM mentor_pays AS m + LEFT JOIN geoloc_pays AS p ON(m.pid = p.a2) WHERE m.uid = {$_SESSION['uid']} LIMIT $max_mentor_pays"); + +$nb_mentor_pays = mysql_num_rows($res); +if($nb_mentor_pays > 0){ + for($i = 1; $i <= $nb_mentor_pays ; $i++) + list($mentor_pid[$i], $mentor_pays[$i]) = mysql_fetch_row($res); +} + +//recuperation des secteurs +$res = mysql_query("SELECT m.secteur, s.label, m.ss_secteur, 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(s.id = ss.secteur AND m.ss_secteur = ss.id) + WHERE m.uid = {$_SESSION['uid']} + LIMIT $max_mentor_pays"); +$nb_mentor_secteurs = mysql_num_rows($res); +if($nb_mentor_secteurs > 0){ + for($i = 1; $i <= $nb_mentor_secteurs ; $i++) + list($mentor_sid[$i], $mentor_secteur[$i], + $mentor_ssid[$i], $mentor_ss_secteur[$i]) = mysql_fetch_row($res); +} + +?> diff --git a/include/profil/profil_poly.inc.php b/include/profil/profil_poly.inc.php new file mode 100644 index 0000000..6c17304 --- /dev/null +++ b/include/profil/profil_poly.inc.php @@ -0,0 +1,93 @@ + + + + + + retirer + + + + + +   + + +register_function('print_binets','_print_binet_smarty'); + +function _print_groupex_smarty($params){ + if(!isset($params['uid'])) return; + $result = mysql_query("select * from groupesx_ins, groupesx_def where groupesx_def.id=groupesx_ins.gid and guid='{$params['uid']}'"); + while ($myrow2=mysql_fetch_array($result)) { + ?> + + + + + + + retirer + + + + + + register_function('print_groupex','_print_groupex_smarty'); + + +$sql = "SELECT u.nom, u.prenom". + ", u.promo, epouse, i.flags, section". + " FROM auth_user_md5 AS u". + " LEFT JOIN identification AS i ON(u.matricule = i.matricule) ". + " WHERE user_id=".$_SESSION['uid']; + +$result = mysql_query($sql); +list($nom, $prenom, + $promo, $epouse, $flags, $section) = mysql_fetch_row($result); + +//TODO : ne plus afficher directement les erreurs mysql... +//if(mysql_errno($conn) !=0) echo mysql_errno($conn).": ".mysql_error($conn); + +replace_ifset($section,"section"); +$page->assign_by_ref('section', $section); + +/************* gestion des binets ************/ +if (isset($_REQUEST['binet_op']) && !$no_update_bd) { + // retrait binet + if($_REQUEST['binet_op']=="retirer" && !empty($_REQUEST['binet_id'])) { + mysql_query("delete from binets_ins where user_id='{$_SESSION['uid']}' and binet_id='{$_REQUEST['binet_id']}'"); + } + // ajout binet + if ($_REQUEST['binet_op']=="ajouter" && !empty($_REQUEST['binet_id'])) { + mysql_query("insert into binets_ins (user_id,binet_id) VALUES('{$_SESSION['uid']}','{$_REQUEST['binet_id']}')"); + } +} +/************* gestion des groupes X ************/ +if (isset($_REQUEST['groupex_op']) && !$no_update_bd) { + // retrait groupe X + if ($_REQUEST['groupex_op']=="retirer" && !empty($_REQUEST['groupex_id'])) { + mysql_query("delete from groupesx_ins where guid='{$_SESSION['uid']}' and gid='{$_REQUEST['groupex_id']}'"); + } + // ajout groupe X + if ($_REQUEST['groupex_op']=="ajouter" && !empty($_REQUEST['groupex_id'])) { + mysql_query("insert into groupesx_ins (guid,gid) VALUES('{$_SESSION['uid']}','{$_REQUEST['groupex_id']}')"); + } +} + + +?> diff --git a/include/profil/profil_skill.inc.php b/include/profil/profil_skill.inc.php new file mode 100644 index 0000000..a920ab3 --- /dev/null +++ b/include/profil/profil_skill.inc.php @@ -0,0 +1,203 @@ +"; + foreach( $comppros_def as $cid => $cname){ + if($comppros_title[$cid] == 1){ + //c'est un titre de categorie + echo ""; + } + else{ + echo ""; + } + } +} + +function select_langue_name($lgname){ + global $langues_def; + reset($langues_def); + echo ""; + foreach( $langues_def as $lid => $lname){ + echo ""; + } +} + +function select_langue_level($llevel){ + global $langues_levels; + reset($langues_levels); + echo ""; + foreach( $langues_levels as $level => $levelname){ + echo ""; + } +} + +function select_comppros_level(){ + global $comppros_levels; + reset($comppros_levels); + foreach( $comppros_levels as $level => $levelname){ + echo ""; + } +} + +function affiche_langues(){ + global $nb_lg, $nb_lg_max, $langue_name, $langue_level, $langue_id; + for($i = 1; $i <= $nb_lg ; $i++){ + if ($i%2) echo ''; else echo ''; +?> + + + + +    + + + retirer + + +'; else echo ''; +?> + + + + + + + + ajouter + + + +'; else echo ''; +?> + + + + +    + + + retirer + + +'; else echo ''; +?> + + + + + + + + ajouter + + + +register_function('print_langues', '_print_langues_smarty'); +$page->register_function('print_comppros', '_print_comppros_smarty'); + + +if(isset($_REQUEST['langue_op']) && !$no_update_bd){ + if($_REQUEST['langue_op']=='retirer'){ + mysql_query("delete from langues_ins where uid='{$_SESSION['uid']}' and lid='{$_REQUEST['langue_id']}'"); + } + else if($_REQUEST['langue_op'] == 'ajouter'){ + if(isset($_REQUEST['langue_id']) && ($_REQUEST['langue_id'] != '')) + mysql_query("insert into langues_ins (uid,lid,level) VALUES('{$_SESSION['uid']}','{$_REQUEST['langue_id']}','{$_REQUEST['langue_level']}')"); + } +} + +if(isset($_REQUEST['comppros_op']) && !$no_update_bd){ + if($_REQUEST['comppros_op']=='retirer'){ + mysql_query("delete from competences_ins where uid='{$_SESSION['uid']}' and cid='{$_REQUEST['comppros_id']}'"); + } + else if($_REQUEST['comppros_op'] == 'ajouter'){ + if(isset($_REQUEST['comppros_id']) && ($_REQUEST['comppros_id'] != '')) + mysql_query("insert into competences_ins (uid,cid,level) VALUES('{$_SESSION['uid']}','{$_REQUEST['comppros_id']}','{$_REQUEST['comppros_level']}')"); + } +} + +// nombre maximum autorisé de langues +$nb_lg_max = 10; +// nombre maximum autorisé de compétences professionnelles +$nb_cpro_max = 20; + + +$res = mysql_query("SELECT ld.id, ld.langue_fr, li.level from langues_ins AS li, langues_def AS ld " + ."where (li.lid=ld.id and li.uid='{$_SESSION['uid']}') LIMIT $nb_lg_max"); + +$nb_lg = mysql_num_rows($res); + +for ($i = 1; $i <= $nb_lg; $i++) { + list($langue_id[$i], $langue_name[$i], $langue_level[$i]) = mysql_fetch_row($res); +} + +$res = mysql_query("SELECT cd.id, cd.text_fr, ci.level from competences_ins AS ci, competences_def AS cd " + ."where (ci.cid=cd.id and ci.uid='{$_SESSION['uid']}') LIMIT $nb_cpro_max"); + +$nb_cpro = mysql_num_rows($res); + +for ($i = 1; $i <= $nb_cpro; $i++) { + list($cpro_id[$i], $cpro_name[$i], $cpro_level[$i]) = mysql_fetch_row($res); +} + +//Definitions des tables de correspondances id => nom + +$langues_levels = Array( + 1 => "1", + 2 => "2", + 3 => "3", + 4 => "4", + 5 => "5", + 6 => "6" +); + +$res = mysql_query("SELECT id, langue_fr FROM langues_def"); +//echo mysql_error(); + +while(list($tmp_lid, $tmp_lg_fr) = mysql_fetch_row($res)){ + $langues_def[$tmp_lid] = $tmp_lg_fr; +} + +$comppros_levels = Array( + 'initié' => 'initié', + 'bonne connaissance' => 'bonne connaissance', + 'expert' => 'expert' +); + +$res = mysql_query("SELECT id, text_fr, FIND_IN_SET('titre',flags) FROM competences_def"); +//echo mysql_error(); + +while(list($tmp_id, $tmp_text_fr, $tmp_title) = mysql_fetch_row($res)){ + $comppros_def[$tmp_id] = $tmp_text_fr; + $comppros_title[$tmp_id] = $tmp_title; +} + +?> diff --git a/include/profil/update_adresses.inc.php b/include/profil/update_adresses.inc.php new file mode 100644 index 0000000..d05264c --- /dev/null +++ b/include/profil/update_adresses.inc.php @@ -0,0 +1,64 @@ + $adr){ + + if($adr['nouvelle'] != 'new'){ // test si on vient de creer cette adresse dans verif_adresse.inc.php + + //construction des bits + $visibilite = ""; + if ($adr['adr_public']) $visibilite .= 'adr_public,'; + if ($adr['adr_ax']) $visibilite .= 'adr_ax,'; + if ($adr['tel_public']) $visibilite .= 'tel_public,'; + if ($adr['tel_ax']) $visibilite .= 'tel_ax,'; + if (! empty($visibilite)) $visibilite = substr($visibilite, 0, -1); + + $statut = ""; + if ($adr["secondaire"]) $statut .= 'res-secondaire,'; + if ($adr["courrier"]) $statut .= 'courrier,'; + if ($adr["active"]) $statut .= 'active,'; + if ($adr["temporaire"]) $statut .= 'temporaire,'; + if (! empty($statut)) $statut = substr($statut, 0, -1); + + + if ($adr["nouvelle"] == 'ajout') { + //nouvelle adresse + mysql_query("INSERT INTO adresses SET + adr1 = '".put_in_db($adr['adr1'])."', + adr2 = '".put_in_db($adr['adr2'])."', + adr3 = '".put_in_db($adr['adr3'])."', + cp = '".put_in_db($adr['cp'])."', + ville = '".put_in_db($adr['ville'])."', + pays = '".$adr['pays']."', + region = '".$adr['region']."', + tel = '".put_in_db($adr['tel'])."', + fax = '".put_in_db($adr['fax'])."', + visibilite = '$visibilite', + datemaj = NOW(), + statut = '$statut', + uid = '{$_SESSION['uid']}', adrid = '$adrid'"); + } + + else{ + //c'est une mise à jour + mysql_query( + "UPDATE adresses SET + adr1 = '".put_in_db($adr['adr1'])."', + adr2 = '".put_in_db($adr['adr2'])."', + adr3 = '".put_in_db($adr['adr3'])."', + cp = '".put_in_db($adr['cp'])."', + ville = '".put_in_db($adr['ville'])."', + pays = '".$adr['pays']."', + region = '".$adr['region']."', + tel = '".put_in_db($adr['tel'])."', + fax = '".put_in_db($adr['fax'])."', + visibilite = '$visibilite', + datemaj = NOW(), + statut = '$statut' + WHERE uid = '".$_SESSION["uid"]."' AND adrid = '$adrid'" + ); + }// fin nouvelle / ancienne adresse + }//fin if nouvellement crée +}//fin foreach +?> diff --git a/include/profil/update_emploi.inc.php b/include/profil/update_emploi.inc.php new file mode 100644 index 0000000..749937b --- /dev/null +++ b/include/profil/update_emploi.inc.php @@ -0,0 +1,23 @@ + diff --git a/include/profil/update_general.inc.php b/include/profil/update_general.inc.php new file mode 100644 index 0000000..1f2a892 --- /dev/null +++ b/include/profil/update_general.inc.php @@ -0,0 +1,22 @@ +0) + mysql_query("replace into applis_ins set uid={$_SESSION['uid']},aid=$appli_id1,type='$appli_type1',ordre=0"); +else + mysql_query("delete from applis_ins where uid={$_SESSION['uid']} and ordre=0"); + +if ($appli_id2>0) + mysql_query("replace into applis_ins set uid={$_SESSION['uid']},aid=$appli_id2,type='$appli_type2',ordre=1"); +else + mysql_query("delete from applis_ins where uid={$_SESSION['uid']} and ordre=1"); + +$sql = "UPDATE auth_user_md5 SET ". +// champs calculés ou vérifés +"alias='$alias',nationalite=$nationalite,web='$web',". +"mobile='$mobile',". +// champs libres, on ajoute les slashes +"libre='".put_in_db($libre)."' WHERE user_id={$_SESSION['uid']}"; + + +mysql_query($sql); + +?> diff --git a/include/profil/update_mentor.inc.php b/include/profil/update_mentor.inc.php new file mode 100644 index 0000000..65906a3 --- /dev/null +++ b/include/profil/update_mentor.inc.php @@ -0,0 +1,10 @@ + diff --git a/include/profil/update_poly.inc.php b/include/profil/update_poly.inc.php new file mode 100644 index 0000000..71767ad --- /dev/null +++ b/include/profil/update_poly.inc.php @@ -0,0 +1,6 @@ + diff --git a/include/profil/update_skill.inc.php b/include/profil/update_skill.inc.php new file mode 100644 index 0000000..64387dd --- /dev/null +++ b/include/profil/update_skill.inc.php @@ -0,0 +1,5 @@ + diff --git a/include/profil/verif_adresses.inc.php b/include/profil/verif_adresses.inc.php new file mode 100644 index 0000000..4c7cb8e --- /dev/null +++ b/include/profil/verif_adresses.inc.php @@ -0,0 +1,205 @@ + retourne 1 + return 1; + reset($adresses); + $i = 0; + foreach($adresses as $numero => $adr){ + $adrid_array[$i] = $numero; + $i++; + } + sort($adrid_array,SORT_NUMERIC); // classe les adrid dans l'ordre croissant + $new_adrid = 1; + while(list($key,$current_adrid) = each($adrid_array)){ + if($current_adrid == $new_adrid) + $new_adrid++; + else + return $new_adrid; //s'ils sont differents, il y a un trou dans la liste des adrid donc new_adrid convient + } + //si aucun convient, on retourne le plus grand des adrid actuel + 1 + return $new_adrid; +} + +function replace_ifset_adr($varname, $i){ + if (isset($_REQUEST[$varname][$i])) + $GLOBALS['adresses'][$i][$varname] = stripslashes($_REQUEST[$varname][$i]); +} + +function set_flag_adr($varname,$i){ + if(isset($_REQUEST[$varname][$i])){ + $GLOBALS['adresses'][$i][$varname] = 1; + } + else + $GLOBALS['adresses'][$i][$varname] = '0'; +} + + +function replace_address($i){ + if(!isset($GLOBALS['adresses'][$i])){ + $GLOBALS['adresses'][$i]['nouvelle'] = 'ajout'; + $GLOBALS['adresses'][$i]['adrid'] = $i; + } + + replace_ifset_adr('secondaire', $i); + set_flag_adr('courrier', $i); + replace_ifset_adr('temporaire', $i); + if(isset($_REQUEST['adrid_active']) && ($_REQUEST['adrid_active'] == $i)) + $GLOBALS['adresses'][$i]['active'] = 1; + else + $GLOBALS['adresses'][$i]['active'] = 0; + replace_ifset_adr('adr1', $i); + replace_ifset_adr('adr2', $i); + replace_ifset_adr('adr3', $i); + replace_ifset_adr('cp', $i); + replace_ifset_adr('ville', $i); + replace_ifset_adr('pays', $i); + replace_ifset_adr('region', $i); + replace_ifset_adr('tel', $i); + replace_ifset_adr('fax', $i); + set_flag_adr('adr_public', $i); + set_flag_adr('adr_ax', $i); + set_flag_adr('tel_public', $i); + set_flag_adr('tel_ax', $i); + if($_REQUEST['numero_formulaire'][$i]) + $GLOBALS['adresses'][$i]['numero_formulaire'] = $_REQUEST['numero_formulaire'][$i]; + else + $GLOBALS['adresses'][$i]['numero_formulaire'] = -1; +} + + +//remplace par les eventuelles nouvelles valeurs : +for ($adrid = 1; $adrid <= $nb_adr_max; $adrid++) { + if(isset($_REQUEST['adrid'][$adrid])){ //cet adrid etait donc present dans le formulaire + replace_address($adrid); + } +} + +if(($_REQUEST['old_tab'] == 'adresses') && isset($_REQUEST['modifier'])){ // on ne valide que qd on vient du formulaire +$adresses_principales = 0; +reset($adresses); +foreach($adresses as $adrid => $adr) { + //validité de chaque adresse + $description = (($adr['numero_formulaire'] > 0)?"Adresse n°{$adr['numero_formulaire']}":"Nouvelle adresse"); + if (strlen(strtok($adr['adr1'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr1'])) + { + $str_error = $str_error."Le champ '$description - Ligne 1' contient un caractère interdit.
"; + } + if (strlen(strtok($adr['adr2'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr2'])) + { + $str_error = $str_error."Le champ '$description - Ligne 2' contient un caractère interdit.
"; + } + if (strlen(strtok($adr['adr3'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr3'])) + { + $str_error = $str_error."Le champ '$description - Ligne 3' contient un caractère interdit.
"; + } + if (strlen(strtok($adr['cp'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['cp'])) + { + $str_error = $str_error."Le champ '$description - Code Postal' contient un caractère interdit.
"; + } + if (strlen(strtok($adr['ville'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['ville'])) + { + $str_error = $str_error."Le champ '$description - Ville' contient un caractère interdit.
"; + } + if (strlen(strtok($adr['tel'],"<>{}@&#~\/:;?,!§*_`[]|%$^=\"")) < strlen($adr['tel'])) + { + $str_error = $str_error."Le champ '$description - Téléphone' contient un caractère interdit.
"; + } + if (strlen(strtok($adr['fax'],"<>{}@&#~\/:;?,!§*_`[]|%$^=\"")) < strlen($adr['fax'])) + { + $str_error = $str_error."Le champ '$description - Fax' contient un caractère interdit.
"; + } + if(!$adr['secondaire']){ + if($adresses_principales == 1){ //deja une adresse principale + $str_error = $str_error."Tu ne peux avoir qu'une résidence principale.
"; + $adresses_principales++;//pour eviter de repeter le message plusieurs fois + } + else $adresses_principales = 1; + } +} + +} + +//on vire les adresses vides : +if(isset($adresses)){ // s'il y en a + reset($adresses); + foreach($adresses as $adrid => $adr){ + if(is_adr_empty($adrid)){ + delete_address($adrid); + } + } +} +//on génère une éventuelle nouvelle adresse +if (!isset($adresses) || (count($adresses) < $nb_adr_max)){ + $adrid = generate_new_adrid(); + $adresses[$adrid]['adrid'] = $adrid; + $adr = &$adresses[$adrid]; + $adr['adr1'] = ''; + $adr['adr2'] = ''; + $adr['adr3'] = ''; + $adr['cp'] = ''; + $adr['ville'] = ''; + $adr['pays'] = '00'; + $adr['region'] = ''; + $adr['tel'] = ''; + $adr['fax'] = ''; + $adr['secondaire'] = 1; + $adr['courrier'] = 0; + $adr['active'] = 0; + $adr['temporaire'] = 1; + $adr['adr_public'] = 0; + $adr['adr_ax'] = 0; + $adr['tel_public'] = 0; + $adr['tel_ax'] = 0; + $adr['nouvelle'] = 'new'; //n'est pas issue d'un formulaire (sert dans update_adresses...) +} + +unset($adr); +unset($adrid); + +//tri des adresses : + +reset($adresses); +$i = 1; +foreach($adresses as $adrid_ => $adr_){ + if(($adresses[$adrid_]['active']) && ($adr_['nouvelle'] != 'new')){ + $ordre_des_adrid[$i] = $adrid_; + $i++; + $est_attribuee[$adrid_] = 1; + } + else + $est_attribuee[$adrid_] = 0; +} + +reset($adresses); +foreach($adresses as $adrid_ => $adr_){ + if(($adresses[$adrid_]['secondaire'] == 0) && ($est_attribuee[$adrid_] == 0) && ($adr_['nouvelle'] != 'new')){ // principale et non attribuee + $ordre_des_adrid[$i] = $adrid_; + $i++; + $est_attribuee[$adrid_] = 1; + } +} + +reset($adresses); +foreach($adresses as $adrid_ => $adr_){ + if(($adresses[$adrid_]['temporaire'] == 0) && ($est_attribuee[$adrid_] == 0) && ($adr_['nouvelle'] != 'new')){ // permanente et non attribuee + $ordre_des_adrid[$i] = $adrid_; + $i++; + $est_attribuee[$adrid_] = 1; + } +} +reset($adresses); +foreach($adresses as $adrid_ => $adr_){ + if($est_attribuee[$adrid_] == 0){ // non attribuee + $ordre_des_adrid[$i] = $adrid_; + $i++; + $est_attribuee[$adrid_] = 1; + } +} + +$nb_adr = $i - 1; +$page->assign_by_ref('ordre_adrid',$ordre_des_adrid); +$page->assign('nb_adr',$nb_adr+1); + +?> diff --git a/include/profil/verif_emploi.inc.php b/include/profil/verif_emploi.inc.php new file mode 100644 index 0000000..6d4e281 --- /dev/null +++ b/include/profil/verif_emploi.inc.php @@ -0,0 +1,87 @@ +{}#~;!§*`[]|%^=")) < strlen($entreprise[$i])) +{ +$str_error = $str_error."Le champ 'Entreprise $j' contient un caractère interdit.
"; +} + +//validité du poste +if (strlen(strtok(stripslashes($poste[$i]),"<>{}~?!§*`|%$^=+")) < strlen(stripslashes($poste[$i]))) +{ +$str_error = $str_error."Le champ 'Poste $j' contient un caractère interdit.
"; +} + +//validité du CV +if (strlen(strtok($cv,"<>{}~§`")) < strlen($cv)) +{ + $str_error = $str_error."Le champ 'Curriculum vitae' contient un caractère interdit.
"; +} + +if (strlen(strtok(stripslashes($adrpro1[$i]),"<>{}@~?!§*`|%$^=+")) < strlen(stripslashes($adrpro1[$i]))) + { + $str_error = $str_error."Le champ 'Adresse professionnelle $j - Ligne 1' contient un caractère interdit.
"; + } + if (strlen(strtok(stripslashes($adrpro2[$i]),"<>{}@~?!§*`|%$^=+")) < strlen(stripslashes($adrpro2[$i]))) + { + $str_error = $str_error."Le champ 'Adresse professionnelle $j - Ligne 2' contient un caractère interdit.
"; + } + if (strlen(strtok(stripslashes($adrpro3[$i]),"<>{}@~?!§*`|%$^=+")) < strlen(stripslashes($adrpro3[$i]))) + { + $str_error = $str_error."Le champ 'Adresse professionnelle $j - Ligne 3' contient un caractère interdit.
"; + } + if (strlen(strtok(stripslashes($cppro[$i]),"<>{}@~?!§*`|%$^=+")) < strlen(stripslashes($cppro[$i]))) + { + $str_error = $str_error."Le champ 'Code Postal professionnel $j' contient un caractère interdit.
"; + } + if (strlen(strtok(stripslashes($villepro[$i]),"<>{}@~?!§*`|%$^=+")) < strlen(stripslashes($villepro[$i]))) + { + $str_error = $str_error."Le champ 'Ville professionnelle $j' contient un caractère interdit.
"; + } + if (strlen(strtok($telpro[$i],"<>{}@&#~\/:;?,!§*_`[]|%$^=")) < strlen($telpro[$i])) + { + $str_error = $str_error."Le champ 'Téléphone professionnel $j' contient un caractère interdit.
"; + } + if (strlen(strtok($faxpro[$i],"<>{}@&#~\/:;?,!§*_`[]|%$^=")) < strlen($faxpro[$i])) + { + $str_error = $str_error."Le champ 'Fax professionnel $j' contient un caractère interdit.
"; + } + +} +?> diff --git a/include/profil/verif_general.inc.php b/include/profil/verif_general.inc.php new file mode 100644 index 0000000..e614061 --- /dev/null +++ b/include/profil/verif_general.inc.php @@ -0,0 +1,25 @@ +{}@&#~\/:;?,!§*_`[]|%$^=")) < strlen($mobile)) +{ + $str_error = $str_error."Le champ 'Téléphone mobile' contient un caractère interdit.
"; +} + +// correction du champ web si vide +if ($web=="http://" or $web == '') { + $web=''; +} elseif (!preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $web)) { + // validité de l'url donnée dans web + $str_error = $str_error."URL incorrecte dans le champ 'Page web perso', une url doit commencer par http:// ou https:// ou ftp:// et ne pas contenir de caractères interdits
"; +} else { + $web = str_replace('&', '&', $web); +} + +//validité du champ libre +if (strlen(strtok($libre,"<>")) < strlen($libre)) +{ + $str_error = $str_error."Le champ 'Complément libre' contient un caractère interdit.
"; +} + +?> diff --git a/include/profil/verif_mentor.inc.php b/include/profil/verif_mentor.inc.php new file mode 100644 index 0000000..da100d0 --- /dev/null +++ b/include/profil/verif_mentor.inc.php @@ -0,0 +1,55 @@ +{}~§`|%$^")) < strlen($mentor_expertise)){//TODO: affiner la liste + $str_error = $str_error."L'expertise contient un caractère interdit.
"; + } + } +} + +?> diff --git a/include/profil/verif_poly.inc.php b/include/profil/verif_poly.inc.php new file mode 100644 index 0000000..e69de29 diff --git a/include/profil/verif_skill.inc.php b/include/profil/verif_skill.inc.php new file mode 100644 index 0000000..6eff33c --- /dev/null +++ b/include/profil/verif_skill.inc.php @@ -0,0 +1,4 @@ + diff --git a/include/tabs.inc.php b/include/tabs.inc.php new file mode 100644 index 0000000..0527c30 --- /dev/null +++ b/include/tabs.inc.php @@ -0,0 +1,77 @@ + "Informations
générales", + "adresses" => "Adresses
personnelles", + "poly" => "Informations
polytechniciennes", + "emploi" => "Informations
professionnelles", + "skill" => "Compétences
diverses", + "mentor" => "Mentoring" + ); + +$opened_tab = 'general'; + +$page->assign("onglets",$tabname_array); +$page->assign("onglet_last",'mentor'); + +function get_last_tab(){ + end($GLOBALS['tabname_array']); + return key($GLOBALS['tabname_array']); +} + +function get_next_tab($tabname){ + global $tabname_array; + reset($tabname_array); + $marker = false; + while(list($current_tab,$current_tab_desc) = each($tabname_array)){ + if($current_tab == $tabname){ + $res = key($tabname_array);// each() sets key to the next element + if($res != NULL)// if it was the last call of each(), key == NULL => we return the first key + return $res; + else{ + reset($tabname_array); + return key($tabname_array); + } + } + } + // We should not arrive to this point, but at least, we return the first key + reset($tabname_array); + return key($tabname_array); +} + +function draw_all_tabs(){ + global $tabname_array, $new_tab; + reset($tabname_array); +?> +
    + +
+ +
  • + +
  • + +
  • + "> + + +
  • + diff --git a/templates/profil.tpl b/templates/profil.tpl new file mode 100644 index 0000000..4d92b08 --- /dev/null +++ b/templates/profil.tpl @@ -0,0 +1,82 @@ +{config_load file="profil.conf"} +{literal} + +{/literal} +{dynamic} +{if $etat_naissance != ''} +{include file="profil/naissance.tpl"} +{/if} +{/dynamic} +{if $etat_naissance == '' || $etat_naissance == 'ok'} + +{dynamic} + {if $profil_error != ''} +
    + {$profil_error} +
    + {/if} +{/dynamic} +{* dessin des onglets *} + +
    + + + + + + + + + + + + +{/if} diff --git a/templates/profil/adresses.tpl b/templates/profil/adresses.tpl new file mode 100644 index 0000000..ee2ea5d --- /dev/null +++ b/templates/profil/adresses.tpl @@ -0,0 +1,186 @@ +
    +
    +{dynamic} + {draw_onglets} +{/dynamic} +
    +
    + + + +{dynamic} +{if $onglet != $onglet_last} + +{/if} +{/dynamic} + +
    +{dynamic} +{include file=$onglet_tpl} +{/dynamic} +
    + +
    +
    +
    + + + + +{section name=i loop=$nb_adr start=1 max=$nb_adr} +{* + $adrid = $ordre_adrid[$i]; + $adr = &$adresses[$adrid]; +*} + {assign var='adrid' value=$ordre_adrid[i]} + {assign var='adr' value=$adresses.$adrid} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{/section} + +
    + Adresses personnelles +
    + {if $adr.nouvelle != 'new'}Adresse n°{$smarty.section.i.index}{else}Rentre ici une nouvelle adresse{/if} + + {if $adr.nouvelle == 'new'} + + {else} + + {/if} +
    + {if $adr.nouvelle != 'new'} + + {/if} +  + + c'est à cette adresse que je suis actuellement + +
    + + + + + + + + +
    + + + site public + + + + transmis à l'AX + + + Quelle couleur ?? +
    +
    + {if $adr.nouvelle != 'new'}Adresse n°{$smarty.section.i.index}{else}Nouvelle adresse{/if}
    +
    + +
    +   + + +
    +   + + +
    + Code postal / Ville
    +
    + +   + +
    + Pays + + +
    + Région ou département
    + (selon pays) +
    + +
    + Cette adresse est : + + + permanente + + temporaire +
    +   + + + ma résidence principale + + une résidence secondaire +
    +   + + on peut m'y envoyer du courrier par la poste +
    + + + + + + + + +
    + + + site public + + + + transmis à l'AX + + Quelle couleur ?? +
    +
    + Téléphone associé + + +   + Fax + +
     
     
    + diff --git a/templates/profil/emploi.tpl b/templates/profil/emploi.tpl new file mode 100644 index 0000000..08c08dc --- /dev/null +++ b/templates/profil/emploi.tpl @@ -0,0 +1,254 @@ +{section name=adresses_pro loop=2} + {assign var='i' value=$smarty.section.adresses_pro.index} + +{if $i == 0} +
    +{else} +
    +{/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Informations professionnelles - Entreprise n°{$i+1} +
    + + + + + + + + +
    + + + site public + + + + transmis à l'AX + + + Quelle couleur ?? +
    +
    + Entreprise ou organisme + + +
    + Secteur d'activité + + +
    + Sous-Secteur d'activité + + +
    + Poste occupé + + +
    + Fonction occupée + + +
    + + + + + + + + +
    + + + site public + + + + transmis à l'AX + + + Quelle couleur ?? +
    +
    + Adresse professionnelle + + +
    +   + + +
    +   + + +
    + Code postal
    +
    + +
    + Ville
    +
    + +
    + Pays + + +
    + Région ou département
    + (selon pays) +
    + +
    + + + + + + + + +
    + + + site public + + + + transmis à l'AX + + + Quelle couleur ?? +
    +
    + Téléphone professionnel + + +   +
    + Fax + + +
    +
    + +{/section} + +
    + + + + + + + + + + + +
    + Informations professionnelles - CV +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + Curriculum vitae
    + Le CV n'est jamais public.
    + + Comment remplir mon CV ?
    +
    + +
    +
    diff --git a/templates/profil/general.tpl b/templates/profil/general.tpl new file mode 100644 index 0000000..cdb2d60 --- /dev/null +++ b/templates/profil/general.tpl @@ -0,0 +1,232 @@ +{include file="applis.js.tpl"} +
    + + + + + + + + + + + +{if $femme} + + + + +{/if} + + + + + + + + + + + + +
    + Informations générales +
    + + + + + +
    + + + site public +
    +
    + Identité + + {$prenom} {$nom} X{$promo} +
    + Nom de mariage
    + (si différent de {$nom} seulement) +
    + {$epouse|default:"Aucun"} + modifier +
    + Nationalité + + +
    + Application
    + (4ème année de l'X) +
    + +
    + + +
    + Post-application + + +
    + + +
    +
    + +
    + + + + + + + + + + +
    + Trombinoscope +
    + Pour profiter de cette fonction intéressante, tu dois disposer + quelque part (sur ton ordinateur ou sur Internet) d'une photo + d'identité (dans un fichier au format JPEG, PNG ou GIF).
    + +
    + + + + + +
    + Voilà la photo qui apparaîtra sur la fiche de ton profil (si tu viens + de changer ta photo, la photo affichée peut correspondre à ton ancien + profil : c'est le cas si elle n'a pas encore été validée par un administrateur du site ! + nouvelle photo). + +  [ PHOTO ] +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Divers +
    + + + + + + + + +
    + + + site public + + + + transmis à l'AX + + Quelle couleur ?? +
    +
    + Téléphone mobile + + +
    + + + + + + +
    + + + site public + + Quelle couleur ?? +
    +
    + Page web Perso + + +
    + + + + + + +
    + + + site public + + Quelle couleur ?? +
    +
    + Complément libre + Commentaire? ICQ? etc... + + +
    +
    diff --git a/templates/profil/mentor.tpl b/templates/profil/mentor.tpl new file mode 100644 index 0000000..47e9ea9 --- /dev/null +++ b/templates/profil/mentor.tpl @@ -0,0 +1,178 @@ +{literal} + +{/literal} + +

    + Si tu acceptes que ceux de nos camarades qui, +

      +
    • encore jeunes, sont en train de bâtir leur projet professionnel,
    • +
    • ou bien, plus âgés, souhaitent réorienter leur carrière,
    • +
    + te contactent afin de te demander conseil, dans les domaines que tu connais + bien, et pour lesquels tu pourrais les aider, remplis cette rubrique.
    + Tu peux mentionner ici les domaines de compétences, les expériences + notamment internationales sur la base desquels tu seras identifiable depuis + la page de recherche d'un conseil professionnel. +

    + +
    + + + + + + + + + + + + + + + + {print_pays} +
    + Pays dont tu connais bien la culture professionnelle +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + Pays + + + +   +
    +
    + +
    + + + + + + + + + + + + + + + + + + {print_secteurs_mentor} +
    + Secteurs d'activité dans lesquels tu as beaucoup exercé +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + Secteur + + Sous-Secteur + +   +
    +
    + +
    + + + + + + + + + + + + + +
    + Expérience et expertises que tu acceptes de faire partager +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + Dans cette case il te faut indiquer en quelques mots ce qui t'a + amené à acquérir l'expérience indiquée, et dans quelle mesure tu + veux bien que ceux de nos camarades qui seraient intéressés par un + contact avec toi, en prenne l'initiative. Il est obligatoire de + remplir cette dernière case pour apparaître dans la base de données + des "Mentors". +
    +
    + +
    +
    diff --git a/templates/profil/naissance.tpl b/templates/profil/naissance.tpl new file mode 100644 index 0000000..3fe58b2 --- /dev/null +++ b/templates/profil/naissance.tpl @@ -0,0 +1,49 @@ +{if $etat_naissance == 'ok'} + +{else} + {if $etat_naissance == 'erreur'} +

    + {#profil_naissance_erreur#} +

    + {/if} + +
    + {#profil_naissance_titre#} +
    + +
    +

    + {#profil_naissance_intro#} +

    +
    +
    + + + + + + + + + + + +
    + {#profil_date_titre#} +
    + Date (JJMMAAAA) + + +
    + +
    +
    +
    + + +{/if} + diff --git a/templates/profil/poly.tpl b/templates/profil/poly.tpl new file mode 100644 index 0000000..69ada7a --- /dev/null +++ b/templates/profil/poly.tpl @@ -0,0 +1,134 @@ +{literal} + +{/literal} +
    + + + + + + + + + + + + + + + + + + + + + + {print_groupex uid=$smarty.session.uid} + + + +
    + Informations polytechniciennes +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + (ex-)Section + + + +   +
    + (ex-)Binet(s) + + {print_binets uid=$smarty.session.uid} + + + + ajouter + +
    + Groupe(s) X + + + + + ajouter + +
    +
    diff --git a/templates/profil/skill.tpl b/templates/profil/skill.tpl new file mode 100644 index 0000000..9f5d503 --- /dev/null +++ b/templates/profil/skill.tpl @@ -0,0 +1,121 @@ +{literal} + +{/literal} + +
    + + + + + + + + + + + + + + + + {print_comppros} +
    + Compétences professionnelles +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + Domaine + + Niveau + +   +
    +
    + + +
    + + + + + + + + + + + + + + + + {print_langues} +
    + Compétences linguistiques +
    + + + + + +
    + + + ne peut être ni public ni transmis à l'AX +
    +
    + Langue + + Niveau + + Quel niveau ? +
    +
    -- 2.1.4