X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=inline;f=banana%2Fbanana.inc.php.in;h=80661ebb9cfffc6b2c636f56cd95b8b468e73cc5;hb=a1937df3707ba8ffc2f3e7ad3629eadeb93e2898;hp=c45d717f0dd4c3612a39f244898cb316b4731dc9;hpb=17b3975295458d3cede328dc1b8a95ffae03f6a0;p=banana.git diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in index c45d717..80661eb 100644 --- a/banana/banana.inc.php.in +++ b/banana/banana.inc.php.in @@ -10,7 +10,6 @@ class Banana { var $maxspool = 3000; - var $maxfilesize = 100000; var $hdecode = array('from','name','organization','subject'); var $parse_hdr = array('content-disposition', 'content-transfer-encoding', 'content-type', 'date', 'followup-to', 'from', @@ -20,6 +19,20 @@ class Banana /** Favorites MIMEtypes to use, by order for reading multipart messages */ var $body_mime = array('text/plain', 'text/html', 'text/richtext'); + /** Indicate wether posting attachment is allowed + */ + var $can_attach = true; + /** Maximum allowed file size for attachment + */ + var $maxfilesize = 100000; + /** Indicate wether posting html messages is allowed + */ + var $can_html = false; + + /** Regexp for selecting newsgroups to show (if empty, match all newsgroups) + * ex : '^xorg\..*' for xorg.* + */ + var $grp_pattern; var $tbefore = 5; var $tafter = 5; @@ -27,13 +40,25 @@ class Banana var $wrap = 74; + /** Boundary for multipart messages + */ var $boundary = "bananaBoundary42"; + /** Global headers to use for text/plain messages + */ var $custom = "Content-Type: text/plain; charset=utf-8\nMime-Version: 1.0\nContent-Transfer-Encoding: 8bit\nUser-Agent: Banana @VERSION@\n"; + /** Global headers to use from multipart messages + */ var $custom_mp = "Content-Type: multipart/mixed; boundary=\"bananaBoundary42\"\nContent-Transfer-Encoding: 7bit\nUser-Agent: Banana @VERSION@\n"; + /** Body part headers to use from multipart messages + */ var $custom_bd = "Content-Type: text/plain; charset=utf-8\nContent-Transfert-Encoding: 8bit"; + /** News serveur to use + */ var $host = 'news://localhost:119/'; + /** User profile + */ var $profile = Array( 'name' => 'Anonymous ', 'sig' => '', 'org' => '', 'customhdr' =>'', 'display' => 0, 'lastnews' => 0, 'locale' => 'fr_FR', 'subscribe' => array()); @@ -54,6 +79,7 @@ class Banana function run($class = 'Banana') { global $banana; + Banana::_require('misc'); $banana = new $class(); @@ -116,7 +142,11 @@ class Banana if (isset($_GET['action']) && $_GET['action'] == 'view') { $action = true; } - return $banana->action_getAttachment($group, $artid, $_GET['pj'], $action); + $att = $banana->action_getAttachment($group, $artid, $_GET['pj'], $action); + if ($att != "") { + return $res.$att; + } + return ""; } return $res . $banana->action_showArticle($group, $artid, $partid); @@ -318,17 +348,34 @@ class Banana // include attachment in the body $uploaded = $this->_upload('newpj'); - if ($uploaded['error'] == 0) { - $this->custom = $this->custom_mp; - $body = "\n--".$this->boundary."\n".$this->custom_bd."\n\n".$body."\n--".$this->boundary."\n"; - - $body .= 'Content-Type: '.$uploaded['type'].'; name="'.$uploaded['name']."\"\n"; - $body .= 'Content-Transfer-Encoding: '.$uploaded['encoding']."\n\n"; - $body .= 'Content-Disposition: attachment; filename="'.$uploaded['name']."\"\n"; - $body .= $uploaded['data']; - $body .= '--'.$this->boundary.'--'; + switch ($uploaded['error']) { + case UPLOAD_ERR_OK: + $this->custom = $this->custom_mp; + $body = "\n--".$this->boundary."\n".$this->custom_bd."\n\n".$body."\n--".$this->boundary."\n"; + + $body .= 'Content-Type: '.$uploaded['type'].'; name="'.$uploaded['name']."\"\n"; + $body .= 'Content-Transfer-Encoding: '.$uploaded['encoding']."\n\n"; + $body .= 'Content-Disposition: attachment; filename="'.$uploaded['name']."\"\n"; + $body .= $uploaded['data']; + $body .= '--'.$this->boundary.'--'; + break; + + case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: + return '

'._b_('Fichier trop gros pour être envoyé : ') + .$uploaded['name'].'

'.$this->action_showThread($group, $artid); + + case UPLOAD_ERR_PARTIAL: + return '

'._b_('Erreur lors de l\'upload de ') + .$uploaded['name'].'

'.$this->action_showThread($group, $artid); + + case UPLOAD_ERR_NO_FILE: + return '

'._b_('Le fichier spécifié n\'existe pas : ') + .$uploaded['name'].'

'.$this->action_showThread($group, $artid); + + case UPLOAD_ERR_NO_TMP_DIR: + return '

'._b_('Une erreur est survenue sur le serveur lors de l\'upload de ') + .$uploaded['name'].'

'.$this->action_showThread($group, $artid); } - #TODO:afficher les erreurs lorsque l'upload ne marche pas // finalise and post the message $msg .= $this->custom.$this->profile['customhdr']."\n".$body;