<?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$
- **/
+ /**
+ ** 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$
+ **/
class abook_local_file extends addressbook_backend {
var $btype = 'local';
// 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;
}