vcard bugfixes + ldif(début)
authorx2000habouzit <x2000habouzit>
Fri, 13 Feb 2004 17:01:22 +0000 (17:01 +0000)
committerx2000habouzit <x2000habouzit>
Fri, 13 Feb 2004 17:01:22 +0000 (17:01 +0000)
htdocs/mescontacts_ldif.php [new file with mode: 0644]
htdocs/vcard.php
templates/mescontacts_ldif.tpl [new file with mode: 0644]
templates/vcard.tpl

diff --git a/htdocs/mescontacts_ldif.php b/htdocs/mescontacts_ldif.php
new file mode 100644 (file)
index 0000000..6b742d5
--- /dev/null
@@ -0,0 +1,69 @@
+<?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');
+?>
index ed6aedb..a5920fa 100644 (file)
@@ -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 (file)
index 0000000..959fd46
--- /dev/null
@@ -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: *}
index 7be1c00..cb2c4bd 100644 (file)
@@ -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: *}