Stop using deprecated ereg() functions (#2820952)
[squirrelmail.git] / functions / addressbook.php
index 3b2fe54f4a51931ec0d7793777b36aa9aa662496..d9b7aa79c1eb49dfa1ee82d800ca1b420c7b9721 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Functions require SM_PATH and support of forms.php functions
  *
- * @copyright © 1999-2007 The SquirrelMail Project Team
+ * @copyright © 1999-2009 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -516,12 +516,26 @@ class AddressBook {
     function full_address($row) {
         global $data_dir, $username;
         $addrsrch_fullname = getPref($data_dir, $username, 'addrsrch_fullname');
-        if ($addrsrch_fullname == 'fullname')
-            return $row['name'] . ' <' . trim($row['email']) . '>';
-        else if ($addrsrch_fullname == 'nickname')
-            return $row['nickname'] . ' <' . trim($row['email']) . '>';
-        else // "noprefix"
-            return trim($row['email']);
+
+        // allow multiple addresses in one row (poor person's grouping - bah)
+        // (separate with commas)
+        //
+        $return = '';
+        $addresses = explode(',', $row['email']);
+        foreach ($addresses as $address) {
+            
+            if (!empty($return)) $return .= ', ';
+
+            if ($addrsrch_fullname == 'fullname')
+                $return .= '"' . $row['name'] . '" <' . trim($address) . '>';
+            else if ($addrsrch_fullname == 'nickname')
+                $return .= '"' . $row['nickname'] . '" <' . trim($address) . '>';
+            else // "noprefix"
+                $return .= trim($address);
+
+        }
+
+        return $return;
     }
 
     /**
@@ -606,6 +620,10 @@ class AddressBook {
      *                       of the SM_ABOOK_FIELD_* constants
      *                       defined in include/constants.php
      *                       (OPTIONAL; defaults to nickname field)
+     *                       NOTE: uniqueness is only guaranteed
+     *                       when the nickname field is used here;
+     *                       otherwise, the first matching address
+     *                       is returned.
      *
      * @return mixed Array with lookup results when the value
      *               was found, an empty array if the value was
@@ -713,7 +731,7 @@ class AddressBook {
         }
 
         /* Blocks use of space, :, |, #, " and ! in nickname */
-        if (eregi('[ \\:\\|\\#\\"\\!]', $userdata['nickname'])) {
+        if (preg_match('/[ :|#"!]/', $userdata['nickname'])) {
             $this->error = _("Nickname contains illegal characters");
             return false;
         }
@@ -813,7 +831,7 @@ class AddressBook {
             return false;
         }
 
-        if (eregi('[\\: \\|\\#"\\!]', $userdata['nickname'])) {
+        if (preg_match('/[: |#"!]/', $userdata['nickname'])) {
             $this->error = _("Nickname contains illegal characters");
             return false;
         }
@@ -929,6 +947,10 @@ class addressbook_backend {
      * @param integer $field The field to look in, should be one
      *                       of the SM_ABOOK_FIELD_* constants
      *                       defined in include/constants.php
+     *                       NOTE: uniqueness is only guaranteed
+     *                       when the nickname field is used here;
+     *                       otherwise, the first matching address
+     *                       is returned.
      *
      * @return mixed Array with lookup results when the value
      *               was found, an empty array if the value was