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

include "theme.inc";
Dries's avatar
Dries committed
4

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

10
function showLogin($userid = "") {
Dries's avatar
 
Dries committed
11 12 13 14 15 16 17 18 19 20
  $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;
21
}
Dries's avatar
 
Dries committed
22

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

function showUser($uname) {
Dries's avatar
 
Dries committed
30
  global $user, $theme;
Dries's avatar
 
Dries committed
31 32 33
  
  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";
Dries's avatar
 
Dries committed
34
    $output .= "<TABLE BORDER=\"0\" CELLPADDING=\"2\" CELLSPACING=\"2\">\n";
35 36 37 38 39 40
    $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
41
    $output .= "</TABLE>\n";
Dries's avatar
 
Dries committed
42 43

    ### Display account information:
Dries's avatar
 
Dries committed
44
    $theme->header();
45
    $theme->box("Your user information", $output);
Dries's avatar
 
Dries committed
46 47 48
    $theme->footer();
  }
  elseif ($uname && $account = account_getUser($uname)) {
Dries's avatar
 
Dries committed
49
    $box1 .= "<TABLE BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"1\">\n";
50
    $box1 .= " <TR><TD ALIGN=\"right\"><B>Username:</B></TD><TD>$account->userid</TD></TR>\n";
51 52 53
    $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";
54 55 56 57
    $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)) {
Dries's avatar
 
Dries committed
58 59 60 61 62 63
      $box2 .= "<TABLE BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"1\">\n";
      $box2 .= " <TR><TD ALIGN=\"right\"><B>Comment:</B></TD><TD><A HREF=\"discussion.php?id=$comment->sid&cid=$comment->cid&pid=$comment->pid\">$comment->subject</A></TD></TR>\n";
      $box2 .= " <TR><TD ALIGN=\"right\"><B>Date:</B></TD><TD>". format_date($comment->timestamp) ."</TD></TR>\n";
      $box2 .= " <TR><TD ALIGN=\"right\"><B>Story:</B></TD><TD><A HREF=\"discussion.php?id=$comment->sid\">$comment->story</A></TD></TR>\n";
      $box2 .= "</TABLE>\n";
      $box2 .= "<BR><BR>\n";
64 65
      $comments++;
    }
Dries's avatar
 
Dries committed
66

67 68
    $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)) {
Dries's avatar
 
Dries committed
69
      $box3 .= "<DL><DT><B>". date("l, F jS", $diary->timestamp) .":</B></DT><DD><P>". check_output($diary->text) ."</P><P>[ <A HREF=\"diary.php?op=view&name=$uname\">more</A> ]</P></DD></DL>\n";
70 71 72
      $diaries++;
    }
    
Dries's avatar
 
Dries committed
73
    ### Display account information:
Dries's avatar
 
Dries committed
74
    $theme->header();
75 76 77
    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
78 79 80
    $theme->footer();
  }
  else { 
Dries's avatar
 
Dries committed
81
    ### Display login form:
Dries's avatar
 
Dries committed
82 83 84
    $theme->header();
    $theme->box("Login", showLogin($userid)); 
    $theme->footer();
Dries's avatar
Dries committed
85 86
  }
}
Dries's avatar
 
Dries committed
87

88
function newUser($user = "", $error = "") {
89 90
  global $theme;

Dries's avatar
 
Dries committed
91 92 93 94 95 96 97 98 99 100
  $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
101
  $theme->header();
Dries's avatar
 
Dries committed
102
  $theme->box("Register as new user", $output);
Dries's avatar
Dries committed
103 104
  $theme->footer();
}
Dries's avatar
 
Dries committed
105

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

109 110 111
  ### 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
112
  if (empty($user[userid]) || (ereg("[^a-zA-Z0-9_-]", $user[userid]))) $rval = "the specified username '$new[userid]' is not valid.<BR>";
113
  if (strlen($user[userid]) > 15) $rval = "the specified username is too long: it must be less than 15 characters.";
Dries's avatar
 
Dries committed
114 115

  ### Check to see whether the username or e-mail address are banned:
Dries's avatar
 
Dries committed
116 117
  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
118

Dries's avatar
 
Dries committed
119
  ### Verify whether username and e-mail address are unique:
Dries's avatar
 
Dries committed
120 121
  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
122

123
  return($rval);
Dries's avatar
Dries committed
124
}
Dries's avatar
 
Dries committed
125 126

function account_makePassword($min_length=6) {
127
  mt_srand((double)microtime() * 1000000);
Dries's avatar
 
Dries committed
128
  $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
129
  while(strlen($password) < $min_length) $password .= $words[mt_rand(0, count($words))];
130
  return $password;
Dries's avatar
Dries committed
131 132
}

Dries's avatar
 
Dries committed
133 134 135
function account_track_comments() {
  global $user;

Dries's avatar
 
Dries committed
136
  $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
137 138 139 140 141

  ### 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
142
    $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
143 144 145 146
    $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
147
      $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
148 149 150 151 152 153 154
    }
    $output .= " </UL>\n";
  }
   
  return $output;
}

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

196
      if ($system == 1) {
Dries's avatar
 
Dries committed
197 198 199 200
        ### 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();
201
      } else {
Dries's avatar
 
Dries committed
202 203 204 205 206 207 208
        ### 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();
209
      }
Dries's avatar
 
Dries committed
210 211

      watchdog(1, "new user `$new[userid]' registered with e-mail address `$new[email]'");
212
    }
Dries's avatar
Dries committed
213
    break;
Dries's avatar
 
Dries committed
214
  case "user":
Dries's avatar
 
Dries committed
215
    if ($user->id && user_valid()) {
Dries's avatar
 
Dries committed
216 217 218 219 220 221 222 223 224 225 226 227 228 229
      ### 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
230
      $output .= "<B>Bio:</B> (255 char. limit)<BR>\n";
Dries's avatar
 
Dries committed
231 232
      $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
233
      $output .= "<B>User block:</B> (255 char. limit)<BR>\n";
Dries's avatar
 
Dries committed
234
      $output .= "<TEXTAREA NAME=\"edit[ublock]\" COLS=35 ROWS=5 WRAP=virtual>$user->ublock</TEXTAREA><BR>\n";
Dries's avatar
 
Dries committed
235
      $output .= "<INPUT NAME=\"edit[ublockon]\" TYPE=checkbox". ($user->ublockon == 1 ? " CHECKED" : "") ."> Enable user block<BR>\n";
Dries's avatar
 
Dries committed
236 237 238 239 240 241 242 243 244
      $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
245
      $theme->box("Edit your information", $output);
Dries's avatar
 
Dries committed
246 247 248 249 250 251 252
      $theme->footer();
    }
    else {
      $theme->header();
      $theme->box("Login", showLogin($userid)); 
      $theme->footer();
    }
Dries's avatar
Dries committed
253
    break;
Dries's avatar
 
Dries committed
254
  case "page":
Dries's avatar
 
Dries committed
255
    if ($user && user_valid()) {
Dries's avatar
 
Dries committed
256 257 258
      ### Generate output/content:
      $output .= "<FORM ACTION=\"account.php\" METHOD=post>\n";
      $output .= "<B>Theme:</B><BR>\n";
Dries's avatar
 
Dries committed
259

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

Dries's avatar
 
Dries committed
265
      $output .= "<SELECT NAME=\"edit[theme]\">$options</SELECT><BR>\n";
Dries's avatar
 
Dries committed
266
      $output .= "<I>Selecting a different theme will change the look and feel of the site.</I><P>\n";
Dries's avatar
 
Dries committed
267 268
      $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
269
      $output .= "<I>The maximum number of stories that will be displayed on the main page.</I><P>\n";
Dries's avatar
 
Dries committed
270 271 272
      $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
273
      $output .= "<B>Comment display mode:</B><BR>\n";
Dries's avatar
 
Dries committed
274 275 276 277
      $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
278
      $output .= "<B>Comment sort order:</B><BR>\n";
Dries's avatar
 
Dries committed
279 280 281 282 283 284 285 286
      $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
287
      $output .= "<B>Comment threshold:</B><BR>\n";
Dries's avatar
 
Dries committed
288 289
      $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
290
      $output .= "<B>Singature:</B> (255 char. limit)<BR>\n";
Dries's avatar
 
Dries committed
291 292 293 294
      $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
295

Dries's avatar
 
Dries committed
296 297
      ### Display output/content:
      $theme->header();
Dries's avatar
 
Dries committed
298
      $theme->box("Customize your page", $output);
Dries's avatar
 
Dries committed
299 300 301 302 303 304 305
      $theme->footer();
    }
    else {
      $theme->header();
      $theme->box("Login", showLogin($userid)); 
      $theme->footer();
    }
Dries's avatar
Dries committed
306
    break;
307
  case "Save user information":
Dries's avatar
 
Dries committed
308
    if ($user && user_valid()) {
309 310 311 312 313 314 315 316
      $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
317
      dbsave("users", $data, $user->id);
Dries's avatar
 
Dries committed
318
      user_rehash();
319
    }
Dries's avatar
 
Dries committed
320
    showUser($user->userid);
Dries's avatar
Dries committed
321
    break;
322
  case "Save page settings":
Dries's avatar
 
Dries committed
323
    if ($user && user_valid()) {
324 325 326 327 328 329
      $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
330
      dbsave("users", $data, $user->id);
Dries's avatar
 
Dries committed
331
      user_rehash();
332
    }
333
    header("Location: account.php?op=info");
Dries's avatar
Dries committed
334
    break;
Dries's avatar
 
Dries committed
335 336
  default: 
    showUser($user->userid);
Dries's avatar
Dries committed
337
}
Dries's avatar
 
Dries committed
338

Dries's avatar
Dries committed
339
?>