X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvalidations%2Fevts.inc.php;h=4a7416f6baf688c6e9992b6ea852ff50789f9933;hb=c76545c351fae4e2298624ff9ee5bf854dc5a5b6;hp=3d7f5fcda88366c11cd60e77e65712025722a0dc;hpb=a3a049fc80d3707bcc76903ab89f73974c470c0c;p=platal.git diff --git a/include/validations/evts.inc.php b/include/validations/evts.inc.php index 3d7f5fc..4a7416f 100644 --- a/include/validations/evts.inc.php +++ b/include/validations/evts.inc.php @@ -1,6 +1,6 @@ Validate($_uid, false, 'evts'); + public function __construct($_titre, $_texte, $_pmin, $_pmax, $_expiration, $_comment, User &$_user, PlUpload &$upload = null) + { + parent::__construct($_user, false, 'evts'); $this->titre = $_titre; $this->texte = $_texte; $this->pmin = $_pmin; $this->pmax = $_pmax; - $this->peremption = $_peremption; + $this->expiration = $_expiration; $this->comment = $_comment; + if ($upload) { + $this->readImage($upload); + } + } + + // }}} + // {{{ function readImage() + + private function readImage(PlUpload &$upload) + { + if ($upload->exists() && $upload->isType('image')) { + list($this->imgx, $this->imgy, $this->imgtype) = $upload->imageInfo(); + $this->img = $upload->getContents(); + $upload->rm(); + } } // }}} // {{{ function formu() - function formu() - { return 'include/form.valid.evts.tpl'; } + public function formu() + { + return 'include/form.valid.evts.tpl'; + } + + // }}} + // {{{ functon editor() + + public function editor() + { + return 'include/form.valid.edit-evts.tpl'; + } + + // }}} + // {{{ function handle_editor() + + protected function handle_editor() + { + $this->titre = Env::v('titre'); + $this->texte = Env::v('texte'); + $this->pmin = Env::i('promo_min'); + $this->pmax = Env::i('promo_max'); + $this->expiration = Env::v('expiration'); + if (@$_FILES['image']['tmp_name']) { + $upload = PlUpload::get($_FILES['image'], S::user()->login(), 'event'); + if (!$upload) { + $this->trigError("Impossible de télécharger le fichier"); + } elseif (!$upload->isType('image')) { + $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG'); + $upload->rm(); + } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) { + $page->trigError('Impossible de retraiter l\'image'); + } else { + $this->readImage($upload); + } + } + return true; + } // }}} // {{{ function _mail_subj - - function _mail_subj() + + protected function _mail_subj() { - return "[Polytechnique.org/EVENEMENTS] Proposition d'événement"; + return "[Polytechnique.org/EVENEMENTS] Proposition d'événement"; } // }}} // {{{ function _mail_body - function _mail_body($isok) + protected function _mail_body($isok) { if ($isok) { - return " L'annonce que tu avais proposée ({$this->titre}) vient d'être validée."; + return " L'annonce que tu avais proposée ({$this->titre}) vient d'être validée."; } else { - return " L'annonce que tu avais proposée ({$this->titre}) a été refusée."; + return " L'annonce que tu avais proposée ({$this->titre}) a été refusée."; } } // }}} // {{{ function commit() - function commit() + public function commit() { - return XDB::execute( - "INSERT INTO evenements - SET user_id = {?}, creation_date=NOW(), titre={?}, texte={?}, - peremption={?}, promo_min={?}, promo_max={?}, flags=CONCAT(flags,',valide')", - $this->uid, $this->titre, $this->texte, - $this->peremption, $this->pmin, $this->pmax); + /* TODO: refines this filter on promotions by using userfilter. */ + if (XDB::execute("INSERT INTO announces + SET uid = {?}, creation_date=NOW(), titre={?}, texte={?}, + expiration={?}, promo_min={?}, promo_max={?}, flags=CONCAT(flags,',valide,wiki')", + $this->user->id(), $this->titre, $this->texte, + $this->expiration, $this->pmin, $this->pmax)) { + $eid = XDB::insertId(); + if ($this->img) { + XDB::execute("INSERT INTO announce_photos + SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}", + XDB::insertId(), $this->imgtype, $this->imgx, $this->imgy, $this->img); + } + global $globals; + if ($globals->banana->event_forum) { + require_once 'banana/forum.inc.php'; + $banana = new ForumsBanana($this->user); + $post = $banana->post($globals->banana->event_forum, + $globals->banana->event_reply, + $this->titre, MiniWiki::wikiToText($this->texte, false, 0, 80)); + if ($post != -1) { + XDB::execute("UPDATE announces + SET creation_date = creation_date, post_id = {?} + WHERE id = {?}", $post, $eid); + } + } + return true; + } + return false; } // }}} @@ -90,5 +169,5 @@ class EvtReq extends Validate // }}} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker: +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>