Changeset 307

Show
Ignore:
Timestamp:
2009-07-03 20:52:03 (3 years ago)
Author:
hannes
Message:

untested attempt at replacing member status with group based functionality

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/admin/classes/pages/Editmember.php

    r303 r307  
    3131     **/ 
    3232    public function __construct() { 
    33         global $LANG, $C, $F, $SETTINGS, $LANG, $STATUS; 
     33        global $LANG, $C, $F, $SETTINGS, $LANG, $DEFAULTGROUPS; 
    3434        global $INPUT; 
    3535        // define location and title parameter 
     
    3838        // call parent constructor (general HTML 'skeleton') 
    3939        parent::__construct(TRUE); 
    40         // define 'standard' groups which can only be modified by 'status' 
    41         $_def_groups = array_keys($STATUS); 
    4240        if ((isset($INPUT['commit']) && $INPUT['commit'] == 'y') || (isset($INPUT['submit']) && $INPUT['submit'] == $LANG['Delete'])) { 
    4341            // post-commit 
     
    136134                                } 
    137135                                // 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'); 
    139137                                $q->bindParam(':lang', trim($INPUT['newlanguage']), PDO::PARAM_STR, 2); 
    140138                                if (isset($INPUT['homepage'])) { 
     
    154152                                $q->bindParam(':mn_popup', $INPUT['messagenotification_popup'], PDO::PARAM_INT, 1); 
    155153                                $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); 
    157158                                $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12); 
    158159                                $q->execute(); 
    159160                                $q = NULL; 
    160                                 // translate status to group membership 
    161                                 // first, delete previous entries 
    162                                 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 new 
    177                                 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                                 } 
    189161                                // success 
    190162                                $output = $LANG['profile_updated']; 
     
    219191                        $q = NULL; 
    220192                        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)'); 
    225202                                $q->bindParam(':id', $INPUT['id'], PDO::PARAM_INT, 12); 
    226203                                $q->bindParam(':group', $row['id'], PDO::PARAM_INT, 12); 
    227204                                $q->execute(); 
    228205                                $q = NULL; 
    229                                 if (isset($INPUT['newgroupmemberships'][$row['id']]) && $INPUT['newgroupmemberships'][$row['id']] == 1) { 
    230                                     // insert 
    231                                     $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                                 } 
    237206                            } 
    238207                        } 
     
    268237                        $form->addTableRow($LANG['Confirm_New_Password'] . ':', 'password', 'newpassword2'); 
    269238                        $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)); 
    283246                        // construct second column according to current settings 
    284247                        if (!$m->getMailHidden()) { 
     
    453416                        foreach ($rows2 as $row2) { 
    454417                            $_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']]; 
    459420                            } else { 
    460                                 // freely modifyable groups 
    461421                                $_col1 = $row2['name']; 
    462422                            } 
  • trunk/admin/classes/pages/Groups.php

    r303 r307  
    3131     **/ 
    3232    public function __construct() { 
    33         global $LANG, $C, $F, $SETTINGS, $LANG, $STATUS; 
     33        global $LANG, $C, $F, $SETTINGS, $LANG, $DEFAULTGROUPS; 
    3434        global $INPUT; 
    3535        // define location and title parameter 
     
    3838        // call parent constructor (general HTML 'skeleton') 
    3939        parent::__construct(TRUE); 
    40         // define 'standard' groups which can't be modified 
    41         $_def_groups = array_keys($STATUS); 
    4240        if (isset($INPUT['commit']) && $INPUT['commit'] == 'y') { 
    4341            // post-commit 
     
    4947                $q = NULL; 
    5048                foreach ($rows as $row) { 
    51                     if (!in_array($row['name'], $_def_groups)) { 
     49                    if (!in_array($row['name'], $DEFAULTGROUPS)) { 
    5250                        if (isset($INPUT['changegroupdelete'][$row['id']]) && $INPUT['changegroupdelete'][$row['id']] == 1) { 
    5351                            // delete group memberships beloging to this group 
     
    10199                $form->addInput('hidden', 'commit', 'y'); 
    102100                $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>')); 
    104102                // 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)) { 
    107124                        // 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>', '&nbsp;', '<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>', '&nbsp;', '<td><a href="' . $F->link('permissions') . 'id=' . $row['id'] . '">' . $LANG['Edit'] . '</a></td>', '<td>' . $_col5 . '</td>')); 
    109126                    } else { 
    110127                        // admin defined groups 
     
    114131                        } 
    115132                        $_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>')); 
    117134                    } 
    118135                } 
  • trunk/admin/classes/pages/Moderators.php

    r279 r307  
    5353                    $_invalid = Array(); 
    5454                    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); 
    5759                        if ($q->execute() && $row2 = $q->fetchObject()) { 
     60                            // valid 
    5861                            $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; 
    6663                        } else { 
    6764                            // invalid 
  • trunk/admin/classes/pages/Permissions.php

    r305 r307  
    3131     **/ 
    3232    public function __construct() { 
    33         global $LANG, $C, $F, $SETTINGS, $LANG, $STATUS; 
     33        global $LANG, $C, $F, $SETTINGS, $LANG, $DEFAULTGROUPS; 
    3434        global $INPUT; 
    3535        // define location and title parameter 
     
    3838        // call parent constructor (general HTML 'skeleton') 
    3939        parent::__construct(TRUE); 
    40         // define 'standard' groups 
    41         $_def_groups = array_keys($STATUS); 
    4240        // define pages to exclude (these are mostly those which have forum-specific rights assigned 
    4341        $_exclude_pages = Array('Page', 'Category', 'Forum', 'Topic', 'Newpoll', 'Reply', 'Moderate', 'Newtopic'); 
     
    137135                    $this->html->body->addChild('br'); 
    138136                    $this->html->body->addChild('div', $LANG['help_editing_permissions']); 
    139                     if (in_array($row->name, $_def_groups)) { 
     137                    if (in_array($row->name, $DEFAULTGROUPS)) { 
    140138                        $this->html->body->addChild('br'); 
    141139                        $this->html->body->addChild('div', $LANG['warning_editing_permissions_of_default_group']); 
  • trunk/admin/index.php

    r291 r307  
    6262require_once($SETTINGS['fspath'] . 'includes/config/memberstages.php'); 
    6363 
     64// default usergroups 
     65require_once($SETTINGS['fspath'] . 'includes/config/defaultgroups.php'); 
     66 
    6467// cryptography module 
    6568require_once($SETTINGS['fspath'] . 'includes/config/crypt.php'); 
  • trunk/classes/misc/Member.php

    r302 r307  
    3434    private $avatar; 
    3535    private $status; 
     36    private $banned; 
    3637    private $stage; 
    3738    private $posts; 
     
    107108                } 
    108109                $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                } 
    110115                $this->homepage = $row->memberhomepage; 
    111116                $this->registration = $row->registered; 
     
    137142                    $_i++; 
    138143                } 
     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; 
    139152            } else { 
    140153                // member hasn't been found - deleted member 
     
    166179    public function getPostside() { 
    167180        // language, formatting 
    168         global $LANG, $F, $STATUS, $SETTINGS; 
     181        global $LANG, $F, $SETTINGS; 
    169182        // output 
    170183        $_s = '<div><strong><a href="' . $F->link('profile') . 'id=' . $this->id . '">' . $this->name . '</a></strong></div>'; 
     
    176189        // translate status 
    177190        $_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]; 
    180193        } 
    181194        else { 
     
    341354     **/ 
    342355    public function getStatus($translated = FALSE) { 
    343         global $STATUS
     356        global $LANG
    344357        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]; 
    347360            } else { 
    348361                $_s = $this->status; 
     
    354367        } 
    355368    } /* 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 */ 
    356379 
    357380    /* get registration date */ 
     
    379402    public function getProfile() { 
    380403        // language, formatting 
    381         global $LANG, $STATUS, $F
     404        global $LANG, $F, $C, $SETTINGS
    382405        // assemble info table 
    383406        $table = new Table('blind'); 
    384407        $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)); 
    391427        $table->addRow(Array($LANG['E-Mail'] . ':', '<td><a href="' . $F->link('mail') . 'id=' . $this->id . '">' . $LANG['Send'] . '</a></td>')); 
    392428        $table->addRow(Array($LANG['Message'] . ':', '<td><a href="' . $F->link('messenger') . 'action=send&amp;id=' . $this->id . '">' . $LANG['Send'] . '</a></td>')); 
     
    848884                     * 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 */ 
    849885                    @$C->query('LOCK TABLES ' . $SETTINGS['dbtableprefix'] . 'members WRITE'); 
    850                     $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'members (membername, memberemail, memberpassword, registered, memberstatus, 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)'); 
    851887                    $_t = new DateTime('now', new DateTimeZone('UTC')); 
    852888                    $q->bindParam(':user', $username, PDO::PARAM_STR); 
     
    855891                    $q->bindValue(':pw', '*', PDO::PARAM_STR); 
    856892                    $q->bindParam(':ts', $_t->format('Y-m-d H:i:s'), PDO::PARAM_STR, 19); 
    857                     $q->bindValue(':member', 'Member', PDO::PARAM_STR); 
    858893                    $q->bindValue(':avatar', 'images/spacer.gif', PDO::PARAM_STR); 
    859894                    $q->execute(); 
  • trunk/classes/misc/Post.php

    r287 r307  
    333333                    } else { 
    334334                        // member authenticated 
    335                         $q = $C->prepare('SELECT memberid, membername, memberemail, memberstatus FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id'); 
     335                        $q = $C->prepare('SELECT memberid, membername, memberemail, banned FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id'); 
    336336                        $q->bindParam(':id', $_SESSION['memberid'], PDO::PARAM_INT, 12); 
    337337                        $s = $q->execute(); 
     
    340340                            $q = NULL; 
    341341                            // check if he's banned 
    342                             if ($row->memberstatus != 'Banned') { 
     342                            if ($row->banned != 0) { 
    343343                                $INPUT['email'] = $row->memberemail; 
    344344                                // set flag for 'registered member' 
  • trunk/classes/pages/Members.php

    r213 r307  
    5252                    $orderdb = 'membername ASC'; 
    5353                break; 
    54                 case 'status': 
    55                     $orderdb = 'memberstatus ASC'; 
    56                 break; 
    5754                case 'posts': 
    5855                    /* the total posts of a member are listed in the members table; 
     
    8885                $table = new Table(); 
    8986                // column headers with links to order table 
    90                 $table->addHeaderRow(Array('&nbsp;', '<th><a href="' . $F->link('members') . 'order=name&amp;page=' . $INPUT['page'] . '">' . $LANG['Username'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=status&amp;page=' . $INPUT['page'] . '">' . $LANG['Status'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=posts&amp;page=' . $INPUT['page'] . '">' . $LANG['Posts'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=registered&amp;page=' . $INPUT['page'] . '">' . $LANG['Registration'] . '</a></th>')); 
     87                $table->addHeaderRow(Array('&nbsp;', '<th><a href="' . $F->link('members') . 'order=name&amp;page=' . $INPUT['page'] . '">' . $LANG['Username'] . '</a></th>', '<th>' . $LANG['Status'] . '</th>', '<th><a href="' . $F->link('members') . 'order=posts&amp;page=' . $INPUT['page'] . '">' . $LANG['Posts'] . '</a></th>', '<th><a href="' . $F->link('members') . 'order=registered&amp;page=' . $INPUT['page'] . '">' . $LANG['Registration'] . '</a></th>')); 
    9188                // display members 
    9289                $i = $start + 1; 
  • trunk/classes/pages/Messenger.php

    r271 r307  
    232232                    if ($ok === 1) { 
    233233                        // check if user's account is banned 
    234                         $q = $C->prepare('SELECT memberstatus FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id'); 
     234                        $q = $C->prepare('SELECT banned FROM ' . $SETTINGS['dbtableprefix'] . 'members WHERE memberid=:id'); 
    235235                        $q->bindParam(':id', $_SESSION['memberid'], PDO::PARAM_INT, 12); 
    236236                        $q->execute(); 
    237                         $_status = $q->fetchColumn(); 
    238                         $q = NULL; 
    239                         if ($_status == 'Banned') { 
     237                        $_banned = $q->fetchColumn(); 
     238                        $q = NULL; 
     239                        if ($_banned != 0) { 
    240240                            $ok = -1; 
    241241                            $_error = $LANG['error_banned_username']; 
  • trunk/db/data.sql

    r222 r307  
    353353INSERT INTO %prefix%rights_default VALUES('Who_is_online',5,0,0); 
    354354 
    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); 
     355INSERT INTO %prefix%usergroups VALUES(1,'Admin',0,1); 
     356INSERT INTO %prefix%usergroups VALUES(2,'Global Moderator',0,2); 
     357INSERT INTO %prefix%usergroups VALUES(3,'Moderator',0,3); 
     358INSERT INTO %prefix%usergroups VALUES(4,'Member',0,4); 
     359INSERT INTO %prefix%usergroups VALUES(5,'Guest',0,5); 
  • trunk/db/mysql.sql

    r298 r307  
    7070  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
    7171  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 
    7374) CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
    7475 
     
    8182  memberavatar VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    8283  memberpassword VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    83   memberstatus VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    8484  memberposts INTEGER NOT NULL DEFAULT 0, 
    8585  location VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL, 
     
    100100  attachments INTEGER NOT NULL DEFAULT 0, 
    101101  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 
    103104) CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
    104105 
     
    152153CREATE INDEX idx_posts_poster ON %prefix%posts (poster ASC, posttime DESC); 
    153154CREATE INDEX idx_members_membername ON %prefix%members (membername ASC); 
    154 CREATE INDEX idx_members_memberstatus ON %prefix%members (memberstatus ASC); 
    155155CREATE INDEX idx_members_memberposts ON %prefix%members (memberposts DESC); 
    156156CREATE INDEX idx_members_registered ON %prefix%members (registered ASC); 
  • trunk/db/postgresql.sql

    r298 r307  
    7070  id SERIAL PRIMARY KEY, 
    7171  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 
    7374); 
    7475 
     
    8182  memberavatar VARCHAR(255) NOT NULL, 
    8283  memberpassword VARCHAR(255) NOT NULL, 
    83   memberstatus VARCHAR(255) NOT NULL, 
    8484  memberposts INTEGER NOT NULL DEFAULT 0, 
    8585  location VARCHAR(255) NULL, 
     
    100100  attachments INTEGER NOT NULL DEFAULT 0, 
    101101  timezone VARCHAR(8) NULL, 
    102   encoffset INTEGER NULL 
     102  encoffset INTEGER NULL, 
     103  banned INTEGER NOT NULL DEFAULT 0 
    103104); 
    104105 
     
    152153CREATE INDEX idx_posts_poster ON %prefix%posts (poster ASC, posttime DESC); 
    153154CREATE INDEX idx_members_membername ON %prefix%members (membername ASC); 
    154 CREATE INDEX idx_members_memberstatus ON %prefix%members (memberstatus ASC); 
    155155CREATE INDEX idx_members_memberposts ON %prefix%members (memberposts DESC); 
    156156CREATE INDEX idx_members_registered ON %prefix%members (registered ASC); 
  • trunk/db/sqlite.sql

    r298 r307  
    7070  id INTEGER PRIMARY KEY AUTOINCREMENT, 
    7171  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 
    7374); 
    7475 
     
    8182  memberavatar VARCHAR(255) NOT NULL, 
    8283  memberpassword VARCHAR(255) NOT NULL COLLATE BINARY, 
    83   memberstatus VARCHAR(255) NOT NULL COLLATE NOCASE, 
    8484  memberposts INTEGER NOT NULL DEFAULT 0, 
    8585  location VARCHAR(255) NULL COLLATE NOCASE, 
     
    100100  attachments INTEGER NOT NULL DEFAULT 0, 
    101101  timezone VARCHAR(8) NULL COLLATE NOCASE, 
    102   encoffset INTEGER NULL 
     102  encoffset INTEGER NULL, 
     103  banned INTEGER NOT NULL DEFAULT 0 
    103104); 
    104105 
     
    152153CREATE INDEX idx_posts_poster ON %prefix%posts (poster ASC, posttime DESC); 
    153154CREATE INDEX idx_members_membername ON %prefix%members (membername ASC); 
    154 CREATE INDEX idx_members_memberstatus ON %prefix%members (memberstatus ASC); 
    155155CREATE INDEX idx_members_memberposts ON %prefix%members (memberposts DESC); 
    156156CREATE INDEX idx_members_registered ON %prefix%members (registered ASC); 
  • trunk/includes/input.php

    r292 r307  
    3636    $not[] = 'LANG'; 
    3737    $not[] = 'RULES'; 
    38     $not[] = 'STATUS'; 
     38    $not[] = 'DEFAULTGROUPS'; 
    3939    // 'de-register' all local names of global variables 
    4040    foreach ($_SERVER as $key=>$val) { 
     
    10271027if (isset($_POST['status']) && $_POST['status'] != '') { 
    10281028    $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) { 
    10341030        $WARNINGS[] = str_replace('%var%', 'status', $LANG['warning_input']); 
    10351031        unset($INPUT['status']); 
  • trunk/includes/lang/de.php

    r299 r307  
    3636$RULES[5] = 'Es gibt keine Regel Nr. 6'; 
    3737 
    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  
    4738$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'; 
    4847 
    4948/* single words */ 
  • trunk/includes/lang/en.php

    r299 r307  
    3737$RULES[5] = 'There is nooooo rule 6'; 
    3838 
    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  
    4839$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'; 
    4948 
    5049/* single words */ 
  • trunk/index.php

    r291 r307  
    5959require_once($SETTINGS['fspath'] . 'includes/config/memberstages.php'); 
    6060 
     61// default usergroups 
     62require_once($SETTINGS['fspath'] . 'includes/config/defaultgroups.php'); 
     63 
    6164// cryptography module 
    6265require_once($SETTINGS['fspath'] . 'includes/config/crypt.php'); 
  • trunk/install.php

    r291 r307  
    258258                            } 
    259259                            // 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)'); 
    261261                            $_t = new DateTime('now', new DateTimeZone('UTC')); 
    262262                            $q->bindParam(':name', $SETUPDATA['forumadmin'], PDO::PARAM_STR); 
     
    265265                            $q->bindValue(':password', '*', PDO::PARAM_STR); 
    266266                            $q->bindParam(':registered', $_t->format('Y-m-d H:i:s'), PDO::PARAM_STR, 19); 
    267                             $q->bindValue(':status', 'Admin', PDO::PARAM_STR); 
    268267                            $q->execute(); 
    269268                            // get id of admin