migrate carnet
authorx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Tue, 11 Jul 2006 17:33:48 +0000 (17:33 +0000)
committerx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Tue, 11 Jul 2006 17:33:48 +0000 (17:33 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@434 839d8a87-29fc-0310-9880-83ba4fa771e5

15 files changed:
bin/cron/notifs.send.php
hooks/tmp.inc.php
htdocs/carnet/index.php [deleted file]
htdocs/carnet/mescontacts.php [deleted file]
htdocs/carnet/mescontacts_pdf.php [deleted file]
htdocs/carnet/notifs.php [deleted file]
include/contacts.pdf.inc.php
modules/carnet.php
templates/carnet/index.tpl
templates/carnet/mescontacts.tpl
templates/carnet/notifs.tpl
templates/carnet/panel.tpl
templates/carnet/rss.tpl
templates/fiche.tpl
templates/include/minifiche.tpl

index db8ec8b..feaa0c1 100755 (executable)
@@ -67,7 +67,7 @@ EOF;
            . "Tu recois ce mail car tu as activé la notification automatique \n"
            . "par mail des évènements que tu surveilles.\n\n"
            . "Tu peux changer cette option sur :\n"
-           . "    {$globals->baseurl}/carnet/notifs.php";
+           . "    {$globals->baseurl}/carnet/notifs";
     $html .= <<<EOF
     <hr />
     <p>L'équipe de Polytechnique.org</p>
@@ -75,7 +75,7 @@ EOF;
     <p>
     Tu recois ce mail car tu as activé la notification automatique par mail des évènements que tu surveilles.
     </p>
-    <p>Tu peux changer cette option sur la <a href="{$globals->baseurl}/carnet/notifs.php">page
+    <p>Tu peux changer cette option sur la <a href="{$globals->baseurl}/carnet/notifs">page
     de configuration des notifications</a>
     </p>
   </body>
index dd8f471..dcc6681 100644 (file)
@@ -24,7 +24,7 @@ function tmp_menu()
     global $globals;
 
     $globals->menu->addPrivateEntry(XOM_CUSTOM,   10, 'Mon profil',         'profil.php');
-    $globals->menu->addPrivateEntry(XOM_CUSTOM,   20, 'Mes contacts',       'carnet/mescontacts.php');
+    $globals->menu->addPrivateEntry(XOM_CUSTOM,   20, 'Mes contacts',       'carnet/contacts');
     $globals->menu->addPrivateEntry(XOM_CUSTOM,   30, 'Mon carnet',         'carnet/');
     $globals->menu->addPrivateEntry(XOM_CUSTOM,   40, 'Mon mot de passe',   'password');
     $globals->menu->addPrivateEntry(XOM_CUSTOM,   50, 'Mes préférences',    'prefs');
diff --git a/htdocs/carnet/index.php b/htdocs/carnet/index.php
deleted file mode 100644 (file)
index f780e67..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************/
-
-require_once("xorg.inc.php");
-new_skinned_page('carnet/index.tpl', AUTH_COOKIE);
-$page->assign('xorg_title','Polytechnique.org - Mon carnet');
-
-if (Session::has('core_rss_hash')) {
-    $page->assign('xorg_rss',
-                  array("title" => "Polytechnique.org :: Carnet",
-                        "href" => "/carnet/rss/".Session::get('forlife')."/".Session::get('core_rss_hash')."/rss..xml"));
-}
-
-$page->assign('refe',$_SERVER['PHP_SELF']);
-
-$page->run();
-
-?>
diff --git a/htdocs/carnet/mescontacts.php b/htdocs/carnet/mescontacts.php
deleted file mode 100644 (file)
index cffb138..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************/
-
-require_once("xorg.inc.php");
-new_skinned_page("carnet/mescontacts.tpl",AUTH_COOKIE);
-require_once("applis.func.inc.php");
-$page->assign('xorg_title','Polytechnique.org - Mes contacts');
-        
-$uid  = Session::getInt('uid');
-$user = Env::get('user');
-
-switch (Env::get('action')) {
-    case 'retirer':
-       if (preg_match('/^\d+$/', $user)) {
-           if ($globals->xdb->execute('DELETE FROM contacts WHERE uid = {?} AND contact = {?}', $uid, $user))
-            {
-               $page->trig("Contact retiré !");
-            }
-       } else {
-           if ($globals->xdb->execute(
-                        'DELETE FROM  contacts
-                               USING  contacts AS c
-                          INNER JOIN  aliases  AS a ON (c.contact=a.id and a.type!="homonyme")
-                               WHERE  c.uid = {?} AND a.alias={?}', $uid, $user))
-            {
-               $page->trig("Contact retiré !");
-            }
-       }
-        break;
-
-    case 'ajouter':
-        require_once('user.func.inc.php');
-        if (($login = get_user_login($user)) !== false) {
-            if ($globals->xdb->execute(
-                        'INSERT INTO  contacts (uid, contact)
-                              SELECT  {?}, id
-                                FROM  aliases
-                               WHERE  alias = {?}', $uid, $login))
-            {
-                $page->trig('Contact ajouté !');
-            } else {
-                $page->trig('Contact déjà dans la liste !');
-            }
-        }
-}
-
-if(Get::get('trombi')) {
-    require_once('trombi.inc.php');
-    function getList($offset,$limit) {
-       global $globals;
-        $uid   = Session::getInt('uid');
-       $res   = $globals->xdb->query("SELECT COUNT(*) FROM contacts WHERE uid = {?}", $uid);
-       $total = $res->fetchOneCell();
-
-        $order = Get::get('order');
-        $orders = Array(
-            'nom'     => 'nom DESC, u.prenom, u.promo',
-            'promo'   => 'promo DESC, nom, u.prenom',
-            'last'    => 'u.date DESC, nom, u.prenom, promo');
-        if ($order != 'promo' && $order != 'last')
-            $order = 'nom';
-        $order = $orders[$order];
-        if (Get::get('inv') == '')
-            $order = str_replace(" DESC,", ",", $order);
-            
-       $res   = $globals->xdb->query("
-               SELECT  u.prenom, IF(u.nom_usage='',u.nom,u.nom_usage) AS nom, a.alias AS forlife, u.promo
-                 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 = {?}
-             ORDER BY  $order
-                LIMIT  {?}, {?}", $uid, $offset*$limit, $limit);
-        $list  = $res->fetchAllAssoc();
-
-       return Array($total, $list);
-    }
-    
-    $trombi = new Trombi('getList');
-    $trombi->setNbRows(4);
-    $page->assign_by_ref('trombi',$trombi);
-
-    $order = Get::get('order');
-    if ($order != 'promo' && $order != 'last')
-        $order = 'nom';
-    $page->assign('order', $order);
-    $page->assign('inv', Get::get('inv'));
-} else {
-
-    $order = Get::get('order');
-    $orders = Array(
-        'nom'     => 'sortkey DESC, a.prenom, a.promo',
-        'promo'   => 'promo DESC, sortkey, a.prenom',
-        'last'    => 'a.date DESC, sortkey, a.prenom, promo');
-    if ($order != 'promo' && $order != 'last')
-        $order = 'nom';
-    $page->assign('order', $order);
-    $page->assign('inv', Get::get('inv'));
-    $order = $orders[$order];
-    if (Get::get('inv') == '')
-        $order = str_replace(" DESC,", ",", $order);
-    
-    $sql = "SELECT  contact AS id,
-                   a.*, l.alias AS forlife,
-                   1 AS inscrit,
-                   a.perms != 'pending' AS wasinscrit,
-                   a.deces != 0 AS dcd, a.deces, a.matricule_ax, FIND_IN_SET('femme', a.flags) AS sexe,
-                   e.entreprise, es.label AS secteur, ef.fonction_fr AS fonction,
-                   IF(n.nat='',n.pays,n.nat) AS nat, n.a2 AS iso3166,
-                   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
-             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')
-         LEFT JOIN  entreprises    AS e   ON (e.entrid = 0 AND e.uid = a.user_id)
-         LEFT JOIN  emploi_secteur AS es  ON (e.secteur = es.id)
-         LEFT JOIN  fonctions_def  AS ef  ON (e.fonction = ef.id)
-         LEFT JOIN  geoloc_pays    AS n   ON (a.nationalite = n.a2)
-         LEFT JOIN  applis_ins     AS ai0 ON (a.user_id = ai0.uid AND ai0.ordre = 0)
-         LEFT JOIN  applis_def     AS ad0 ON (ad0.id = ai0.aid)
-         LEFT JOIN  applis_ins     AS ai1 ON (a.user_id = ai1.uid AND ai1.ordre = 1)
-         LEFT JOIN  applis_def     AS ad1 ON (ad1.id = ai1.aid)
-         LEFT JOIN  adresses       AS adr ON (a.user_id = adr.uid 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)
-             WHERE  c.uid = $uid
-          ORDER BY  ".$order;
-    
-    $page->assign_by_ref('citer', $globals->xdb->iterator($sql));
-}
-
-$page->run();
-
-// vim:set et sw=4 sts=4 sws=4:
-?>
diff --git a/htdocs/carnet/mescontacts_pdf.php b/htdocs/carnet/mescontacts_pdf.php
deleted file mode 100644 (file)
index 26c5b2c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************/
-
-require_once('xorg.inc.php');
-new_skinned_page('index.tpl', AUTH_COOKIE);
-require_once('contacts.pdf.inc.php');
-require_once('user.func.inc.php');
-
-session_write_close();
-
-$sql = "SELECT  a.alias
-          FROM  aliases       AS a
-    INNER JOIN  auth_user_md5 AS u ON ( a.id = u.user_id )
-    INNER JOIN  contacts      AS c ON ( a.id = c.contact )
-         WHERE  c.uid = {?} AND a.type='a_vie'";
-if (Get::get('order') == "promo") {
-    $sql .= " ORDER BY  u.promo, u.nom, u.prenom";
-} else {
-    $sql .= " ORDER BY  u.nom, u.prenom, u.promo";
-}
-
-$citer = $globals->xdb->iterRow($sql, Session::getInt('uid'));
-$pdf   = new ContactsPDF();
-
-while (list($alias) = $citer->next()) {
-    $user = get_user_details($alias);
-    $pdf->addContact($user, Env::has('photo'));
-}
-$pdf->Output();
-
-?>
diff --git a/htdocs/carnet/notifs.php b/htdocs/carnet/notifs.php
deleted file mode 100644 (file)
index 85c811e..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
- *  http://opensource.polytechnique.org/                                   *
- *                                                                         *
- *  This program is free software; you can redistribute it and/or modify   *
- *  it under the terms of the GNU General Public License as published by   *
- *  the Free Software Foundation; either version 2 of the License, or      *
- *  (at your option) any later version.                                    *
- *                                                                         *
- *  This program is distributed in the hope that it will be useful,        *
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
- *  GNU General Public License for more details.                           *
- *                                                                         *
- *  You should have received a copy of the GNU General Public License      *
- *  along with this program; if not, write to the Free Software            *
- *  Foundation, Inc.,                                                      *
- *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************/
-
-require_once("xorg.inc.php");
-new_skinned_page('carnet/notifs.tpl', AUTH_COOKIE);
-require_once('notifs.inc.php');
-
-$watch = new Watch(Session::getInt('uid'));
-
-$res = $globals->xdb->query("SELECT promo_sortie FROM auth_user_md5 WHERE user_id = {?}", Session::getInt('uid', -1));
-$promo_sortie = $res->fetchOneCell();
-$page->assign('promo_sortie', $promo_sortie);
-
-if(Env::has('promo')) {
-    if(preg_match('!^ *(\d{4}) *$!', Env::get('promo'), $matches)) {
-       $p = intval($matches[1]);
-       if($p<1900 || $p>2100) {
-            $page->trig("la promo entrée est invalide");
-       } else {
-           if (Env::has('add_promo')) $watch->_promos->add($p);
-           if (Env::has('del_promo')) $watch->_promos->del($p);
-       }
-    } elseif (preg_match('!^ *(\d{4}) *- *(\d{4}) *$!', Env::get('promo'), $matches)) {
-       $p1 = intval($matches[1]);
-       $p2 = intval($matches[2]);
-       if($p1<1900 || $p1>2100) {
-            $page->trig('la première promo de la plage entrée est invalide');
-       } elseif($p2<1900 || $p2>2100) {
-            $page->trig('la seconde promo de la plage entrée est invalide');
-       } else {
-           if (Env::has('add_promo')) $watch->_promos->addRange($p1,$p2);
-           if (Env::has('del_promo')) $watch->_promos->delRange($p1,$p2);
-       }
-    } else {
-        $page->trig("La promo (ou la plage de promo) entrée est dans un format incorrect.");
-    }
-}
-
-if (Env::has('del_nonins')) $watch->_nonins->del(Env::get('del_nonins'));
-if (Env::has('add_nonins')) $watch->_nonins->add(Env::get('add_nonins'));
-if (Env::has('subs'))       $watch->_subs->update('sub');
-if (Env::has('flags_contacts')) {
-    $watch->watch_contacts = Env::getBool('contacts');
-    $watch->saveFlags();
-}
-if (Env::has('flags_mail')) {
-    $watch->watch_mail     = Env::getBool('mail');
-    $watch->saveFlags();
-}
-
-$page->assign_by_ref('watch', $watch);
-$page->run();
-
-// vim:set et sws=4 sw=4 sts=4:
-?>
index f61732c..88b2658 100644 (file)
@@ -38,9 +38,9 @@ class ContactsPDF extends FPDF
         $this->AddFont('Vera Sans', '',  'Vera.php');
         $this->AddFont('Vera Sans', 'I', 'VeraIt.php');
         $this->AddFont('Vera Sans', 'B', 'VeraBd.php');
-        
+
         $this->AddFont('Vera Mono', '',  'VeraMono.php');
-        
+
         $this->SetTitle($this->title);
         $this->SetCreator('Site Polytechnique.org');
         $this->AddPage();
@@ -74,7 +74,7 @@ class ContactsPDF extends FPDF
             $this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
         }
     }
-    
+
     function Header()
     {
 
@@ -84,7 +84,7 @@ class ContactsPDF extends FPDF
         $this->Text(55,190,"informations limitées à un usage");
         $this->Text(40,210,"strictement personnel et non commercial");
         $this->Rotate(0);
-        
+
         $this->setLeftMargin(5);
         $this->setRightMargin(5);
         $this->SetFont('Vera Sans', 'B', 16);
@@ -95,7 +95,7 @@ class ContactsPDF extends FPDF
         $this->SetFillColor(245, 248, 252);
         $this->Cell(200, 10, $this->title, 1, 1, 'C', 1);
         $this->Image(dirname(dirname(__FILE__)).'/htdocs/images/logo.png', 5, 5, 10, 10, 'png', 'https://www.polytechnique.org/');
-        
+
         $this->Ln(10);
         $this->y0 = $this->GetY();
         $this->ColSetup(false);
@@ -155,10 +155,10 @@ class ContactsPDF extends FPDF
         $this->SetFont('Vera '.$font, '', 8);
         $this->setY($y);
         $first = 1;
-        
+
         $this->setX($x+25);
         $this->MultiCell(65, 4, $r, '', 1);
-       
+
         $this->setY(max($y1, $this->getY())+0.5);
         $this->setX($x);
     }
@@ -193,7 +193,7 @@ class ContactsPDF extends FPDF
         if ($a['entreprise']) {
             $this->TableRow('Entreprise', $a['entreprise']);
         }
-        
+
         if ($a['adr1'] || $a['adr2'] || $a['adr3'] || $a['postcode'] || $a['city']) {
             $r = '';
             $r = trim("$r\n".$a['adr1']);
@@ -272,12 +272,12 @@ class ContactsPDF extends FPDF
                 $photo = $res->fetchOneAssoc();
                 $width = $photo['x'] * 20/$photo['y'];
                 $GLOBALS["p{$x['user_id']}"] = $photo['attach'];
-               
+
                 $_x = $this->getX();
                 $_y = $this->getY();
                 $this->Cell(0, 20, '', '', 0, '', 1);
                 $this->Image("var://p{$x['user_id']}", $_x, $_y, $width, 20, $photo['attachmime']);
-                
+
                 if ($this->error) {
                     $this = $old2;
                 } else {
@@ -292,7 +292,7 @@ class ContactsPDF extends FPDF
         if (!$ok) {
             $this->MultiCell(0, 6, $nom, "T", 'C', 1);
         }
-        
+
         if ($x['mobile']) {
             $this->Space();
             $this->TableRow('mobile', $x['mobile'], 'Mono');
@@ -302,7 +302,7 @@ class ContactsPDF extends FPDF
             $this->Space();
             $this->Address($a);
         }
-        
+
         foreach ($x['adr_pro'] as $a) {
             if ( ! ($a['entreprise'] || $a['tel'] || $a['fax']
                     || $a['adr1'] || $a['adr2'] || $a['adr3'] || $a['postcode'] || $a['city']) )
index d0039ee..4710ae4 100644 (file)
@@ -24,10 +24,15 @@ class CarnetModule extends PLModule
     function handlers()
     {
         return array(
-            'carnet/panel'  => $this->make_hook('panel', 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/rss'    => $this->make_hook('rss',   AUTH_PUBLIC),
-            'carnet/ical'   => $this->make_hook('ical',  AUTH_PUBLIC),
+            'carnet/contacts'     => $this->make_hook('contacts', AUTH_COOKIE),
+            'carnet/contacts/pdf' => $this->make_hook('pdf',      AUTH_COOKIE),
+
+            'carnet/rss'          => $this->make_hook('rss',      AUTH_PUBLIC),
+            'carnet/ical'         => $this->make_hook('ical',     AUTH_PUBLIC),
         );
     }
 
@@ -42,6 +47,15 @@ class CarnetModule extends PLModule
                       );
     }
 
+    function handler_index(&$page)
+    {
+        $page->changeTpl('carnet/index.tpl');
+        $page->assign('xorg_title','Polytechnique.org - Mon carnet');
+        $this->_add_rss_link($page);
+
+        return PL_OK;
+    }
+
     function handler_panel(&$page)
     {
         $page->changeTpl('carnet/panel.tpl');
@@ -65,6 +79,259 @@ class CarnetModule extends PLModule
         return PL_OK;
     }
 
+    function _handler_notifs_promos(&$page, &$watch, $action, $arg)
+    {
+        if(preg_match('!^ *(\d{4}) *$!', $arg, $matches)) {
+            $p = intval($matches[1]);
+            if($p<1900 || $p>2100) {
+                $page->trig("la promo entrée est invalide");
+            } else {
+                if ($action == 'add_promo') {
+                    $watch->_promos->add($p);
+                } else {
+                    $watch->_promos->del($p);
+                }
+            }
+        } elseif (preg_match('!^ *(\d{4}) *- *(\d{4}) *$!', $arg, $matches)) {
+            $p1 = intval($matches[1]);
+            $p2 = intval($matches[2]);
+            if($p1<1900 || $p1>2100) {
+                $page->trig('la première promo de la plage entrée est invalide');
+            } elseif($p2<1900 || $p2>2100) {
+                $page->trig('la seconde promo de la plage entrée est invalide');
+            } else {
+                if ($action == 'add_promo') {
+                    $watch->_promos->addRange($p1, $p2);
+                } else {
+                    $watch->_promos->delRange($p1, $p2);
+                }
+            }
+        } else {
+            $page->trig("La promo (ou la plage de promo) entrée est dans un format incorrect.");
+        }
+    }
+
+    function handler_notifs(&$page, $action = null, $arg = null)
+    {
+        global $globals;
+
+        $page->changeTpl('carnet/notifs.tpl');
+
+        require_once 'notifs.inc.php';
+
+        $watch = new Watch(Session::getInt('uid'));
+
+        $res = $globals->xdb->query("SELECT promo_sortie
+                                       FROM auth_user_md5
+                                      WHERE user_id = {?}",
+                                    Session::getInt('uid', -1));
+        $promo_sortie = $res->fetchOneCell();
+        $page->assign('promo_sortie', $promo_sortie);
+
+        switch ($action) {
+          case 'add_promo':
+          case 'del_promo':
+            $this->_handler_notifs_promos($page, $watch, $action, $arg);
+            break;
+
+          case 'del_nonins':
+            $watch->_nonins->del($arg);
+            break;
+
+          case 'add_nonins':
+            $watch->_nonins->add($arg);
+            break;
+        }
+
+        if (Env::has('subs'))       $watch->_subs->update('sub');
+        if (Env::has('flags_contacts')) {
+            $watch->watch_contacts = Env::getBool('contacts');
+            $watch->saveFlags();
+        }
+        if (Env::has('flags_mail')) {
+            $watch->watch_mail     = Env::getBool('mail');
+            $watch->saveFlags();
+        }
+
+        $page->assign_by_ref('watch', $watch);
+
+        return PL_OK;
+    }
+
+    function _get_list($offset, $limit) {
+        global $globals;
+        $uid   = Session::getInt('uid');
+        $res   = $globals->xdb->query("SELECT COUNT(*) FROM contacts WHERE uid = {?}", $uid);
+        $total = $res->fetchOneCell();
+
+        $order = Get::get('order');
+        $orders = Array(
+            'nom'     => 'nom DESC, u.prenom, u.promo',
+            'promo'   => 'promo DESC, nom, u.prenom',
+            'last'    => 'u.date DESC, nom, u.prenom, promo');
+        if ($order != 'promo' && $order != 'last')
+            $order = 'nom';
+        $order = $orders[$order];
+        if (Get::get('inv') == '')
+            $order = str_replace(" DESC,", ",", $order);
+
+        $res   = $globals->xdb->query("
+                SELECT  u.prenom, IF(u.nom_usage='',u.nom,u.nom_usage) AS nom, a.alias AS forlife, u.promo
+                  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 = {?}
+              ORDER BY  $order
+                 LIMIT  {?}, {?}", $uid, $offset*$limit, $limit);
+        $list  = $res->fetchAllAssoc();
+
+        return Array($total, $list);
+    }
+
+    function handler_contacts(&$page, $action = null)
+    {
+        global $globals;
+
+        $page->changeTpl('carnet/mescontacts.tpl');
+        require_once("applis.func.inc.php");
+        $page->assign('xorg_title','Polytechnique.org - Mes contacts');
+
+        $uid  = Session::getInt('uid');
+        $user = Env::get('user');
+
+        switch (Env::get('action')) {
+            case 'retirer':
+                if (is_numeric($user)) {
+                    if ($globals->xdb->execute('DELETE FROM contacts
+                                                      WHERE uid = {?} AND contact = {?}',
+                                               $uid, $user))
+                    {
+                        $page->trig("Contact retiré !");
+                    }
+                } else {
+                    if ($globals->xdb->execute(
+                                'DELETE FROM  contacts
+                                       USING  contacts AS c
+                                  INNER JOIN  aliases  AS a ON (c.contact=a.id and a.type!="homonyme")
+                                       WHERE  c.uid = {?} AND a.alias={?}', $uid, $user))
+                    {
+                        $page->trig("Contact retiré !");
+                    }
+                }
+                break;
+
+            case 'ajouter':
+                require_once('user.func.inc.php');
+                if (($login = get_user_login($user)) !== false) {
+                    if ($globals->xdb->execute(
+                                'INSERT INTO  contacts (uid, contact)
+                                      SELECT  {?}, id
+                                        FROM  aliases
+                                       WHERE  alias = {?}', $uid, $login))
+                    {
+                        $page->trig('Contact ajouté !');
+                    } else {
+                        $page->trig('Contact déjà dans la liste !');
+                    }
+                }
+        }
+
+        if ($action == 'trombi') {
+            require_once 'trombi.inc.php';
+
+            $trombi = new Trombi(array($this, '_get_list'));
+            $trombi->setNbRows(4);
+            $page->assign_by_ref('trombi',$trombi);
+
+            $order = Get::get('order');
+            if ($order != 'promo' && $order != 'last')
+                $order = 'nom';
+            $page->assign('order', $order);
+            $page->assign('inv', Get::get('inv'));
+
+        } else {
+
+            $order = Get::get('order');
+            $orders = Array(
+                'nom'     => 'sortkey DESC, a.prenom, a.promo',
+                'promo'   => 'promo DESC, sortkey, a.prenom',
+                'last'    => 'a.date DESC, sortkey, a.prenom, promo');
+            if ($order != 'promo' && $order != 'last')
+                $order = 'nom';
+            $page->assign('order', $order);
+            $page->assign('inv', Get::get('inv'));
+            $order = $orders[$order];
+            if (Get::get('inv') == '')
+                $order = str_replace(" DESC,", ",", $order);
+
+            $sql = "SELECT  contact AS id,
+                            a.*, l.alias AS forlife,
+                            1 AS inscrit,
+                            a.perms != 'pending' AS wasinscrit,
+                            a.deces != 0 AS dcd, a.deces, a.matricule_ax,
+                            FIND_IN_SET('femme', a.flags) AS sexe,
+                            e.entreprise, es.label AS secteur, ef.fonction_fr AS fonction,
+                            IF(n.nat='',n.pays,n.nat) AS nat, n.a2 AS iso3166,
+                            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
+                      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')
+                 LEFT JOIN  entreprises    AS e   ON (e.entrid = 0 AND e.uid = a.user_id)
+                 LEFT JOIN  emploi_secteur AS es  ON (e.secteur = es.id)
+                 LEFT JOIN  fonctions_def  AS ef  ON (e.fonction = ef.id)
+                 LEFT JOIN  geoloc_pays    AS n   ON (a.nationalite = n.a2)
+                 LEFT JOIN  applis_ins     AS ai0 ON (a.user_id = ai0.uid AND ai0.ordre = 0)
+                 LEFT JOIN  applis_def     AS ad0 ON (ad0.id = ai0.aid)
+                 LEFT JOIN  applis_ins     AS ai1 ON (a.user_id = ai1.uid AND ai1.ordre = 1)
+                 LEFT JOIN  applis_def     AS ad1 ON (ad1.id = ai1.aid)
+                 LEFT JOIN  adresses       AS adr ON (a.user_id = adr.uid
+                                                      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)
+                     WHERE  c.uid = $uid
+                  ORDER BY  ".$order;
+
+            $page->assign_by_ref('citer', $globals->xdb->iterator($sql));
+        }
+
+        return PL_OK;
+    }
+
+    function handler_pdf(&$page, $arg0 = null, $arg1 = null)
+    {
+        global $globals;
+
+        require_once 'contacts.pdf.inc.php';
+        require_once 'user.func.inc.php';
+
+        session_write_close();
+
+        $sql = "SELECT  a.alias
+                  FROM  aliases       AS a
+            INNER JOIN  auth_user_md5 AS u ON ( a.id = u.user_id )
+            INNER JOIN  contacts      AS c ON ( a.id = c.contact )
+                 WHERE  c.uid = {?} AND a.type='a_vie'";
+        if ($arg0 == 'promo') {
+            $sql .= ' ORDER BY  u.promo, u.nom, u.prenom';
+        } else {
+            $sql .= ' ORDER BY  u.nom, u.prenom, u.promo';
+        }
+
+        $citer = $globals->xdb->iterRow($sql, Session::getInt('uid'));
+        $pdf   = new ContactsPDF();
+
+        while (list($alias) = $citer->next()) {
+            $user = get_user_details($alias);
+            $pdf->addContact($user, $arg0 == 'photos' || $arg1 == 'photos');
+        }
+        $pdf->Output();
+
+        exit;
+    }
+
     function handler_rss(&$page, $user = null, $hash = null)
     {
         require_once 'rss.inc.php';
index 9905583..d696949 100644 (file)
@@ -31,7 +31,7 @@
   <tr class="impair">
     <td class='half'>
       <h3>
-        <a href="{"carnet/mescontacts.php"|url}">Page de tes contacts</a>
+        <a href="{rel}/carnet/contacts">Page de tes contacts</a>
       </h3>
       <div class="explication">
         Tu peux ici lister tes contacts, en ajouter et en retirer.
@@ -39,7 +39,7 @@
     </td>
     <td class='half'>
       <h3>
-        <a href="{"carnet/mescontacts.php?trombi=1"|url}">Le trombi de tes contacts</a>
+        <a href="{rel}/carnet/contacts/trombi">Le trombi de tes contacts</a>
       </h3>
       <div class="explication">
         La même chose que la page de tes contacts... <strong>en images !</strong>
   </div>
   {else}
   <div class="right">
-    <a href='{rel}/prefs/rss/?referer=carnet/index.php'><img src='{rel}/images/rssact.gif' alt='fil rss' /></a>
+    <a href='{rel}/prefs/rss/?referer=carnet'><img src='{rel}/images/rssact.gif' alt='fil rss' /></a>
   </div>
   {/if}
       </div>
     </td>
     <td class='half'>
       <h3>
-        <a href="{"carnet/notifs.php"|url}">Configurer tes notifications</a>
+        <a href="{rel}/carnet/notifs">Configurer tes notifications</a>
       </h3>
       <div class="explication">
         Être notifié des inscriptions, décès, changement de fiche, ...
index 47986d6..debf8d0 100644 (file)
@@ -46,12 +46,12 @@ Pour r
 </p>
 <ul>
   <li>avec les photos :
-  [<a href="mescontacts_pdf.php/mes_contacts.pdf?order=promo&amp;photo" class='popup'><strong>tri par promo</strong></a>]
-  [<a href="mescontacts_pdf.php/mes_contacts.pdf?photo" class='popup'><strong>tri par noms</strong></a>]
+  [<a href="{rel}/carnet/contacts/pdf/promo/photos/mescontacts.pdf" class='popup'><strong>tri par promo</strong></a>]
+  [<a href="{rel}/carnet/contacts/pdf/photos/mescontacts.pdf" class='popup'><strong>tri par noms</strong></a>]
   </li>
   <li>sans les photos :
-  [<a href="mescontacts_pdf.php/mes_contacts.pdf?order=promo" class='popup'><strong>tri par promo</strong></a>]
-  [<a href="mescontacts_pdf.php/mes_contacts.pdf" class='popup'><strong>tri par noms</strong></a>]
+  [<a href="{rel}/carnet/contacts/pdf/promo/mescontacts.pdf" class='popup'><strong>tri par promo</strong></a>]
+  [<a href="{rel}/carnet/contacts/pdf/mescontacts.pdf" class='popup'><strong>tri par noms</strong></a>]
   </li>
 </ul>
 {if $smarty.session.core_rss_hash}
@@ -70,12 +70,10 @@ Pour r
 
 {if $trombi}
 
-<h1>
-  Mon trombino de contacts
-</h1>
+<h1>Mon trombino de contacts</h1>
 
 <p>
-Pour afficher la liste détaillée de tes contacts: [<a href="{$smarty.server.PHP_SELF}?order={$order}&inv={$inv}"><strong>vue classique</strong></a>]
+Pour afficher la liste détaillée de tes contacts: [<a href="{rel}/carnet/contacts?order={$order}&inv={$inv}"><strong>vue classique</strong></a>]
 </p>
 
 {include file=carnet/tricontacts.tpl order=$order}
@@ -89,7 +87,7 @@ Pour afficher la liste d
 </h1>
 
 <p>
-[<a href="?trombi=1&amp;order={$order}&amp;inv={$inv}"><strong>Afficher le trombi de tes contacts</strong></a>]
+[<a href="{rel}/carnet/contacts/trombi?order={$order}&amp;inv={$inv}"><strong>Afficher le trombi de tes contacts</strong></a>]
 </p>
 
 {include file=carnet/tricontacts.tpl order=$order}
index 878e199..46c962d 100644 (file)
 {**************************************************************************}
 
 
-<h1 id='top'>Notifications automatiques</h1>
+<h1>Notifications automatiques</h1>
 
 <p>Les mails sont hebdomadaires (pour éviter une trop grosse charge du serveur de mails et de ta boite mail).
 S'il n'y a rien à te signaler le mail ne t'est pas envoyé.</p>
 
-<form action="#top" method="post">
+<form action="{rel}/carnet/notifs" method="post">
   <fieldset>
     <legend>Mail</legend>
     <input type='checkbox' name='mail' onclick="this.form.submit();" {if $watch->watch_mail}checked="checked"{/if} />
@@ -35,7 +35,7 @@ S'il n'y a rien 
   </fieldset>
 </form>
 
-<form action="{$smarty.server.PHP_SELF}" method="post">
+<form action="{rel}/carnet/notifs" method="post">
   <fieldset>
     <legend>Événements à surveiller</legend>
     {foreach from=$watch->cats() item=s key=i}
@@ -54,7 +54,7 @@ S'il n'y a rien 
 
 <h2>Surveiller ses contacts</h2>
 
-<form action="#middle" method="post">
+<form action="{rel}/carnet/notifs#middle" method="post">
   <fieldset>
     <legend>Contacts</legend>
     <input type='checkbox' name='contacts' onclick="this.form.submit();" {if $watch->watch_contacts}checked="checked"{/if} /> Surveiller mes contacts<br />
@@ -70,14 +70,16 @@ S'il n'y a rien 
 Attention : pour les promos, tu n'es pas notifié des évènements trop fréquents (par exemple les changements de fiche).
 </p>
 
-<form action="{$smarty.server.PHP_SELF}" method="post">
+<form action="{rel}/carnet/notifs/" method="post">
   <fieldset>
     <legend>Ajouter une promo</legend>
     Tu peux surveiller des promos (mettre la promo sur 4 chiffres),
     ou des plages de promos (par ex. 1990-1992) : <br />
     <input type='text' name='promo' />
-    <input type='submit' name='add_promo' value='ajouter' />
-    <input type='submit' name='del_promo' value='retirer' />
+    <input type='submit' name='add_promo' value='ajouter'
+      onclick="this.form.action += 'add_promo/' + this.form.promo.value;" />
+    <input type='submit' name='del_promo' value='retirer'
+      onclick="this.form.action += 'del_promo/' + this.form.promo.value;" />
     <br />
     {if $watch->promos()|@count eq 0}
     <p>Tu ne surveilles actuellement aucune promo.</p>
@@ -113,7 +115,7 @@ et cliquer sur les icones <img src="{"images/ajouter.gif"|url}" alt="Ajouter" />
       <ul>
         {foreach from=$watch->nonins() item=p}
         <li>
-        {$p.prenom} {$p.nom} ({$p.promo}) <a href="?del_nonins={$p.user_id}"><img src="{"images/retirer.gif"|url}" alt="retirer" /></a>
+        {$p.prenom} {$p.nom} ({$p.promo}) <a href="{rel}/carnet/notifs/del_nonins/{$p.user_id}"><img src="{"images/retirer.gif"|url}" alt="retirer" /></a>
         </li>
         {/foreach}
       </ul>
index 516d697..2c584d4 100644 (file)
@@ -34,7 +34,7 @@ Tu peux les <a href="?read={$now}">marquer comme vus</a> sans te d
 
 <p>
 Tu peux choisir plus finement les données affichées sur cette page.
-Il faut pour celà se rendre sur la page de <a href='notifs.php'>configuration des notifications</a>.
+Il faut pour celà se rendre sur la page de <a href='{rel}/carnet/notifs'>configuration des notifications</a>.
 </p>
 
 <div class="right">
@@ -69,7 +69,7 @@ Il faut pour cel
         {$promo[row].prenom} {$promo[row].nom}
       </a>
       {if !$promo[row].contact}
-      <a href="{"carnet/mescontacts.php"|url}?action=ajouter&amp;user={$promo[row].bestalias}">{*
+      <a href="{rel}/carnet/contacts?action=ajouter&amp;user={$promo[row].bestalias}">{*
         *}<img src="{"images/ajouter.gif"|url}" alt="ajouter à mes contacts" />{*
       *}</a>
       {/if}
index b159212..e202ed8 100644 (file)
@@ -61,7 +61,7 @@
       <link>{#globals.baseurl#}/fiche.php?user={$x.bestalias}&force_login=1</link>
       <description><![CDATA[
         {if !$x.contact and !$x.dcd}
-        <a href="{#globals.baseurl#}/carnet/mescontacts.php?action=ajouter&amp;user={$x.bestalias}">
+        <a href="{#globals.baseurl#}/carnet/contacts?action=ajouter&amp;user={$x.bestalias}">
           ajouter &agrave; mes contacts
         </a>
         {/if}
index 2352450..4679c95 100644 (file)
@@ -48,11 +48,11 @@ function chgMainWinLoc( strPage ) {
           <img src="images/vcard.png" alt="Afficher la carte de visite" title="Afficher la carte de visite"/>
         </a>
         {if !$x.is_contact}
-        <a href="javascript:x()"  onclick="chgMainWinLoc('{rel}/carnet/mescontacts.php?action=ajouter&amp;user={$x.forlife}')">
+        <a href="javascript:x()"  onclick="chgMainWinLoc('{rel}/carnet/contacts?action=ajouter&amp;user={$x.forlife}')">
           <img src="images/ajouter.gif" alt="Ajouter à mes contacts" title="Ajouter à mes contacts" />
         </a>
         {else}
-        <a href="javascript:x()"  onclick="chgMainWinLoc('{rel}/carnet/mescontacts.php?action=retirer&amp;user={$x.forlife}')">
+        <a href="javascript:x()"  onclick="chgMainWinLoc('{rel}/carnet/contacts?action=retirer&amp;user={$x.forlife}')">
           <img src="images/retirer.gif" alt="Retirer de mes contacts" title="Retirer de mes contacts" />
         </a>
         {/if}
index f48d9e0..61c18c3 100644 (file)
     {min_auth level="cookie"}
     {if !$c.wasinscrit && !$c.dcd}
       {if $show_action eq ajouter}
-        <a href="{rel}/carnet/notifs.php?add_nonins={$c.user_id}">{*
+        <a href="{rel}/carnet/notifs/add_nonins/{$c.user_id}">{*
         *}<img src="{rel}/images/ajouter.gif" alt="Ajouter à la liste de mes surveillances" title="Ajouter à la liste de mes surveillances" /></a>
       {else}
-        <a href="{rel}/carnet/notifs.php?del_nonins={$c.user_id}">{*
+        <a href="{rel}/carnet/notifs/del_nonins/{$c.user_id}">{*
         *}<img src="{rel}/images/retirer.gif" alt="Retirer de la liste de mes surveillances" title="Retirer de la liste de mes surveillances" /></a>
       {/if}
     {elseif $c.wasinscrit}
@@ -61,7 +61,7 @@
       {if !$c.dcd}
         <a href="{rel}/vcard.php/{$c.forlife}.vcf?x={$c.forlife}">{*
         *}<img src="{rel}/images/vcard.png" alt="Afficher la carte de visite" title="Afficher la carte de visite" /></a>
-        <a href="{rel}/carnet/mescontacts.php?action={$show_action}&amp;user={$c.forlife}">{*
+        <a href="{rel}/carnet/contacts?action={$show_action}&amp;user={$c.forlife}">{*
         *}<img src="{rel}/images/{$show_action}.gif" alt="{if $show_action eq "ajouter"}Ajouter à mes{else}Retirer de mes{/if} contacts"
             title="{if $show_action eq "ajouter"}Ajouter à mes{else}Retirer de mes{/if} contacts" /></a>
       {/if}