From c4656092e4c5c5f5265dd240593d3d8ce3d7497f Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Tue, 27 Jan 2004 13:41:41 +0000 Subject: [PATCH] vcards --- etat_migration | 2 +- htdocs/vcard.php | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++ templates/vcard.tpl | 52 +++++++++++++++++++++++ 3 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 htdocs/vcard.php create mode 100644 templates/vcard.tpl diff --git a/etat_migration b/etat_migration index 507b6ef..0a8778a 100644 --- a/etat_migration +++ b/etat_migration @@ -173,7 +173,6 @@ Etat | Ancien nom | Nouveau nom | trezo/trezo.inc.php | | trombino.php | | trombipromo.php | - | vcard.php | | x.php | ------+-------------------------------------------+---------------- xx | AccesPermanentOff.php | cookie_off.php @@ -188,4 +187,5 @@ xx | login.php | - xx | motdepassemd5.php | - xx | preferences.php | - xx | skins.php | - +xx | vcard.php | - ------+-------------------------------------------+---------------- diff --git a/htdocs/vcard.php b/htdocs/vcard.php new file mode 100644 index 0000000..30a7b6e --- /dev/null +++ b/htdocs/vcard.php @@ -0,0 +1,119 @@ + 126) ) { // always encode "\t", which is *not* required + $h2 = floor($dec/16); $h1 = floor($dec%16); + $c = $escape.$hex["$h2"].$hex["$h1"]; + } + if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted + $output .= $newline.$escape."\n"; // soft line break; " =\r\n" is okay + $newline = " "; + } + $newline .= $c; + } // end of for + $output .= $newline; + if ($jtemplate_dir = $globals->spoolroot . "/templates/"; +$page->compile_dir = $globals->spoolroot . "/templates_c/"; +$page->plugins_dir[]= $globals->spoolroot . "/plugins/"; +$page->cache_dir = $globals->spoolroot . "/cache/"; +$page->compile_check = true; +$page->caching = false; + +$page->register_modifier('qp_enc', 'quoted_printable_encode'); +$page->register_function('format_adr', 'format_adr'); + +$myquery = + "SELECT prenom, nom, epouse, username, mobile, web, libre, promo, alias, user_id + FROM auth_user_md5 AS a + WHERE username='{$_REQUEST['x']}'"; + $result=mysql_query($myquery); +if (mysql_num_rows($result)!=1) { + echo 'erreur'; + exit; +} +$vcard = mysql_fetch_assoc($result); +$page->assign_by_ref('vcard', $vcard); +mysql_free_result($result); + +$adr = mysql_query( + "SELECT statut,adr1,adr2,adr3,cp,ville,gp.pays,gr.name,tel,fax, + FIND_IN_SET('courrier', a.statut) AS courrier + FROM adresses as a + LEFT JOIN geoloc_pays AS gp ON(a.pays = gp.a2) + LEFT JOIN geoloc_region AS gr + ON(a.pays = gr.a2 AND a.region = gr.region) + WHERE uid = {$vcard['user_id']} + ORDER BY FIND_IN_SET('active', a.statut), + NOT FIND_IN_SET('res-secondaire', a.statut)" +); +$home = Array(); +while($home[] = mysql_fetch_assoc($adr)); +array_pop($home); +mysql_free_result($adr); +$page->assign_by_ref('home', $home); + + +$adr = mysql_query( + "SELECT adr1,adr2,adr3,cp,ville,gp.pays,gr.name,tel,fax,poste,entreprise,f.label as fonction + FROM entreprises as e + LEFT JOIN emploi_naf AS f ON(e.fonction = f.id) + LEFT JOIN geoloc_pays AS gp ON(e.pays = gp.a2) + LEFT JOIN geoloc_region AS gr + ON(e.pays = gr.a2 AND e.region = gr.region) + WHERE uid = {$vcard['user_id']}" +); +if(mysql_num_rows($adr)) + $work = mysql_fetch_assoc($adr); +mysql_free_result($adr); +$page->assign_by_ref('work', $work); + + +header("Pragma: "); +header("Cache-Control: "); +header("Content-type: text/x-vcard\n"); +header("Content-Transfer-Encoding: Quoted-Printable\n"); + +$page->display('vcard.tpl'); +?> diff --git a/templates/vcard.tpl b/templates/vcard.tpl new file mode 100644 index 0000000..7be1c00 --- /dev/null +++ b/templates/vcard.tpl @@ -0,0 +1,52 @@ +{* $Id: vcard.tpl,v 1.1 2004-01-27 13:41:41 x2000habouzit Exp $ *} +BEGIN:VCARD +VERSION:3.0 +{if $vcard.epouse} +FN;ENCODING=QUOTED-PRINTABLE:{"`$vcard.prenom` `$vcard.epouse` (`$vcard.nom`)"|qp_enc} +{else} +FN;ENCODING=QUOTED-PRINTABLE:{"`$vcard.prenom` `$vcard.nom`"|qp_enc} +{/if} +N;ENCODING=QUOTED-PRINTABLE:{$vcard.nom|qp_enc};{$vcard.prenom|qp_enc};{$vcard.epouse|qp_enc};; +EMAIL;TYPE=internet:{$vcard.username}@polytechnique.org +{if $vcard.alias} +EMAIL;TYPE=internet:{$vcard.alias}@polytechnique.org +{/if} +{if $vcard.mobile} +TEL;TYPE=cell;ENCODING=QUOTED-PRINTABLE:{$vcard.mobile|qp_enc} +{/if} +{if $work} +{if $work.entreprise} +ORG;ENCODING=QUOTED-PRINTABLE:{$work.entreprise|qp_enc} +{/if} +{if $work.poste} +TITLE;ENCODING=QUOTED-PRINTABLE:{$vcard.poste|qp_enc} +{/if} +{if $work.fonction} +ROLE;ENCODING=QUOTED-PRINTABLE:{$work.fonction|qp_enc} +{/if} +{if $work.tel} +TEL;TYPE=work;ENCODING=QUOTED-PRINTABLE:{$work.tel|qp_enc} +{/if} +{if $work.fax} +FAX;TYPE=work;ENCODING=QUOTED-PRINTABLE:{$work.fax|qp_enc} +{/if} +ADR;TYPE=work;ENCODING=QUOTED-PRINTABLE:{format_adr adr=$work} +{/if} +{foreach item=adr from=$home} +{if $adr.tel} +TEL;TYPE=home;ENCODING=QUOTED-PRINTABLE:{$adr.tel|qp_enc} +{/if} +{if $adr.fax} +FAX;TYPE=home;ENCODING=QUOTED-PRINTABLE:{$adr.fax|qp_enc} +{/if} +ADR;TYPE=home{if $adr.courier},postal{/if};ENCODING=QUOTED-PRINTABLE:{format_adr adr=$adr} +{/foreach} +{if $vcard.web} +URL;ENCODING=QUOTED-PRINTABLE:{$vcard.web|qp_enc} +{/if} +NOTE;ENCODING=QUOTED-PRINTABLE:{"(X`$vcard.promo`)\n`$vcard.libre`"|qp_enc} +SORT-STRING;ENCODING=QUOTED-PRINTABLE:{$vcard.nom|qp_enc} +REV:{$smarty.now|date_format:"%Y-%m-%dT%TZ"} +END:VCARD + +{* vim:set et sw=2 sts=2 sws=2: *} -- 2.1.4