better error handling

This commit is contained in:
Roland Gruber 2006-09-16 13:26:18 +00:00
parent e59f8d20f2
commit 0fabae9c2e
2 changed files with 26 additions and 6 deletions

View File

@ -816,8 +816,8 @@ class accountContainer {
$result = array(); $result = array();
if ($this->subpage=='') $this->subpage='attributes'; if ($this->subpage=='') $this->subpage='attributes';
if (isset($_POST['form_main_reset'])) { if (isset($_POST['form_main_reset'])) {
$this->load_account($this->dn_orig); $result = $this->load_account($this->dn_orig);
} }
else { else {
if ($this->current_page==0) { if ($this->current_page==0) {
if ($this->subpage=='attributes') { if ($this->subpage=='attributes') {
@ -1172,12 +1172,20 @@ class accountContainer {
* Loads an LDAP account with the given DN. * Loads an LDAP account with the given DN.
* *
* @param string $dn the DN of the account * @param string $dn the DN of the account
* @return array error messages
*/ */
function load_account($dn) { function load_account($dn) {
$this->module = array();
$modules = $_SESSION['config']->get_AccountModules($this->type); $modules = $_SESSION['config']->get_AccountModules($this->type);
$search = substr($dn, 0, strpos($dn, ',')); $search = substr($dn, 0, strpos($dn, ','));
$result = ldap_search($_SESSION['ldap']->server(), $dn, $search); $result = @ldap_search($_SESSION['ldap']->server(), $dn, $search);
$entry = ldap_first_entry($_SESSION['ldap']->server(), $result); if (!$result) {
return array(array("ERROR", _("Unable to load LDAP entry: ") . $dn, ldap_error($_SESSION['ldap']->server())));
}
$entry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
if (!$entry) {
return array(array("ERROR", _("Unable to load LDAP entry: ") . $dn, ldap_error($_SESSION['ldap']->server())));
}
$this->dn = substr($dn, strpos($dn, ',')+1); $this->dn = substr($dn, strpos($dn, ',')+1);
$this->dn_orig = $dn; $this->dn_orig = $dn;
// extract RDN // extract RDN
@ -1215,7 +1223,7 @@ class accountContainer {
// sort module buttons // sort module buttons
$this->sortModules(); $this->sortModules();
return 0; return array();
} }
/** /**

View File

@ -62,7 +62,19 @@ if (isset($_GET['DN'])) {
if ($_GET['type'] == $type) $type = str_replace("'", '',$_GET['type']); if ($_GET['type'] == $type) $type = str_replace("'", '',$_GET['type']);
if ($_GET['DN'] == $DN) $DN = str_replace("'", '',$_GET['DN']); if ($_GET['DN'] == $DN) $DN = str_replace("'", '',$_GET['DN']);
$_SESSION['account'] = new accountContainer($type, 'account'); $_SESSION['account'] = new accountContainer($type, 'account');
$_SESSION['account']->load_account($DN); $result = $_SESSION['account']->load_account($DN);
if (sizeof($result) > 0) {
echo $_SESSION['header'];
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $type . ".css\">\n";
echo "</head><body>\n";
for ($i=0; $i<sizeof($result); $i++) {
call_user_func_array("StatusMessage", $result[$i]);
}
echo "</body>\n";
echo "</html>\n";
die();
}
} }
// new account // new account
else if (count($_POST)==0) { else if (count($_POST)==0) {