================================================================================
+VERSION 0.9.16 XX XX 2008
+
+New:
+
+ * Carnet:
+ - List updated fields in notifications -FRU
+
+ * Core:
+ - New PlProfiler tool -FRU
+ - Integration of goodies/external tools with local rss/iCal -VZA
+ - iGoogle gadgets for latest events and directory search -VZA
+ - Integration of Google Apps accounts -VZA
+
+ * Emails:
+ - Imap mail storage can be activated/deactivated from interface -VZA
+
+ * Lists:
+ - Unsure mails are moderated -FRU
+
+ * Forums:
+ - Ban system -THD
+
+Bug/Wish:
+
+ * Emails:
+ - #726: Don't send the email if an attachment can't be downloaded -FRU
+ - #750: Fix email list in test email -FRU
+ - #802: Fix upload content type checking on some buggy PHP -FRU
+
+ * Lists:
+ - #793: Show broken members on ML -FRU
+
+ * Profile:
+ - #729: Fix positioning of addresses on public profile -FRU
+ - #742: Sub domain was hidden when editing profile -FRU
+ - #752: Don't show vcard link on profile when the person is dead -FRU
+ - #764: Fix mentoring edition page -FRU
+ - #790: Ensure we always have a current address -FRU
+
+ * Search:
+ - #741: Mentor search in advanced search -FRU
+
+ * XnetEvent:
+ - #728: Update CSV -FRU
+ - #743: Don't show a warning when subscriber has no forlife -FRU
+ - #730: XnetEvents are not synchronized with aliases -VZA
+
+ * XnetGrp:
+ - #732: Adapt subscription text to sex -FRU
+ - #735: Encoding of list description in member edition form -FRU
+ - #740: Can add a picture in the announces -FRU
+
+From 0.9.15 branch:
+
+ * XnetEvents:
+ - #738: Duplicated payments in certain conditions -FRU
+
+================================================================================
VERSION 0.9.15 08 10 2007
New:
* OG : Olivier Guillaumin <olivier.guillaumin@m4x.org>
* PIK: Fabien Laborde (pika) <fabien.laborde@m4x.org>
* SHK: Jeremy Lainé (Sharky) <jeremy.laine@m4x.org>
+ * THD: Thomas Deniau (Totom) <thomas.deniau@m4x.org>
* VP : Vincent Palatin <vincent.palatin@m4x.org>
* XdX: Alexandre Hô (XandreX) <alexandre.ho@m4x.org>
+ * VZA: Vincent Zanotti (vinZ2) <vincent.zanotti@m4x.org>
================================================================================
vim:et:ts=4:sw=4:tw=80:enc=utf-8:
VERSNUM := $(shell grep VERSION ChangeLog | head -1 | sed -e "s/VERSION //;s/ .*//")
VERSTAG := $(shell grep VERSION ChangeLog | head -1 | grep 'XX' > /dev/null 2> /dev/null && echo 'beta')
+BANANA := $(shell ( [ -d ../banana ] && echo `pwd`"/../banana" ) || echo "/home/web/dev/banana")
+
VERSION = $(VERSNUM)$(VERSTAG)
PKG_NAME = platal
## core
##
-core: spool/templates_c spool/mails_c include/globals.inc.php configs/platal.cron htdocs/.htaccess
+core: spool/templates_c spool/mails_c include/globals.inc.php configs/platal.cron htdocs/.htaccess spool/conf
-spool/templates_c spool/mails_c spool/uploads:
+spool/templates_c spool/mails_c spool/uploads spool/conf spool/uploads/temp:
mkdir -p $@
chmod o+w $@
+spool/uploads/temp/.htaccess: spool/uploads/temp Makefile
+ echo "Order deny,allow" > $@
+ echo "Deny from all" >> $@
+
htdocs/.htaccess: htdocs/.htaccess.in Makefile
@REWRITE_BASE="/~$$(id -un)"; \
test "$$REWRITE_BASE" = "/~web" && REWRITE_BASE="/"; \
build-wiki: $(WIKI_NEEDS) | get-wiki
-htdocs/uploads: spool/uploads
+htdocs/uploads: spool/uploads/temp/.htaccess
cd htdocs && ln -sf ../spool/uploads
htdocs/wiki:
## banana
##
-banana: htdocs/images/banana htdocs/css/banana.css
+banana: htdocs/images/banana htdocs/css/banana.css include/banana/banana.inc.php
htdocs/images/banana:
- cd $(@D) && ln -sf /usr/share/banana/img $(@F)
+ cd $(@D) && ln -snf $(BANANA)/img $(@F)
htdocs/css/banana.css:
- cd $(@D) && ln -sf /usr/share/banana/css/style.css $(@F)
+ cd $(@D) && ln -snf $(BANANA)/css/style.css $(@F)
+
+include/banana/banana.inc.php:
+ cd $(@D) && find $(BANANA)/banana/ -name '*.php' -exec ln -snf {} . ";"
+
+
##
## jquery
################################################################################
-.PHONY: build dist clean wiki build-wiki banana
+.PHONY: build dist clean wiki build-wiki banana htdocs/images/banana htdocs/css/banana.css include/banana/banana.inc.php
require_once 'connect.db.inc.php';
require_once dirname(__FILE__).'/../include/banana/ml.inc.php';
+ini_set('memory_limit', '128M');
Banana::$mbox_helper = $globals->banana->mbox_helper;
Banana::$spool_root = $globals->banana->spool_root;
require_once 'connect.db.inc.php';
require_once dirname(__FILE__).'/../include/banana/ml.inc.php';
+ini_set('memory_limit', '128M');
Banana::$mbox_helper = $globals->banana->mbox_helper;
Banana::$spool_root = $globals->banana->spool_root;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
require_once 'xdb.php';
-$globals->baseurl = "https://www.polytechnique.org";
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
require_once 'connect.db.inc.php';
require_once dirname(__FILE__).'/../../include/banana/ml.inc.php';
+ini_set('memory_limit', '128M');
Banana::$mbox_helper = $globals->banana->mbox_helper;
Banana::$spool_root = $globals->banana->spool_root;
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
require('./connect.db.inc.php');
require('plmailer.php');
-$res = XDB::query("SELECT count(stamp), sum(stamp < NOW() - $M_PERIOD), sum(stamp < NOW() - $R_PERIOD) FROM x4dat.requests");
-list($nb,$nbold,$nbveryold) = $res->fetchOneRow();
+$res = XDB::query("SELECT count(r.stamp), UNIX_TIMESTAMP(MIN(r.stamp)),
+ sum(r.stamp < NOW() - $M_PERIOD), sum(r.stamp < NOW() - $R_PERIOD)
+ FROM x4dat.requests AS r");
+list($nb, $age, $nbold, $nbveryold) = $res->fetchOneRow();
+
+$age = (time() - intval($age)) / 86400;
+$head = "";
+if ($age > 15) {
+ $head = "[autodestruction du serveur] ";
+} elseif ($age > 7) {
+ $head = "[armageddon imminent] ";
+} elseif ($age > 5) {
+ $head = "[guerre nucléaire] ";
+} elseif ($age > 3) {
+ $head = "[ET Téléphone maison] ";
+} elseif ($age > 1) {
+ $head = "[réveil !] ";
+} elseif (!empty($nbveryold)) {
+ $head = "[urgent] ";
+}
+
if (empty($nb)) {
exit;
$mymail = new PlMailer();
$mymail->setFrom('validation@' . $globals->mail->domain);
$mymail->addTo("validation@" . $globals->mail->domain);
-$mymail->setSubject((empty($nbveryold)?"":"[urgent] ")."il y a $nb validation$plural non effectuée$plural");
+$mymail->setSubject($head . "il y a $nb validation$plural non effectuée$plural");
$message =
"il y a $nb validation$plural à effectuer \n"
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+#!/usr/bin/php5 -q
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+// Updates the gapps_accounts table with Plat/al information.
+// Cleans-up the job queue, and execute post-queue hooks.
+
+require_once('../connect.db.inc.php');
+require_once('../../classes/plmailer.php');
+require_once('../../include/googleapps.inc.php');
+if (!$globals->mailstorage->googleapps_domain) {
+ exit;
+}
+
+/* Updates the l_userid parameter for newer user accounts. */
+$res = XDB::iterator(
+ "SELECT g.g_account_name, a.id
+ FROM gapps_accounts AS g
+ LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie')
+ WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.id IS NOT NULL");
+while ($account = $res->next()) {
+ XDB::execute(
+ "UPDATE gapps_accounts
+ SET l_userid = {?}
+ WHERE g_account_name = {?}",
+ $account['id'], $account['g_account_name']);
+}
+
+/* Emits a warning for GApps accounts without local user_id. */
+$res = XDB::iterator(
+ "SELECT g.g_account_name
+ FROM gapps_accounts AS g
+ LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie')
+ WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.id IS NULL");
+while ($account = $res->next()) {
+ if (!preg_match("/^admin-/", $account['g_account_name'])) {
+ printf("Warning: GApps account '%s' has no local user_id.\n", $account['g_account_name']);
+ }
+}
+
+/* Retrieves successful job queues for post-queue processing. */
+$res = XDB::iterator(
+ "SELECT q_id, q_recipient_id, j_type, j_parameters
+ FROM gapps_queue
+ WHERE p_status = 'success' AND q_recipient_id IS NOT NULL");
+while ($job = $res->next()) {
+ if ($job['j_type'] == 'u_create') {
+ post_queue_u_create($job);
+ } else if ($job['j_type'] == 'u_update') {
+ post_queue_u_update($job);
+ }
+}
+
+/* Removes successful jobs, and old failed jobs. */
+XDB::execute(
+ "DELETE FROM gapps_queue
+ WHERE p_status = 'success' OR
+ (p_status = 'hardfail' AND p_end_date < DATE_SUB(NOW(), INTERVAL 15 DAY))");
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$all = new AllNotifs();
-foreach($all->_data as $u) {
- $week = date("W - Y");
-
- $text = " ".($u['sexe'] ? 'Chère' : 'Cher')." {$u['prenom']},\n\n"
- . " Voici les événements survenus dans la semaine écoulée,\n"
- . "et depuis ta dernière visite sur le site.\n\n"
- . "Tu trouveras les mêmes informations sur la page :\n"
- . " https://www.polytechnique.org/carnet/panel\n\n"
- . "------------------------------------------------------------------------\n\n";
-
- $html = <<<EOF
-<html>
- <head>
- <title>Notifications de la semaine $week</title>
- </head>
- <body>
- <p>Voici les événements survenus dans la semaine écoulée, et depuis ta dernière visite sur le site.</p>
- <p>Tu trouveras les mêmes informations sur <a href='https://www.polytechnique.org/carnet/panel'>cette page</a></p>
-EOF;
-
- foreach($u['data'] as $cid=>$d) {
- $text .= " {$all->_cats[$cid][(count($d)==1)?'mail_sg':'mail']} :\n\n";
- $html .= "<h1 style='font-size: 120%'>{$all->_cats[$cid][(count($d)==1)?'mail_sg':'mail']} :</h1>\n<ul>\n";
-
- foreach($d as $promo=>$x) {
- require_once('../../plugins/modifier.date_format.php');
- $date = smarty_modifier_date_format($x['date'], '%d %b %Y');
- $text .= " - (X{$x['promo']}) {$x['prenom']} {$x['nom']} le $date\n";
- $text .= " https://www.polytechnique.org/profile/private/{$x['bestalias']}\n\n";
- $html .= "<li>(X{$x['promo']}) <a href='https://www.polytechnique.org/profile/private/{$x['bestalias']}'>{$x['prenom']} {$x['nom']}</a> le $date</li>\n";
- }
- $text .= "\n";
- $html .= "</ul>\n";
- }
-
- $text .= "-- \n"
- . "L'équipe de Polytechnique.org\n\n"
- . "------------------------------------------------------------------------\n\n"
- . "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"
- . " https://www.polytechnique.org/carnet/notifs";
- $html .= <<<EOF
- <hr />
- <p>L'équipe de Polytechnique.org</p>
- <br />
- <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="https://www.polytechnique.org/carnet/notifs">page
- de configuration des notifications</a>
- </p>
- </body>
-</html>
-EOF;
-
- global $globals;
- $mailer = new PlMailer();
- $mailer->setFrom('Carnet Polytechnicien <support_carnet@' . $globals->mail->domain . '>');
- $mailer->addTo("\"{$u['prenom']} {$u['nom']}\" <{$u['bestalias']}@" . $globals->mail->domain . '>');
- $mailer->setSubject("Notifications de la semaine $week");
- $mailer->setTxtBody($text);
- if ($u['mail_fmt'] == 'html') { $mailer->setHtmlBody($html); }
- $mailer->send();
+$mailer = new PlMailer('carnet/notif.mail.tpl');
+foreach ($all->_data as $u) {
+ $mailer = new PlMailer('carnet/notif.mail.tpl');
+ $mailer->assign('u', $u);
+ $mailer->assign('week', date("W - Y"));
+ $mailer->assign('cats', $all->_cats);
+ $mailer->addTo('"' . $u['prenom'] . ' ' . $u['nom'] . '" <' . $u['bestalias'] . '@polytechnique.org>');
+ $mailer->send($u['mail_fmt'] == 'html');
}
+XDB::execute("DELETE FROM watch_profile
+ WHERE ts < DATE_SUB(CURRENT_DATE, INTERVAL 15 DAY)");
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
#!/usr/bin/php5
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#! /usr/bin/perl -w
#***************************************************************************
-#* Copyright (C) 2003-2007 Polytechnique.org *
+#* Copyright (C) 2003-2008 Polytechnique.org *
#* http://opensource.polytechnique.org/ *
#* *
#* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/perl
#***************************************************************************
-#* Copyright (C) 2003-2007 Polytechnique.org *
+#* Copyright (C) 2003-2008 Polytechnique.org *
#* http://opensource.polytechnique.org/ *
#* *
#* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+#!/bin/sh
+
+field=$1
+nom=$2
+promo=$3
+
+query="SELECT $field FROM auth_user_md5 AS u "
+where=""
+pos=0
+for i in $nom ; do
+ query="$query INNER JOIN search_name AS sn${pos} ON (u.user_id = sn${pos}.uid) "
+ [ "$where" != "" ] && where="$where AND"
+ where="${where} sn${pos}.token LIKE \"${i}%\""
+ pos=$((pos + 1))
+done
+if [ "${promo}" != "" ] ; then
+ [ "$where" != "" ] && where="$where AND "
+ where="${where} u.promo = $promo"
+fi
+query="${query} WHERE ${where} GROUP BY u.user_id"
+
+echo $query | mysql --default-character-set=utf8 -N x4dat
if mlist.header_filter_rules == []:
return 0
try:
- action = mlist.header_filter_rules[1][1]
+ action = mlist.header_filter_rules[2][1]
return 2
except:
- action = mlist.header_filter_rules[0][1]
+ action = mlist.header_filter_rules[1][1]
if action == mm_cfg.HOLD:
return 1
if action == mm_cfg.DISCARD:
return 0
hfr = []
if int(level) is 1:
+ hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
elif int(level) is 2:
+ hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False))
hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
elif int(level) is 3:
+ hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False))
if mlist.header_filter_rules != hfr:
mlist.Lock()
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
XDB::execute("INSERT INTO logger.sessions
SET uid={?}, host={?}, ip={?}, forward_ip={?}, forward_host={?}, browser={?}, suid={?}, flags={?}",
- $uid, $host, $ip, $forward_ip, $forward_host, $browser, $suid, $proxy);
+ $uid, $host, ip_to_uint($ip), ip_to_uint($forward_ip), $forward_host, $browser, $suid, $proxy);
if ($forward_ip) {
$this->proxy_ip = $ip;
$this->proxy_host = $host;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
MiniWiki::Markup("/\n\n/", '</p><p>', "\n\n", "paragraphe1\n\nparagraphe2");
MiniWiki::Markup("/\n/", ' ', "\n");
MiniWiki::Markup("/^.*<\/p>.*<p>.*$/s", "<p>$0</p>", "$0");
+
+ // french typo rules, unbreakable spaces
+ MiniWiki::Markup("/ +([!?:;])/", " $1", "$0");
}
public static function WikiToHTML($wiki, $title = false)
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->register_modifier('escape_html', 'escape_html');
$this->default_modifiers = Array('@escape_html');
}
- $this->register_outputfilter('hide_emails');
+ if (S::i('auth') <= AUTH_PUBLIC) {
+ $this->register_outputfilter('hide_emails');
+ }
$this->addJsLink('wiki.js');
header("Accept-Charset: utf-8");
if (Env::v('forceXml')) {
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->template_dir = $globals->spoolroot . "/templates/";
$this->compile_dir = $globals->spoolroot . "/spool/mails_c/";
$this->config_dir = $globals->spoolroot . "/configs/";
-
+ array_unshift($this->plugins_dir, $globals->spoolroot."/plugins/");
$this->register_outputfilter(Array($this, 'mail_format'));
$this->register_function('from', Array($this, 'setFrom'));
$this->register_function('bcc', Array($this, 'addBcc'));
$this->register_function('subject', Array($this, 'setSubject'));
$this->register_function('add_header', Array($this, 'addHeader'));
+ $this->assign_by_ref('globals', $globals);
}
public static function &get(&$mailer, $tpl)
error_reporting($level);
}
if ($this->wiki) {
- $this->setTxtBody(MiniWiki::WikiToText($this->wiki, true, 0, 78));
+ $this->setTxtBody(MiniWiki::WikiToText($this->wiki, false, 0, 78));
if ($with_html) {
- $this->setHtmlBody(MiniWiki::WikiToHtml($this->wiki, true));
+ $this->setHtmlBody('<html><body>' . MiniWiki::WikiToHtml($this->wiki, true) . '</body></html>');
}
}
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+class PlProfiler
+{
+ static public function start($name, $info = "action")
+ {
+ global $globals;
+ if (!($globals->debug & DEBUG_BT)) {
+ return false;
+ }
+ if (!isset(PlBacktrace::$bt[$name])) {
+ new PlBacktrace($name);
+ }
+ PlBacktrace::$bt[$name]->start($info);
+ return true;
+ }
+
+ static public function step($name, $info = "action")
+ {
+ PlProfiler::stop($name);
+ PlProfiler::start($name, $info);
+ }
+
+ static public function stop($name)
+ {
+ global $globals;
+ if (!($globals->debug & DEBUG_BT)) {
+ return false;
+ }
+ PlBacktrace::$bt[$name]->stop();
+ return true;
+ }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
public $vars;
// number of displayed fields
public $nbfields;
+ // a where clause to restrict table
+ public $whereclause;
// the field for sorting entries
public $sortfield;
public $sortdesc = false;
$this->idfield = $idfield;
$this->sortfield = $idfield;
$this->idfield_editable = $editid;
- $r = XDB::iterator("SHOW COLUMNS FROM $table");
+ $this->whereclause = '1';
+ $r = XDB::iterator("SHOW FULL COLUMNS FROM $table");
$this->vars = array();
while ($a = $r->next()) {
// desc will be the title of the column
elseif (substr($a['Type'],0,10) == 'timestamp(' || $a['Type'] == 'datetime') {
$a['Type'] = 'timestamp';
}
+ elseif ($a['Comment'] == 'ip_address') {
+ $a['Type']='ip_address';
+ }
$this->vars[$a['Field']] = $a;
}
$date =& $entry[$field];
$date = preg_replace('/([0-9]{4})-?([0-9]{2})-?([0-9]{2})/', '\3/\2/\1', $date);
}
+ if ($descr['Type'] == 'ip_address') {
+ $ip = & $entry[$field];
+ $ip = long2ip($ip);
+ }
}
return $entry;
}
}
}
+ // add a where clause to limit table listing
+ public function set_where_clause($whereclause="1")
+ {
+ $this->whereclause = $whereclause;
+ }
+
// set an action when trying to delete row
public function on_delete($action = NULL, $message = NULL)
{
$page->trig($this->delete_message);
} else {
$page->trig("L'entrée ".$id." a été supprimée.");
- }
+ }
} else {
$page->trig("Impossible de supprimer l'entrée.");
}
}
if ($action == 'edit') {
- $r = XDB::query("SELECT * FROM {$this->table} WHERE {$this->idfield} = {?}",$id);
+ $r = XDB::query("SELECT * FROM {$this->table} WHERE {$this->idfield} = {?} AND {$this->whereclause}",$id);
$entry = $r->fetchOneAssoc();
$page->assign('entry', $this->prepare_edit($entry));
$page->assign('id', $id);
elseif ($descr['Type'] == 'date') {
$val = preg_replace('/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})/', '\3-\2-\1', $val);
}
+ elseif ($descr['Type'] == 'ip_address') {
+ $val = ip2long($val);
+ }
$val = "'".addslashes($val)."'";
} else {
$cancel = true;
}
if (!$cancel) {
if ($this->idfield_editable && ($id != Post::v($this->idfield)) && $action != 'new')
- XDB::execute("UPDATE {$this->table} SET {$this->idfield} = {?} WHERE {$this->idfield} = {?}", Post::v($this->idfield), $id);
+ XDB::execute("UPDATE {$this->table} SET {$this->idfield} = {?} WHERE {$this->idfield} = {?} AND {$this->whereclause}", Post::v($this->idfield), $id);
XDB::execute("REPLACE INTO {$this->table} VALUES ($values)");
if ($id !== false)
$page->trig("L'entrée ".$id." a été mise à jour.");
$id = XDB::insertId();
}
} else
- $page->trig("Impossible de mette à jour.");
+ $page->trig("Impossible de mettre à jour.");
if (!$this->auto_return) {
return $this->apply($page, 'edit', $id);
}
if (count($this->sort) > 0) {
$sort = 'ORDER BY ' . join($this->sort, ',');
}
- $it = XDB::iterator("SELECT * FROM {$this->table} $sort");
+ $it = XDB::iterator("SELECT * FROM {$this->table} WHERE {$this->whereclause} $sort");
$this->nbfields = 0;
foreach ($this->vars as $field => $descr)
if ($descr['display']) $this->nbfields++;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
private $filename;
private $type;
+ static public $lastError;
+
/** For images
*/
private $x;
{
if ($this->exists()) {
$this->type = trim(mime_content_type($this->filename));
+ if ($this->type == 'text/plain') { // Workaround a bug of php 5.2.0+etch10 (mime_content_type fallback is 'text/plain')
+ $this->type = preg_replace('/;.*/', '', trim(shell_exec('file -bi ' . escapeshellarg($this->filename))));
+ }
}
}
public function upload(array &$file)
{
+ if (@$file['error']) {
+ PlUpload::$lastError = 'Erreur de téléchargement de ' . $file['name'] . ' : ';
+ switch ($file['error']) {
+ case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE:
+ PlUpload::$lastError .= 'le fichier est trop gros (limite : ' . ini_get('upload_max_filesize') . ')';
+ break;
+ case UPLOAD_ERR_PARTIAL: case UPLOAD_ERR_NO_FILE:
+ PlUpload::$lastError .= 'le fichier n\'a pas été transmis intégralement';
+ break;
+ default:
+ PlUpload::$lastError .= 'erreur interne';
+ break;
+ }
+ return false;
+ }
if (!is_uploaded_file($file['tmp_name'])) {
return false;
} else if (!move_uploaded_file($file['tmp_name'], $this->filename)) {
$array = getimagesize($this->filename);
$array[2] = @$map[$array[2]];
if (!$array[2]) {
+ list($image, $type) = explode('/', $array['mime']);
+ $array[2] = $type;
+ }
+ if (!$array[2]) {
trigger_error('unknown image type', E_USER_NOTICE);
return null;
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
to=geoloc@staff.polytechnique.org
[mails_ax]
-from="Association des Anciens de l'X" <info@amicale.polytechnique.org>
+from="Amicale des Anciens de l'X" <info@amicale.polytechnique.org>
replyto=info@amicale.polytechnique.org
[payment_ready]
[test_email]
from="Polytechnique.org" <support@polytechnique.org>
+
+[carnet]
+from="Carnet Polytechnicien <support_carnet@polytechnique.org>"
+
+[googleapps]
+from="Polytechnique.org" <support@polytechnique.org>
# ml moderation
* * * * * web cd $WD; ./cron_ml_moderate.php > /dev/null
+# synchronisation google apps - plat/al
+12,42 * * * * web cd $WD; ./google_apps.php
+
# vim:set noet syntax=crontab ts=8 sw=8 sts=8 enc=utf-8:
locale = "fr_FR.UTF-8"
timezone = "Europe/Paris"
secure_domain = ""
+baseurl = "https://www.example.org/"
skin = "default"
register_skin = "register"
[Geoloc]
webservice_url = ""
-[Mail]
-domain = ""
-domain2 = ""
-
-alias_dom = ""
-alias_dom2 = ""
-
-
[Lists]
rpchost = "localhost"
rpcport = 4949
max_mail_per_min = 400
+[Mail]
+domain = ""
+domain2 = ""
+
+alias_dom = ""
+alias_dom2 = ""
+
+[MailStorage]
+imap_active = 0
+googleapps_active = 0
+googleapps_domain = ""
[Manageurs]
authorized_ips = "129.104.30.32 129.104.30.33 213.251.145.200"
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
padding: 0 6px 0 0;
}
-table.cadre_a_onglet{
- border-width: 0;
- padding : 0;
- margin: 0;
-}
-
-td.conteneur_tab {
- border-width : 1px 2px 2px 1px;
- border-style : solid;
- border-color : #999;
- padding : 4px 4px 4px 4px;
- background : #eceade;
-}
-
-#onglet {
- display : block;
- margin : 0;
- padding : 0;
-}
-
-#onglet li {
- display : block;
- float : left;
- padding : 0.4ex;
- margin : 0 0.3ex -1px 0;
- background : #D2E0E6 repeat-x 0 100%;
- border-width : 1px 1px 0px 1px;
- border-style : solid;
- border-color : #999;
- border-bottom-color : #999;
- width: auto;
- height: 5ex;
- text-align: center;
-}
-
-#onglet li:hover { background : #fc3 repeat-x 0 100%; }
-
-#onglet li.actif {
- background : #eceade;
- border-bottom-color : #eceade;
- font-weight: bold;
-}
-
-#onglet li a {
- font-size: 80%;
- font-weight : normal;
- text-decoration : none;
- color : #000;
-}
-
-#onglet li a:hover { text-decoration: underline; }
-#onglet li img { margin-right : 2px; }
/*******************************************************************************
7 fiche.php & fiche_referent.php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
}
/*******************************************************************************
- 6 Profil
- [ onglets des profils ]
-*******************************************************************************/
-
-td.conteneur_tab {
- background-color: #eeeeff;
- border-color: #2f006f;
-}
-
-#onglet li {
- background-color: #ddddff;
- border-color: #2f006f;
-}
-
-#onglet li:hover {
- background-color: #2f006f;
-}
-
-#onglet li.actif {
- background-color: #eeeeff;
-}
-
-#onglet li:hover a {
- color: #fff;
-}
-
-/*******************************************************************************
7 fiche.php
[ cas de la fiche ]
*******************************************************************************/
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+body {
+ font-family: "Arial", sans-serif;
+ font-size: small;
+ color: #000000;
+ background: #ffffff;
+ background-position: center;
+ margin: 0.2em 0em;
+}
+
+a:link, a:visited, a:active, a:hover { color: #003399; background: none; }
+img { vertical-align: middle; }
+a img { border: 0px; }
+td { vertical-align: top; }
+div.more { font-size: x-small; text-align: right; }
+
+/* Events */
+div.events ul { margin: 0; padding: 0 0.2em 0 1em; }
+div.events ul li { margin: 0.5em 0.2em; padding: 0; }
+li.unread { font-weight: bold; }
+
+/* Search gadget: frame */
+div.welcome {
+ text-align: center;
+}
+
+div.search {
+ text-align: center;
+ margin-top: 1em;
+}
+
+div.error {
+ color: red;
+ font-weight: bold;
+}
+
+/* Search gadget: result page */
+div.contact-list div.contact {
+ width: 100%;
+ text-align: left;
+ border-top: 1px solid #003399;
+ background: #F4D09C;
+ color: inherit;
+}
+
+div.grayed {
+ color: #444444;
+ font-style: italic;
+}
+
+div.grayed div.contact {
+ background: #eee;
+}
+
+div.contact div.nom {
+ font-weight: bold;
+ float: left;
+}
+
+div.contact div.autre {
+ text-align: right;
+ float: right;
+}
+
+div.contact div.long {
+ width: 100%;
+ clear: both;
+ background: white;
+ color: inherit;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+div.long table { width: 100%; }
+div.long td.lt { width: 35%; }
+div.long td.rt { width: 65%; }
+
+/* vim: set et ts=4 sts=4 sw=4: */
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
padding: 0.3em 1.5em;
}
+.pair pre {
+ background: inherit;
+}
+
/*******************************************************************************
3 Tableaux bicolores + classes utiles
padding: 0 6px 0 0;
}
-table.cadre_a_onglet{
- border-width: 0;
- padding : 0;
- margin: 0;
-}
-
-td.conteneur_tab {
- border: 1px solid #9c9c9c;
- border-left-color: #eee;
- padding: 8px 4px 4px 4px;
- background : url('../images/skins/keynote_topborder.png') top repeat-x;
-}
-
-#onglet {
- display : block;
- margin : 0;
- padding : 0;
-}
-
-#onglet li {
- display : block;
- float : left;
- padding : 0.4ex;
- margin: 0 0.3ex -1px 3px;
- border: 1px solid #9c9c9c;
- border-right: none;
- background: #cecece;
- width: auto;
- height: 5ex;
- text-align: center;
- color: #000;
- font-size: 80%;
-}
-
-#onglet li:hover {
- color: #000;
- background : #adadad;
-}
-
-#onglet li.actif {
- color: #000;
- background : #dedede;
- border: 1px solid #f0f0f0;
- border-right: none;
- border-bottom-color: #dedede;
- font-weight: bold;
-}
-
-#onglet li a {
- font-weight: normal;
- text-decoration: none;
- color: #000;
- background: inherit;
- display: block;
- width: 100%;
- height: 100%;
-}
-#onglet li img { margin-right: 2px; }
-
/*******************************************************************************
7 fiche.php & fiche_referent.php
[ cas de la fiche ]
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
[ onglets des profils ]
*******************************************************************************/
-div.conteneur_tab {
- background-color: #F8EBFF;
- border-color: #C866FA;
- border-right-color: #660099;
- border-bottom-color: #660099;
-}
-
-#onglet li {
- background-color: #FDFDE9;
- xborder-bottom: 1px solid red;
-}
-
-#onglet li.actif {
- background-color: #F8EBFF;
- border-top-color: #C866FA;
- border-right-color: #C866FA;
- border-left-color: #C866FA;
- border-bottom-color: #F8EBFF;
-}
-
/*******************************************************************************
7 fiche.php
[ cas de la fiche ]
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
[ onglets des profils ]
*******************************************************************************/
-td.conteneur_tab {
- background: #efddff;
- border-color: #800080;
-}
-
-#onglet li {
- background: #ecd0ff;
- border-color: #800080;
-}
-
-#onglet li:hover {
- background: #c0c0c0;
-}
-
-#onglet li a:hover {
- color: #800080;
- text-decoration: none;
-}
-
-#onglet li.actif {
- background: #efddff;
-}
-
/*******************************************************************************
7 fiche.php
[ cas de la fiche ]
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
padding: 0 6px 0 0;
}
-table.cadre_a_onglet{
- border-width: 0px;
- padding : 0px;
- margin: 0px;
-}
-
-td.conteneur_tab {
- border-width : 1px 2px 2px 1px;
- border-style : solid;
- border-color : #999;
- padding : 4px 0px 0px 4px;
- background : #fff;
-}
-
-#onglet { display : block; margin : 0px; padding : 0px; }
-
-#onglet li {
- display : block;
- float : left;
- padding : 0.5ex;
- margin : 0px 4px -1px 0px;
- background : #d2e0e6;
- width: auto;
- height: 6ex;
- text-align: center;
- border: 1px solid #999;
-}
-
-#onglet li:hover { background : #ffecce; }
-
-#onglet li.actif {
- background : #fff;
- font-weight: bold;
- border-bottom: 1px solid #fff;
-}
-
-#onglet li a {
- font-size: 90%;
- font-weight : normal;
- text-decoration : none;
- color : #000;
-}
-
/*******************************************************************************
7 fiche.php & fiche_referent.php
[ cas de la fiche ]
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
[ onglets des profils ]
*******************************************************************************/
-td.conteneur_tab {
- border-color: #0067fe;
- background-color: #eeffdd;
-}
-
-#onglet li {
- border-color: #0067fe;
- background-color: #ccddff;
-}
-
-#onglet li:hover {
- background-color:
-}
-
-#onglet li.actif {
- background-color: #eeffdd;
-}
-
-#onglet li a:hover {
- color: #ff0000;
- text-decoration: none;
-}
-
/*******************************************************************************
7 fiche.php
[ cas de la fiche ]
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
[ onglets des profils ]
*******************************************************************************/
-td.conteneur_tab {
- background-color: #f5f0ea;
- border-color: #707070;
-}
-
-#onglet li {
- background: #e2d9c2;
- border-color: #707070;
-}
-
-#onglet li:hover {
- background-color: #8a6540;
-}
-
-#onglet li:hover a {
- color: #f5f0ea;
-}
-
-#onglet li.actif {
- background-color: #f5f0ea;
-}
-
/*******************************************************************************
7 fiche.php
[ cas de la fiche ]
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
background-color: #d0c198;
}
-#menu a {
+#menu a, #menu form {
display: block;
padding: 0.2em 0em 0.2em 15px;
font-size: 89%;
* CLASSES
***************************************************************************/
-.breadcrumb {
- font-weight: bold;
- font-size: 90%;
- padding: 0.5em 0em 0em 0.2em;
-}
-
.erreur { color: red !important; }
.error { color: red !important; }
.center { text-align: center; }
/***************************************************************************
***************************************************************************/
-td.conteneur_tab {
- border: none;
- padding-top: 1em;
+.wizard {
+ margin-top: 0px;
+ margin-left: -1em;
}
-#onglet {
- display : block;
- margin : 0;
- padding : 0;
+.wizard .wiz_header {
+ height: 30px;
+ width: 635px;
+ padding: 0 2px;
+ background: url('../images/skins/wiz_xnet_background.png') bottom left no-repeat;
+ margin-bottom: 1em;
}
-#onglet li {
- display : block;
- float : left;
- border: none;
- background: inherit;
- width: auto;
+.wizard .wiz_header .wiz_tab {
+ height: 100%;
+ text-align: center;
+ font-size: 75%;
}
-#onglet li.actif {
+.wizard .wiz_header .wiz_tab:hover {
+ color: #5c81aa;
font-weight: bold;
}
-#onglet li:before {
- font-weight: normal;
- content: '» ';
- padding-left: 1ex;
+.wizard .wiz_header .active, .wizard .wiz_header .active:hover {
}
-#onglet li:first-child:before {
- content: '';
+.wizard .wiz_header a {
+ color: #000;
+ text-decoration: none;
+ margin-top: 2px;
+ vertical-align: bottom;
}
-#onglet li img { margin-right: 2px; }
-
+.wizard .wiz_header a.active {
+ font-weight: bold;
+}
--- /dev/null
+Those images have been fetched from external servers. They are *not* covered by Plat/al's GPL license.
+Please check with image owners for more information on copyrights and utilization limitations.
+
+add-google.gif: http://gmodules.com/ig/images/plus_google.gif
+add-google-calendar.gif: http://www.google.com/calendar/images/ext/gc_button1.gif
+add-netvibes.gif: http://www.netvibes.com/img/add2netvibes.gif
+add-yahoo: http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+function igOnLoadHandler()
+{
+ if (typeof(_IG_AdjustIFrameHeight) != 'undefined') {
+ _IG_AdjustIFrameHeight();
+ }
+}
+
+function markEventAsRead(event_id)
+{
+ _toggle(_gel("mark-read-" + event_id));
+ _gel("evt-" + event_id).setAttribute("class", "read");
+ _gel("link-" + event_id).setAttribute("href", "events/unread/" + event_id);
+ Ajax.update_html(null, "events/read/" + event_id);
+ return false;
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************\r
- * Copyright (C) 2003-2007 Polytechnique.org *\r
+ * Copyright (C) 2003-2008 Polytechnique.org *\r
* http://opensource.polytechnique.org/ *\r
* *\r
* This program is free software; you can redistribute it and/or modify *\r
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
}
// }}}
+// {{{ function goodiesPopup()
+
+function goodiesPopup(node) {
+ if (node.href.indexOf('ical') > -1) {
+ __goodies_popup(node, __goodies_ical_sites, 'Calendrier iCal');
+ } else if (node.href.indexOf('rss') > -1 && (node.href.indexOf('xml') > -1 || node.href.indexOf('hash'))) {
+ __goodies_popup(node, __goodies_rss_sites, 'Fil rss');
+ }
+}
+
+var __goodies_ical_sites = [
+ {'url_prefix': '',
+ 'img': 'images/icons/calendar_view_day.gif',
+ 'title': 'Calendrier iCal'},
+ {'url_prefix': 'http://www.google.com/calendar/render?cid=',
+ 'img': 'images/goodies/add-google-calendar.gif',
+ 'title': 'Ajouter à Google Calendar'}
+];
+var __goodies_rss_sites = [
+ {'url_prefix': '',
+ 'img': 'images/icons/feed.gif',
+ 'title': 'Fil rss'},
+ {'url_prefix': 'http://fusion.google.com/add?feedurl=',
+ 'img': 'images/goodies/add-google.gif',
+ 'alt': 'Add to Google',
+ 'title': 'Ajouter à iGoogle/Google Reader'},
+ {'url_prefix': 'http://www.netvibes.com/subscribe.php?url=',
+ 'img': 'images/goodies/add-netvibes.gif',
+ 'title': 'Ajouter à Netvibes'},
+ {'url_prefix': 'http://add.my.yahoo.com/content?.intl=fr&url=',
+ 'img': 'images/goodies/add-yahoo.gif',
+ 'alt': 'Add to My Yahoo!',
+ 'title': 'Ajouter à My Yahoo!'}
+];
+
+function __goodies_popupText(url, sites) {
+ var text = '<div style="text-align: center; line-height: 2.2">';
+ for (var site in sites) {
+ var s_alt = (sites[site]["alt"] ? sites[site]["alt"] : "");
+ var s_img = sites[site]["img"];
+ var s_title = (sites[site]["title"] ? sites[site]["title"] : "");
+ var s_url = (sites[site]["url_prefix"].length > 0 ? sites[site]["url_prefix"] + escape(url) : url);
+
+ text += '<a href="' + s_url + '"><img src="' + s_img + '" title="' + s_title + '" alt="' + s_alt + '"></a><br />';
+ }
+ text += '<a href="https://www.polytechnique.org/Xorg/Goodies">Plus de bonus</a> ...</div>'
+ return text;
+}
+
+function __goodies_popup(node, sites, default_title) {
+ var mouseover_cb = function() {
+ var rss_text = __goodies_popupText(node.href, sites);
+ var rss_title = (node.title ? node.title : default_title);
+ return overlib(rss_text, CAPTION, rss_title, CLOSETEXT, 'Fermer', DELAY, 800, STICKY, WIDTH, 150);
+ }
+ var mouseout_cb = function() {
+ nd();
+ }
+
+ node.onmouseover = mouseover_cb;
+ node.onmouseout = mouseout_cb;
+}
+
+// }}}
// {{{ function auto_links()
function auto_links() {
if (node.href.indexOf('http') < 0) {
node.href = 'http://' + fqdn + '/' + node.href;
}
+ if (node.nodeName.toLowerCase() == 'a') {
+ goodiesPopup(node);
+ }
}
if(node.className == 'popup2') {
node.onclick = function () { popWin(this,840,600); return false; };
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if (!($path = Env::v('n')) || ($path{0} < 'A' || $path{0} > 'Z')) {
- $platal = new Platal('auth', 'banana', 'carnet', 'email', 'events',
+ $platal = new Platal('auth', 'carnet', 'email', 'events', 'forums',
'geoloc', 'lists', 'marketing', 'payment', 'platal',
'profile', 'register', 'search', 'stats', 'admin',
- 'newsletter', 'axletter', 'bandeau', 'survey');
+ 'newsletter', 'axletter', 'bandeau', 'survey',
+ 'gadgets', 'googleapps');
$platal->run();
exit;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
/protocoleinterface.inc.php
/spool.inc.php
/text.func.inc.php
+/tree.inc.php
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if (!S::v('core_rss_hash')) {
Banana::$feed_active = false;
}
- parent::__construct($params);
+ parent::__construct($params, 'NNTP', 'PlatalBananaPage');
+ if (@$params['action'] == 'profile') {
+ Banana::$action = 'profile';
+ }
}
public function run()
Banana::$page->registerPage('profile', 'Préférences', null);
}
- // Run Banana
- return parent::run();
+ // Run Bananai
+ if (Banana::$action == 'profile') {
+ Banana::$page->run();
+ return $this->action_updateProfile();
+ } else {
+ return parent::run();
+ }
}
public function post($dest, $reply, $subject, $body)
Banana::$profile['subscribe'][] = $g;
}
}
+
+ protected function action_updateProfile()
+ {
+ global $page, $globals;
+
+ if (!(Post::has('action') && Post::has('banananame') && Post::has('bananasig')
+ && Post::has('bananadisplay') && Post::has('bananamail')
+ && Post::has('bananaupdate') && Post::v('action')=="Enregistrer" ))
+ {
+ $req = XDB::query("
+ SELECT nom, mail, sig,
+ FIND_IN_SET('threads', flags),
+ FIND_IN_SET('automaj', flags),
+ FIND_IN_SET('xface', flags)
+ FROM forums.profils
+ WHERE uid = {?}", S::v('uid'));
+ if (!(list($nom, $mail, $sig, $disp, $maj, $xface) = $req->fetchOneRow())) {
+ $nom = S::v('prenom').' '.S::v('nom');
+ $mail = S::v('forlife').'@'.$globals->mail->domain;
+ $sig = $nom.' ('.S::v('promo').')';
+ $disp = 0;
+ $maj = 0;
+ $xface = 0;
+ }
+ $page->assign('nom' , $nom);
+ $page->assign('mail', $mail);
+ $page->assign('sig', $sig);
+ $page->assign('disp', $disp);
+ $page->assign('maj', $maj);
+ $page->assign('xface', $xface);
+ } else {
+ $flags = array();
+ if (Post::b('bananadisplay')) {
+ $flags[] = 'threads';
+ }
+ if (Post::b('bananaupdate')) {
+ $flags[] = 'automaj';
+ }
+ if (Post::b('bananaxface')) {
+ $flags[] = 'xface';
+ }
+ XDB::execute("REPLACE INTO forums.profils (uid, sig, mail, nom, flags)
+ VALUES ({?}, {?}, {?}, {?}, {?})",
+ S::v('uid'), Post::v('bananasig'),
+ Post::v('bananamail'), Post::v('banananame'),
+ implode(',', $flags));
+ }
+ return null;
+ }
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
return $base . '/' . $params['page'];
}
if (@$params['action'] == 'subscribe') {
- return $base . '/subscription';
+ return $base . '/subscribe';
}
if (!isset($params['group'])) {
$base .= '/' . $params['group'];
} else if (Banana::$protocole->name() == 'NNTP' && $xnet) {
if ($feed) {
- return 'http://www.polytechnique.org/banana' . hook_platalRSS(@$params['group']);
+ return $globals->baseurl . '/banana' . hook_platalRSS(@$params['group']);
}
$base = $globals->baseurl . '/' . $platal->ns . 'forum';
} else if (Banana::$protocole->name() == 'MLArchives') {
function get_banana_params(array &$get, $group = null, $action = null, $artid = null)
{
+ if ($group == 'forums') {
+ $group = null;
+ } else if ($group == 'thread') {
+ $group = S::v('banana_group');
+ } else if ($group == 'message') {
+ $action = 'read';
+ $group = S::v('banana_group');
+ $artid = S::i('banana_artid');
+ } else if ($action == 'message') {
+ $action = 'read';
+ $artid = S::i('banana_artid');
+ } else if ($group == 'subscribe' || $group == 'subscription') {
+ $group = null;
+ $action = null;
+ $get['action'] = 'subscribe';
+ } else if ($group == 'profile') {
+ $group = null;
+ $action = null;
+ $get['action'] = 'profile';
+ }
if (!is_null($group)) {
$get['group'] = $group;
}
}
}
+class PlatalBananaPage extends BananaPage
+{
+ protected $handler;
+ protected $base;
+
+ public function __construct()
+ {
+ global $platal;
+ Banana::$withtabs = false;
+ $this->handler = 'BananaHandler';
+ $this->base = $platal->pl_self(0);
+ parent::__construct();
+ }
+
+ protected function prepare()
+ {
+ $tpl = parent::prepare();
+ global $wiz, $page;
+ $wiz = new PlWizard('Banana', 'core/plwizard.tpl', true, false);
+ foreach ($this->pages as $name=>&$mpage) {
+ $wiz->addPage($this->handler, $mpage['text'], $name);
+ }
+ $wiz->apply($page, $this->base, $this->page);
+ return $tpl;
+ }
+}
+
+class BananaHandler
+{
+ public function __construct(PlWizard &$wiz)
+ {
+ }
+
+ public function template()
+ {
+ return 'banana/index.tpl';
+ }
+
+ public function prepare(PlatalPage &$page, $id)
+ {
+ }
+
+ public function process()
+ {
+ return PlWizard::CURRENT_PAGE;
+ }
+}
+
function run_banana(&$page, $class, array $args)
{
$banana = new $class(S::v('forlife'), $args);
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
require_once 'banana/banana.inc.php';
require_once 'banana/hooks.inc.php';
+class PlatalBananaMLPage extends PlatalBananaPage
+{
+ public function __construct()
+ {
+ parent::__construct();
+ global $platal;
+ $this->handler = 'BananaMLHandler';
+ $this->base = $platal->pl_self(1);
+ }
+}
+
+class BananaMLHandler extends BananaHandler
+{
+ public function template()
+ {
+ return 'lists/archives.tpl';
+ }
+}
+
class MLBanana extends Banana
{
static public $listname;
function __construct($forlife, $params = null)
{
- global $globals;
+ global $globals;
Banana::$spool_root = $globals->banana->spool_root;
Banana::$spool_boxlist = false;
Banana::$msgedit_canattach = true;
MLBanana::$listname = $params['listname'];
MLBanana::$domain = $params['domain'];
$params['group'] = $params['listname'] . '@' . $params['domain'];
- parent::__construct($params, 'MLArchive');
+ parent::__construct($params, 'MLArchive', 'PlatalBananaMLPage');
}
public function run()
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
***************************************************************************/
require_once 'banana/banana.inc.php';
+require_once 'banana/message.func.inc.php';
require_once 'banana/hooks.inc.php';
function hook_checkcancel($_headers)
}
}
-require_once('banana/page.inc.php');
-
class ModerationPage extends BananaPage
{
protected function prepare()
}
}
-require_once('banana/protocoleinterface.inc.php');
-require_once('banana/message.inc.php');
-
class BananaMLInterface implements BananaProtocoleInterface
{
private $infos; //(list, addr, host, desc, info, diff, ins, priv, sub, own, nbsub)
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
{
foreach ($this->emails as &$mail) {
if ($mail->email == $email) {
+ check_redirect($this);
return $mail->cleanErrors($this->uid);
}
}
$mail->active = false;
}
}
+ check_redirect($this);
}
// function enable() {{{2
$mail->active = true;
$mail->disabled = false;
}
+ check_redirect($this);
}
}
}
}
+// class MailStorage {{{1
+class MailStorage {
+ protected $uid;
+ protected $name;
+ protected $storage;
+
+ public function __construct($_uid, $_name)
+ {
+ $this->uid = $_uid;
+ $this->name = $_name;
+
+ $res = XDB::query("SELECT mail_storage
+ FROM auth_user_md5
+ WHERE user_id = {?}", $this->uid);
+ $this->storages = new FlagSet($res->fetchOneCell());
+ }
+
+ public function disable()
+ {
+ $this->storages->rmFlag($this->name);
+ XDB::execute("UPDATE auth_user_md5
+ SET mail_storage = {?}
+ WHERE user_id = {?}", $this->storages->flags(), $this->uid);
+ return true;
+ }
+
+ public function enable()
+ {
+ $this->storages->addFlag($this->name);
+ XDB::execute("UPDATE auth_user_md5
+ SET mail_storage = {?}
+ WHERE user_id = {?}", $this->storages->flags(), $this->uid);
+ return true;
+ }
+
+ public function active()
+ {
+ return $this->storages->hasFlag($this->name);
+ }
+}
+
+class MailStorageIMAP extends MailStorage {
+ public function __construct($_uid)
+ {
+ parent::__construct($_uid, 'imap');
+ }
+}
+
+class MailStorageGoogleApps extends MailStorage {
+ public function __construct($_uid)
+ {
+ parent::__construct($_uid, 'googleapps');
+ }
+
+ public function disable() {
+ $redirect = new Redirect(S::v('uid'));
+ if (!$redirect->other_active(NULL)) {
+ return false;
+ }
+
+ return parent::disable();
+ }
+}
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
public function __construct($sess)
{
$this->session = $sess;
-
- $base = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
- $this->baseurl = @trim($base.$_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF']), '/');
$this->spoolroot = dirname(dirname(__FILE__));
$this->read_config();
+ if (isset($_SERVER) && isset($_SERVER['SERVER_NAME'])) {
+ $base = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
+ $this->baseurl = @trim($base.$_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF']), '/');
+ }
+
$this->setlocale();
}
{
$this->read_ini_file($this->spoolroot.'/configs/platal.ini');
$this->read_ini_file($this->spoolroot.'/configs/platal.conf');
+ if (file_exists($this->spoolroot.'/spool/conf/platal.dynamic.conf')) {
+ $this->read_ini_file($this->spoolroot.'/spool/conf/platal.dynamic.conf');
+ }
+ }
+
+ /** Writes an ini file separated in categories
+ * @param filename the name of the file to write (overwrite existing)
+ * @param categories an array of categories (array of keys and values)
+ */
+ private static function write_ini_file($filename, &$categories)
+ {
+ // [category]
+ // key = value
+ $f = fopen($filename, 'w');
+ foreach ($categories as $cat => $conf) {
+ fwrite($f, '; {{{ '.$cat."\n\n");
+ fwrite($f, '['.$cat.']'."\n\n");
+ foreach ($conf as $k => $v) {
+ fwrite($f, $k.' = "'.str_replace('"','\\"',$v).'"'."\n");
+ }
+ fwrite($f, "\n".'; }}}'."\n");
+ }
+ fwrite($f, '; vim:set syntax=dosini foldmethod=marker:'."\n");
+ fclose($f);
+ }
+
+ /** Change dynamic config file
+ * @param conf array of keys and values to add or replace
+ * @param category name of category to change
+ *
+ * Opens the dynamic conf file and set values from conf in specified
+ * category. Updates config vars too.
+ */
+ public function change_dynamic_config($conf, $category = 'Core')
+ {
+ $dynamicfile = $this->spoolroot.'/spool/conf/platal.dynamic.conf';
+ if (file_exists($dynamicfile)) {
+ $array = parse_ini_file($dynamicfile, true);
+ } else {
+ $array = null;
+ }
+ if (!is_array($array)) {
+ // dynamic conf is empty
+ $array = array($category => $conf);
+ } else {
+ // looks for a category that looks the same (case insensitive)
+ $same = false;
+ foreach ($array as $m => &$c) {
+ if (strtolower($m) == strtolower($category)) {
+ $same = $m;
+ break;
+ }
+ }
+ if (!$same) {
+ // this category doesn't exist yet
+ $array[$category] = $conf;
+ } else {
+ // this category already exists
+ $conflower = array();
+ foreach ($conf as $k => $v) {
+ $conflower[strtolower($k)] = $v;
+ }
+ // $conflower is now same as $conf but with lower case keys
+ // replaces values of keys that already exists
+ foreach ($array[$same] as $k => $v) {
+ if (isset($conflower[strtolower($k)])) {
+ $array[$same][$k] = $conflower[strtolower($k)];
+ unset($conflower[strtolower($k)]);
+ }
+ }
+ // add new keys
+ foreach ($conf as $k => $v) {
+ if (isset($conflower[strtolower($k)])) {
+ $array[$same][$k] = $v;
+ }
+ }
+ }
+ }
+ // writes the file over
+ PlatalGlobals::write_ini_file($dynamicfile, $array);
+ // rereads the new config to correctly set vars
+ $this->read_ini_file($dynamicfile);
+ }
+
+ public function bootstrap($conf, $callback, $category = 'Core')
+ {
+ $bootstrap = false;
+ $category = strtolower($category);
+ foreach ($conf as $key) {
+ if (!isset($this->$category->$key)) {
+ $bootstrap = true;
+ break;
+ }
+ }
+ if ($bootstrap) {
+ call_user_func($callback);
+ }
}
private function setlocale()
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+// Post-processes the successful Google Apps account creation queue job.
+function post_queue_u_create($job) {
+ global $globals;
+
+ // Retrieves the user parameters (userid and forlife).
+ $parameters = json_decode($job['j_parameters'], true);
+ $forlife = isset($parameters['username']) ? $parameters['username'] : null;
+ $userid = $job['q_recipient_id'];
+ if (!$forlife || !$userid) {
+ return;
+ }
+
+ // Adds a redirection to the Google Apps delivery address, if requested by
+ // the user at creation time.
+ $account = new GoogleAppsAccount($userid, $forlife);
+ if ($account->activate_mail_redirection) {
+ require_once('emails.inc.php');
+ $storage = new MailStorageGoogleApps($userid);
+ $storage->enable();
+ }
+
+ // Sends the 'account created' email to the user, with basic documentation.
+ $res = XDB::query(
+ "SELECT FIND_IN_SET('femme', u.flags), prenom
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON (a.id = u.user_id)
+ WHERE a.alias = {?}",
+ $forlife);
+ list($sexe, $prenom) = $res->fetchOneRow();
+
+ $mailer = new PlMailer('googleapps/create.mail.tpl');
+ $mailer->assign('account', $account);
+ $mailer->assign('email', $forlife . '@' . $globals->mail->domain);
+ $mailer->assign('googleapps_domain', $globals->mailstorage->googleapps_domain);
+ $mailer->assign('prenom', $prenom);
+ $mailer->assign('sexe', $sexe);
+ $mailer->send();
+}
+
+// Post-processes the successful Google Apps account update queue job.
+function post_queue_u_update($job) {
+ global $globals;
+
+ // If the u_update job was an unsuspend request, re-adds the redirection
+ // to the Google Apps delivery address, provided the account is active (it might
+ // have been deleted between the unsuspension and the post-queue processing).
+ $parameters = json_decode($job['j_parameters'], true);
+ $forlife = isset($parameters['username']) ? $parameters['username'] : null;
+ $userid = $job['q_recipient_id'];
+ if (!$forlife || !$userid) {
+ return;
+ }
+
+ if (isset($parameters['suspended']) && $parameters['suspended'] == false) {
+ require_once('emails.inc.php');
+ $account = new GoogleAppsAccount($userid, $forlife);
+ if ($account->active()) {
+ // Re-adds the email redirection (if the user did request it).
+ if ($account->activate_mail_redirection) {
+ $storage = new MailStorageGoogleApps($userid);
+ $storage->enable();
+ }
+
+ // Sends an email to the account owner.
+ $res = XDB::query(
+ "SELECT FIND_IN_SET('femme', u.flags), prenom
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON (a.id = u.user_id)
+ WHERE a.alias = {?}",
+ $forlife);
+ list($sexe, $prenom) = $res->fetchOneRow();
+
+ $mailer = new PlMailer('googleapps/unsuspend.mail.tpl');
+ $mailer->assign('account', $account);
+ $mailer->assign('email', $forlife . '@' . $globals->mail->domain);
+ $mailer->assign('prenom', $prenom);
+ $mailer->assign('sexe', $sexe);
+ $mailer->send();
+ }
+ }
+}
+
+// Reprensentation of an SQL-stored Google Apps account.
+// This class is the interface with the gappsd SQL tables: gappsd is the python
+// daemon which deals with Google Apps provisioning APIs.
+// TODO(vincent.zanotti): add the url of gappsd, when available.
+class GoogleAppsAccount
+{
+ // User identification: user id, and forlife.
+ private $uid;
+ public $g_account_name;
+
+ // Local account parameters.
+ public $sync_password;
+ public $activate_mail_redirection;
+
+ // Account status, obtained from Google Apps provisioning & reporting APIs.
+ public $g_account_id;
+ public $g_status;
+ public $g_suspension;
+ public $r_disk_usage;
+ public $r_creation;
+ public $r_last_login;
+ public $r_last_webmail;
+ public $reporting_date;
+
+ // Pending requests in the gappsd job queue (cf. top note).
+ public $pending_create;
+ public $pending_delete;
+ public $pending_update;
+ public $pending_update_admin;
+ public $pending_update_other;
+ public $pending_update_password;
+ public $pending_update_suspension;
+
+ // Pending requests in plat/al validation queue.
+ public $pending_validation_unsuspend;
+
+ // Constructs the account object, by retrieving all informations from the
+ // GApps account table, from GApps job queue, and from plat/al validation queue.
+ public function __construct($uid, $account_name = NULL)
+ {
+ if ($account_name == NULL) {
+ require_once 'user.func.inc.php';
+ $account_name = get_user_forlife($uid, '_silent_user_callback');
+ }
+
+ $this->uid = $uid;
+ $this->g_account_name = $account_name;
+ $this->g_status = NULL;
+
+ $res = XDB::query(
+ "SELECT l_sync_password, l_activate_mail_redirection,
+ g_account_name, g_account_id, g_status, g_suspension, r_disk_usage,
+ UNIX_TIMESTAMP(r_creation) as r_creation,
+ UNIX_TIMESTAMP(r_last_login) as r_last_login,
+ UNIX_TIMESTAMP(r_last_webmail) as r_last_webmail
+ FROM gapps_accounts
+ WHERE g_account_name = {?}",
+ $account_name);
+ if ($account = $res->fetchOneAssoc()) {
+ $this->sync_password = $account['l_sync_password'];
+ $this->activate_mail_redirection = $account['l_activate_mail_redirection'];
+ $this->g_account_id = $account['g_account_id'];
+ $this->g_status = $account['g_status'];
+ $this->g_suspension = $account['g_suspension'];
+ $this->r_disk_usage = $account['r_disk_usage'];
+ $this->r_creation = $account['r_creation'];
+ $this->r_last_login = $account['r_last_webmail'];
+ $this->r_last_webmail = $account['r_last_webmail'];
+
+ $this->load_pending_counts();
+ $this->load_pending_validations();
+ if ($this->pending_update) {
+ $this->load_pending_updates();
+ }
+
+ $res = XDB::query("SELECT MAX(date) FROM gapps_reporting");
+ $this->reporting_date = $res->fetchOneCell();
+ }
+ }
+
+ // Determines if changes to the Google Account are currently waiting in the
+ // GApps job queue, and initializes the local values accordingly.
+ private function load_pending_counts()
+ {
+ $res = XDB::query(
+ "SELECT SUM(j_type = 'u_create') AS pending_create,
+ SUM(j_type = 'u_update') AS pending_update,
+ SUM(j_type = 'u_delete') AS pending_delete
+ FROM gapps_queue
+ WHERE q_recipient_id = {?} AND
+ p_status IN ('idle', 'active', 'softfail')
+ GROUP BY j_type",
+ $this->uid);
+ $pending = $res->fetchOneAssoc();
+ $this->pending_create = $pending['pending_create'];
+ $this->pending_update = $pending['pending_update'];
+ $this->pending_delete = $pending['pending_delete'];
+
+ $this->pending_update_admin = false;
+ $this->pending_update_other = false;
+ $this->pending_update_password = false;
+ $this->pending_update_suspension = false;
+ }
+
+ // Checks for unsuspend requests waiting for validation in plat/al
+ // validation queue.
+ private function load_pending_validations()
+ {
+ require_once('validations.inc.php');
+ $this->pending_validation_unsuspend =
+ Validate::get_typed_requests_count($this->uid, 'gapps-unsuspend');
+ }
+
+ // Retrieves all the pending update job in the gappsd queue for the current
+ // user, and analyzes the scope of the update (ie. the fields in the user
+ // account which are going to be updated).
+ private function load_pending_updates()
+ {
+ $res = XDB::iterator(
+ "SELECT j_parameters
+ FROM gapps_queue
+ WHERE q_recipient_id = {?} AND
+ p_status IN ('idle', 'active', 'softfail') AND
+ j_type = 'u_update'",
+ $this->uid);
+ while ($update = $res->next()) {
+ $update_data = json_decode($update["j_parameters"], true);
+
+ if (isset($update_data["suspended"])) {
+ $this->pending_update_suspension = true;
+ } elseif (isset($update_data["password"])) {
+ $this->pending_update_password = true;
+ } elseif (isset($update_data["admin"])) {
+ $this->pending_update_admin = true;
+ } else {
+ $this->pending_update_other = true;
+ }
+ }
+ }
+
+ // Creates a queue job of the @p type, for the user represented by this
+ // GoogleAppsAccount object, using @p parameters. @p parameters is supposed
+ // to be a one-dimension array of key-value mappings.
+ // The created job as a 'normal' priority, and is scheduled for immediate
+ // execution.
+ private function create_queue_job($type, $parameters) {
+ $parameters["username"] = $this->g_account_name;
+ XDB::execute(
+ "INSERT INTO gapps_queue
+ SET q_owner_id = {?}, q_recipient_id = {?},
+ p_entry_date = NOW(), p_notbefore_date = NOW(),
+ p_priority = 'normal',
+ j_type = {?}, j_parameters = {?}",
+ S::v('uid'),
+ $this->uid,
+ $type,
+ json_encode($parameters));
+ }
+
+
+ // Returns true if the account is currently active.
+ public function active()
+ {
+ return $this->g_status == 'active';
+ }
+
+ // Returns true if the account exists in Google Apps.
+ public function provisioned()
+ {
+ return $this->g_status == 'active' or $this->g_status == 'disabled';
+ }
+
+ // Returns true if the account exists, but cannot be used (user-requested
+ // suspension, or Google-requested suspension).
+ public function suspended()
+ {
+ return $this->g_status == 'disabled';
+ }
+
+
+ // Changes the GoogleApps password.
+ public function set_password($password) {
+ if (!$this->provisioned()) {
+ return;
+ }
+
+ if (!$this->pending_update_password) {
+ $this->create_queue_job('u_update', array('password' => $password));
+ $this->pending_update_password = true;
+ }
+ }
+
+
+ // Changes the password synchronization status ("sync = true" means that the
+ // Polytechnique.org password will be replicated to the Google Apps account).
+ public function set_password_sync($sync) {
+ if (!$this->provisioned()) {
+ return;
+ }
+
+ $this->sync_password = $sync;
+ XDB::execute(
+ "UPDATE gapps_accounts
+ SET l_sync_password = {?}
+ WHERE g_account_name = {?}",
+ $sync,
+ $this->g_account_name);
+ }
+
+ // Suspends the Google Apps account.
+ public function suspend() {
+ if (!$this->provisioned()) {
+ return;
+ }
+
+ if (!$this->pending_update_suspension) {
+ $this->create_queue_job('u_update', array('suspended' => true));
+ $this->pending_update_suspension = true;
+ }
+ }
+
+ // Adds an unsuspension request to the validation queue (used on user-request).
+ public function unsuspend($activate_mail_redirection = NULL) {
+ if (!$this->provisioned()) {
+ return;
+ }
+ if ($activate_mail_redirection !== NULL) {
+ $this->activate_mail_redirection = $activate_mail_redirection;
+ XDB::execute(
+ "UPDATE gapps_accounts
+ SET l_activate_mail_redirection = {?}
+ WHERE g_account_name = {?}",
+ $activate_mail_redirection,
+ $this->g_account_name);
+ }
+
+ if (!$this->pending_update_suspension && !$this->pending_validation_unsuspend) {
+ require_once('validations.inc.php');
+ $unsuspend = new GoogleAppsUnsuspendReq($this->uid);
+ $unsuspend->submit();
+ $this->pending_validation_unsuspend = true;
+ }
+ }
+
+ // Unsuspends the Google Apps account (used on admin-request, or on validation of
+ // an user-request).
+ public function do_unsuspend() {
+ if (!$this->provisioned()) {
+ return;
+ }
+
+ if (!$this->pending_update_suspension) {
+ if ($this->sync_password) {
+ $res = XDB::query(
+ "SELECT password
+ FROM auth_user_md5
+ WHERE user_id = {?}",
+ $this->uid);
+ $password = ($res->numRows() > 0 ? $res->fetchOneCell() : false);
+ } else {
+ $password = false;
+ }
+
+ if ($password) {
+ $this->create_queue_job('u_update', array('suspended' => false, 'password' => $password));
+ } else {
+ $this->create_queue_job('u_update', array('suspended' => false));
+ }
+ $this->pending_update_suspension = true;
+ return true;
+ }
+ return false;
+ }
+
+ // Creates a new Google Apps account with the @p local parameters.
+ public function create($password_sync, $password, $redirect_mails) {
+ if ($this->g_status != NULL) {
+ return;
+ }
+
+ if (!$this->pending_create) {
+ // Retrieves information on the new account.
+ $res = XDB::query(
+ "SELECT nom, nom_usage, prenom
+ FROM auth_user_md5
+ WHERE user_id = {?}",
+ $this->uid);
+ list($nom, $nom_usage, $prenom) = $res->fetchOneRow();
+
+ // Adds an 'unprovisioned' entry in the gapps_accounts table.
+ XDB::execute(
+ "INSERT INTO gapps_accounts
+ SET l_userid = {?},
+ l_sync_password = {?},
+ l_activate_mail_redirection = {?},
+ g_account_name = {?},
+ g_first_name = {?},
+ g_last_name = {?},
+ g_status = 'unprovisioned'",
+ $this->uid,
+ $password_sync,
+ $redirect_mails,
+ $this->g_account_name,
+ $prenom,
+ ($nom_usage ? $nom_usage : $nom));
+
+ // Adds the creation job in the GApps queue.
+ $this->create_queue_job(
+ 'u_create',
+ array(
+ 'username' => $this->g_account_name,
+ 'first_name' => $prenom,
+ 'last_name' => ($nom_usage ? $nom_usage : $nom),
+ 'password' => $password,
+ ));
+
+ // Updates the GoogleAppsAccount status.
+ $this->__construct($this->uid, $this->g_account_name);
+ }
+ }
+
+
+ // Returns the status of the Google Apps account for @p user, or false
+ // when no account exists.
+ static public function account_status($uid) {
+ $res = XDB::query(
+ "SELECT g_status
+ FROM gapps_accounts
+ WHERE l_userid = {?}", $uid);
+ return ($res->numRows() > 0 ? $res->fetchOneCell() : false);
+ }
+
+ // Returns true if the @p user is an administrator of the Google Apps domain.
+ static public function is_administrator($uid) {
+ $res = XDB::query(
+ "SELECT g_admin
+ FROM gapps_accounts
+ WHERE l_userid = {?} AND g_status = 'active'", $uid);
+ return ($res->numRows() > 0 ? (bool)$res->fetchOneRow() : false);
+ }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$pass_encrypted = hash_encrypt($pass);
$fdate = strftime('%d %B %Y', strtotime($date));
- $mymail = new PlMailer('marketing/mail.relance.tpl');
+ $mymail = new PlMailer('marketing/relance.mail.tpl');
$mymail->assign('nbdix', $nbx);
$mymail->assign('fdate', $fdate);
$mymail->assign('lusername', $alias);
public function getText(array $user)
{
- $page = new XorgPage('marketing/mail.marketing.tpl', NO_SKIN);
+ $page = new XorgPage('marketing/marketing.mail.tpl', NO_SKIN);
$this->prepareText($page, $user);
return $page->raw();
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
function __construct($id = null)
{
- parent::__construct('newsletter/nl.tpl', 'nl.css', 'nl/show', 'newsletter', 'newsletter_ins');
+ parent::__construct('newsletter/nl.mail.tpl', 'nl.css', 'nl/show', 'newsletter', 'newsletter_ins');
if (isset($id)) {
if ($id == 'last') {
$res = XDB::query("SELECT MAX(id) FROM newsletter WHERE bits!='new'");
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if (empty($date)) {
$date = date('Y-m-d');
};
- XDB::execute('REPLACE INTO watch_ops (uid,cid,known,date,info) VALUES({?},{?},NOW(),{?},{?})',
- $uid, $cid, $date, $info);
+ XDB::execute('REPLACE INTO watch_ops (uid,cid,known,date,info)
+ VALUES ({?}, {?}, NOW(), {?}, {?})',
+ $uid, $cid, $date, $info);
if($cid == WATCH_FICHE) {
+ if ($info) {
+ register_profile_update($uid, $info);
+ }
XDB::execute('UPDATE auth_user_md5 SET DATE=NOW() WHERE user_id={?}', $uid);
} elseif($cid == WATCH_INSCR) {
XDB::execute('REPLACE INTO contacts (uid,contact)
WHERE ni_id={?}', $uid);
XDB::execute('DELETE FROM watch_nonins WHERE ni_id={?}', $uid);
}
+ require_once 'xorg.misc.inc.php';
+ update_NbNotifs();
}
// }}}
}
// }}}
-// {{{ function getNbNotifs
-
-function getNbNotifs()
-{
- if (!S::has('uid')) {
- return 0;
- }
- $uid = S::v('uid', -1);
- $watchlast = S::v('watch_last');
-
- // selectionne les notifs de uid, sans detail sur le watcher, depuis
- // $watchlast, meme ceux sans surveillance, non ordonnés
- $res = select_notifs(false, $uid, $watchlast, false);
- $n = $res->numRows();
- $res->free();
- if ($n == 0) {
- return;
+// {{{
+
+global $prf_desc;
+$prf_desc = array('nom' => 'Son patronyme',
+ 'freetext' => 'Le texte libre',
+ 'mobile' => 'Son numéro de téléphone portable',
+ 'nationalite' => 'Sa nationalité',
+ 'nick' => 'Son surnom',
+ 'web' => 'L\'adresse de son site web',
+ 'appli1' => 'Son école d\'application',
+ 'appli2' => 'Son école de post-application',
+ 'addresses' => 'Ses adresses',
+ 'section' => 'Sa section sportive',
+ 'binets' => 'La liste de ses binets',
+ 'medals' => 'Ses décorations',
+ 'cv' => 'Son Curriculum Vitae',
+ 'jobs' => 'Ses informations professionnelles',
+ 'photo' => 'Sa photographie');
+
+function get_profile_change_details($event, $limit) {
+ global $prf_desc;
+ $res = XDB::iterRow("SELECT field
+ FROM watch_profile
+ WHERE uid = {?} AND ts > {?}
+ ORDER BY ts DESC",
+ $event['uid'], $limit);
+ if ($res->total() > 0) {
+ $data = array();
+ while (list($field) = $res->next()) {
+ $data[] .= $prf_desc[$field];
+ }
+ return '<ul><li>' . implode('</li><li>', $data) . '</li></ul>';
}
-
- return "<a href='carnet/panel'>$n événement".($n > 1 ? 's' : '')." !</a>";
+ return null;
}
// }}}
+// {{{ function register_profile_update
+
+function register_profile_update($uid, $field) {
+ XDB::execute("REPLACE INTO watch_profile (uid, ts, field)
+ VALUES ({?}, NOW(), {?})",
+ $uid, $field);
+}
+
// {{{ class AllNotifs
class AllNotifs
// depuis la semaine dernière, meme ceux sans surveillance, ordonnés
$res = select_notifs(false, $uid, $lastweek);
while($tmp = $res->next()) {
+ if ($tmp['cid'] == WATCH_FICHE) {
+ $tmp['data'] = get_profile_change_details($tmp, $lastweek);
+ }
$this->_data[$tmp['cid']][$tmp['promo']][] = $tmp;
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if (substr($cls, -3, 3) == 'req') {
@include 'validations.inc.php';
return;
+ } else if (substr($cls, 0, 6) == 'banana') {
+ require_once 'banana/banana.inc.php';
+ Banana::load(substr($cls, 6));
+ return;
}
@include "$cls.inc.php";
}
E_USER_ERROR => "User Error",
E_USER_WARNING => "User Warning",
E_USER_NOTICE => "User Notice",
- E_STRICT => "Runtime Notice"
+ E_STRICT => "Runtime Notice",
+ E_RECOVERABLE_ERROR => "Recoverable Error"
);
}
}
}
+ $type = isset($errortype[$errno]) ? $errortype[$errno] : $errno;
$errstr = utf8_encode(htmlentities($errstr));
$GLOBALS['pl_errors'][] =
"<div class='phperror'>".
- "<strong>{$errortype[$errno]}</strong> <em>$errstr</em><br />".
+ "<strong>{$type}</strong> <em>$errstr</em><br />".
"<tt>$errfile : $errline</tt>".
"</div>";
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$mmlist = new MMList(S::v('uid'), S::v('password'));
$mmlist->kill($alias, $really_del);
+
+ // Deactivates, when available, the Google Apps account of the user.
+ if ($globals->mailstorage->googleapps_domain) {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount($uid, $alias);
+ $account->suspend();
+ }
}
// }}}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
'INNER JOIN groupex.membres AS gxm ON (u.user_id = gxm.uid
AND gxm.asso_id = ' . $globals->asso('id') . ') ' : '')
. 'LEFT JOIN auth_user_quick AS q USING (user_id)
- LEFT JOIN aliases AS a ON (a.id = u.user_id AND type = \'a_vie\')
+ LEFT JOIN aliases AS a ON (a.id = u.user_id AND a.type = \'a_vie\')
' . $joins,
$where,
'u.user_id');
$qSearch = new QuickSearch('quick');
$fields = new SFieldGroup(true, array($qSearch));
if ($qSearch->isEmpty()) {
- new ThrowError('Recherche trop générale.');
+ new ThrowError('Aucun critère de recherche n\'est spécifié.');
}
$this->score = $qSearch->get_score_statement();
$pwhere = $fields->get_where_statement();
'u.promo DESC, NomSortKey, prenom')));
}
- private function getAdvanced()
+ private function getAdvanced($join, $where)
{
global $globals;
$this->advanced = true;
}
}
+class GadgetView implements PlView
+{
+ public function __construct(PlSet &$set, $data, array $params)
+ {
+ $this->set =& $set;
+ }
+
+ public function fields()
+ {
+ return "u.user_id AS id,
+ u.*, a.alias AS forlife," .
+ (S::logged() ? "q.profile_mobile AS mobile, " : "IF(q.profile_mobile_pub = 'public', q.profile_mobile, NULL) as mobile, ") .
+ "u.perms != 'pending' AS inscrit,
+ u.perms != 'pending' AS wasinscrit,
+ u.deces != 0 AS dcd, u.deces,
+ FIND_IN_SET('femme', u.flags) AS sexe,
+ adr.city, gp.a2, gp.pays AS countrytxt, gr.name AS region" .
+ (S::logged() ? ", c.contact AS contact" : '');
+ }
+
+ public function joins()
+ {
+ return "LEFT JOIN adresses AS adr ON (u.user_id = adr.uid AND FIND_IN_SET('active', adr.statut)".(S::logged() ? "" : " AND adr.pub = 'public'").")
+ 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)" .
+ (S::logged() ?
+ "LEFT JOIN contacts AS c On (c.contact = u.user_id AND c.uid = " . S::v('uid') . ")"
+ : "");
+ }
+
+ public function apply(PlatalPage &$page)
+ {
+ $page->assign_by_ref('set',
+ $this->set->get($this->fields(), $this->joins(), null, null, null, 5, 0));
+ }
+
+ public function args()
+ {
+ return null;
+ }
+}
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
XDB::execute('INSERT INTO requests (user_id, type, data, stamp) VALUES ({?}, {?}, {?}, {?})',
$this->uid, $this->type, $this, $this->stamp);
+ global $globals;
+ update_NbValid();
return true;
}
public function clean()
{
if ($this->unique) {
- return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
- $this->uid, $this->type);
+ $success = XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
+ $this->uid, $this->type);
} else {
- return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}',
- $this->uid, $this->type, $this->stamp);
+ $success = XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}',
+ $this->uid, $this->type, $this->stamp);
}
+ update_NbValid();
+ return $success;
}
// }}}
}
// }}}
+ // {{{ function get_typed_requests_count()
+
+ /** same as get_typed_requests() but return the count of available requests.
+ */
+ static public function get_typed_requests_count($uid, $type)
+ {
+ $res = XDB::query('SELECT COUNT(data) FROM requests WHERE user_id={?} and type={?}', $uid, $type);
+ return $res->fetchOneCell();
+ }
+
+ // }}}
// {{{ function _mail_body
abstract protected function _mail_body($isok);
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
public $rules = "Accepter si l'adresse mail parait correcte, et pas absurde (ou si le marketeur est de confiance).
Si le demandeur marque sa propre adresse mail, refuser dans tous les cas.
Si l'adresse proposée est surveillée, refuser.
- Si le compte associé est désactivé, étudier le cas en fonction de la raison de la désactivation";
+ Si le compte associé est désactivé, étudier le cas en fonction de la raison de la désactivation.";
// }}}
// {{{ constructor
XDB::execute("UPDATE emails AS e
INNER JOIN aliases AS a ON (a.id = e.uid)
- SET e.flags = 'active'
+ SET e.flags = 'active', panne_level = 2
WHERE a.alias = {?} AND e.email = {?}", $this->m_forlife, $this->m_email);
if (XDB::affectedRows() > 0) {
$this->m_reactive = true;
. "N'hésite pas à aller gérer toi-même tes redirections en te rendant à la page :\n"
. "https://www.polytechnique.org/emails/redirect\n"
. "Si tu as perdu ton mot de passe d'accès au site, tu peux également effectuer la procédure de récupération à l'adresse :\n"
- . "https://www.polytechnique.org/recovery\n"
+ . "https://www.polytechnique.org/recovery\n\n"
. "-- \nTrès Cordialement,\nL'Équipe de Polytechnique.org\n"));
$mailer->send();
return true;
. $reason . "\n\n"
. "L'adresse {$this->m_email} nous a été communiquée, veux-tu que cette adresse devienne ta nouvelle "
. "adresse de redirection ? Si oui, envoie nous des informations qui "
- . "nous permettront de nous assurer de ton identité (par exemple ta date de naissance et ta promotion)\n"
+ . "nous permettront de nous assurer de ton identité (par exemple ta date de naissance et ta promotion).\n\n"
. "-- \nTrès Cordialement,\nL'Équipe de Polytechnique.org\n";
$body = wordwrap($body, 78);
$mailer = new PlMailer();
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+class GoogleAppsUnsuspendReq extends Validate
+{
+ private $account;
+ public $rules = "Bien faire attention à la raison de la suspension. Si le compte a été suspendu par Google,
+ alors la raison s'affichera (mais seulement 24-48h après la suspension).
+ Si l'utilisateur a désactivé lui-même son compte, la raison sera toujours vierge.";
+
+ public function __construct($_uid)
+ {
+ parent::__construct($_uid, true, 'gapps-unsuspend');
+ }
+
+ public function sendmail($isok)
+ {
+ // Using overloading to prevent the validation from sending emails, as a valid
+ // unsuspend will automatically generate an email when commited through
+ // the Google Apps provisioning API.
+ if (!$isok) {
+ parent::sendmail($isok);
+ }
+ }
+
+ public function formu()
+ {
+ return 'include/form.valid.gapps-unsuspend.tpl';
+ }
+
+ protected function _mail_subj()
+ {
+ return "[Polytechnique.org] Demande de réactivation de ton compte Google Apps";
+ }
+
+ protected function _mail_body($isok)
+ {
+ if (!$isok) {
+ return " La demande que tu avais faite de réactivation de compte Google Apps a été refusée.";
+ }
+ }
+
+ public function commit()
+ {
+ require_once dirname(__FILE__) . '/../googleapps.inc.php';
+ $account = new GoogleAppsAccount($this->uid, $this->forlife);
+ return $account->do_unsuspend();
+ }
+
+ public function suspension_reason()
+ {
+ $res = XDB::query(
+ "SELECT g_suspension
+ FROM gapps_accounts
+ WHERE g_account_name = {?}",
+ $this->forlife);
+ return $res->fetchOneCell();
+ }
+}
+
+/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker enc=utf-8: */
+?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->owners, $this->members);
$liste = strtolower($this->liste);
if ($ret) {
- foreach(Array($liste, $liste."-owner", $liste."-admin", $liste."-bounces") as $l) {
+ foreach(Array($liste, $liste."-owner", $liste."-admin", $liste."-bounces", $liste."-unsubscribe") as $l) {
XDB::execute("INSERT INTO aliases (alias,type) VALUES({?}, 'liste')", $l);
}
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
public function commit ()
{
- return XDB::execute('REPLACE INTO profile_medals_sub VALUES({?}, {?}, {?})', $this->uid, $this->mid, $this->gid);
+ require_once 'notifs.inc.php';
+ register_watch_op($this->uid, WATCH_FICHE, 'medals');
+ return XDB::execute('REPLACE INTO profile_medals_sub
+ VALUES ({?}, {?}, {?})',
+ $this->uid, $this->mid, $this->gid);
}
// }}}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if ($this->nom_usage) {
$res .= "\n\n Les alias {$this->alias}@{$globals->mail->domain} et @{$globals->mail->domain2} sont maintenant à ta disposition !";
}
+ if ($globals->mailstorage->googleapps_domain) {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife'));
+ if ($account->active()) {
+ $res .= "\n\n Si tu utilises Google Apps, tu peux changer ton nom d'usage sur https://mail.google.com/a/polytechnique.org/#settings/accounts";
+ }
+ }
return $res;
} else {
return " La demande de changement de nom d'usage que tu avais faite a été refusée.";
public function commit()
{
+ require_once 'notifs.inc.php';
+ register_watch_op($this->uid, WATCH_FICHE, 'nom');
require_once('user.func.inc.php');
$this->bestalias = set_new_usage($this->uid, $this->nom_usage, $this->alias);
return true;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
protected function _mail_subj()
{
- return "[Polytechnique.org/ORANGE] Changement de nom de promo de sortie";
+ return "[Polytechnique.org/ORANGE] Changement de promo de sortie";
}
// }}}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
}
$topay = $u['montant'] - $u['paid'];
if ($topay > 0) {
- $mailer = new PlMailer('xnetevents/mail.new_payment.tpl');
+ $mailer = new PlMailer('xnetevents/newpayment.mail.tpl');
$mailer->assign('asso', $nom);
$mailer->assign('diminutif', $diminutif);
$mailer->assign('evt', $evt);
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
public function commit()
{
+ require_once 'notifs.inc.php';
XDB::execute('REPLACE INTO photo (uid, attachmime, attach, x, y)
VALUES ({?},{?},{?},{?},{?})',
$this->uid, $this->mimetype, $this->data, $this->x, $this->y);
- require_once('notifs.inc.php');
- register_watch_op($this->uid, WATCH_FICHE);
+ register_watch_op($this->uid, WATCH_FICHE, 'photo');
return true;
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if ($perms->hasFlag('groupannu')) {
$sub['annuaire du groupe'] = "$dim/annuaire";
$sub['trombinoscope'] = "$dim/trombi";
- $sub['carte'] = "$dim/geoloc";
+ $sub['planisphère'] = "$dim/geoloc";
}
if ($perms->hasFlag('groupmember')) {
if ($globals->asso('forum')) {
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$returl = "http://{$_SERVER['SERVER_NAME']}".substr($_SERVER['REQUEST_URI'], 0, $i);
else
$returl = "http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}";
- $url = "https://www.polytechnique.org/auth-groupex.php";
+ $url = "https://www.polytechnique.org/auth-groupex";
$url .= "?session=" . session_id();
$url .= "&challenge=" . S::v('challenge');
$url .= "&pass=" . md5(S::v('challenge') . $globals->xnet->secret);
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
require_once('globals.inc.php');
require_once('xorg/session.inc.php');
$globals = new PlatalGlobals('XorgSession');
+$globals->bootstrap(array('NbIns'), 'update_NbIns');
+$globals->bootstrap(array('NbValid'), 'update_NbValid');
// {{{ class XorgPage
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
return $forlife;
}
+/** Convert ip to uint (to store it in a database)
+ */
+function ip_to_uint($ip)
+{
+ return ip2long($ip);
+}
+
+/** Convert uint to ip (to build a human understandable ip)
+ */
+function uint_to_ip($uint)
+{
+ return long2ip($uint);
+}
+
+
+/******************************************************************************
+ * Security functions
+ *****************************************************************************/
+
function check_ip($level)
{
if (empty($_SERVER['REMOTE_ADDR'])) {
}
$ips[] = $_SERVER['REMOTE_ADDR'];
foreach ($ips as &$ip) {
- $ip = "ip LIKE " . XDB::escape($ip);
+ $ip = "ip = " . ip_to_uint($ip);
}
$res = XDB::query('SELECT state
FROM ip_watch
$mailer->send();
}
+
+/******************************************************************************
+ * Dynamic configuration update/edition stuff
+ *****************************************************************************/
+
+function update_NbIns()
+{
+ global $globals;
+ $res = XDB::query("SELECT COUNT(*)
+ FROM auth_user_md5
+ WHERE perms IN ('admin','user') AND deces=0");
+ $cnt = $res->fetchOneCell();
+ $globals->change_dynamic_config(array('NbIns' => $cnt));
+}
+
+function update_NbValid()
+{
+ global $globals;
+ $res = XDB::query("SELECT COUNT(*)
+ FROM requests");
+ $globals->change_dynamic_config(array('NbValid' => $res->fetchOneCell()));
+}
+
+function update_NbNotifs()
+{
+ require_once 'notifs.inc.php';
+ $n = select_notifs(false, S::i('uid'), S::v('watch_last'), false);
+ $_SESSION['notifs'] = $n->numRows();
+}
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
send_warning_mail($mail_subject);
}
set_skin();
+ update_NbNotifs();
check_redirect();
return true;
}
function set_skin()
{
global $globals;
- if (S::logged() && !S::has('skin')) {
+ if (S::logged() && (!S::has('skin') || S::has('suid'))) {
$uid = S::v('uid');
- $res = XDB::query("SELECT skin_tpl
- FROM auth_user_quick AS a
- INNER JOIN skins AS s ON a.skin = s.id
- WHERE user_id = {?} AND skin_tpl != ''", $uid);
- if ($_SESSION['skin'] = $res->fetchOneCell()) {
+ $res = XDB::query("SELECT skin_tpl
+ FROM auth_user_quick AS a
+ INNER JOIN skins AS s ON a.skin = s.id
+ WHERE user_id = {?} AND skin_tpl != ''", $uid);
+ if ($_SESSION['skin'] = $res->fetchOneCell()) {
return;
}
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
'phpinfo' => $this->make_hook('phpinfo', AUTH_MDP, 'admin'),
'admin' => $this->make_hook('default', AUTH_MDP, 'admin'),
'admin/ax-xorg' => $this->make_hook('ax_xorg', AUTH_MDP, 'admin'),
+ 'admin/dead-but-active' => $this->make_hook('dead_but_active', AUTH_MDP, 'admin'),
'admin/deaths' => $this->make_hook('deaths', AUTH_MDP, 'admin'),
'admin/downtime' => $this->make_hook('downtime', AUTH_MDP, 'admin'),
'admin/homonyms' => $this->make_hook('homonyms', AUTH_MDP, 'admin'),
function handler_user(&$page, $login = false)
{
+ global $globals;
$page->changeTpl('admin/utilisateurs.tpl');
$page->assign('xorg_title','Polytechnique.org - Administration - Edit/Su/Log');
require_once("emails.inc.php");
$res = XDB::query($watch);
$new_fields = $res->fetchOneAssoc();
- $mailer = new PlMailer("admin/mail_intervention.tpl");
+ $mailer = new PlMailer("admin/useredit.mail.tpl");
$mailer->assign("user", S::v('forlife'));
$mailer->assign('old', $old_fields);
$mailer->assign('new', $new_fields);
$mailer->send();
+
+ // update number of subscribers (perms or deceased may have changed)
+ update_NbIns();
$page->trig("updaté correctement.");
}
LEFT JOIN aliases AS a ON (a.id = u.user_id AND type= 'a_vie')
WHERE u.user_id = {?}", $mr['user_id']);
$mr = $r->fetchOneAssoc();
+
+ // If GoogleApps is enabled, the user did choose to use synchronized passwords,
+ // and the password was changed, updates the Google Apps password as well.
+ if ($globals->mailstorage->googleapps_domain && Env::v('newpass_clair') != "********") {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount($mr['user_id'], $mr['forlife']);
+ if ($account->active() && $account->sync_password) {
+ $account->set_password($pass_encrypted);
+ }
+ }
+
+ // If GoogleApps is enabled, and the user is now disabled, disables the Google Apps account as well.
+ if ($globals->mailstorage->googleapps_domain &&
+ $new_fields['perms'] == 'disabled' &&
+ $new_fields['perms'] != $old_fields['perms']) {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount($mr['user_id'], $mr['forlife']);
+ $account->suspend();
+ }
break;
// DELETE FROM auth_user_md5
case "u_kill":
user_clear_all_subs($mr['user_id']);
+ // update number of subscribers (perms or deceased may have changed)
+ update_NbIns();
$page->trig("'{$mr['user_id']}' a été désinscrit !");
- $mailer = new PlMailer("admin/mail_intervention.tpl");
+ $mailer = new PlMailer("admin/useredit.mail.tpl");
$mailer->assign("user", S::v('forlife'));
- $mailer->assign("query", "\nUtilisateur $login désinscrit");
+ $mailer->assign("deletion", true);
$mailer->send();
break;
+
+ case "b_edit":
+ XDB::execute("DELETE FROM forums.innd WHERE uid = {?}", $mr['user_id']);
+ if (Env::v('write_perm') != "" || Env::v('read_perm') != "" || Env::v('commentaire') != "" ) {
+ XDB::execute("INSERT INTO forums.innd
+ SET ipmin = '0',
+ ipmax = '4294967295',
+ write_perm = {?},
+ read_perm = {?},
+ comment = {?},
+ priority = '200',
+ uid = {?}",
+ Env::v('write_perm'), Env::v('read_perm'), Env::v('comment'), $mr['user_id']);
+ }
+ break;
}
}
}
$page->assign('mr',$mr);
+
+ // Bans forums
+ $res = XDB::query("SELECT write_perm, read_perm, comment
+ FROM forums.innd
+ WHERE uid = {?}", $mr['user_id']);
+ $bans = $res->fetchOneAssoc();
+ $page->assign('bans', $bans);
}
}
$page->assign('decedes', $res);
}
+ function handler_dead_but_active(&$page) {
+ $page->changeTpl('admin/dead_but_active.tpl');
+ $page->assign('xorg_title','Polytechnique.org - Administration - Décédés');
+
+ $res = XDB::iterator(
+ "SELECT u.promo, u.nom, u.prenom, u.deces, u.matricule_ax, a.alias, DATE(MAX(s.start)) AS last
+ FROM auth_user_md5 AS u
+ LEFT JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie')
+ LEFT JOIN logger.sessions AS s ON (s.uid = u.user_id AND suid = 0)
+ WHERE perms IN ('admin', 'user') AND deces <> 0
+ GROUP BY u.user_id
+ ORDER BY u.promo, u.nom");
+ $page->assign('dead', $res);
+ }
+
function handler_synchro_ax(&$page, $user = null, $action = null) {
$page->changeTpl('admin/synchro_ax.tpl');
$page->assign('xorg_title','Polytechnique.org - Administration - Synchro AX');
$table_editor->describe('ext','extension du screenshot',false);
$table_editor->apply($page, $action, $id);
}
+
function handler_postfix_blacklist(&$page, $action = 'list', $id = null) {
$page->assign('xorg_title','Polytechnique.org - Administration - Postfix : Blacklist');
$page->assign('title', 'Blacklist de postfix');
if (trim(Post::v('ipN')) != '') {
Xdb::execute('INSERT IGNORE INTO ip_watch (ip, state, detection, last, uid, description)
VALUES ({?}, {?}, CURDATE(), NOW(), {?}, {?})',
- trim(Post::v('ipN')), Post::v('stateN'), S::i('uid'), Post::v('descriptionN'));
+ ip_to_uint(trim(Post::v('ipN'))), Post::v('stateN'), S::i('uid'), Post::v('descriptionN'));
};
break;
case 'edit':
Xdb::execute('UPDATE ip_watch
SET state = {?}, last = NOW(), uid = {?}, description = {?}
- WHERE ip = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'), Post::v('ipN'));
+ WHERE ip = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'),
+ ip_to_uint(Post::v('ipN')));
break;
default:
if ($action == 'delete' && !is_null($ip)) {
- Xdb::execute('DELETE FROM emails_watch WHERE ip = {?}', $ip);
+ Xdb::execute('DELETE FROM ip_watch WHERE ip = {?}', ip_to_uint($ip));
}
}
if ($action != 'create' && $action != 'edit') {
$table = array();
$props = array();
while (list($ip, $host, $date, $state, $forlife) = $it->next()) {
+ $ip = uint_to_ip($ip);
if (count($props) == 0 || $props['ip'] != $ip) {
if (count($props) > 0) {
$table[] = $props;
WHERE w.ip = {?}
GROUP BY a2.alias
ORDER BY a2.alias";
- $it = Xdb::iterRow($sql, $ip);
+ $it = Xdb::iterRow($sql, ip_to_uint($ip));
$props = array();
while (list($detection, $state, $last, $description, $edit, $forlife, $host) = $it->next()) {
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
function __construct($id)
{
- parent::__construct('axletter/letter.tpl', 'ax.css', 'ax/show', 'axletter', 'axletter_ins');
+ parent::__construct('axletter/letter.mail.tpl', 'ax.css', 'ax/show', 'axletter', 'axletter_ins');
$this->_head = '<cher> <prenom>,';
if (!is_array($id)) {
} else {
$res = XDB::query("SELECT *
FROM axletter
- WHERE id = {?} OR shortname = {?}", $id, $id);
+ WHERE id = {?} OR short_name = {?}", $id, $id);
}
if (!$res->numRows()) {
$this->_id = null;
static public function listSent()
{
- $res = XDB::query("SELECT IF(shortname IS NULL, id, shortname) as id, date, subject AS titre
+ $res = XDB::query("SELECT IF(short_name IS NULL, id, short_name) as id, date, subject AS titre
FROM axletter
WHERE NOT (FIND_IN_SET('new', bits))
ORDER BY date DESC");
static public function listAll()
{
- $res = XDB::query("SELECT IF(shortname IS NULL, id, shortname) as id, date, subject AS titre
+ $res = XDB::query("SELECT IF(short_name IS NULL, id, short_name) as id, date, subject AS titre
FROM axletter
ORDER BY date DESC");
return $res->fetchAllAssoc();
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if (Get::has('read')) {
$_SESSION['watch_last'] = Get::v('read');
+ update_NbNotifs();
pl_redirect('carnet/panel');
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
ORDER BY LENGTH(alias)";
$page->assign('aliases', XDB::iterator($sql, $uid));
- $homonyme = XDB::query("SELECT alias FROM aliases INNER JOIN homonymes ON (id = homonyme_id) WHERE user_id = {?} AND type = 'homonyme'", $uid);
- $page->assign('homonyme', $homonyme->fetchOneCell());
-
+ $homonyme = XDB::query("SELECT alias FROM aliases INNER JOIN homonymes ON (id = homonyme_id) WHERE user_id = {?} AND type = 'homonyme'", $uid);
+ $page->assign('homonyme', $homonyme->fetchOneCell());
+
+ // Affichage des redirections de l'utilisateur.
$sql = "SELECT email
FROM emails
WHERE uid = {?} AND FIND_IN_SET('active', flags)";
$page->assign('mails', XDB::iterator($sql, $uid));
+ // Affichage des backends actifs de stockage des emails.
+ $sql = "SELECT mail_storage
+ FROM auth_user_md5
+ WHERE user_id = {?}";
+ $storages = XDB::query($sql, $uid)->fetchOneCell();
+ $page->assign('storage', explode(',', $storages));
// on regarde si l'utilisateur a un alias et si oui on l'affiche !
$forlife = S::v('forlife');
$retour = $redirect->delete_email($email);
$page->assign('retour', $retour);
}
-
- if ($action == 'active' && $email) {
- $redirect->modify_one_email($email, true);
- }
-
- if ($action == 'inactive' && $email) {
- $redirect->modify_one_email($email, false);
- }
-
- if ($action == 'rewrite' && $email) {
- $rewrite = @func_get_arg(3);
- $redirect->modify_one_email_redirect($email, $rewrite);
- }
-
+
+ if ($action == 'active' && $email) {
+ $redirect->modify_one_email($email, true);
+ }
+
+ if ($action == 'inactive' && $email) {
+ $redirect->modify_one_email($email, false);
+ }
+
+ if ($action == 'rewrite' && $email) {
+ $rewrite = @func_get_arg(3);
+ $redirect->modify_one_email_redirect($email, $rewrite);
+ }
+
+ if ($action == 'storage') {
+ if ($email == 'imap') {
+ $storage = new MailStorageIMAP(S::v('uid'));
+ } else if ($email == 'googleapps') {
+ $storage = new MailStorageGoogleApps(S::v('uid'));
+ } else {
+ $storage = NULL;
+ }
+
+ if ($storage) {
+ $subaction = @func_get_arg(3);
+ if ($subaction == 'active') {
+ $storage->enable();
+ }
+ if ($subaction == 'inactive') {
+ $storage->disable();
+ }
+ }
+ }
+
if (Env::has('emailop')) {
$actifs = Env::v('emails_actifs', Array());
print_r(Env::v('emails_rewrite'));
FROM aliases
WHERE id={?} AND (type='a_vie' OR type='alias')
ORDER BY !FIND_IN_SET('usage',flags), LENGTH(alias)", $uid);
+
$page->assign('alias', $res->fetchAllAssoc());
$page->assign('emails',$redirect->emails);
+
+ $res = XDB::query(
+ "SELECT mail_storage
+ FROM auth_user_md5
+ WHERE user_id = {?}", $uid);
+ $page->assign('storage', explode(',', $res->fetchOneCell()));
+
+ require_once 'googleapps.inc.php';
+ $page->assign('googleapps', GoogleAppsAccount::account_status($uid));
}
function handler_antispam(&$page, $statut_filtre = null)
return join(', ', $ret);
}
+ $error = false;
foreach ($_FILES as &$file) {
if ($file['name'] && !PlUpload::get($file, S::v('forlife'), 'emails.send', false)) {
- $page->trig("Impossible de télécharger '" . pl_entities($file['name']) . "'");
+ $page->trig(PlUpload::$lastError);
+ $error = true;
+ break;
}
}
- XDB::execute("DELETE FROM email_send_save
- WHERE uid = {?}", S::i('uid'));
-
- $to2 = getEmails(Env::v('to_contacts'));
- $cc2 = getEmails(Env::v('cc_contacts'));
- $txt = str_replace('^M', '', Env::v('contenu'));
- $to = Env::v('to');
- $subj = Env::v('sujet');
- $from = Env::v('from');
- $cc = trim(Env::v('cc'));
- $bcc = trim(Env::v('bcc'));
-
- if (empty($to) && empty($cc) && empty($to2) && empty($bcc) && empty($cc2)) {
- $page->trig("Indique au moins un destinataire.");
- $page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send'));
- } else {
- $mymail = new PlMailer();
- $mymail->setFrom($from);
- $mymail->setSubject($subj);
- if (!empty($to)) { $mymail->addTo($to); }
- if (!empty($cc)) { $mymail->addCc($cc); }
- if (!empty($bcc)) { $mymail->addBcc($bcc); }
- if (!empty($to2)) { $mymail->addTo($to2); }
- if (!empty($cc2)) { $mymail->addCc($cc2); }
- $files =& PlUpload::listFiles(S::v('forlife'), 'emails.send');
- foreach ($files as $name=>&$upload) {
- $mymail->addUploadAttachment($upload, $name);
- }
- if (Env::v('nowiki')) {
- $mymail->setTxtBody(wordwrap($txt, 78, "\n"));
- } else {
- $mymail->setWikiBody($txt);
- }
- if ($mymail->send()) {
- $page->trig("Ton mail a bien été envoyé.");
- $_REQUEST = array('bcc' => S::v('bestalias').'@'.$globals->mail->domain);
- PlUpload::clear(S::v('forlife'), 'emails.send');
- } else {
- $page->trig("Erreur lors de l'envoi du courriel, réessaye.");
+ if (!$error) {
+ XDB::execute("DELETE FROM email_send_save
+ WHERE uid = {?}", S::i('uid'));
+
+ $to2 = getEmails(Env::v('to_contacts'));
+ $cc2 = getEmails(Env::v('cc_contacts'));
+ $txt = str_replace('^M', '', Env::v('contenu'));
+ $to = Env::v('to');
+ $subj = Env::v('sujet');
+ $from = Env::v('from');
+ $cc = trim(Env::v('cc'));
+ $bcc = trim(Env::v('bcc'));
+
+ if (empty($to) && empty($cc) && empty($to2) && empty($bcc) && empty($cc2)) {
+ $page->trig("Indique au moins un destinataire.");
$page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send'));
+ } else {
+ $mymail = new PlMailer();
+ $mymail->setFrom($from);
+ $mymail->setSubject($subj);
+ if (!empty($to)) { $mymail->addTo($to); }
+ if (!empty($cc)) { $mymail->addCc($cc); }
+ if (!empty($bcc)) { $mymail->addBcc($bcc); }
+ if (!empty($to2)) { $mymail->addTo($to2); }
+ if (!empty($cc2)) { $mymail->addCc($cc2); }
+ $files =& PlUpload::listFiles(S::v('forlife'), 'emails.send');
+ foreach ($files as $name=>&$upload) {
+ $mymail->addUploadAttachment($upload, $name);
+ }
+ if (Env::v('nowiki')) {
+ $mymail->setTxtBody(wordwrap($txt, 78, "\n"));
+ } else {
+ $mymail->setWikiBody($txt);
+ }
+ if ($mymail->send()) {
+ $page->trig("Ton mail a bien été envoyé.");
+ $_REQUEST = array('bcc' => S::v('bestalias').'@'.$globals->mail->domain);
+ PlUpload::clear(S::v('forlife'), 'emails.send');
+ } else {
+ $page->trig("Erreur lors de l'envoi du courriel, réessaye.");
+ $page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send'));
+ }
}
}
} else {
WHERE c.uid = {?}
ORDER BY u.nom, u.prenom", S::v('uid'));
$page->assign('contacts', $res->fetchAllAssoc());
- $page->assign('maxsize', ini_get('post_max_size') . 'o');
+ $page->assign('maxsize', ini_get('upload_max_filesize') . 'o');
}
function handler_test(&$page, $forlife = null)
if (!S::has_perms() || !$forlife) {
$forlife = S::v('bestalias');
}
- $mailer = new PlMailer('emails/mail.test.tpl');
+ $mailer = new PlMailer('emails/test.mail.tpl');
$mailer->assign('email', $forlife . '@' . $globals->mail->domain);
$iterator = XDB::iterator("SELECT email
FROM emails AS e
$page->changeTpl('emails/lost.tpl');
$page->assign('lost_emails', XDB::iterator('
- SELECT u.user_id, a.alias
- FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie")
- LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags))
- WHERE e.uid IS NULL AND u.deces = 0
- ORDER BY u.promo DESC, u.nom, u.prenom'));
+ SELECT u.user_id, a.alias
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie")
+ LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags))
+ WHERE e.uid IS NULL AND u.deces = 0
+ ORDER BY u.promo DESC, u.nom, u.prenom'));
}
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
return $res->fetchOneAssoc();
}
- private function get_events($where, $order, array &$array, $name)
- {
- // affichage des evenements
- // annonces promos triées par présence d'une limite sur les promos
- // puis par dates croissantes d'expiration
- $promo = S::v('promo');
- $uid = S::i('uid');
- $sql = "SELECT e.id,e.titre, ev.user_id IS NULL AS nonlu
- FROM evenements AS e
- LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?})
- WHERE FIND_IN_SET('valide', e.flags) AND peremption >= NOW()
- AND (e.promo_min = 0 || e.promo_min <= {?})
- AND (e.promo_max = 0 || e.promo_max >= {?})
- AND $where
- ORDER BY $order";
- $sum = XDB::iterator($sql, $uid, $promo, $promo);
- if (!$sum->total()) {
- return false;
- }
- $sql = "SELECT e.id,e.titre,e.texte,e.post_id,a.user_id,a.nom,a.prenom,a.promo,l.alias AS forlife,
- p.x, p.y, p.attach IS NOT NULL AS img, FIND_IN_SET('wiki', e.flags) AS wiki
- FROM evenements AS e
- LEFT JOIN evenements_photo AS p ON (e.id = p.eid)
- INNER JOIN auth_user_md5 AS a ON e.user_id=a.user_id
- INNER JOIN aliases AS l ON ( a.user_id=l.id AND l.type='a_vie' )
- LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?})
- WHERE FIND_IN_SET('valide', e.flags) AND peremption >= NOW()
- AND (e.promo_min = 0 || e.promo_min <= {?})
- AND (e.promo_max = 0 || e.promo_max >= {?})
- AND ev.user_id IS NULL
- AND $where
- ORDER BY $order";
- $evt = XDB::iterator($sql, $uid, $promo, $promo);
- $array[$name] = array('events' => $evt, 'summary' => $sum);
- return true;
- }
-
private function upload_image(PlatalPage &$page, PlUpload &$upload)
{
if (@!$_FILES['image']['tmp_name'] && !Env::v('image_url')) {
}
$array = array();
- $this->get_events('FIND_IN_SET(\'important\', e.flags)', 'e.creation_date DESC', $array, 'important');
- $this->get_events('e.creation_date > DATE_SUB(CURDATE(), INTERVAL 2 DAY)
- AND NOT FIND_IN_SET(\'important\', e.flags)',
- 'e.creation_date DESC', $array, 'news');
- $this->get_events('e.peremption < DATE_ADD(CURDATE(), INTERVAL 2 DAY)
- AND e.creation_date <= DATE_SUB(CURDATE(), INTERVAL 2 DAY)
- AND NOT FIND_IN_SET(\'important\', e.flags)',
- 'e.peremption, e.creation_date DESC', $array, 'end');
- $this->get_events('e.peremption >= DATE_ADD(CURDATE(), INTERVAL 2 DAY)
- AND e.creation_date <= DATE_SUB(CURDATE(), INTERVAL 2 DAY)
- AND NOT FIND_IN_SET(\'important\', e.flags)',
- 'e.peremption, e.creation_date DESC', $array, 'body');
+ $it = XDB::iterator("SELECT e.id,e.titre,e.texte,e.post_id,a.user_id,a.nom,a.prenom,a.promo,l.alias AS forlife,
+ p.x, p.y, p.attach IS NOT NULL AS img, FIND_IN_SET('wiki', e.flags) AS wiki,
+ FIND_IN_SET('important', e.flags) AS important,
+ e.creation_date > DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS news,
+ e.peremption < DATE_ADD(CURDATE(), INTERVAL 2 DAY) AS end,
+ ev.user_id IS NULL AS nonlu
+ FROM evenements AS e
+ LEFT JOIN evenements_photo AS p ON (e.id = p.eid)
+ INNER JOIN auth_user_md5 AS a ON e.user_id=a.user_id
+ INNER JOIN aliases AS l ON ( a.user_id=l.id AND l.type='a_vie' )
+ LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?})
+ WHERE FIND_IN_SET('valide', e.flags) AND peremption >= NOW()
+ AND (e.promo_min = 0 || e.promo_min <= {?})
+ AND (e.promo_max = 0 || e.promo_max >= {?})
+ ORDER BY important DESC, news DESC, end DESC, e.peremption, e.creation_date DESC",
+ S::i('uid'), S::i('promo'), S::i('promo'));
+ $cats = array('important', 'news', 'end', 'body');
+ $body = $it->next();
+ foreach ($cats as $cat) {
+ $data = array();
+ if (!$body) {
+ continue;
+ }
+ do {
+ if ($cat == 'body' || $body[$cat]) {
+ $data[] = $body;
+ } else {
+ break;
+ }
+ $body = $it->next();
+ } while ($body);
+ if (!empty($data)) {
+ $array[$cat] = $data;
+ }
+ }
$page->assign_by_ref('events', $array);
}
FIND_IN_SET('valide', e.flags) AS fvalide,
FIND_IN_SET('archive', e.flags) AS farch,
u.promo, u.nom, u.prenom, a.alias AS forlife,
- FIND_IN_SET('wiki', flags) AS wiki
+ FIND_IN_SET('wiki', e.flags) AS wiki
FROM evenements AS e
INNER JOIN auth_user_md5 AS u ON(e.user_id = u.user_id)
INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie')
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-class BananaModule extends PLModule
+class ForumsModule extends PLModule
{
function handlers()
{
return array(
'banana' => $this->make_hook('banana', AUTH_COOKIE),
- 'banana/profile' => $this->make_hook('profile', AUTH_MDP),
- 'banana/subscription' => $this->make_hook('subscription', AUTH_COOKIE),
'banana/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS),
+ 'admin/forums' => $this->make_hook('forums_bans', AUTH_MDP, 'admin'),
);
}
FROM auth_user_md5 WHERE promo={?}", $promo);
list($effau, $effid) = $res->fetchOneRow();
if (5*$effau>$effid) { // + de 20% d'inscrits
- $mymail = new PlMailer('mails/forums.promo.tpl');
+ $mymail = new PlMailer('admin/forums-promo.mail.tpl');
$mymail->assign('promo', $promo);
$mymail->send();
}
if (!(Post::has('action') && Post::has('banananame') && Post::has('bananasig')
&& Post::has('bananadisplay') && Post::has('bananamail')
- && Post::has('bananaupdate') && Post::v('action')=="OK" ))
+ && Post::has('bananaupdate') && Post::v('action')=="Enregistrer" ))
{
$req = XDB::query("
SELECT nom, mail, sig,
}
}
- function handler_subscription(&$page)
- {
- $page->changeTpl('banana/index.tpl');
- $page->assign('xorg_title','Polytechnique.org - Forums & PA');
-
- require_once 'banana/forum.inc.php';
- run_banana($page, 'ForumsBanana', Array('action' => 'subscribe'));
- }
-
function handler_rss(&$page, $group, $alias, $hash, $file = null)
{
if (is_null($file)) {
exit;
}
+ function handler_forums_bans(&$page, $action = 'list', $id = null)
+ {
+ $page->assign('xorg_title','Polytechnique.org - Administration - Bannissements des forums');
+ $page->assign('title', 'Gestion des mises au ban');
+ $table_editor = new PLTableEditor('admin/forums','forums.innd','id_innd');
+ $table_editor->describe('ipmin','min plage IP',true);
+ $table_editor->describe('ipmax','max plage IP',true);
+ $table_editor->describe('uid','utilisateur',true);
+ $table_editor->describe('write_perm','perm. poster',true);
+ $table_editor->describe('read_perm','perm. lire',true);
+ $table_editor->describe('priority','priorite',true);
+ $table_editor->describe('comment','commentaire',true);
+ $table_editor->apply($page, $action, $id);
+ }
+
static function run_banana(&$page, $params = null)
{
$page->changeTpl('banana/index.tpl');
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+class GadgetsModule extends PLModule
+{
+ function handlers()
+ {
+ return array(
+ 'gadgets/ig-events.xml' => $this->make_hook('ig_events_xml', AUTH_PUBLIC, 'user', NO_HTTPS),
+ 'gadgets/ig-events' => $this->make_hook('ig_events', AUTH_PUBLIC),
+ 'gadgets/ig-search.xml' => $this->make_hook('ig_search_xml', AUTH_PUBLIC, 'user', NO_HTTPS),
+ 'gadgets/ig-search' => $this->make_hook('ig_search', AUTH_PUBLIC),
+ );
+ }
+
+ function handler_ig_events_xml(&$page) {
+ require_once 'gadgets/gadgets.inc.php';
+ init_igoogle_xml('gadgets/ig-events.xml.tpl');
+ }
+
+ function handler_ig_events(&$page) {
+ require_once 'gadgets/gadgets.inc.php';
+ init_igoogle_html('gadgets/ig-events.tpl', AUTH_COOKIE);
+
+ $events = XDB::iterator(
+ 'SELECT SQL_CALC_FOUND_ROWS
+ e.id, e.titre, UNIX_TIMESTAMP(e.creation_date) AS creation_date,
+ IF(u.nom_usage = "", u.nom, u.nom_usage) AS nom, u.prenom, u.promo,
+ ev.user_id IS NULL AS nonlu
+ FROM evenements AS e
+ INNER JOIN auth_user_md5 AS u ON e.user_id = u.user_id
+ LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?})
+ WHERE FIND_IN_SET("valide", e.flags) AND peremption >= NOW()
+ AND (e.promo_min = 0 || e.promo_min <= {?})
+ AND (e.promo_max = 0 || e.promo_max >= {?})
+ ORDER BY e.creation_date DESC
+ LIMIT {?}',
+ S::i('uid'), S::i('promo'), S::i('promo'), 5);
+ $page->assign('events', $events);
+ $page->assign('event_count', XDB::query("SELECT FOUND_ROWS()")->fetchOneCell());
+ }
+
+ function handler_ig_search_xml(&$page) {
+ require_once 'gadgets/gadgets.inc.php';
+ init_igoogle_xml('gadgets/ig-search.xml.tpl');
+ }
+
+ function handler_ig_search(&$page)
+ {
+ if (Env::has('quick') && Env::s('quick') != '') {
+ require_once 'userset.inc.php';
+ $view = new SearchSet(true);
+ $view->addMod('gadget', 'Gadget', true);
+ $view->apply(null, $page);
+
+ $nb_tot = $view->count();
+ $page->assign('result_count', $nb_tot);
+
+ if (!S::logged() && $nb_tot > $globals->search->public_max) {
+ $page->assign('error', 'Votre recherche a généré trop de résultats pour un affichage public.');
+ } elseif ($nb_tot > $globals->search->private_max) {
+ $page->assign('error', 'Recherche trop générale.');
+ } elseif (empty($nb_tot)) {
+ $page->assign('error', 'Il n\'existe personne correspondant à ces critères dans la base !');
+ }
+ }
+
+ require_once 'gadgets/gadgets.inc.php';
+ init_igoogle_html('gadgets/ig-search.tpl', AUTH_PUBLIC);
+ }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+// iGoogle gadgets helpers.
+function init_igoogle_xml($template)
+{
+ global $page;
+ $page->changeTpl($template, NO_SKIN);
+
+ header('Content-Type: application/xml; charset=utf-8');
+}
+
+function init_igoogle_html($template, $auth = AUTH_PUBLIC)
+{
+ global $page;
+ $page->changeTpl('gadgets/ig-skin.tpl', NO_SKIN);
+ $page->register_modifier('escape_html', 'escape_html');
+ $page->default_modifiers = Array('@escape_html');
+ header('Accept-Charset: utf-8');
+
+ // Adds external JavaScript libraries provided by iGoogle to the page.
+ if (Env::has('libs')) {
+ $libs = split(',', Env::s('libs'));
+ foreach ($libs as $lib) {
+ if (preg_match('@^[a-z0-9/._-]+$@i', $lib) && !preg_match('@([.][.])|([.]/)|(//)@', $lib)) {
+ $page->append('gadget_js', 'https://www.google.com/ig/f/' . $lib);
+ }
+ }
+ }
+
+ // Redirects the user to the login pagin if required.
+ if ($auth > S::v('auth', AUTH_PUBLIC)) {
+ $page->assign('gadget_tpl', 'gadgets/ig-login.tpl');
+ return false;
+ }
+
+ $page->assign('gadget_tpl', $template);
+ return true;
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2008 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 *
+ ***************************************************************************/
+
+class GoogleAppsModule extends PLModule
+{
+ function handlers()
+ {
+ global $globals;
+ if (!$globals->mailstorage->googleapps_domain) {
+ return array();
+ }
+
+ return array(
+ 'googleapps' => $this->make_hook('index', AUTH_MDP),
+ 'admin/googleapps' => $this->make_hook('admin', AUTH_MDP. 'admin'),
+ 'admin/googleapps/job' => $this->make_hook('admin_job', AUTH_MDP, 'admin'),
+ 'admin/googleapps/user' => $this->make_hook('admin_user', AUTH_MDP, 'admin'),
+ );
+ }
+
+ function handler_index(&$page, $action = null, $subaction = null)
+ {
+ require_once("emails.inc.php");
+ require_once("googleapps.inc.php");
+ $page->changeTpl('googleapps/index.tpl');
+ $page->addJsLink('motdepasse.js');
+ $page->assign('xorg_title', 'Polytechnique.org - Compte Google Apps');
+
+ $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife'));
+
+ // Fills up the 'is Google Apps redirection active' variable.
+ $page->assign('redirect_active', false);
+ $page->assign('redirect_unique', true);
+
+ if ($account->active()) {
+ $redirect = new Redirect(S::v('uid'));
+ $page->assign('redirect_unique', !$redirect->other_active(NULL));
+
+ $storage = new MailStorageGoogleApps(S::v('uid'));
+ $page->assign('redirect_active', $storage->active());
+ }
+
+ // Updates the Google Apps account as required.
+ if ($action) {
+ if ($action == 'password') {
+ if ($subaction == 'sync') {
+ $account->set_password_sync(true);
+ $account->set_password(S::v('password'));
+ $page->trig("Ton mot de passe Google Apps sera dorénavant synchronisé avec ton mot de passe Polytechnique.org.");
+ } else if ($subaction == 'nosync') {
+ $account->set_password_sync(false);
+ } else if (Post::has('response2') && !$account->sync_password) {
+ $account->set_password(Post::v('response2'));
+ }
+ }
+
+ if ($action == 'suspend' && Post::has('suspend') && $account->active()) {
+ if ($account->pending_update_suspension) {
+ $page->trig("Ton compte est déjà en cours de désactivation.");
+ } else {
+ $storage = new MailStorageGoogleApps(S::v('uid'));
+ if ($storage->disable()) {
+ $account->suspend();
+ $page->trig("Ton compte Google Apps est dorénavant désactivé.");
+ } else {
+ $page->trig("Ton compte Google Apps est ta seule adresse de redirection. Ton compte ne peux pas être désactivé.");
+ }
+ }
+ } elseif ($action == 'unsuspend' && Post::has('unsuspend') && $account->suspended()) {
+ $account->unsuspend(Post::b('redirect_mails', true));
+ $page->trig("Ta demande de réactivation a bien été prise en compte.");
+ }
+
+ if ($action == 'create') {
+ $page->assign('has_password_sync', Get::has('password_sync'));
+ $page->assign('password_sync', Get::b('password_sync', true));
+ }
+ if ($action == 'create' && Post::has('password_sync') && Post::has('redirect_mails')) {
+ $password_sync = Post::b('password_sync');
+ $redirect_mails = Post::b('redirect_mails');
+ if ($password_sync) {
+ $password = S::v('password');
+ } else {
+ $password = Post::v('response2');
+ }
+
+ $account->create($password_sync, $password, $redirect_mails);
+ $page->trig("La demande de création de ton compte Google Apps a bien été enregistrée.");
+ }
+ }
+
+ $page->assign('account', $account);
+ }
+
+ function handler_admin(&$page, $action = null) {
+ require_once("googleapps.inc.php");
+ $page->changeTpl('googleapps/admin.tpl');
+ $page->assign('xorg_title', 'Polytechnique.org - Administration Google Apps');
+ $page->assign('googleapps_admin', GoogleAppsAccount::is_administrator(S::v('uid')));
+
+ if ($action == 'ack') {
+ $qid = @func_get_arg(2);
+ if ($qid) {
+ XDB::execute(
+ "DELETE FROM gapps_queue
+ WHERE q_id = {?} AND p_status = 'hardfail'", $qid);
+ $page->trig("La requête échouée a bien été retirée.");
+ }
+ }
+
+ // Retrieves latest pending administrative requests from the gappsd queue.
+ $res = XDB::iterator(
+ "SELECT q_id, q_recipient_id, a.alias, j_type, j_parameters,
+ UNIX_TIMESTAMP(q.p_entry_date) AS p_entry_date
+ FROM gapps_queue AS q
+ LEFT JOIN aliases AS a ON (a.id = q_recipient_id AND a.type = 'a_vie')
+ WHERE p_status IN ('idle', 'active', 'softfail') AND
+ p_admin_request IS TRUE
+ ORDER BY p_entry_date");
+ while ($request = $res->next()) {
+ $j_parameters = json_decode($request['j_parameters'], true);
+ unset($j_parameters['username']);
+ $parameters = array_keys($j_parameters);
+ $request['parameters'] = implode(', ', $parameters);
+
+ $page->append('admin_requests', $request);
+ }
+
+ // Retrieves latest failed requests from the gappsd queue.
+ $res = XDB::iterator(
+ "SELECT q.q_id, q.q_recipient_id, a.alias, q.j_type, q.r_result,
+ UNIX_TIMESTAMP(q.p_entry_date) AS p_entry_date
+ FROM gapps_queue AS q
+ LEFT JOIN aliases AS a ON (a.id = q.q_recipient_id AND a.type = 'a_vie')
+ WHERE q.p_status = 'hardfail'
+ ORDER BY p_entry_date DESC
+ LIMIT 20");
+ $page->assign('failed_requests', $res);
+ }
+
+ function handler_admin_job(&$page, $job = null) {
+ require_once("googleapps.inc.php");
+ $page->changeTpl('googleapps/admin.job.tpl');
+ $page->assign('xorg_title', 'Polytechnique.org - Administration Google Apps');
+ $page->assign('googleapps_admin', GoogleAppsAccount::is_administrator(S::v('uid')));
+
+ if ($job) {
+ $res = XDB::query(
+ "SELECT q.*, ao.alias AS q_owner, ar.alias AS q_recipient
+ FROM gapps_queue AS q
+ LEFT JOIN aliases AS ao ON (ao.id = q.q_owner_id AND ao.type = 'a_vie')
+ LEFT JOIN aliases AS ar ON (ar.id = q.q_recipient_id AND ar.type = 'a_vie')
+ WHERE q_id = {?}", $job);
+ $sql_job = $res->fetchOneAssoc();
+ $sql_job['decoded_parameters'] = var_export(json_decode($sql_job['j_parameters'], true), true);
+ $page->assign('job', $sql_job);
+ }
+ }
+
+ function handler_admin_user(&$page, $user = null, $action = null) {
+ require_once("emails.inc.php");
+ require_once("googleapps.inc.php");
+ $page->changeTpl('googleapps/admin.user.tpl');
+ $page->assign('xorg_title', 'Polytechnique.org - Administration Google Apps');
+ $page->assign('googleapps_admin', GoogleAppsAccount::is_administrator(S::v('uid')));
+
+ if (!$user && Post::has('login')) {
+ $user = Post::v('login');
+ }
+ if ($user && !is_numeric($user)) {
+ $res = XDB::query("SELECT id FROM aliases WHERE alias = {?} AND type != 'homonyme'", $user);
+ $user = $res->fetchOneCell();
+ }
+
+ if ($user) {
+ $account = new GoogleAppsAccount($user);
+ $storage = new MailStorageGoogleApps($user);
+
+ // Force synchronization of plat/al and Google Apps passwords.
+ if ($action == 'forcesync' && $account->sync_password) {
+ $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id = {?}", $user);
+ $account->set_password($res->fetchOneCell());
+ $page->trig('Le mot de passe a été synchronisé.');
+ }
+
+ // Displays basic account information.
+ $page->assign('account', $account);
+ $page->assign('admin_account', GoogleAppsAccount::is_administrator($user));
+ $page->assign('googleapps_storage', $storage->active());
+ $page->assign('user', $user);
+
+ // Retrieves user's pending requests.
+ $res = XDB::iterator(
+ "SELECT q_id, q_recipient_id, p_status, j_type, UNIX_TIMESTAMP(p_entry_date) AS p_entry_date
+ FROM gapps_queue
+ WHERE q_recipient_id = {?}
+ ORDER BY p_entry_date DESC", $user);
+ $page->assign('requests', $res);
+ }
+ }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$page->changeTpl('lists/delete.tpl');
if (Post::v('valid') == 'OUI') {
if ($this->client->delete_list($liste, Post::b('del_archive'))) {
- foreach (array('', '-owner', '-admin', '-bounces') as $app) {
+ foreach (array('', '-owner', '-admin', '-bounces', '-unsubscribe') as $app) {
XDB::execute("DELETE FROM $table
WHERE type={?} AND alias={?}",
$type, $liste.$app.$domain);
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
foreach($members as $mem) {
list($m, $dom) = explode('@',$mem);
if ($dom == $globals->mail->domain || $dom == $globals->mail->domain2) {
- $res = XDB::query('SELECT prenom,IF(nom_usage="", nom, nom_usage), promo
- FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON u.user_id = a.id
- WHERE a.alias = {?}', $m);
- if(list($prenom, $nom, $promo) = $res->fetchOneRow()) {
+ $res = XDB::query('SELECT prenom, IF(nom_usage="", nom, nom_usage), promo, e.uid IS NULL
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON u.user_id = a.id
+ LEFT JOIN emails AS e ON ( e.flags = \'active\' AND e.uid = u.user_id)
+ WHERE a.alias = {?}
+ GROUP BY u.user_id', $m);
+ if(list($prenom, $nom, $promo, $broken) = $res->fetchOneRow()) {
$key = $tri_promo ? $promo : strtoupper($nom{0});
- $membres[$key][$nom.$m] = Array('n' => "$prenom $nom", 'l' => $m, 'p' => (!$tri_promo ? $promo : null));
+ $membres[$key][$nom.$m] = Array('n' => "$prenom $nom", 'l' => $m, 'p' => (!$tri_promo ? $promo : null), 'b' => $broken);
} else {
- $membres[0][] = Array('l' => $mem);
+ $membres[0][] = Array('l' => $mem, 'b' => $broken);
}
} else {
$res = XDB::query('SELECT m2.uid,
IF(m2.origine="X", u.prenom, m1.prenom) AS prenom,
IF(m2.origine="X", u.nom, m1.nom) AS nom,
- IF(m2.origine="X", u.promo, "non-X") AS promo
+ IF(m2.origine="X", u.promo, "non-X") AS promo,
+ 0
FROM groupex.membres AS m1
LEFT JOIN groupex.membres AS m2 ON(m1.email=m2.email AND m2.asso_id={?})
LEFT JOIN auth_user_md5 AS u ON(m2.origine = "X" AND m2.uid = u.user_id)
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
function handler_password(&$page)
{
+ global $globals;
+
if (Post::has('response2')) {
require_once 'secure_hash.inc.php';
WHERE user_id={?}', $password,
S::v('uid'));
+ // If GoogleApps is enabled, and the user did choose to use synchronized passwords,
+ // updates the Google Apps password as well.
+ if ($globals->mailstorage->googleapps_domain) {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife'));
+ if ($account->active() && $account->sync_password) {
+ $account->set_password($password);
+ }
+ }
+
$log =& S::v('log');
$log->log('passwd', '');
function handler_tmpPWD(&$page, $certif = null)
{
+ global $globals;
XDB::execute('DELETE FROM perte_pass
WHERE DATE_SUB(NOW(), INTERVAL 380 MINUTE) > created');
$uid = $ligne["uid"];
if (Post::has('response2')) {
$password = Post::v('response2');
- $logger = new CoreLogger($uid);
XDB::query('UPDATE auth_user_md5 SET password={?}
WHERE user_id={?} AND perms IN("admin","user")',
$password, $uid);
XDB::query('DELETE FROM perte_pass WHERE certificat={?}', $certif);
+
+ // If GoogleApps is enabled, and the user did choose to use synchronized passwords,
+ // updates the Google Apps password as well.
+ if ($globals->mailstorage->googleapps_domain) {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount($uid);
+ if ($account->active() && $account->sync_password) {
+ $account->set_password($password);
+ }
+ }
+
+ $logger = new CoreLogger($uid);
$logger->log("passwd","");
$page->changeTpl('platal/tmpPWD.success.tpl');
} else {
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
}
}
} elseif (Env::v('suppr')) {
- XDB::execute('DELETE FROM photo WHERE uid = {?}',
- S::v('uid'));
- XDB::execute('DELETE FROM requests
- WHERE user_id = {?} AND type="photo"',
- S::v('uid'));
+ XDB::execute('DELETE FROM photo
+ WHERE uid = {?}',
+ S::v('uid'));
+ XDB::execute('DELETE FROM requests
+ WHERE user_id = {?} AND type="photo"',
+ S::v('uid'));
+ update_NbValid();
} elseif (Env::v('cancel')) {
- $sql = XDB::query('DELETE FROM requests
- WHERE user_id={?} AND type="photo"',
- S::v('uid'));
+ $sql = XDB::query('DELETE FROM requests
+ WHERE user_id={?} AND type="photo"',
+ S::v('uid'));
+ update_NbValid();
}
- $sql = XDB::query('SELECT COUNT(*) FROM requests
- WHERE user_id={?} AND type="photo"',
+ $sql = XDB::query('SELECT COUNT(*)
+ FROM requests
+ WHERE user_id={?} AND type="photo"',
S::v('uid'));
$page->assign('submited', $sql->fetchOneCell());
$page->assign('has_trombi_x', file_exists($trombi_x));
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
}
}
$current = 0;
+ $success = true;
foreach ($value as $key=>&$adr) {
if (@$adr['current']) {
$current++;
}
}
- if (!$init && $current != 1 && count($value) > 0) {
+ if ($current == 0 && count($value) > 0) {
+ foreach ($value as $key=>&$adr) {
+ $adr['current'] = true;
+ break;
+ }
+ } else if ($current > 1) {
$success = false;
- } else {
- $success = true;
}
foreach ($value as $key=>&$adr) {
$ls = true;
{
parent::__construct($wiz);
$this->settings['addresses'] = new ProfileAddress();
+ $this->watched['addresses'] = true;
}
protected function _fetchData()
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
parent::__construct($wiz);
$this->settings['medals'] = new ProfileDeco();
$this->settings['medals_pub'] = new ProfilePub();
+ $this->watched['medals'] = true;
}
protected function _fetchData()
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->settings['appli1']
= $this->settings['appli2']
= new ProfileAppli();
+ $this->watched= array('nom' => true, 'freetext' => true, 'mobile' => true, 'web' => true,
+ 'appli1' => true, 'appli2' => true, 'nationalite' => true, 'nick' => true);
}
protected function _fetchData()
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
parent::__construct($wiz);
$this->settings['section'] = new ProfileSection();
$this->settings['binets'] = new ProfileGroup('binets', 'user_id', 'binet_id');
+ $this->watched['section'] = $this->watched['binets'] = true;
}
public function _prepare(PlatalPage &$page, $id)
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
parent::__construct($wiz);
$this->settings['cv'] = null;
$this->settings['jobs'] = new ProfileJob();
+ $this->watched['cv'] = $this->watched['jobs'] = true;
}
protected function _fetchData()
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
FROM mentor
WHERE uid = {?}",
S::i('uid'));
- $this->value['expertise'] = $res->fetchOneCell();
+ $this->values['expertise'] = $res->fetchOneCell();
}
protected function _saveData()
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
} else if (@$address['parsevalid']) {
$address = array_merge($address, cut_address(@$address['text']));
$address['checked'] = true;
- $mailer = new PlMailer('geoloc/mail_geoloc.tpl');
+ $mailer = new PlMailer('geoloc/geoloc.mail.tpl');
$mailer->assign('text', get_address_text($address));
$mailer->assign('geoloc', $geotxt);
$mailer->send();
protected $settings = array(); // A set ProfileSetting objects
protected $errors = array(); // A set of boolean with the value check errors
protected $changed = array(); // A set of boolean indicating wether the value has been changed
+ protected $watched = array(); // A set of boolean indicating the fields that are watched
public $orig = array();
public $values = array();
protected function saveData()
{
+ require_once 'notifs.inc.php';
foreach ($this->settings as $field=>&$setting) {
if (!is_null($setting) && $this->changed[$field]) {
$setting->save($this, $field, $this->values[$field]);
}
+ if ($this->changed[$field] && @$this->watched[$field]) {
+ register_profile_update(S::i('uid'), $field);
+ }
}
$this->_saveData();
XDB::execute('REPLACE INTO user_changes
SET user_id = {?}', S::v('uid'));
if (!S::has('suid')) {
- require_once 'notifs.inc.php';
register_watch_op(S::i('uid'), WATCH_FICHE);
}
global $platal;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
"valide, en particulier, il ne peut pas être renvoyé vers lui-même.";
}
$birth = trim(Env::v('naissance'));
- if (!preg_match('/^[0-3][0-9][01][0-9][12][90][0-9][0-9]$/', $birth)) {
+ if (!preg_match('@^[0-3]?\d/[01]?\d/(19|20)?\d{2}$@', $birth)) {
$err[] = "La 'Date de naissance' n'est pas correcte.";
} else {
- $year = (int)substr($birth, 4, 4);
+ $birth = explode('/', $birth, 3);
+ for ($i = 0; $i < 3; $i++)
+ $birth[$i] = intval($birth[$i]);
+ if ($birth[2] < 100) $birth[2] += 1900;
+ $year = $birth[2];
$promo = (int)$sub_state['promo'];
if ($year > $promo - 15 || $year < $promo - 30) {
$err[] = "La 'Date de naissance' n'est pas correcte.";
if (isset($err)) {
$err = join('<br />', $err);
} else {
- $sub_state['naissance'] = sprintf("%s-%s-%s",
- substr($birth,4,4),
- substr($birth,2,2),
- substr($birth,0,2));
+ $sub_state['naissance'] = sprintf("%04d-%02d-%02d",
+ intval($birth[2]), intval($birth[1]), intval($birth[0]));
if ($sub_state['naissance_ini'] != '0000-00-00' && $sub_state['naissance'] != $sub_state['naissance_ini']) {
$alert .= "Date de naissance incorrecte à l'inscription - ";
}
require_once('user.func.inc.php');
user_reindex($uid);
+ // update number of subscribers (perms has changed)
+ update_NbIns();
+
if (!start_connexion($uid, false)) {
return PL_FORBIDDEN;
}
/************* envoi d'un mail au démarcheur ***************/
/***********************************************************/
$res = XDB::iterRow(
- "SELECT DISTINCT sa.alias, IF(s.nom_usage,s.nom_usage,s.nom) AS nom,
- s.prenom, FIND_IN_SET('femme', s.flags) AS femme
+ "SELECT sa.alias, IF(s.nom_usage,s.nom_usage,s.nom) AS nom,
+ s.prenom, FIND_IN_SET('femme', s.flags) AS femme,
+ GROUP_CONCAT(m.email) AS mails, MAX(m.last) AS dateDernier
FROM register_marketing AS m
INNER JOIN auth_user_md5 AS s ON ( m.sender = s.user_id )
INNER JOIN aliases AS sa ON ( sa.id = m.sender
AND FIND_IN_SET('bestalias', sa.flags) )
- WHERE m.uid = {?}", $uid);
+ WHERE m.uid = {?}
+ GROUP BY m.sender", $uid);
XDB::execute("UPDATE register_mstats SET success=NOW() WHERE uid={?}", $uid);
- while (list($salias, $snom, $sprenom, $sfemme) = $res->next()) {
+ $market = array();
+ while (list($salias, $snom, $sprenom, $sfemme, $mails, $dateDernier) = $res->next()) {
+ $market[] = " - par $snom $sprenom sur $mails (le plus récemment le $dateDernier)";
$mymail = new PlMailer();
$mymail->setSubject("$prenom $nom s'est inscrit à Polytechnique.org !");
$mymail->setFrom('"Marketing Polytechnique.org" <register@' . $globals->mail->domain . '>');
. " - email : $email\n"
. " - sexe : $femme\n"
. " - ip : {$logger->ip} ({$logger->host})\n"
- . ($logger->proxy_ip ? " - proxy : {$logger->proxy_ip} ({$logger->proxy_host})\n" : "");
+ . ($logger->proxy_ip ? " - proxy : {$logger->proxy_ip} ({$logger->proxy_host})\n" : "")
+ . "\n\n"
+ . "Les marketings suivants avaient été effectués :\n"
+ . implode("\n", $market);
$mymail->setTxtBody($msg);
$mymail->send();
}
function handler_success(&$page)
{
+ global $globals;
$page->changeTpl('register/success.tpl');
$_SESSION['sub_state'] = array('step' => 5);
WHERE user_id={?}', $password,
S::v('uid'));
+ // If GoogleApps is enabled, and the user did choose to use synchronized passwords,
+ // and if the (stupid) user has decided to user /register/success another time,
+ // updates the Google Apps password as well.
+ if ($globals->mailstorage->googleapps_domain) {
+ require_once 'googleapps.inc.php';
+ $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife'));
+ if ($account->active() && $account->sync_password) {
+ $account->set_password($password);
+ }
+ }
+
$log = S::v('log');
$log->log('passwd', '');
$client->subscribe($sub);
}
}
+ if (Post::v('imap')) {
+ require_once 'emails.inc.php';
+ $storage = new MailStorageIMAP(S::v('uid'));
+ $storage->enable();
+ }
pl_redirect('profile/edit');
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if (!S::logged() && $nb_tot > $globals->search->public_max) {
new ThrowError('Votre recherche a généré trop de résultats pour un affichage public.');
} elseif ($nb_tot > $globals->search->private_max) {
- new ThrowError('Recherche trop générale');
+ new ThrowError('Recherche trop générale. Une <a href="search/adv">recherche avancée</a> permet de préciser la recherche.');
} elseif (empty($nb_tot)) {
- new ThrowError('il n\'existe personne correspondant à ces critères dans la base !');
+ new ThrowError('Il n\'existe personne correspondant à ces critères dans la base !');
}
} else {
$page->assign('formulaire',1);
$nb_tot = $view->count();
if ($nb_tot > $globals->search->private_max) {
$this->form_prepare();
- new ThrowError('Recherche trop générale');
+ new ThrowError('Recherche trop générale.');
}
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$where[] = 'ems.email = ' . XDB::escape($this->email);
}
if (!empty($this->ip)) {
- $ip = XDB::escape($this->ip);
- $where[] = "( ls.ip = $ip OR ls.forward_ip = $ip )";
+ $ip = ip_to_uint($this->ip);
+ $where[] = "( ls.ip = $ip OR ls.forward_ip = $ip ) AND ls.suid = 0";
}
return join(" AND ", $where);
{
$this->fields = $_fields;
$this->and = $_and;
+ foreach ($this->fields as $key=>&$field) {
+ if (is_null($field)) {
+ unset($this->fields[$key]);
+ }
+ }
}
// }}}
{
$b = true;
for ($i=0 ; $b && $i<count($this->fields) ; $i++) {
- $b = $b && $this->fields[$i]->too_large();
+ if (!is_null($this->fields[$i])) {
+ $b = $b && $this->fields[$i]->too_large();
+ }
}
return $b;
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$womanField = new RefSField('woman',array('FIND_IN_SET(\'femme\',u.flags)+1'),'','','');
$subscriberField = new RefSField('subscriber',array('!(u.perms IN (\'admin\',\'user\'))+1'),'','','');
$aliveField = new RefSField('alive',array('(u.deces!=0)+1'),'','','');
+ if (Env::v('only_referent') == 'on') {
+ $referentField = new RefSField('only_referent', array('"on"'), 'mentor', 'mt', 'mt.expertise != "" AND mt.uid=u.user_id');
+ } else {
+ $referentField = null;
+ }
if (!Env::i('cityid')) {
$townField = new RefSField('city',array('ac.city'),'adresses','ac',getadr_join('ac'),false);
return array(
$nameField, $firstnameField, $nicknameField, $promo1Field,
- $promo2Field, $womanField, $subscriberField, $aliveField,
+ $promo2Field, $womanField, $subscriberField, $aliveField, $referentField,
$townField, $countryField, $regionField, $mapField, $entrepriseField,
$posteField, $secteurField, $cvField, $natField, $binetField,
$groupexField, $sectionField, $schoolField, $diplomaField,
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
".(-($jours+1)).") AS jour,
COUNT(user_id) AS nb
FROM auth_user_md5
- WHERE perms IN ('admin','user')
+ WHERE perms IN ('admin','user') AND deces = 0
GROUP BY jour");
//genere des donnees compatibles avec GNUPLOT
{
if ($promo == 'all') {
// date de départ
- $depart = 1920;
+ $depart = 1930;
//recupere le nombre d'inscriptions par jour sur la plage concernée
$res = XDB::iterRow(
set xr [$depart:$fin]
set yr [0:100]
-set title "Nombre d'inscrits par promotion depuis $depart."
+set title "Proportion d'inscrits par promotion depuis $depart, en %."
plot "-" using 1:2 title 'inscrits' with boxes;
{$inscrits}
//nombre de jours sur le graph
$jours = 365;
define('DUREEJOUR',24*3600);
- $res = XDB::query("SELECT min(TO_DAYS(date_ins)-TO_DAYS(now()))
- FROM auth_user_md5
- WHERE promo = {?}
- AND perms IN ('admin', 'user')",
- $promo);
+ $res = XDB::query(
+ "SELECT min(TO_DAYS(date_ins)-TO_DAYS(now()))
+ FROM auth_user_md5
+ WHERE promo = {?} AND perms IN ('admin', 'user') AND deces = 0",
+ $promo);
$jours = -$res->fetchOneCell();
//recupere le nombre d'inscriptions par jour sur la plage concernée
".(-($jours+1)).") AS jour,
COUNT(user_id) AS nb
FROM auth_user_md5
- WHERE promo = {?} AND perms IN ('admin','user')
+ WHERE promo = {?} AND perms IN ('admin','user') AND deces = 0
GROUP BY jour", $promo);
//genere des donnees compatibles avec GNUPLOT
$res = XDB::iterRow(
"SELECT promo,COUNT(*)
FROM auth_user_md5
- WHERE promo > 1900 AND perms IN ('admin','user')
+ WHERE promo > 1900 AND perms IN ('admin','user') AND deces = 0
GROUP BY promo
ORDER BY promo");
$max=0; $min=3000;
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->show_error($page, "", 'survey/edit', $errors);
} else {
if (S::has('survey_id')) {
- $this->show_confirm($page, "Veuillez confirmer l'enregistrement des modifications apportées à ce sondage", 'edit', array('action' => 'valid'));
+ $this->show_confirm($page, "Veuillez confirmer l'enregistrement des modifications apportées à ce sondage.", 'edit', array('action' => 'valid'));
} else {
$this->show_confirm($page, "Veuillez confirmer l'envoi de cette proposition de sondage.", 'edit', array('action' => 'valid'));
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
XDB::execute("DELETE FROM requests
WHERE type = 'paiements' AND data LIKE {?}",
PayReq::same_event($eid, $globals->asso('id')));
+ update_NbValid();
}
if ($action == 'archive') {
XDB::execute(
"DELETE FROM groupex.evenements_participants
WHERE eid = {?} AND uid = {?} AND item_id = {?}",
- $eid, S::v("uid"), $j);
+ $eid, S::v("uid"), $j);
$updated = $eid;
}
$total += $nb;
$page->assign('admin', $admin);
$page->assign('moments', $evt['moments']);
$page->assign('money', $evt['money']);
+ $page->assign('telepayment', $evt['paiement_id']);
$page->assign('tout', !Env::v('item_id', false));
}
if (Post::v('intitule')) {
require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
- $short_name = event_change_shortname($page, $infos['short_name'],
+ $short_name = event_change_shortname($page, $eid,
+ $infos['short_name'],
Env::v('short_name', ''));
if ($short_name != Env::v('short_name')) {
$error = true;
GROUP BY uid",
$member['uid'], $evt['eid']);
$u = $res->fetchOneAssoc();
- $u = $u['cnt'] ? null : $u['nb'];
+ $u = $u['cnt'] ? $u['nb'] : null;
subscribe_lists_event($u, $member['uid'], $evt);
}
$evt = get_event_detail($eid, $item_id);
}
- $page->assign('evt', $evt);
+ $page->assign_by_ref('evt', $evt);
$page->assign('tout', is_null($item_id));
if (count($evt['moments'])) {
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
// }}}
// {{{ function get_event_participants()
-function get_event_participants($evt, $item_id, $tri, $limit = '') {
+function get_event_participants(&$evt, $item_id, $tri, $limit = '') {
global $globals;
if (Env::has('initiale')) {
$tab = array();
$user = 0;
+ $evt['adminpaid'] = 0;
+ $evt['telepaid'] = 0;
+ $evt['topay'] = 0;
+ $evt['paid'] = 0;
while ($u = $res->next()) {
if ($u['nb'] == 0) {
continue;
$pay_id, $u['uid']);
$montants = $res_->fetchColumn();
foreach ($montants as $m) {
- $p = strtr(substr($m, 0, strpos($m, "EUR")), ",", ".");
- $u['paid'] += trim($p);
+ $p = strtr(substr($m, 0, strpos($m, "EUR")), ",", ".");
+ $u['paid'] += trim($p);
}
}
$u['telepayment'] = $u['paid'] - $u['adminpaid'];
$u['montant'] += $i['montant']*$i['nb'];
}
$tab[] = $u;
+ $evt['telepaid'] += $u['telepayment'];
+ $evt['adminpaid'] += $u['adminpaid'];
+ $evt['paid'] += $u['paid'];
+ $evt['topay'] += $u['montant'];
}
return $tab;
}
$participant_list = $evt['participant_list'];
$absent_list = $evt['absent_list'];
- $email = get_user_forlife($uid);
+ $email = get_user_forlife($uid, '_silent_user_callback');
if ($email) {
$email .= '@'.$globals->mail->domain;
}
// }}}
-function event_change_shortname(&$page, $old, $new)
+function event_change_shortname(&$page, $eid, $old, $new)
{
global $globals;
LEFT JOIN groupex.membres AS m ON (ep.uid = m.uid)
LEFT JOIN auth_user_md5 AS u ON (u.user_id = ep.uid)
LEFT JOIN aliases AS a ON (a.id = ep.uid AND a.type = 'a_vie')
- WHERE ep.eid = {?}
+ WHERE ep.eid = {?} AND ep.nb > 0
GROUP BY ep.uid)",
$lastid, '@'.$globals->mail->domain, $eid);
XDB::execute("INSERT INTO virtual_redirect (
SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
FROM groupex.membres AS m
- LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid)
+ LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
LEFT JOIN auth_user_md5 AS u ON (u.user_id = m.uid)
LEFT JOIN aliases AS a ON (a.id = m.uid AND a.type = 'a_vie')
WHERE m.asso_id = {?} AND ep.uid IS NULL
GROUP BY m.uid)",
- $lastid, "@".$globals->mail->domain, $globals->asso('id'));
+ $lastid, "@".$globals->mail->domain, $eid, $globals->asso('id'));
return $new;
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
'%grp/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS),
'%grp/announce/new' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'),
'%grp/announce/edit' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'),
+ '%grp/announce/photo' => $this->make_hook('photo_announce', AUTH_PUBLIC),
'%grp/admin/announces' => $this->make_hook('admin_announce', AUTH_MDP, 'groupadmin'),
);
}
Env::i('unread'), S::i('uid'));
pl_redirect("#art" . Env::i('unread'));
}
- $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, l.alias AS forlife
+ $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, l.alias AS forlife,
+ FIND_IN_SET('photo', a.flags) AS photo
FROM groupex.announces AS a
INNER JOIN auth_user_md5 AS u USING(user_id)
INNER JOIN aliases AS l ON (u.user_id = l.id AND l.type = 'a_vie')
S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo'));
$page->assign('article_index', $index);
} else {
- $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo
+ $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, FIND_IN_SET('photo', a.flags) AS photo
FROM groupex.announces AS a
INNER JOIN auth_user_md5 AS u USING(user_id)
WHERE asso_id = {?} AND peremption >= CURRENT_DATE()
if (!S::has('core_rss_hash')) {
$page->setRssLink("Polytechnique.net :: {$globals->asso("nom")} :: News publiques",
- "rss/rss.xml");
+ $platal->ns . "rss/rss.xml");
} else {
$page->setRssLink("Polytechnique.net :: {$globals->asso("nom")} :: News",
- 'rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml');
+ $platal->ns . 'rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml');
}
$page->assign('articles', $arts);
if (!is_null($u) && may_update()) {
$page->assign('u', $u);
- $res = XDB::query("SELECT nom, prenom, promo, user_id
- FROM auth_user_md5 AS u
- INNER JOIN aliases AS al ON (al.id = u.user_id
- AND al.type != 'liste')
- WHERE al.alias = {?}", $u);
+ $res = XDB::query("SELECT u.nom, u.prenom, u.promo, u.user_id, FIND_IN_SET('femme', u.flags)
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS al ON (al.id = u.user_id AND al.type != 'liste')
+ WHERE al.alias = {?}", $u);
- if (list($nom, $prenom, $promo, $uid) = $res->fetchOneRow()) {
+ if (list($nom, $prenom, $promo, $uid, $sexe) = $res->fetchOneRow()) {
$res = XDB::query("SELECT COUNT(*)
- FROM groupex.membres AS m
- INNER JOIN aliases AS a ON (m.uid = a.id
- AND a.type != 'homonyme')
- WHERE a.alias = {?} AND m.asso_id = {?}",
- $u, $globals->asso('id'));
+ FROM groupex.membres AS m
+ INNER JOIN aliases AS a ON (m.uid = a.id AND a.type != 'homonyme')
+ WHERE a.alias = {?} AND m.asso_id = {?}",
+ $u, $globals->asso('id'));
$n = $res->fetchOneCell();
if ($n) {
$page->kill("$prenom $nom est déjà membre du groupe !");
}
elseif (Env::has('accept'))
{
- XDB::execute("INSERT INTO groupex.membres
- VALUES ({?}, {?}, 'membre', 'X', NULL, NULL, NULL, NULL, NULL)",
+ XDB::execute("INSERT INTO groupex.membres (asso_id, uid)
+ VALUES ({?}, {?})",
$globals->asso('id'), $uid);
$mailer = new PlMailer();
$mailer->addTo("$u@polytechnique.org");
$mailer->setFrom('"'.S::v('prenom').' '.S::v('nom')
.'" <'.S::v('forlife').'@polytechnique.org>');
$mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription');
- $message = "Cher Camarade,\n"
+ $message = ($sexe ? 'Chère' : 'Cher') . " Camarade,\n"
. "\n"
. " Suite à ta demande d'adhésion à ".$globals->asso('nom').",\n"
. "j'ai le plaisir de t'annoncer que ton inscription a été validée !\n"
. "{$_SESSION["prenom"]} {$_SESSION["nom"]}.";
$mailer->setTxtBody($message);
$mailer->send();
- $page->kill("$prenom $nom a bien été inscrit");
+ $page->kill("$prenom $nom a bien été inscrit" . ($sexe ? 'e' : '') . ".");
}
elseif (Env::has('refuse'))
{
break;
}
}
- pl_redirect("");
+ http_redirect($_SERVER['HTTP_REFERER']);
}
function handler_admin_annuaire(&$page)
WHERE a.alias={?}', $globals->asso('id'), $forlife);
pl_redirect("member/$forlife");
} else {
- $page->trig($email." n'est pas un alias polytechnique.org valide");
+ $page->trig($email." n'est pas un alias polytechnique.org valide.");
}
} else {
require_once 'xorg.misc.inc.php';
if ($uid) {
$rss = XDB::iterator("SELECT a.id, a.titre, a.texte, a.contacts, a.create_date,
- IF(u2.nom_usage != '', u2.nom_usage, u2.nom) AS nom, u2.prenom, u2.promo
+ IF(u2.nom_usage != '', u2.nom_usage, u2.nom) AS nom, u2.prenom, u2.promo,
+ FIND_IN_SET('photo', a.flags) AS photo
FROM auth_user_md5 AS u
INNER JOIN groupex.announces AS a ON ( (a.promo_min = 0 OR a.promo_min <= u.promo)
AND (a.promo_max = 0 OR a.promo_max <= u.promo))
$page->assign('rss', $rss);
}
+ private function upload_image(PlatalPage &$page, PlUpload &$upload)
+ {
+ if (@!$_FILES['image']['tmp_name'] && !Env::v('image_url')) {
+ return true;
+ }
+ if (!$upload->upload($_FILES['image']) && !$upload->download(Env::v('image_url'))) {
+ $page->trig('Impossible de télécharger l\'image');
+ return false;
+ } elseif (!$upload->isType('image')) {
+ $page->trig('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.');
+ $upload->rm();
+ return false;
+ } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) {
+ $page->trig('Impossible de retraiter l\'image');
+ return false;
+ }
+ return true;
+ }
+
+ function handler_photo_announce(&$page, $eid = null) {
+ if ($eid) {
+ $res = XDB::query("SELECT * FROM groupex.announces_photo WHERE eid = {?}", $eid);
+ if ($res->numRows()) {
+ $photo = $res->fetchOneAssoc();
+ header('Content-Type: image/' . $photo['attachmime']);
+ echo $photo['attach'];
+ exit;
+ }
+ } else {
+ $upload = new PlUpload(S::v('forlife'), 'xnetannounce');
+ if ($upload->exists() && $upload->isType('image')) {
+ header('Content-Type: ' . $upload->contentType());
+ echo $upload->getContents();
+ exit;
+ }
+ }
+ global $globals;
+ header('Content-Type: image/png');
+ echo file_get_contents($globals->spoolroot . '/htdocs/images/logo.png');
+ exit;
+ }
+
function handler_edit_announce(&$page, $aid = null)
{
global $globals, $platal;
$page->assign('new', is_null($aid));
$art = array();
- if (Post::v('valid') == 'Visualiser' || Post::v('valid') == 'Enregistrer') {
+ if (Post::v('valid') == 'Visualiser' || Post::v('valid') == 'Enregistrer'
+ || Post::v('valid') == 'Supprimer l\'image' || Post::v('valid') == 'Pas d\'image') {
if (!is_null($aid)) {
$art['id'] = $aid;
}
$art['xorg'] = Post::has('xorg');
$art['nl'] = Post::has('nl');
$art['event'] = Post::v('event');
+ $upload = new PlUpload(S::v('forlife'), 'xnetannounce');
+ $this->upload_image($page, $upload);
$art['contact_html'] = $art['contacts'];
if ($art['event']) {
$page->trig("L'article doit avoir un titre et un contenu");
Post::kill('valid');
}
+
+ if (Post::v('valid') == 'Supprimer l\'image') {
+ $upload->rm();
+ Post::kill('valid');
+ }
+ $art['photo'] = $upload->exists() || Post::i('photo');
+ if (Post::v('valid') == 'Pas d\'image' && !is_null($aid)) {
+ XDB::query("DELETE FROM groupex.announces_photo WHERE eid = {?}", $aid);
+ $upload->rm();
+ Post::kill('valid');
+ $art['photo'] = false;
+ }
}
if (Post::v('valid') == 'Enregistrer') {
$promo_min = ($art['public'] ? 0 : $art['promo_min']);
$promo_max = ($art['public'] ? 0 : $art['promo_max']);
+ $flags = array();
+ if ($art['public']) {
+ $flags[] = 'public';
+ }
+ if ($art['photo']) {
+ $flags[] = 'photo';
+ }
+ $flags = implode(',', $flags);
if (is_null($aid)) {
$fulltext = $art['texte'];
if (!empty($art['contact_html'])) {
$fulltext .= "\n\n'''Contacts :'''\\\\\n" . $art['contact_html'];
}
- $post = null;
+ $post = null;/*
if ($globals->asso('forum')) {
require_once 'banana/forum.inc.php';
$banana = new ForumsBanana(S::v('forlife'));
$post = $banana->post($globals->asso('forum'), null,
$art['titre'], MiniWiki::wikiToText($fulltext, false, 0, 80));
- }
+ }*/
XDB::query("INSERT INTO groupex.announces
(user_id, asso_id, create_date, titre, texte, contacts,
peremption, promo_min, promo_max, flags, post_id)
VALUES ({?}, {?}, NOW(), {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})",
S::i('uid'), $globals->asso('id'), $art['titre'], $art['texte'], $art['contact_html'],
- $art['peremption'], $promo_min, $promo_max, $art['public'] ? 'public' : '', $post);
+ $art['peremption'], $promo_min, $promo_max, $flags, $post);
$aid = XDB::insertId();
+ if ($art['photo']) {
+ list($imgx, $imgy, $imgtype) = $upload->imageInfo();
+ XDB::execute("INSERT INTO groupex.announces_photo
+ SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}",
+ $aid, $imgtype, $imgx, $imgy, $upload->getContents());
+ }
if ($art['xorg']) {
require_once('validations.inc.php');
$article = new EvtReq("[{$globals->asso('nom')}] " . $art['titre'], $fulltext,
- $art['promo_min'], $art['promo_max'], $art['peremption'], "", S::v('uid'));
+ $art['promo_min'], $art['promo_max'], $art['peremption'], "", S::v('uid'),
+ $upload);
$article->submit();
$page->trig("L'affichage sur la page d'accueil de Polytechnique.org est en attente de validation");
+ } else if ($upload && $upload->exists()) {
+ $upload->rm();
}
if ($art['nl']) {
require_once('validations.inc.php');
promo_min={?}, promo_max={?}, flags={?}
WHERE id={?} AND asso_id={?}",
$art['titre'], $art['texte'], $art['contacts'], $art['peremption'],
- $promo_min, $promo_max, $art['public'] ? 'public' : '',
+ $promo_min, $promo_max, $flags,
$art['id'], $globals->asso('id'));
+ if ($art['photo'] && $upload->exists()) {
+ list($imgx, $imgy, $imgtype) = $upload->imageInfo();
+ XDB::execute("REPLACE INTO groupex.announces_photo
+ SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}",
+ $aid, $imgtype, $imgx, $imgy, $upload->getContents());
+ $upload->rm();
+ }
}
}
if (Post::v('valid') == 'Enregistrer' || Post::v('valid') == 'Annuler') {
if (empty($art) && !is_null($aid)) {
$res = XDB::query("SELECT a.*, u.nom, u.prenom, u.promo, l.alias AS forlife,
- FIND_IN_SET('public', a.flags) AS public
+ FIND_IN_SET('public', a.flags) AS public,
+ FIND_IN_SET('photo', a.flags) AS photo
FROM groupex.announces AS a
INNER JOIN auth_user_md5 AS u USING(user_id)
INNER JOIN aliases AS l ON (l.id = u.user_id AND l.type = 'a_vie')
$art['contact_html'] = @MiniWiki::WikiToHTML($art['contact_html']);
$page->assign('art', $art);
+ $page->assign_by_ref('upload', $upload);
}
function handler_admin_announce(&$page)
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
."<a href='mailto:support@m4x.org'>support@m4x.org</a>");
return;
}
- XDB::execute('INSERT INTO x4dat.virtual (alias,type)
- VALUES({?},{?})', $liste.'@'.$dom, 'list');
- XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect)
- VALUES ({?}, {?})', XDB::insertId(),
- "$red+post@listes.polytechnique.org");
- XDB::execute('INSERT INTO x4dat.virtual (alias,type)
- VALUES({?},{?})', $liste.'-owner@'.$dom, 'list');
- XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect)
- VALUES ({?}, {?})', XDB::insertId(),
- "$red+owner@listes.polytechnique.org");
- XDB::execute('INSERT INTO x4dat.virtual (alias,type)
- VALUES({?},{?})', $liste.'-admin@'.$dom, 'list');
- XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect)
- VALUES ({?}, {?})', XDB::insertId(),
- "$red+admin@listes.polytechnique.org");
- XDB::execute('INSERT INTO x4dat.virtual (alias,type)
- VALUES({?},{?})', $liste.'-bounces@'.$dom, 'list');
- XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect)
- VALUES ({?}, {?})', XDB::insertId(),
- "$red+bounces@listes.polytechnique.org");
-
+ foreach (array('', 'owner', 'admin', 'bounces', 'unsubscribe') as $app) {
+ $mdir = $app == '' ? '+post' : '+' . $app;
+ $app = '-' . $app;
+ XDB::execute('INSERT INTO x4dat.virtual (alias,type)
+ VALUES({?},{?})', $liste. $app . '@'.$dom, 'list');
+ XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect)
+ VALUES ({?}, {?})', XDB::insertId(),
+ $red . $mdir . '@listes.polytechnique.org');
+ }
pl_redirect('lists/admin/'.$liste);
}
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
{
extract($compiler->_parse_attrs($tag_attrs));
+ $alt = 'alt=""';
+
if (isset($title)) {
- $title = 'title="'. pl_entities(trim($title, '\'"'), ENT_QUOTES).'" ';
+ $title = pl_entities(trim($title, '\'"'), ENT_QUOTES);
+ $alt = 'alt="'.$title.'"';
+ $title = 'title="'. $title.'" ';
}
$name = pl_entities(trim($name, '\'"'), ENT_QUOTES);
$name = $globals->baseurl . '/' . $name;
}
- return "?><img src='$name' alt='' $title /><?php";
+ return "?><img src='$name' $alt $title /><?php";
}
/* vim: set expandtab enc=utf-8: */
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
if ($param['titre'])
{
if ($param['titre_div'])
- $txthtml .= "<div class='titre'>".$param['titre'].$map."</div>\n";
+ $txthtml .= "<div class='titre'>".pl_entity_decode($param['titre'])." ".$map."</div>\n";
else
- $txthtml .= "<em>".$param['titre']."</em>".$map."<br />\n";
+ $txthtml .= "<em>".pl_entity_decode($param['titre'])." </em>".$map."<br />\n";
}
foreach ($lines as $line)
{
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-
-function smarty_insert_getNbNotifs($params, &$smarty)
+function smarty_modifier_number_format($string, $decimal = 0)
{
- if(S::logged()) {
- require_once('notifs.inc.php');
- return getNbNotifs();
- }
+ return number_format($string, $decimal, ',', '.');
}
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-
-/*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: insert.mkStats.php
- * Type: insert
- * Name: mkStats
- * Purpose:
- * -------------------------------------------------------------
- */
-function smarty_insert_mkStats($params, &$smarty)
+function smarty_modifier_uint_to_ip($string)
{
- $res = XDB::query('select count(*) from requests');
- $cnt = $res->fetchOneCell();
- return ($cnt ? $cnt : '-');
+ return uint_to_ip($string);
}
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<h1>Décédés encore actifs</h1>
+
+<p>
+ Liste des polytechniciens décédés, mais dont le compte est encore actif
+ (veufs/veuves, ...).
+</p>
+
+<table class="bicol">
+ <tr>
+ <th>Promo</th>
+ <th colspan="2">État civil</th>
+ <th>Décès</th>
+ <th>Dernière activité</th>
+ </tr>
+ {iterate from=$dead item=d}
+ <tr class="{cycle values="impair,pair"}">
+ <td style="text-align: center">{$d.promo}</td>
+ <td>
+ <a href="profile/{$d.alias}" class="popup2">{icon name=user_suit title='Afficher la fiche'}</a>
+ <a href="http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id={$d.matricule_ax}">{*
+ *}{icon name=user_gray title="fiche AX"}</a>
+ <a href="admin/user/{$d.alias}">{icon name=wrench title='Administrer user'}</a>
+ </td>
+ <td>{$d.prenom} {$d.nom}</td>
+ <td style="text-align: center">{$d.deces}</td>
+ <td style="text-align: center">
+ {if $d.last gt $d.deces}<strong>{$d.last}</strong>{elseif $d.last}{$d.last}{else}-{/if}
+ </td>
+ </tr>
+ {/iterate}
+</table>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</td>
<td><input type="submit" value="<" name="sub01" /></td>
<td>
- Promotion :
+ Promotion :
<input type="text" name="promo" value="{$promo}" size="4" maxlength="4" />
<input type="submit" value="GO" />
</td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>Regexps pour les détections de bounces</h1>
<p>
-Rappel sur les niveaux :
+Rappel sur les niveaux :
</p>
<ul>
<li>0: IGNORE == ignorer le bounce</li>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr><th>Système</th></tr>
<tr class="impair">
<td>
- <strong>Postfix :</strong>
+ <strong>Postfix :</strong>
<a href="admin/postfix/blacklist">Blacklist</a>
|
<a href="admin/postfix/whitelist">Whitelist</a>
</tr>
<tr class="pair">
<td>
- <strong>Sécurité :</strong>
+ <strong>Sécurité :</strong>
<a href="admin/logger">Logs des sessions</a>
|
<a href="admin/logger/actions">Actions</a>
<tr><th>Contenu du site</th></tr>
<tr class="impair">
<td>
- <strong>Utilisateurs :</strong>
+ <strong>Utilisateurs :</strong>
<a href="admin/promo">Ajout</a>
|
<a href="admin/user">Edit/Su/Logs</a>
|
<a href="admin/deaths">Décès</a>
|
+ <a href="admin/dead-but-active">Décédés actifs</a>
+ |
<a href="admin/synchro_ax">Synchro AX</a>
</td>
</tr>
<tr class="pair">
<td>
- <strong>Infos dynamiques :</strong>
+ <strong>Infos dynamiques :</strong>
<a href="admin/downtime">Coupures</a>
|
<a href="admin/mx/broken">MX défaillants</a>
</tr>
<tr class="impair">
<td>
- <strong>Champs profil :</strong>
+ <strong>Champs profil :</strong>
<a href="admin/formations">Formations</a>
|
<a href="admin/binets">Binets</a>
</tr>
<tr class="pair">
<td>
- <strong>Newsletter :</strong>
+ <strong>Newsletter :</strong>
<a href="admin/newsletter">Liste</a>
|
<a href="admin/newsletter/categories">Catégories</a>
</tr>
<tr class="impair">
<td>
- <strong>Administrer :</strong>
+ <strong>Administrer :</strong>
<a href="admin/auth-groupes-x">Auth Groupes X</a>
|
<a href="admin/lists">Listes</a>
</tr>
<tr class="pair">
<td>
- <strong>Valider demandes :</strong>
+ <strong>Valider demandes :</strong>
<a href="admin/validate">Valider</a>
|
<a href="admin/events">Événements</a>
</tr>
<tr class="impair">
<td>
- <strong>Trésorerie :</strong>
+ <strong>Trésorerie :</strong>
<a href="admin/payments">Paiements</a>
</td>
</tr>
<tr class="pair">
<td>
- <strong>Géoloc :</strong>
+ <strong>Géoloc :</strong>
<a href="admin/geoloc">Synchro</a>
|
<a href="admin/geoloc/dynamap">Dynamap</a>
</tr>
<tr class="impair">
<td>
- <strong>Wiki :</strong>
+ <strong>Wiki :</strong>
<a href="admin/wiki">Pages et permissions</a>
</td>
</tr>
<tr class="pair">
<td>
- <strong>AX-Letter :</strong>
+ <strong>AX-Letter :</strong>
<a href="ax/edit">Edition</a>
|
<a href="admin/axletter">Inscriptions et Permissions</a>
</tr>
<tr class="impair">
<td>
- <strong>Sondages :</strong>
+ <strong>Sondages :</strong>
<a href="survey/admin">Gestion des sondages</a>
</td>
</tr>
+ <tr class="pair">
+ <td>
+ <strong>Forums :</strong>
+ <a href="admin/forums">Gestion des mises au ban</a>
+ </td>
+ </tr>
</table>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $session.forward_ip}
<tr class="pair">
<td class="titre">Hôte</td>
- <td><em>{$session.forward_host}</em> <tt>IP: {$session.forward_ip}</tt></td>
+ <td><em>{$session.forward_host}</em> <tt>IP: {$session.forward_ip|uint_to_ip}</tt></td>
</tr>
<tr class="pair">
<td class="titre">Proxy</td>
- <td><em>{$session.host}</em> <tt>IP: {$session.ip}</tt></td>
+ <td><em>{$session.host}</em> <tt>IP: {$session.ip|uint_to_ip}</tt></td>
</tr>
{else}
<tr class="pair">
<td class="titre">{if $session.flags}Proxy{else}Hôte{/if}</td>
- <td><em>{$session.host}</em> <tt>IP: {$session.ip}</tt></td>
+ <td><em>{$session.host}</em> <tt>IP: {$session.ip|uint_to_ip}</tt></td>
</tr>
{/if}
<tr class="impair">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<table class="tinybicol">
<tr>
<td class="center">
- <strong>Promotion :</strong>
+ <strong>Promotion :</strong>
<input type="text" size="4" name="promo" value="{$promo}" /><br />
<input type="submit" name="valid_promo" value="Ajouter des membres" />
<input type="submit" name="valid_promo" value="Mettre à jour les matricules AX" />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<strong>ATTENTION ! Cet utilisateur n'a pas accepté la synchronisation</strong>
</div>
{/if}
-<div>Les fiches de cet utilisateur :
+<div>Les fiches de cet utilisateur :
<ul>
<li><a href='profile/{$x.user_id}' class='popup2'>polytechnique.org</a></li>
<li><a href='http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id={$x.matricule_ax}'>polytechniciens.com</a></li>
{if $adr.remove}
Effacer l'adresse {$adr.adrid}.
{else}
- {if $adr.adrid}Modifier l'adresse {$adr.adrid} :{else}Ajouter l'adresse :{/if}
+ {if $adr.adrid}Modifier l'adresse {$adr.adrid} :{else}Ajouter l'adresse :{/if}
{include file='geoloc/address.tpl' address=$adr no_div=1 for="`$x.prenom` `$x.nom`"}
{/if}
</td></tr>
{if $pro.remove}
Effacer l'emploi {$pro.entrid}.
{else}
- {if $pro.entrid || $pro.entrid === 0}Modifier l'emploi {$pro.entrid} :{else}Ajouter l'emploi :{/if}
+ {if $pro.entrid || $pro.entrid === 0}Modifier l'emploi {$pro.entrid} :{else}Ajouter l'emploi :{/if}
{if $pro.entreprise}
<div>
- <em>Entreprise/Organisme : </em> <strong>{$pro.entreprise}</strong>
+ <em>Entreprise/Organisme : </em> <strong>{$pro.entreprise}</strong>
</div>
{/if}
{if $pro.secteur}
<div>
- <em>Secteur : </em>
+ <em>Secteur : </em>
<strong>{$pro.secteur}{if $pro.ss_secteur} ({$pro.ss_secteur}){/if}</strong>
</div>
{/if}
{if $pro.fonction}
<div>
- <em>Fonction : </em> <strong>{$pro.fonction}</strong>
+ <em>Fonction : </em> <strong>{$pro.fonction}</strong>
</div>
{/if}
{if $pro.poste}
<div>
- <em>Poste : </em> <strong>{$pro.poste}</strong>
+ <em>Poste : </em> <strong>{$pro.poste}</strong>
</div>
{/if}
{include file='geoloc/address.tpl' address=$pro no_div=1 for=$pro.entreprise}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{to addr=#to#}
{subject text="INTERVENTION de $user"}
{elseif $mail_part eq 'wiki'}
+{if $deletion}
+L'utilisateur {$user} a été désinscrit.
+{else}
Le profil du camarade {$old.prenom} {$old.nom} ({$old.promo}) a été édité.\\
Les champs suivants ont été changés :
{foreach from=$old item=value key=field}
{/if}
{/foreach}
{/if}
+{/if}
{* vim:set et sw=2 sts=2 sws=2: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if !$smarty.request.login && !$mr.forlife}
<tr class="pair">
<td class="center">
- Il est possible d'entrer ici n'importe quelle adresse mail : redirection, melix, ou alias.
+ Il est possible d'entrer ici n'importe quelle adresse mail : redirection, melix, ou alias.
</td>
</tr>
{/if}
{if $mr}
<p class="smaller">
-Derniére connexion le <strong>{$lastlogin|date_format:"%d %B %Y, %T"}</strong>
+Dernière connexion le <strong>{$lastlogin|date_format:"%d %B %Y, %T"}</strong>
depuis <strong>{$host}</strong>
</p>
document.forms.fwds.clean_fwd.value = fwd;
document.forms.fwds.submit();
}
+function ban_write()
+{
+ document.forms.bans.write_perm.value = "!xorg.*";
+}
+function ban_read()
+{
+ document.forms.bans.read_perm.value = "!xorg.*";
+}
+
// ]]>
</script>
{/literal}
<td>
<input type="text" name="naissanceN" size="12" maxlength="10" value="{$mr.naissance}" />
{if $mr.naissance_ini neq '0000-00-00' && $mr.naissance neq $mr.naissance_ini}
- <span class="erreur smaller">({icon name=error}Date de naissance connue : {$mr.naissance_ini})</span>
+ <span class="erreur smaller">({icon name=error}Date de naissance connue : {$mr.naissance_ini})</span>
{elseif $mr.naiss_err}
<span class="erreur smaller">({icon name=error}Date de naissance incohérente)</span>
{/if}
<input type="text" name="promoN" size="4" maxlength="4" value="{$mr.promo}" />
</td>
</tr>
- <tr class "impair">
+ <tr class="impair">
<td class="titre">
Surveillance
</td>
</table>
</form>
-<p>
-<strong>* à ne modifier qu'avec l'accord express de l'utilisateur !!!</strong>
-</p>
+<p><strong>* à ne modifier qu'avec l'accord express de l'utilisateur !!!</strong></p>
+
+<form id="bans" method="post" action="admin/user">
+ <table cellspacing="0" cellpadding="2" class="tinybicol">
+ <tr>
+ <th colspan="4">
+ Permissions sur les forums
+ </th>
+ </tr>
+ <tr class="impair">
+ <td class="titre">
+ Poster
+ </td>
+ <td>
+ <input type="text" name="write_perm" size="32" maxlength="255" value="{$bans.write_perm}" />
+ </td>
+ <td class="action">
+ <a href="javascript:ban_write()">Bannir</a>
+ </td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">
+ Lire
+ </td>
+ <td>
+ <input type="text" name="read_perm" size="32" maxlength="255" value="{$bans.read_perm}" />
+ </td>
+ <td class="action">
+ <a href="javascript:ban_read()">Bannir</a>
+ </td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">
+ Commentaire
+ </td>
+ <td colspan="2">
+ <input type="text" name="comment" size="40" maxlength="255" value="{$bans.comment}" />
+ </td>
+ </tr>
+ <tr class="center">
+ <td colspan="3">
+ <input type="hidden" name="user_id" value="{$mr.user_id}" />
+ <input type="submit" name="b_edit" value="Modifier" />
+ </td>
+ </tr>
+ </table>
+</form>
{javascript name="ajax"}
{test_email forlife=$mr.forlife}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{* 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 *}
{* *}
{**************************************************************************}
+{javascript name="jquery"}
+<script type="text/javascript">//<![CDATA[
+{literal}
+function activateField(name, id, obj) {
+ $("#" + name + "_" + id).show();
+ return true;
+}
+{/literal}
+//]]></script>
+
<h1>Validation</h1>
-
+
{if $vit->total()}
{include file=$valid->formu()}
{if $valid->editor()}
<tr>
+ <th colspan="2">
+ {if $preview_id neq $valid->id()}
+ <div style="float: left">
+ <a href="javascript:activateField('edit', '{$valid->id()}')">{icon name="add"}</a>
+ </div>
+ {/if}
+ Editer
+ </th>
+ </tr>
+ <tr {if $preview_id neq $valid->id()}style="display: none"{/if} id="edit_{$valid->id()}">
<td colspan="2" class="center">
- {if $preview_id == $valid->id()}
- <form enctype="multipart/form-data" action="{$platal->pl_self()}#valid{$valid->id()}" method="post">
+ <form enctype="multipart/form-data" action="{$platal->pl_self(0)}/edit/{$valid->id()}#valid{$valid->id()}" method="post">
<div>
{include file=$valid->editor()}
<input type="hidden" name="uid" value="{$valid->uid}" />
<input type="submit" name="edit" value="Editer" />
</div>
</form>
- {else}
- <span class="smaller">
- <a href="admin/validate/edit/{$valid->id()}#valid{$valid->id()}">{icon name=page_edit}Editer cette demande avant validation</a>
- </span>
- {/if}
</td>
</tr>
{/if}
- <tr><th colspan='2'>Commentaires</th></tr>
+ <tr>
+ <th colspan='2'>
+ {if $valid->comments|@count eq 0}
+ <div style="float: left">
+ <a href="javascript:activateField('comment', '{$valid->id()}')">{icon name="add"}</a>
+ </div>
+ {/if}
+ Commentaires
+ </th>
+ </tr>
{foreach from=$valid->comments item=c}
<tr class="{cycle values="impair,pair"}">
<td class="titre">
<td>{$c[1]|nl2br}</td>
</tr>
{/foreach}
- <tr>
+ <tr {if $valid->comments|@count eq 0}style="display: none"{/if} id="comment_{$valid->id()}">
<td colspan='2' class='center'>
<form action="admin/validate" method="post">
<div>
<td colspan='2' {popup caption="Règles de validation" text=$valid->ruleText()}>
<form action="admin/validate" method="post">
<div>
- Réponse préremplie :
+ Réponse préremplie :
<select onchange="this.form.comm.value=this.value">
<option value=""></option>
{foreach from=$valid->answers() item=automatic_answer}
<a href="admin/validate/answers">{icon name="page_edit" title="Editer les réponses automatiques"}</a>
</div>
<div class='center'>
- Ajouté dans l'email :<br />
+ Ajouté dans l'email :<br />
<textarea rows="5" cols="50" name="comm"></textarea><br />
<input type="hidden" name="uid" value="{$valid->uid}" />
{/if}
<p>
- Afficher seulement les validation suivantes :
+ Afficher seulement les validation suivantes :
</p>
<form action="admin/validate" method="post">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/literal}
<p class="center">
+ <a href="Site/AllRecentChanges?action=rss&user={$smarty.session.forlife}&hash={$smarty.session.core_rss_hash}" style="display:block;float:right" title="Changements">{icon name=feed title='fil rss'}</a>
{icon name=magnifier} <a href="Site/AllRecentChanges">Voir les changements récents</a>
</p>
{$perm.edit}
</td>
<td class="action" style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; height: 20px">
- <a href="admin/wiki/rename/{$cat}.{$page}" onclick="var newname=prompt('Déplacer la page {$cat}.{$page} vers :', '{$cat}.{$page}'); if (!newname) return false; this.href += '/'+newname;">{icon name=book_next title='déplacer'}</a>
+ <a href="admin/wiki/rename/{$cat}.{$page}" onclick="var newname=prompt('Déplacer la page {$cat}.{$page} vers :', '{$cat}.{$page}'); if (!newname) return false; this.href += '/'+newname;">{icon name=book_next title='déplacer'}</a>
<a href="admin/wiki/delete/{$cat}.{$page}" onclick="return confirm('Supprimer la page {$cat}.{$page} ?');">{icon name=cross title='supprimer'}</a>
<input type="checkbox" name="{$cat}/{$page}"/>
</td>
</tr>
<tr class="pair">
<td>
- Attribue les permissions aux pages cochées :
+ Attribue les permissions aux pages cochées :
</td>
<td>
<select name="read">
</form>
<p class="smaller">
- * : les pages marquées d'une astérisque sont actuellement disponibles en cache (accès plus rapide)
+ * : les pages marquées d'une astérisque sont actuellement disponibles en cache (accès plus rapide)
</p>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{/if}
<fieldset>
- <legend>Sujet du mail : <input type="text" name="subject" value="{$subject}" size="60"/></legend>
+ <legend>Sujet du mail : <input type="text" name="subject" value="{$subject}" size="60"/></legend>
<p class="center">
<a href="wiki_help" class="popup3">
{icon name=information title="Syntaxe wiki"} Voir les marqueurs de mise en forme autorisés
</a><br />
- <strong>Titre : </strong><input type="text" name="title" value="{$title}" size="60" /><br />
+ <strong>Titre : </strong><input type="text" name="title" value="{$title}" size="60" /><br />
<textarea name="body" rows="30" cols="78">{$body}</textarea><br />
- <strong>Signature : </strong><input type="text" name="signature" value="{$signature}" size="60" />
+ <strong>Signature : </strong><input type="text" name="signature" value="{$signature}" size="60" />
</p>
</fieldset>
{include file="axletter/letter.tpl"}
</td>
</tr>
-</fieldset>
+</table>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<br />
+{if isset($banana|smarty:nodefaults)}
{$banana|smarty:nodefaults}
+{else}
+{if !$smarty.post.action}
+<p class="normal">
+ Tu peux régler quelques paramètres qui apparaîtront sur les messages lorsque
+ tu posteras sur les forums. Cela ne te permettra pas d'être anonyme, puisque
+ tout le monde pourra remonter à ton identité en regardant ta fiche. L'objectif
+ est simplement de permettre plus de convivialité.
+</p>
+<p class="normal">
+ Tu pourras voir dans les forums les nouveaux messages mis en valeur (en
+ général en gras). Si tu consultes les forums régulièrement, tu peux en avoir
+ assez de voir tout le contenu du forum : la dernière option te permet de
+ n'afficher que les fils de discussion contenant des messages lus.
+</p>
+
+<form action="banana/profile" method="post">
+ <table class="bicol" cellpadding="3" cellspacing="0" summary="Configuration de Banana">
+ <tr>
+ <th colspan="2">Profil Banana</th>
+ </tr>
+ <tr>
+ <td class="titre">Nom</td>
+ <td><input type="text" name="banananame" value="{$nom}" /></td>
+ </tr>
+ <tr>
+ <td class="titre">Adresse électronique</td>
+ <td><input type="text" name="bananamail" value="{$mail}" /></td>
+ </tr>
+ <tr>
+ <td class="titre">Signature</td>
+ <td><textarea name="bananasig" cols="50" rows="4">{$sig}</textarea></td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Affichage des fils de discussion</td>
+ <td>
+ <input type="radio" name="bananadisplay" value="0"
+ {if !$disp}checked="checked"{/if} /> Afficher tous les messages <br />
+ <input type="radio" name="bananadisplay" value="1"
+ {if $disp}checked="checked"{/if} /> Afficher seulement les fils de discussion contenant des messages non lus
+ </td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Mise à jour des messages non lus</td>
+ <td>
+ <input type="radio" name="bananaupdate" value="1"
+ {if $maj}checked="checked"{/if} /> Automatique<br />
+ <input type="radio" name="bananaupdate" value="0"
+ {if !$maj}checked="checked"{/if} /> Manuelle
+ </td>
+ </tr>
+ <tr class="pair">
+ <td class="titre" colspan="2">
+ <input type="checkbox" {if $xface}checked="checked"{/if} name="bananaxface" id="xface" />
+ <label for="xface">Afficher mon X-Face plutôt que ma photo si il est disponible</label>
+ </td>
+ </tr>
+ </table>
+ <div class="center"><input type="submit" name="action" value="Enregistrer" /></div>
+</form>
+{else}
+<p class="normal">
+ Ton profil est enregistré !!!
+</p>
+{/if}
+{/if}
+{if !$it_is_xnet}
<p class="smaller">
{icon name="lightbulb" title="Astuce"}Astuce :
Tu peux également consulter les fora en utilisant un client NNTP tel que
Outlook Express ou Thunderbird.<br />N'hésite pas à <a href="password/smtp?doc=nntp">
consulter la documentation et à activer ton accès</a> pour utiliser ce service.
</p>
+{/if}
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
+++ /dev/null
-{**************************************************************************}
-{* *}
-{* Copyright (C) 2003-2007 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 *}
-{* *}
-{**************************************************************************}
-
-<br />
-
-<table class="cadre_a_onglet" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td>
- <ul id="onglet">
- <li class="actif">Préférences</li>
- <li><a href="banana/subscription">Abonnements</a></li>
- <li><a href="banana">Les Forums</a></li>
- </ul>
- </td>
- </tr>
- <tr>
- <td class="conteneur_tab">
-
-{if !$smarty.post.action}
-
- <p class="normal">
- Tu peux régler quelques paramètres qui apparaîtront sur les messages lorsque
- tu posteras sur les forums. Cela ne te permettra pas d'être anonyme, puisque
- tout le monde pourra remonter à ton identité en regardant ta fiche. L'objectif
- est simplement de permettre plus de convivialité.
- </p>
- <p class="normal">
- Tu pourras voir dans les forums les nouveaux messages mis en valeur (en
- général en gras). Si tu consultes les forums régulièrement, tu peux en avoir
- assez de voir tout le contenu du forum : la dernière option te permet de
- n'afficher que les fils de discussion contenant des messages lus.
- </p>
-
- <form action="banana/profile" method="post">
- <table class="bicol" cellpadding="3" cellspacing="0" summary="Configuration de Banana">
- <tr>
- <th colspan="2">Profil Banana</th>
- </tr>
- <tr>
- <td class="titre">Nom</td>
- <td><input type="text" name="banananame" value="{$nom}" /></td>
- </tr>
- <tr>
- <td class="titre">Adresse électronique</td>
- <td><input type="text" name="bananamail" value="{$mail}" /></td>
- </tr>
- <tr>
- <td class="titre">Signature</td>
- <td><textarea name="bananasig" cols="50" rows="4">{$sig}</textarea></td>
- </tr>
- <tr class="pair">
- <td class="titre">Affichage des fils de discussion</td>
- <td>
- <input type="radio" name="bananadisplay" value="0"
- {if !$disp}checked="checked"{/if} /> Afficher tous
- les messages
- <br />
- <input type="radio" name="bananadisplay" value="1"
- {if $disp}checked="checked"{/if} /> Afficher
- seulement les fils de discussion contenant des messages non lus
- </td>
- </tr>
- <tr class="pair">
- <td class="titre">Mise à jour des messages non lus</td>
- <td>
- <input type="radio" name="bananaupdate" value="1"
- {if $maj}checked="checked"{/if} /> Automatique
- <br />
- <input type="radio" name="bananaupdate" value="0"
- {if !$maj}checked="checked"{/if} /> Manuelle
- </td>
- </tr>
- <tr class="pair">
- <td class="titre" colspan="2">
- <input type="checkbox" {if $xface}checked="checked"{/if} name="bananaxface" id="xface" />
- <label for="xface">Afficher mon X-Face plutôt que ma photo si il est disponible</label>
- </td>
- </tr>
- </table>
- <div class="center"><input type="submit" name="action" value="Enregistrer" /></div>
- </form>
-
-{else}
- <p class="normal">
- Ton profil est enregistré !!!
- </p>
-{/if}
-
- </td>
- </tr>
-</table>
-
-<p class="smaller">
- {icon name="lightbulb" title="Astuce"}Astuce :
- Tu peux également consulter les fora en utilisant un client NNTP tel que
- Outlook Express ou Thunderbird.<br />N'hésite pas à <a href="password/smtp?doc=nntp">
- consulter la documentation et à activer ton accès</a> pour utiliser ce service.
-</p>
-
-
-{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}\r
{* *}\r
-{* Copyright (C) 2003-2007 Polytechnique.org *}\r
+{* Copyright (C) 2003-2008 Polytechnique.org *}\r
{* http://opensource.polytechnique.org/ *}\r
{* *}\r
{* This program is free software; you can redistribute it and/or modify *}\r
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr>
<th colspan="2">
{if $smarty.session.core_rss_hash}
- <a href='carnet/rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml' style="display:block;float:right">
+ <a href="carnet/rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml" style="display:block;float:right" title="Notifications">
{icon name=feed title='fil rss'}
</a>
{else}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</h1>
<div>
-Ajouter la personne suivante à ma liste de contacts :
+Ajouter la personne suivante à ma liste de contacts :
<div style="float: right">
<form id="add_user" action="carnet/contacts" method="post">
<div>
</div>
</div>
<p style="clear: both">
- Tu peux également rajouter des camarades dans tes contacts lors d'une recherche dans l'annuaire :
+ Tu peux également rajouter des camarades dans tes contacts lors d'une recherche dans l'annuaire :
il te suffit de cliquer sur l'icône {icon name=add} en face de son nom dans les résultats !
</p>
{if $plset_count || $smarty.request.quick}
<p>
-Pour récupérer ta liste de contacts dans un PDF imprimable :<br />
+Pour récupérer ta liste de contacts dans un PDF imprimable :<br />
(attention, les photos font beaucoup grossir les fichiers !)
</p>
<ul>
- <li>avec les photos :
+ <li>avec les photos :
[<a href="carnet/contacts/pdf/promo/photos/mescontacts.pdf" class='popup'><strong>tri par promo</strong></a>]
[<a href="carnet/contacts/pdf/photos/mescontacts.pdf" class='popup'><strong>tri par noms</strong></a>]
</li>
- <li>sans les photos :
+ <li>sans les photos :
[<a href="carnet/contacts/pdf/promo/mescontacts.pdf" class='popup'><strong>tri par promo</strong></a>]
[<a href="carnet/contacts/pdf/mescontacts.pdf" class='popup'><strong>tri par noms</strong></a>]
</li>
</ul>
<p>
- Tu peux télécharger des informations sur tes contacts :
+ Tu peux télécharger des informations sur tes contacts :
</p>
<ul>
<li>
{icon name=calendar_view_day title='Anniversaires'}
- <a href="carnet/contacts/ical/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/anniv-x.ics">
+ <a href="carnet/contacts/ical/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/anniv-x.ics" title="Anniversaires">
Le calendrier des anniversaires
</a>
</li>
</div>
</form>
</div>
- Tu peux faire une recherche sur tes contacts :
+ Tu peux faire une recherche sur tes contacts :
</p>
{include file="core/plset.tpl"}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+{config_load file="mails.conf" section="carnet"}
+{if $mail_part eq 'head'}
+{from full=#from#}
+{subject text="Notifications de la semaine `$week`"}
+{if isset(#replyto#)}{add_header name='Reply-To' value=#replyto#}{/if}
+{if isset(#retpath#)}{add_header name='Return-Path' value=#retpath#}{/if}
+{elseif $mail_part eq 'wiki'}
+{if $u.sexe}Chère{else}Cher{/if} {$u.prenom},
+
+Voici les événements survenus dans la semaine écoulée, et depuis ta dernière visite sur le site.
+
+Tu trouveras les mêmes informations sur [[https://www.polytechnique.org/carnet/panel|cette page]].
+
+{foreach from=$u.data key=cid item=d}
+
+!{if $d|@count eq 1}{$cats[$cid].mail_sg}{else}{$cats[$cid].mail}{/if} :
+
+{foreach from=$d key=promo item=x}
+* (X{$x.promo}), le {$x.date|date_format:"%d %b %Y"}, [[https://www.polytechnique.org/profile/private/{$x.bestalias}|{$x.prenom} {$x.nom}]]
+{/foreach}
+
+{/foreach}
+--
+L'Équipe de Polytechnique.org
+
+'''''Note :''''' Tu reçois ce mail ce mail car tu as activé la notification automatique par mail des événements que tu surveilles.\\
+Tu peux changer cette options sur la [[https://www.polytechnique.org/carnet/notifs|page de configuration des notifications]].
+
+{/if}
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h2>Surveiller des promos</h2>
<p>
-Attention : pour les promos, tu n'es pas notifié des événements trop fréquents (par exemple les changements de fiche).
+Attention : pour les promos, tu n'es pas notifié des événements trop fréquents (par exemple les changements de fiche).
</p>
<form action="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 />
+ ou des plages de promos (par ex. 1990-1992) : <br />
<input type='text' name='promo' />
<input type='submit' name='add_promo' value='ajouter'
onclick="this.form.action += 'add_promo/' + this.form.promo.value;" />
{if $watch->promos()|@count eq 0}
<p>Tu ne surveilles actuellement aucune promo.</p>
{else}
- <p>Tu surveilles les promos suivantes :</p>
+ <p>Tu surveilles les promos suivantes :</p>
<ul>
{foreach from=$watch->promos() item=p}
<li>{if $p.0 eq $p.1}{$p.0}{else}{$p.0} à {$p.1}{/if}</li>
{if $watch->nonins()|@count eq 0}
Tu ne surveilles actuellement aucun non-inscrit.
{elseif $watch->nonins()|@count}
- Tu surveilles {if $watch->nonins()|@count eq 1}le non-inscrit{else}les non-inscrits{/if} :
+ Tu surveilles {if $watch->nonins()|@count eq 1}le non-inscrit{else}les non-inscrits{/if} :
<ul>
{foreach from=$watch->nonins() item=p}
<li>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<div class="right">
{if $smarty.session.core_rss_hash}
-<a href='carnet/rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml'>{icon name=feed title='fil rss'}</a>
+<a href="carnet/rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml" title="Notifications">{icon name=feed title='fil rss'}</a>
{/if}
</div>
{foreach from=$notifs->_data item=c key=cid}
<h2>{if ($c|@count) > 1}
-{$notifs->_cats[$cid].mail} :
+{$notifs->_cats[$cid].mail} :
{else}
{foreach from=$c item=promo}
{if ($promo|@count) > 1}
- {$notifs->_cats[$cid].mail} :
+ {$notifs->_cats[$cid].mail} :
{else}
- {$notifs->_cats[$cid].mail_sg} :
+ {$notifs->_cats[$cid].mail_sg} :
{/if}
{/foreach}
{/if}</h2>
{foreach from=$c key=p item=promo}
{section name=row loop=$promo}
<tr {if ( $promo[row].known > $smarty.session.watch_last ) || ( $promo[row].date eq $today ) }style="font-weight: bold"{/if}>
- <td class='titre' style="width:15%">{if $smarty.section.row.first}{$p}{/if}</td>
+ <td class='titre' style="width:15%" {if $promo[row].data}rowspan="2"{/if}>{if $smarty.section.row.first}{$p}{/if}</td>
<td>
{if $promo[row].inscrit}
<a href="profile/{$promo[row].bestalias}" class="popup2">
{$promo[row].prenom} {$promo[row].nom}
{/if}
</td>
- <td style="width:25%">
+ <td style="width:25%" {if $promo[row].data}rowspan="2"{/if}>
{$promo[row].date|date_format}
</td>
+ {if $promo[row].data}
+ <tr><td>{$promo[row].data|smarty:nodefaults}</td></tr>
+ {/if}
</tr>
{/section}
{/foreach}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<link>{#globals.baseurl#}/profile/private/{$x.bestalias}</link>
<guid isPermaLink="false">carnet{$x.known}{$cid}{$x.bestalias}</guid>
<description><![CDATA[
+ {if $x.data}{$x.prenom} {$x.nom} a mis à jours les données suivantes :<br />{$x.data}<br />{/if}
{if !$x.contact and !$x.dcd}
<a href="{#globals.baseurl#}/carnet/contacts?action=ajouter&user={$x.bestalias}">
{icon name=add title="Ajouter" full=true} Ajouter à mes contacts
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<p>
-Trier par :
+Trier par :
{if ($order eq 'nom') and not($smarty.request.inv)}
[<a href='carnet/contacts?order=nom&trombi={$smarty.request.trombi}&inv=1'><strong>nom <img src='images/dn.png' alt='decr.' /></strong></a>]
{else}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1 class="erreur">Cette page n'existe pas !!!</h1>
{if $near}
-<p>L'adresse suivante semble correspondre à ta demande :<br />
+<p>L'adresse suivante semble correspondre à ta demande :<br />
{icon name="lightbulb" title="Cherchais-tu ?"} <a href="{$globals->baseurl}/{$near}">{$globals->baseurl}/{$near}</a>
</p>
{/if}
{**************************************************************************}\r
{* *}\r
-{* Copyright (C) 2003-2007 Polytechnique.org *}\r
+{* Copyright (C) 2003-2008 Polytechnique.org *}\r
{* http://opensource.polytechnique.org/ *}\r
{* *}\r
{* This program is free software; you can redistribute it and/or modify *}\r
\r
<div style="width:800px;height:600px">\r
{if $bug_sent}\r
-<script type="text/javascript">window.close();</script>\r
-{/if}\r
+<p class="erreur">\r
+ Ton message a bien été envoyé au support de Polytechnique.org, tu devrais en\r
+ recevoir une copie d'ici quelques minutes. Nous allons le traiter et y répondre\r
+ dans les plus brefs délais.\r
+</p>\r
+\r
+<div class="center"><input type="submit" onclick="window.close()" name="close" value="Fermer" /></div>\r
+{else}\r
<form action="send_bug" method="post" onsubmit="cleanContent()">\r
<h1>Signaler un bug ou demander une amélioration</h1>\r
<div style="margin-left:10%;margin-right:10%">\r
<option value="wish">Souhait</option>\r
<option value="help">Aide/Dépannage</option>\r
</select>\r
- Sujet : <input type="text" name="item_summary" id="flyspray_title" value="sur la page {$smarty.server.HTTP_REFERER}" size="50" maxlength="100"/>\r
+ Sujet : <input type="text" name="item_summary" id="flyspray_title" value="sur la page {$smarty.server.HTTP_REFERER}" size="50" maxlength="100"/>\r
<textarea name="detailed_desc" id="flyspray_detail" cols="70" rows="10" style="width:100%;margin-top:10px;margin-bottom:10px;height:400px;display:block;" onFocus="cleanContent()" onBlur="fillContent()"></textarea>\r
<input type="hidden" name="page" value="{$smarty.server.HTTP_REFERER|default:$smarty.request.page}" />\r
<div class="center">\r
- <input type="button" value="Fermer" onclick="window.close()"/>\r
- <input type="submit" name="send" value="Signaler le bug"/>\r
+ <input type="button" value="Abandonner" onclick="window.close()"/>\r
+ <input type="submit" name="send" value="Envoyer"/>\r
</div>\r
</div>\r
</form>\r
fillContent();\r
</script>\r
</div>\r
+{/if}\r
\r
{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *}\r
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</ul>
{/if}
+{if $smarty.request.response}<!-- failed login code //-->
+<br />
+<div class="erreur">
+ Erreur d'identification. Essaie à nouveau !
+</div>
+{/if}
+
<br />
<form action="{$smarty.server.REQUEST_URI}" method="post" id="login" onsubmit="doChallengeResponse(); return false;" style="display: none">
</tr>
<tr style="white-space: nowrap">
<td class="titre">
- Adresse email :
+ Adresse email :
</td>
<td>
<input type="text" name="username" size="20" maxlength="50" value="{insert name="getUserName"}" /> @ <select name="domain">
</tr>
<tr>
<td></td>
- <td {popup caption='Connexion permanente' width='300' text='Coche cette case pour être automatiquement reconnu à ta prochaine connexion
- depuis cet ordinateur.<br />
- Il n\'est pas conseillé de cocher la case si cette machine n\'est pas <b>strictement</b> personnelle'}>
+ <td>
<input type="checkbox" name="remember" id="remember" /><label for="remember">Garder l'accès aux services après déconnexion</label>
</td>
</tr>
<tr>
+ <td></td>
+ <td>
+ Coche la case ci-dessus pour être automatiquement reconnu lors de ta prochaine connexion depuis cet ordinateur.
+ Il n'est pas conseillé de la cocher si cette machine n'est pas <b>strictement</b> personnelle.
+ </td>
+ </tr>
+ <tr>
<td colspan="2">
<table width="100%"><tr>
<td>
- <a href="recovery">mot de passe perdu ?</a>
+ <a href="recovery">Mot de passe perdu ?</a>
</td>
<td class="right">
- <input type="submit" name="submitbtn" value="Envoyer" />
+ <input type="submit" name="submitbtn" value="Me connecter" />
</td>
</tr></table>
</td>
{/if}
</div>
-{if $smarty.request.response}<!-- failed login code //-->
-<br />
-<div class="erreur">
- Erreur d'identification. Essaie à nouveau !
-</div>
-{/if}
-
<!-- Set up the form with the challenge value and an empty reply value //-->
<form action="{$smarty.server.REQUEST_URI}" method="post" id="loginsub">
<div>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr class="impair">
<td colspan="{$t->nbfields}">
<strong>
- Nouvelles entrées : <a href="{$t->pl}/new">Manuellement</a> • <a href="{$t->pl}/massadd">Depuis un CSV</a>
+ Nouvelles entrées : <a href="{$t->pl}/new">Manuellement</a> • <a href="{$t->pl}/massadd">Depuis un CSV</a>
</strong>
</td>
<td class="right">
<span class="smaller">{$myrow.$myfield|date_format:"%x %X"}</span>
{elseif $myval.Type eq 'checkbox'}
<input type="checkbox" disabled="disabled"{if $myrow.$myfield} checked="checked"{/if}/>
+ {elseif $myval.Type eq 'ip_address'}
+ {$myrow.$myfield|uint_to_ip}
{else}
{$myrow.$myfield}
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
" />
</td>
<td>
- Ton alias est actuellement : <strong>{$actuel}</strong>. Il est pour l'instant
+ Ton alias est actuellement : <strong>{$actuel}</strong>. Il est pour l'instant
<span id="mail_public">{if $mail_public}public et apparaît donc sur ta fiche.{else}privé et n'apparaît nulle part sur le site.{/if}</span>
</td>
</tr>
{if $actuel}
<p>
- <strong>Note : tu as déjà l'alias {$actuel}, or tu ne peux avoir qu'un seul alias à la fois.
+ <strong>Note : tu as déjà l'alias {$actuel}, or tu ne peux avoir qu'un seul alias à la fois.
Si tu effectues une nouvelle demande l'ancien alias sera effacé.</strong>
</p>
{/if}
{if $demande}
<p>
- <strong>Note : tu as déjà effectué une demande pour {$demande->alias}, dont le traitement est
+ <strong>Note : tu as déjà effectué une demande pour {$demande->alias}, dont le traitement est
en cours. Si tu souhaites modifier ceci refais une demande, sinon ce n'est pas la peine.</strong>
</p>
{/if}
<th>Demande d'alias</th>
</tr>
<tr>
- <td>Alias demandé :</td>
+ <td>Alias demandé :</td>
</tr>
<tr>
<td><input type="text" name="alias" value="{$r_alias}" />@{#globals.mail.alias_dom#} et @{#globals.mail.alias_dom2#}</td>
</td>
</tr>
<tr>
- <td>Brève explication :</td>
+ <td>Brève explication :</td>
</tr>
<tr>
<td><textarea rows="5" cols="50" name="raison">{$r_raison}</textarea></td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/literal}
</script>
<fieldset>
- <legend><strong>Choisis ton propre réglage :</strong></legend>
+ <legend><strong>Choisis ton propre réglage :</strong></legend>
<input id='s0' type='radio' name='statut_filtre' value='0' {if $filtre eq 0}checked="checked"{/if} onclick="Ajax.update_html(null, '{$globals->baseurl}/emails/antispam/'+this.value, bogoUpdated)" />
<label for='s0'>(1) le filtre anti-spam n'agit pas sur tes mails</label>
<br />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
Nous t'écrivons car lors de l'envoi de la lettre d'information mensuelle
de Polytechnique.org à ton adresse polytechnicienne :
- {$x.alias}@{#globals.mail.domain#},
+ {$x.alias}@{$globals->mail->domain},
l'adresse {$email}, sur laquelle tu rediriges ton courrier, ne fonctionnait pas.
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
function bestaliasUpdated() {
showTempMessage('bestalias-msg', "Le changement a bien été effectué.", true);
}
-</script>
+</script>
{/literal}
<table class="bicol">
<tr>
</tr>
<tr class="impair">
<td>
- Tes adresses polytechniciennes sont :<br /><br />
+ Tes adresses polytechniciennes sont :<br /><br />
<div>
{iterate from=$aliases item=a}
<input type='radio' {if $a.best}checked="checked"{/if} name='best' value='{$a.alias}' onclick='Ajax.update_html(null,"{$globals->baseurl}/emails/best/{$a.alias}",bestaliasUpdated)' />
</p>
{else}
Actuellement, tout courrier électronique qui t'y est adressé, est envoyé
- {if $mails->total() eq 1} à l'adresse {else} aux adresses {/if}
+ {if $mails->total() eq 1} à l'adresse{else} aux adresses{/if} :
<ul>
{iterate from=$mails item=m}
<li><strong>{$m.email}</strong></li>
{/iterate}
</ul>
{/if}
+ {if count($storage) neq 0}
+ Ton courrier est également stocké sur {if count($storage) eq 1}le compte suivant{else} les comptes suivants{/if} :
+ <ul>
+ {if in_array('googleapps', $storage)}
+ <li><a href="googleapps"><strong>Compte Google Apps / GMail de Polytechnique.org</strong></a></li>
+ {/if}
+ {if in_array('imap', $storage)}
+ <li><a href="Xorg/IMAP"><strong>Accès de secours aux emails (IMAP)</strong></a></li>
+ {/if}
+ </ul>
+ {/if}
{test_email}
Si tu souhaites <strong>modifier ce reroutage de ton courrier,</strong>
- <a href="emails/redirect">il te suffit de te rendre ici !</a>
+ <a href="emails/redirect">il te suffit de te rendre ici !</a>
</td>
</tr>
</table>
<table class="bicol">
<tr>
- <th>Un alias sympathique : {#globals.mail.alias_dom#} !</th>
+ <th>Un alias sympathique : {#globals.mail.alias_dom#} !</th>
</tr>
<tr class="impair">
<td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
Tes adresses de redirection
</h1>
<p>
- Tu configures ici les adresses emails vers lesquelles tes adresses (listées ci-dessous) sont dirigées :
+ Tu configures ici les adresses emails vers lesquelles tes adresses (listées ci-dessous) sont dirigées :
</p>
<ul>
{if $melix}
</p>
<p>
Enfin, la <strong>réécriture</strong> consiste à substituer à ton adresse email habituelle
- (adresse wanadoo, yahoo, free, ou autre) ton adresse {#globals.mail.domain#} ou
+ (adresse gmail, orange, free, ou autre) ton adresse {#globals.mail.domain#} ou
{#globals.mail.domain2#} dans l'adresse d'expédition de tes messages, lorsque le courrier
passe par nos serveurs. Ceci arrive lorsque tu écris à un camarade sur son adresse {#globals.mail.domain#} ou
{#globals.mail.domain2#}, ou lorsque tu utilises notre
</td>
</tr>
{/foreach}
+ {if $googleapps eq 'active'}
+ <tr class="{cycle values="pair,impair"}">
+ <td><strong>Compte GMail / Google Apps</strong></td>
+ <td>
+ <input type="checkbox" value="googleapps" disabled="disabled"
+ {if in_array('googleapps', $storage)}checked="checked"{/if} />
+ </td>
+ <td>-</td>
+ <td>
+ <a href="emails/redirect#googleapps">{icon name=information title="Plus d'informations"}</a>
+ </td>
+ </tr>
+ {/if}
<script type="text/javascript">activeEnable(); showRemove();</script>
<tr class="{cycle values="pair,impair"}"><td colspan="4">
<form action="emails/redirect" method="post">
<div>
<br />
- Ajouter une adresse email :
+ Ajouter une adresse email :
<input type="text" size="35" maxlength="60" name="email" value="" />
<input type="submit" value="ajouter" name="emailop" />
</div>
</fieldset>
{/if}
+{* TODO(vincent.zanotti): remove the following block of code when both IMAP and GApps will be active. *}
+{if in_array('imap', $storage) neq 0 or #globals.mailstorage.imap_active# or hasPerm('admin')}
+ {assign var=has_imap value=true}
+{else}
+ {assign var=has_imap value=false}
+{/if}
+{if $googleapps or #globals.mailstorage.googleapps_active# or hasPerm('admin')}
+ {assign var=has_googleapps value=true}
+{else}
+ {assign var=has_googleapps value=false}
+{/if}
+
+{if $has_imap or $has_googleapps}
+<h1>Tes comptes de stockage de courrier</h1>
+{/if}
+{if $has_imap}
+<p>
+ Polytechnique.org te propose de conserver les mails que tu reçois, pendant une durée limitée (environ 30 jours).
+ Grâce à ce service, tu disposes d'une sauvegarde de tes mails en secours, au cas où, par exemple, tu effacerais
+ un mail par erreur.<br />
+ <strong>Attention :</strong> il ne s'agit que d'un service de secours, dont la disponibilité n'est pas garantie.
+</p>
+
+<table class="bicol" summary="Compte de stockage">
+ <col width="75%" />
+ <col width="25%" />
+ <tr>
+ <th colspan="2">Compte de stockage</th>
+ </tr>
+ <tr class="pair">
+ <td>
+ <a href="Xorg/IMAP">
+ <strong>Accès de secours aux emails (IMAP)</strong>
+ </a><br />Hébergé par Polytechnique.org
+ </td>
+ <td style="text-align: center; vertical-align: middle">
+ <form action="emails/redirect/storage/imap/{if in_array('imap', $storage)}inactive{else}active{/if}" method="post">
+ {if in_array('imap', $storage)}
+ <input type="submit" value="Désactiver" />
+ {else}
+ <input type="submit" value="Activer" />
+ {/if}
+ </form>
+ </td>
+ </tr>
+</table>
+{/if}
+
+{if $has_googleapps}
+<br />
+<p>
+ Grâce à un partenariat avec Google, Polytechnique.org te propose également un compte
+ <b>Google Apps</b>, qui te permet de disposer des services Google (GMail pour
+ tes emails, Google Calendar, Google Docs, ...) sur une adresse polytechnique.org.
+</p>
+
+<table class="bicol" summary="Compte de stockage" id="googleapps">
+ <col width="75%" />
+ <col width="25%" />
+ <tr>
+ <th colspan="2">Compte de stockage</th>
+ </tr>
+ <tr class="pair">
+ {if $googleapps eq 'active'}
+ <td>
+ <a href="googleapps">
+ <strong>Redirection des emails vers GMail / Google Apps</strong>
+ </a><br />Hébergé par Google
+ </td>
+ <td style="text-align: center; vertical-align: middle">
+ <form action="emails/redirect/storage/googleapps/{if in_array('googleapps', $storage)}inactive{else}active{/if}" method="post">
+ {if in_array('googleapps', $storage)}
+ <input type="submit" value="Désactiver" />
+ {else}
+ <input type="submit" value="Activer" />
+ {/if}
+ </form>
+ </td>
+ {else}
+ <td colspan="2">
+ {if $googleapps eq 'disabled'}
+ Ton compte Google Apps est actuellement inactif.<br />
+ {else}
+ Tu n'as pas encore de compte Google Apps sur Polytechnique.org.<br />
+ {/if}
+ <a href="googleapps">Plus d'informations …</a>
+ </td>
+ {/if}
+ </tr>
+</table>
+{/if}
+
{if $eleve}
<h1>Pour les Élèves (non encore diplômés)</h1>
<p>
</p>
<p>
Si tu utilises le service POP de poly pour récupérer tes mails dans ton logiciel de courrier,
- l'équipe de Polytechnique.org te conseille de rediriger :
+ l'équipe de Polytechnique.org te conseille de rediriger :
</p>
<ul>
<li>«prenom.nom»@polytechnique.edu vers {$smarty.session.forlife}@{#globals.mail.domain#} ;</li>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</div>
<div id="preview">
<div id="preview_pv" style="display: none">
- <strong>Aperçu du mail :</strong>
+ <strong>Aperçu du mail :</strong>
<div id="mail_preview">
</div>
<div class="center">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<p>
Pour soumettre un (non-)spam mal détecté par notre <a href="emails/antispam">antispam</a>, il suffit d'enregistrer
les sources (regarde dans la documentation de ton client mail dans la liste ci-dessous) du mail en tant que fichier
- depuis ton client mail, puis de soumettre ce fichier à l'interface ci-dessus en sélectionnant l'action adaptée :
+ depuis ton client mail, puis de soumettre ce fichier à l'interface ci-dessus en sélectionnant l'action adaptée :
</p>
<ul>
- <li><strong>spam</strong> : pour soumettre un spam mal reconnu ;</li>
- <li><strong>nonspam</strong> : pour soumettre un mail légitime mal reconnu.</li>
+ <li><strong>spam</strong> : pour soumettre un spam mal reconnu ;</li>
+ <li><strong>nonspam</strong> : pour soumettre un mail légitime mal reconnu.</li>
</ul>
{include wiki=Xorg.Mails part=clients}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
Tu reçois ce mail car tu as demandé la confirmation du bon fonctionnement de ton adresse polytechnicienne {$email}.
{if $redirects->total() gt 1}Si toutes tes redirections fonctionnent correctement tu devrais recevoir une copie de ce mail
-des boîtes suivantes :
+dans les boîtes suivantes :
{iterate from=$redirects item=mail}
* {$mail.email}
{/iterate}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>
- Gestion des événements :
+ Gestion des événements :
[
{if $arch || $action eq 'edit'}
<a href="admin/events">Actualités</a>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</div>
{/if}
<div style="clear: both">
- Choisir un fichier : <input type="file" name="image" id="image" /><br />
- Indiquer une adresse : <input type="text" name="image_url" id="image_url" value="" />
+ Choisir un fichier : <input type="file" name="image" id="image" /><br />
+ Indiquer une adresse : <input type="text" name="image_url" id="image_url" value="" />
</div>
</td>
</tr>
</tr>
<tr class="pair">
<td colspan="2">
- Tu peux limiter la visibilité de ton annonce aux camarades de certaines promotions :
+ Tu peux limiter la visibilité de ton annonce aux camarades de certaines promotions :
</td>
</tr>
{include file="include/field.promo.tpl"}
<tr class="pair">
<td colspan="2">
- Choisis la date d'expiration de ton annonce :
+ Choisis la date d'expiration de ton annonce :
</td>
</tr>
<tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<td class="half titre" style="height: 18px; padding-top: 1px; padding-bottom: 1px;">
{if $smarty.foreach.events.first}
{if $smarty.session.core_rss_hash}
- <a href='rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml' style="display:block;float:right">
+ <a href="rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml" style="display:block;float:right" title="Annonces">
{icon name=feed title='fil rss'}
</a>
{else}
{/if}
</td>
</tr>
- {iterate item=ev from=$evenement.summary}
+ {foreach item=ev from=$evenement}
<tr class="impair">
<td class="half">
•
</td>
</tr>
{assign var="has_evts" value=true}
- {/iterate}
+ {/foreach}
{/foreach}
{if !$has_evts}
<tr>
</script>
{foreach from=$events key=category item=evenement}
- {iterate item=ev from=$evenement.events}
+ {foreach item=ev from=$evenement}
+ {if $ev.nonlu}
<div id="content-evt{$ev.id}">
<br />
</tr>
</table>
</div>
- {/iterate}
+ {/if}
+ {/foreach}
{/foreach}
<p class="smaller">
- Nota Bene : les informations présentées ici n'engagent que leurs auteurs
+ Nota Bene : les informations présentées ici n'engagent que leurs auteurs
respectifs et sont publiées à leur initiative. L'association Polytechnique.org
ne pourrait en aucun cas être tenue responsable de la nature des propos relatés
sur cet espace d'expression et d'information. Elle se réserve le droit de
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if trim($titre) || trim($texte)}
<table class="bicol">
- <tr><th><em>Aperçu de : </em>{$titre|nl2br}</th></tr>
+ <tr><th><em>Aperçu de : </em>{$titre|nl2br}</th></tr>
<tr class="pair"><td>{$texte|miniwiki|smarty:nodefaults}</td></tr>
</table>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<div class="events">
+ <ul>
+ {iterate from=$events item=ev}
+ <li class="{if $ev.nonlu}unread{else}read{/if}" id="evt-{$ev.id}">
+ {if $ev.nonlu}
+ <div id="mark-read-{$ev.id}" style="float: right">
+ <a href="events/read/{$ev.id}" target="_top" onclick="return markEventAsRead({$ev.id})">{*
+ *}{icon name=tick title="Marquer comme lu"}</a>
+ </div>
+ {/if}
+ <a href="events{if !$ev.nonlu}/unread/{$ev.id}{else}#newsid{$ev.id}{/if}" target="_blank" id="link-{$ev.id}"
+ title="Ajouté le {$ev.creation_date|date_format} par {$ev.prenom} {$ev.nom} (X{$ev.promo})">
+ {tidy}
+ {$ev.titre|nl2br}
+ {/tidy}
+ </a>
+ </li>
+ {assign var="has_evts" value=true}
+ {/iterate}
+ {if !$has_evts}
+ <li><em>Aucun article actuellement.</em></li>
+ {/if}
+ </ul>
+</div>
+<div class="more">
+ <a href="events" target="_blank">{$event_count} événements au total</a> >>>
+</div>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Module>
+ <ModulePrefs title="Polytechnique.org - Événements"
+ title_url="https://www.polytechnique.org/events" scrolling="false"
+ description="Les dernières annonces du site Polytechnique.org."
+ author="Polytechnique.org" author_email="support+gadgets@polytechnique.org">
+ <Locale lang="fr" />
+ <Require feature="dynamic-height" />
+ </ModulePrefs>
+ <Content type="url" href="{$globals->baseurl}/gadgets/ig-events" />
+</Module>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<div style="text-align: center">
+ <img src="images/skins/default_headlogo.jpg" /><br />
+ <b>Polytechnique.org</b>
+</div>
+<div style="text-align: center" id="connect">
+ <a href="login" target="_blank">Me connecter !</a><br />
+ <a href="javascript:window.location.reload()">
+ Je suis déjà connecté à Polytechnique.Org.
+ </a>
+</div>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+{if !$c.inscrit || $c.dcd}<div class='grayed'>{/if}
+<div class="contact" {if $c.inscrit}{if $smarty.session.auth ge AUTH_COOKIE}title="Fiche mise à jour le {$c.date|date_format}"{/if}{/if}>
+ <div class="nom">
+ {if $c.sexe}•{/if}
+ {if !$c.dcd && $c.inscrit}<a href="profile/{$c.forlife}" class="popup2">{/if}
+ {if $c.nom_usage}{$c.nom_usage} {$c.prenom}<br />({$c.nom}){else}{$c.nom} {$c.prenom}{/if}
+ {if !$c.dcd && $c.inscrit}</a>{/if}
+ </div>
+ <div class="autre">
+ {if $c.iso3166}
+ <img src='images/flags/{$c.iso3166}.gif' alt='{$c.nat}' height='11' title='{$c.nat}' />
+ {/if}
+ (X {$c.promo})
+ {if $c.dcd}décédé{if $c.sexe}e{/if} le {$c.deces|date_format}{/if}
+ {if $smarty.session.auth ge AUTH_COOKIE}
+ {if !$c.wasinscrit && !$c.dcd}
+ {if $show_action eq ajouter}
+ <a href="carnet/notifs/add_nonins/{$c.user_id}" target="_top">{*
+ *}{icon name=add title="Ajouter à la liste de mes surveillances"}</a>
+ {else}
+ <a href="carnet/notifs/del_nonins/{$c.user_id}" target="_top">{*
+ *}{icon name=cross title="Retirer de la liste de mes surveillances"}</a>
+ {/if}
+ {elseif $c.wasinscrit && !$c.dcd}
+ <a href="vcard/{$c.forlife}.vcf">{*
+ *}{icon name=vcard title="Afficher la carte de visite"}</a>
+ {if $show_action eq ajouter}
+ <a href="carnet/contacts?action={$show_action}&user={$c.forlife}" target="_top">{*
+ *}{icon name=add title="Ajouter à mes contacts"}</a>
+ {else}
+ <a href="carnet/contacts?action={$show_action}&user={$c.forlife}" target="_top">{*
+ *}{icon name=cross title="Retirer de mes contacts"}</a>
+ {/if}
+ {/if}
+ {/if}
+ </div>
+ <div class="long">
+ {if $c.wasinscrit}
+ {if $c.mobile || $c.countrytxt || $c.city}
+ <table cellspacing="0" cellpadding="0">
+ {if $c.countrytxt || $c.city}
+ <tr>
+ <td class="lt">Géographie:</td>
+ <td class="rt">{$c.city}{if $c.city && $c.countrytxt}, {/if}{$c.countrytxt}</td>
+ </tr>
+ {/if}
+ {if $c.mobile && !$c.dcd}
+ <tr>
+ <td class="lt">Mobile:</td>
+ <td class="rt">{$c.mobile}</td>
+ </tr>
+ {/if}
+ </table>
+ {/if}
+ {/if}
+ </div>
+</div>
+{if !$c.inscrit || $c.dcd}</div>{/if}
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+{if $error}
+<div class="error">{$error}</div>
+{elseif $set}
+<div class="contact-list">
+{iterate from=$set item=res}
+ {if $res.contact}
+ {include file="gadgets/ig-minifiche.tpl" c=$res show_action="retirer"}
+ {else}
+ {include file="gadgets/ig-minifiche.tpl" c=$res show_action="ajouter"}
+ {/if}
+{/iterate}
+</div>
+<div class="more">
+ <a href="search?quick={$smarty.request.quick}" target="_blank">{$result_count} résultats au total</a> >>>
+</div>
+{else}
+<div class="welcome">
+ <img src="images/skins/default_headlogo.jpg" alt="Logo Polytechnique.org" />
+</div>
+{/if}
+
+<div class="search">
+ <form method="get" action="gadgets/ig-search">
+ <input name="extern_js" type="hidden" value="{$smarty.request.extern_js}" />
+ <input name="libs" type="hidden" value="{$smarty.request.libs}" />
+ <input name="mid" type="hidden" value="{$smarty.request.mid}" />
+ <input name="parent" type="hidden" value="{$smarty.request.parent}" /><br />
+ <input name="synd" type="hidden" value="{$smarty.request.synd}" />
+ <input name="quick" type="text" value="{$smarty.request.quick}" /><br />
+ <input value="Chercher sur Polytechnique.org" type="submit" />
+ </form>
+</div>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Module>
+ <ModulePrefs title="Polytechnique.org - Annuaire"
+ title_url="https://www.polytechnique.org/search" scrolling="false"
+ description="Outil de recherche rapide de l'annuaire de Polytechnique.org."
+ author="Polytechnique.org" author_email="support+gadgets@polytechnique.org">
+ <Locale lang="fr" />
+ <Require feature="dynamic-height" />
+ </ModulePrefs>
+ <Content type="url" href="{$globals->baseurl}/gadgets/ig-search" />
+</Module>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+{include file="skin/common.doctype.tpl"}
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <link rel="stylesheet" type="text/css" href="css/base.css" media="all"/>
+ <link rel="stylesheet" type="text/css" href="css/igoogle.css" media="all"/>
+ <script type="text/javascript" src="javascript/ajax.js"></script>
+ <script type="text/javascript" src="javascript/base.js"></script>
+ <script type="text/javascript" src="javascript/igoogle.js"></script>
+ <script type="text/javascript" src="javascript/xorg.js"></script>
+ {foreach from=$gadget_js item=js}
+ <script type="text/javascript" src="{$js}"></script>
+ {/foreach}
+ <script type="text/javascript">var platal_baseurl = "{$globals->baseurl}/";</script>
+ </head>
+ <body onload="igOnLoadHandler();">
+{if $gadget_tpl}{include file=$gadget_tpl}{/if}
+ </body>
+</html>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<form action='admin/geoloc' method='post'>
<p>
-La ville dont l'id est : <input size="6" name="id" />
+La ville dont l'id est : <input size="6" name="id" />
</p>
</form>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}\r
{* *}\r
-{* Copyright (C) 2003-2007 Polytechnique.org *}\r
+{* Copyright (C) 2003-2008 Polytechnique.org *}\r
{* http://opensource.polytechnique.org/ *}\r
{* *}\r
{* This program is free software; you can redistribute it and/or modify *}\r
{**************************************************************************}\r
{* *}\r
-{* Copyright (C) 2003-2007 Polytechnique.org *}\r
+{* Copyright (C) 2003-2008 Polytechnique.org *}\r
{* http://opensource.polytechnique.org/ *}\r
{* *}\r
{* This program is free software; you can redistribute it and/or modify *}\r
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<h1>Requête de la queue Google Apps</h1>
+
+{if $job}
+<table class="bicol">
+ <col width="50%" />
+ <col width="50%" />
+ <tr>
+ <th style="text-align: left" colspan="2">Queue id: {$job.q_id}</th>
+ </tr>
+
+ <tr class="impair">
+ <td class="titre">Propriétaire</td><td>{if $job.q_owner}{$job.q_owner}{else}<em>none</em>{/if}</td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">Destinataire</td><td>{if $job.q_recipient}{$job.q_recipient}{else}<em>none</em>{/if}</td>
+ </tr>
+
+ <tr class="pair">
+ <td class="titre">Statut</td><td><code>{$job.p_status}</code></td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Priorité</td><td><code>{$job.p_priority}</code></td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Requête administrateur ?</td><td>{if $job.p_admin_request}oui{else}non{/if}</td>
+ </tr>
+
+ <tr class="impair">
+ <td class="titre">Entrée dans la queue</td><td>{$job.p_entry_date}</td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">Date d'activation</td><td>{$job.p_notbefore_date}</td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">Début de traitement</td><td>{if $job.p_start_date}{$job.p_start_date}{else}<em>none</em>{/if}</td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">Fin de traitement</td><td>{if $job.p_end_date}{$job.p_end_date}{else}<em>none</em>{/if}</td>
+ </tr>
+
+ <tr class="pair">
+ <td class="titre">Erreurs récupérables</td><td>{$job.r_softfail_count}</td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Dernière erreur récupérable</td><td><code>{if $job.r_softfail_date}{$job.r_softfail_date}{else}<em>none</em>{/if}</code></td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Résultat du traitement</td><td><code>{if $job.r_result}{$job.r_result}{else}<em>none</em>{/if}</code></td>
+ </tr>
+
+ <tr class="impair">
+ <td class="titre">Type de requête</td><td><code>{$job.j_type}</code></td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">Paramètres</td><td><pre>{$job.decoded_parameters}</pre></td>
+ </tr>
+</table>
+{else}
+<p><strong>Aucune requête n'a été trouvée.</strong></p>
+{/if}
+
+<p>Retourner à la <a href="admin/googleapps">page d'administration de Google Apps</a>.</p>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<h1>Gestion des utilisateurs</h1>
+
+<form method="post" action="admin/googleapps/user">
+<table class="tinybicol" cellspacing="0" cellpadding="2">
+ <tr>
+ <th>Administrer un utilisateur (Google Apps)</th>
+ </tr>
+ <tr>
+ <td class="center"><input type="text" name="login" size="40" maxlength="255" value="" /></td>
+ </tr>
+ <tr>
+ <td class="center"><input type="submit" value="Valider" /></td>
+ </tr>
+</table>
+</form>
+
+<h1>Queue de requêtes vers Google Apps</h1>
+
+<p>
+ Requête nécessitant <a href="Equipe/Infra-GoogleApps#admin-cli">l'intervention manuelle</a>
+ d'un administrateur Google Apps {if $googleapps_admin}(tu en es un){/if} :
+</p>
+<table class="bicol" style="text-align: center">
+ <tr>
+ <th>qid</th>
+ <th>date</th>
+ <th>recipient</th>
+ <th>type</th>
+ <th>parameters</th>
+ </tr>
+ {foreach from=$admin_requests item=r}
+ <tr class="{cycle values="impair,pair"}">
+ <td><a href="admin/googleapps/job/{$r.q_id}">{$r.q_id}</a></td>
+ <td>{$r.p_entry_date|date_format:"%Y-%m-%d %H:%M"}</td>
+ <td>{if $r.alias}<a href="admin/googleapps/user/{$r.alias}">{$r.alias}</a>{else}-{/if}</td>
+ <td>{$r.j_type}</td>
+ <td>{$r.parameters}</td>
+ </tr>
+ {/foreach}
+</table>
+
+<p>
+ Requêtes ayant échoué récemment (plus d'information dans la <a href="Equipe/Infra-GoogleApps">documentation</a>) :
+</p>
+<table class="bicol" style="text-align: center">
+ <tr>
+ <th>qid</th>
+ <th>date</th>
+ <th>recipient</th>
+ <th>type</th>
+ <th>reason</th>
+ <th></th>
+ </tr>
+ {iterate from=$failed_requests item=r}
+ <tr class="{cycle values="impair,pair"}">
+ <td><a href="admin/googleapps/job/{$r.q_id}">{$r.q_id}</a></td>
+ <td>{$r.p_entry_date|date_format:"%Y-%m-%d %H:%M"}</td>
+ <td>{if $r.alias}<a href="admin/googleapps/user/{$r.alias}">{$r.alias}</a>{else}-{/if}</td>
+ <td>{$r.j_type}</td>
+ <td><code>{$r.r_result}</code></td>
+ <td><a href="admin/googleapps/ack/{$r.q_id}">{icon name=cross title="Retirer cet échec"}</a></td>
+ </tr>
+ {/iterate}
+</table>
+
+<h1>Statistiques d'utilisation de Google Apps</h1>
+
+<div style="text-align: center">
+ <img src="images/googleapps/activity-monthly.png" alt="Activité Google Apps - 1 mois" width="500 height="250" />
+ <br /><em>Utilisation des comptes Google Apps sur les 31 derniers jours</em>.
+</div>
+
+<div style="text-align: center">
+ <img src="images/googleapps/activity-yearly.png" alt="Activité Google Apps - 1 an" width="500 height="250" />
+ <br /><em>Utilisation des comptes Google Apps sur les 12 derniers mois</em>.
+</div>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<h1>Compte Google Apps</h1>
+
+{if $account}
+{assign var=a value=$account}
+<table class="bicol">
+ <col width="50%" />
+ <col width="50%" />
+ <tr>
+ <th colspan="2" style="text-align: left">
+ <div style="float: left; text-align: left">
+ Compte = {$a->g_account_name}
+ </div>
+ <div style="float: right; text-align: right">
+ Google id = {$a->g_account_id}<br />
+ Plat/al id = {$user}
+ </div>
+ </th>
+ </tr>
+
+ <tr class="impair">
+ <td class="titre">Statut du compte</td>
+ <td>
+ <strong>{$a->g_status}</strong>
+ {if $admin_account}<br /><strong>Compte administrateur de Google Apps</strong>{/if}
+ </td>
+ </tr>
+ {if $a->suspended()}
+ <tr class="impair">
+ <td class="titre">Raison de suspension</td><td>{$a->g_suspension}</td>
+ </tr>
+ {/if}
+ <tr class="impair">
+ <td class="titre">Mots de passes synchronisés</td>
+ <td>
+ {if $a->sync_password}
+ oui (<a href="admin/googleapps/user/{$a->g_account_name}/forcesync">lancer une synchronisation</a>)
+ {else}non{/if}
+ </td>
+ </tr>
+ <tr class="impair">
+ <td class="titre">Redirection des mails</td><td>{if $googleapps_storage}activée{else}désactivee{/if}</td>
+ </tr>
+
+ <tr class="pair">
+ <td class="titre">Date de création</td><td>{$a->r_creation|date_format:"%Y-%m-%d"}</td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Dernière connexion</td><td>{$a->r_last_login|date_format:"%Y-%m-%d"}</td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Dernière utilisation du webmail</td><td>{$a->r_last_webmail|date_format:"%Y-%m-%d"}</td>
+ </tr>
+ <tr class="pair">
+ <td class="titre">Utilisation du quota mail</td><td>{$a->r_disk_usage/1024/1024|string_format:"%.2f"}MB</td>
+ </tr>
+</table><br />
+
+<table class="bicol" style="text-align: center">
+ <tr>
+ <th colspan="4" style="text-align: left">Requêtes en attente</th>
+ </tr>
+ <tr>
+ <th>qid</th>
+ <th>date</th>
+ <th>statut</th>
+ <th>type</th>
+ </tr>
+ {iterate from=$requests item=r}
+ <tr class="{cycle values="impair,pair"}">
+ <td><a href="admin/googleapps/job/{$r.q_id}">{$r.q_id}</a></td>
+ <td>{$r.p_entry_date|date_format:"%Y-%m-%d %H:%M"}</td>
+ <td>{$r.p_status}</td>
+ <td>{$r.j_type}</td>
+ </tr>
+ {/iterate}
+</table>
+{else}
+<p><strong>Aucun utilisateur n'a été trouvé.</strong></p>
+{/if}
+
+<p>Retourner à la <a href="admin/googleapps">page d'administration de Google Apps</a>.</p>
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+{config_load file="mails.conf" section="googleapps"}
+{if $mail_part eq 'head'}
+{from full=#from#}
+{to addr=$email}
+{cc full=#from#}
+{subject text="[Polytechnique.org] Création de ton compte Google Apps"}
+{elseif $mail_part eq 'wiki'}
+{if $sexe}Chère{else}Cher{/if} {$prenom},
+
+Ton compte Google Apps pour Polytechnique.org vient d'être crée.
+
+Tu peux accèder aux services offerts par Google Apps aux adresses suivantes:
+* [[http://google.polytechnique.org/|iGoogle, le portail des services Google Apps]] ;
+{if $account->activate_mail_redirection}
+* [[https://mail.google.com/a/{$googleapps_domain}/|GMail, pour accéder à tes emails Polytechnique.org]] ;
+{/if}
+* [[https://www.polytechnique.org/googleapps|Polytechnique.org, pour modifier les préférences de ton compte Google Apps]].
+
+Ton nom d'utilisateur pour ces services Google est '''{$account->g_account_name}'''
+{if $account->sync_password}
+et ton mot de passe est celui de Polytechnique.org.
+{else}
+et ton mot de passe est celui que tu as choisi lors de ta demande de compte.
+{/if}
+
+Tu trouveras plus d'informations dans la [[https://www.polytechnique.org/Xorg/GoogleApps|documentation]] sur Polytechnique.org.
+
+Cordialement,\\
+-- \\
+L'équipe de Polytechnique.org
+{/if}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+<h1>Ton compte Google Apps / Polytechnique.org</h1>
+
+<p>Polytechnique.org te fournit un compte <b>Google Apps</b> qui te permet de disposer
+ des applications web de Google (<a href="http://mail.google.com/a/polytechnique.org/">GMail</a>,
+ <a href="http://www.google.com/calendar/hosted/polytechnique.org/">Google Calendar</a>,
+ <a href="http://docs.google.com/a/polytechnique.org/">Google Docs</a>, et bien d'autres)
+ sur ton adresse Polytechnique.org habituelle (<a href="Xorg/GoogleApps">plus d'informations</a>).
+</p>
+
+{if !$account->g_status}
+<p>Tu peux créer ton compte <i>Google Apps / Polytechnique.org</i> en utilisant le
+ formulaire ci-dessous.
+</p>
+<p><b>Attention :</b> ce compte Google Apps est hébergé par <b>Google</b>, et non
+ par Polytechnique.org. Nous te déconseillons d'y ranger des informations
+ confidentielles ou sensibles !<br />
+</p>
+
+<table class="bicol" id="create">
+ <col width="8%" />
+ <col width="92%" />
+ <tr>
+ <th colspan="2">Création d'un compte Google Apps</th>
+ </tr>
+
+ {if !$has_password_sync}
+ <form action="googleapps/create" method="get">
+ <tr class="impair">
+ <td colspan="2"><b>Mot de passe du compte :</b></td>
+ </tr>
+ <tr class="impair">
+ <td style="text-align: center">
+ <input type="radio" name="password_sync" value="1" checked="checked" id="pwsync_true" />
+ </td>
+ <td>
+ <label for="pwsync_true">Utiliser le même mot de passe pour Google Apps et Polytechnique.org.</label><br />
+ <span style="font-size: smaller; font-style: italic;">
+ Tes futurs changements de mot de passe seront synchronisés avec ton compte Google Apps.
+ Ton mot de passe ne sera jamais transmis non-chiffré par Polytechnique.org.
+ </span>
+ </td>
+ </tr>
+ <tr class="impair">
+ <td style="text-align: center">
+ <input type="radio" name="password_sync" value="0" id="pwsync_false" />
+ </td>
+ <td>
+ <label for="pwsync_false">Utiliser un mot de passe différent pour Google Apps.</label>
+ </td>
+ </tr>
+ <tr class="impair">
+ <td colspan="2" style="text-align: center">
+ <input type="submit" value="Continuer >>" />
+ </td>
+ </tr>
+ </form>
+ {else}
+ <tr class="impair">
+ <td colspan="2"><b>Mot de passe du compte :</b></td>
+ </tr>
+ {if $password_sync}
+ <tr class="impair">
+ <td></td>
+ <td>
+ Tu as choisi d'avoir le même mot de passe pour Google Apps et Polytechnique.org.<br />
+ Tu peux encore choisir d'utiliser des <a href="googleapps/create?password_sync=0">mots de passe différents</a>.
+ </td>
+ </tr>
+ {else}
+ <tr class="impair">
+ <td></td>
+ <td>Tu as choisi d'avoir un nouveau mot de passe pour ton compte Google Apps :</td>
+ </tr>
+ <tr class="impair">
+ <td colspan="2">
+ <form action="#" method="post" id="changepass">
+ <table class="tinybicol">
+ <tr>
+ <td class="titre">Nouveau mot de passe</td>
+ <td><input type="password" name="nouveau" onfocus="document.forms.changepass2.password_sync[1].checked = true;" /></td>
+ </tr>
+ <tr>
+ <td class="titre">Vérification</td>
+ <td><input type="password" name="nouveau2" onfocus="document.forms.changepass2.password_sync[1].checked = true;" /></td>
+ </tr>
+ </table>
+ </form>
+ </td>
+ </tr>
+ <tr class="impair">
+ <td></td>
+ <td>
+ Tu peux encore choisir d'<a href="googleapps/create?password_sync=1">avoir des mots de passes synchronisés</a>.
+ </td>
+ </tr>
+ {/if}
+
+ <form action="googleapps/create" method="post" id="changepass2">
+ <tr class="pair">
+ <td colspan="2"><b>Redirection des emails :</b></td>
+ </tr>
+ <tr class="pair">
+ <td style="text-align: center">
+ <input type="radio" name="redirect_mails" value="1" checked="checked" id="redirection_true" />
+ </td>
+ <td>
+ <label for="redirection_true">Rediriger mes emails vers mon compte Google Apps.</label><br />
+ <span style="font-size: smaller;">
+ Tes emails <i>Polytechnique.org</i> seront redirigés vers ton webmail <i>GMail</i> de Google Apps,
+ en plus d'être redirigés vers tes adresses actuelles.<br /><br />
+ <b>Attention : ton compte Google Apps est hébergé par <i>Google, Inc.</i></b><br />
+ Nous te déconseillons donc de rediriger tes emails vers Google Apps si tu utilises tes adresses Polytechnique.org
+ à des fin professionnelles ou pour des communications confidentielles.
+ </span>
+ </td>
+ </tr>
+ <tr class="pair">
+ <td style="text-align: center">
+ <input type="radio" name="redirect_mails" value="0" id="redirection_false" />
+ </td>
+ <td>
+ <label for="redirection_false">Ne <i>pas</i> rediriger mes emails vers mon compte Google Apps.</label><br />
+ <span style="font-size: smaller;">
+ </span>
+ </td>
+ </tr>
+
+ <tr class="impair">
+ <td colspan="2" style="text-align:center">
+ <input type="hidden" name="password_sync" value="{$password_sync}" />
+ {if $password_sync}
+ <input type="submit" value="Créer mon compte !" />
+ {else}
+ <input type="hidden" name="response2" value="" />
+ <input type="submit" value="Créer mon compte !" onclick="EnCryptedResponse(); return false;" />
+ {/if}
+ </td>
+ </tr>
+ </form>
+ {/if}
+</table>
+
+{elseif $account->g_status eq 'unprovisioned' or $account->pending_create}
+<br />
+<table class="bicol" id="status">
+ <tr>
+ <th>État de ton compte</th>
+ </tr>
+ <tr class="impair">
+ <td>
+ Ton compte Google Apps est en cours de création.<br />
+ Tu recevras un email dès que l'opération sera terminée.
+ </td>
+ </tr>
+</table>
+
+{elseif $account->pending_delete}
+<br />
+<table class="bicol" id="status">
+ <tr>
+ <th>État de ton compte</th>
+ </tr>
+ <tr class="impair">
+ <td>
+ Ton compte Google Apps est en cours de suppression.
+ </td>
+ </tr>
+</table>
+
+{elseif $account->suspended() or $account->pending_update_suspension}
+<br />
+<table class="bicol" id="status">
+ <tr>
+ <th>État de ton compte</th>
+ </tr>
+ <tr class="impair">
+ <td>
+ Ton compte Google Apps est actuellement <b>désactivé</b>. Tu ne reçois donc plus aucun
+ message sur ce compte.
+ </td>
+ </tr>
+ {if $account->pending_validation_unsuspend or ($account->suspended() and $account->pending_update_suspension)}
+ <tr class="pair">
+ <td>
+ La réactivation de ton compte est en attente de validation.<br />
+ Tu recevras un email dès que l'opération sera terminée.
+ </td>
+ </tr>
+ {elseif !$account->suspended() and $account->pending_update_suspension}
+ <tr class="pair">
+ <td>
+ Les opérations de désactivation de ton compte Google Apps ne sont pas terminées, tu ne peux donc pas encore demander sa réactivation.
+ </td>
+ </tr>
+ {else}
+ {if $account->g_suspension}
+ <tr class="pair">
+ <td>
+ Ton compte est actuellement suspendu pour la raison suivante: <em>{$account->g_suspension}</em>.
+ </td>
+ </tr>
+ {/if}
+ <tr class="impair">
+ <td>
+ La réactivation de ton compte est soumise à une validation manuelle par un administrateur de Polytechnique.org.
+ Ton compte réactivé contiendra toutes tes anciennes données.
+ <br /><br />
+ <div class="center">
+ <form action="googleapps/unsuspend" method="post">
+ <input type="hidden" name="redirect_mails" value="1" />
+ <input type="submit" name="unsuspend" value="Réactiver mon compte Google Apps et y rediriger mes emails" />
+ </form>
+ <br />
+ <form action="googleapps/unsuspend" method="post">
+ <input type="hidden" name="redirect_mails" value="0" />
+ <input type="submit" name="unsuspend" value="Réactiver mon compte Google Apps et ne pas y rediriger mes emails" />
+ </form>
+ </div><br />
+ Tu pourras toujours <a href="emails/redirect">changer la redirection de tes emails</a> plus tard.
+ </td>
+ </tr>
+ {/if}
+</table>
+
+{else}
+<p>Tu peux utiliser ces services :</p>
+<ul>
+ <li>Soit en passant par la <a href="http://google.polytechnique.org/">la page d'accueil Google de Polytechnique.org</a> ;</li>
+ <li>Soit en utilisant directement les différents services :
+ <ul>
+ <li>Pour tes mails, sur le <a href="http://mail.google.com/a/polytechnique.org/">GMail de Polytechnique.org</a> ;</li>
+ <li>Pour ton calendrier, sur <a href="http://www.google.com/calendar/hosted/polytechnique.org/">Google Calendar</a> ;</li>
+ <li>Pour tes documents, sur <a href="http://docs.google.com/a/polytechnique.org/">Google Docs</a>.</li>
+ </ul>
+ </li>
+</ul>
+
+<table class="bicol" id="status">
+ <tr>
+ <th>État de ton compte</th>
+ </tr>
+ <tr class="impair">
+ <td>Ton compte <b>{$account->g_account_name}</b> existe{if $account->r_creation} depuis le {$account->r_creation|date_format:"%d/%m/%Y"}{/if}.</td>
+ </tr>
+ {if $account->reporting_date and $account->r_disk_usage}
+ <tr class="pair">
+ <td>Au {$account->reporting_date|date_format:"%d %B %Y"}, tu avais {$account->r_disk_usage/1024/1024|string_format:"%.1f"} Mo de mails.</td>
+ </tr>
+ {/if}
+ <tr class="impair">
+ {if $redirect_active and $redirect_unique}
+ <td>
+ Ta seule adresse de redirection de tes mails est celle de ton compte Google Apps.<br />
+ Si tu souhaites désactiver celui-ci, tu dois d'abord <a href="emails/redirect">ajouter une nouvelle adresse de redirection</a>.
+ </td>
+ {else}
+ <td>
+ Si tu ne souhaites plus utiliser ton compte, tu peux le désactiver :<br /><br />
+ <div class="center">
+ <form action="googleapps/suspend" method="post">
+ <input type="submit" name="suspend" value="Désactiver mon compte Google Apps" />
+ </form>
+ </div>
+ <div style="margin-top: 0.5em">
+ {icon name=error} Une fois ton compte désactivé, tu ne pourras plus accéder à tes mails sur Google Apps.<br />
+ {icon name=information} La réactivation est possible, mais nécessite d'être validée par un administrateur.
+ </div>
+ </td>
+ {/if}
+ </tr>
+</table>
+<br />
+
+<table class="bicol" id="password">
+ <tr>
+ <th>Ton mot de passe Google Apps</th>
+ </tr>
+ {if $account->sync_password}
+ <tr class="impair">
+ <td>
+ Le mot de passe de ton compte Google Apps est actuellement celui que tu utilises pour
+ Polytechnique.org. Tu peux :
+ </td>
+ </tr>
+
+ {if $account->pending_update_password}
+ <tr class="pair">
+ <td><div class="erreur">
+ Ton mot de passe est en cours de changement.<br />
+ Tu pourras à nouveau le modifier d'ici quelques secondes.
+ </div></td>
+ </tr>
+ {else}
+ <tr class="impair">
+ <td>
+ <ul style="margin-top: 0">
+ <li><a href="password">Changer ce mot de passe commun</a></li>
+ <li><a href="googleapps/password/nosync#password">Choisir d'avoir des mots de passe indépendants</a></li>
+ </ul>
+ </td>
+ </tr>
+ {/if}
+ {else}
+ <tr class="impair">
+ <td>
+ Tu as actuellement deux mots de passes indépendants (pour ton compte Polytechnique.org et pour ton compte Google Apps).
+ Tu peux :
+ </td>
+ </tr>
+
+ {if $account->pending_update_password}
+ <tr class="pair">
+ <td><div class="erreur">
+ Ton mot de passe est en cours de changement.<br />
+ Tu pourras à nouveau le modifier d'ici quelques secondes.
+ </div></td>
+ </tr>
+ {else}
+ <tr class="impair">
+ <td>
+ <ul style="margin-top: 0">
+ <li style="margin-bottom: 1em">
+ <a href="googleapps/password/sync">Choisir d'utiliser le même mot de passe pour les deux comptes.</a><br />
+ Attention, cette opération changera ton mot de passe Google Apps.
+ </li>
+ <li>
+ Changer le mot de passe de ton compte Google Apps:<br /><br />
+ <form action="googleapps/password#password" method="post" id="changepass">
+ <table class="tinybicol">
+ <tr>
+ <td class="titre">Nouveau mot de passe</td>
+ <td><input type="password" name="nouveau" /></td>
+ </tr>
+ <tr>
+ <td class="titre">Vérification</td>
+ <td><input type="password" name="nouveau2" /></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="submit" value="Changer" onclick="EnCryptedResponse(); return false;" /></td>
+ </tr>
+ </table>
+ </form>
+ <form action="googleapps/password#password" method="post" id="changepass2">
+ <input type="hidden" name="response2" value="" />
+ </form><br />
+ Pour une sécurité optimale, ton mot de passe circule de manière sécurisée (https).
+ Il est chiffré irréversiblement sur nos serveurs, ainsi que sur ceux de Google.
+ </li>
+ </ul>
+ </td>
+ </tr>
+ {/if}
+ {/if}
+</table>
+<br />
+
+<table class="bicol" id="emails">
+ <tr>
+ <th>Redirection des emails vers Google Apps</th>
+ </tr>
+
+ <tr class="impair">
+ {if $redirect_active and !$redirect_unique}
+ <td>Tu reçois tes emails Polytechnique.org entre autres sur ton compte mail Google Apps.</td>
+ {elseif $redirect_active}
+ <td>Tu ne reçois tes emails Polytechnique.org <em>que</em> sur ton compte mail Google Apps.</td>
+ {else}
+ <td>Tu ne reçois <em>pas</em> tes emails Polytechnique.org sur ton compte mail Google Apps.</td>
+ {/if}
+ </tr>
+ <tr class="pair">
+ <td class="center"><a href="emails/redirect">Changer mes redirections mail</a></td>
+ </tr>
+</table>
+{/if}
+
+{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+
+{config_load file="mails.conf" section="googleapps"}
+{if $mail_part eq 'head'}
+{from full=#from#}
+{to addr=$email}
+{cc full=#from#}
+{subject text="[Polytechnique.org] Réactivation de ton compte Google Apps"}
+{elseif $mail_part eq 'wiki'}
+{if $sexe}Chère{else}Cher{/if} {$prenom},
+
+Ton compte Google Apps pour Polytechnique.org vient d'être réactivé.\\
+Ton nom d'utilisateur pour ces services Google est '''{$account->g_account_name}'''
+{if $account->sync_password}
+et ton mot de passe est celui de Polytechnique.org.
+{else}
+et ton mot de passe est celui que tu as choisi lors de ta demande de compte.
+{/if}
+
+Tu trouvera plus d'information dans la [[https://www.polytechnique.org/Xorg/GoogleApps|documentation]] sur Polytechnique.org.
+
+Cordialement,\\
+-- \\
+L'équipe de Polytechnique.org
+{/if}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/literal}
//]]></script>
<form action="{$csv_path}" method="post" id="csv_form">
-<table class="cadre_a_onglet" cellpadding="0" cellspacing="0" style="width: 98%; margin-left:1%;">
- <tr>
- <td>
- <ul id="onglet">
- {if $csv_page eq 'source'}
- <li class="actif">1 - Choisir<br />la source</li>
- {else}
- <li><a href="{$csv_path}" onclick="return gotoPage('source');">1 - Choisir<br />la source</a></li>
- {/if}
- {if $csv_page eq 'values'}
- <li class="actif">2 - Définir<br />les valeurs</li>
- {elseif $smarty.session.csv}
- <li><a href="{$csv_path}" onclick="return gotoPage('values');">2 - Définir<br />les valeurs</a></li>
- {else}
- <li>2 - Définir<br />les valeurs</li>
- {/if}
- {if $csv_page eq 'valid'}
- <li class="actif">3 - Vérifier<br />et valider</li>
- {elseif $csv_action}
- <li><a href="{$csv_path}" onclick="return gotoPage('valid');">3 - Vérifier<br />et valider</a></li>
- {else}
- <li>3 - Vérifier<br />et valider</li>
- {/if}
- </ul>
- </td>
- </tr>
- <tr>
- <td class="conteneur_tab">
- <table style="width: 100%">
- <tr>
- <td>
+ <div class="center" style="padding-bottom: 1em">
+ Import d'un CSV :
{if $csv_page eq 'source'}
- <textarea name="csv_source" rows="20" cols="80">{$smarty.session.csv|default:$smarty.session.csv_source}</textarea><br />
- Entrez les données sous la forme suivante (avec
- <input type="text" name="csv_separator" value="{$smarty.session.csv_separator|default:";"}" maxlength="1" size="1" />
- comme séparateur) :<br/>
- <pre class="center">TITRE1{$smarty.session.csv_separator|default:";"}TITRE2{$smarty.session.csv_separator|default:";"}...
+ <span class="erreur">Choisir la source</span>
+ {else}
+ <a href="{$csv_path}" onclick="return gotoPage('source');">Choisir la source</a>
+ {/if}
+ »
+ {if $csv_page eq 'values'}
+ <span class="erreur">Définir les valeurs</span>
+ {elseif $smarty.session.csv}
+ <a href="{$csv_path}" onclick="return gotoPage('values');">Définir les valeurs</a>
+ {else}
+ Définir les valeurs
+ {/if}
+ »
+ {if $csv_page eq 'valid'}
+ <span class="erreur">Vérifier et valider</span>
+ {elseif $csv_action}
+ <a href="{$csv_path}" onclick="return gotoPage('valid');">Vérifier et valider</a>
+ {else}
+ Vérifier et valider
+ {/if}
+ </div>
+ {if $csv_page eq 'source'}
+ <div>
+ <textarea name="csv_source" rows="20" cols="80">{$smarty.session.csv|default:$smarty.session.csv_source}</textarea><br />
+ Entrez les données sous la forme suivante (avec
+ <input type="text" name="csv_separator" value="{$smarty.session.csv_separator|default:";"}" maxlength="1" size="1" />
+ comme séparateur) :<br/>
+ <pre class="center">TITRE1{$smarty.session.csv_separator|default:";"}TITRE2{$smarty.session.csv_separator|default:";"}...
val1_1{$smarty.session.csv_separator|default:";"}val1_2{$smarty.session.csv_separator|default:";"}...
val2_1{$smarty.session.csv_separator|default:";"}val2_2{$smarty.session.csv_separator|default:";"}...
val3_1{$smarty.session.csv_separator|default:";"}val3_2{$smarty.session.csv_separator|default:";"}...</pre>
- {elseif $csv_page eq 'values'}
+ </div>
+ {elseif $csv_page eq 'values'}
<div class="center">
- Action à effectuer si l'entrée existe :
+ Action à effectuer si l'entrée existe :
<select name="csv_action" onchange="this.form.submit()">
<option value="insert" {if $smarty.session.csv_action eq 'insert'}selected="selected"{/if}>
ne rien faire
Les données ont été ajoutées.
{/if}
{/if}
- </td>
- </tr>
{if !$csv_done}
- <tr>
- <td class="center">
+ <div class="center">
<input type="hidden" name="csv_page" value="{$csv_page}" />
<input type="hidden" id="csv_next_page" name="csv_next_page" value="{$csv_page}" />
{if $csv_page eq 'source'}
{elseif $csv_page eq 'valid'}
<input type="submit" name="csv_valid" value="Valider" />
{/if}
- </td>
- </tr>
+ </div>
{/if}
- </table>
- </td>
- </tr>
-</table>
</form>
{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
min = document.getElementById(prefix + 'promo_min').value;
max = document.getElementById(prefix + 'promo_max').value;
if (isNaN(min) || (min != 0 && (min < 1900 || min > 2020))) {
- range.innerHTML = '<span class="erreur">La promotion minimum n\'est pas valide</span>';
+ range.innerHTML = '<span class="erreur">La promotion minimum n\'est pas valide.</span>';
return false;
} else if (isNaN(max) || (max != 0 && (max < 1900 || max > 2020))) {
- range.innerHTML = '<span class="erreur">La promotion maximum n\'est pas valide</span>';
+ range.innerHTML = '<span class="erreur">La promotion maximum n\'est pas valide.</span>';
return false;
} else if (max != 0 && min != 0 && max < min) {
- range.innerHTML = '<span class="erreur">L\'intervalle de promotion est inversé</span>';
+ range.innerHTML = '<span class="erreur">L\'intervalle de promotion est inversé.</span>';
return false;
} else if (max == 0 && min == 0) {
- range.innerHTML = 'L\'annonce est destinée à toutes les promotions';
+ range.innerHTML = 'L\'annonce est destinée à toutes les promotions.';
} else if (max == 0) {
- range.innerHTML = 'L\'annonce est destinée aux promotions plus jeunes que ' + min + ' (incluse)';
+ range.innerHTML = 'L\'annonce est destinée aux promotions plus jeunes que ' + min + ' (incluse).';
} else if (min == 0) {
- range.innerHTML = "L\'annonce est destinée aux promotions plus anciennes que " + max + ' (incluse)';
+ range.innerHTML = "L\'annonce est destinée aux promotions plus anciennes que " + max + ' (incluse).';
} else if (min == max - 1) {
- range.innerHTML = "L\'annonce est destinée aux promotions " + min + " et " + max;
+ range.innerHTML = "L\'annonce est destinée aux promotions " + min + " et " + max + ".";
} else if (min == max) {
- range.innerHTML = "L\'annonce est destinée à la promotion " + min;
+ range.innerHTML = "L\'annonce est destinée à la promotion " + min + ".";
} else {
- range.innerHTML = "L\'annonce est destinée aux promotions de " + min + " à " + max + ' (incluses)';
+ range.innerHTML = "L\'annonce est destinée aux promotions de " + min + " à " + max + ' (incluses).';
}
return true;
}
<input type="text" name="{$min_field_name|default:"promo_min"}" id="{$prefix}promo_min"
size="4" maxlength="4" value="{$promo_min|default:0}"
onkeyup="return updateRange();" onchange="return updateRange();" /> incluse
- <span class="smaller">(ex : 1980)</span>
+ <span class="smaller">(ex : 1980)</span>
</td>
</tr>
<tr id="{$prefix}promo_max_tr" class="impair">
<input type="text" name="{$max_field_name|default:"promo_max"}" id="{$prefix}promo_max"
size="4" maxlength="4" value="{$promo_max|default:0}"
onkeyup="return updateRange();" onchange="return updateRange();" /> incluse
- <span class="smaller">(ex : 2000)</span>
+ <span class="smaller">(ex : 2000)</span>
</td>
</tr>
<tr id="{$prefix}promo_range_tr" class="impair">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<td>{$valid->alias}</td>
</tr>
<tr class="pair">
- <td class="titre">Visibilité :</td>
+ <td class="titre">Visibilité :</td>
<td>{$valid->public}</td>
</tr>
<tr class="pair">
- <td class="titre">Motif :</td>
+ <td class="titre">Motif :</td>
<td>{$valid->raison|nl2br}</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-{config_load file="mails.conf" section="listes_promo"}
-{if $mail_part eq 'head'}
-{from full=#from#}
-{to addr=#to#}
-{subject text="Création de la liste promo $promo"}
-{elseif $mail_part eq 'text'}
-Création de la liste promo {$promo} à faire !
-{/if}
+<tr class="pair">
+ <td class="titre">Motif de la suspension :</td>
+ <td>{$valid->suspension_reason()|default:"-none-"|nl2br}</td>
+</tr>
+
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
<tr class="pair">
- <td class="titre">Adresse litigieuse :</td>
+ <td class="titre">Adresse litigieuse :</td>
<td>
{$valid->loginbis}@polytechnique.org
</td>
</tr>
<tr class="pair">
- <td class="titre">Homonymes :</td>
+ <td class="titre">Homonymes :</td>
<td>
{foreach from=$valid->homonymes_forlife item=o}
<a href='profile/{$o}' class='popup2'>{$o}</a>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $valid->m_relance neq '0000-00-00' && $valid->m_relance neq ''}
<tr class="pair">
- <td class="titre">Dernière relance le :</td>
+ <td class="titre">Dernière relance le :</td>
<td>{$valid->m_relance|date_format}</td>
</tr>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr class="pair">
- <td class="titre">Médaille :</td>
+ <td class="titre">Médaille :</td>
<td>{$valid->medal_name()}</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{capture name=order}
{if $plset_count > 1}
<div>
- Trier par :
+ Trier par :
{foreach from=$orders key=name item=sort}
[
{if $name eq $order}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<div class="long">
<table cellspacing="0" cellpadding="0">
<tr>
- <td class="lt">Expertise :</td>
+ <td class="lt">Expertise :</td>
<td class="rt" colspan="2">{$p.expertise|nl2br}</td>
</tr>
</table>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr class="{cycle values="pair,impair"}">
<td>{$login}</td>
<td>
- Camarade :
+ Camarade :
<select name="mk_uid[{$login}]">
{iterate from=$it item=user}
<option value="{$user.user_id}">{$user.prenom} {$user.nom} (X{$user.promo})</option>
{/iterate}
</select><br />
- Action<a href="{$platal->pl_self()}#action_desc">*</a> :
+ Action<a href="{$platal->pl_self()}#action_desc">*</a> :
<select name="mk_action[{$login}]" onchange="showEmail(this.value, '{$login}');">
<option value="none">Aucune</option>
<option value="marketu">Envoyer un mail en ton nom</option>
<option value="sub">Lui proposer l'inscription</option>
</select><br />
<span id="mk_s_mail[{$login}]" style="display: none">
- Email : <input type="text" name="mk_email[{$login}]" value="" />
+ Email : <input type="text" name="mk_email[{$login}]" value="" />
</span>
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<td>
{if $details.sub>1}
Tu es inscrit sur la liste.<br />
- Te désinscrire :
+ Te désinscrire :
<a href='{$platal->pl_self(1)}?del=1'>{icon name=cross title="me désinscrire"}</a>
{elseif $details.sub eq 1}
Ta demande d'inscription est en cours de validation.
{else}
Tu n'es pas inscrit.<br />
- Demander ton inscription :
+ Demander ton inscription :
<a href="{$platal->pl_self(1)}?add=1">{icon name=add title="demander mon inscription"}</a>
{/if}
</td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<p>
N'importe qui peut faire la demande de création d'une mailing-list, il suffit pour cela d'être au
moins 4 polytechniciens inscrits sur le site, et de fournir les informations suivantes concernant la
-liste :
+liste :
</p>
<form action='lists/create' method='post'>
</td>
</tr>
<tr>
- <td class='titre'>Sujet (bref) :</td>
+ <td class='titre'>Sujet (bref) :</td>
<td>
<input type='text' name='desc' size='50' value="{$smarty.post.desc}" />
</td>
</tr>
<tr>
- <td class='titre'>Propriétés :</td>
+ <td class='titre'>Propriétés :</td>
<td>
<table style='width: 100%'>
<tr>
- <td>visibilité :</td>
+ <td>visibilité :</td>
<td><input type='radio' name='advertise' value='0'
{if $smarty.post.advertise eq 0 && $smarty.post}checked='checked'{/if} />publique</td>
<td><input type='radio' name='advertise' value='1'
<td></td>
</tr>
<tr>
- <td>diffusion :</td>
+ <td>diffusion :</td>
<td><input type='radio' name='modlevel' value='0'
{if !$smarty.post.modlevel}checked='checked'{/if} />libre</td>
<td><input type='radio' name='modlevel' value='1'
{if $smarty.post.modlevel eq 2}checked='checked'{/if} />modérée</td>
</tr>
<tr>
- <td>inscription :</td>
+ <td>inscription :</td>
<td><input type='radio' name='inslevel' value='0'
{if $smarty.post.inslevel eq 0 && $smarty.post}checked='checked'{/if} />libre</td>
<td><input type='radio' name='inslevel' value='1'
<p>
La création de la liste sera soumise à un contrôle manuel avant d'être validée. Ce contrôle a
pour but notamment de vérifier qu'il n'y aura pas ambiguité entre les membres de la liste et son
- identité. Exemple : n'importe qui ne peut pas ouvrir pointgamma@polytechnique.org, il ne suffit
+ identité. Exemple : n'importe qui ne peut pas ouvrir pointgamma@polytechnique.org, il ne suffit
pas d'être le premier à le demander.
</p>
<p>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr class='impair'>
<td>
Veux tu réellement détruire la liste {$details.addr} ?<br />
- Pour valider ton choix, écris en majuscules (sans espace) « OUI » :
+ Pour valider ton choix, écris en majuscules (sans espace) « OUI » :
<input type='text' size='3' maxlength='3' name="valid" />
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</td>
</tr>
<tr>
- <td><strong>Liste {$platal->argv[1]} :</strong></td>
+ <td><strong>Liste {$platal->argv[1]} :</strong></td>
<td>
{if $on neq members}
[<a href='{$platal->ns}lists/members/{$platal->argv[1]}'>liste des membres</a>]
</tr>
{if $details.own || hasPerms('admin,groupadmin')}
<tr>
- <td><strong>Administrer la liste :</strong></td>
+ <td><strong>Administrer la liste :</strong></td>
<td>
{if $on neq moderate}
[<a href='{$platal->ns}lists/moderate/{$platal->argv[1]}'>modération</a>]
{if hasPerms('admin,groupadmin')}
<tr>
- <td><strong>Administrer (avancé) :</strong></td>
+ <td><strong>Administrer (avancé) :</strong></td>
<td>
{if $on neq soptions}
[<a href='{$platal->ns}lists/soptions/{$platal->argv[1]}'>options avancées</a>]
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h2>La diffusion sur une liste de diffusion</h2>
<p>
-La diffusion a trois niveaux de modération. La diffusion peut être :
+La diffusion a trois niveaux de modération. La diffusion peut être :
</p>
<ul>
- <li><strong>libre :</strong> tout le monde peut y envoyer des mails, la diffusion y est
+ <li><strong>libre :</strong> tout le monde peut y envoyer des mails, la diffusion y est
immédiate ;</li>
- <li><strong>restreinte :</strong> les membres de la liste peuvent envoyer librement des mails,
+ <li><strong>restreinte :</strong> les membres de la liste peuvent envoyer librement des mails,
les extérieurs sont modérés ;</li>
- <li><strong>modérée :</strong> l'envoi d'un mail à la liste est alors filtré par des
+ <li><strong>modérée :</strong> l'envoi d'un mail à la liste est alors filtré par des
modérateurs, eux seuls peuvent accepter un message envoyé à la liste.</li>
</ul>
{assign var="has_private" value=false}
{include file='lists/listes.inc.tpl' lists=$member}
-<p class="smaller">Attention : lorsqu'une liste à laquelle tu es abonné est privée, l'icône {icon name=weather_cloudy} est affichée en début de ligne. Si tu t'en désinscris, il ne te sera pas possible de t'y abonner de nouveau sans l'action d'un modérateur.</p>
+<p class="smaller">Attention : lorsqu'une liste à laquelle tu es abonné est privée, l'icône {icon name=weather_cloudy} est affichée en début de ligne. Si tu t'en désinscris, il ne te sera pas possible de t'y abonner de nouveau sans l'action d'un modérateur.</p>
{/if}
<h1>Listes de diffusion publiques auxquelles tu peux t'inscrire</h1>
<th colspan='2'>Inscription à une liste de diffusion promo</th>
</tr>
<tr>
- <td class='titre'>Promotion :</td>
+ <td class='titre'>Promotion :</td>
<td>
<input type='text' size='4' maxlength='4' name='promo_add' />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mdel=1'));">
{icon name=delete title="Spam"}
</a>
- De : {$m.sender}<br />
+ De : {$m.sender}<br />
<a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}'>
{icon name=magnifier title="Voir le message"}
</a>
- Sujet : {$m.subj|hdc|smarty:nodefaults|default:"[pas de sujet]"}<br />
+ Sujet : {$m.subj|hdc|smarty:nodefaults|default:"[pas de sujet]"}<br />
{/foreach}
</span>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<td>
{if $details.sub>1}
Tu es inscrit sur la liste.<br />
- Te désinscrire :
+ Te désinscrire :
<a href='{$platal->pl_self(1)}?del=1'>{icon name=cross title="me désinsiscrire"}</a>
{elseif $details.sub eq 1}
Ta demande d'inscription est en cours de validation.
{else}
Tu n'es pas inscrit.<br />
- Demander ton inscription :
+ Demander ton inscription :
<a href="{$platal->pl_self(1)}?add=1">{icon name=add title="demander mon inscription"}</a>
{/if}
</td>
</td>
<td>
{if $promo && strpos($x.l, '@') === false}
+ {if $x.b}<a href="marketing/broken/{$x.l}">{icon name=error}</a>{/if}
<a href="profile/{$x.l}" class="popup2">{$x.n}</a>
{elseif $x.x}
<a href="{$platal->ns}member/{$x.x}">{$x.n}</a>
</td>
<td>
{if $promo && strpos($x.l, '@') === false}
+ {if $x.b}<a href="marketing/broken/{$x.l}">{icon name=error}</a>{/if}
<a href="profile/{$x.l}" class="popup2">{$x.n}</a>
{elseif $x.x}
<a href="{$platal->ns}member/{$x.x}">{$x.n}</a>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<th class='titre'>Modérer le mail</th>
</tr>
<tr>
- <td>raison (pour les refus) :
+ <td>raison (pour les refus) :
<textarea cols='50' rows='10' name='reason' id='raison'>
--
{$smarty.session.prenom} {$smarty.session.nom} (X{$smarty.session.promo})
</ul>
</form>
<p>
-En cas de refus, le mail envoyé à l'auteur du mail que tu modères actuellement sera de la forme suivante :
+En cas de refus, le mail envoyé à l'auteur du mail que tu modères actuellement sera de la forme suivante :
</p>
<pre>{$msg|utf8_encode}</pre>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<form method='post' action='{$platal->pl_self(1)}'>
<table class='tinybicol' cellpadding='0' cellspacing='0'>
<tr>
- <th class='titre'>refuser l'inscription de :</th>
+ <th class='titre'>refuser l'inscription de :</th>
</tr>
<tr>
<td>{$del_user.name}</td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr><th colspan='2'>Options de la liste {$details.addr}</th></tr>
<tr class='impair'>
<td>
- <strong>description courte :</strong><br />
+ <strong>description courte :</strong><br />
<span class='smaller'>une courte phrase pour décrire la liste.</span>
</td>
<td>
</tr>
<tr class='impair'>
<td>
- <strong>description longue :</strong><br />
+ <strong>description longue :</strong><br />
<span class='smaller'>une description plus longue de la liste.</span>
</td>
<td>
</tr>
<tr class='pair'>
<td>
- <strong>message de bienvenue :</strong><br />
+ <strong>message de bienvenue :</strong><br />
<span class='smaller'>un texte de bienvenue incorporé au mail envoyé aux nouveaux
abonnés à la liste.</span>
</td>
</tr>
<tr class='impair'>
<td>
- <strong>message d'adieu :</strong><br />
+ <strong>message d'adieu :</strong><br />
<span class='smaller'>un texte d'au revoir incorporé au mail de départ envoyé aux
utilisateurs qui se désinscrivent. Ce mail peut être désactivé.</span>
</td>
<tr><th colspan='2'>Options avancées de la liste {$details.addr}</th></tr>
<tr class='impair'>
<td>
- <strong>ajout dans le sujet :</strong><br />
+ <strong>ajout dans le sujet :</strong><br />
<span class='smaller'>Un préfixe (optionnel) ajouté dans le sujet de chaque mail envoyé sur la liste te permet de trier plus facilement ton courrier.</span>
</td>
<td>
</tr>
<tr class='impair'>
<td>
- <strong>notification de (dés)abonnement :</strong><br />
+ <strong>notification de (dés)abonnement :</strong><br />
<span class='smaller'>notifier les modérateurs des inscriptions/désinscriptions d'utilisateurs sur cette liste.</span>
</td>
<td>
</tr>
<tr class='impair'>
<td>
- <strong>diffusion :</strong>
+ <strong>diffusion :</strong>
</td>
<td>
<input type='radio' name='moderate' value='0'
</tr>
<tr class='impair'>
<td>
- <strong>inscription libre ou modérée :</strong><br />
+ <strong>inscription libre ou modérée :</strong><br />
<span class='smaller'>détermine si les inscriptions à la liste sont modérées ou non.</span>
</td>
<td>
</tr>
<tr class='impair'>
<td>
- <strong>antispam :</strong><br />
+ <strong>antispam :</strong><br />
<span class='smaller'>détermine la politique de l'antispam sur cette liste.</span>
</td>
<td>
</p>
<p class='erreur'>
-Attention, cette liste est à utiliser pour des non-X ou des non-inscrits à la liste :
+Attention, cette liste est à utiliser pour des non-X ou des non-inscrits à la liste :
</p>
<p>
les X inscrits à la liste doivent ajouter leurs adresses usuelles parmis leurs adresses de
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr><th colspan='2'>Options de la liste {$details.addr}</th></tr>
<tr class='impair'>
<td>
- <strong>msg_header :</strong><br />
+ <strong>msg_header :</strong><br />
<span class='smaller'>ajouté au début de tous les messages.</span>
</td>
<td>
</tr>
<tr class='impair'>
<td>
- <strong>msg_footer :</strong><br />
+ <strong>msg_footer :</strong><br />
<span class='smaller'>ajouté à la fin de tous les messages.</span>
</td>
<td>
<tr><th colspan='2'>Options avancées de la liste {$details.addr}</th></tr>
<tr class='impair'>
<td>
- <strong>visibilité :</strong><br />
+ <strong>visibilité :</strong><br />
<span class='smaller'>si coché, la liste sera listée dans la page de l'ensemble des listes.
(les listes d'admin doivent être décochées)</span>
</td>
</tr>
<tr class='pair'>
<td>
- <strong>archive :</strong><br />
+ <strong>archive :</strong><br />
<span class='smaller'>Liste archivée ?</span>
</td>
<td>
</tr>
<tr class='impair'>
<td>
- <strong>max_message_size :</strong><br />
+ <strong>max_message_size :</strong><br />
<span class='smaller'>Taille maximale des posts en Ko:</span>
</td>
<td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<table class="bicol" summary="Fiche camarade">
<tr><th colspan="2">Proposition d'adresse pour<br />{$user.nom} {$user.prenom} (X{$user.promo})</th></tr>
<tr class="pair">
- <td>Adresse email :</td>
+ <td>Adresse email :</td>
<td>
<input type="text" name="mail" size="30" maxlength="50" value="{$smarty.post.mail}" />
</td>
</tr>
{if $user.email}
<tr class="impair">
- <td>Explication :</td>
+ <td>Explication :</td>
<td><textarea name="comment" cols="50" rows="4">{$smarty.post.comment}</textarea></td>
</tr>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<br />
<p>
-Nombre d'X vivants d'après notre base de données : {$stats.vivants}<br />
-Nombre d'X vivants inscrits à Polytechnique.org : {$stats.inscrits}<br />
-Soit un pourcentage d'inscrits de : {$stats.ins_rate} %<br />
+Nombre d'X vivants d'après notre base de données : {$stats.vivants}<br />
+Nombre d'X vivants inscrits à Polytechnique.org : {$stats.inscrits}<br />
+Soit un pourcentage d'inscrits de : {$stats.ins_rate} %<br />
</p>
<p>
-Parmi ceux-ci :<br />
-Nombre d'X vivants depuis 1972 d'après notre base de données : {$stats.vivants72}<br />
-Nombre d'X vivants depuis 1972 inscrits à Polytechnique.org : {$stats.inscrits72}<br />
-Soit un pourcentage d'inscrits de : {$stats.ins72_rate} % <br />
+Parmi ceux-ci :<br />
+Nombre d'X vivants depuis 1972 d'après notre base de données : {$stats.vivants72}<br />
+Nombre d'X vivants depuis 1972 inscrits à Polytechnique.org : {$stats.inscrits72}<br />
+Soit un pourcentage d'inscrits de : {$stats.ins72_rate} % <br />
</p>
<p>
-Nombre de Polytechniciennes vivantes : {$stats.vivantes}<br />
-Nombre de Polytechniciennes vivantes et inscrites : {$stats.inscrites} <br />
-Soit un pourcentage d'inscrites de : {$stats.inse_rate} % <br />
+Nombre de Polytechniciennes vivantes : {$stats.vivantes}<br />
+Nombre de Polytechniciennes vivantes et inscrites : {$stats.inscrites} <br />
+Soit un pourcentage d'inscrites de : {$stats.inse_rate} % <br />
</p>
<p>
-Nombre d'<a href="marketing/this_week">inscrits ces 7 derniers jours</a> : {$nbInsSem}<br />
-Nombre d'<a href="marketing/relance">inscriptions en cours</a> (2ème phase non terminée) : {$nbInsEnCours} <br />
-Nombre d'envois marketing effectués n'ayant pas abouti : {$nbInsMarket}<br />
-Nombre d'envois marketing ayant abouti cette semaine : {$nbInsMarkOK}
+Nombre d'<a href="marketing/this_week">inscrits ces 7 derniers jours</a> : {$nbInsSem}<br />
+Nombre d'<a href="marketing/relance">inscriptions en cours</a> (2ème phase non terminée) : {$nbInsEnCours} <br />
+Nombre d'envois marketing effectués n'ayant pas abouti : {$nbInsMarket}<br />
+Nombre d'envois marketing ayant abouti cette semaine : {$nbInsMarkOK}
</p>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{#globals.baseurl#}/register/%%hash%%
==========================================================
-Il ne te faut que 5 minutes sur https://www.polytechnique.org/ pour rejoindre la communauté polytechnicienne sur le web grâce aux services de Polytechnique.org dont profitent déjà {$num_users} camarades. Cela te permettera, entre autres, de contacter un X en connaissant seulement son nom et son prénom et de bénéficier à vie d'une adresse prestigieuse {$u.forlife}@polytechnique.org et de son alias discret {$u.forlife}@m4x.org (m4x = mail for X).
+Il ne te faut que 5 minutes sur https://www.polytechnique.org/ pour rejoindre la communauté polytechnicienne sur le web grâce aux services de Polytechnique.org dont profitent déjà {$num_users} camarades. Cela te permettra, entre autres, de contacter un X en connaissant seulement son nom et son prénom et de bénéficier à vie d'une adresse prestigieuse {$u.forlife}@polytechnique.org et de son alias discret {$u.forlife}@m4x.org (m4x = mail for X).
Pas de nouvelle boîte aux lettres à relever, il suffit de la rediriger vers ton adresse personnelle et/ou professionnelle que tu indiques et que tu peux changer à ta guise, sans que tes correspondants n'aient à actualiser leur carnet d'adresses.
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h2>Matricules</h2>
-Matricule polytechnique.org : {$matricule}
+Matricule polytechnique.org : {$matricule}
{if $matricule_X}
<br />
-Matricule École (à rentrer lors de l'inscription) : <strong>{$matricule_X}</strong>
+Matricule École (à rentrer lors de l'inscription) : <strong>{$matricule_X}</strong>
{/if}
{if $pending}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $it.dern_rel && $it.dern_rel != '0000-00-00'}
Relance le: {$it.dern_rel}
{elseif $it.email}
- En cours : {$it.email}
+ En cours : {$it.email}
{else}
-
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<form method="post" action="{$platal->path}">
<table class="bicol" summary="Fiche camarade">
- <tr class="impair"><td>Nom :</td><td>{$nom}</td></tr>
- <tr class="pair"><td>Prénom :</td><td>{$prenom}</td></tr>
- <tr class="impair"><td>Promo :</td><td>{$promo}</td></tr>
+ <tr class="impair"><td>Nom :</td><td>{$nom}</td></tr>
+ <tr class="pair"><td>Prénom :</td><td>{$prenom}</td></tr>
+ <tr class="impair"><td>Promo :</td><td>{$promo}</td></tr>
<tr class="pair">
- <td>Adresse email :</td>
+ <td>Adresse email :</td>
<td>
<input type="text" name="mail" size="30" maxlength="50" />
</td>
</tr>
<tr class="impair">
- <td>Nous lui écrirons :</td>
+ <td>Nous lui écrirons :</td>
<td>
<input type="radio" name="origine" value="user" checked="checked" /> en ton nom<br />
<input type="radio" name="origine" value="staff" /> au nom de l'équipe Polytechnique.org
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>Marketing volontaire</h1>
<p>
-Choix de la promo :
+Choix de la promo :
</p>
<p>
{foreach from=$promos item=p}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</td>
<td>
<input type='text' size='16' name='shortname' value="{$nl->_shortname}" />
- <span class="smaller">(Ex : 2006-06 pour la NL de juin 2006)</span>
+ <span class="smaller">(Ex : 2006-06 pour la NL de juin 2006)</span>
</td>
</tr>
<tr>
<td>
Créer un nouvel article ...
</td>
- <td style='vertical-align:middle; border-left: 1px gray solid'>
- [<a href="admin/newsletter/edit/{$nl->_id}/new#edit">créer</a>]
+ <td style='vertical-align:middle; border-left: 1px gray solid' class="center">
+ <a href="admin/newsletter/edit/{$nl->_id}/new#edit">{icon name=add title="créer"}</a>
</td>
</tr>
{foreach from=$nl->_arts item=arts key=cat}
{foreach from=$arts item=art}
<tr class="{cycle values="impair,pair"}">
<td>
- <pre>{$art->toText($smarty.session.prenom,$smarty.session.nom,$smarty.session.femme)|smarty:nodefaults}</pre>
+ <pre>{$art->toText($smarty.session.prenom,$smarty.session.nom,$smarty.session.femme)}</pre>
</td>
<td style='vertical-align:middle; border-left: 1px gray solid'>
- <strong>Pos: {$art->_pos}</strong><br />
- [<a href="admin/newsletter/edit/{$nl->_id}/{$art->_aid}/edit#edit">edit</a>]<br />
- [<a href="admin/newsletter/edit/{$nl->_id}/{$art->_aid}/delete">delete</a>]
+ <small><strong>Pos: {$art->_pos}</strong></small><br />
+ <a href="admin/newsletter/edit/{$nl->_id}/{$art->_aid}/edit#edit">{icon name="page_edit" title="Editer"}</a>
+ <a href="admin/newsletter/edit/{$nl->_id}/{$art->_aid}/delete">{icon name="delete" title="Supprimer"}</a>
</td>
</tr>
{/foreach}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr><th>{$nl->title(true)}</th></tr>
<tr>
<td>
- {include file="newsletter/nl.tpl"}
+ {include file="newsletter/nl.mail.tpl"}
</td>
</tr>
</table>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</script>
<form method="post" action="{$platal->pl_self()}">
- <p> Si tu ne souhaites pas utiliser notre interface de
- télépaiement, tu peux virer directement la somme de ton choix sur notre compte
- <strong>30004 00314 00010016782 60</strong>. Nous veillerons à ce que ton paiement parvienne à
- son destinataire. Pense toutefois à le préciser dans le motif du
- versement.
- <br /><br />
</p>
<table class="bicol">
<tr>
</form>
{if $transactions}
-<p class="descr">Tu as déjà effectué des paiements pour cette transaction :</p>
+<p class="descr">Tu as déjà effectué des paiements pour cette transaction :</p>
<table class="bicol">
<tr><th>Date</th><th>Montant</th></tr>
{iterate from=$transactions item=t}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
-<h1>Télépaiments</h1>
+<h1>Télépaiements</h1>
{if $erreur}
<p>Aucun paiement n'a été effectué.</p>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Gestion des télépaiements </h1>
+<h1>{$asso.nom} : Gestion des télépaiements </h1>
<p class="descr">
-Voici la liste des paiements en ligne possible pour le groupe {$asso.nom}
+Voici la liste des paiements en ligne possible pour le groupe {$asso.nom} :
</p>
{foreach from=$titres item=p}
{elseif $ev.topay eq $ev.paid}
Tu as déjà réglé l'intégralité de ton inscription ({$ev.topay}€).
{else}
- Tu as réglé {$ev.paid}€ alors que tu n'en devais que {$ev.topay}€
+ Tu as réglé {$ev.paid}€ alors que tu n'en devais que {$ev.topay}€.
{/if}
{else}
<a href="{$platal->ns}events/sub/{$ev.eid}">Tu peux t'inscire à cet événement.</a>
</tr>
{elseif $smarty.foreach.people.first}
<tr>
- <td colspan="6" class="center">Personne n'a encore payé pour ce télépaiement</td>
+ <td colspan="6" class="center">Personne n'a encore payé pour ce télépaiement.</td>
</tr>
{else}
<tr class="pair">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
pw1 = document.forms.smtppass_form.smtppass1.value;
pw2 = document.forms.smtppass_form.smtppass2.value;
if (pw1 != pw2) {
- alert ("\nErreur : les deux champs ne sont pas identiques !");
+ alert ("\nErreur : les deux champs ne sont pas identiques !");
exit;
return false;
}
if (pw1.length < 6) {
- alert ("\nErreur : le nouveau mot de passe doit faire au moins 6 caractères !");
+ alert ("\nErreur : le nouveau mot de passe doit faire au moins 6 caractères !");
exit;
return false;
}
<table class="tinybicol" cellpadding="3" summary="Définition du mot de passe">
<tr>
<td class="titre">
- Mot de passe (15 caractères maximum) :
+ Mot de passe (15 caractères maximum) :
</td>
<td>
<input type="password" size="15" maxlength="15" name="smtppass1" />
</tr>
<tr>
<td class="titre">
- Retape-le une fois (pour vérification) :
+ Retape-le une fois (pour vérification) :
</td>
<td>
<input type="password" size="15" maxlength="15" name="smtppass2" />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</form>
{else}
-En voici les adresses :
+En voici les adresses :
<ul>
<li>
- Anonces sur la page d'entrée :
- <a href='rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml'>{icon name=feed title='fil rss'}</a>
+ Anonces sur la page d'entrée :
+ <a href="rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml" title="Annonces">{icon name=feed title='fil rss'}</a>
</li>
<li>
- Ton carnet polytechnicien :
- <a href='carnet/rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml'>{icon name=feed title='fil rss'}</a>
+ Ton carnet polytechnicien :
+ <a href="carnet/rss/{$smarty.session.forlife}/{$smarty.session.core_rss_hash}/rss.xml" title="Notifications">{icon name=feed title='fil rss'}</a>
</li>
</ul>
<p>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<br />
-<p><strong>Dans tous les cas,</strong> vous pouvez :</p>
+<p><strong>Dans tous les cas,</strong> vous pouvez :</p>
<ul>
<li class="spaced">
<strong><a href="search"> rechercher un ancien élève ou un
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</tr>
<tr>
<td class="titre">
- Nouveau mot de passe :
+ Nouveau mot de passe :
</td>
<td>
<input type="password" size="10" maxlength="10" name="nouveau" />
</tr>
<tr>
<td class="titre">
- Retape-le une fois :
+ Retape-le une fois :
</td>
<td>
<input type="password" size="10" maxlength="10" name="nouveau2" />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</tr>
<tr>
<td class="titre">
- Login :<br />
+ Login :<br />
<span class="smaller">"prenom.nom" ou "prenom.nom.promo"</span>
</td>
<td>
</tr>
<tr>
<td class="titre">
- Date de naissance :<br />
+ Date de naissance :<br />
<span class="smaller">format JJMMAAAA soit 01032000<br />pour 1<sup>er</sup> mars 2000</span>
</td>
<td>
</tr>
<tr>
<td class="titre">
- Adresse électronique : <span class="smaller">(facultatif)</span>
+ Adresse électronique : <span class="smaller">(facultatif)</span>
</td>
<td>
<input type="text" size="20" maxlength="50" name="email" />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<p>
Tu n'aimes pas les couleurs ou l'apparence de {#globals.core.sitename#} ? Normal, les goûts et les
couleurs, ça ne se discute pas. Certains préfèrent une page sérieuse, d'autres plus
-fantaisiste. A toi de voir :)
+fantaisiste. A toi de voir :)
</p>
<p>
Note aux utilisateurs du navigateur Netscape 4.x ou équivalent.
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
+++ /dev/null
-{**************************************************************************}
-{* *}
-{* Copyright (C) 2003-2007 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 *}
-{* *}
-{**************************************************************************}
-
-{if $etat_naissance}
-{include file="profil/naissance.tpl"}
-{/if}
-{if $etat_naissance == '' || $etat_naissance == 'ok'}
-
-{foreach from=$errs item=e}
-<p class="erreur">{$e}</p>
-{/foreach}
-
-<p>
-Tu peux consulter <a href="profile/{$smarty.session.forlife}" class="popup2">l'état actuel de ta fiche</a>
-telle qu'elle apparaîtra pour un camarade, ou telle qu'elle apparaîtra dans l'annuaire de
-l'<a href="profile/{$smarty.session.forlife}?view=ax" class="popup2">AX</a>
-ou à <a href="profile/{$smarty.session.forlife}?view=public" class="popup2">tout le monde</a>.</p>
-
-<form action="profile/edit/{$onglet}" method="post" id="prof_annu">
- <table class="cadre_a_onglet" cellpadding="0" cellspacing="0" style="width: 98%; margin-left:1%;">
- <tr>
- <td>
- <ul id='onglet'>
- {foreach from=$onglets key=o item=i}
- {if $o eq $onglet}
- <li class="actif">{$i|nl2br}</li>
- {else}
- <li><a href="profile/edit/{$o}">{$i|nl2br}</a></li>
- {/if}
- {/foreach}
- </ul>
- <input type="hidden" value="" name="adresse_flag" />
- </td>
- </tr>
- <tr>
- <td class="conteneur_tab">
- <table style="width:100%">
- <tr>
- <td colspan="2">
- {include file=$onglet_tpl}
- </td>
- </tr>
- <tr class="center">
- <td>
- <input type="submit" value="Valider ces modifications" name="modifier" />
- </td>
- <td>
- <input type="submit" value="Valider et passer au prochain onglet" name="suivant" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</form>
-{/if}
-
-{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $expertise != '' || $secteurs|count || $pays|count }
<div id="part">
- <h2>Informations de référent :</h2>
+ <h2>Informations de référent :</h2>
{if $expertise}
<div class="rubrique_referent">
- <em>Expertise : </em><br />
+ <em>Expertise : </em><br />
<span>{$expertise|nl2br}</span>
</div>
{/if}
{if $secteurs|count}
<div class="rubrique_referent">
- <em>Secteurs :</em><br />
+ <em>Secteurs :</em><br />
<ul>
{foreach from=$secteurs item="secteur" key="i"}
<li>{$secteur}{if $ss_secteurs.$i != ''} ({$ss_secteurs.$i}){/if}</li>
{/if}
{if $pays|count}
<div class="rubrique_referent">
- <em>Pays :</em>
+ <em>Pays :</em>
<ul>
{foreach from=$pays item="pays_i"}
<li>{$pays_i}</li>
{foreach from=$adr_pro item="address" key="i"}
<h2>{$address.entreprise}</h2>
{include file="include/emploi.tpl" address=$address}
- {include file="geoloc/address.tpl" address=$address titre="Adresse : " for=$address.entreprise}
+ {include file="geoloc/address.tpl" address=$address titre="Adresse : " for=$address.entreprise}
<div class="spacer"> </div>
{/foreach}
{if $cv}
<div class="part">
- <h2>Curriculum Vitae : </h2>
+ <h2>Curriculum Vitae : </h2>
<div style="padding: 0 2ex">{$cv|smarty:nodefaults}</div>
</div>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
<table class="bicol" style="margin-bottom: 1em"
- summary="Profil : Informations générales">
+ summary="Profil : Informations générales">
<tr>
<th colspan="2">
<div class="flags" style="float: left">
{if !$no_private_key}
<table class="bicol" style="margin-bottom: 1em"
- summary="Profil : Informations générales">
+ summary="Profil : Informations générales">
<tr>
<th>
Synchronisation avec l'AX
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</tr>
{if $mygroups->total()}
<tr class="pair">
- <td colspan="2">Tu es actuellement dans les groupes suivants :</td>
+ <td colspan="2">Tu es actuellement dans les groupes suivants :</td>
</tr>
{/if}
{assign var=grp_admin value=false}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr>
<td class="titre">Sous-Secteur d'activité</td>
<td id="{$jobid}_ss_secteur">
- <input type="hidden" name="{$jobpref}[ss_secteur]" value="{$job.ss_secteur|default='-1'}" />
+ <input type="hidden" name="{$jobpref}[ss_secteur]" value="{$job.ss_secteur|default:'-1'}" />
</td>
</tr>
<tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<td id="countries">
{foreach from=$countries item=country key=i}
<div id="countries_{$i}" style="clear: both; margin-bottom: 0.7em">
- <div style="float: left; width: 50%">{$country}</div>
+ <a style="display: block; float: right"
+ href="javascript:removeCountry('{$i}')">{icon name=cross title="Supprimer ce pays"}</a>
+ <div class="titre">{$country}</div>
<input type="hidden" name="countries[{$i}]" value="{$country}" />
- <a href="javascript:removeCountry('{$i}')">{icon name=cross title="Supprimer ce pays"}</a>
</div>
{/foreach}
</td>
<a href="javascript:removeSecteur('{$s}', '{$ss}')" style="display: block; float: right">
{icon name=cross title="Supprimer ce secteur"}
</a>
- <input type="hidden" name="secteurs[' + s + '][' + ss + ']" value="{$ss_sect}" />
+ <input type="hidden" name="secteurs[{$s}][{$ss}]" value="{$ss_sect}" />
{$ss_sect}
</div>
{/foreach}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<input type="radio" name="reason" value="divorce" id="reason_div" onclick="this.form.other_reason.value=''" /><label for="reason_div">Divorce</label><br />
{/if}
<input type="radio" name="reason" value="raccourci" id="reason_rac" onclick="this.form.other_reason.value=''" /><label for="reason_rac">Nom d'état civil simplifié, le nom officiel étant trop long</label><br />
- <input type="radio" name="reason" value="other" id="reason_oth" /><label for="reason_oth">Autre :</label><br />
+ <input type="radio" name="reason" value="other" id="reason_oth" /><label for="reason_oth">Autre :</label><br />
<input type="text" name="other_reason" onfocus="document.getElementById('reason_oth').checked='checked'" size="60" />
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
//]]></script>
{/literal}
-{if $logged and $x.forlife eq $smarty.session.forlife}
-[<a href="javascript:chgMainWinLoc('profile/edit')">Modifier ma fiche</a>]
-{/if}
-
<div id="fiche">
<div id="photo" class="part">
{if $photo_url}<img alt="Photo de {$x.forlife}" src="{$photo_url}" width="{$x.x}"/>{/if}
- {if $logged}
- {if $x.section}<div><em class="intitule">Section : </em><span>{$x.section}</span></div>{/if}
- {if $x.binets_join}<div><em class="intitule">Binet(s) : </em><span>{$x.binets_join}</span></div>{/if}
- {if $x.gpxs_join}<div><em class="intitule">Groupe(s) et institution(s) X : </em><span><br/>{$x.gpxs_join|smarty:nodefaults}</span></div>{/if}
+ {if $logged && ( $x.section|smarty:nodefaults || $x.binets_join|smarty:nodefaults || $x.gpxs_join|smarty:nodefaults)}
+ <h2>A l'X...</h2>
+ {if $x.section}<div><em class="intitule">Section : </em><span>{$x.section}</span></div>{/if}
+ {if $x.binets_join}<div><em class="intitule">Binet(s) : </em><span>{$x.binets_join}</span></div>{/if}
+ {if $x.gpxs_join}<div><em class="intitule">Groupe(s) et institution(s) X : </em><span><br/>{$x.gpxs_join|smarty:nodefaults}</span></div>{/if}
+ {/if}
+ {if $x.freetext}
+ <h2>Commentaires :</h2>
+ <span>{$x.freetext|miniwiki|smarty:nodefaults}</span>
{/if}
- {if $x.web}<div><em class="intitule">Site Web : </em><br /><a href="{$x.web}" class='popup'>{$x.web}</a></div>{/if}
- {if $x.freetext}<div><em class="intitule">Commentaires : </em><br /><span>{$x.freetext|miniwiki|smarty:nodefaults}</span></div>{/if}
</div>
<div id="fiche_identite" class="part">
<div class="civilite">
{if $x.sexe}•{/if}
{$x.prenom} {if $x.nom_usage eq ""}{$x.nom}{else}{$x.nom_usage} ({$x.nom}){/if}
{if $logged}
- {if $x.nickname} (alias {$x.nickname}){/if}
- <a href="vcard/{$x.forlife}.vcf">{*
- *}{icon name=vcard title="Afficher la carte de visite"}</a>
+ {if $x.nickname} (alias {$x.nickname}){/if}
+ {/if}
+ {if $x.web} <a href="{$x.web}">{icon name="world_go" title="Site Web"}</a>{/if}
+ {if $logged}
+ {if !$x.dcd}<a href="vcard/{$x.forlife}.vcf">{*
+ *}{icon name=vcard title="Afficher la carte de visite"}</a>{/if}
{if !$x.is_contact}
<a href="javascript:chgMainWinLoc('carnet/contacts?action=ajouter&user={$x.forlife}')">
{icon name=add title="Ajouter à mes contacts"}</a>
<a href="javascript:chgMainWinLoc('admin/user/{$x.forlife}')">
{icon name=wrench title="administrer user"}</a>
{/if}
+ {if $x.forlife eq $smarty.session.forlife}
+ <a href="javascript:chgMainWinLoc('profile/edit')">{icon name="user_edit" title="Modifier ma fiche"}</a>
+ {/if}
{/if}
</div>
{if $logged}
{/if}
{if $x.mobile}
<div class="mob">
- <em class="intitule">Mobile : </em>{$x.mobile}
+ <em class="intitule">Mobile : </em>{$x.mobile}
</div>
{/if}
<div class='spacer'></div>
</div>
{if $x.adr}
<div class="part">
- <h2>Contact : </h2>
- {foreach from=$x.adr item="address" key="i" name=adresses}
- {if $i is odd}
+ <h2>Contact : </h2>
+ {foreach from=$x.adr item="address" name=adresses}
+ {if $smarty.foreach.adresses.iteration is even}
{assign var=pos value="right"}
{else}
{assign var=pos value="left"}
{/if}
{if $address.active}
- {include file="geoloc/address.tpl" address=$address titre_div=true titre="Mon adresse actuelle :"
+ {include file="geoloc/address.tpl" address=$address titre_div=true titre="Mon adresse actuelle :"
for="`$x.prenom` `$x.nom`" pos=$pos}
{elseif $address.secondaire}
- {include file="geoloc/address.tpl" address=$address titre_div=true titre="Adresse secondaire :"
+ {include file="geoloc/address.tpl" address=$address titre_div=true titre="Adresse secondaire :"
for="`$x.prenom` `$x.nom`" pos=$pos}
{else}
- {include file="geoloc/address.tpl" address=$address titre_div=true titre="Adresse principale :"
+ {include file="geoloc/address.tpl" address=$address titre_div=true titre="Adresse principale :"
for="`$x.prenom` `$x.nom`" pos=$pos}
{/if}
- {if $i is odd}<div class="spacer"></div>{/if}
+ {if $smarty.foreach.adresses.iteration is even}<div class="spacer"></div>{/if}
{/foreach}
</div>
{/if}
{if $x.adr_pro}
<div class="part">
- <h2>Informations professionnelles :</h2>
+ <h2>Informations professionnelles :</h2>
{foreach from=$x.adr_pro item="address" key="i"}
{if $i neq 0}<hr />{/if}
{include file="include/emploi.tpl" address=$address}
- {include file="geoloc/address.tpl" address=$address titre="Adresse : " for=$address.entreprise pos="left"}
+ {include file="geoloc/address.tpl" address=$address titre="Adresse : " for=$address.entreprise pos="left"}
<div class="spacer"> </div>
{/foreach}
</div>
{/if}
{if $x.medals}
<div class="part">
- <h2>Distinctions : </h2>
+ <h2>Distinctions : </h2>
{foreach from=$x.medals item=m}
<div class="medal_frame">
<img src="profile/medal/{$m.id}" width="24" alt="{$m.medal}" title="{$m.medal}" style='float: left;' />
{/if}
{if $logged && $x.cv}
<div class="part">
- <h2>Curriculum Vitae :</h2>
+ <h2>Curriculum Vitae :</h2>
{$x.cv|miniwiki:title|smarty:nodefaults}
</div>
{/if}
{if !$logged}
<div class="part">
+ <small>
Cette fiche est publique et visible par tout internaute,<br />
vous pouvez aussi voir <a href="profile/private/{$x.forlife}?display=light">celle réservée aux X</a>.
+ </small>
</div>
{/if}
<div class="spacer"></div>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</tr>
<tr>
<td {if !$submited}colspan="2"{/if} class="center">
- Si tu ne souhaites plus montrer cette photo tu peux aussi l'effacer en la remplaçant par : <br />
+ Si tu ne souhaites plus montrer cette photo tu peux aussi l'effacer en la remplaçant par : <br />
{if $has_trombi_x}
<input type="submit" value="Trombino de l'X" name="trombi" /><br />
{/if}
</td>
{if $submited}
<td class="center">
- Tu peux annuler ta soumission et garder ta photo actuelle : <br />
+ Tu peux annuler ta soumission et garder ta photo actuelle : <br />
<input type="submit" value="Annuler ta soumission" name="cancel" />
</td>
{/if}
</p>
<p>
Si elle est sur Internet, choisis la seconde solution et nos robots iront la télécharger
- directement où il faut :-)
+ directement où il faut :-)
</p>
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{assign var="step" value=$smarty.session.sub_state.step}
<div class="descr center">
- <strong>Procédure d'inscription :</strong>
+ <strong>Procédure d'inscription :</strong>
{if !$step}<span class="erreur">{/if}Charte{if !$step}</span>{/if} »
{if $step eq 1 || $step eq 2}<span class="erreur">{/if}Identification{if $step eq 1 || $step eq 2}</span>{/if} »
{if $step eq 4 || $step eq 3}<span class="erreur">{/if}Pré-Inscription{if $step eq 4 || $step eq 3}</span>{/if} »
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>:'(</h1>
<p class="erreur">
-Une erreur est survenue lors de ton inscription ...
+Une erreur est survenue lors de ton inscription...
</p>
<p>
-Contacte nous au plus vite, en nous indiquant ce nombre : {$uid} sur
+Contacte nous au plus vite, en nous indiquant ce nombre : {$uid} à l'adresse
<a href="mailto:support@{#globals.mail.domain#}">support@{#globals.mail.domain#}</a>
</p>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{elseif $mail_part eq 'text'}
Bonjour,
-Ton inscription sur Polytechnique.org est presque terminée, un clic sur le lien ci-dessous et c'est fini.
+Ton inscription sur Polytechnique.org est presque terminée !
-Après activation, tes paramètres seront :
+Après activation, tes paramètres de connexion seront :
login : {$mailorg}
mot de passe : {$pass}
-Rends-toi sur la page web suivante afin d'activer ta pré-inscription, et de changer ton mot de passe en quelque chose de plus facile à mémoriser :
+Nous te proposerons de remplacer ce mot de passe temporaire par un mot de passe de ton choix.
+
+Rends-toi maintenant sur la page web suivante afin d'activer ta pré-inscription :
{$baseurl}/register/end/{$hash}
-Si en cliquant dessus tu n'y arrives pas, copie intégralement l'adresse dans la barre de ton navigateur.
+Si en cliquant dessus tu n'y arrives pas, copie intégralement ce lien dans la barre d'adresse de ton navigateur.
-Nous espérons que tu profiteras pleinement des services en ligne de Polytechnique.org : s'ils te convainquent, n'oublie pas d'en parler aux camarades autour de toi !
+Nous espérons que tu profiteras pleinement des services en ligne de Polytechnique.org ; s'ils te convainquent, n'oublie pas d'en parler aux camarades autour de toi !
Bien cordialement,
-Polytechnique.org
-"Le portail des élèves & anciens élèves de l'Ecole polytechnique"
+L'équipe de Polytechnique.org,
+Le portail des élèves et anciens élèves de l'École polytechnique
{/if}
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>Conditions générales</h1>
<p>
-L'enregistrement se déroule <strong>en deux étapes</strong> :
+L'enregistrement se déroule <strong>en deux étapes</strong> :
</p>
<ul>
<li>
- la pré-inscription quit te prendra moins de 5 minutes ;
+ tu te pré-inscris, ce qui te prendra moins de 5 minutes ;
</li>
<li>
- suivi d'un envoi d'un mail de notre part (immédiat !) qui te permettra
- de te connecter au site !
+ nous t'envoyons immédiatement un email qui te permettra
+ de te connecter au site.
</li>
</ul>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<form action="register" method="post">
<p>
- Avant toute chose, il te faut nous donner ta promotion :
+ Avant toute chose, il te faut nous donner ta promotion :
</p>
<table class="tinybicol">
<tr>
</tr>
<tr>
<td>
- Donne ta promotion sur 4 chiffres :
+ Donne ta promotion sur 4 chiffres :
<input type="text" size="4" maxlength="4" name="promo" value="{$smarty.post.promo}" />
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
</tr>
<tr>
<td class="titre">
- Matricule X :
+ Matricule X :
</td>
<td>
<input type="text" size="6" maxlength="6" name="mat"
{math equation="(promo % 100) + 100" promo=$promo}532)<br />
{/if}
Voir sur le GU ou un bulletin de solde pour trouver cette information<br /><br />
- Pour les élèves étrangers voie 2, il est du type :
+ Pour les élèves étrangers voie 2, il est du type :
{if $promo < 1999}
{math equation="(promo + 1) % 100" promo=$promo}0XXX
{else}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<form action="register" method="post">
{if $smarty.session.sub_state.mailorg2}
<p>
- Tu n'as pour le moment aucun homonyme dans notre base de données, nous allons
+ Tu n'as pour le moment aucun homonyme dans notre base de données. Nous allons
donc te donner l'adresse <strong>{$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}</strong>,
en plus de ton adresse à vie <strong>{$smarty.session.sub_state.forlife}@{#globals.mail.domain#}</strong>.
- Sache que tu peux perdre l'adresse <strong>{$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}</strong>
- si un homonyme s'inscrit (même si cela reste assez rare).
+ Note que tu pourrais perdre l'adresse <strong>{$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}</strong>
+ si un homonyme s'inscrivait — cela reste assez rare.
</p>
{else}
<p>
- Tu as déjà un homonyme inscrit dans notre base de données mais dans une autre promotion, nous allons
+ Tu as déjà un homonyme inscrit dans notre base de données, dans une autre promotion. Nous allons
donc te donner l'adresse <strong>{$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}</strong>, en plus
de ton adresse à vie <strong>{$smarty.session.sub_state.forlife}@{#globals.mail.domain#}</strong>.
</p>
{/if}
<p>
- Ces adresses sont des redirections vers des adresses e-mail de ton choix.
- Indique-s-en un pour commencer (tu pourras indiquer les autres une fois l'inscription terminée) et pouvoir
- terminer ton inscription.
+ Ces adresses sont des redirections vers une ou plusieurs adresses e-mail de ton choix.
+ Indiques-en une pour terminer ton inscription. Tu pourras la modifier ou ajouter d'autres
+ adresses une fois inscrit.
</p>
<p>
- Attention, il doit <strong>impérativement être correct</strong> pour que nous puissions
- t'envoyer ton mot de passe.
+ Attention, cette adresse doit <strong>impérativement être valide</strong> pour que nous puissions
+ t'envoyer tes informations de connexion.
</p>
<table class="bicol">
<tr>
<td class="titre">
E-mail<br />
- <span class="smaller">(Première redirection)</span>
+ <span class="smaller">(adresse de ton choix pour reçevoir tes emails)</span>
</td>
<td>
<input type="text" size="35" maxlength="50" name="email" value="{$smarty.post.email}" />
<tr>
<td class="titre">
Date de naissance<br />
- <span class="smaller">(Format JJMMAAAA)</span>
+ <span class="smaller">jour/mois/année</span>
</td>
<td>
- <input type="text" size="8" maxlength="8" name="naissance" value="{$smarty.post.naissance}" />
- (demandée si perte de mot de passe)
+ <input type="text" size="10" maxlength="10" name="naissance" value="{$smarty.post.naissance}" />
+ (demandée si tu perds ton mot de passe)
</td>
</tr>
<tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
La pré-inscription que tu viens de soumettre a été enregistrée.
</p>
<p>
-Les instructions te permettant notamment d'activer ton e-mail
-<strong>{$smarty.session.sub_state.forlife}@{#globals.mail.domain#}</strong>, ainsi que ton mot de passe pour
+Les instructions te permettant de valider ton inscription et ton mot de passe pour
accéder au site viennent de t'être envoyés à l'adresse <strong>{$smarty.session.sub_state.email}</strong>.
</p>
<p>
-Tu n'as que quelques jours pour suivre ces instructions après quoi la pré-inscription
-est effacée automatiquement de nos bases et il faut tout recommencer.
+Tu n'as que quelques jours pour suivre ces instructions. Ensuite, la pré-inscription
+est effacée automatiquement de notre base de données et il faut tout recommencer.
</p>
<p>
Si tu ne reçois rien, vérifie bien l'adresse <strong>{$smarty.session.sub_state.email}</strong>.
+En particulier, vérifie si l'e-mail n'a pas été rejeté par ton filtre anti-spam. L'adresse
+d'expéditeur est <code>register@polytechnique.org</code>.
</p>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>Bravo !!!</h1>
<p>
-Tu as maintenant accès au site !!!<br />
+Tu as maintenant accès au site !<br />
Ton adresse électronique à vie <strong>{$smarty.session.forlife}@{#globals.mail.domain#}</strong> est déjà ouverte, essaie-la !
</p>
<p class="smaller">
- <strong>Remarque :</strong> m4x.org est un domaine "discret" qui veut dire "mail for X" et
+ <strong>Remarque :</strong> m4x.org est un domaine "discret" qui veut dire "mail for X" et
qui comporte exactement les mêmes adresses que le domaine polytechnique.org.
</p>
{else}
<p>
-Tu as recu un mot de passe par défaut, si tu souhaites en changer, tu peux le faire ici :
+Tu as reçu un mot de passe par défaut, si tu souhaites en changer, tu peux le faire ici :
</p>
<form action="register/success" method="post" id="changepass">
</tr>
<tr>
<td class="titre">
- Nouveau mot de passe :
+ Nouveau mot de passe :
</td>
<td>
<input type="password" size="10" maxlength="10" name="nouveau" />
</tr>
<tr>
<td class="titre">
- Retape-le une fois :
+ Retape-le une fois :
</td>
<td>
<input type="password" size="10" maxlength="10" name="nouveau2" />
</form>
<p class="smaller">
-<strong>N'oublie pas :</strong> si tu perds ton mot de passe, nous n'avons aucun engagement, en
-particulier en termes de rapidité, mais pas seulement, à te redonner accès au
-site. Cela peut prendre plusieurs semaines, les pertes de mot de passe sont
-traitées avec la priorité minimale.
+<strong>N'oublie pas :</strong> en cas de perte de ton mot de passe,
+il existe une procédure de récupération automatique ; mais elle nécessite
+que ton adresse email sur le site soit toujours valable. Dans le cas contraire,
+il te faudra contacter l'équipe support.
</p>
{/if}
<form action='register/save' method='post'>
<p>
- Pour rejoindre la communauté des X sur le web, nous te convions le plus vivement à remplir ton profil !!!
+ Pour rejoindre la communauté des X sur le web, nous t'invitons vivement à remplir ton profil !
</p>
<p>
- Cette fonctionnalité n'est pas du tout redondante avec l'annuaire de l'AX, car nous pouvons synchroniser pour toi
- les données qu'il contient :
+ Cet annuaire n'est pas redondant avec l'annuaire de l'AX ; il est synchronisé automatiquement,
+ d'une manière que tu choisis :
</p>
<dl>
<dt><input type="checkbox" value="1" checked="checked" name="send_to_ax" disabled="disabled" /> vers l'AX</dt>
<dd>
- tu peux choisir dans ton profil sur Polytechnique.org d'automatiquement transmettre à l'AX des parties de ta fiche,
+ tu peux choisir dans ton profil sur Polytechnique.org de transmettre automatiquement à l'AX certains éléments de ta fiche,
au fur et à mesure que tu les modifies.
(Les données transmises seront <strong>uniquement</strong> celles que tu as décidé de transmettre).
</dd>
de recevoir les informations plus spécifiques de ta promotion pour pouvoir participer plus facilement aux événements
qu'elle organise. Nous t'inscrivons donc dans le groupe de la promotion {$smarty.session.promo}.
</dd>
+ <dt><input type='checkbox' value='1' checked="checked" name='imap' />imap</dt>
+ <dd>
+ d'avoir un accès de secours aux 30 derniers jours de mail reçus sur ton adresse Polytechnique.org.
+ </dd>
</dl>
{if $lists|@count neq 0}
<p>
- Des camarades souhaitent que tu t'inscrives aux listes suivantes :
+ Des camarades souhaitent que tu t'inscrives aux listes suivantes :
</p>
<dl>
{foreach from=$lists key=list item=details}
- <dt><input type='checkbox' value='1' checked="checked" name="sub_ml[{$list}]" /> {$list}* : {$details.desc}</dt>
+ <dt><input type='checkbox' value='1' checked="checked" name="sub_ml[{$list}]" /> {$list}* : {$details.desc}</dt>
{if $details.info}
<dd>
{$details.info|nl2br}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<script type="text/javascript">// <!--
var baseurl = platal_baseurl + "search/";
{literal}
- // display an autocomplete row : blabla (nb of found matches)
+ // display an autocomplete row : blabla (nb of found matches)
function make_format_autocomplete(block) {
return function(row) {
regexp = new RegExp('(' + RegExp.escape(block.value) + ')', 'i');
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<p>
La ligne de recherche ci-dessus accepte non seulement des mélanges de <strong>noms</strong> et de <strong>prénoms</strong>...
-mais elle accepte de plus la syntaxe suivante pour les <strong>promotions</strong> :
+mais elle accepte de plus la syntaxe suivante pour les <strong>promotions</strong> :
</p>
<ul>
- <li><code>1990</code> : signifie appartient à la promotion 1990 ;</li>
- <li><code>1990-2000</code> : signifie sur la promotion 1990 à 2000 ;</li>
- <li><code><1990</code> : signifie promotions inférieures ou égales à 1990 ;</li>
- <li><code>>1990</code> : signifie promotions supérieures ou égales à 1990.</li>
+ <li><code>1990</code> : signifie appartient à la promotion 1990 ;</li>
+ <li><code>1990-2000</code> : signifie sur la promotion 1990 à 2000 ;</li>
+ <li><code><1990</code> : signifie promotions inférieures ou égales à 1990 ;</li>
+ <li><code>>1990</code> : signifie promotions supérieures ou égales à 1990.</li>
</ul>
<p>
-Ainsi, rechercher tous les "Dupont" sur les promotions 1980 à 1990 et sur la promotion 2000 se fait avec la recherche :
+Ainsi, rechercher tous les "Dupont" sur les promotions 1980 à 1990 et sur la promotion 2000 se fait avec la recherche :
<code>Dupont 1980-1990 2000</code>
</p>
Parfois on ne sait plus si le nom qu'on recherche s'écrit « Lenormand », « Le Normand » ou « Le-Normand »...
</p>
<p>
-Pour éviter ce genre d'écueils, il suffit de chercher : <code>Le Normand</code><br />
+Pour éviter ce genre d'écueils, il suffit de chercher : <code>Le Normand</code><br />
En effet, le moteur de recherche va alors chercher tous les utilisateurs dont le nom
contient 'Le' <strong>et</strong> 'Normand' sans distinction de casse et sans tenir compte des accents.
</p>
{if hasPerm('user')}
<h2>Raccourcis...</h2>
<p>
- Un certain nombre de raccourcis permettent d'accéder plus rapidement au contenu du site :
+ Un certain nombre de raccourcis permettent d'accéder plus rapidement au contenu du site :
<ul>
<li><code>fiche:prenom.nom.promo</code> ouvre la fiche du camarade indiquée ;</li>
<li><code>ref:prenom.nom.promo</code> ouvre la fiche référent du camarade indiquée ;</li>
//]]></script>
{/if}
-<h2>Polytechniciens des promotions 1919 et précédentes</h2>
-<p>Notre base de données ne contient que les polytechniciens depuis la promotion 1920. Pour effectuer des recherches dans les
-promotions précédentes, il faut utiliser l'<a href="http://bibli.polytechnique.fr/F/?func=file&file_name=find-b&local_base=BCXC2">annuaire en ligne de la bibliothèque de
-l'École</a>.</p>
+<h2>Polytechniciens des promotions 1920 et précédentes</h2>
+<p>Notre base de données ne contient que les polytechniciens depuis la promotion 1921. Pour effectuer des recherches dans les
+promotions précédentes, il faut utiliser l'<a href="http://bibli.polytechnique.fr/F/?func=file&file_name=find-b&local_base=BCXC2">annuaire en ligne de la bibliothèque de l'École</a>.</p>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<div class="backtrace">
<h1>
{if $trace->error}<span style="color: #f00">{/if}
- Exécution de {$bt_name} : {$trace->traces|@count} actions en {$trace->totaltime|string_format:"%.3f"}s (hover-me pour la trace)
+ Exécution de {$bt_name} : {$trace->traces|@count} actions en {$trace->totaltime|string_format:"%.3f"}s (hover-me pour la trace)
{if $trace->error}</span>{/if}
</h1>
<div class="hide">
{**************************************************************************}\r
{* *}\r
-{* Copyright (C) 2003-2007 Polytechnique.org *}\r
+{* Copyright (C) 2003-2008 Polytechnique.org *}\r
{* http://opensource.polytechnique.org/ *}\r
{* *}\r
{* This program is free software; you can redistribute it and/or modify *}\r
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<!-- Pour récupérer ce bandeau sur votre site :
+<!-- Pour récupérer ce bandeau sur votre site :
incluez le fichier http://www.polytechnique.org/bandeau dans vos php
ou http://www.polytechnique.org/bandeau/login pour profiter du login
automatique. Et rajoutez à la liste de css de vos pages
http://www.polytechnique.org/bandeau.css.
Pour avoir l'icone, pour des raisons de sécurité il n'y a pas d'accès
- direct, il faut alors rediriger bandeau/icone.png vers celle du site :
+ direct, il faut alors rediriger bandeau/icone.png vers celle du site :
http://www.polytechnique.org/bandeau/icone.png -->
{if !$login && $smarty.session.auth}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
Validation:
<a href="http://jigsaw.w3.org/css-validator/validator?uri={#globals.baseurl#}/valid.html">CSS</a>
|
- références :
+ références :
<a href="http://www.w3schools.com/xhtml/xhtml_reference.asp">XHTML</a>
<a href="http://www.w3schools.com/css/css_reference.asp">CSS2</a>
</div>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
<div>
- Plat/al <a href="changelog">{#globals.version#}</a> - Copyright © 1999-2007 <a href="http://x-org.polytechnique.org/">Polytechnique.org</a>
+ Plat/al <a href="changelog">{#globals.version#}</a> - Copyright © 1999-2008 <a href="http://x-org.polytechnique.org/">Polytechnique.org</a>
-
<a href="Reference/Convention-AX">Lien avec l'AX</a>
-
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<meta name="keywords" content="Ecole polytechnique, anciens eleves, portail, alumni, AX, X, routage, reroutage, e-mail, email, mail" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/images/favicon.png" type="image/png" />
+ <link rel="apple-touch-icon" href="images/logo.png" type="image/png" />
<link rel="index" href="" />
<link rel="author" href="changelog" />
<link rel="search" href="search" />
{$xorg_extra_header|smarty:nodefaults}
{/if}
- <title>{$xorg_title|default:"Polytechnique.org : le site des élèves et anciens élèves de l'École polytechnique"}</title>
+ <title>{$xorg_title|default:"Polytechnique.org : le site des élèves et anciens élèves de l'École polytechnique"}</title>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<div class="menu_item"><a href="search">Annuaire de l'X</a></div>
<div class="menu_item"><a href="http://www.polytechnique.net/">Associations X</a></div>
<div class="menu_item"><a href="http://www.manageurs.com/">Recrutement</a></div>
-<div class="menu_item"><a href="survey">Sondages</a></div>
<div class="menu_title">Informations</div>
<div class="menu_item"><a href="Equipe/APropos">A propos du site</a></div>
<table class="bicol" style="font-weight:normal;text-align:center; border-left:0px; border-right:0px; margin-top:0.5em; width:100%; margin-left: 0; font-size: smaller;">
<tr><th>Valid</th></tr>
<tr class="impair">
- <td><a href="admin/validate">{insert name="mkStats"}</a></td>
+ <td>
+ <a href="admin/validate">
+ {if $globals->core->NbValid|smarty:nodefaults eq 0}-{else}{$globals->core->NbValid|default:'-'}{/if}
+ </a>
+ </td>
</tr>
</table>
{/if}
-{**************************************************************************}\r
-{* *}\r
-{* Copyright (C) 2003-2007 Polytechnique.org *}\r
-{* http://opensource.polytechnique.org/ *}\r
-{* *}\r
-{* This program is free software; you can redistribute it and/or modify *}\r
-{* it under the terms of the GNU General Public License as published by *}\r
-{* the Free Software Foundation; either version 2 of the License, or *}\r
-{* (at your option) any later version. *}\r
-{* *}\r
-{* This program is distributed in the hope that it will be useful, *}\r
-{* but WITHOUT ANY WARRANTY; without even the implied warranty of *}\r
-{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *}\r
-{* GNU General Public License for more details. *}\r
-{* *}\r
-{* You should have received a copy of the GNU General Public License *}\r
-{* along with this program; if not, write to the Free Software *}\r
-{* Foundation, Inc., *}\r
-{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *}\r
-{* *}\r
-{**************************************************************************}\r
- <table>\r
- <tr>\r
- <td class="date-heure">\r
- <script type="text/javascript">\r
- <!--\r
- document.write(getNow());\r
- //-->\r
- </script>\r
- </td>\r
- <td class="inscrits">\r
- {insert name="getNbIns"} polytechniciens sur le web\r
- <form action="search" method="get">\r
- <div>\r
- <input type="text" size="30" name="quick" class="quick_search" value="{$smarty.request.quick|default:"recherche dans l'annuaire"}" onfocus="if (this.value == '{$smarty.request.quick|default:"recherche dans l'annuaire"|escape:javascript}') this.value=''" onblur="if (this.value == '') this.value='{$smarty.request.quick|default:"recherche dans l'annuaire"|escape:javascript}'"/> \r
- </div>\r
- </form>\r
- {insert name="getNbNotifs"}\r
- </td>\r
- </tr>\r
- </table>\r
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2008 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 *}
+{* *}
+{**************************************************************************}
+ <table>
+ <tr>
+ <td class="date-heure">
+ <script type="text/javascript">
+ <!--
+ document.write(getNow());
+ //-->
+ </script>
+ </td>
+ <td class="inscrits">
+ {$globals->core->NbIns|number_format} polytechniciens sur le web
+ <form action="search" method="get">
+ <div>
+ <input type="text" size="30" name="quick" class="quick_search"
+ value="{$smarty.request.quick|default:"recherche dans l'annuaire"}"
+ onfocus="if (this.value == '{$smarty.request.quick|default:"recherche dans l'annuaire"|escape:javascript}') this.value=''"
+ onblur="if (this.value == '') this.value='{$smarty.request.quick|default:"recherche dans l'annuaire"|escape:javascript}'"/>
+ </div>
+ </form>
+ {if $smarty.session.auth gt AUTH_PUBLIC && $smarty.session.notifs}
+ <a href="carnet/panel">{$smarty.session.notifs} événement{if $smarty.session.notifs gt 1}s{/if}</a>
+ {/if}
+ </td>
+ </tr>
+ </table>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>Inscrits par promo</h1>
<p>
-Voici le nombre d'inscrits par promo :
+Voici le nombre d'inscrits par promo :
</p>
<table class="bicol" cellpadding="3" cellspacing="0" summary="Statistiques">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *}
{* *}
{**************************************************************************}
-<h1>Sondages : confirmation</h1>
+<h1>Sondages : confirmation</h1>
<form action="{$survey_formaction}" method="post">
{if is_array($survey_formhidden)}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<tr id="ln_promo_exp">
<td></td>
<td class="smaller">
- Exemple : 1954,1986-1989,-1942,2000- restreindra le sondage à toutes les promotions suivantes :<br/>
+ Exemple : 1954,1986-1989,-1942,2000- restreindra le sondage à toutes les promotions suivantes :<br/>
1954, 1986 à 1989, toutes jusqu'à 1942 et toutes à partir 2000 (les bornes sont systématiquement incluses)
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *}
{* *}
{**************************************************************************}
-<h1>Sondage : {if $survey_type == 'root'}nouveau sondage{else}nouvelle question{/if}</h1>
+<h1>Sondage : {if $survey_type == 'root'}nouveau sondage{else}nouvelle question{/if}</h1>
<form action="{$survey_formaction}" method="post">
<input type="hidden" name="survey_action" value="{$survey_action}"/>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *}
{* *}
{**************************************************************************}
-<h1>Sondages : erreur</h1>
+<h1>Sondages : erreur</h1>
{if !is_null($survey_errors) && is_array($survey_errors)}
<table class="bicol">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $survey_resultmode}
<ul>
{foreach item=sresult from=$squestion.result}
- <li>{$squestion.choices[$sresult.answer]} : {$sresult.count*100/$survey.votes|string_format:"%.1f"}% ({$sresult.count} votes)</li>
+ <li>{$squestion.choices[$sresult.answer]} : {$sresult.count*100/$survey.votes|string_format:"%.1f"}% ({$sresult.count} votes)</li>
{/foreach}
</ul>
{else}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $survey_resultmode}
<ul>
{foreach item=sresult from=$squestion.result}
- <li>{$squestion.choices[$sresult.answer]} : {$sresult.count*100/$survey.votes|string_format:"%.1f"}% ({$sresult.count} votes)</li>
+ <li>{$squestion.choices[$sresult.answer]} : {$sresult.count*100/$survey.votes|string_format:"%.1f"}% ({$sresult.count} votes)</li>
{/foreach}
</ul>
{else}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>Sondage : {$survey.title}</h1>
+<h1>Sondage : {$survey.title}</h1>
<form action="survey/vote{if $survey_votemode}/{$survey.id}{/if}" method='post'>
<table style="width: 100%">
<tr>
<td colspan="2">{$survey.description}</td>
</tr>
<tr>
- <td class="titre">Fin du sondage :</td>
+ <td class="titre">Fin du sondage :</td>
<td>{$survey.end|date_format:"%x"}</td>
</tr>
<tr>
- <td class="titre">Type de sondage :</td>
+ <td class="titre">Type de sondage :</td>
<td>{$survey_modes[$survey.mode]}</td>
</tr>
{if $survey.mode != Survey::MODE_ALL}
<tr>
- <td class="titre">Promotions :</td>
+ <td class="titre">Promotions :</td>
<td>
{if $survey.promos eq "#"}
erreur
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{if $survey_resultmode}
- Quelques réponses données par les personnes sondées :
+ Quelques réponses données par les personnes sondées :
<ul>
{foreach item=sresult from=$squestion.result}
<li>{$sresult.answer}</li>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{if $survey_resultmode}
- Quelques réponses données par les personnes sondées :
+ Quelques réponses données par les personnes sondées :
<ul>
{foreach item=sresult from=$squestion.result}
<li>{$sresult.answer}</li>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *}
{* *}
{**************************************************************************}
-<h1>Sondages : succès</h1>
+<h1>Sondages : succès</h1>
{if $survey_message neq ""}
{$survey_message}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<form action="admin" method="post">
<p class="descr">
Pour ajouter un groupe, choisir ici le diminutif qu'il va utiliser,
- tu seras ensuite redirigé vers une page te permettant d'éditer le groupe :
+ tu seras ensuite redirigé vers une page te permettant d'éditer le groupe :
</p>
<div class="center">
<input type="text" name="diminutif" value="{$smarty.request.diminutif}" />
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{elseif $cat eq institutions}
<p class="descr">
-De nombreux organismes officiels sont liés à l'École polytechnique : le collège de l'École
+De nombreux organismes officiels sont liés à l'École polytechnique : le collège de l'École
polytechnique, l'amicale des anciens élèves, le site des X sur le web Polytechnique.org, etc...
Cette liste n'est pas exhaustive. Vous pouvez découvrir chacun de ces organismes en cliquant sur les
-liens correspondants :
+liens correspondants :
</p>
{elseif $cat eq promotions}
<p class="descr">
Quelques promotions de polytechniciens ont mis au point leur propre site web, qui permet aux élèves
de ces promotions d'organiser des repas promos, de faire partager des souvenirs photographiques, de
-se retrouver sur internet... En voici des exemples :
+se retrouver sur internet... En voici des exemples :
</p>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="images/favicon.png" type="image/png" />
+ <link rel="apple-touch-icon" href="images/logo-xnet.png" type="image/png" />
<link rel="stylesheet" type="text/css" href="css/xnet.css" media="screen" />
</td>
{if $xnet_type}
<td style="width: 280px">
- <img src="images/texte_{$xnet_type}.jpg" alt="{$xnet_type}" width="280" height="96" />
+ <a href="{if $xnet_type eq plan}plan{else}groups/{$xnet_type}{/if}"><img src="images/texte_{$xnet_type}.jpg" alt="{$xnet_type}" width="280" height="96" /></a>
</td>
{if $asso}
<td class="logo">
{if $menu && !$simple}
<tr>
- <td id="menu" rowspan="2">
+ <td id="menu">
{foreach from=$menu key=title item=submenu}
{if $title neq 'no_title'}<h1>{$title}</h1>{/if}
{foreach from=$submenu key=tit item=url}
{/if}
{/foreach}
{/foreach}
- </td>
- <td class="breadcrumb">
{if $asso && ($is_admin ||
- ($smarty.session.suid && ($smarty.session.suid.perms->hasFlag('admin') ||
- $smarty.session.suid.may_update[$asso.id])))}
- <div style="float: right">
- <form method="post" action="{$platal->ns}change_rights">
- <div style="display: inline">
- <small>voir le site en tant que...
- <select name="right" onchange="this.form.submit()" style="margin: 0; padding: 0">
- {if hasPerm('admin') || ($smarty.session.suid && $smarty.session.suid.perms->hasFlag('admin'))}
- <option value="admin" {if hasPerm('admin')}selected="selected"{/if}>Administrateur</option>
- {/if}
- <option value="anim" {if $is_admin && !hasPerm('admin')}selected="selected"{/if}>Animateur</option>
- <option value="member" {if !$is_admin && $is_member}selected="selected"{/if}>Membre</option>
- <option value="logged" {if !$is_admin && !$is_member}selected="selected"{/if}>Non-membre</option>
- </select>
- </small>
- </div>
- </form>
- </div>
- {/if}
- <a href=".">X.net</a> »
- {if $asso}
- <a href="groups/{$asso.cat}">{$asso.cat|cat_pp}</a> »
- {if $asso.dom}
- <a href="groups/{$asso.cat}/{$asso.dom}">{$asso.domnom}</a> »
- {/if}
- {$asso.nom}
- {elseif $cat}
- <a href="groups/{$cat}">{$cat|cat_pp}</a> »
- {if $dom || !$doms}
- {if $cat eq 'promotions'}
- Choix de la promotion
- {else}
- Choix de l'Asso
- {/if}
- {else}
- Choix du domaine
- {/if}
- {elseif $wikipage}
- <a href="Xnet">Documentation</a>
+ ($smarty.session.suid && ($smarty.session.suid.perms->hasFlag('admin') ||
+ $smarty.session.suid.may_update[$asso.id])))}
+ <h1>Voir le site comme...</h1>
+ <form method="post" action="{$platal->ns}change_rights">
+ <div>
+ <select name="right" onchange="this.form.submit()" style="margin: 0; padding: 0">
+ {if hasPerm('admin') || ($smarty.session.suid && $smarty.session.suid.perms->hasFlag('admin'))}
+ <option value="admin" {if hasPerm('admin')}selected="selected"{/if}>Administrateur</option>
+ {/if}
+ <option value="anim" {if $is_admin && !hasPerm('admin')}selected="selected"{/if}>Animateur</option>
+ <option value="member" {if !$is_admin && $is_member}selected="selected"{/if}>Membre</option>
+ <option value="logged" {if !$is_admin && !$is_member}selected="selected"{/if}>Non-membre</option>
+ </select>
+ </div>
+ </form>
{/if}
</td>
- </tr>
- <tr>
<td id="body">
{include file="skin/common.content.tpl"}
</td>
<td id="perso">
{list_all_my_groups}
{if !$smarty.session.auth}
- <div>Me connecter :</div>
+ <div>Me connecter :</div>
<a class='gp' href="login/{if $platal->pl_self() eq 'exit'}index{else}{$platal->pl_self()}{/if}">polytechnicien</a>
{if $platal->pl_self() neq 'exit'}
{javascript name=jquery}
- <a href="send_bug" class="popup_840x600">signaler un bug</a>
{/if}
<br />
- © Copyright 2000-2007 <a href="http://x-org.polytechnique.org/">Association Polytechnique.org</a>
+ © Copyright 2000-2008 <a href="http://x-org.polytechnique.org/">Association Polytechnique.org</a>
</td>
</tr>
{/if}
</table>
- </body>
+ </body>
</html>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : <a href='{$platal->ns}events'>Evénements</a> </h1>
+<h1>{$asso.nom} : <a href='{$platal->ns}events'>Événements</a> </h1>
<p>
L'événement {$evt.intitule}
{if $evt.titre || count($moments) eq 0}
comptera {$evt.nb_tot} personne{if $evt.nb_tot > 1}s{/if}.
{else}
-({$evt.nb} personne{if $evt.nb > 1}s{/if} ont réalisé leur inscription).
+({$evt.nb} personne{if $evt.nb > 1}s ont réalisé leur{else} a réalisé son{/if} inscription).
{/if}
</p>
{if $oublis}
<p class="erreur">
-Ils ont payé mais ont oublié de s'inscrire :
+Ils ont payé mais ont oublié de s'inscrire :
</p>
<table summary="payé mais non inscrits" class="tinybicol">
<tr class="pair">
<td>
<a href="" {if $is_admin}onclick="return remplitAuto('{$m.email}')"{/if}>
- {$m.prenom} {$m.nom}
+ {if !$m.prenom && !$m.nom}
+ {$m.email}
+ {else}
+ {$m.prenom} {$m.nom}
+ {/if}
</a>
</td>
<td>{$m.promo}</td>
<tr>
<td>
{if $is_admin}<a href="javascript:remplitAuto('{$m.email}')">{/if}
- {if $m.femme}•{/if}{$m.prenom} {$m.nom}
+ {if $m.femme}•{/if}{if !$m.prenom && !$m.nom}{$m.email}{else}{$m.prenom} {$m.nom}{/if}
{if $is_admin}</a>{/if}
</td>
<td>{$m.promo}</td>
{/if}
</tr>
{/foreach}
+ {if $is_admin && $evt.money}
+ <tr>
+ {assign var=cols value=$moments|@count}
+ <td colspan="{$cols+3}" class="right"><strong>Total</strong></td>
+ <td>{$evt.topay}€</td>
+ {if $evt.paiement_id}
+ <td>{$evt.telepaid|default:0}€</td>
+ <td>{$evt.adminpaid|default:0}€</td>
+ {/if}
+ <td>{$evt.paid}€</td>
+ </tr>
+ {/if}
</table>
<p class="descr">
<p class="descr">
<input type="hidden" name="adm" value="nbs" />
- Mail: <input name="mail" size="20" />
+ Mail : <input name="mail" size="20" />
{if $platal->argv[2]}
- {$evt.titre}: <input name="nb[{$platal->argv[2]}]" size="1" value="1" />
+ {$evt.titre} : <input name="nb[{$platal->argv[2]}]" size="1" value="1" />
{else}
{foreach from=$moments item=m}
- {$m.titre}: <input name="nb[{$m.item_id}]" size="1" value="1"/>
+ {$m.titre} : <input name="nb[{$m.item_id}]" size="1" value="1"/>
{foreachelse}
- Nombre: <input name="nb[1]" size="1" value="1" />
+ Nombre : <input name="nb[1]" size="1" value="1" />
{/foreach}
{/if}
<input type="submit" />
</p>
<p class="descr">
-Note que tu peux cliquer sur les noms des membres pour remplir automatiquement la case ci-dessous
+Note que tu peux cliquer sur les noms des membres pour remplir automatiquement la case ci-dessous.
</p>
<form action="{$platal->pl_self()}" method="post" id="montant">
<p class="descr">
<input type="hidden" name="adm" value="prix" />
- Mail: <input name="mail" size="20" />
- montant: <input name="montant" size="3" value="0,00" /> €
+ Mail : <input name="mail" size="20" />
+ montant : <input name="montant" size="3" value="0,00" /> €
<input type="submit" />
</p>
</form>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software, you can redistribute it and/or modify *}
{* 59 Temple Place, Suite 330; Boston, MA 02111-1307 USA *}
{* *}
{**************************************************************************}
-Nom;Prénom;Promotion{if $tout}{foreach from=$moments item=m};{$m.titre}{/foreach}{if $admin && $money};À payer;Payé{/if}{else};Nombre{/if}
+Nom;Prénom;Promotion{if $tout}{foreach from=$moments item=m};{$m.titre}{/foreach}{if $admin && $money};À payer;{if
+$telepayment}Télépaiement;Liquide/Chèque;{/if}Payé{/if}{else};Nombre{/if}
{if $participants}
{foreach from=$participants item=m}
;
-{$m.nom};{$m.prenom};{$m.promo}{if $tout}{foreach from=$moments item=i};{$m[$i.item_id]}{/foreach}{if $admin && $money};{$m.montant};{$m.paid}{/if}{else};{$m.nb}{/if}
+{$m.nom};{$m.prenom};{$m.promo}{if $tout}{foreach from=$moments item=i};{$m[$i.item_id]}{/foreach}{if $admin &&
+$money};{$m.montant};{if $telepayment}{$m.telepayment};{$m.adminpaid};{/if}{$m.paid}{/if}{else};{$m.nb}{/if}
{/foreach}
;
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/literal}
</script>
-<h1>{$asso.nom} : {$evt.intitule|default:"Nouvel événement"}</h1>
+<h1>{$asso.nom} : {$evt.intitule|default:"Nouvel événement"}</h1>
<p class="descr">
Un événement peut être une réunion, un séminaire, une conférence, un voyage promo,
<p class="descr">
Tu as la possibilité, pour un événement donné, de distinguer plusieurs "moments"
distincts. Par exemple, dans le cas d'une réunion suivie d'un dîner, il peut être
- utile de comptabiliser les présents à la réunion d'une part, et de compter ceux
+ utile de comptabiliser les présents à la réunion d'une part et de compter ceux
qui s'inscrivent au repas d'autre part (en général certains participants à la réunion
ne restent pas pour le dîner...), de sorte que tu sauras combien de chaises prévoir
- pour le premier "moment" (la réunion), et pour combien de personnes réserver le
+ pour le premier "moment" (la réunion) et pour combien de personnes réserver le
restaurant.
</p>
<hr />
<h2>Description de l'événement</h2>
+{if $evt.eid}
+<p class='erreur'>
+ <strong>Attention :</strong> si tu souhaites modifier la structure d'un événement alors
+ que des personnes y sont déjà inscrites, contacte préalablement
+ <a href='mailto:contact@polytechnique.org'>l'équipe de Polytechnique.org</a>.
+</p>
+{/if}
+
<form method="post" action="{$platal->ns}events/edit/{$url_ref}">
<table class='bicol' cellspacing='0' cellpadding='0'>
<colgroup>
Options :
</td>
<td>
- Montrer la liste des inscrits aux membres :
+ Montrer la liste des inscrits aux membres :
<input type="radio" name="show_participants" value="1" {if $evt.show_participants}checked="checked"{/if} /> oui
<input type="radio" name="show_participants" value="0" {if !$evt.show_participants}checked="checked"{/if}/> non
<br />
- Autoriser les non-membres :
+ Autoriser les non-membres :
<input type="radio" name="accept_nonmembre" value="1" {if $evt.accept_nonmembre}checked="checked"{/if} /> oui
<input type="radio" name="accept_nonmembre" value="0" {if !$evt.accept_nonmembre}checked="checked"{/if}/> non
<br />
- Autoriser les invités :
+ Autoriser les invités :
<input type="radio" name="noinvite" value="0" {if !$evt.noinvite}checked="checked"{/if} /> oui
<input type="radio" name="noinvite" value="1" {if $evt.noinvite}checked="checked"{/if}/> non
</td>
</tr>
<tr id="new_pay" style="display:none">
<td colspan="2">
- Il faut que tu définisses le texte du mail de confirmation de paiement. Pour ceci, tu peux adapter le modèle qui suit :
+ Il faut que tu définisses le texte du mail de confirmation de paiement. Pour ceci, tu peux adapter le modèle qui suit :
<ul>
<li><strong>Remplace les crochets</strong> ([...]) par le texte que tu désires y voir apparaître</li>
<li><salutation>, <prenom>, <nom> et <montant> seront <strong>automatiquement</strong> remplacés par les informations adaptées</li>
</colgroup>
<tr>
<td class='titre'>
- Début :
+ Début :
</td>
<td>
le {html_select_date prefix='deb_' end_year='+5' day_value_format='%02d'
</tr>
<tr>
<td class='titre'>
- Fin :
+ Fin :
</td>
<td>
le {html_select_date prefix='fin_' end_year='+5' day_value_format='%02d'
<th colspan="2">Moment {$i}</th>
</tr>
<tr>
- <td class="titre">Intitulé :</td>
+ <td class="titre">Intitulé :</td>
<td><input type="text" name="titre{$i}" value="{$moment.titre}" size="45" maxlength="100" /></td>
</tr>
<tr>
- <td class="titre">Détails pratiques :</td>
+ <td class="titre">Détails pratiques :</td>
<td><textarea name="details{$i}" rows="6" cols="45">{$moment.details}</textarea></td>
</tr>
<tr>
- <td class="titre">Tarif :<br /><small>(par participant)</small></td>
+ <td class="titre">Tarif :<br /><small>(par participant)</small></td>
<td><input type="text" name="montant{$i}" value="{if $moment.montant}{$moment.montant|replace:".":","}{else}0,00{/if}" size="7" maxlength="7" /> € <small>(0 si gratuit)</small></td>
</tr>
{/foreach}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{if !$is_admin}
-<h1>{$asso.nom} : Evénements</h1>
+<h1>{$asso.nom} : Événements</h1>
{else}
<h1>
- {$asso.nom} :
- {if $archive}[<a href="{$platal->ns}events">Evénements</a>] {else}Evénements {/if}
+ {$asso.nom} :
+ {if $archive}[<a href="{$platal->ns}events">Événements</a>] {else}Événements {/if}
{if $archive}Archives {else}[<a href="{$platal->ns}events/archive">Archives</a>] {/if}
</h1>
</tr>
<tr>
- <td class="titre">date :</td>
+ <td class="titre">Date :</td>
<td>
{if $e.fin and $e.fin neq $e.debut}
{if $e.debut_day eq $e.fin_day}
</tr>
<tr>
- <td class="titre">annonceur :</td>
+ <td class="titre">Annonceur :</td>
<td>
<a href='https://www.polytechnique.org/profile/{$e.alias}' class='popup2'>{$e.prenom} {$e.nom} ({$e.promo})</a>
</td>
{if $is_admin || $e.show_participants || ($e.deadline_inscription && $e.inscr_open)}
<tr>
- <td class="titre">Informations :</td>
+ <td class="titre">Informations :</td>
<td class='actions'>
{if $is_admin || $e.show_participants}
<a href="{$platal->ns}events/admin/{$e.short_name|default:$e.eid}">
<tr>
<td class="titre">
- État inscription
+ État inscription :
{if $e.inscr_open}
<input type="hidden" name="evt_{counter}" value="{$e.eid}" />
{/if}
Tu viendras seul
{else}
Tu viendras avec {$m.nb-1} personne{if $m.nb > 2}s{/if}
- {/if} à <em>{$m.titre}</em><br />
+ {/if} à <em>{$m.titre}</em>.<br />
{/foreach}
{/if}
Tu dois payer {$e.topay|replace:'.':','} €.
{elseif $e.paid < $e.topay}
Tu dois encore payer {math equation="a-b" a=$e.topay b=$e.paid|replace:'.':','} €
- (tu as déjà payé {$e.paid|replace:'.':','} €)
+ (tu as déjà payé {$e.paid|replace:'.':','} €).
{else}
Tu as déjà payé les {$e.paid|replace:'.':','} € de ton inscription.
{/if}
{if $evenements}
<p class="descr">
- En cliquant sur l'icône {icon name=calendar_view_day title="Événement iCal"} associée à un événement
+ En cliquant sur l'icône {icon name=calendar_view_day title="Événement iCal"} associée à un événement,
tu peux télécharger la version iCal de l'événement qui permet de l'ajouter dans ton agenda électronique.
</p>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Evénement {$event.intitule}</h1>
+<h1>{$asso.nom} : Evénement {$event.intitule}</h1>
<p>
[<a href="{$platal->ns}events">Revenir à la liste des événements</a>]
</strong>
et a été proposé par
<a href='https://www.polytechnique.org/profile/{$event.alias}' class='popup2'>
- {$event.prenom} {$event.nom} ({$event.promo})
+ {$event.prenom} {$event.nom} ({$event.promo}).
</a>
</p>
{elseif $m.nb eq 1}
Je viendrai{if !$event.noinvite} seul{/if}.
{else}
- Je viendrai avec {$m.nb} personne{if $m.nb > 2}s{/if}
+ Je viendrai avec {$m.nb} personne{if $m.nb > 2}s{/if}.
{/if}
{/if}
</td>
Tu dois payer {$event.topay|replace:'.':','} €.
{elseif $event.paid < $event.topay}
Tu dois encore payer {math equation="a-b" a=$event.topay b=$event.paid|replace:'.':','} €
- (tu as déjà payé {$event.paid|replace:'.':','} €)
+ (tu as déjà payé {$event.paid|replace:'.':','} €).
{else}
Tu as déjà payé {$event.paid|replace:'.':','} € pour ton inscription.
{/if}
{elseif $validation && $event.paid < $event.topay}
<br />Le télépaiement pour cet événement est en instance de validation :<br />
<input type="checkbox" name="notify_payment" {if $event.notify_payment}checked="checked"{/if} id="notify" />
- <label for="notify">être prévenu lorsque le télépaiment pour cet événement sera disponible</label>
+ <label for="notify">être prévenu lorsque le télépaiment pour cet événement sera disponible.</label>
{/if}
</div>
{else}
Rien à payer
{if $event.paid > 0}
- (tu as déjà payé {$event.paid|replace:'.':','} €)
+ (tu as déjà payé {$event.paid|replace:'.':','} €).
{/if}.
{/if}
</td>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Administration des announces</h1>
+<h1>{$asso.nom} : Administration des announces</h1>
<table class="bicol">
<tr>
<tr>
<td colspan="3" class="center">
<a href="{$platal->ns}announce/new">
- {icon name=add title="Nouvelle annonce"} Ecrire une nouvelle annonce
+ {icon name=add title="Nouvelle annonce"} Écrire une nouvelle annonce.
</a>
</td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
}
{/literal}
</script>
-<h1>{$asso.nom} : Edition d'une annonce</h1>
+<h1>{$asso.nom} : Édition d'une annonce</h1>
{if $art.texte}
<div>
</div>
{/if}
-<form method="post" action="{$platal->ns}announce/{if $new}new{else}edit/{$art.id}{/if}">
+<form method="post" action="{$platal->ns}announce/{if $new}new{else}edit/{$art.id}{/if}" enctype="multipart/form-data">
<div>
<table class="bicol">
<tr>
- <th colspan="2">Editer une annonce</th>
+ <th colspan="2">Éditer une annonce</th>
</tr>
<tr class="pair">
- <td class="titre">Titre :</td>
+ <td class="titre">Titre :</td>
<td><input type="text" name="titre" value="{$art.titre}" size="50" maxlength="200" /></td>
</tr>
<tr>
- <td class="titre">Contenu de l'annonce :</td>
+ <td class="titre">Contenu de l'annonce :</td>
<td>
<small>
Le contenu est destiné à recevoir la descriptioin de ce qui est annoncé.
{/literal}
</script>
<small>
- Essaie de faire un <strong>texte court</strong>, une annonce ne doit pas excéder 600 caractères soit une dizaine de ligne.
+ Essaie de faire un <strong>texte court</strong>, une annonce ne doit pas excéder 600 caractères soit une dizaine de lignes.
Tu en es déjà à <input type='text' name='texte_count' size="4"/> caractères.
Si tu veux proposer cette annonce pour la Lettre Mensuelle, il faut te limiter à 8 lignes.
</small>
</td>
</tr>
<tr style="border-top: 1px solid gray">
- <td class="titre">Contacts :</td>
+ <td class="titre">Contacts :</td>
<td>
<small>
La section "contacts" sert à noter les informations telles que les adresses mails de contact, les sites web.
</td>
</tr>
<tr style="border-top: 1px solid gray">
+ <td class="titre">Illustration :</td>
+ <td>
+ {if $art.id && $art.photo}
+ <div style="float: left; text-align: center">
+ <em>Image actuelle</em><br />
+ <img src="{$platal->ns}announce/photo/{$art.id}" alt="Image actuelle" /><br />
+ <input type="submit" name="valid" value="Pas d'image" />
+ <input type="hidden" name="photo" value="1" />
+ </div>
+ {/if}
+ {if $upload && $upload->exists()}
+ <div style="float: right; text-align: center">
+ <em>Nouvelle image</em><br />
+ <img src="{$platal->ns}announce/photo" alt="Nouvelle Image" /><br />
+ <input type="submit" name="valid" value="Supprimer l'image" />
+ </div>
+ {/if}
+ <div style="clear: both">
+ Choisir un fichier : <input type="file" name="image" id="image" /><br />
+ Indiquer une adresse : <input type="text" name="image_url" id="image_url" value="" />
+ </div>
+ </td>
+ </tr>
+ <tr style="border-top: 1px solid gray">
<td colspan="2" class="center">
<a href="wiki_help/notitle" class="popup3">
- {icon name=information title="Syntaxe wiki"} Voir la liste des marqueurs de mise en forme autorisés
+ {icon name=information title="Syntaxe wiki"} Voir la liste des marqueurs de mise en forme autorisés.
</a>
</td>
</tr>
<table class="tinybicol">
<tr>
- <td class="titre">Date de péremption :</td>
+ <td class="titre">Date de péremption :</td>
<td>
{valid_date name="peremption" value=$art.peremption}
</td>
</tr>
{if $events}
<tr>
- <td class="titre">Attacher à un événement :</td>
+ <td class="titre">Attacher à un événement :</td>
<td>
<select name="event">
<option value="" {if !$art.event}selected="selected"{/if}>-- Aucun --</option>
{iterate item=evt from=$events}
- <option value="{$evt.short_name|default:$evt.eid}"
+ <option value="{$evt.short_name|default:$evt.eid}"
{if $art.event eq $evt.short_name|default:$evt.eid}selected="selected"{/if}>
{$evt.intitule}
</option>
</tr>
{/if}
<tr>
- <td class="titre">Visibilité :</td>
+ <td class="titre">Visibilité :</td>
<td>
<input type="checkbox" name="public" {if $art.public}checked="checked"{/if} onchange="visibilityChange(this)" />
- Rendre cette annonce publique
+ Rendre cette annonce publique.
</td>
</tr>
<tr id="promo_titre" {if $art.public}style="display: none"{/if}>
<tr class="pair">
<td colspan="2">
<small>Les demandes de publication sont soumises à validation par l'équipe
- de Polytechnique.org</small>
+ de Polytechnique.org.</small>
</td>
</tr>
{/if}
{/if}
<input type="submit" name="valid" value="Visualiser" /><br />
{if $art.texte}
- <input type="submit" name="valid" value="Enregistrer" />
+ <input type="submit" name="valid" value="Enregistrer" />
{if !$new}
<input type="submit" name="valid" value="Annuler" />
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<title>{$line.titre|strip_tags}</title>
<guid isPermaLink="false">{$line.id}</guid>
<link>{#globals.baseurl#}/{$asso.diminutif}/#art{$line.id}</link>
- <description><![CDATA[{$line.texte|miniwiki}{if $line.contacts}<br/><br/><strong>Contacts :</strong><br/>{$line.contacts|miniwiki}{/if}]]></description>
+ <description><![CDATA[
+ {if $line.photo}
+ <div style="float: left; padding-right: 0.5em">
+ <img src="{#globals.baseurl#}/{$asso.diminutif}/announce/photo/{$line.id}" alt="{$line.titre|strip_tags}" />
+ </div>
+ {/if}
+ <div>{$line.texte|miniwiki}{if $line.contacts}<br/><br/><strong>Contacts :</strong><br/>{$line.contacts|miniwiki}{/if}</div>]]></description>
<author>{$line.prenom} {$line.nom} (X{$line.promo})</author>
<pubDate>{$line.create_date|rss_date}</pubDate>
</item>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/foreach}
</ul>
-<h2>non Polytechniciens</h2>
+<h2>Non polytechniciens</h2>
<ul>
{foreach from=$not_in_group_ext item=n}
<li>{$n} [<a href='{$platal->ns}member/new/{$n}' class='popup'>l'inscrire</a>]</li>
{/foreach}
</ul>
-<h2>Comparer une liste et l'annuaire</h2>
+<h1>Comparer une liste et l'annuaire</h1>
<table cellspacing="2" cellpadding="0" class="tiny">
<tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Annuaire du groupe </h1>
+<h1>{$asso.nom} : Annuaire du groupe </h1>
<p class="descr">
-Le groupe {$asso.nom} compte {$nb_tot} membres.
+Le groupe {$asso.nom} compte {$nb_tot} membres :
</p>
-<p class="descr">
-Les membres extérieurs du groupe sont intégrés à cette liste, et repérés par l'inscription 'extérieur' dans la colonne promotion.
-</p>
-
-<p class="descr">
-Tu peux également :
-</p>
<ul class="descr">
{if $is_admin}
<li>
<li>
<a href="{$platal->ns}admin/annuaire">
{icon name=wand title="Synchroniser"}
- Synchroniser annuaire et Listes de diffusion
+ Synchroniser annuaire et listes de diffusion
</a>
</li>
{/if}
<p class="center">
[<a href="{$platal->ns}annuaire?order={$smarty.request.order}" {if !$only_admin}class="erreur"{/if}>tous les membres</a>]
-[<a href="{$platal->ns}annuaire?order={$smarty.request.order}&admin=1" {if $only_admin}class="erreur"{/if}>administrateurs</a>]<br/>
+[<a href="{$platal->ns}annuaire?order={$smarty.request.order}&admin=1" {if $only_admin}class="erreur"{/if}>animateurs</a>]<br/>
{foreach from=$alphabet item=c}
{if $c}
[<a href="{$platal->ns}annuaire?{$group}={$c}&order={$smarty.request.order}{if $only_admin}&admin=1{/if}"{if $request_group eq $c} class="erreur"{/if}>{$c}</a>]
{if $broken}
<p class="smaller">
- {icon name=error} : Un camarade signalé par ce symbole n'a plus d'adresse de redirection et ne peut donc
+ {icon name=error} : Un camarade signalé par ce symbole n'a plus d'adresse de redirection et ne peut donc
plus être contacté via son adresse polytechnique.org. Si tu connais sa nouvelle adresse, tu peux nous la communiquer en
cliquant sur le symbole.
</p>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Accueil</h1>
+<h1>{$asso.nom} : Accueil</h1>
<table cellpadding="0" cellspacing="0" class='tiny'>
{if $asso.site}
{if !$is_member && $is_logged && $asso.inscriptible && $xnet_type != 'promotions'}
<tr>
<td class="titre">
- M'inscrire :
+ M'inscrire :
</td>
<td>
<a href="{if $asso.sub_url}{$asso.sub_url}{else}{$platal->ns}subscribe{/if}">m'inscrire</a>
{elseif $is_member}
<tr>
<td class="titre">
- Me désinscrire :
+ Me désinscrire :
</td>
<td>
<a href="{if $asso.unsub_url}{$asso.unsub_url}{else}{$platal->ns}unsubscribe{/if}">me désinscrire</a>
<p style="text-align: justify;">
<small>
-<em>Nota Bene :</em> les informations présentées ici n'engagent que leurs auteurs
+<em>Nota Bene :</em> les informations présentées ici n'engagent que leurs auteurs
respectifs et sont publiées à leur initiative. L'association Polytechnique.org
ne pourrait en aucun cas être tenue responsable de la nature des propos relatés
sur cet espace d'expression et d'information. Elle se réserve le droit de
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Éditer l'accueil</h1>
+<h1>{$asso.nom} : Éditer l'accueil</h1>
<form method="post" action="{$platal->ns}edit" enctype="multipart/form-data">
{if $super}
<table cellpadding="0" cellspacing="0" class='tiny'>
<tr>
<td class="titre">
- Nom:
+ Nom :
</td>
<td>
<input type="text" size="40" value="{$asso.nom}" name="nom" />
</tr>
<tr>
<td class="titre">
- Diminutif:
+ Diminutif :
</td>
<td>
<input type="text" size="40" value="{$asso.diminutif}" name="diminutif" />
</tr>
<tr>
<td class="titre">
- Domaine DNS:
+ Domaine DNS :
</td>
<td>
<input type="text" size="40" value="{$asso.mail_domain}" name="mail_domain" />
</tr>
<tr>
<td class="titre">
- Catégorie :
+ Catégorie :
</td>
<td>
<select name="cat">
</tr>
<tr>
<td class="titre">
- Domaine:
+ Domaine :
</td>
<td>
<select name="dom">
<table cellpadding="0" cellspacing="0" class='tiny'>
<tr>
<td class="titre">
- Logo:
+ Logo :
</td>
<td>
<input type="file" name="logo" />
<tr>
<td class="titre">
- Site Web:
+ Site web :
</td>
<td>
<input type="text" size="40" value="{$asso.site}" name="site" />
<tr>
<td class="titre">
- Contact:
+ Contact :
</td>
<td>
<input type="text" size="40" name="resp" value="{$asso.resp}" />
<tr>
<td class="titre">
- Adresse mail:
+ Adresse mail :
</td>
<td>
<input type="text" size="40" name="mail" value="{$asso.mail}" />
<tr>
<td class="titre">
- Forum:
+ Forum :
</td>
<td>
<input type="text" size="40" name="forum" value="{$asso.forum}" />
<tr>
<td class="titre">
- Inscription possible:
+ Inscription possible :
</td>
<td>
<input type="radio" value="1" id="inscr_yes"
<tr>
<td class="titre">
- Lien pour l'inscription:<br />
+ Lien pour l'inscription :<br />
<em>laisser vide par défaut</em>
</td>
<td>
<tr>
<td class="titre">
- Lien pour la désinscription:<br/>
+ Lien pour la désinscription :<br/>
<em>laisser vide par défaut</em>
</td>
<td>
<div id="preview_descr" style="display: none; text-align: justify"></div>
<br />
<a href="wiki_help" class="popup3">
- {icon name=information title="Syntaxe wiki"} Voir la syntaxe wiki autorisée pour la description
+ {icon name=information title="Syntaxe wiki"} Voir la syntaxe wiki autorisée pour la description.
</a>
<textarea name="descr" cols="70" rows="15" id="descr"
{if !$asso.wiki_desc && $asso.descr}class="error"{/if}>{$asso.descr}</textarea>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<table class="tinybicol" id="art{$art.id}">
<tr>
- <th>
+ <th {if $art.photo}colspan="2"{/if}>
{if $is_logged && !$admin}
<div style="float: right">
{if $is_admin}
</div>
{/if}
{tidy}
- {if $admin}Aperçu de : {/if}{$art.titre}
+ {if $admin}Aperçu de : {/if}{$art.titre}
{/tidy}
</th>
</tr>
<tr>
+ {if $art.photo}
+ <td rowspan="{if ($is_logged || $admin) && $art.contacts}3{else}2{/if}" style="width: 100px">
+ <img src="{$platal->ns}announce/photo/{$art.id}" alt="{$art.titre}" style="width: 100px" />
+ </td>
+ {/if}
<td style="padding-bottom: 1em">
{$art.texte|miniwiki|smarty:nodefaults}
</td>
</tr>
{if ($is_logged || $admin) && $art.contacts}
<tr class="pair">
- <td class="titre">Contacts :</td>
+ <td class="titre">Contacts :</td>
</tr>
<tr class="pair">
<td style="padding-left: 20px">
</tr>
{/if}
<tr class="pair">
- <td>
+ <td {if $art.photo}colspan="2"{/if}>
<div style="float: right">
<small>
Annonce proposée par
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Forum</h1>
+<h1>{$asso.nom} : Forum</h1>
{$banana|smarty:nodefaults}
<p>
Cette page utilise les <a href="https://www.polytechnique.org/banana/profile">préférences</a> de Polytechnique.org.<br />
Tu peux également retrouver tous les forums en te rendant à la rubrique
- <a href="https://www.polytechnique.org/banana">Forums & PA</a>
+ <a href="https://www.polytechnique.org/banana">Forums & PA</a>.
</p>
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{if $u && $is_admin && $show_form}
<h2>
- Demande de la part de : {$prenom} {$nom} (X{$promo})
+ Demande de la part de : {$prenom} {$nom} (X{$promo})
<a href="https://www.polytechnique.org/profile/{$u}">Voir sa fiche</a>
</h2>
<form action="{$platal->ns}subscribe/{$u}" method="post">
<p class="descr">
Pour t'inscrire à {$asso.nom}, il te faut en demander l'autorisation aux animateurs du groupe via le
formulaire ci-dessous. Vérifie et corrige au besoin les différents champs, puis clique sur
-[ m'inscrire ]
+[ M'inscrire ! ].
</p>
<form action="{$platal->ns}subscribe" method="post">
<p class="descr">
- <strong>OUI, je souhaite être inscrit au groupe {$asso.nom}</strong>
+ <strong>OUI, je souhaite être inscrit au groupe {$asso.nom}.</strong>
</p>
<p class="descr">
- Indique ci-après <strong>tes motivations</strong> qui seront communiquées aux animateurs du groupe :
+ Indique ci-après <strong>tes motivations</strong> qui seront communiquées aux animateurs du groupe :
</p> <textarea cols=80 rows=12 name="message">
Chers Camarades,
{$smarty.session.prenom} {$smarty.session.nom} (X{$smarty.session.promo})
--
-Ma fiche sur Polytechnique.org :
+Ma fiche sur Polytechnique.org :
https://www.polytechnique.org/profile/{$smarty.session.forlife}
</textarea>
<div class="center">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
-<h1>{$asso.nom} : Envoyer un mail</h1>
+<h1>{$asso.nom} : Envoyer un mail</h1>
<p class="descr">
-Ton message peut être personnalisé : si tu rentres les mots <cher>, <prenom>,
+Ton message peut être personnalisé : si tu rentres les mots <cher>, <prenom>,
<nom>, ces mots seront remplacés, pour chacun des destinataires, par "cher" accordé au
masculin ou féminin, par son prénom, ou son nom.
</p>
<form action="{$platal->ns}mail" method="post" enctype="multipart/form-data">
<table class='bicol'>
<tr>
- <th colspan="2">Ecrire un mail :</th>
+ <th colspan="2">Écrire un mail :</th>
</tr>
<tr>
- <td class="titre">Expéditeur :</td>
+ <td class="titre">Expéditeur :</td>
<td>
<input type="text" name="from" size="55" maxlength="70"
value="{if $smarty.request.from}{$smarty.request.from}{else}"{$smarty.session.prenom} {$smarty.session.nom}" <{$smarty.session.bestalias}@polytechnique.org>{/if}" />
</td>
</tr>
<tr>
- <td class="titre">Répondre à :</td>
+ <td class="titre">Répondre à :</td>
<td>
<input type="text" name="replyto" size="55" maxlength="70" value="{$smarty.request.replyto}" />
</td>
</tr>
<tr>
<td class="titre">
- Sujet :
+ Sujet :
</td>
<td><input type="text" name="sujet" value="{$smarty.request.sujet|default:"remplir le sujet ..."}" size=55 maxlength=70></td>
</tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/literal}
//]]></script>
-<h1>{$asso.nom} : Ajout d'un membre</h1>
+<h1>{$asso.nom} : Ajout d'un membre</h1>
<form method="post" action="{$platal->ns}member/new/">
<ul class='descr'>
<li>
Pour ajouter un X dans ton groupe, il suffit d'entrer ici une de ses
- adresses mail @polytechnique.org. Si il n'est pas inscrit à Polytechnique.org
+ adresses mail @polytechnique.org. S'il n'est pas inscrit à Polytechnique.org
coche la case qui se trouve sous le formulaire et indique ses noms, prénoms et
promotions.
</li>
<tr>
<td colspan="2">
<input type="checkbox" id="x" name="x" onchange="xStateChange(this);" />
- <label for="x">Coche cette case si il s'agit d'un X non inscrit à Polytechnique.org</label>
+ <label for="x">Coche cette case si il s'agit d'un X non inscrit à Polytechnique.org.</label>
</td>
</tr>
<tr id="xnom" style="display: none">
- <td class="titre">Nom :</td>
+ <td class="titre">Nom :</td>
<td><input type="text" id="nom" name="nom" size="20" value="" onkeyup="searchX();" /></td>
</tr>
<tr id="xprenom" style="display: none">
- <td class="titre">Prénom :</td>
+ <td class="titre">Prénom :</td>
<td><input type="text" id="prenom" name="prenom" size="20" value="" onkeyup="searchX();" /></td>
</tr>
<tr id="xpromo" style="display: none">
- <td class="titre">Promotion :</td>
+ <td class="titre">Promotion :</td>
<td><input type="text" id="promo" name="promo" size="4" value="" onkeyup="searchX();" /></td>
</tr>
<tr id="xsearch" style="display: none" class="pair">
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{else}
-<h1>{$asso.nom} : gestion des membres</h1>
+<h1>{$asso.nom} : gestion des membres</h1>
<h2>
- Suppression du membre : {$user.prenom} {$user.nom}
+ Suppression du membre : {$user.prenom} {$user.nom}
</h2>
<div class="center">
<p class="descr">
{if $self}
- Etes-vous sûr de vouloir vous désinscrire du groupe {$asso.nom} et de toutes
+ Êtes-vous sûr de vouloir vous désinscrire du groupe {$asso.nom} et de toutes
les listes de diffusion associées ?
{else}
- Etes-vous sûr de vouloir supprimer {$user.prenom} {$user.nom} du groupe,
- lui retirer tous les droits associés à son statut de membre,
+ Êtes-vous sûr de vouloir supprimer {$user.prenom} {$user.nom} du groupe,
+ lui retirer tous les droits associés à son statut de membre
et le désabonner de toutes les listes de diffusion du groupe ?
{/if}
</p>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{/literal}
</script>
-<h1>{$asso.nom} : gestion des membres</h1>
+<h1>{$asso.nom} : gestion des membres</h1>
<p>
[<a href='{$platal->ns}annuaire'>Retour à l'annuaire</a>]
{if $user.origine neq X}
<tr class="impair">
<td class="titre">
- Type d'utilisateur :
+ Type d'utilisateur :
</td>
<td>
<select name="origine" onchange="showInformations(this); return true">
</tr>
<tr id="prenom" class="impair" {if $user.origine eq "groupe"}style="display: none"{/if}>
<td class="titre">
- Prénom :
+ Prénom :
</td>
<td>
<input type="text" value="{$user.prenom}" name="prenom" size="40" />
</tr>
<tr class="impair">
<td class="titre">
- Nom :
+ Nom :
</td>
<td>
<input type="text" value="{$user.nom}" name="nom" size="40" />
</tr>
<tr id="sexe" class="impair" {if $user.origine eq "groupe"}style="display: none"{/if}>
<td class="titre">
- Sexe :
+ Sexe :
</td>
<td>
<select name="sexe">
<tr id="make_X" {if $user.origine eq "groupe"}style="display: none"{/if}>
<td colspan="2">
<span id="make_X_cb">
- <input type="checkbox" name="is_x" id="is_x" onchange="showXInput(this);" />
+ <input type="checkbox" name="is_x" id="is_x" onclick="showXInput(this);" onchange="showXInput(this);" />
<label for="is_x">coche cette case si il s'agit d'un X</label>
</span>
<span id="make_X_login" style="display: none">
<td>
<a href='{$platal->ns}lists/members/{$liste.list}'>{$liste.list}</a>
</td>
- <td>{$liste.desc}</td>
+ <td>{$liste.desc|smarty:nodefaults}</td>
<td class='right'>{$liste.nbsub}</td>
</tr>
{foreachelse}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{if !$choix}
- Les critères de recherche ne sont pas assez précis
+ Les critères de recherche ne sont pas assez précis.
{elseif !$choix->total()}
- Aucun camarade non-inscrit ne correspond aux informations fournies
+ Aucun camarade non-inscrit ne correspond aux informations fournies.
{elseif $choix->total()}
- Camarades correspondants :
+ Camarades correspondants :
<select name="userid" onchange="document.getElementById('marketing').style.display = (this.value == 0 ? 'none' : '')">
<option value="0"></option>
{iterate item=x from=$choix}
onchange="document.getElementById('from').style.display = (this.checked ? '' : 'none')"/>
Lui envoyer un marketing
<select name="market_from" id="from">
- <option value="user" selected="selected">de ta part</option>
- <option value="staff">de la part de Polytechnique.org</option>
+ <option value="user" selected="selected">de ta part.</option>
+ <option value="staff">de la part de Polytechnique.org.</option>
</select>
</span>
{/if}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
<h1>Création d'un alias</h1>
<p class='descr'>
-Les alias sont concus pour répondre aux problèmes suivants :
+Les alias sont conçus pour répondre aux problèmes suivants :
</p>
<ul class='descr'>
<li>
- redirections pour les postes des gens au sein du groupe : par exemple il est pratique d'avoir un alias
- president@..., ou bien tresorier@... qui pointent tout le temps vers la bonne personne du groupe.
- Une sorte d'adresse de «redirection à vie».
+ redirections pour les postes des gens au sein du groupe : par exemple il est pratique d'avoir un alias
+ president@... ou bien tresorier@... qui pointent tout le temps vers la bonne personne du groupe.
+ Une sorte d'adresse de «redirection à vie» ;
</li>
<li>
- listes de diffusions pour de petits nombres de personnes (bureau@ ...)
+ listes de diffusions pour de petits nombres de personnes (bureau@ ...) ;
</li>
<li>
- listes à vie courte (liste créée pour l'organisation d'un évenement ponctuel par exemple)
+ listes à vie courte (liste créée pour l'organisation d'un évenement ponctuel par exemple) ;
</li>
<li>
fédérer plusieurs listes/alias sous un même nom (ce que ne peuvent faire les listes de diffusion).
</ul>
<p class='descr'>
-Pour les autres besoins de communications (notament pour un grand nombre de personnes, et pour bénéficier des outils
+Pour les autres besoins de communications (notament pour un grand nombre de personnes et pour bénéficier des outils
de modération), il est recommandé de créer <a href="{$platal->ns}lists/create">une liste de diffusion</a>.
</p>
<form action='{$platal->ns}alias/create' method='post'>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{* *}
{**************************************************************************}
-<h1>{$asso.nom} : Création d'une liste de diffusion</h1>
+<h1>{$asso.nom} : Création d'une liste de diffusion</h1>
<p class="descr">
-<strong>Note :</strong> Les listes de diffusion sont un outil particulièrement adapté pour des
-échanges entre 6 personnes, ou plus (newsletter, débat interne au groupe ...). En revanche, elles
+<strong>Note :</strong> les listes de diffusion sont un outil particulièrement adapté pour des
+échanges entre 6 personnes ou plus (newsletter, débat interne au groupe ...). En revanche, elles
s'avèrent peu praticables pour des discussions plus restreintes. Il est alors préférable
d'utiliser <a href="{$platal->ns}alias/create">un alias</a>, à la gestion beaucoup plus souple.
</p>
<form action='{$platal->ns}lists/create' method='post'>
<table class="large">
<tr>
- <th colspan='2'>Caractéristiques de la Liste</th>
+ <th colspan='4'>Caractéristiques de la Liste</th>
</tr>
<tr>
<td><strong>Addresse souhaitée :</strong></td>
- <td>
+ <td colspan='3'>
<input type='text' name='liste' value='{$smarty.post.liste}' />@{$asso.mail_domain}
</td>
</tr>
<tr>
- <td><strong>Sujet (bref) :</strong></td>
- <td>
+ <td><strong>Sujet (bref) :</strong></td>
+ <td colspan='3'>
<input type='text' name='desc' size='40' value="{$smarty.post.desc}" />
</td>
</tr>
<tr>
- <td><strong>Propriétés :</strong></td>
- <td>
- <table style='width: 100%' class="normal">
- <tr>
- <td>visibilité :</td>
- <td>
- <input type='radio' name='advertise' value='0'
- {if $smarty.post.advertise && $smarty.post}checked='checked'{/if} />publique
- </td>
- <td>
- <input type='radio' name='advertise' value='1'
- {if !$smarty.post.advertise || !$smarty.post}checked='checked'{/if} />privée
- </td>
- <td></td>
- </tr>
- <tr>
- <td>diffusion :</td>
- <td>
- <input type='radio' name='modlevel' value='0'
- {if !$smarty.post.modlevel}checked='checked'{/if} />libre
- </td>
- <td>
- <input type='radio' name='modlevel' value='1'
- {if $smarty.post.modlevel eq 1}checked='checked'{/if} />restreinte
- </td>
- <td><input type='radio' name='modlevel' value='2'
- {if $smarty.post.modlevel eq 2}checked='checked'{/if} />modérée
- </td>
- </tr>
- <tr>
- <td>inscription :</td>
- <td>
- <input type='radio' name='inslevel' value='0'
- {if !$smarty.post.inslevel && $smarty.post}checked='checked'{/if} />libre
- </td>
- <td>
- <input type='radio' name='inslevel' value='1'
- {if $smarty.post.inslevel || !$smarty.post}checked='checked'{/if} />modérée
- </td>
- <td></td>
- </tr>
- </table>
+ <td style="border: 0; border-right: 1px solid gray"><strong>Propriétés :</strong></td>
+ <td colspan='3' style="border: 0"></td>
+ </tr>
+ <tr>
+ <td style="border: 0; border-right: 1px solid gray">
+ visibilité :<br/><span style='font-size: xx-small;'>
+ (qui peut la voir dans la liste des listes ?)</span>
+ </td>
+ <td style="border: 0">
+ <label><input type='radio' name='advertise' value='0'
+ {if $smarty.post.advertise && $smarty.post}checked='checked'{/if} />publique<br/>
+ <span style='font-size: xx-small;'>(tous les membres)</span></label>
+ </td>
+ <td colspan='2' style="border: 0">
+ <label><input type='radio' name='advertise' value='1'
+ {if !$smarty.post.advertise || !$smarty.post}checked='checked'{/if} />privée<br/>
+ <span style='font-size: xx-small;'>(seuls ceux inscrits à cette liste)</span></label>
+ </td>
+ </tr>
+ <tr>
+ <td style="border: 0; border-right: 1px solid gray">
+ diffusion :<br/><span style='font-size: xx-small;'>
+ (l'envoi d'un mail à cette liste est-il modéré ?)</span>
+ </td>
+ <td style="border: 0">
+ <label><input type='radio' name='modlevel' value='0'
+ {if !$smarty.post.modlevel}checked='checked'{/if} />libre<br/><small>(non)</small></label>
+ </td>
+ <td style="border: 0">
+ <label><input type='radio' name='modlevel' value='1'
+ {if $smarty.post.modlevel eq 1}checked='checked'{/if} />restreinte<br/>
+ <small>(oui, si l'expéditeur n'appartient pas à la liste)</small></label>
+ </td>
+ <td style="border: 0">
+ <label><input type='radio' name='modlevel' value='2'
+ {if $smarty.post.modlevel eq 2}checked='checked'{/if} />modérée<br/>
+ <small>(oui, tout le temps)</small></label>
+ </td>
+ </tr>
+ <tr>
+ <td style="border: 0; border-right: 1px solid gray">
+ inscription :<br/><span style='font-size: xx-small;'>
+ (l'inscription à cette liste est-elle modérée ?)</span>
+ </td>
+ <td style="border: 0">
+ <label><input type='radio' name='inslevel' value='0'
+ {if !$smarty.post.inslevel && $smarty.post}checked='checked'{/if} />libre<br/>
+ <small>(non)</small></label>
+ </td>
+ <td colspan='2' style="border: 0">
+ <label><input type='radio' name='inslevel' value='1'
+ {if $smarty.post.inslevel || !$smarty.post}checked='checked'{/if} />modérée<br/>
+ <small>(oui)</small></label>
</td>
</tr>
</table>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
{else}
-<h1>{$asso.nom} : Listes de diffusion</h1>
+<h1>{$asso.nom} : Listes de diffusion</h1>
-<h2>Listes de diffusion du groupe {$asso.nom} :</h2>
+<h2>Listes de diffusion du groupe {$asso.nom} :</h2>
<p class="descr">
Une liste dont <strong>la diffusion</strong> est modérée est une liste dont les mails sont validés
</table>
<p class="descr">
-{icon name=wrench title="Modérateur"} tu es {if $smarty.session.femme}modératrice{else}moderateur{/if} sur cette liste<br />
+{icon name=wrench title="Modérateur"} tu es {if $smarty.session.femme}modératrice{else}moderateur{/if} sur cette liste.<br />
{icon name=weather_cloudy title="Liste privée"} cette liste est invisible aux non-membres de la liste. S'en désabonner
t'empêcherait de t'y réabonner par la suite sans l'aide d'un administrateur.
</p>
-<h2>Voici les alias existants pour le groupe {$asso.nom} :</h2>
+<h2>Voici les alias existants pour le groupe {$asso.nom} :</h2>
<table cellspacing="0" cellpadding="0" class='large'>
<tr>
{**************************************************************************}
{* *}
-{* Copyright (C) 2003-2007 Polytechnique.org *}
+{* Copyright (C) 2003-2008 Polytechnique.org *}
{* http://opensource.polytechnique.org/ *}
{* *}
{* This program is free software; you can redistribute it and/or modify *}
--- /dev/null
+create table watch_profile (
+ uid int(5) unsigned not null,
+ ts timestamp not null default CURRENT_TIMESTAMP,
+ field enum('nom', 'freetext', 'mobile', 'nationalite', 'nick', 'web', 'appli1', 'appli2',
+ 'addresses', 'section', 'binets', 'medals', 'cv', 'jobs', 'photo'),
+
+ primary key field (uid, field)
+) charset=utf8;
+
+
+alter table auth_user_quick change column profile_freetext profile_freetext mediumtext;
+
+# vim:set syntax=mysql:
--- /dev/null
+ALTER DATABASE `x4dat` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
+
--- /dev/null
+alter table axletter change column shortname short_name varchar(16) unique key;
+
+# vim:set syntax=mysql:
--- /dev/null
+ALTER TABLE auth_user_md5 ADD COLUMN mail_storage SET('imap', 'googleapps') DEFAULT '' NOT NULL AFTER smtppass;
+UPDATE auth_user_md5 SET mail_storage = 'imap';
+
+# vim:set syntax=mysql:
--- /dev/null
+USE logger;
+
+ALTER TABLE sessions
+ADD COLUMN ip2 INT(11) UNSIGNED NOT NULL,
+ADD COLUMN forward_ip2 INT(11) UNSIGNED DEFAULT NULL;
+
+UPDATE sessions
+ SET ip2 = SUBSTRING_INDEX(ip, ".", 1) * 256 * 256 * 256
+ + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 2), ".", -1) * 256 * 256
+ + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 3), ".", -1) * 256
+ + SUBSTRING_INDEX(ip, ".", -1),
+ forward_ip2 = SUBSTRING_INDEX(forward_ip, ".", 1) * 256 * 256 * 256
+ + SUBSTRING_INDEX(SUBSTRING_INDEX(forward_ip, ".", 2), ".", -1) * 256 * 256
+ + SUBSTRING_INDEX(SUBSTRING_INDEX(forward_ip, ".", 3), ".", -1) * 256
+ + SUBSTRING_INDEX(forward_ip, ".", -1);
+
+ALTER TABLE sessions
+DROP COLUMN ip,
+DROP COLUMN forward_ip,
+CHANGE COLUMN ip2 ip INT(11) UNSIGNED NOT NULL,
+CHANGE COLUMN forward_ip2 forward_ip INT(11) UNSIGNED DEFAULT NULL,
+ADD INDEX ip (ip),
+ADD INDEX forward_ip (forward_ip);
+
+USE x4dat;
+
+ALTER TABLE ip_watch
+ADD COLUMN ip2 INT(11) UNSIGNED NOT NULL;
+
+UPDATE ip_watch
+ SET ip2 = SUBSTRING_INDEX(ip, ".", 1) * 256 * 256 * 256
+ + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 2), ".", -1) * 256 * 256
+ + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 3), ".", -1) * 256
+ + SUBSTRING_INDEX(ip, ".", -1);
+
+ALTER TABLE ip_watch
+DROP PRIMARY KEY,
+DROP COLUMN ip,
+CHANGE COLUMN ip2 ip INT(11) UNSIGNED NOT NULL,
+ADD PRIMARY KEY ip (ip);
+
+# vim:set syntax=mysql:
--- /dev/null
+use groupex;
+
+CREATE TABLE `announces_photo` (
+ `eid` smallint(4) unsigned NOT NULL,
+ `attachmime` enum('jpeg','png','gif') NOT NULL default 'jpeg',
+ `attach` blob NOT NULL,
+ `x` smallint(5) unsigned NOT NULL default '0',
+ `y` smallint(5) unsigned NOT NULL default '0',
+ PRIMARY KEY (`eid`)
+) CHARSET=utf8;
+
+alter table groupex.announces change column flags flags set('public', 'photo') not null;
+
+use x4dat;
+
+# vim:set syntax=mysql:
--- /dev/null
+-- This SQL table comes from the 'gapps-daemon' project.
+
+-- Table `gapps_reporting`.
+-- The table contains daily statistics of the Google Apps domain. They are
+-- obtained with the Summary and Actvity reports of the Google Apps Reorting
+-- API.
+CREATE TABLE IF NOT EXISTS `gapps_reporting` (
+ date DATE NOT NULL,
+ num_accounts INTEGER UNSIGNED DEFAULT NULL,
+ count_1_day_actives INTEGER UNSIGNED DEFAULT NULL,
+ count_7_day_actives INTEGER UNSIGNED DEFAULT NULL,
+ count_14_day_actives INTEGER UNSIGNED DEFAULT NULL,
+ count_30_day_actives INTEGER UNSIGNED DEFAULT NULL,
+ count_30_day_idle INTEGER UNSIGNED DEFAULT NULL,
+ count_60_day_idle INTEGER UNSIGNED DEFAULT NULL,
+ count_90_day_idle INTEGER UNSIGNED DEFAULT NULL,
+ usage_in_bytes BIGINT UNSIGNED DEFAULT NULL,
+ quota_in_mb INTEGER UNSIGNED DEFAULT NULL,
+ PRIMARY KEY(date)
+) CHARSET=utf8;
+
+-- Table `gapps_accounts`.
+-- Holds the Google Apps account list, ie. a list of all registered accounts on
+-- the Google Apps domain.
+CREATE TABLE IF NOT EXISTS `gapps_accounts` (
+ -- Application-specific fields.
+ l_userid SMALLINT UNSIGNED DEFAULT NULL,
+ l_sync_password BOOL DEFAULT TRUE,
+ l_activate_mail_redirection BOOL DEFAULT TRUE,
+
+ -- Shared fields.
+ g_account_id CHAR(16) DEFAULT NULL,
+ g_account_name VARCHAR(256) NOT NULL,
+ g_first_name VARCHAR(40) NOT NULL,
+ g_last_name VARCHAR(40) NOT NULL,
+ g_status ENUM('unprovisioned', 'disabled', 'active') DEFAULT 'unprovisioned',
+ g_admin BOOL DEFAULT NULL,
+ g_suspension VARCHAR(256) DEFAULT NULL,
+
+ -- Google-owned fields.
+ r_disk_usage BIGINT DEFAULT NULL,
+ r_creation DATE DEFAULT NULL,
+ r_last_login DATE DEFAULT NULL,
+ r_last_webmail DATE DEFAULT NULL,
+
+ -- Indexes.
+ PRIMARY KEY(g_account_name),
+ INDEX l_userid(l_userid)
+) CHARSET=utf8;
+
+-- Table `gapps_queue`.
+-- Holds queued API requests that are to be processed by the gappsd. It also
+-- includes processed but not yet acknowledged requests.
+CREATE TABLE IF NOT EXISTS `gapps_queue` (
+ -- Queue identification fields.
+ q_id INT NOT NULL AUTO_INCREMENT,
+ q_owner_id SMALLINT DEFAULT NULL,
+ q_recipient_id SMALLINT DEFAULT NULL,
+
+ -- Queue management information.
+ p_entry_date DATETIME NOT NULL,
+ p_notbefore_date DATETIME NOT NULL,
+ p_start_date DATETIME DEFAULT NULL,
+ p_end_date DATETIME DEFAULT NULL,
+ p_status ENUM('idle', 'active', 'success', 'hardfail', 'softfail') DEFAULT 'idle' NOT NULL,
+ p_priority ENUM('immediate', 'normal', 'offline') DEFAULT 'offline' NOT NULL,
+ p_admin_request BOOLEAN DEFAULT false NOT NULL,
+
+ -- Job content fields.
+ j_type ENUM('r_activity', 'r_accounts', 'u_create', 'u_delete', 'u_update', 'u_sync') NOT NULL,
+ j_parameters TEXT DEFAULT NULL,
+
+ -- Job execution result fields.
+ r_softfail_date DATETIME DEFAULT NULL,
+ r_softfail_count SMALLINT DEFAULT 0 NOT NULL,
+ r_result VARCHAR(256) DEFAULT NULL,
+
+ -- Indexes.
+ PRIMARY KEY(q_id),
+ INDEX q_owner_id(q_owner_id),
+ INDEX q_recipient_id(q_recipient_id),
+ INDEX p_status(p_status),
+ INDEX p_priority(p_priority)
+) CHARSET=utf8;
+
+-- vim:set syntax=mysql:
--- /dev/null
+ALTER TABLE `requests_answers` MODIFY `category` enum('alias','liste','usage','photo','evts', 'gapps-unsuspend', 'marketing','orange','homonyme','nl','paiements','medal','broken','surveys') NOT NULL default 'alias';
+
+# vim:set syntax=mysql:
--- /dev/null
+CREATE TABLE `forums.innd` (
+ `id_innd` int(10) unsigned NOT NULL auto_increment,
+ `ipmin` int(10) unsigned default '0' COMMENT 'ip_address',
+ `ipmax` int(10) unsigned default '4294967295' COMMENT 'ip_address',
+ `uid` smallint(5) unsigned default NULL,
+ `read_perm` varchar(100) default '!*',
+ `write_perm` varchar(100) default '!*',
+ `priority` tinyint(1) unsigned default '255',
+ `comment` text,
+ PRIMARY KEY (`id_innd`)
+) DEFAULT CHARSET=utf8;
+
+INSERT INTO `forums.innd` VALUES (1,0,4294967295,NULL,'xorg.*,!xorg.prive.*','xorg.*,!xorg.prive.*,!xorg.pa.emploi',0,'par defaut pour tous');
<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2008 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-/*
- * Smarty plugin
- * -------------------------------------------------------------
- * File: insert.getNbIns.php
- * Type: insert
- * Name: getNbIns
- * Purpose:
- * -------------------------------------------------------------
- */
-function smarty_insert_getNbIns($params, &$smarty)
-{
- $res = XDB::query("SELECT COUNT(*) FROM auth_user_md5 WHERE perms IN ('admin','user') AND deces=0");
- $cnt = $res->fetchOneCell();
- return number_format($cnt, 0, ",", ".");
-}
+ini_set('include_path', dirname(__FILE__).'/../../include:' . dirname(__FILE__).'/../../classes:/usr/share/php');
+
+require_once 'xorg.inc.php';
+require_once 'xdb.php';
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
--- /dev/null
+#!/bin/bash
+
+. ../inc/pervasive.sh
+
+echo "Upgrading bogofilter settings for ML"
+sudo -u list ./upgrade_lists.py
+
+mailman_stop
+mailman_templates
+mailman_start
+
+###########################################################
+
+echo "fixing the xnetevents aliases (this may be a long operation)"
+
+./xnetevents.list.php
+
+###########################################################
+
+echo "upgrading the database"
+
+for sql in *.sql
+do
+ echo -n $sql
+ $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR"
+ echo .
+done
+
+###########################################################
+
+echo "we will now upgrade the search table (this may be a long operation)
+
+please hit ^D to continue
+"
+
+cat
+
+pushd ../../bin
+./search.rebuild_db.php
+popd
+
+###########################################################
+
--- /dev/null
+#!/usr/bin/python
+
+import sys
+sys.path.append('/usr/lib/mailman/bin')
+import paths
+from Mailman import MailList
+from Mailman import Utils
+from Mailman import mm_cfg
+
+def get_bogo_level(mlist):
+ """ Retreive the old style bogo level """
+ try:
+ if mlist.header_filter_rules == []:
+ return 0
+ try:
+ action = mlist.header_filter_rules[1][1]
+ return 2
+ except:
+ action = mlist.header_filter_rules[0][1]
+ if action == mm_cfg.HOLD:
+ return 1
+ elif action == mm_cfg.DISCARD:
+ return 3
+ except:
+ return 0
+
+def set_bogo_level(mlist, level):
+ """ Convert bogo level to the new level structure """
+ if level == 0:
+ return
+ hfr = []
+ if level == 1:
+ hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
+ hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
+ elif level == 2:
+ hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
+ hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False))
+ hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
+ elif level == 3:
+ hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
+ hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False))
+ mlist.Lock()
+ mlist.header_filter_rules = hfr
+ mlist.Save()
+ mlist.Unlock()
+
+
+names = Utils.list_names()
+names.sort()
+for name in names:
+ mlist = MailList.MailList(name, lock=0)
+ set_bogo_level(mlist, get_bogo_level(mlist))
+
--- /dev/null
+#!/usr/bin/php5
+<?php
+
+global $globals;
+require_once 'connect.db.inc.php';
+
+// Fetches the list of existing xnetevents aliases.
+$events = XDB::iterRow(
+ "SELECT e.eid, e.asso_id, e.short_name, al.vid, pl.vid
+ FROM groupex.evenements AS e
+ LEFT JOIN virtual AS al ON (al.type = 'evt' AND al.alias = CONCAT(short_name, {?}))
+ LEFT JOIN virtual AS pl ON (pl.type = 'evt' AND pl.alias = CONCAT(short_name, {?}))
+ WHERE al.vid IS NOT NULL AND pl.vid IS NOT NULL
+ ORDER BY e.eid",
+ '-absents@'.$globals->xnet->evts_domain,
+ '-participants@'.$globals->xnet->evts_domain);
+
+// Fixes the alias recipients for each list.
+while (list($eid, $asso_id, $shortname, $absent_vid, $participant_vid) = $events->next()) {
+ $recipient_count = array();
+ foreach (array($absent_vid, $participant_vid) as $vid) {
+ $res = XDB::query("SELECT COUNT(*) FROM virtual_redirect WHERE vid = {?}", $vid);
+ $recipient_count[$vid] = $res->fetchOneCell();
+ }
+
+ // Updates the alias for participants.
+ XDB::execute("DELETE FROM virtual_redirect WHERE vid = {?}", $participant_vid);
+ XDB::execute(
+ "INSERT INTO virtual_redirect (
+ SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
+ FROM groupex.evenements_participants AS ep
+ LEFT JOIN groupex.membres AS m ON (ep.uid = m.uid)
+ LEFT JOIN auth_user_md5 AS u ON (u.user_id = ep.uid)
+ LEFT JOIN aliases AS a ON (a.id = ep.uid AND a.type = 'a_vie')
+ WHERE ep.eid = {?} AND ep.nb > 0
+ GROUP BY ep.uid)",
+ $participant_vid, '@'.$globals->mail->domain, $eid);
+
+ // Updates the alias for absents.
+ XDB::execute("DELETE FROM virtual_redirect WHERE vid = {?}", $absent_vid);
+ XDB::execute(
+ "INSERT INTO virtual_redirect (
+ SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect
+ FROM groupex.membres AS m
+ LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?})
+ LEFT JOIN auth_user_md5 AS u ON (u.user_id = m.uid)
+ LEFT JOIN aliases AS a ON (a.id = m.uid AND a.type = 'a_vie')
+ WHERE m.asso_id = {?} AND ep.uid IS NULL
+ GROUP BY m.uid)",
+ $absent_vid, "@".$globals->mail->domain, $eid, $asso_id);
+
+ // Lists alias recipient count changes.
+ $new_recipient_count = array();
+ foreach (array($absent_vid, $participant_vid) as $vid) {
+ $res = XDB::query("SELECT COUNT(*) FROM virtual_redirect WHERE vid = {?}", $vid);
+ $new_recipient_count[$vid] = $res->fetchOneCell();
+ }
+
+ if ($new_recipient_count[$absent_vid] != $recipient_count[$absent_vid] ||
+ $new_recipient_count[$participant_vid] != $recipient_count[$participant_vid]) {
+ printf(" Fixed aliases for event %d (%s): absent list %d -> %d, participant list %d -> %d\n",
+ $eid, $shortname,
+ $recipient_count[$absent_vid], $new_recipient_count[$absent_vid],
+ $recipient_count[$participant_vid], $new_recipient_count[$participant_vid]);
+ }
+}