Changeset 307
- Timestamp:
- 2009-07-03 20:52:03 (3 years ago)
- Files:
-
- trunk/admin/classes/pages/Editmember.php (modified) (7 diffs)
- trunk/admin/classes/pages/Groups.php (modified) (5 diffs)
- trunk/admin/classes/pages/Moderators.php (modified) (1 diff)
- trunk/admin/classes/pages/Permissions.php (modified) (3 diffs)
- trunk/admin/index.php (modified) (1 diff)
- trunk/classes/misc/Member.php (modified) (10 diffs)
- trunk/classes/misc/Post.php (modified) (2 diffs)
- trunk/classes/pages/Members.php (modified) (2 diffs)
- trunk/classes/pages/Messenger.php (modified) (1 diff)
- trunk/db/data.sql (modified) (1 diff)
- trunk/db/mysql.sql (modified) (4 diffs)
- trunk/db/postgresql.sql (modified) (4 diffs)
- trunk/db/sqlite.sql (modified) (4 diffs)
- trunk/includes/config/defaultgroups.php (added)
- trunk/includes/input.php (modified) (2 diffs)
- trunk/includes/lang/de.php (modified) (1 diff)
- trunk/includes/lang/en.php (modified) (1 diff)
- trunk/index.php (modified) (1 diff)
- trunk/install.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/admin/classes/pages/Editmember.php
r303 r307 31 31 **/ 32 32 public function __construct() { 33 global $LANG, $C, $F, $SETTINGS, $LANG, $ STATUS;33 global $LANG, $C, $F, $SETTINGS, $LANG, $DEFAULTGROUPS; 34 34 global $INPUT; 35 35 // define location and title parameter … … 38 38 // call parent constructor (general HTML 'skeleton') 39 39 parent::__construct(TRUE); 40 // define 'standard' groups which can only be modified by 'status'41 $_def_groups = array_keys($STATUS);42 40 if ((isset($INPUT['commit']) && $INPUT['commit'] == 'y') || (isset($INPUT['submit']) && $INPUT['submit'] == $LANG['Delete'])) { 43 41 // post-commit … … 136 134 } 137 135 // update rest in bulk 138 $q = $C->prepare('UPDATE ' . $SETTINGS['dbtableprefix'] . 'members SET lang =:lang, memberhomepage=:homepage, birthday=:birthday, location=:location, icq=:icq, aim=:aim, yahoo=:yahoo, msn=:msn, signature=:signature, memberemailhidden=:hideemail, messagenotification_email=:mn_email, messagenotification_popup=:mn_popup, boardstyle=:style, memberstatus=:status WHERE memberid=:id');136 $q = $C->prepare('UPDATE ' . $SETTINGS['dbtableprefix'] . 'members SET lang = :lang, memberhomepage = :homepage, birthday = :birthday, location = :location, icq = :icq, aim = :aim, yahoo = :yahoo, msn = :msn, signature = :signature, memberemailhidden = :hideemail, messagenotification_email = :mn_email, messagenotification_popup = :mn_popup, boardstyle = :style, banned = :banned WHERE memberid = :id'); 139 137 $q->bindParam(':lang', trim($INPUT['newlanguage']), PDO::PARAM_STR, 2); 140 138 if (isset($INPUT['homepage'])) { … … 154 152 $q->bindParam(':mn_popup', $INPUT['messagenotification_popup'], PDO::PARAM_INT, 1); 155 153 $q->bindParam(':style', $INPUT['boardstyle'], PDO::PARAM_STR, 2); 156 $q->bindParam(':status', $INPUT['status'], PDO::PARAM_STR); 154 if (!isset($INPUT['status'])) { 155 $INPUT['status'] = 0; 156 } 157 $q->bindParam(':banned', $INPUT['status'], PDO::PARAM_STR); 157 158 $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12); 158 159 $q->execute(); 159 160 $q = NULL; 160 // translate status to group membership161 // first, delete previous entries162 foreach ($STATUS as $key=>$val) {163 if ($key != 'Banned' && $key != 'Member') {164 $q2 = $C->prepare('SELECT id FROM ' . $SETTINGS['dbtableprefix'] . 'usergroups WHERE name = :group');165 $q2->bindParam(':group', str_replace('_', ' ', $key), PDO::PARAM_STR);166 $q2->execute();167 $_groupid = $q2->fetchColumn();168 $q2 = NULL;169 $q = $C->prepare('DELETE FROM ' . $SETTINGS['dbtableprefix'] . 'groupmemberships WHERE member = :id AND usergroup = :group');170 $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12);171 $q->bindParam(':group', $_groupid, PDO::PARAM_INT, 12);172 $q->execute();173 $q = NULL;174 }175 }176 // enter new177 if ($INPUT['status'] != 'Member' && $INPUT['status'] != 'Banned') {178 $q2 = $C->prepare('SELECT id FROM ' . $SETTINGS['dbtableprefix'] . 'usergroups WHERE name = :group');179 $q2->bindParam(':group', $INPUT['status'], PDO::PARAM_STR);180 $q2->execute();181 $_groupid = $q2->fetchColumn();182 $q2 = NULL;183 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'groupmemberships (member, usergroup) VALUES (:id, :group)');184 $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12);185 $q->bindParam(':group', $_groupid, PDO::PARAM_INT, 12);186 $q->execute();187 $q = NULL;188 }189 161 // success 190 162 $output = $LANG['profile_updated']; … … 219 191 $q = NULL; 220 192 foreach ($rows as $row) { 221 // don't touch if it's one of the 'status' groups 222 if (!in_array($row['name'], $_def_groups)) { 223 // delete if necessary 224 $q = $C->prepare('DELETE FROM ' . $SETTINGS['dbtableprefix'] . 'groupmemberships WHERE member = :id AND usergroup = :group'); 193 // delete if necessary 194 $q = $C->prepare('DELETE FROM ' . $SETTINGS['dbtableprefix'] . 'groupmemberships WHERE member = :id AND usergroup = :group'); 195 $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12); 196 $q->bindParam(':group', $row['id'], PDO::PARAM_INT, 12); 197 $q->execute(); 198 $q = NULL; 199 if (isset($INPUT['newgroupmemberships'][$row['id']]) && $INPUT['newgroupmemberships'][$row['id']] == 1) { 200 // insert 201 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'groupmemberships (member, usergroup) VALUES (:id, :group)'); 225 202 $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12); 226 203 $q->bindParam(':group', $row['id'], PDO::PARAM_INT, 12); 227 204 $q->execute(); 228 205 $q = NULL; 229 if (isset($INPUT['newgroupmemberships'][$row['id']]) && $INPUT['newgroupmemberships'][$row['id']] == 1) {230 // insert231 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'groupmemberships (member, usergroup) VALUES (:id, :group)');232 $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12);233 $q->bindParam(':group', $row['id'], PDO::PARAM_INT, 12);234 $q->execute();235 $q = NULL;236 }237 206 } 238 207 } … … 268 237 $form->addTableRow($LANG['Confirm_New_Password'] . ':', 'password', 'newpassword2'); 269 238 $form->addTableRow($LANG['E-Mail'] . ': *', 'text', 'email', $m->getEmail()); 270 // status 271 $_col2 = '<td><select name="status">'; 272 foreach ($STATUS as $key=>$_status) { 273 if ($_status != $STATUS['Guest']) { 274 $_col2 .= '<option value="' . str_replace('_', ' ', $key) . '"'; 275 if ($m->getStatus(TRUE) == $_status) { 276 $_col2 .= ' selected="selected"'; 277 } 278 $_col2 .= '>' . $_status . '</option>'; 279 } 280 } 281 $_col2 .= '</select></td>'; 282 $form->addRawTableRow(Array($LANG['Status'] . ':', $_col2)); 239 // banning 240 $_col2 = '<td><input type="checkbox" name="status" value="1"'; 241 if ($m->getBanned()) { 242 $_col2 .= ' checked="checked"'; 243 } 244 $_col2 .= ' /></td>'; 245 $form->addRawTableRow(Array($LANG['Banned'] . ':', $_col2)); 283 246 // construct second column according to current settings 284 247 if (!$m->getMailHidden()) { … … 453 416 foreach ($rows2 as $row2) { 454 417 $_col2 = '<td><input type="checkbox" name="newgroupmemberships[' . $row2['id'] . ']"'; 455 if (in_array($row2['name'], $_def_groups)) { 456 // modified by 'status' 457 $_col2 .= ' disabled="disabled"'; 458 $_col1 = $STATUS[$row2['name']]; 418 if (isset($LANG[$row2['name']])) { 419 $_col1 = $LANG[$row2['name']]; 459 420 } else { 460 // freely modifyable groups461 421 $_col1 = $row2['name']; 462 422 } trunk/admin/classes/pages/Groups.php
r303 r307 31 31 **/ 32 32 public function __construct() { 33 global $LANG, $C, $F, $SETTINGS, $LANG, $ STATUS;33 global $LANG, $C, $F, $SETTINGS, $LANG, $DEFAULTGROUPS; 34 34 global $INPUT; 35 35 // define location and title parameter … … 38 38 // call parent constructor (general HTML 'skeleton') 39 39 parent::__construct(TRUE); 40 // define 'standard' groups which can't be modified41 $_def_groups = array_keys($STATUS);42 40 if (isset($INPUT['commit']) && $INPUT['commit'] == 'y') { 43 41 // post-commit … … 49 47 $q = NULL; 50 48 foreach ($rows as $row) { 51 if (!in_array($row['name'], $ _def_groups)) {49 if (!in_array($row['name'], $DEFAULTGROUPS)) { 52 50 if (isset($INPUT['changegroupdelete'][$row['id']]) && $INPUT['changegroupdelete'][$row['id']] == 1) { 53 51 // delete group memberships beloging to this group … … 101 99 $form->addInput('hidden', 'commit', 'y'); 102 100 $form->createTable('adminform'); 103 $form->addRawTableRow(Array('<th>' . $LANG['Group'] .'</th>', '<th>' . $LANG['Public'] . '</th>', '<th>' . $LANG['Delete'] . '</th>', '<th>' . $LANG['Permissions'] . '</th>' ));101 $form->addRawTableRow(Array('<th>' . $LANG['Group'] .'</th>', '<th>' . $LANG['Public'] . '</th>', '<th>' . $LANG['Delete'] . '</th>', '<th>' . $LANG['Permissions'] . '</th>', '<th>' . $LANG['Status'] . '</th>')); 104 102 // get all current user groups 105 foreach ($C->query('SELECT * FROM ' . $SETTINGS['dbtableprefix'] . 'usergroups ORDER BY id ASC') as $row) { 106 if (in_array($row['name'], $_def_groups)) { 103 $q = $C->prepare('SELECT * FROM ' . $SETTINGS['dbtableprefix'] . 'usergroups ORDER BY id ASC'); 104 $q->execute(); 105 $rows = $q->fetchAll(); 106 $q = NULL; 107 $n = count($rows); 108 foreach ($rows as $row) { 109 $_col5 = '<select name="status"><option value="0">' . $LANG['n/a'] . '</option>'; 110 for ($i = 1; $i <= $n; $i++) { 111 $_col5 .= '<option value="' . $i . '"'; 112 if ($i == $row['status']) { 113 $_col5 .= ' selected="selected"'; 114 } 115 $_col5 .= '>' . $i . '</option>'; 116 } 117 $_col5 .= '</select>'; 118 if (isset($LANG[$row['name']])) { 119 $_name = $LANG[$row['name']]; 120 } else { 121 $_name = $row['name']; 122 } 123 if (in_array($row['name'], $DEFAULTGROUPS)) { 107 124 // default, non-modifyable groups 108 $form->addRawTableRow(Array('<td><input name="changegroupname[' . $row['id'] . ']" type="text" value="' . $ STATUS[$row['name']] . '" disabled="disabled" /></td>', '<td><input name="changegrouppublic[' . $row['id'] . ']" type="checkbox" value="1" disabled="disabled" /></td>', ' ', '<td><a href="' . $F->link('permissions') . 'id=' . $row['id'] . '">' . $LANG['Edit'] . '</a></td>'));125 $form->addRawTableRow(Array('<td><input name="changegroupname[' . $row['id'] . ']" type="text" value="' . $_name . '" disabled="disabled" /></td>', '<td><input name="changegrouppublic[' . $row['id'] . ']" type="checkbox" value="1" disabled="disabled" /></td>', ' ', '<td><a href="' . $F->link('permissions') . 'id=' . $row['id'] . '">' . $LANG['Edit'] . '</a></td>', '<td>' . $_col5 . '</td>')); 109 126 } else { 110 127 // admin defined groups … … 114 131 } 115 132 $_col2 .= ' />'; 116 $form->addRawTableRow(Array('<td><input name="changegroupname[' . $row['id'] . ']" type="text" value="' . $ row['name'] . '" /></td>', '<td>' . $_col2 . '</td>', '<td><input name="changegroupdelete[' . $row['id'] . ']" type="checkbox" value="1" /></td>', '<td><a href="' . $F->link('permissions') . 'id=' . $row['id'] . '">' . $LANG['Edit'] . '</a></td>'));133 $form->addRawTableRow(Array('<td><input name="changegroupname[' . $row['id'] . ']" type="text" value="' . $_name . '" /></td>', '<td>' . $_col2 . '</td>', '<td><input name="changegroupdelete[' . $row['id'] . ']" type="checkbox" value="1" /></td>', '<td><a href="' . $F->link('permissions') . 'id=' . $row['id'] . '">' . $LANG['Edit'] . '</a></td>', '<td>' . $_col5 . '</td>')); 117 134 } 118 135 } trunk/admin/classes/pages/Moderators.php
r279 r307 53 53 $_invalid = Array(); 54 54 foreach ($_newmods as $_mod) { 55 $q = $C->prepare('SELECT memberid, memberstatus FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE membername = :name'); 56 $q->bindParam(':name', trim($_mod), PDO::PARAM_STR); 55 $_mod = trim($_mod); 56 $q = $C->prepare('SELECT m.memberid AS count FROM ' . $SETTINGS['dbtableprefix'] . 'members AS m INNER JOIN ' . $SETTINGS['dbtableprefix'] . 'groupmemberships AS gm ON gm.member = m.memberid INNER JOIN ' . $SETTINGS['dbtableprefix'] . 'usergroups AS ug ON ug.id = gm.usegroup WHERE m.membername = :name AND ug.name = :moderator'); 57 $q->bindParam(':name', $_mod, PDO::PARAM_STR); 58 $q->bindValue(':moderator', 'Moderator', PDO::PARAM_STR); 57 59 if ($q->execute() && $row2 = $q->fetchObject()) { 60 // valid 58 61 $q = NULL; 59 if ($row2->memberstatus == 'Moderator') { 60 // valid 61 $_newmods_ids[] = $row2->memberid; 62 } else { 63 // invalid 64 $_invalid[] = $_mod; 65 } 62 $_newmods_ids[] = $row2->memberid; 66 63 } else { 67 64 // invalid trunk/admin/classes/pages/Permissions.php
r305 r307 31 31 **/ 32 32 public function __construct() { 33 global $LANG, $C, $F, $SETTINGS, $LANG, $ STATUS;33 global $LANG, $C, $F, $SETTINGS, $LANG, $DEFAULTGROUPS; 34 34 global $INPUT; 35 35 // define location and title parameter … … 38 38 // call parent constructor (general HTML 'skeleton') 39 39 parent::__construct(TRUE); 40 // define 'standard' groups41 $_def_groups = array_keys($STATUS);42 40 // define pages to exclude (these are mostly those which have forum-specific rights assigned 43 41 $_exclude_pages = Array('Page', 'Category', 'Forum', 'Topic', 'Newpoll', 'Reply', 'Moderate', 'Newtopic'); … … 137 135 $this->html->body->addChild('br'); 138 136 $this->html->body->addChild('div', $LANG['help_editing_permissions']); 139 if (in_array($row->name, $ _def_groups)) {137 if (in_array($row->name, $DEFAULTGROUPS)) { 140 138 $this->html->body->addChild('br'); 141 139 $this->html->body->addChild('div', $LANG['warning_editing_permissions_of_default_group']); trunk/admin/index.php
r291 r307 62 62 require_once($SETTINGS['fspath'] . 'includes/config/memberstages.php'); 63 63 64 // default usergroups 65 require_once($SETTINGS['fspath'] . 'includes/config/defaultgroups.php'); 66 64 67 // cryptography module 65 68 require_once($SETTINGS['fspath'] . 'includes/config/crypt.php'); trunk/classes/misc/Member.php
r302 r307 34 34 private $avatar; 35 35 private $status; 36 private $banned; 36 37 private $stage; 37 38 private $posts; … … 107 108 } 108 109 $this->avatar = $row->memberavatar; 109 $this->status = $row->memberstatus; 110 if ($row->banned == 0) { 111 $this->banned = FALSE; 112 } else { 113 $this->banned = TRUE; 114 } 110 115 $this->homepage = $row->memberhomepage; 111 116 $this->registration = $row->registered; … … 137 142 $_i++; 138 143 } 144 // member status 145 $q = $C->prepare('SELECT ug.name FROM ' . $SETTINGS['dbtableprefix'] . 'usergroups AS ug INNER JOIN ' . $SETTINGS['dbtableprefix'] . 'groupmemberships AS gm ON gm.usergroup = ug.id WHERE gm.member = :memberid AND ug.status > :zero ORDER BY ug.status ASC LIMIT 1'); 146 $q->bindParam(':memberid', $this->id, PDO::PARAM_INT); 147 $q->bindValue(':zero', 0, PDO::PARAM_INT); 148 $q->execute(); 149 $row = $q->fetchObject(); 150 $q = NULL; 151 $this->status = $row->name; 139 152 } else { 140 153 // member hasn't been found - deleted member … … 166 179 public function getPostside() { 167 180 // language, formatting 168 global $LANG, $F, $S TATUS, $SETTINGS;181 global $LANG, $F, $SETTINGS; 169 182 // output 170 183 $_s = '<div><strong><a href="' . $F->link('profile') . 'id=' . $this->id . '">' . $this->name . '</a></strong></div>'; … … 176 189 // translate status 177 190 $_s .= '<div>'; 178 if (isset($ STATUS[$this->status]) && $STATUS[$this->status] != '') {179 $_s .= $ STATUS[$this->status];191 if (isset($LANG[$this->status]) && $LANG[$this->status] != '') { 192 $_s .= $LANG[$this->status]; 180 193 } 181 194 else { … … 341 354 **/ 342 355 public function getStatus($translated = FALSE) { 343 global $ STATUS;356 global $LANG; 344 357 if ($translated) { 345 if (isset($ STATUS[$this->status]) && $STATUS[$this->status] != '') {346 $_s = $ STATUS[$this->status];358 if (isset($LANG[$this->status]) && $LANG[$this->status] != '') { 359 $_s = $LANG[$this->status]; 347 360 } else { 348 361 $_s = $this->status; … … 354 367 } 355 368 } /* function getStatus */ 369 370 /** 371 * Function: getBanned 372 * Description: check whether this member has been banned 373 * Input: - 374 * Returns: TRUE / FALSE 375 **/ 376 public function getBanned() { 377 return $this->banned; 378 } /* function getBanned */ 356 379 357 380 /* get registration date */ … … 379 402 public function getProfile() { 380 403 // language, formatting 381 global $LANG, $ STATUS, $F;404 global $LANG, $F, $C, $SETTINGS; 382 405 // assemble info table 383 406 $table = new Table('blind'); 384 407 $table->addRow(Array($LANG['Name'] . ':', $this->name)); 385 if (isset($STATUS[$this->status]) && $STATUS[$this->status] != '') { 386 $_s = $STATUS[$this->status]; 387 } else { 388 $_s = $this->status; 389 } 390 $table->addRow(Array($LANG['Status'] . ':', $_s)); 408 // user groups 409 $q = $C->prepare('SELECT ug.name FROM ' . $SETTINGS['dbtableprefix'] . 'usergroups AS ug INNER JOIN ' . $SETTINGS['dbtableprefix'] . 'groupmemberships AS gm ON gm.usergroup = ug.id WHERE gm.member = :memberid ORDER BY ug.status ASC, ug.name ASC'); 410 $q->bindParam(':memberid', $this->id, PDO::PARAM_INT); 411 $q->execute(); 412 $_groups = ''; 413 $i = 0; 414 while ($row = $q->fetchObject()) { 415 if ($i > 0) { 416 $_groups .= ', '; 417 } 418 if (isset($LANG[$row->name])) { 419 $_groups .= $LANG[$row->name]; 420 } else { 421 $_groups .= $row->name; 422 } 423 $i++; 424 } 425 $q = NULL; 426 $table->addRow(Array($LANG['User_Groups'] . ':', $_groups)); 391 427 $table->addRow(Array($LANG['E-Mail'] . ':', '<td><a href="' . $F->link('mail') . 'id=' . $this->id . '">' . $LANG['Send'] . '</a></td>')); 392 428 $table->addRow(Array($LANG['Message'] . ':', '<td><a href="' . $F->link('messenger') . 'action=send&id=' . $this->id . '">' . $LANG['Send'] . '</a></td>')); … … 848 884 * not every db supports this, but usually, it should work without locking, too; there just is the risk of a wrong member id being returned in the second query which is very unlikely - it can only occur on forums with very high traffic */ 849 885 @$C->query('LOCK TABLES ' . $SETTINGS['dbtableprefix'] . 'members WRITE'); 850 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'members (membername, memberemail, memberpassword, registered, member status, memberavatar) VALUES (:user, :email, :pw, :ts, :member, :avatar)');886 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'members (membername, memberemail, memberpassword, registered, memberavatar) VALUES (:user, :email, :pw, :ts, :avatar)'); 851 887 $_t = new DateTime('now', new DateTimeZone('UTC')); 852 888 $q->bindParam(':user', $username, PDO::PARAM_STR); … … 855 891 $q->bindValue(':pw', '*', PDO::PARAM_STR); 856 892 $q->bindParam(':ts', $_t->format('Y-m-d H:i:s'), PDO::PARAM_STR, 19); 857 $q->bindValue(':member', 'Member', PDO::PARAM_STR);858 893 $q->bindValue(':avatar', 'images/spacer.gif', PDO::PARAM_STR); 859 894 $q->execute(); trunk/classes/misc/Post.php
r287 r307 333 333 } else { 334 334 // member authenticated 335 $q = $C->prepare('SELECT memberid, membername, memberemail, memberstatusFROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id');335 $q = $C->prepare('SELECT memberid, membername, memberemail, banned FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id'); 336 336 $q->bindParam(':id', $_SESSION['memberid'], PDO::PARAM_INT, 12); 337 337 $s = $q->execute(); … … 340 340 $q = NULL; 341 341 // check if he's banned 342 if ($row-> memberstatus != 'Banned') {342 if ($row->banned != 0) { 343 343 $INPUT['email'] = $row->memberemail; 344 344 // set flag for 'registered member' trunk/classes/pages/Members.php
r213 r307 52 52 $orderdb = 'membername ASC'; 53 53 break; 54 case 'status':55 $orderdb = 'memberstatus ASC';56 break;57 54 case 'posts': 58 55 /* the total posts of a member are listed in the members table; … … 88 85 $table = new Table(); 89 86 // column headers with links to order table 90 $table->addHeaderRow(Array(' ', '<th><a href="' . $F->link('members') . 'order=name&page=' . $INPUT['page'] . '">' . $LANG['Username'] . '</a></th>', '<th> <a href="' . $F->link('members') . 'order=status&page=' . $INPUT['page'] . '">' . $LANG['Status'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=posts&page=' . $INPUT['page'] . '">' . $LANG['Posts'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=registered&page=' . $INPUT['page'] . '">' . $LANG['Registration'] . '</a></th>'));87 $table->addHeaderRow(Array(' ', '<th><a href="' . $F->link('members') . 'order=name&page=' . $INPUT['page'] . '">' . $LANG['Username'] . '</a></th>', '<th>' . $LANG['Status'] . '</th>', '<th><a href="' . $F->link('members') . 'order=posts&page=' . $INPUT['page'] . '">' . $LANG['Posts'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=registered&page=' . $INPUT['page'] . '">' . $LANG['Registration'] . '</a></th>')); 91 88 // display members 92 89 $i = $start + 1; trunk/classes/pages/Messenger.php
r271 r307 232 232 if ($ok === 1) { 233 233 // check if user's account is banned 234 $q = $C->prepare('SELECT memberstatusFROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id');234 $q = $C->prepare('SELECT banned FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id'); 235 235 $q->bindParam(':id', $_SESSION['memberid'], PDO::PARAM_INT, 12); 236 236 $q->execute(); 237 $_ status= $q->fetchColumn();238 $q = NULL; 239 if ($_ status == 'Banned') {237 $_banned = $q->fetchColumn(); 238 $q = NULL; 239 if ($_banned != 0) { 240 240 $ok = -1; 241 241 $_error = $LANG['error_banned_username']; trunk/db/data.sql
r222 r307 353 353 INSERT INTO %prefix%rights_default VALUES('Who_is_online',5,0,0); 354 354 355 INSERT INTO %prefix%usergroups VALUES(1,'Admin',0 );356 INSERT INTO %prefix%usergroups VALUES(2,'Global Moderator',0 );357 INSERT INTO %prefix%usergroups VALUES(3,'Moderator',0 );358 INSERT INTO %prefix%usergroups VALUES(4,'Member',0 );359 INSERT INTO %prefix%usergroups VALUES(5,'Guest',0 );355 INSERT INTO %prefix%usergroups VALUES(1,'Admin',0,1); 356 INSERT INTO %prefix%usergroups VALUES(2,'Global Moderator',0,2); 357 INSERT INTO %prefix%usergroups VALUES(3,'Moderator',0,3); 358 INSERT INTO %prefix%usergroups VALUES(4,'Member',0,4); 359 INSERT INTO %prefix%usergroups VALUES(5,'Guest',0,5); trunk/db/mysql.sql
r298 r307 70 70 id INTEGER PRIMARY KEY AUTO_INCREMENT, 71 71 name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 72 public INTEGER NOT NULL DEFAULT 0 72 public INTEGER NOT NULL DEFAULT 0, 73 status INTEGER NOT NULL DEFAULT 0 73 74 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci; 74 75 … … 81 82 memberavatar VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 82 83 memberpassword VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 83 memberstatus VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,84 84 memberposts INTEGER NOT NULL DEFAULT 0, 85 85 location VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL, … … 100 100 attachments INTEGER NOT NULL DEFAULT 0, 101 101 timezone VARCHAR(8) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL, 102 encoffset INTEGER NULL 102 encoffset INTEGER NULL, 103 banned INTEGER NOT NULL DEFAULT 0 103 104 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci; 104 105 … … 152 153 CREATE INDEX idx_posts_poster ON %prefix%posts (poster ASC, posttime DESC); 153 154 CREATE INDEX idx_members_membername ON %prefix%members (membername ASC); 154 CREATE INDEX idx_members_memberstatus ON %prefix%members (memberstatus ASC);155 155 CREATE INDEX idx_members_memberposts ON %prefix%members (memberposts DESC); 156 156 CREATE INDEX idx_members_registered ON %prefix%members (registered ASC); trunk/db/postgresql.sql
r298 r307 70 70 id SERIAL PRIMARY KEY, 71 71 name VARCHAR(255) NOT NULL, 72 public INTEGER NOT NULL DEFAULT 0 72 public INTEGER NOT NULL DEFAULT 0, 73 status INTEGER NOT NULL DEFAULT 0 73 74 ); 74 75 … … 81 82 memberavatar VARCHAR(255) NOT NULL, 82 83 memberpassword VARCHAR(255) NOT NULL, 83 memberstatus VARCHAR(255) NOT NULL,84 84 memberposts INTEGER NOT NULL DEFAULT 0, 85 85 location VARCHAR(255) NULL, … … 100 100 attachments INTEGER NOT NULL DEFAULT 0, 101 101 timezone VARCHAR(8) NULL, 102 encoffset INTEGER NULL 102 encoffset INTEGER NULL, 103 banned INTEGER NOT NULL DEFAULT 0 103 104 ); 104 105 … … 152 153 CREATE INDEX idx_posts_poster ON %prefix%posts (poster ASC, posttime DESC); 153 154 CREATE INDEX idx_members_membername ON %prefix%members (membername ASC); 154 CREATE INDEX idx_members_memberstatus ON %prefix%members (memberstatus ASC);155 155 CREATE INDEX idx_members_memberposts ON %prefix%members (memberposts DESC); 156 156 CREATE INDEX idx_members_registered ON %prefix%members (registered ASC); trunk/db/sqlite.sql
r298 r307 70 70 id INTEGER PRIMARY KEY AUTOINCREMENT, 71 71 name VARCHAR(255) NOT NULL COLLATE NOCASE, 72 public INTEGER NOT NULL DEFAULT 0 72 public INTEGER NOT NULL DEFAULT 0, 73 status INTEGER NOT NULL DEFAULT 0 73 74 ); 74 75 … … 81 82 memberavatar VARCHAR(255) NOT NULL, 82 83 memberpassword VARCHAR(255) NOT NULL COLLATE BINARY, 83 memberstatus VARCHAR(255) NOT NULL COLLATE NOCASE,84 84 memberposts INTEGER NOT NULL DEFAULT 0, 85 85 location VARCHAR(255) NULL COLLATE NOCASE, … … 100 100 attachments INTEGER NOT NULL DEFAULT 0, 101 101 timezone VARCHAR(8) NULL COLLATE NOCASE, 102 encoffset INTEGER NULL 102 encoffset INTEGER NULL, 103 banned INTEGER NOT NULL DEFAULT 0 103 104 ); 104 105 … … 152 153 CREATE INDEX idx_posts_poster ON %prefix%posts (poster ASC, posttime DESC); 153 154 CREATE INDEX idx_members_membername ON %prefix%members (membername ASC); 154 CREATE INDEX idx_members_memberstatus ON %prefix%members (memberstatus ASC);155 155 CREATE INDEX idx_members_memberposts ON %prefix%members (memberposts DESC); 156 156 CREATE INDEX idx_members_registered ON %prefix%members (registered ASC); trunk/includes/input.php
r292 r307 36 36 $not[] = 'LANG'; 37 37 $not[] = 'RULES'; 38 $not[] = ' STATUS';38 $not[] = 'DEFAULTGROUPS'; 39 39 // 'de-register' all local names of global variables 40 40 foreach ($_SERVER as $key=>$val) { … … 1027 1027 if (isset($_POST['status']) && $_POST['status'] != '') { 1028 1028 $INPUT['status'] = $_POST['status']; 1029 $_s = array_keys($STATUS); 1030 foreach ($_s as $key=>$val) { 1031 $_s[$key] = str_replace('_', ' ', $val); 1032 } 1033 if (!in_array($INPUT['status'], $_s)) { 1029 if (preg_match('/^[0-9]+$/', $INPUT['status']) != 1) { 1034 1030 $WARNINGS[] = str_replace('%var%', 'status', $LANG['warning_input']); 1035 1031 unset($INPUT['status']); trunk/includes/lang/de.php
r299 r307 36 36 $RULES[5] = 'Es gibt keine Regel Nr. 6'; 37 37 38 /* translation of member status options */39 $STATUS = Array();40 $STATUS['Admin'] = 'Admin';41 $STATUS['Global Moderator'] = 'Globaler Moderator';42 $STATUS['Moderator'] = 'Moderator';43 $STATUS['Member'] = 'Mitglied';44 $STATUS['Guest'] = 'Gast';45 $STATUS['Banned'] = 'Verbannt';46 47 38 $LANG = Array(); 39 40 /* translation of user groups */ 41 $LANG['Admin'] = 'Admin'; 42 $LANG['Global Moderator'] = 'Globaler Moderator'; 43 $LANG['Moderator'] = 'Moderator'; 44 $LANG['Member'] = 'Mitglied'; 45 $LANG['Guest'] = 'Gast'; 46 $LANG['Banned'] = 'Verbannt'; 48 47 49 48 /* single words */ trunk/includes/lang/en.php
r299 r307 37 37 $RULES[5] = 'There is nooooo rule 6'; 38 38 39 /* translation of member status options */40 $STATUS = Array();41 $STATUS['Admin'] = 'Admin';42 $STATUS['Global Moderator'] = 'Global Moderator';43 $STATUS['Moderator'] = 'Moderator';44 $STATUS['Member'] = 'Member';45 $STATUS['Guest'] = 'Guest';46 $STATUS['Banned'] = 'Banned';47 48 39 $LANG = Array(); 40 41 /* translation of user groups */ 42 $LANG['Admin'] = 'Admin'; 43 $LANG['Global Moderator'] = 'Global Moderator'; 44 $LANG['Moderator'] = 'Moderator'; 45 $LANG['Member'] = 'Member'; 46 $LANG['Guest'] = 'Guest'; 47 $LANG['Banned'] = 'Banned'; 49 48 50 49 /* single words */ trunk/index.php
r291 r307 59 59 require_once($SETTINGS['fspath'] . 'includes/config/memberstages.php'); 60 60 61 // default usergroups 62 require_once($SETTINGS['fspath'] . 'includes/config/defaultgroups.php'); 63 61 64 // cryptography module 62 65 require_once($SETTINGS['fspath'] . 'includes/config/crypt.php'); trunk/install.php
r291 r307 258 258 } 259 259 // write the admin account 260 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'members (membername, memberemail, memberavatar, memberpassword, registered , memberstatus) VALUES (:name, :email, :avatar, :password, :registered, :status)');260 $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'members (membername, memberemail, memberavatar, memberpassword, registered) VALUES (:name, :email, :avatar, :password, :registered)'); 261 261 $_t = new DateTime('now', new DateTimeZone('UTC')); 262 262 $q->bindParam(':name', $SETUPDATA['forumadmin'], PDO::PARAM_STR); … … 265 265 $q->bindValue(':password', '*', PDO::PARAM_STR); 266 266 $q->bindParam(':registered', $_t->format('Y-m-d H:i:s'), PDO::PARAM_STR, 19); 267 $q->bindValue(':status', 'Admin', PDO::PARAM_STR);268 267 $q->execute(); 269 268 // get id of admin
