<?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';
// 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"));
// 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())
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;
}
// 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;
}