X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fabook_database.php;h=20efeb65eec468c02407131b996b198d90deed1e;hp=532ef988b11aa52a1bff8af76dc08b1ed0b1e5a1;hb=62f7daa5b0686061e12aeeee9866c195488c0d44;hpb=a9d318b0fb7b2da1b430575cebec0592f5817f2b diff --git a/functions/abook_database.php b/functions/abook_database.php index 532ef988..20efeb65 100644 --- a/functions/abook_database.php +++ b/functions/abook_database.php @@ -1,5 +1,5 @@ \n"; + $error .= sprintf(_("Is PEAR installed, and is the include path set correctly to find %s?"), + 'DB.php') . "
\n"; + $error .= _("Please contact your system administrator and report this error."); + error_box($error, $color); + exit; +} /** * Undocumented class - stores the addressbook in a sql database @@ -42,31 +51,31 @@ require_once('DB.php'); class abook_database extends addressbook_backend { var $btype = 'local'; var $bname = 'database'; - + var $dsn = ''; var $table = ''; var $owner = ''; var $dbh = false; - + var $writeable = true; - + /* ========================== Private ======================= */ - + /* Constructor */ function abook_database($param) { $this->sname = _("Personal address book"); - + if (is_array($param)) { - if (empty($param['dsn']) || - empty($param['table']) || + if (empty($param['dsn']) || + empty($param['table']) || empty($param['owner'])) { return $this->set_error('Invalid parameters'); } - + $this->dsn = $param['dsn']; $this->table = $param['table']; $this->owner = $param['owner']; - + if (!empty($param['name'])) { $this->sname = $param['name']; } @@ -85,29 +94,29 @@ class abook_database extends addressbook_backend { return $this->set_error('Invalid argument to constructor'); } } - - + + /* Open the database. New connection if $new is true */ function open($new = false) { $this->error = ''; - + /* Return true is file is open and $new is unset */ if ($this->dbh && !$new) { return true; } - + /* Close old file, if any */ if ($this->dbh) { $this->close(); } - + $dbh = DB::connect($this->dsn, true); - + if (DB::isError($dbh)) { return $this->set_error(sprintf(_("Database error: %s"), DB::errorMessage($dbh))); } - + $this->dbh = $dbh; return true; } @@ -119,7 +128,7 @@ class abook_database extends addressbook_backend { } /* ========================== Public ======================== */ - + /* Search the file */ function &search($expr) { $ret = array(); @@ -160,21 +169,21 @@ class abook_database extends addressbook_backend { } return $ret; } - + /* Lookup alias */ function &lookup($alias) { if (empty($alias)) { return array(); } - + $alias = strtolower($alias); if (!$this->open()) { return false; } - - $query = sprintf("SELECT * FROM %s WHERE owner='%s' AND nickname='%s'", - $this->table, $this->owner, $alias); + + $query = sprintf("SELECT * FROM %s WHERE owner='%s' AND LOWER(nickname)='%s'", + $this->table, $this->owner, $this->dbh->quoteString($alias)); $res = $this->dbh->query($query); @@ -202,7 +211,7 @@ class abook_database extends addressbook_backend { if (!$this->open()) { return false; } - + if(isset($this->listing) && !$this->listing) { return array(); } @@ -212,7 +221,7 @@ class abook_database extends addressbook_backend { $this->table, $this->owner); $res = $this->dbh->query($query); - + if (DB::isError($res)) { return $this->set_error(sprintf(_("Database error: %s"), DB::errorMessage($res))); @@ -240,7 +249,7 @@ class abook_database extends addressbook_backend { if (!$this->open()) { return false; } - + /* See if user exist already */ $ret = $this->lookup($userdata['nickname']); if (!empty($ret)) { @@ -254,9 +263,9 @@ class abook_database extends addressbook_backend { "'%s','%s','%s')", $this->table, $this->owner, $this->dbh->quoteString($userdata['nickname']), - $this->dbh->quoteString($userdata['firstname']), + $this->dbh->quoteString($userdata['firstname']), $this->dbh->quoteString($userdata['lastname']), - $this->dbh->quoteString($userdata['email']), + $this->dbh->quoteString($userdata['email']), $this->dbh->quoteString($userdata['label']) ); /* Do the insert */ @@ -279,7 +288,7 @@ class abook_database extends addressbook_backend { if (!$this->open()) { return false; } - + /* Create query */ $query = sprintf("DELETE FROM %s WHERE owner='%s' AND (", $this->table, $this->owner); @@ -312,7 +321,7 @@ class abook_database extends addressbook_backend { if (!$this->open()) { return false; } - + /* See if user exist */ $ret = $this->lookup($alias); if (empty($ret)) { @@ -324,11 +333,11 @@ class abook_database extends addressbook_backend { $query = sprintf("UPDATE %s SET nickname='%s', firstname='%s', ". "lastname='%s', email='%s', label='%s' ". "WHERE owner='%s' AND nickname='%s'", - $this->table, + $this->table, $this->dbh->quoteString($userdata['nickname']), - $this->dbh->quoteString($userdata['firstname']), + $this->dbh->quoteString($userdata['firstname']), $this->dbh->quoteString($userdata['lastname']), - $this->dbh->quoteString($userdata['email']), + $this->dbh->quoteString($userdata['email']), $this->dbh->quoteString($userdata['label']), $this->owner, $this->dbh->quoteString($alias) ); @@ -345,4 +354,5 @@ class abook_database extends addressbook_backend { } } /* End of class abook_database */ -?> +// vim: et ts=4 +?> \ No newline at end of file