Better performance by reducing token usage to only one at a time (also added an optio...
[squirrelmail.git] / functions / addressbook.php
index 905e630af022cff95b0779e62d915f09877828c5..477f7ca09c835aadd4e72e2bad0be3d66687bbe7 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-2012 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -54,6 +54,7 @@ function addressbook_init($showerr = true, $onlylocal = false) {
         /* File */
         $filename = getHashedFile($username, $data_dir, "$username.abook");
         $r = $abook->add_backend('local_file', Array('filename' => $filename,
+                                                     'umask' => 0077,
                                                      'line_length' => $abook_file_line_length,
                                                      'create'   => true));
         if(!$r && $showerr) {
@@ -191,7 +192,7 @@ function abook_create_form($form_url, $name, $title, $button,
 
     global $oTemplate;
 
-    $output = addForm($form_url, 'post', 'f_add');
+    $output = addForm($form_url, 'post', 'f_add', '', '', array(), TRUE);
 
     if ($button == _("Update address")) {
         $edit = true;
@@ -514,14 +515,27 @@ class AddressBook {
      * @return string email address with real name prepended
      */
     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']);
+        global $data_dir, $username, $addrsrch_fullname;
+
+        // 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;
     }
 
     /**
@@ -717,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;
         }
@@ -817,7 +831,7 @@ class AddressBook {
             return false;
         }
 
-        if (eregi('[\\: \\|\\#"\\!]', $userdata['nickname'])) {
+        if (preg_match('/[: |#"!]/', $userdata['nickname'])) {
             $this->error = _("Nickname contains illegal characters");
             return false;
         }