<?php
+
/**
* abook_local_file.php
*
- * Copyright (c) 1999-2004 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
+ * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @subpackage addressbook
* ? create => if true: file is created if it does not exist.
* ? umask => umask set before opening file.
* ? name => name of address book.
- * ? detect_writeable => detect address book access permissions by
+ * ? detect_writeable => detect address book access permissions by
* checking file permissions.
* ? writeable => allow writing into address book. Used only when
* detect_writeable is set to false.
+ * ? listing => enable/disable listing
*</pre>
* NOTE. This class should not be used directly. Use the
* "AddressBook" class instead.
class abook_local_file extends addressbook_backend {
/**
* Backend type
- * @var string
+ * @var string
*/
var $btype = 'local';
/**
* @var bool
*/
var $writeable = false;
+ /**
+ * controls listing of address book
+ * @var bool
+ */
+ var $listing = true;
/**
* Umask of the file
* @var string
if(!empty($param['writeable'])) {
$this->writeable = $param['writeable'];
}
+ if(isset($param['listing'])) {
+ $this->listing = $param['listing'];
+ }
$this->open(true);
} else {
$this->error = '';
$file = $this->filename;
$create = $this->create;
- $fopenmode = ($this->writeable ? 'a+' : 'r');
+ $fopenmode = (($this->writeable && is_writable($file)) ? 'a+' : 'r');
/* Return true is file is open and $new is unset */
if($this->filehandle && !$new) {
/* To be replaced by advanded search expression parsing */
if(is_array($expr)) { return; }
+ // don't allow wide search when listing is disabled.
+ if ($expr=='*' && ! $this->listing)
+ return array();
+
/* Make regexp from glob'ed expression
* May want to quote other special characters like (, ), -, [, ], etc. */
$expr = str_replace('?', '.', $expr);
*/
function list_addr() {
$res = array();
+
+ if(isset($this->listing) && !$this->listing) {
+ return array();
+ }
+
$this->open();
@rewind($this->filehandle);
/* See if user exists already */
$ret = $this->lookup($userdata['nickname']);
if(!empty($ret)) {
- return $this->set_error(sprintf(_("User '%s' already exist"),
- $ret['nickname']));
+ // i18n: don't use html formating in translation
+ return $this->set_error(sprintf(_("User \"%s\" already exists"),$ret['nickname']));
}
/* Here is the data to write */
$data = $this->quotevalue($userdata['nickname']) . '|' .
$this->quotevalue($userdata['firstname']) . '|' .
- $this->quotevalue($userdata['lastname']) . '|' .
+ $this->quotevalue((!empty($userdata['lastname'])?$userdata['lastname']:'')) . '|' .
$this->quotevalue($userdata['email']) . '|' .
- $this->quotevalue($userdata['label']);
+ $this->quotevalue((!empty($userdata['label'])?$userdata['label']:''));
/* Strip linefeeds */
$data = ereg_replace("[\r\n]", ' ', $data);
/* See if user exists */
$ret = $this->lookup($alias);
if(empty($ret)) {
- return $this->set_error(sprintf(_("User '%s' does not exist"),
- $alias));
+ // i18n: don't use html formating in translation
+ return $this->set_error(sprintf(_("User \"%s\" does not exist"),$alias));
}
/* Lock the file to make sure we're the only process working
} else {
$rows[$i++] = array(0 => $userdata['nickname'],
1 => $userdata['firstname'],
- 2 => $userdata['lastname'],
+ 2 => (!empty($userdata['lastname'])?$userdata['lastname']:''),
3 => $userdata['email'],
- 4 => $userdata['label']);
+ 4 => (!empty($userdata['label'])?$userdata['label']:''));
}
}
}
} /* End of class abook_local_file */
-?>
\ No newline at end of file
+?>