X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvalidations.inc.php;h=4c35048d05c96a7704e95606acc2b3f5e5ea9636;hb=155819d9ece12a06d37df46e22b76e3c71f65fba;hp=858ea991cc08599dd0c705d87b42554a9769e0df;hpb=20d7932b9db32f4dbf96312efc1981a5bebd9b7d;p=platal.git diff --git a/include/validations.inc.php b/include/validations.inc.php index 858ea99..4c35048 100644 --- a/include/validations.inc.php +++ b/include/validations.inc.php @@ -1,6 +1,6 @@ uid = $_uid; $this->stamp = date('YmdHis'); $this->unique = $_unique; $this->type = $_type; $res = XDB::query( - "SELECT u.prenom, u.nom, u.promo, a.alias, b.alias + "SELECT u.prenom, u.nom, u.promo, FIND_IN_SET('femme', u.flags) AS sexe, 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' ) INNER JOIN aliases AS b ON ( u.user_id=b.id AND b.type!='homonyme' AND FIND_IN_SET('bestalias', b.flags) ) WHERE u.user_id={?}", $_uid); - list($this->prenom, $this->nom, $this->promo, $this->forlife, $this->bestalias) = $res->fetchOneRow(); + 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 + /** 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); @@ -120,22 +121,21 @@ class Validate // }}} // {{{ 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 + /** 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 () + protected function clean() { if ($this->unique) { return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', @@ -149,21 +149,21 @@ class Validate // }}} // {{{ function handle_formu() - /** fonction à réaliser en cas de valistion du formulaire + /** fonction à réaliser en cas de valistion du formulaire */ - function handle_formu() + public function handle_formu() { if (Env::has('delete')) { $this->clean(); - $this->trig('requete supprimée'); + $this->trig('requete supprimée'); return true; } - // mise à jour des informations + // mise à jour des informations if (Env::has('edit')) { if ($this->handle_editor()) { $this->update(); - $this->trig('requête mise à jour'); + $this->trig('requête mise à jour'); return true; } return false; @@ -177,18 +177,20 @@ class Validate return true; } } + if (!strlen(trim(Env::v('comm')))) { + return true; + } $this->comments[] = Array(S::v('bestalias'), Env::v('comm'), $formid); - // envoi d'un mail à hotliners + // envoi d'un mail à hotliners global $globals; - require_once('diogenes/diogenes.hermes.inc.php'); - $mailer = new HermesMailer; + $mailer = new PlMailer; $mailer->setSubject("Commentaires de validation {$this->type}"); $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}"); $mailer->addTo("hotliners@staff.polytechnique.org"); $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"; @@ -196,7 +198,7 @@ class Validate $mailer->send(); $this->update(); - $this->trig('commentaire ajouté'); + $this->trig('commentaire ajouté'); return true; } @@ -204,7 +206,7 @@ class Validate if ($this->commit()) { $this->sendmail(true); $this->clean(); - $this->trig('mail envoyé'); + $this->trig('mail envoyé'); return true; } else { $this->trig('erreur lors de la validation'); @@ -216,7 +218,7 @@ class Validate if (Env::v('comm')) { $this->sendmail(false); $this->clean(); - $this->trig('mail envoyé'); + $this->trig('mail envoyé'); return true; } else { $this->trig('pas de motivation pour le refus !!!'); @@ -229,20 +231,19 @@ class Validate // }}} // {{{ function sendmail - function sendmail($isok) + protected function sendmail($isok) { global $globals; - require_once('diogenes/diogenes.hermes.inc.php'); - $mailer = new HermesMailer; + $mailer = new PlMailer(); $mailer->setSubject($this->_mail_subj()); $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}"); $mailer->addTo("\"{$this->prenom} {$this->nom}\" <{$this->bestalias}@{$globals->mail->domain}>"); $mailer->addCc("validation+{$this->type}@{$globals->mail->domain}"); - $body = "Cher(e) camarade,\n\n" + $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,\nL'équipe Polytechnique.org\n"; $mailer->setTxtBody(wordwrap($body)); $mailer->send(); @@ -251,7 +252,8 @@ class Validate // }}} // {{{ function trig() - function trig($msg) { + protected function trig($msg) + { global $page; $page->trig($msg); } @@ -259,15 +261,15 @@ class Validate // }}} // {{{ function get_typed_request() - /** fonction statique qui renvoie la requête de l'utilisateur d'id $uidau timestamp $t - * @param $uid l'id de l'utilisateur concerné - * @param $type le type de la requête - * @param $stamp le timestamp de la requête + /** fonction statique qui renvoie la requête de l'utilisateur d'id $uidau timestamp $t + * @param $uid l'id de l'utilisateur concerné + * @param $type le type de la requête + * @param $stamp le timestamp de la requête * * XXX fonction "statique" XXX - * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_typed_request(...) + * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_typed_request(...) */ - 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); @@ -283,47 +285,58 @@ class Validate } // }}} - // {{{ function _mail_body + // {{{ function get_typed_requests() - function _mail_body($isok) + /** same as get_typed_request() but return an array of objects + */ + static public function get_typed_requests($uid, $type) { + $res = XDB::iterRow('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type); + $array = array(); + while (list($data) = $res->next()) { + $array[] = unserialize($data); + } + return $array; } + + // }}} + // {{{ 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 + /** fonction à utiliser pour insérer les données dans x4dat */ - 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; } + /** nom du formulaire d'édition */ + 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); @@ -333,9 +346,9 @@ class Validate } // }}} - // {{{ function id() + // {{{ function id() - function id() + public function id() { return $this->uid . '_' . $this->type . '_' . $this->stamp; } @@ -347,5 +360,5 @@ foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) { require_once($file); } -/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker: */ +/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker enc=utf-8: */ ?>