<?php
/***************************************************************************
- * Copyright (C) 2003-2007 Polytechnique.org *
+ * Copyright (C) 2003-2010 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
{
// {{{ properties
- var $evtid;
- var $titre;
- var $texte;
- var $pmin;
- var $pmax;
- var $peremption;
- var $comment;
-
+ public $evtid;
+ public $titre;
+ public $texte;
+ public $pmin;
+ public $pmax;
+ public $expiration;
+ public $comment;
+
+ public $imgtype;
+ public $imgx;
+ public $imgy;
+ public $img;
+
// }}}
// {{{ constructor
- function EvtReq($_titre, $_texte, $_pmin, $_pmax, $_peremption, $_comment, $_uid) {
- $this->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()
- function editor()
- { return 'include/form.valid.edit-evts.tpl'; }
+ public function editor()
+ {
+ return 'include/form.valid.edit-evts.tpl';
+ }
// }}}
// {{{ function handle_editor()
- 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->peremption = Env::v('peremption');
+ $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";
}
// }}}
// {{{ 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.";
// }}}
// {{{ 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;
}
// }}}