From 6f99928a5e828a1aa75678ad609a21f6a6984648 Mon Sep 17 00:00:00 2001 From: "Pierre Habouzit (MadCoder" Date: Mon, 13 Dec 2004 17:44:03 +0000 Subject: [PATCH] refactor fiche, to reuse code in other places (like vcard...) git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-90 --- htdocs/fiche.php | 99 +-------------------------------------- include/applis.func.inc.php | 1 + include/user.func.inc.php | 111 ++++++++++++++++++++++++++++++++++++++++++++ templates/fiche.tpl | 14 +++--- 4 files changed, 120 insertions(+), 105 deletions(-) diff --git a/htdocs/fiche.php b/htdocs/fiche.php index f91b87b..865926d 100644 --- a/htdocs/fiche.php +++ b/htdocs/fiche.php @@ -22,8 +22,6 @@ require_once("xorg.inc.php"); new_simple_page('fiche.tpl',AUTH_COOKIE); - -require_once('applis.func.inc.php'); require_once('user.func.inc.php'); //$isnetscape = !empty($_SESSION['skin_compatible']); @@ -51,30 +49,7 @@ if (isset($_REQUEST['mat'])) { } $new = (isset($_REQUEST["modif"]) && $_REQUEST["modif"]=="new"); - -$reqsql = "SELECT u.prenom, u.nom, u.epouse, - IF(gp.nat='',gp.pays,gp.nat) AS nationalite, gp.a2 AS iso3166, - u.user_id, a.alias AS forlife, a2.alias AS bestalias, - u.matricule, u.perms IN ('admin','user') AS inscrit, - FIND_IN_SET('femme', u.flags) AS sexe, u.deces != 0 AS dcd, u.deces, - u.date, u.cv, sections.text AS section, u.mobile, u.web, - u.libre, u.promo, c.uid IS NOT NULL AS is_contact, p.x, p.y, - - m.expertise != '' AS is_referent - - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id=a.id AND a.type='a_vie') - INNER JOIN aliases AS a2 ON (u.user_id=a2.id AND FIND_IN_SET('bestalias',a2.flags)) - LEFT JOIN contacts AS c ON (c.uid = {$_SESSION['uid']} and c.contact = u.user_id) - LEFT JOIN geoloc_pays AS gp ON (gp.a2 = u.nationalite) - INNER JOIN sections ON (sections.id = u.section) - LEFT JOIN photo AS p ON (p.uid = u.user_id) - LEFT JOIN mentor AS m ON (m.uid = u.user_id) - WHERE a.alias = '$login'"; - -$result = $globals->db->query($reqsql); -$user = mysql_fetch_assoc($result); -mysql_free_result($result); +$user = get_user_details($login, $_SESSION['uid']); $title = $user['prenom'] . ' ' . empty($user['epouse']) ? $user['nom'] : $user['epouse']; $page->assign('xorg_title', $title); @@ -103,78 +78,6 @@ if($user['x'] < 160){ $page->assign('photo_url', $photo); $page->assign_by_ref('x', $user); -//recuperation des infos professionnelles -$sql = "SELECT e.entreprise, s.label as secteur , ss.label as sous_secteur , f.fonction_fr as fonction, - e.poste, e.adr1, e.adr2, e.adr3, e.cp, e.ville, - gp.pays, gr.name, e.tel, e.fax - FROM entreprises AS e - LEFT JOIN emploi_secteur AS s ON(e.secteur = s.id) - LEFT JOIN emploi_ss_secteur AS ss ON(e.ss_secteur = ss.id AND e.secteur = ss.secteur) - LEFT JOIN fonctions_def AS f ON(e.fonction = f.id) - LEFT JOIN geoloc_pays AS gp ON (gp.a2 = e.pays) - LEFT JOIN geoloc_region AS gr ON (gr.a2 = e.pays and gr.region = e.region) - WHERE e.uid = {$user['user_id']} - ORDER BY e.entrid"; -$page->mysql_assign($sql, 'adr_pro'); - -//recuperation des adresses -$sql = "SELECT a.adr1,a.adr2,a.adr3,a.cp,a.ville, - gp.pays,gr.name AS region,a.tel,a.fax, - FIND_IN_SET('active', a.statut) AS active, - FIND_IN_SET('res-secondaire', a.statut) AS secondaire - FROM adresses AS a - LEFT JOIN geoloc_pays AS gp ON (gp.a2=a.pays) - LEFT JOIN geoloc_region AS gr ON (gr.a2=a.pays and gr.region=a.region) - WHERE uid={$user['user_id']} AND NOT FIND_IN_SET('pro',a.statut) - ORDER BY NOT FIND_IN_SET('active',a.statut), FIND_IN_SET('temporaire',a.statut), FIND_IN_SET('res-secondaire',a.statut)"; -$page->mysql_assign($sql, 'adr'); - -// reformatage binets -$sql = "SELECT text - FROM binets_ins - LEFT JOIN binets_def ON binets_ins.binet_id = binets_def.id - WHERE user_id = {$user['user_id']}"; -$res = $globals->db->query($sql); -if (list($binets) = mysql_fetch_row($res)){ - while (list($binet) = mysql_fetch_row($res)) { - $binets .= ", $binet"; - } -} -mysql_free_result($res); -$page->assign('binets', $binets); - -// reformatage Groupes X -$res = $globals->db->query("SELECT text, url - FROM groupesx_ins - LEFT JOIN groupesx_def ON groupesx_ins.gid = groupesx_def.id - WHERE guid = '{$user['user_id']}'"); -$gxs = Array(); -while (list($gxt,$gxu) = mysql_fetch_row($res)) { - if ($gxu) { - $gxs[] = "$gxt"; - } else { - $gxs[] = $gxt; - } -} -mysql_free_result($res); -$page->assign('groupes', join(', ', $gxs)); - -// reformatage appli -$res = $globals->db->query("SELECT applis_def.text, applis_def.url, applis_ins.type - FROM applis_ins - INNER JOIN applis_def ON applis_def.id = applis_ins.aid - WHERE uid='{$user['user_id']}' - ORDER BY ordre"); -if (list($rapp_txt, $rapp_url, $rapp_type) = mysql_fetch_row($res)) { - $applis = applis_fmt($rapp_type, $rapp_txt, $rapp_url); - while (list($rapp_txt, $rapp_url, $rapp_type) = mysql_fetch_row($res)) { - $applis .=", "; - $applis .= applis_fmt($rapp_type, $rapp_txt, $rapp_url); - } - $page->assign('applis', $applis); -} -mysql_free_result($res); - $page->run(); ?> diff --git a/include/applis.func.inc.php b/include/applis.func.inc.php index 79a2124..ab25449 100644 --- a/include/applis.func.inc.php +++ b/include/applis.func.inc.php @@ -19,6 +19,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ +global $page; function applis_options($current=0) { global $globals; diff --git a/include/user.func.inc.php b/include/user.func.inc.php index 5765753..b01454e 100644 --- a/include/user.func.inc.php +++ b/include/user.func.inc.php @@ -162,6 +162,117 @@ function get_user_forlife($data) { } // }}} +// {{{ function get_user_details() +function &get_user_details($login, $from_uid) +{ + global $globals; + $reqsql = "SELECT u.prenom, u.nom, u.epouse, + IF(gp.nat='',gp.pays,gp.nat) AS nationalite, gp.a2 AS iso3166, + u.user_id, a.alias AS forlife, a2.alias AS bestalias, + u.matricule, u.perms IN ('admin','user') AS inscrit, + FIND_IN_SET('femme', u.flags) AS sexe, u.deces != 0 AS dcd, u.deces, + u.date, u.cv, sections.text AS section, u.mobile, u.web, + u.libre, u.promo, c.uid IS NOT NULL AS is_contact, p.x, p.y, + + m.expertise != '' AS is_referent + + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON (u.user_id=a.id AND a.type='a_vie') + INNER JOIN aliases AS a2 ON (u.user_id=a2.id AND FIND_IN_SET('bestalias',a2.flags)) + LEFT JOIN contacts AS c ON (c.uid = '$from_uid' and c.contact = u.user_id) + LEFT JOIN geoloc_pays AS gp ON (gp.a2 = u.nationalite) + INNER JOIN sections ON (sections.id = u.section) + LEFT JOIN photo AS p ON (p.uid = u.user_id) + LEFT JOIN mentor AS m ON (m.uid = u.user_id) + WHERE a.alias = '$login'"; + + $res = $globals->db->query($reqsql); + $user = mysql_fetch_assoc($res); + mysql_free_result($res); + + $uid = $user['user_id']; + + $sql = "SELECT e.entreprise, s.label as secteur , ss.label as sous_secteur , f.fonction_fr as fonction, + e.poste, e.adr1, e.adr2, e.adr3, e.cp, e.ville, + gp.pays, gr.name, e.tel, e.fax + FROM entreprises AS e + LEFT JOIN emploi_secteur AS s ON(e.secteur = s.id) + LEFT JOIN emploi_ss_secteur AS ss ON(e.ss_secteur = ss.id AND e.secteur = ss.secteur) + LEFT JOIN fonctions_def AS f ON(e.fonction = f.id) + LEFT JOIN geoloc_pays AS gp ON (gp.a2 = e.pays) + LEFT JOIN geoloc_region AS gr ON (gr.a2 = e.pays and gr.region = e.region) + WHERE e.uid = $uid + ORDER BY e.entrid"; + $res = $globals->db->query($sql); + while($tmp = mysql_fetch_assoc($res)) { + $user['adr_pro'][] = $tmp; + } + mysql_free_result($res); + + $sql = "SELECT a.adr1,a.adr2,a.adr3,a.cp,a.ville, + gp.pays,gr.name AS region,a.tel,a.fax, + FIND_IN_SET('active', a.statut) AS active, + FIND_IN_SET('res-secondaire', a.statut) AS secondaire + FROM adresses AS a + LEFT JOIN geoloc_pays AS gp ON (gp.a2=a.pays) + LEFT JOIN geoloc_region AS gr ON (gr.a2=a.pays and gr.region=a.region) + WHERE uid={$user['user_id']} AND NOT FIND_IN_SET('pro',a.statut) + ORDER BY NOT FIND_IN_SET('active',a.statut), FIND_IN_SET('temporaire',a.statut), FIND_IN_SET('res-secondaire',a.statut)"; + $res = $globals->db->query($sql); + while($tmp = mysql_fetch_assoc($res)) { + $user['adr'][] = $tmp; + } + mysql_free_result($res); + + + $sql = "SELECT text + FROM binets_ins + LEFT JOIN binets_def ON binets_ins.binet_id = binets_def.id + WHERE user_id = {$user['user_id']}"; + $res = $globals->db->query($sql); + while (list($binet) = mysql_fetch_row($res)) { + $user['binets'][] = $binet; + } + if (mysql_num_rows($res)) { + $user['binets_join'] = join(', ', $user['binets']); + } + mysql_free_result($res); + + $res = $globals->db->query("SELECT text, url + FROM groupesx_ins + LEFT JOIN groupesx_def ON groupesx_ins.gid = groupesx_def.id + WHERE guid = '{$user['user_id']}'"); + while (list($gxt,$gxu) = mysql_fetch_row($res)) { + if ($gxu) { + $user['gpxs'][] = "$gxt"; + } else { + $user['gpxs'][] = $gxt; + } + } + if (mysql_num_rows($res)) { + $user['gpxs_join'] = join(', ', $user['gpxs']); + } + mysql_free_result($res); + + $res = $globals->db->query("SELECT applis_def.text, applis_def.url, applis_ins.type + FROM applis_ins + INNER JOIN applis_def ON applis_def.id = applis_ins.aid + WHERE uid='{$user['user_id']}' + ORDER BY ordre"); + + while (list($type, $txt, $url) = mysql_fetch_assoc($res)) { + require_once('applis.func.inc.php'); + $user['applis_fmt'][] = applis_fmt($type, $txt, $url); + } + if (mysql_num_rows($res)) { + $user['applis_join'] = join(', ', $user['applis_fmt']); + } + mysql_free_result($res); + + return $user; +} + +// }}} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker: ?> diff --git a/templates/fiche.tpl b/templates/fiche.tpl index 0539360..b5a13db 100644 --- a/templates/fiche.tpl +++ b/templates/fiche.tpl @@ -77,7 +77,7 @@ function chgMainWinLoc( strPage ) { {if $x.iso3166} {$x.nationalite}  {/if} - X {$x.promo}{if $applis} - Formation : {$applis|smarty:nodefaults}{/if} + X {$x.promo}{if $x.applis_join} - Formation : {$x.applis_join|smarty:nodefaults}{/if} {if $x.is_referent} [Ma fiche référent] {/if} @@ -86,17 +86,17 @@ function chgMainWinLoc( strPage ) { Photo de {$x.forlife} {if $x.section}Section : {$x.section}
{/if} - {if $binets}Binet(s) : {$binets}
{/if} - {if $groupes}Groupe(s) X : {$groupes|smarty:nodefaults}
{/if} + {if $x.binets_join}Binet(s) : {$x.binets_join}
{/if} + {if $x.gpxs_join}Groupe(s) X : {$x.gpxs_join|smarty:nodefaults}
{/if} {if $x.web}Site Web : {$x.web}{/if} {if $x.libre}
Commentaires :
{$x.libre|nl2br}{/if} - {if $adr|@count > 0} + {if $x.adr}

Contact :

- {foreach from=$adr item="address" key="i"} + {foreach from=$x.adr item="address" key="i"}
{if $address.active} @@ -136,11 +136,11 @@ function chgMainWinLoc( strPage ) { {/if} - {if $adr_pro|@count > 0} + {if $x.adr_pro}

Informations professionnelles :

- {foreach from=$adr_pro item="address" key="i"} + {foreach from=$x.adr_pro item="address" key="i"}
{if $address.entreprise}
-- 2.1.4