--- /dev/null
+<?php
+require("nonhtml.inc.php");
+
+function ensure_adr(&$table) {
+ $trim = Array();
+ if(!empty($table['adr1'])) $trim[] = $table['adr1'];
+ if(!empty($table['adr2'])) $trim[] = $table['adr2'];
+ if(!empty($table['adr3'])) $trim[] = $table['adr3'];
+ unset($table['adr1'], $table['adr2'], $table['adr3']);
+ foreach($trim as $key=>$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');
+?>
$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);
--- /dev/null
+{* $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: *}
-{* $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}
{/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: *}