Style police again.
[squirrelmail.git] / functions / abook_local_file.php
index 12e588e32c051ec5aa68c15b406d6ab8f6610db4..7863fa7c1b62991639842cf1064fe9c3aba708a0 100644 (file)
@@ -1,24 +1,43 @@
 <?php
 
-  /**
-   **  abook_local_file.php
-   **
-   **  Backend for addressbook as a pipe separated file
-   **
-   **  An array with the following elements must be passed to
-   **  the class constructor (elements marked ? are optional):
-   **
-   **     filename  => path to addressbook file
-   **   ? create    => if true: file is created if it does not exist.
-   **   ? umask     => umask set before opening file.
-   **
-   **  NOTE. This class should not be used directly. Use the
-   **        "AddressBook" class instead.
-   **
-   ** $Id$
-   **/
-
-   class abook_local_file extends addressbook_backend {
+/**
+ * abook_local_file.php
+ *
+ * Copyright (c) 1999-2001 The Squirrelmail Development Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * Backend for addressbook as a pipe separated file
+ *
+ * An array with the following elements must be passed to
+ * the class constructor (elements marked ? are optional):
+ *
+ *    filename  => path to addressbook file
+ *  ? create    => if true: file is created if it does not exist.
+ *  ? umask     => umask set before opening file.
+ *
+ * NOTE. This class should not be used directly. Use the
+ *       "AddressBook" class instead.
+ *
+ * $Id$
+ */
+
+/*****************************************************************/
+/*** THIS FILE NEEDS TO HAVE ITS FORMATTING FIXED!!!           ***/
+/*** PLEASE DO SO AND REMOVE THIS COMMENT SECTION.             ***/
+/***    + Base level indent should begin at left margin, as    ***/
+/***      the first line of the class definition below.        ***/
+/***    + All identation should consist of four space blocks   ***/
+/***    + Tab characters are evil.                             ***/
+/***    + all comments should use "slash-star ... star-slash"  ***/
+/***      style -- no pound characters, no slash-slash style   ***/
+/***    + FLOW CONTROL STATEMENTS (if, while, etc) SHOULD      ***/
+/***      ALWAYS USE { AND } CHARACTERS!!!                     ***/
+/***    + Please use ' instead of ", when possible. Note "     ***/
+/***      should always be used in _( ) function calls.        ***/
+/*** Thank you for your help making the SM code more readable. ***/
+/*****************************************************************/
+
+class abook_local_file extends addressbook_backend {
      var $btype = 'local';
      var $bname = 'local_file';
 
@@ -31,7 +50,7 @@
 
      // Constructor
      function abook_local_file($param) {
-       $this->sname = _('Personal address book');
+       $this->sname = _("Personal address book");
        $this->umask = Umask();
 
        if(is_array($param)) {
@@ -39,7 +58,7 @@
           return $this->set_error('Invalid parameters');
         if(!is_string($param['filename']))
           return $this->set_error($param['filename'] . ': '.
-                                  _('Not a file name'));
+                                  _("Not a file name"));
 
         $this->filename = $param['filename'];
 
@@ -72,7 +91,7 @@
 
        // Check that new file exitsts
        if((!(file_exists($file) && is_readable($file))) && !$create)
-        return $this->set_error("$file: " . _('No such file or directory'));
+        return $this->set_error("$file: " . _("No such file or directory"));
 
        // Close old file, if any
        if($this->filehandle) $this->close();
           $this->filename   = $file;
           $this->writeable  = false;
         } else {
-          return $this->set_error("$file: " . _('Open failed'));
+          return $this->set_error("$file: " . _("Open failed"));
         }
        }
 
 
      // Overwrite the file with data from $rows
      // NOTE! Previous locks are broken by this function
-     function overwrite($rows) {
+     function overwrite(&$rows) {
        $newfh = @fopen($this->filename, 'w');
        if(!$newfh)
-        return $this->set_error("$file: " . _('Open failed'));
+        return $this->set_error("$file: " . _("Open failed"));
 
        for($i = 0 ; $i < sizeof($rows) ; $i++) {
         if(is_array($rows[$i]))
-          fwrite($newfh, join('|', $rows[$i]) . '\n');
+          fwrite($newfh, join('|', $rows[$i]) . "\n");
        }       
 
        fclose($newfh);
        // To be replaced by advanded search expression parsing
        if(is_array($expr)) return;
 
-       // Make regexp from glob'ed expression 
-       $expr = ereg_replace('\?', '.', $expr);
-       $expr = ereg_replace('\*', '.*', $expr);
+       // Make regexp from glob'ed expression
+       // May want to quote other special characters like (, ), -, [, ], etc.
+       $expr = str_replace('?', '.', $expr);
+       $expr = str_replace('*', '.*', $expr);
 
        $res = array();
        if(!$this->open())
      // Add address
      function add($userdata) {
        if(!$this->writeable) 
-        return $this->set_error(_('Addressbook is read-only'));
+        return $this->set_error(_("Addressbook is read-only"));
 
        // See if user exist already
        $ret = $this->lookup($userdata['nickname']);
        if(!empty($ret))
-        return $this->set_error(sprintf(_('User \'%s\' already exist'), 
+        return $this->set_error(sprintf(_("User '%s' already exist"),
                                         $ret['nickname']));
 
        // Here is the data to write
                $userdata['lastname'] . '|' . $userdata['email'] . '|' .
                $userdata['label'];
        // Strip linefeeds
-       $data = ereg_replace('[\r\n]', ' ', $data);
+       $data = ereg_replace("[\r\n]", ' ', $data);
        // Add linefeed at end
-       $data = $data . '\n';
+       $data = $data . "\n";
 
        // Reopen file, just to be sure
        $this->open(true);
        if(!$this->writeable) 
-        return $this->set_error(_('Addressbook is read-only'));
+        return $this->set_error(_("Addressbook is read-only"));
 
        // Lock the file
        if(!$this->lock())
-        return $this->set_error(_('Could not lock datafile'));
+        return $this->set_error(_("Could not lock datafile"));
 
        // Write
        $r = fwrite($this->filehandle, $data);
        if($r > 0) return true;
 
        // Fail
-       $this->set_error(_('Write to addressbook failed'));
+       $this->set_error(_("Write to addressbook failed"));
        return false;
      }
 
      // Delete address
      function remove($alias) {
        if(!$this->writeable) 
-        return $this->set_error(_('Addressbook is read-only'));
+        return $this->set_error(_("Addressbook is read-only"));
 
        // Lock the file to make sure we're the only process working
        // on it.
        if(!$this->lock())
-        return $this->set_error(_('Could not lock datafile'));
+        return $this->set_error(_("Could not lock datafile"));
 
        // Read file into memory, ignoring nicknames to delete
-       $this->open();
        @rewind($this->filehandle);
        $i = 0;
        $rows = array();
        }
 
        // Write data back
-       if(!$this->overwrite(&$rows)) {
+       if(!$this->overwrite($rows)) {
         $this->unlock();
         return false;
        }
      // Modify address
      function modify($alias, $userdata) {
        if(!$this->writeable) 
-        return $this->set_error(_('Addressbook is read-only'));
+        return $this->set_error(_("Addressbook is read-only"));
 
        // See if user exist
        $ret = $this->lookup($alias);
        if(empty($ret))
-        return $this->set_error(sprintf(_('User \'%s\' does not exist'), 
+        return $this->set_error(sprintf(_("User '%s' does not exist"),
                                         $alias));
 
        // Lock the file to make sure we're the only process working
        // on it.
        if(!$this->lock())
-        return $this->set_error(_('Could not lock datafile'));
+        return $this->set_error(_("Could not lock datafile"));
 
        // Read file into memory, modifying the data for the 
        // user identifyed by $alias
-       $this->open();
+       $this->open(true);
        @rewind($this->filehandle);
        $i = 0;
        $rows = array();
        }
 
        // Write data back
-       if(!$this->overwrite(&$rows)) {
+       if(!$this->overwrite($rows)) {
         $this->unlock();
         return false;
        }