From: x2000habouzit Date: Fri, 13 Feb 2004 17:01:22 +0000 (+0000) Subject: vcard bugfixes + ldif(début) X-Git-Tag: xorg/old~1865 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=300454aef52921db5313320b69b3f462e0d0a3a4;p=platal.git vcard bugfixes + ldif(début) --- diff --git a/htdocs/mescontacts_ldif.php b/htdocs/mescontacts_ldif.php new file mode 100644 index 0000000..6b742d5 --- /dev/null +++ b/htdocs/mescontacts_ldif.php @@ -0,0 +1,69 @@ +$val) + $table["adr$key"] = $val; + $table['adr_fmt'] = implode("\n", $trim); + return $table; +} + +function ldif_encode($data,$force_64=false) { + return base64_encode(utf8_encode($data)); +} +$page->register_modifier('ldif_format', 'ldif_encode'); +$page->register_modifier('utf8', 'utf8_encode'); + + +/* + * On construit la liste des contacts, et de l'entreprise à laquelle ils appartiennent + */ +$contacts = Array(); +$req = mysql_query("SELECT contact AS id, date, prenom, nom, epouse, username, mobile, web, libre, promo, alias, + entreprise, adr1, adr2, adr3, cp, ville, gp.pays, gr.name, tel, fax, + poste, f.label AS fonction + FROM contacts AS c + LEFT JOIN auth_user_md5 AS a ON(a.user_id = c.contact) + LEFT JOIN entreprises AS e ON(a.user_id = e.uid) + 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 c.uid ='{$_SESSION['uid']}' + ORDER BY contact"); +while($line = mysql_fetch_assoc($req)) { + $line['addr'] = Array(); + $contacts[$line['id']] = ensure_adr($line); +} +mysql_free_result($req); + +/* + * On y ajoute les infos d'adresses + */ +$req = mysql_query( + "SELECT c.contact AS id, adr1, adr2, adr3, cp, ville, gp.pays, gr.name, tel, fax, + FIND_IN_SET('courrier', a.statut) AS courrier + FROM contacts AS c + INNER JOIN adresses AS a ON (a.uid = c.contact) + 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 c.uid = {$_SESSION['uid']} + ORDER BY c.contact, FIND_IN_SET('active', a.statut), NOT FIND_IN_SET('res-secondaire', a.statut)" +); +while($line = mysql_fetch_assoc($req)) + $contacts[$line['id']]['addr'][] = ensure_adr($line); +mysql_free_result($req); + +$page->assign_by_ref('contacts',$contacts); + +header("Pragma: "); +header("Cache-Control: "); +#header("Content-type: text/x-ldif\n"); +header("Content-type: text/plain\n"); + +$page->display('mescontacts_ldif.tpl'); +?> diff --git a/htdocs/vcard.php b/htdocs/vcard.php index ed6aedb..a5920fa 100644 --- a/htdocs/vcard.php +++ b/htdocs/vcard.php @@ -55,7 +55,7 @@ $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 + "SELECT prenom, nom, epouse, username, mobile, web, libre, promo, alias, user_id, date FROM auth_user_md5 AS a WHERE username='{$_REQUEST['x']}'"; $result=mysql_query($myquery); diff --git a/templates/mescontacts_ldif.tpl b/templates/mescontacts_ldif.tpl new file mode 100644 index 0000000..959fd46 --- /dev/null +++ b/templates/mescontacts_ldif.tpl @@ -0,0 +1,116 @@ +{* $Id: mescontacts_ldif.tpl,v 1.1 2004-02-13 17:01:23 x2000habouzit Exp $ *} +{* http://developer.kde.org/documentation/library/cvs-api/kabc/html/ldifconverter_8cpp-source.html *} +{foreach item=c from=$contacts} +{******************************************************************************} +{* DONNEES PERSOS *} +{******************************************************************************} +{if $c.epouse} +dn: cn={"`$c.prenom` `c.epouse` (`$c.nom`)"|utf8},mail={$c.username}@polytechnique.org +cn: {"`$c.prenom` `c.epouse`"|utf8} +{else} +dn: cn={"`$c.prenom` `$c.nom`"|utf8},mail={$c.username}@polytechnique.org +cn: {"`$c.prenom` `$c.nom`"|utf8} +{/if} +sn: {$c.nom} +givenname: {$c.prenom|utf8} +uid: {$c.username} +mail: {$c.username}@polytechnique.org +{if $c.alias} +mailalternateaddress: {$c.alias}@polytechnique.org +mozillasecondemail: {$c.alias}@polytechnique.org +{/if} +{if $c.mobile} +mobile: {$c.mobile|utf8} +cellphone: {$c.mobile|utf8} +{/if} +{if $vcard.web} +homeurl:: {$vcard.web|ldif_format} +{/if} +{******************************************************************************} +{* ENTREPRISE/WORK *} +{******************************************************************************} +{if $c.entreprise} +o:: {$c.entreprise|ldif_format} +organization:: {$c.entreprise|ldif_format} +organizationname:: {$c.entreprise|ldif_format} +{if $c.fonction} +ou:: {$c.fonction|ldif_format} +{/if} +{if $c.poste} +title:: {$c.poste|ldif_format} +{/if} +{if $c.tel} +telephonenumber: {$c.tel|utf8} +{/if} +{if $c.cp} +postalcode: {$c.cp|utf8} +{/if} +{if $c.pays} +countryname:: {$c.pays|ldif_format} +c:: {$c.pays|ldif_format} +{/if} +{if $c.ville} +l:: {$c.ville|ldif_format} +{/if} +{if $c.name} +st:: {$c.name|ldif_format} +{/if} +{if $c.adr_fmt} +streetaddress:: {$c.adr_fmt|ldif_format} +{/if} +{if $c.adr0} +postaladdress:: {$c.adr0|ldif_format} +{/if} +{if $c.adr1} +mozillapostaladdress2:: {$c.adr1|ldif_format} +{/if} +{if $c.adr2} +mozillapostaladdress2:: {$c.adr2|ldif_format} +{/if} +{if $c.fax} +facsimiletelephonenumber: {$c.faxx|utf8} +{/if} +{/if} +{******************************************************************************} +{* ADDRESSES PERSO *} +{******************************************************************************} +{foreach item=adr from=$c.addr} +{* adr1, adr2, adr3, cp, ville, gp.pays, gr.name, tel, fax, courrier *} +{if $adr.adr_fmt} +streethomeaddress:: {$adr.adr_fmt|ldif_format} +{/if} +{if $adr.courrier} +{if $adr.adr0} +homepostaladdress:: {$adr.adr0|ldif_format} +{/if} +{if $adr.adr1} +mozillahomepostaladdress2:: {$adr.adr1|ldif_format} +{/if} +{if $adr.adr2} +mozillahomepostaladdress2:: {$adr.adr2|ldif_format} +{/if} +{if $adr.cp} +mozillahomepostalcode: {$adr.cp|utf8} +{/if} +{/if} +{if $adr.ville} +mozillahomelocalityname:: {$adr.ville|ldif_format} +{/if} +{if $adr.name} +mozillahomestate:: {$adr.name|ldif_format} +{/if} +{if $adr.pays} +mozillahomecountryname:: {$adr.name|ldif_format} +{/if} +{/foreach} +{******************************************************************************} +{* ADDRESSES PERSO *} +{******************************************************************************} +description:: {"(X`$c.promo`)\n`$c.libre`"|ldif_format} +modifytimestamp: {$c.date|date_format:"%Y%m%dT000000Z"} +objectclass: top +objectclass: person +objectclass: organizationalPerson + +{/foreach} +{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/vcard.tpl b/templates/vcard.tpl index 7be1c00..cb2c4bd 100644 --- a/templates/vcard.tpl +++ b/templates/vcard.tpl @@ -1,4 +1,4 @@ -{* $Id: vcard.tpl,v 1.1 2004-01-27 13:41:41 x2000habouzit Exp $ *} +{* $Id: vcard.tpl,v 1.2 2004-02-13 17:01:23 x2000habouzit Exp $ *} BEGIN:VCARD VERSION:3.0 {if $vcard.epouse} @@ -46,7 +46,7 @@ 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"} +REV:{$vcard.date|date_format:"%Y%m%dT000000Z"} END:VCARD {* vim:set et sw=2 sts=2 sws=2: *}