<?php
/***************************************************************************
- * Copyright (C) 2003-2004 Polytechnique.org *
+ * Copyright (C) 2003-2006 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 *
***************************************************************************/
-// {{{ DEFINES
-
define('SIZE_MAX', 32768);
-// }}}
-// {{{ class ValidateIterator
-
/**
* Iterator class, that lists objects through the database
*/
class ValidateIterator extends XOrgDBIterator
{
// {{{ constuctor
-
+
function ValidateIterator ()
{
parent::XOrgDBIterator('SELECT data,stamp FROM requests ORDER BY stamp', MYSQL_NUM);
// }}}
}
-// }}}
-// {{{ class Validate
-
/** classe "virtuelle" à dériver pour chaque nouvelle implémentation
*/
class Validate
var $unique;
// enable the refuse button
var $refuse = true;
+
var $type;
var $comments = Array();
// the validations rules : comments for admins
*/
function Validate($_uid, $_unique, $_type)
{
- global $globals;
$this->uid = $_uid;
$this->stamp = date('YmdHis');
$this->unique = $_unique;
$this->type = $_type;
- $res = $globals->xdb->query(
+ $res = XDB::query(
"SELECT u.prenom, u.nom, u.promo, a.alias, b.alias
FROM auth_user_md5 AS u
INNER JOIN aliases AS a ON ( u.user_id=a.id AND a.type='a_vie' )
*/
function submit ()
{
- global $globals;
if ($this->unique) {
- $globals->xdb->execute('DELETE FROM requests WHERE user_id={?} AND type={?}', $this->uid, $this->type);
+ XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', $this->uid, $this->type);
}
$this->stamp = date('YmdHis');
- $globals->xdb->execute('INSERT INTO requests (user_id, type, data, stamp) VALUES ({?}, {?}, {?}, {?})',
+ XDB::execute('INSERT INTO requests (user_id, type, data, stamp) VALUES ({?}, {?}, {?}, {?})',
$this->uid, $this->type, $this, $this->stamp);
return true;
function update ()
{
- global $globals;
- $globals->xdb->execute('UPDATE requests SET data={?}, stamp=stamp
+ XDB::execute('UPDATE requests SET data={?}, stamp=stamp
WHERE user_id={?} AND type={?} AND stamp={?}',
$this, $this->uid, $this->type, $this->stamp);
*/
function clean ()
{
- global $globals;
if ($this->unique) {
- return $globals->xdb->execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
+ return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
$this->uid, $this->type);
} else {
- return $globals->xdb->execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}',
+ return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}',
$this->uid, $this->type, $this->stamp);
}
}
return true;
}
+ // mise à jour des informations
+ if (Env::has('edit')) {
+ if ($this->handle_editor()) {
+ $this->update();
+ $this->trig('requête mise à jour');
+ return true;
+ }
+ return false;
+ }
+
// ajout d'un commentaire
if (Env::has('hold') && Env::has('comm')) {
- $this->comments[] = Array(Session::get('bestalias'), Env::get('comm'));
+ $formid = Env::i('formid');
+ foreach ($this->comments as $comment) {
+ if ($comment[2] === $formid) {
+ return true;
+ }
+ }
+ $this->comments[] = Array(S::v('bestalias'), Env::v('comm'), $formid);
// envoi d'un mail à hotliners
global $globals;
$mailer = new HermesMailer;
$mailer->setSubject("Commentaires de validation {$this->type}");
$mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}");
- $mailer->addTo("hotliners@{$globals->mail->domain}");
+ $mailer->addTo("hotliners@staff.polytechnique.org");
$body = "Validation {$this->type} pour {$this->prenom} {$this->nom}\n\n"
- . Session::get('bestalias')." a ajouté le commentaire :\n\n"
- . Env::get('comm')."\n\n"
- . "cf la discussion sur : ".$globals->baseurl."/admin/valider.php";
+ . S::v('bestalias')." a ajouté le commentaire :\n\n"
+ . Env::v('comm')."\n\n"
+ . "cf la discussion sur : ".$globals->baseurl."/admin/validate";
$mailer->setTxtBody(wordwrap($body));
$mailer->send();
}
if (Env::has('refuse')) {
- if (Env::get('comm')) {
+ if (Env::v('comm')) {
$this->sendmail(false);
$this->clean();
$this->trig('mail envoyé');
$body = "Cher(e) camarade,\n\n"
. $this->_mail_body($isok)
- . (Env::has('comm') ? "\n\n".Env::get('comm') : '')
+ . (Env::has('comm') ? "\n\n".Env::v('comm') : '')
. "\n\nCordialement,\nL'équipe Polytechnique.org\n";
$mailer->setTxtBody(wordwrap($body));
*/
function get_request($uid, $type, $stamp = -1)
{
- global $globals;
if ($stamp == -1) {
- $res = $globals->xdb->query('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type);
+ $res = XDB::query('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type);
} else {
- $res = $globals->xdb->query("SELECT data, stamp FROM requests WHERE user_id={?} AND type={?} and stamp={?}", $uid, $type, $stamp);
+ $res = XDB::query("SELECT data, stamp FROM requests WHERE user_id={?} AND type={?} and stamp={?}", $uid, $type, $stamp);
}
if ($result = $res->fetchOneCell()) {
$result = unserialize($result);
{ return null; }
// }}}
-}
+ // {{{ function editor()
-// }}}
-// {{{ IMPLEMENTATIONS
+ /** nom du formulaire d'édition */
+ function editor()
+ { return null; }
+
+ // }}}
+ // {{{ function answers()
+
+ /** automatic answers table for this type of validation */
+ function answers() {
+ static $answers_table;
+ if (!isset($answers_table[$this->type])) {
+ $r = XDB::query("SELECT id, title, answer FROM requests_answers WHERE category = {?}", $this->type);
+ $answers_table[$this->type] = $r->fetchAllAssoc($r);
+ }
+ return $answers_table[$this->type];
+ }
+
+ // }}}
+}
foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) {
require_once($file);
}
-// }}}
-
/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker: */
?>