iCal now contains yearly events for *all* contacts
authorx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sun, 23 Jul 2006 12:31:31 +0000 (12:31 +0000)
committerx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Sun, 23 Jul 2006 12:31:31 +0000 (12:31 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@587 839d8a87-29fc-0310-9880-83ba4fa771e5

modules/carnet.php
templates/carnet/calendar.tpl

index 69b29b9..6c200e3 100644 (file)
@@ -330,42 +330,33 @@ class CarnetModule extends PLModule
     {
         $page->changeTpl('carnet/calendar.tpl', NO_SKIN);
 
-        if ($alias && $hash) {
-            $res = XDB::query(
-                'SELECT  a.id
-                   FROM  aliases         AS a
-             INNER JOIN  auth_user_quick AS q ON ( a.id = q.user_id AND q.core_rss_hash = {?} )
-                  WHERE  a.alias = {?} AND a.type != "homonyme"', $hash, $alias);
-            $uid = $res->fetchOneCell();
-        }
-
-        require_once 'notifs.inc.php';
-        $notifs = new Notifs($uid, true);
-
-        $annivcat = false;
-        foreach ($notifs->_cats as $cat) {
-            if (preg_match('/anniv/i', $cat['short']))
-                $annivcat = $cat['id'];
-        }
-
-        if ($annivcat !== false) {
-            $annivs = array();
-            foreach ($notifs->_data[$annivcat] as $promo) {
-                foreach ($promo as $notif) {
-                    if ($all == 'all' || $notif['contact']) {
-                        $annivs[] = array(
-                            'timestamp' => $notif['known'],
-                            'date'      => strtotime($notif['date']),
-                            'tomorrow'  => strtotime("+1 day", strtotime($notif['date'])),
-                            'bestalias' => $notif['bestalias'],
-                            'summary'   => 'Anniversaire de '.$notif['prenom']
-                                           .' '.$notif['nom'].' - x '.$notif['promo'],
-                         );
-                    }
-                }
-            }
-            $page->assign('events', $annivs);
+        $res = XDB::iterRow(
+                'SELECT u.prenom,
+                        IF(u.nom_usage = \'\',u.nom,u.nom_usage) AS nom,
+                        u.promo,
+                        u.naissance,
+                        DATE_ADD(u.naissance, INTERVAL 1 DAY) AS end,
+                        u.date_ins,
+                        a.alias AS forlife
+                   FROM contacts      AS c
+             INNER JOIN auth_user_md5 AS u ON (u.user_id = c.contact)
+             INNER JOIN aliases       AS a ON (u.user_id = a.id AND a.type = \'a_vie\')
+                  WHERE c.uid = {?}', S::v('uid'));
+
+        $annivs = Array();
+        while (list($prenom, $nom, $promo, $naissance, $end, $ts, $forlife) = $res->next()) {
+            $naissance = str_replace('-', '', $naissance);
+            $end       = str_replace('-', '', $end);
+            $annivs[] = array(
+                'timestamp' => strtotime($ts),
+                'date'      => $naissance,
+                'tomorrow'  => $end,
+                'forlife'   => $forlife,
+                'summary'   => 'Anniversaire de '.$prenom
+                                .' '.$nom.' - x '.$promo,
+            );
         }
+        $page->assign('events', $annivs);
 
         header('Content-Type: text/calendar; charset=utf-8');
     }
index 0e3b207..7b60be5 100644 (file)
@@ -29,9 +29,10 @@ X-WR-TIMEZONE:Europe/Paris
 {foreach from=$events item=e}\r
 BEGIN:VEVENT\r
 DTSTAMP:{$e.timestamp|date_format:"%Y%m%dT%H%M%SZ"}\r
-DTSTART;VALUE=DATE:{$e.date|date_format:"%Y%m%d"}\r
-DTEND;VALUE=DATE:{$e.tomorrow|date_format:"%Y%m%d"}\r
-UID:anniv-{$e.date|date_format:"%Y%m%d"}-{$e.bestalias}@polytechnique.org\r
+DTSTART;VALUE=DATE:{$e.date}\r
+DTEND;VALUE=DATE:{$e.tomorrow}\r
+UID:anniv-{$e.date}-{$e.forlife}@polytechnique.org\r
+RRULE:FREQ=YEARLY;INTERVAL=1\r
 CLASS:PUBLIC\r
 {display_ical name="summary" value=$e.summary}\r
 END:VEVENT\r