Some improvements for banana 'stand-alone'
[banana.git] / banana / banana.inc.php.in
index 0698454..5a514bc 100644 (file)
@@ -26,6 +26,7 @@ class Banana
                                     'autoup' => 1);
     static public $boxpattern;
     static public $withtabs = true;
+    static public $baseurl   = null;
     static public $mimeparts = array();
 
 ### Spool ###
@@ -53,6 +54,7 @@ class Banana
     static public $msgshow_externalimages = false;
     static public $msgshow_hasextimages   = false;
     static public $msgshow_withthread = true;
+    static public $msgshow_javascript = true;
 
     /** Match an url
      * Should be included in a regexp delimited using /, !, , or @ (eg: "/$url_regexp/ui")
@@ -65,7 +67,7 @@ class Banana
      *   $matches[2] = "http://www.polytechnique.org"
      *   $matches[3] = "]"
      */
-    static public $msgshow_url     = '(["\[])?((?:[a-z]+:\/\/|www\.)(?:[\.\,\;\!\:]*[a-z\@0-9~%$£µ&i#\-+=_\/\?]+)+)(["\]])?';
+    static public $msgshow_url     = '(["\[\<])?((?:[a-z]+:\/\/|www\.)(?:[\.\,\;\!\:]*[a-z\@0-9~%$£µ&i#\-+=_\/\?]+)+)(["\]\>])?';
 
 ### Message edition ###
     static public $msgedit_canattach  = true;
@@ -497,7 +499,7 @@ class Banana
                     $hdr_values[$header] = str_replace(', ', ',', $hdr_values[$header]);
                 }
             }
-            if ($artid) {
+            if (!is_null($artid)) {
                 $old =& $this->loadMessage($group, $artid);
                 $hdr_values['References'] = $old->getHeaderValue('references') . $old->getHeaderValue('message-id');
             }
@@ -507,8 +509,8 @@ class Banana
             }
             if (empty($hdr_values['Subject'])) {
                 Banana::$page->trig(_b_('Le message doit avoir un sujet'));
-            } elseif (Banana::$msgedit_canattach && isset($_FILES['attachment'])) {
-                $uploaded = $_FILES['attachment'];
+            } elseif (Banana::$msgedit_canattach && isset($_FILES['attachment']) && $_FILES['attachment']['name']) {
+                $uploaded =& $_FILES['attachment'];
                 if (!is_uploaded_file($uploaded['tmp_name'])) {
                     Banana::$page->trig(_b_('Une erreur est survenue lors du téléchargement du fichier'));
                 } else {
@@ -522,9 +524,10 @@ class Banana
                     $this->loadSpool($group);
                     $newid = Banana::$spool->updateUnread(Banana::$profile['lastnews']);
                     Banana::$page->redirect(array('group' => $group, 'artid' => $newid ? $newid : $artid));
-                }
-                Banana::$page->trig(_b_('Une erreur est survenue lors de l\'envoi du message :') . '<br />'
+                } else {
+                    Banana::$page->trig(_b_('Une erreur est survenue lors de l\'envoi du message :') . '<br />'
                                    . Banana::$protocole->lastError());
+                }
             }
         } else {
             if (!is_null($artid)) {
@@ -666,19 +669,23 @@ class Banana
         Banana::load('spool');
         if (!Banana::$spool || Banana::$spool->group != $group) {
             $clean = false;
-            if ($group == @$_SESSION['banana_group'] && isset($_SESSION['banana_spool'])) {
-                Banana::$spool = unserialize($_SESSION['banana_spool']);
-                $clean = @(Banana::$profile['lastnews'] != $_SESSION['banana_lastnews']);
-            } else {
-                unset($_SESSION['banana_message']);
-                unset($_SESSION['banana_artid']);
-                unset($_SESSION['banana_showhdr']);
+            if (php_sapi_name() != 'cli') {
+                if ($group == @$_SESSION['banana_group'] && isset($_SESSION['banana_spool'])) {
+                    Banana::$spool = unserialize($_SESSION['banana_spool']);
+                    $clean = @(Banana::$profile['lastnews'] != $_SESSION['banana_lastnews']);
+                } else {
+                    unset($_SESSION['banana_message']);
+                    unset($_SESSION['banana_artid']);
+                    unset($_SESSION['banana_showhdr']);
+                }
             }
             BananaSpool::getSpool($group, Banana::$profile['lastnews'], Banana::$profile['autoup'] || $clean);
-            $_SESSION['banana_group'] = $group;
-            if (!Banana::$profile['display']) {
-                $_SESSION['banana_spool'] = serialize(Banana::$spool);
-                $_SESSION['banana_lastnews'] = Banana::$profile['lastnews'];
+            if (php_sapi_name() != 'cli') {
+                $_SESSION['banana_group'] = $group;
+                if (!Banana::$profile['display']) {
+                    $_SESSION['banana_spool'] = serialize(Banana::$spool);
+                    $_SESSION['banana_lastnews'] = Banana::$profile['lastnews'];
+                }
             }
             Banana::$spool->setMode(Banana::$profile['display'] ? Banana::SPOOL_UNREAD : Banana::SPOOL_ALL);
         }