From 050410f56097bfb29bb8e5d99e792cc3a9165a55 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 13 Feb 2009 05:44:49 -0500
Subject: [PATCH] - Fix multiple recipients input parsing (#1485733) - added shared rcube_explode_quoted_string() function

---
 program/include/rcube_imap.php |   27 ++-------------------------
 1 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 0e2dd6a..3dbd35d 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2958,13 +2958,13 @@
   function _parse_address_list($str, $decode=true)
     {
     // remove any newlines and carriage returns before
-    $a = $this->_explode_quoted_string('[,;]', preg_replace( "/[\r\n]/", " ", $str));
+    $a = rcube_explode_quoted_string('[,;]', preg_replace( "/[\r\n]/", " ", $str));
     $result = array();
 
     foreach ($a as $key => $val)
       {
       $val = preg_replace("/([\"\w])</", "$1 <", $val);
-      $sub_a = $this->_explode_quoted_string(' ', $decode ? $this->decode_header($val) : $val);
+      $sub_a = rcube_explode_quoted_string(' ', $decode ? $this->decode_header($val) : $val);
       $result[$key]['name'] = '';
 
       foreach ($sub_a as $k => $v)
@@ -2982,29 +2982,6 @@
         $result[$key]['address'] = $result[$key]['name'];
       }
     
-    return $result;
-    }
-
-
-  /**
-   * @access private
-   */
-  function _explode_quoted_string($delimiter, $string)
-    {
-    $result = array();
-    $strlen = strlen($string);
-    for ($q=$p=$i=0; $i < $strlen; $i++)
-    {
-      if ($string{$i} == "\"" && $string{$i-1} != "\\")
-        $q = $q ? false : true;
-      else if (!$q && preg_match("/$delimiter/", $string{$i}))
-      {
-        $result[] = substr($string, $p, $i - $p);
-        $p = $i + 1;
-      }
-    }
-    
-    $result[] = substr($string, $p);
     return $result;
     }
 

--
Gitblit v1.9.1