submitted patch from Stefan Sels that fixes the i18n problem (hopefully)
[squirrelmail.git] / functions / strings.php
index 3b1ea5a805d9ce8f5310a7335cb827da26e4c125..8cacea41f6c5c656ec2d649b5540982d9cbf4107 100644 (file)
@@ -6,29 +6,18 @@
    // Count the number of occurances of $needle are in $haystack.
    //*************************************************************************
    function countCharInString($haystack, $needle) {
-      $len = strlen($haystack);
-      for ($i = 0; $i < $len; $i++) {
-         if ($haystack[$i] == $needle)
-            $count++;
-      }
-      return $count;
+      $haystack = ereg_replace("[^$needle]","",$haystack);
+      return strlen($haystack);
    }
 
    //*************************************************************************
    // Read from the back of $haystack until $needle is found, or the begining
-   //    of the $haystack is reached.
+   //    of the $haystack is reached.  $needle is a single character
    //*************************************************************************
    function readShortMailboxName($haystack, $needle) {
-      if (substr($haystack, -1) == $needle)
-         $haystack = substr($haystack, 0, strlen($haystack) - 1);
-
-      if (strrpos($haystack, $needle)) {
-         $pos = strrpos($haystack, $needle) + 1;
-         $data = substr($haystack, $pos, strlen($haystack));
-      } else {
-         $data = $haystack;
-      }
-      return $data;
+      if ($needle == ".") $needle = "\.";
+      ereg("([^$needle]+)$needle?$", $haystack, $regs);
+      return $regs[1];
    }
 
    // Searches for the next position in a string minus white space
@@ -75,7 +64,8 @@
          while (!$words[$i] && $i < count($words)) {
             $i ++;
          }
-            
+
+         // Go to the next line if we have more to process            
          if ($i < count($words)) {
             $line .= "\n$beginning_spaces";
          }
    
 
    /** Returns an array of email addresses **/
+   /* Be cautious of "user@host.com" */
    function parseAddrs($text) {
-      if (trim($text) == "") {
+      if (trim($text) == "")
          return;
-      }
       $text = str_replace(" ", "", $text);
-      $text = ereg_replace( '"[^"]*"', "", $text);
+      $text = ereg_replace('"[^"]*"', "", $text);
+      $text = ereg_replace("\([^\)]*\)", "", $text);
       $text = str_replace(",", ";", $text);
       $array = explode(";", $text);
       for ($i = 0; $i < count ($array); $i++) {
 
    function translateText(&$body, $wrap_at, $charset) {
       global $where, $what; // from searching
+               global $url_parser_php;
 
       if (!isset($url_parser_php)) {
          include "../functions/url_parser.php";
       }
       
       $body_ary = explode("\n", $body);
+      $PriorQuotes = 0;
       for ($i=0; $i < count($body_ary); $i++) {
          $line = $body_ary[$i];
          if (strlen($line) - 2 >= $wrap_at) {
          $line = charset_decode($charset, $line);
          $line = str_replace("\t", '        ', $line);
          
-         $line = str_replace(' ', '&nbsp;', $line);
-         $line = nl2br($line);
-
          parseUrl ($line);
          
          $Quotes = 0;
          $pos = 0;
          while (1)
          {
-             if (strpos($line, '&nbsp;', $pos) === $pos)
+             if ($line[$pos] == ' ')
              {
-                $pos += 6;
+                $pos ++;
              }
              else if (strpos($line, '&gt;', $pos) === $pos)
              {
              }
          }
          
-         if ($Quotes > 1) {
-            $line = "<FONT COLOR=FF0000>$line</FONT>\n";
-         } else if ($Quotes) {
-            $line = "<FONT COLOR=800000>$line</FONT>\n";
-         }
+         if ($Quotes > 1)
+            $line = "<FONT COLOR=FF0000>$line</FONT>";
+         elseif ($Quotes)
+            $line = "<FONT COLOR=800000>$line</FONT>";
 
-         if ($line)
-         {
-             $line = '<tt>' . $line . '</tt>';
-         }
-
-         $body_ary[$i] = $line . '<br>';
+         $body_ary[$i] = $line;
       }
-      $body = implode("\n", $body_ary);
+      $body = "<pre>" . implode("\n", $body_ary) . "</pre>";
    }
 
    /* SquirrelMail version number -- DO NOT CHANGE */
-   $version = "0.6pre1 (cvs)";
+   $version = "1.0pre1 (cvs)";
 
 
    function find_mailbox_name ($mailbox) {
+/*
       $mailbox = trim($mailbox);
       if (substr($mailbox, strlen($mailbox)-1, strlen($mailbox)) == "\"") {
          $mailbox = substr($mailbox, 0, strlen($mailbox) - 1);
          $box = substr($mailbox, strrpos($mailbox, " ")+1, strlen($mailbox));
       }
       return $box;
+*/      
+
+      if (ereg(" *\"([^\r\n\"]*)\"[ \r\n]*$", $mailbox, $regs))
+          return $regs[1];
+      ereg(" *([^ \r\n\"]*)[ \r\n]*$",$mailbox,$regs);
+      return $regs[1];
+
    }
 
    function replace_spaces ($string) {
           $host = $SERVER_NAME;
       }
       
-      // Workaround to possibly get rid of extra port definitions.
       $port = '';
       if (! strstr($host, ':'))
       {
           if (isset($SERVER_PORT)) {
-              if ($SERVER_PORT != 80) {
+              if (($SERVER_PORT != 80 && $proto == "http://")
+                      || ($SERVER_PORT != 443 && $proto == "https://")) {
                   $port = sprintf(':%d', $SERVER_PORT);
               }
           }