X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvalidations.inc.php;h=2f11046c701ce680f34d7c30cccfc92b06e5da50;hb=d4775fe2dea4db5e6ca3db4a6034bb03a8b711cc;hp=96aa447f7d6d3bd5e13f61d938e82f7c46c4a98f;hpb=780bc68d42104f5df954f8f9f875b29410b9f7fb;p=platal.git diff --git a/include/validations.inc.php b/include/validations.inc.php index 96aa447..2f11046 100644 --- a/include/validations.inc.php +++ b/include/validations.inc.php @@ -1,6 +1,6 @@ spoolroot . '/core/classes/xdb.php'; /** * Iterator class, that lists objects through the database @@ -57,7 +58,7 @@ class ValidateIterator extends XOrgDBIterator abstract class Validate { // {{{ properties - + public $uid; public $prenom; public $nom; @@ -70,7 +71,7 @@ abstract class Validate public $unique; // enable the refuse button public $refuse = true; - + public $type; public $comments = Array(); // the validations rules : comments for admins @@ -78,7 +79,7 @@ abstract class Validate // }}} // {{{ constructor - + /** constructeur * @param $_uid user id * @param $_unique requête pouvant être multiple ou non @@ -98,7 +99,7 @@ abstract class Validate WHERE u.user_id={?}", $_uid); list($this->prenom, $this->nom, $this->promo, $this->sexe, $this->forlife, $this->bestalias) = $res->fetchOneRow(); } - + // }}} // {{{ function submit() @@ -110,11 +111,13 @@ abstract class Validate 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; + $globals->updateNbValid(); return true; } @@ -131,31 +134,33 @@ abstract class Validate // }}} // {{{ 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 */ 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); } + $globals->updateNbValid(); + return $success; } // }}} // {{{ function handle_formu() - - /** fonction à réaliser en cas de valistion du formulaire + + /** fonction à réaliser en cas de validation du formulaire */ public function handle_formu() { if (Env::has('delete')) { $this->clean(); - $this->trig('requete supprimée'); + $this->trigSuccess('Requête supprimée'); return true; } @@ -163,7 +168,7 @@ abstract 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; @@ -184,13 +189,13 @@ abstract 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"; @@ -198,7 +203,7 @@ abstract class Validate $mailer->send(); $this->update(); - $this->trig('commentaire ajouté'); + $this->trigSuccess('Commentaire ajouté'); return true; } @@ -206,10 +211,10 @@ abstract class Validate if ($this->commit()) { $this->sendmail(true); $this->clean(); - $this->trig('mail envoyé'); + $this->trigSuccess('Email de validation envoyé'); return true; } else { - $this->trig('erreur lors de la validation'); + $this->trigError('Erreur lors de la validation'); return false; } } @@ -218,10 +223,10 @@ abstract class Validate if (Env::v('comm')) { $this->sendmail(false); $this->clean(); - $this->trig('mail envoyé'); + $this->trigSuccess('Email de refus envoyé'); return true; } else { - $this->trig('pas de motivation pour le refus !!!'); + $this->trigError('pas de motivation pour le refus !!!'); } } @@ -251,13 +256,22 @@ abstract class Validate // }}} // {{{ function trig() - - protected function trig($msg) + + protected function trigError($msg) + { + Platal::page()->trigError($msg); + } + + protected function trigWarning($msg) + { + Platal::page()->trigWarning($msg); + } + + protected function trigSuccess($msg) { - global $page; - $page->trig($msg); + Platal::page()->trigSuccess($msg); } - + // }}} // {{{ function get_typed_request() @@ -309,25 +323,36 @@ abstract class Validate } // }}} + // {{{ 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); - + // }}} // {{{ function _mail_subj abstract protected function _mail_subj(); - + // }}} // {{{ function commit() - + /** fonction à utiliser pour insérer les données dans x4dat */ abstract public function commit(); // }}} // {{{ function formu() - + /** nom du template qui contient le formulaire */ abstract public function formu();