hasPriv("admin")) { if($r->name == "query:mode") continue; if($r->name == "sidebar") continue; if($r->name == "window:query") continue; if($r->name == "query:hide_header") continue; if($r->name == "query:hide_sidebar") continue; if($r->name == "debug") continue; } $input = html_select("pref_$r->name", explode('|', $r->value_list), $oUser->getpref($r->name, $r->def_value)); echo html_tr(array("  $r->description", $input)); } } function show_user_fields($oUser) { $sUserRealname = $oUser->sRealname; $sUserEmail = $oUser->sEmail; $sWineRelease = $oUser->sWineRelease; if($oUser->hasPriv("admin")) $sHasAdmin = 'checked="true"'; else $sHasAdmin = ""; include(BASE."include/form_edit.php"); echo "  Wine version "; make_bugzilla_version_list("sWineRelease", $sWineRelease); echo ""; } $aClean = array(); //array of filtered user input $aClean['iUserId'] = makeSafe($_REQUEST['iUserId']); $aClean['iLimit'] = makeSafe($_REQUEST['iLimit']); $aClean['sOrderBy'] = makeSafe($_REQUEST['sOrderBy']); $aClean['sUserPassword'] = makeSafe($_REQUEST['sUserPassword']); $aClean['sUserPassword2'] = makeSafe($_REQUEST['sUserPassword2']); $aClean['sUserEmail'] = makeSafe($_REQUEST['sUserEmail']); $aClean['sUserRealname'] = makeSafe($_REQUEST['sUserRealname']); $aClean['sWineRelease'] = makeSafe($_REQUEST['sWineRelease']); $aClean['sHasAdmin'] = makeSafe($_POST['sHasAdmin']); /* filter all of the preferences */ while(list($sKey, $sValue) = each($_REQUEST)) { if(ereg("^pref_(.+)$", $sKey, $arr)) $aClean[$sKey] = makeSafe($sValue); } if(!$_SESSION['current']->isLoggedIn()) util_show_error_page_and_exit("You must be logged in to edit preferences"); // we come from the administration to edit an user if($_SESSION['current']->hasPriv("admin") && is_numeric($aClean['iUserId']) && is_numeric($aClean['iLimit']) && in_array($aClean['sOrderBy'],array("email","realname","created")) ) { $oUser = new User($aClean['iUserId']); } else { $oUser = &$_SESSION['current']; } if($_POST) { while(list($sKey, $sValue) = each($aClean)) { /* if a parameter lacks 'pref_' at its head it isn't a */ /* preference so skip over processing it */ if(!ereg("^pref_(.+)$", $sKey, $arr)) continue; $oUser->setPref($arr[1], $sValue); } /* make sure the user enters the same password twice */ if ($aClean['sUserPassword'] == $aClean['sUserPassword2']) { $str_passwd = $aClean['sUserPassword']; } else if ($aClean['sUserPassword']) { addmsg("The Passwords you entered did not match.", "red"); } /* update user data fields */ $oUser->sEmail = $aClean['sUserEmail']; $oUser->sRealname = $aClean['sUserRealname']; $oUser->sWineRelease = $aClean['sWineRelease']; /* if the password was empty in both cases then skip updating the users password */ if($str_passwd != "") { if(!$oUser->update_password($str_passwd)) addmsg("Failed to update password", "red"); } if ($oUser->update() == SUCCESS) { addmsg("Preferences Updated", "green"); // we were managing an user, let's go back to the admin after updating tha admin status if($oUser->iUserId == $aClean['iUserId'] && $_SESSION['current']->hasPriv("admin")) { if($aClean['sHasAdmin']=="on") $oUser->addPriv("admin"); else $oUser->delPriv("admin"); util_redirect_and_exit(BASE."admin/adminUsers.php?iUserId=".$oUser->iUserId."&sSearch=".$aClean['sSearch']."&iLimit=".$aClean['iLimit']."&sOrderBy=".$aClean['sOrderBy']."&sSubmit=true"); } } else { addmsg("There was a problem updating your user info", "red"); } } apidb_header("User Preferences"); echo "
\n"; // if we manage another user we give the parameters to go back to the admin if($oUser->iUserId == $aClean['iUserId']) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo html_frame_start("Preferences for ".$oUser->sRealname, "80%"); echo html_table_begin("width='100%' border=0 align=left cellspacing=0 class='box-body'"); show_user_fields($oUser); // if we don't manage another user if($oUser->iUserId != $aClean['iUserId']) build_prefs_list($oUser); echo html_table_end(); echo html_frame_end(); echo "

\n"; echo "
\n"; apidb_footer(); ?>