X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvalidations.inc.php;h=c65e15b8a6783f2250d51878a7ee955d56415df0;hb=1edb5aa5afd0d6c0172d845537c9b51fb47874fb;hp=8314d982b5dd248ea44d66cb9637100e92e99367;hpb=a7de4ef724d1a3b0bf978a50ce7cc9d23412c7a0;p=platal.git diff --git a/include/validations.inc.php b/include/validations.inc.php index 8314d98..c65e15b 100644 --- a/include/validations.inc.php +++ b/include/validations.inc.php @@ -1,6 +1,6 @@ uid = $_uid; $this->stamp = date('YmdHis'); @@ -98,65 +98,68 @@ class Validate WHERE u.user_id={?}", $_uid); list($this->prenom, $this->nom, $this->promo, $this->sexe, $this->forlife, $this->bestalias) = $res->fetchOneRow(); } - + // }}} // {{{ function submit() /** fonction à utiliser pour envoyer les données à la modération * cette fonction supprimme les doublons sur un couple ($user,$type) si $this->unique est vrai */ - function submit () + public function submit() { if ($this->unique) { XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', $this->uid, $this->type); } - + $this->stamp = date('YmdHis'); XDB::execute('INSERT INTO requests (user_id, type, data, stamp) VALUES ({?}, {?}, {?}, {?})', $this->uid, $this->type, $this, $this->stamp); + global $globals; + update_NbValid(); return true; } // }}} // {{{ function update() - function update () + protected function update() { XDB::execute('UPDATE requests SET data={?}, stamp=stamp - WHERE user_id={?} AND type={?} AND stamp={?}', - $this, $this->uid, $this->type, $this->stamp); - + WHERE user_id={?} AND type={?} AND stamp={?}', + $this, $this->uid, $this->type, $this->stamp); return true; } // }}} // {{{ function clean() - + /** fonction à utiliser pour nettoyer l'entrée de la requête dans la table requests * attention, tout est supprimé si c'est un unique */ - function clean () + 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 handle_formu() - - /** fonction à réaliser en cas de valistion du formulaire + + /** fonction à réaliser en cas de validation du formulaire */ - function handle_formu() + public function handle_formu() { if (Env::has('delete')) { $this->clean(); - $this->trig('requete supprimée'); + $this->trigSuccess('Requête supprimée'); return true; } @@ -164,7 +167,7 @@ class Validate if (Env::has('edit')) { if ($this->handle_editor()) { $this->update(); - $this->trig('requête mise à jour'); + $this->trigSuccess('Requête mise à jour'); return true; } return false; @@ -185,13 +188,13 @@ class Validate // envoi d'un mail à hotliners global $globals; - $mailer = new PlMailer; + $mailer = new PlMailer(); $mailer->setSubject("Commentaires de validation {$this->type}"); $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}"); - $mailer->addTo("hotliners@staff.polytechnique.org"); + $mailer->addTo($globals->core->admin_email); $body = "Validation {$this->type} pour {$this->prenom} {$this->nom}\n\n" - . S::v('bestalias')." a ajouté le commentaire :\n\n" + . S::v('bestalias')." a ajouté le commentaire :\n\n" . Env::v('comm')."\n\n" . "cf la discussion sur : ".$globals->baseurl."/admin/validate"; @@ -199,7 +202,7 @@ class Validate $mailer->send(); $this->update(); - $this->trig('commentaire ajouté'); + $this->trigSuccess('Commentaire ajouté'); return true; } @@ -207,10 +210,10 @@ class Validate if ($this->commit()) { $this->sendmail(true); $this->clean(); - $this->trig('mail envoyé'); + $this->trigSuccess('Mail de validation envoyé'); return true; } else { - $this->trig('erreur lors de la validation'); + $this->trigError('Erreur lors de la validation'); return false; } } @@ -219,10 +222,10 @@ class Validate if (Env::v('comm')) { $this->sendmail(false); $this->clean(); - $this->trig('mail envoyé'); + $this->trigSuccess('Mail de refus envoyé'); return true; } else { - $this->trig('pas de motivation pour le refus !!!'); + $this->trigError('pas de motivation pour le refus !!!'); } } @@ -232,7 +235,7 @@ class Validate // }}} // {{{ function sendmail - function sendmail($isok) + protected function sendmail($isok) { global $globals; $mailer = new PlMailer(); @@ -244,7 +247,7 @@ class Validate $body = ($this->sexe ? "Chère camarade,\n\n" : "Cher camarade,\n\n") . $this->_mail_body($isok) . (Env::has('comm') ? "\n\n".Env::v('comm') : '') - . "\n\nCordialement,\nL'équipe Polytechnique.org\n"; + . "\n\nCordialement,\n\n-- \nL'équipe de Polytechnique.org\n"; $mailer->setTxtBody(wordwrap($body)); $mailer->send(); @@ -252,12 +255,22 @@ class Validate // }}} // {{{ function trig() - - function trig($msg) { - global $page; - $page->trig($msg); + + protected function trigError($msg) + { + Platal::page()->trigError($msg); + } + + protected function trigWarning($msg) + { + Platal::page()->trigWarning($msg); } - + + protected function trigSuccess($msg) + { + Platal::page()->trigSuccess($msg); + } + // }}} // {{{ function get_typed_request() @@ -269,12 +282,12 @@ class Validate * XXX fonction "statique" XXX * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_typed_request(...) */ - static function get_typed_request($uid, $type, $stamp = -1) + static public function get_typed_request($uid, $type, $stamp = -1) { if ($stamp == -1) { $res = XDB::query('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type); } else { - $res = XDB::query("SELECT data, stamp FROM requests WHERE user_id={?} AND type={?} and stamp={?}", $uid, $type, $stamp); + $res = XDB::query('SELECT data, DATE_FORMAT(stamp, "%Y%m%d%H%i%s") FROM requests WHERE user_id={?} AND type={?} and stamp={?}', $uid, $type, $stamp); } if ($result = $res->fetchOneCell()) { $result = unserialize($result); @@ -285,11 +298,20 @@ class Validate } // }}} + // {{{ function get_request_by_id() + + static public function get_request_by_id($id) + { + list($uid, $type, $stamp) = explode('_', $id, 3); + return Validate::get_typed_request($uid, $type, $stamp); + } + + // }}} // {{{ function get_typed_requests() /** same as get_typed_request() but return an array of objects */ - static function get_typed_requests($uid, $type) + static public function get_typed_requests($uid, $type) { $res = XDB::iterRow('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type); $array = array(); @@ -300,47 +322,54 @@ class Validate } // }}} - // {{{ function _mail_body + // {{{ function get_typed_requests_count() - function _mail_body($isok) + /** 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); + // }}} // {{{ function _mail_subj - function _mail_subj() - { - } - + abstract protected function _mail_subj(); + // }}} // {{{ function commit() - + /** fonction à utiliser pour insérer les données dans x4dat - * XXX la fonction est "virtuelle" XXX */ - function commit () - { } + abstract public function commit(); // }}} // {{{ function formu() - + /** nom du template qui contient le formulaire */ - function formu() - { return null; } + abstract public function formu(); // }}} // {{{ function editor() /** nom du formulaire d'édition */ - function editor() - { return null; } + public function editor() + { + return null; + } // }}} // {{{ function answers() /** automatic answers table for this type of validation */ - function answers() { + public 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); @@ -352,12 +381,20 @@ class Validate // }}} // {{{ function id() - function id() + public function id() { return $this->uid . '_' . $this->type . '_' . $this->stamp; } // }}} + // {{{ function ruleText() + + public function ruleText() + { + return str_replace('\'', '\\\'', $this->rules); + } + + // }}} } foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) {