localbackend == 0) {
exit();
}
/* set up charset */
sqgetGlobalVar('language', $language, SQ_GET);
if(!isset($language)) {
$language = $lang_iso = getPref($data_dir, $username, 'language');
}
$ldq_lang = substr($lang_iso, 0, 2);
global $charset;
$charset = $languages[$lang_iso]['CHARSET'];
/* Input validation */
/* pabobject is the usual form: backend:nickname , where backend is an integer. */
if(isset($pabobject)) {
if(!strstr($pabobject, ':')) die();
list($backend, $nick) = explode(':', $pabobject, 2);
if(!is_numeric($backend)) die();
}
$sm_language = getPref($data_dir, $username, 'language');
set_up_language($sm_language);
switch($pabaction) {
case 'retrieve':
/* ============= Retrieve a single entry from addressbook, properly formatted. ============= */
$res = $abook->backends[1]->lookup_extended($nick);
if($res) {
addressbook_ui_enhancements_sanitize_single_entry($res);
echo '
';
echo addressbook_ui_enhancements_print_user_profile($res, $pabobject);
echo '
';
}
exit;
break;
case 'confirmdelete':
/* ============= Confirm Deletion of an entry from addressbook ============= */
$res = $abook->backends[1]->lookup_extended($nick);
echo addressbook_ui_enhancements_print_deletion_confirmation($res, $pabobject);
exit;
break;
case 'delete':
/* ============= Delete an entry from addressbook ============= */
$res = $abook->backends[1]->lookup_extended($nick);
if(empty($res['dn'])) {
echo ABOOK_UI_ERROR_DURING_DELETE . '||' . $nick . '||' . _("Could not determine the dn (distinguished name) of this entry.");
exit;
}
$resDel = $abook->backends[1]->delete_extended($nick);
$additional_return = '||' . addressbook_ui_enhancements_friendly_name($editdata) . '||' . ($resDel !== true ? $resDel : '');
if($resDel === true) {
echo ABOOK_UI_DELETED_SUCCESSFULLY . $additional_return;
exit;
} else {
echo ABOOK_UI_ERROR_DURING_DELETE . $additional_return;
exit;
}
case 'edit':
/* ============= Edit an addressbook entry ============= */
$res = $abook->backends[1]->lookup_extended($nick);
if($res) {
addressbook_ui_enhancements_sanitize_single_entry($res);
echo '';
echo addressbook_ui_enhancements_print_edit_page($res, $pabobject);
echo '
';
}
exit;
break;
case 'addnew':
/* ============= Add a new addressbook entry ============= */
$res = null;
$pabobject = "1:0";
echo addressbook_ui_enhancements_print_addnew($res, $pabobject);
exit;
break;
case 'save':
/* ============= Save changes to an addressbook entry or add a new entry ============= */
$addnew = false;
if($nick == '0') {
// "0:0" designates adding a new entry.
$addnew = true;
$res = array();
}
if(!$addnew) {
$res = $abook->backends[1]->lookup_extended($nick);
}
if(!$addnew && !$res)
exit;
if($addnew) {
list($info_mod, $info_del, $errors) = addressbook_ui_enhancements_prepare_edit_entry($res, $editdata);
$res2 = $abook->backends[1]->add_extended($info_mod);
if($res2 == false) {
$errors[] = $abook->backends[1]->error;
}
$additional_return = '||' . addressbook_ui_enhancements_friendly_name($editdata) . '||' . (!empty($errors)? $errors[0] : '');
if($res2 == false) {
echo ABOOK_UI_ERROR_DURING_SAVE . $additional_return;
} else {
echo ABOOK_UI_SAVED_SUCCESSFULLY_UPDATE_NEEDED . $additional_return;
}
} else {
addressbook_ui_enhancements_sanitize_single_entry($res);
list($info_mod, $info_del, $errors) = addressbook_ui_enhancements_prepare_edit_entry($res, $editdata);
$main_row_data_changed = addressbook_ui_enhancements_has_main_row_data_changed($info_mod, $info_del);
$res2 = $abook->backends[1]->modify_extended($nick, $info_mod);
if($res2 == false) {
$errors[] = $abook->backends[1]->error;
} else {
// now try to delete the rest of the attributes according to $info_del
foreach($info_del as $attr => $dummy) {
$dn = $abook->backends[1]->get_entry_dn($nick);
$res3 = $abook->backends[1]->ldap->deleteAttribute($dn, $attr);
}
}
$additional_return = '||' . addressbook_ui_enhancements_friendly_name($res) . '||' . (!empty($errors)? $errors[0] : '');
if($res2) {
if($main_row_data_changed) {
echo ABOOK_UI_SAVED_SUCCESSFULLY_UPDATE_NEEDED . $additional_return;
} else {
echo ABOOK_UI_SAVED_SUCCESSFULLY . $additional_return;
}
} else {
echo ABOOK_UI_ERROR_DURING_SAVE . $additional_return;
}
}
exit;
break;
case 'show_error':
/* ============= Show error message ============= */
echo ''. _("An error has been encountered while modifying your personal addressbook.") . '
'.
''. sprintf( _("The error was: %s"), 'Test') . '
'.
''. _("If the problem persists, please contact your administrator.") . '
';
break;
default:
exit;
break;
}