/**
* abook_local_file.php
*
- * @copyright © 1999-2009 The SquirrelMail Project Team
+ * @copyright 1999-2017 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
/* ========================== Private ======================= */
/**
- * Constructor
+ * Constructor (PHP5 style, required in some future version of PHP)
* @param array $param backend options
* @return bool
*/
- function abook_local_file($param) {
+ function __construct($param) {
$this->sname = _("Personal Address Book");
$this->umask = Umask();
}
}
+ /**
+ * Constructor (PHP4 style, kept for compatibility reasons)
+ * @param array $param backend options
+ * @return bool
+ */
+ function abook_local_file($param) {
+ return self::__construct($param);
+ }
+
/**
* Open the addressbook file and store the file pointer.
* Use $file as the file to open, or the class' own
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);
- $expr = str_replace('*', '.*', $expr);
+ // Make regexp from glob'ed expression
+ $expr = preg_quote($expr);
+ $expr = str_replace(array('\\?', '\\*'), array('.', '.*'), $expr);
$res = array();
if(!$this->open()) {
$oTemplate->display('footer.tpl');
die();
} else {
- $line = join(' ', $row);
/**
* TODO: regexp search is supported only in local_file backend.
* Do we check format of regexp or ignore errors?
*/
- // errors on eregi call are suppressed in order to prevent display of regexp compilation errors
- if(@eregi($expr, $line)) {
+ // errors on preg_match call are suppressed in order to prevent display of regexp compilation errors
+ if (@preg_match('/' . $expr . '/i', $row[0]) // nickname
+ || @preg_match('/' . $expr . '/i', $row[1]) // firstname
+ || @preg_match('/' . $expr . '/i', $row[2]) // lastname
+ || @preg_match('/' . $expr . '/i', $row[3])) { // email
array_push($res, array('nickname' => $row[0],
'name' => $this->fullname($row[1], $row[2]),
'firstname' => $row[1],
$this->quotevalue((!empty($userdata['label'])?$userdata['label']:''));
/* Strip linefeeds */
- $data = ereg_replace("[\r\n]", ' ', $data);
+ $nl_str = array("\r","\n");
+ $data = str_replace($nl_str, ' ', $data);
/**
* Make sure that entry fits into allocated record space.
function quotevalue($value) {
/* Quote the field if it contains | or ". Double quotes need to
* be replaced with "" */
- if(ereg("[|\"]", $value)) {
+ if(stristr($value, '"') || stristr($value, '|')) {
$value = '"' . str_replace('"', '""', $value) . '"';
}
return $value;