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; }