Minor code clean up
[squirrelmail.git] / functions / abook_database.php
index 952884091b70fa84c3b3b37ab7d8cf387a0b8ece..0377691ced45d37f33ccd742de398d2f7c4724c3 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * abook_database.php
  *
- * Copyright (c) 1999-2002 The Squirrelmail Project Team
+ * Copyright (c) 1999-2004 The SquirrelMail Project Team
  * Licensed under the GNU GPL. For full terms see the file COPYING.
  *
  * Backend for personal addressbook stored in a database,
  *  NOTE. This class should not be used directly. Use the
  *        "AddressBook" class instead.
  *
- * $Id$
+ * @version $Id$
+ * @package squirrelmail
+ * @subpackage addressbook
+ */
+
+/** Needs the DB functions */   
+if (!include_once('DB.php')) {
+    // same error also in db_prefs.php
+    require_once(SM_PATH . 'functions/display_messages.php');
+    $error  = _("Could not include PEAR database functions required for the database backend.") . "<br />\n";
+    $error .= sprintf(_("Is PEAR installed, and is the include path set correctly to find %s?"),
+                        '<tt>DB.php</tt>') . "<br />\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
+ * @package squirrelmail
  */
-   
-require_once('DB.php');
-   
 class abook_database extends addressbook_backend {
     var $btype = 'local';
     var $bname = 'database';
@@ -68,6 +84,10 @@ class abook_database extends addressbook_backend {
                $this->writeable = $param['writeable'];
             }
 
+            if (isset($param['listing'])) {
+               $this->listing = $param['listing'];
+            }
+
             $this->open(true);
         }
         else {
@@ -92,7 +112,7 @@ class abook_database extends addressbook_backend {
          
         $dbh = DB::connect($this->dsn, true);
          
-        if (DB::isError($dbh) || DB::isWarning($dbh)) {
+        if (DB::isError($dbh)) {
             return $this->set_error(sprintf(_("Database error: %s"),
                                             DB::errorMessage($dbh)));
         }
@@ -115,7 +135,7 @@ class abook_database extends addressbook_backend {
         if(!$this->open()) {
             return false;
         }
-         
+
         /* To be replaced by advanded search expression parsing */
         if (is_array($expr)) {
             return;
@@ -162,8 +182,8 @@ class abook_database extends addressbook_backend {
             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);
 
@@ -191,6 +211,11 @@ class abook_database extends addressbook_backend {
         if (!$this->open()) {
             return false;
         }
+       
+       if(isset($this->listing) && !$this->listing) {
+           return array();
+       }
+
 
         $query = sprintf("SELECT * FROM %s WHERE owner='%s'",
                          $this->table, $this->owner);
@@ -329,4 +354,6 @@ class abook_database extends addressbook_backend {
     }
 } /* End of class abook_database */
 
+
+// vim: et ts=4
 ?>