X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fcarnet.php;h=c9685146306172041bea5ecc4ce720f79de52371;hb=5d45be961ee2170ae9aa8bb15aaf2bdaaa45450a;hp=d96dcb6d6add7f2e1410dc06253ff59de14a316f;hpb=93c099e155700879064370905bde12a755feb657;p=platal.git diff --git a/modules/carnet.php b/modules/carnet.php index d96dcb6..c968514 100644 --- a/modules/carnet.php +++ b/modules/carnet.php @@ -1,6 +1,6 @@ $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/ical' => $this->make_hook('ical', AUTH_PUBLIC), 'carnet/contacts/vcard' => $this->make_hook('vcard', AUTH_COOKIE), 'carnet/rss' => $this->make_hook('rss', AUTH_PUBLIC), @@ -49,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) @@ -87,7 +84,7 @@ class CarnetModule extends PLModule if(preg_match('!^ *(\d{4}) *$!', $arg, $matches)) { $p = intval($matches[1]); if($p<1900 || $p>2100) { - $page->trig("la promo entrée est invalide"); + $page->trig("la promo entrée est invalide"); } else { if ($action == 'add_promo') { $watch->_promos->add($p); @@ -99,9 +96,9 @@ class CarnetModule extends PLModule $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'); + $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'); + $page->trig('la seconde promo de la plage entrée est invalide'); } else { if ($action == 'add_promo') { $watch->_promos->addRange($p1, $p2); @@ -110,7 +107,7 @@ class CarnetModule extends PLModule } } } else { - $page->trig("La promo (ou la plage de promo) entrée est dans un format incorrect."); + $page->trig("La promo (ou la plage de promo) entrée est dans un format incorrect."); } } @@ -191,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'); @@ -199,19 +197,19 @@ class CarnetModule extends PLModule case 'retirer': if (is_numeric($user)) { if (XDB::execute('DELETE FROM contacts - WHERE uid = {?} AND contact = {?}', + WHERE uid = {?} AND contact = {?}', $uid, $user)) { - $page->trig("Contact retiré !"); + $page->trig("Contact retiré !"); } } else { if (XDB::execute( - 'DELETE FROM contacts + 'DELETE FROM c 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é !"); + $page->trig("Contact retiré !"); } } break; @@ -225,16 +223,14 @@ class CarnetModule extends PLModule FROM aliases WHERE alias = {?}', $uid, $login)) { - $page->trig('Contact ajouté !'); + $page->trig('Contact ajouté !'); } else { - $page->trig('Contact déjà dans la liste !'); + $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); @@ -337,9 +333,21 @@ class CarnetModule extends PLModule $page->assign('notifs', $notifs); } - function handler_ical(&$page) + function handler_ical(&$page, $alias = null, $hash = null) { - require_once dirname(__FILE__).'/carnet/smarty.php'; + require_once 'rss.inc.php'; + $uid = init_rss(null, $alias, $hash, false); + if (S::logged()) { + if (!$uid) { + $uid = S::i('uid'); + } else if ($uid != S::i('uid')) { + require_once 'xorg.misc.inc.php'; + send_warning_email("Récupération d\'un autre utilisateur ($uid)"); + } + } else if (!$uid) { + exit; + } + require_once 'ical.inc.php'; $page->changeTpl('carnet/calendar.tpl', NO_SKIN); $page->register_function('display_ical', 'display_ical'); @@ -354,7 +362,7 @@ class CarnetModule extends PLModule 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')); + WHERE c.uid = {?}', $uid); $annivs = Array(); while (list($prenom, $nom, $promo, $naissance, $end, $ts, $forlife) = $res->next()) { @@ -374,15 +382,15 @@ class CarnetModule extends PLModule header('Content-Type: text/calendar; charset=utf-8'); } - function handler_vcard(&$page) + 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()); + $vcard = new VCard($res->fetchColumn(), $photos == 'photos'); $vcard->do_page(&$page); } } +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>