account.php 17.5 KB
Newer Older
Dries's avatar
Dries committed
1
<?
Dries's avatar
 
Dries committed
2 3

include "function.inc";
Dries's avatar
 
Dries committed
4
include "config.inc";
Dries's avatar
 
Dries committed
5
include "theme.inc";
Dries's avatar
Dries committed
6

Dries's avatar
 
Dries committed
7 8 9 10 11
function account_getUser($uname) {
  $result = db_query("SELECT * FROM users WHERE userid = '$uname'");
  return db_fetch_object($result);
}

12
function showLogin($userid = "") {
Dries's avatar
 
Dries committed
13 14 15 16 17 18 19 20 21 22
  $output .= "<FORM ACTION=\"account.php\" METHOD=post>\n";
  $output .= " <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2>\n";
  $output .= "  <TR><TH>User ID:</TH><TD><INPUT NAME=userid VALUE=\"$userid\"></TD></TR>\n";
  $output .= "  <TR><TH>Password:</TH><TD><INPUT NAME=passwd TYPE=password></TD></TR>\n";
  $output .= "  <TR><TD ALIGN=center><INPUT NAME=op TYPE=submit VALUE=\"Login\"></TD></TR>\n";
  $output .= "  <TR><TD ALIGN=center><A HREF=\"account.php?op=new\">Register</A> as new user.</A></TD></TR>\n";
  $output .= "  <TR><TD COLSPAN=2>$user->ublock</TD></TR>\n";
  $output .= " </TABLE>\n";
  $output .= "</FORM>\n";
  return $output;
23
}
Dries's avatar
 
Dries committed
24

25 26 27 28 29
function showAccess() {
  global $user, $access;
  foreach ($access as $key=>$value) if ($user->access & $value) $result .= "$key<BR>";
  return $result;
}
Dries's avatar
 
Dries committed
30 31

function showUser($uname) {
Dries's avatar
 
Dries committed
32
  global $user, $theme;
Dries's avatar
 
Dries committed
33 34 35 36
  
  if ($user && $uname && $user->userid == $uname) {
    $output .= "<P>Welcome $user->userid! This is <B>your</B> user info page. There are many more, but this one is yours. You are probably most interested in editing something, but if you need to kill some time, this place is as good as any other place.</P>\n";
    $output .= "<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2>\n";
37 38 39 40 41 42
    $output .= " <TR><TD ALIGN=\"right\"><B>User ID:</B></TD><TD>$user->userid</TD></TR>\n";
    $output .= " <TR><TD ALIGN=\"right\"><B>Name:</B></TD><TD>". format_data($user->name) ."</TD></TR>\n";
    $output .= " <TR><TD ALIGN=\"right\"><B>E-mail:</B></TD><TD>". format_email_address($user->femail) ."</A></TD></TR>\n";
    $output .= " <TR><TD ALIGN=\"right\"><B>URL:</B></TD><TD>". format_url($user->url) ."</TD></TR>\n";
    $output .= " <TR><TD ALIGN=\"right\" VALIGN=\"top\"><B>Bio:</B></TD><TD>". format_data($user->bio) ."</TD></TR>\n";
    $output .= " <TR><TD ALIGN=\"right\" VALIGN=\"top\"><B>Signature:</B></TD><TD>". format_data($user->signature) ."</TD></TR>\n";
Dries's avatar
 
Dries committed
43
    $output .= "</TABLE>\n";
Dries's avatar
 
Dries committed
44 45

    ### Display account information:
Dries's avatar
 
Dries committed
46
    $theme->header();
47
    $theme->box("Your user information", $output);
Dries's avatar
 
Dries committed
48 49 50
    $theme->footer();
  }
  elseif ($uname && $account = account_getUser($uname)) {
51 52
    $box1 .= "<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2>\n";
    $box1 .= " <TR><TD ALIGN=\"right\"><B>Username:</B></TD><TD>$account->userid</TD></TR>\n";
53 54 55
    $box1 .= " <TR><TD ALIGN=\"right\"><B>E-mail:</B></TD><TD>". format_email_address($account->femail) ."</TD></TR>\n";
    $box1 .= " <TR><TD ALIGN=\"right\"><B>URL:</B></TD><TD>". format_url($account->url) ."</TD></TR>\n";
    $box1 .= " <TR><TD ALIGN=\"right\"><B>Bio:</B></TD><TD>". format_data($account->bio) ."</TD></TR>\n";
56 57 58 59 60 61 62 63
    $box1 .= "</TABLE>\n";

    $result = db_query("SELECT c.cid, c.pid, c.sid, c.subject, c.timestamp, s.subject AS story FROM comments c LEFT JOIN users u ON u.id = c.author LEFT JOIN stories s ON s.id = c.sid WHERE u.userid = '$uname' AND c.timestamp > ". (time() - 1209600) ." ORDER BY cid DESC LIMIT 10");
    
    while ($comment = db_fetch_object($result)) {
      $box2 .= "<LI><TABLE BORDER=\"0\"><TR><TD>subject: <A HREF=\"discussion.php?id=$comment->sid&cid=$comment->cid&pid=$comment->pid\">$comment->subject</A><BR>date: ". format_date($comment->timestamp) ."<BR>attached to story: <A HREF=\"discussion.php?id=$comment->sid\">$comment->story</A></TD></TR></TABLE></LI>\n";
      $comments++;
    }
Dries's avatar
 
Dries committed
64

65 66 67 68 69 70
    $result = db_query("SELECT d.* FROM diaries d LEFT JOIN users u ON u.id = d.author WHERE u.userid = '$uname' AND d.timestamp > ". (time() - 1209600) ."  ORDER BY id DESC LIMIT 2");
    while ($diary = db_fetch_object($result)) {
      $box3 .= "<DL><DT><B>". date("l, F jS", $diary->timestamp) .":</B></DT><DD><P>". check($diary->text) ."</P><P>[ <A HREF=\"diary.php?op=view&name=$uname\">more</A> ]</P></DD></DL>\n";
      $diaries++;
    }
    
Dries's avatar
 
Dries committed
71
    ### Display account information:
Dries's avatar
 
Dries committed
72
    $theme->header();
73 74 75
    if ($box1) $theme->box("User information for $uname", $box1);
    if ($box2) $theme->box("$uname has posted ". format_plural($comments, "comment", "comments") ." recently", $box2);
    if ($box3) $theme->box("$uname has posted ". format_plural($diaries, "diary entry", "diary entries") ." recently", $box3);
Dries's avatar
 
Dries committed
76 77 78
    $theme->footer();
  }
  else { 
Dries's avatar
 
Dries committed
79
    ### Display login form:
Dries's avatar
 
Dries committed
80 81 82
    $theme->header();
    $theme->box("Login", showLogin($userid)); 
    $theme->footer();
Dries's avatar
Dries committed
83 84
  }
}
Dries's avatar
 
Dries committed
85

86
function newUser($user = "", $error="") {
87 88
  global $theme;

Dries's avatar
 
Dries committed
89 90 91 92 93 94 95 96 97 98
  $output .= "<FORM ACTION=\"account.php\" METHOD=post>\n";
  $output .= "<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2>\n";
  if (!empty($error)) $output .= "<TR><TD COLSPAN=2>$error</TD></TR>\n";
  $output .= "<TR><TH>Name:</TH><TD><INPUT NAME=\"new[name]\" VALUE=\"$new[name]\"></TD></TR>\n";
  $output .= "<TR><TH>User ID:</TR><TD><INPUT NAME=\"new[userid]\" VALUE=\"$new[userid]\"></TD></TR>\n";
  $output .= "<TR><TH>E-mail:</TH><TD><INPUT NAME=\"new[email]\" VALUE=\"$new[email]\"></TD></TR>\n";
  $output .= "<TR><TD ALIGN=right COLSPAN=2><INPUT NAME=op TYPE=submit VALUE=\"Register\"></TD></TR>\n";
  $output .= "</TABLE>\n";
  $output .= "</FORM>\n";

Dries's avatar
Dries committed
99
  $theme->header();
Dries's avatar
 
Dries committed
100
  $theme->box("Register as new user", $output);
Dries's avatar
Dries committed
101 102
  $theme->footer();
}
Dries's avatar
 
Dries committed
103

104
function validateUser($user) {
Dries's avatar
 
Dries committed
105
  include "ban.inc";
Dries's avatar
 
Dries committed
106

107 108 109
  ### Verify username and e-mail address:
  $user[userid] = trim($user[userid]);
  if (empty($user[email]) || (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $user[email]))) $rval = "the specified e-mail address is not valid.<BR>";
Dries's avatar
 
Dries committed
110
  if (empty($user[userid]) || (ereg("[^a-zA-Z0-9_-]", $user[userid]))) $rval = "the specified username '$new[userid]' is not valid.<BR>";
111
  if (strlen($user[userid]) > 15) $rval = "the specified username is too long: it must be less than 15 characters.";
Dries's avatar
 
Dries committed
112 113

  ### Check to see whether the username or e-mail address are banned:
Dries's avatar
 
Dries committed
114 115
  if ($ban = ban_match($user[userid], $type2index[usernames])) $rval = "the specified username is banned  for the following reason: <I>$ban->reason</I>.";
  if ($ban = ban_match($user[email], $type2index[addresses])) $rval = "the specified e-mail address is banned for the following reason: <I>$ban->reason</I>.";
Dries's avatar
Dries committed
116

Dries's avatar
 
Dries committed
117
  ### Verify whether username and e-mail address are unique:
Dries's avatar
 
Dries committed
118 119
  if (db_num_rows(db_query("SELECT userid FROM users WHERE LOWER(userid)=LOWER('$user[userid]')")) > 0) $rval = "the specified username is already taken.";
  if (db_num_rows(db_query("SELECT email FROM users WHERE LOWER(email)=LOWER('$user[email]')")) > 0) $rval = "the specified e-mail address is already registered.";
Dries's avatar
 
Dries committed
120

121
  return($rval);
Dries's avatar
Dries committed
122
}
Dries's avatar
 
Dries committed
123 124

function account_makePassword($min_length=6) {
125
  mt_srand((double)microtime() * 1000000);
Dries's avatar
 
Dries committed
126
  $words = array("foo","bar","guy","neo","tux","moo","sun","asm","dot","god","axe","geek","nerd","fish","hack","star","mice","warp","moon","hero","cola","girl","fish","java","perl","boss","dark","sith","jedi","drop","mojo");
Dries's avatar
 
Dries committed
127
  while(strlen($password) < $min_length) $password .= $words[mt_rand(0, count($words))];
128
  return $password;
Dries's avatar
Dries committed
129 130
}

Dries's avatar
 
Dries committed
131 132 133
function account_track_comments() {
  global $user;

Dries's avatar
 
Dries committed
134
  $output .= "<P>This page might be helpful in case you want to keep track of your most recent comments in any of the discussions.  You are given an overview of your comments in each of the stories you participates in along with the number of replies each comment got.\n<P>\n"; 
Dries's avatar
 
Dries committed
135 136 137 138 139

  ### Perform query:
  $sresult = db_query("SELECT s.id, s.subject, COUNT(s.id) as count FROM comments c LEFT JOIN stories s ON c.sid = s.id WHERE c.author = $user->id GROUP BY s.id DESC LIMIT 5");
  
  while ($story = db_fetch_object($sresult)) {
Dries's avatar
 
Dries committed
140
    $output .= "<LI>". format_plural($story->count, comment, comments) ." in story `<A HREF=\"discussion.php?id=$story->id\">$story->subject</A>`:</LI>\n";
Dries's avatar
 
Dries committed
141 142 143 144
    $output .= " <UL>\n";
   
    $cresult = db_query("SELECT * FROM comments WHERE author = $user->id AND sid = $story->id");
    while ($comment = db_fetch_object($cresult)) {
Dries's avatar
 
Dries committed
145
      $output .= "  <LI><A HREF=\"discussion.php?id=$story->id&cid=$comment->cid&pid=$comment->pid\">$comment->subject</A> (<B>". format_plural(discussion_num_replies($comment->cid), "reply", "replies") ."</B>)</LI>\n";
Dries's avatar
 
Dries committed
146 147 148 149 150 151 152
    }
    $output .= " </UL>\n";
  }
   
  return $output;
}

153
switch ($op) {
Dries's avatar
Dries committed
154
  case "Login":
155
    session_start();
Dries's avatar
 
Dries committed
156
    $user = new User($userid, $passwd);
Dries's avatar
 
Dries committed
157
    if ($user && user_valid()) {
Dries's avatar
 
Dries committed
158 159 160 161 162 163
      session_register("user");
      watchdog(1, "session opened for user `$user->userid'.");
    }
    else {
      watchdog(2, "failed login for user `$userid'.");
    }
Dries's avatar
 
Dries committed
164
    showUser($user->userid);
Dries's avatar
Dries committed
165
    break;
166 167
  case "new":
    newUser();
Dries's avatar
Dries committed
168
    break;
Dries's avatar
 
Dries committed
169 170
  case "view":
    showUser($name);
Dries's avatar
 
Dries committed
171
    break;
Dries's avatar
 
Dries committed
172 173 174 175 176
  case "discussion":
    $theme->header();
    $theme->box("Track your comments", account_track_comments());
    $theme->footer();
    break;
natrak's avatar
natrak committed
177
  case "logout":
Dries's avatar
 
Dries committed
178
    watchdog(1, "session closed for user `$user->userid'.");
Dries's avatar
 
Dries committed
179
    session_unset();
natrak's avatar
natrak committed
180
    session_destroy();
natrak's avatar
natrak committed
181
    unset($user);
182
    showUser();
Dries's avatar
Dries committed
183
    break;
184 185 186
  case "Register":
    if ($rval = validateUser($new)) { newUser($new, "<B>Error: $rval</B>"); }
    else {
Dries's avatar
 
Dries committed
187 188
      ### Generate new password:
      $new[passwd] = account_makePassword();
Dries's avatar
 
Dries committed
189
      dbsave("users", $new);
Dries's avatar
 
Dries committed
190

191
      if ($system == 1) {
Dries's avatar
 
Dries committed
192 193 194 195
        ### Display account information:
        $theme->header();
        $theme->box("Account details", "Your password is: <B>$new[passwd]</B><BR><A HREF=\"account.php?op=Login&userid=$new[userid]&passwd=$new[passwd]\">Login</A> to change your personal settings.");
        $theme->footer();
196
      } else {
Dries's avatar
 
Dries committed
197 198 199 200 201 202 203
        ### Send e-mail with account details:
        mail($new[email], "Account details for $sitename", "$user->name,\n\nyour $sitename member account has been created succesfully.  To be able to use it, you must login using the information below.  Please save this mail for further reference.\n\n   username: $new[userid]\n     e-mail: $new[email]\n   password: $new[passwd]\n\nThis password is generated by a randomizer.  It is recommended that you change this password immediately.\n\n$contact_signature", "From: $contact_email\nX-Mailer: PHP/" . phpversion());

        ### Display account information:
        $theme->header();
        $theme->box("Account details", "Your member account has been created and the details necessary to login have been sent to your e-mail account <B>$new[email]</B>.  Once you received the account confirmation, hit <A HREF=\"account.php\">this link</A> to login.");
        $theme->footer();
204
      }
Dries's avatar
 
Dries committed
205 206

      watchdog(1, "new user `$new[userid]' registered with e-mail address `$new[email]'");
207
    }
Dries's avatar
Dries committed
208
    break;
Dries's avatar
 
Dries committed
209
  case "user":
Dries's avatar
 
Dries committed
210
    if ($user->id && user_valid()) {
Dries's avatar
 
Dries committed
211 212 213 214 215 216 217 218 219 220 221 222 223 224
      ### Generate output/content:
      $output .= "<FORM ACTION=\"account.php\" METHOD=post>\n";
      $output .= "<B>Real name:</B><BR>\n";
      $output .= "<INPUT NAME=\"edit[name]\" MAXLENGTH=55 SIZE=30 VALUE=\"$user->name\"><BR>\n";
      $output .= "<I>Optional.</I><P>\n";
      $output .= "<B>Real e-mail address:</B><BR>\n";
      $output .= "<INPUT NAME=\"edit[email]\" MAXLENGTH=55 SIZE=30 VALUE=\"$user->email\"><BR>\n";
      $output .= "<I>Required, but never displayed publicly: needed in case you lose your password.</I><P>\n";
      $output .= "<B>Fake e-mail address:</B><BR>\n";
      $output .= "<INPUT NAME=\"edit[femail]\" MAXLENGTH=55 SIZE=30 VALUE=\"$user->femail\"><BR>\n";
      $output .= "<I>Optional, and displayed publicly by your comments. You may spam proof it if you want.</I><P>\n";
      $output .= "<B>URL of homepage:</B><BR>\n";
      $output .= "<INPUT NAME=\"edit[url]\" MAXLENGTH=55 SIZE=30 VALUE=\"$user->url\"><BR>\n";
      $output .= "<I>Optional, but make sure you enter fully qualified URLs only. That is, remember to include \"http://\".</I><P>\n";
Dries's avatar
 
Dries committed
225
      $output .= "<B>Bio:</B> (255 char. limit)<BR>\n";
Dries's avatar
 
Dries committed
226 227
      $output .= "<TEXTAREA NAME=\"edit[bio]\" COLS=35 ROWS=5 WRAP=virtual>$user->bio</TEXTAREA><BR>\n";
      $output .= "<I>Optional. This biographical information is publicly displayed on your user page.</I><P>\n";
Dries's avatar
 
Dries committed
228
      $output .= "<B>User block:</B> (255 char. limit)<BR>\n";
Dries's avatar
 
Dries committed
229
      $output .= "<TEXTAREA NAME=\"edit[ublock]\" COLS=35 ROWS=5 WRAP=virtual>$user->ublock</TEXTAREA><BR>\n";
Dries's avatar
 
Dries committed
230
      $output .= "<INPUT NAME=\"edit[ublockon]\" TYPE=checkbox". ($user->ublockon == 1 ? " CHECKED" : "") ."> Enable user block<BR>\n";
Dries's avatar
 
Dries committed
231 232 233 234 235 236 237 238 239
      $output .= "<I>Enable the checkbox and whatever you enter below will appear on your costum main page.</I><P>\n";
      $output .= "<B>Password:</B><BR>\n";
      $output .= "<INPUT TYPE=password NAME=\"edit[pass1]\" SIZE=10 MAXLENGTH=20> <INPUT TYPE=password NAME=edit[pass2] SIZE=10 MAXLENGTH=20><BR>\n";
      $output .= "<I>Enter your new password twice if you want to change your current password or leave it blank if you are happy with your current password.</I><P>\n";
      $output .= "<INPUT TYPE=submit NAME=op VALUE=\"Save user information\"><BR>\n";
      $output .= "</FORM>\n";

      ### Display output/content:
      $theme->header();
Dries's avatar
 
Dries committed
240
      $theme->box("Edit your information", $output);
Dries's avatar
 
Dries committed
241 242 243 244 245 246 247
      $theme->footer();
    }
    else {
      $theme->header();
      $theme->box("Login", showLogin($userid)); 
      $theme->footer();
    }
Dries's avatar
Dries committed
248
    break;
Dries's avatar
 
Dries committed
249
  case "page":
Dries's avatar
 
Dries committed
250
    if ($user && user_valid()) {
Dries's avatar
 
Dries committed
251 252 253
      ### Generate output/content:
      $output .= "<FORM ACTION=\"account.php\" METHOD=post>\n";
      $output .= "<B>Theme:</B><BR>\n";
Dries's avatar
 
Dries committed
254

Dries's avatar
 
Dries committed
255
      ### Loop (dynamically) through all available themes:
256 257 258
      foreach ($themes as $key=>$value) { 
        $options .= "<OPTION VALUE=\"$key\"". (($user->theme == $key) ? " SELECTED" : "") .">$key - $value[1]</OPTION>";
      }
Dries's avatar
 
Dries committed
259

Dries's avatar
 
Dries committed
260
      $output .= "<SELECT NAME=\"edit[theme]\">$options</SELECT><BR>\n";
Dries's avatar
 
Dries committed
261
      $output .= "<I>Selecting a different theme will change the look and feel of the site.</I><P>\n";
Dries's avatar
 
Dries committed
262 263
      $output .= "<B>Maximum number of stories:</B><BR>\n";
      $output .= "<INPUT NAME=\"edit[storynum]\" MAXLENGTH=3 SIZE=3 VALUE=\"$user->storynum\"><P>\n";
Dries's avatar
 
Dries committed
264
      $output .= "<I>The maximum number of stories that will be displayed on the main page.</I><P>\n";
Dries's avatar
 
Dries committed
265 266 267
      $options  = "<OPTION VALUE=\"nested\"". ($user->umode == 'nested' ? " SELECTED" : "") .">Nested</OPTION>";
      $options .= "<OPTION VALUE=\"flat\"". ($user->umode == 'flat' ? " SELECTED" : "") .">Flat</OPTION>";
      $options .= "<OPTION VALUE=\"threaded\"". ($user->umode == 'threaded' ? " SELECTED" : "") .">Threaded</OPTION>";
Dries's avatar
 
Dries committed
268
      $output .= "<B>Comment display mode:</B><BR>\n";
Dries's avatar
 
Dries committed
269 270 271 272
      $output .= "<SELECT NAME=\"edit[umode]\">$options</SELECT><P>\n";
      $options  = "<OPTION VALUE=0". ($user->uorder == 0 ? " SELECTED" : "") .">Oldest first</OPTION>";
      $options .= "<OPTION VALUE=1". ($user->uorder == 1 ? " SELECTED" : "") .">Newest first</OPTION>";
      $options .= "<OPTION VALUE=2". ($user->uorder == 2 ? " SELECTED" : "") .">Highest scoring first</OPTION>";
Dries's avatar
 
Dries committed
273
      $output .= "<B>Comment sort order:</B><BR>\n";
Dries's avatar
 
Dries committed
274 275 276 277 278 279 280 281
      $output .= "<SELECT NAME=\"edit[uorder]\">$options</SELECT><P>\n";
      $options  = "<OPTION VALUE=\"-1\"". ($user->thold == -1 ? " SELECTED" : "") .">-1: Display uncut and raw comments.</OPTION>";
      $options .= "<OPTION VALUE=0". ($user->thold == 0 ? " SELECTED" : "") .">0: Display almost all comments.</OPTION>";
      $options .= "<OPTION VALUE=1". ($user->thold == 1 ? " SELECTED" : "") .">1: Display almost no anonymous comments.</OPTION>";
      $options .= "<OPTION VALUE=2". ($user->thold == 2 ? " SELECTED" : "") .">2: Display comments with score +2 only.</OPTION>";
      $options .= "<OPTION VALUE=3". ($user->thold == 3 ? " SELECTED" : "") .">3: Display comments with score +3 only.</OPTION>";
      $options .= "<OPTION VALUE=4". ($user->thold == 4 ? " SELECTED" : "") .">4: Display comments with score +4 only.</OPTION>";
      $options .= "<OPTION VALUE=5". ($user->thold == 5 ? " SELECTED" : "") .">5: Display comments with score +5 only.</OPTION>";
Dries's avatar
 
Dries committed
282
      $output .= "<B>Comment threshold:</B><BR>\n";
Dries's avatar
 
Dries committed
283 284
      $output .= "<SELECT NAME=\"edit[thold]\">$options</SELECT><BR>\n";
      $output .= "<I>Comments that scored less than this setting will be ignored. Anonymous comments start at 0, comments of people logged on start at 1 and moderators can add and subtract points.</I><P>\n";
Dries's avatar
 
Dries committed
285
      $output .= "<B>Singature:</B> (255 char. limit)<BR>\n";
Dries's avatar
 
Dries committed
286 287 288 289
      $output .= "<TEXTAREA NAME=\"edit[signature]\" COLS=35 ROWS=5 WRAP=virtual>$user->signature</TEXTAREA><BR>\n";
      $output .= "<I>Optional. This information will be publicly displayed at the end of your comments. </I><P>\n";
      $output .= "<INPUT TYPE=submit NAME=op VALUE=\"Save page settings\"><BR>\n";
      $output .= "</FORM>\n";
Dries's avatar
 
Dries committed
290

Dries's avatar
 
Dries committed
291 292
      ### Display output/content:
      $theme->header();
Dries's avatar
 
Dries committed
293
      $theme->box("Customize your page", $output);
Dries's avatar
 
Dries committed
294 295 296 297 298 299 300
      $theme->footer();
    }
    else {
      $theme->header();
      $theme->box("Login", showLogin($userid)); 
      $theme->footer();
    }
Dries's avatar
Dries committed
301
    break;
302
  case "Save user information":
Dries's avatar
 
Dries committed
303
    if ($user && user_valid()) {
304 305 306 307 308 309 310 311
      $data[name] = $edit[name];
      $data[email] = $edit[email];
      $data[femail] = $edit[femail];
      $data[url] = $edit[url];
      $data[bio] = $edit[bio];
      $data[ublock] = $edit[ublock];
      $data[ublockon] = $edit[ublockon];
      if ($edit[pass1] == $edit[pass2] && !empty($edit[pass1])) { $data[passwd] = $edit[pass1]; }
Dries's avatar
 
Dries committed
312
      dbsave("users", $data, $user->id);
Dries's avatar
 
Dries committed
313
      user_rehash();
314
    }
Dries's avatar
 
Dries committed
315
    showUser($user->userid);
Dries's avatar
Dries committed
316
    break;
317
  case "Save page settings":
Dries's avatar
 
Dries committed
318
    if ($user && user_valid()) {
319 320 321 322 323 324
      $data[theme] = $edit[theme];
      $data[storynum] = $edit[storynum];
      $data[umode] = $edit[umode];
      $data[uorder] = $edit[uorder];
      $data[thold] = $edit[thold];
      $data[signature] = $edit[signature];
Dries's avatar
 
Dries committed
325
      dbsave("users", $data, $user->id);
Dries's avatar
 
Dries committed
326
      user_rehash();
327
    }
Dries's avatar
 
Dries committed
328
    showUser($user->userid);
Dries's avatar
Dries committed
329
    break;
Dries's avatar
 
Dries committed
330 331
  default: 
    showUser($user->userid);
Dries's avatar
Dries committed
332
}
Dries's avatar
 
Dries committed
333

Dries's avatar
Dries committed
334
?>