Allow unsent compose sessions to stay around, but remove them after successful send
[squirrelmail.git] / functions / addressbook.php
index 7103d6a162f570ebf12b9de47ca985ed5a509a03..a91b68218ede799a0e81bc4ececc3934885850ba 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Functions require SM_PATH and support of forms.php functions
  *
- * @copyright © 1999-2009 The SquirrelMail Project Team
+ * @copyright 1999-2018 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) {
@@ -161,7 +162,7 @@ function addressbook_init($showerr = true, $onlylocal = false) {
      * display address book init errors.
      */
     if ($abook_init_error!='' && $showerr) {
-        error_box(nl2br(htmlspecialchars($abook_init_error)));
+        error_box(nl2br(sm_encode_html_special_chars($abook_init_error)));
     }
 
     /* Return the initialized object */
@@ -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;
@@ -413,7 +414,7 @@ class AddressBook {
      *
      * Extra field can be used to add link to form, which allows
      * to modify all fields supported by backend. This is the only field
-     * that is not sanitized with htmlspecialchars. Backends MUST make
+     * that is not sanitized with sm_encode_html_special_chars. Backends MUST make
      * sure that field data is sanitized and displayed correctly inside
      * table cell. Use of html formating in other address book fields is
      * not allowed. Backends that don't return 'extra' row in address book
@@ -424,12 +425,19 @@ class AddressBook {
     var $add_extra_field = false;
 
     /**
-     * Constructor function.
+     * Constructor (PHP5 style, required in some future version of PHP)
      */
-    function AddressBook() {
+    function __construct() {
         $this->localbackendname = _("Personal Address Book");
     }
 
+    /**
+     * Constructor (PHP4 style, kept for compatibility reasons)
+     */
+    function AddressBook() {
+        self::__construct();
+    }
+
     /**
      * Return an array of backends of a given type,
      * or all backends if no type is specified.
@@ -513,9 +521,8 @@ class AddressBook {
      * @param array $row address book entry
      * @return string email address with real name prepended
      */
-    function full_address($row) {
-        global $data_dir, $username;
-        $addrsrch_fullname = getPref($data_dir, $username, 'addrsrch_fullname');
+    static function full_address($row) {
+        global $data_dir, $username, $addrsrch_fullname;
 
         // allow multiple addresses in one row (poor person's grouping - bah)
         // (separate with commas)
@@ -731,7 +738,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;
         }
@@ -831,7 +838,7 @@ class AddressBook {
             return false;
         }
 
-        if (eregi('[\\: \\|\\#"\\!]', $userdata['nickname'])) {
+        if (preg_match('/[: |#"!]/', $userdata['nickname'])) {
             $this->error = _("Nickname contains illegal characters");
             return false;
         }
@@ -957,7 +964,7 @@ class addressbook_backend {
      *               not found, or false if an error occured.
      *
      */
-    function lookup($value, $field) {
+    function lookup($value, $field=SM_ABOOK_FIELD_NICKNAME) {
         $this->set_error('lookup is not implemented');
         return false;
     }