Table editor fills the new entry form with the default values of the fields
[platal.git] / modules / carnet.php
index 6a9177a..223b2ab 100644 (file)
@@ -24,15 +24,16 @@ class CarnetModule extends PLModule
     function handlers()
     {
         return array(
-            'carnet'              => $this->make_hook('index',    AUTH_COOKIE),
-            'carnet/panel'        => $this->make_hook('panel',    AUTH_COOKIE),
-            'carnet/notifs'       => $this->make_hook('notifs',   AUTH_COOKIE),
+            'carnet'                => $this->make_hook('index',    AUTH_COOKIE),
+            'carnet/panel'          => $this->make_hook('panel',    AUTH_COOKIE),
+            'carnet/notifs'         => $this->make_hook('notifs',   AUTH_COOKIE),
 
-            'carnet/contacts'     => $this->make_hook('contacts', AUTH_COOKIE),
-            'carnet/contacts/pdf' => $this->make_hook('pdf',      AUTH_COOKIE),
+            'carnet/contacts'       => $this->make_hook('contacts', AUTH_COOKIE),
+            'carnet/contacts/pdf'   => $this->make_hook('pdf',      AUTH_COOKIE),
+            'carnet/contacts/ical'  => $this->make_hook('ical',     AUTH_COOKIE),
+            'carnet/contacts/vcard' => $this->make_hook('vcard',    AUTH_COOKIE),
 
-            'carnet/rss'          => $this->make_hook('rss',      AUTH_PUBLIC),
-            'carnet/ical'         => $this->make_hook('ical',     AUTH_PUBLIC),
+            'carnet/rss'            => $this->make_hook('rss',      AUTH_PUBLIC),
         );
     }
 
@@ -48,11 +49,8 @@ class CarnetModule extends PLModule
         if (!S::has('core_rss_hash')) {
             return;
         }
-        $page->assign('xorg_rss',
-                      array('title' => 'Polytechnique.org :: Carnet',
-                            'href'  => '/carnet/rss/'.S::v('forlife')
-                                      .'/'.S::v('core_rss_hash').'/rss.xml')
-                      );
+        $page->setRssLink('Polytechnique.org :: Carnet',
+                          '/carnet/rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml');
     }
 
     function handler_index(&$page)
@@ -190,6 +188,7 @@ class CarnetModule extends PLModule
         $page->changeTpl('carnet/mescontacts.tpl');
         require_once("applis.func.inc.php");
         $page->assign('xorg_title','Polytechnique.org - Mes contacts');
+        $this->_add_rss_link($page);
 
         $uid  = S::v('uid');
         $user = Env::v('user');
@@ -232,8 +231,6 @@ class CarnetModule extends PLModule
         }
 
         if ($action == 'trombi') {
-            require_once 'trombi.inc.php';
-
             $trombi = new Trombi(array($this, '_get_list'));
             $trombi->setNbRows(4);
             $page->assign_by_ref('trombi',$trombi);
@@ -270,7 +267,8 @@ class CarnetModule extends PLModule
                             ad0.text AS app0text, ad0.url AS app0url, ai0.type AS app0type,
                             ad1.text AS app1text, ad1.url AS app1url, ai1.type AS app1type,
                             adr.city, gp.a2, gp.pays AS countrytxt, gr.name AS region,
-                            IF(a.nom_usage<>'',a.nom_usage,a.nom) AS sortkey
+                            IF(a.nom_usage<>'',a.nom_usage,a.nom) AS sortkey,
+                            COUNT(em.email) > 0 AS actif
                       FROM  contacts       AS c
                 INNER JOIN  auth_user_md5  AS a   ON (a.user_id = c.contact)
                 INNER JOIN  aliases        AS l   ON (a.user_id = l.id AND l.type='a_vie')
@@ -286,16 +284,18 @@ class CarnetModule extends PLModule
                                                       AND FIND_IN_SET('active', adr.statut))
                  LEFT JOIN  geoloc_pays    AS gp  ON (adr.country = gp.a2)
                  LEFT JOIN  geoloc_region  AS gr  ON (adr.country = gr.a2 AND adr.region = gr.region)
+                 LEFT JOIN  emails         AS em  ON (em.uid = a.user_id AND em.flags = 'active')
                      WHERE  c.uid = $uid
+                  GROUP BY  a.user_id
                   ORDER BY  ".$order;
 
-            $page->assign_by_ref('citer', XDB::iterator($sql));
+            $page->assign('citer', XDB::iterator($sql));
         }
     }
 
     function handler_pdf(&$page, $arg0 = null, $arg1 = null)
     {
-        require_once 'contacts.pdf.inc.php';
+        require_once dirname(__FILE__).'/carnet/contacts.pdf.inc.php';
         require_once 'user.func.inc.php';
 
         session_write_close();
@@ -316,7 +316,7 @@ class CarnetModule extends PLModule
 
         while (list($alias) = $citer->next()) {
             $user = get_user_details($alias);
-            $pdf->addContact($user, $arg0 == 'photos' || $arg1 == 'photos');
+            $pdf = ContactsPDF::addContact($pdf, $user, $arg0 == 'photos' || $arg1 == 'photos');
         }
         $pdf->Output();
 
@@ -335,7 +335,9 @@ class CarnetModule extends PLModule
 
     function handler_ical(&$page)
     {
+        require_once 'ical.inc.php';
         $page->changeTpl('carnet/calendar.tpl', NO_SKIN);
+        $page->register_function('display_ical', 'display_ical');
 
         $res = XDB::iterRow(
                 'SELECT u.prenom,
@@ -367,6 +369,17 @@ class CarnetModule extends PLModule
 
         header('Content-Type: text/calendar; charset=utf-8');
     }
+
+    function handler_vcard(&$page, $photos = null)
+    {
+        $res = XDB::query('SELECT contact
+                             FROM contacts
+                            WHERE uid = {?}', S::v('uid'));
+
+        require_once('vcard.inc.php');
+        $vcard = new VCard($res->fetchColumn(), $photos == 'photos');
+        $vcard->do_page(&$page);
+    }
 }
 
 ?>