X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Faddressbook.php;h=8779c99e84564d5c4af0d26452c2b8d4e2c4a9d3;hb=2ef37ed49077a9a0064e15b79cd319f486cde113;hp=45f586b38b7e0d9da0a5709349c1e5feebe8b429;hpb=2f73dc1525422ac2f9d63c460a10d129b4c903fe;p=squirrelmail.git diff --git a/functions/addressbook.php b/functions/addressbook.php index 45f586b3..8779c99e 100644 --- a/functions/addressbook.php +++ b/functions/addressbook.php @@ -13,6 +13,7 @@ include("../functions/abook_local_file.php"); include("../functions/abook_ldap_server.php"); + // Create and initialize an addressbook object. // Returns the created object function addressbook_init($showerr = true, $onlylocal = false) { @@ -33,10 +34,10 @@ if($onlylocal) return $abook; - // Load configured LDAP servers - if(is_array($ldap_server)) { + // Load configured LDAP servers (if PHP has LDAP support) + if(is_array($ldap_server) && function_exists("ldap_connect")) { reset($ldap_server); - while(list($key,$param) = each($ldap_server)) { + while(list($undef,$param) = each($ldap_server)) { if(is_array($param)) { $r = $abook->add_backend("ldap_server", $param); if(!$r && $showerr) { @@ -53,6 +54,16 @@ return $abook; } + + // Had to move this function outside of the Addressbook Class + // PHP 4.0.4 Seemed to be having problems with inline functions. + function cmp($a,$b) { + if($a["backend"] > $b["backend"]) + return 1; + else if($a["backend"] < $b["backend"]) + return -1; + return (strtolower($a["name"]) > strtolower($b["name"])) ? 1 : -1; + } /** @@ -60,6 +71,7 @@ ** backends and provide services to the functions above. ** **/ + class AddressBook { var $backends = array(); var $numbackends = 0; @@ -154,26 +166,15 @@ return $ret; } - + // Return a sorted search function s_search($expression, $bnum = -1) { - - $ret = $this->search($expression, $bnum); - if(!is_array($ret)) - return $ret; - - // Inline function - Not nice, but still.. - function cmp($a,$b) { - if($a["backend"] > $b["backend"]) - return 1; - else if($a["backend"] < $b["backend"]) - return -1; - - return (strtolower($a["name"]) > strtolower($b["name"])) ? 1 : -1; - } - - usort($ret, 'cmp'); - return $ret; + + $ret = $this->search($expression, $bnum); + if(!is_array($ret)) + return $ret; + usort($ret, 'cmp'); + return $ret; } @@ -335,13 +336,19 @@ $this->error = _("E-mail address is missing"); return false; } + + if(eregi("[\: \|\#\"\!]", $userdata["nickname"])) { + $this->error = _("Nickname contain illegal characters"); + return false; + } + if(empty($userdata["nickname"])) { $userdata["nickname"] = $userdata["email"]; } // Check that specified backend is writable if(!$this->backends[$bnum]->writeable) { - $this->error = _("Addressbook $bnum is read-only"); + $this->error = _("Addressbook is read-only");; return false; } @@ -357,8 +364,8 @@ return false; // Not reached } // end of modify() - } // End of class Addressbook + } // End of class Addressbook /** ** Generic backend that all other backends extend