Changeset 9

Show
Ignore:
Timestamp:
2007-11-21 19:14:26 (5 years ago)
Author:
hannes
Message:
  • User Panel added in the place of 'Edit Profile' page (ticket #4)
  • changed thread subscription model
Files:

Legend:

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

    r1 r9  
    181181                        $q->bindParam(':id', $id, PDO::PARAM_INT, 12); 
    182182                        $q->execute(); 
     183                        // delete subscriptions 
     184                        $q = $C->prepare('DELETE FROM ' . $SETTINGS['dbtableprefix'] . 'subscriptions WHERE member = :id'); 
     185                        $q->bindParam(':id', $id, PDO::PARAM_INT, 12); 
     186                        $q->execute(); 
     187                        // done 
    183188                        $div = $this->html->body->addChild('div', $LANG['member_deleted']); 
    184189                        $div->addAttribute('id', 'admin_main'); 
  • trunk/classes/misc/Member.php

    r8 r9  
    597597                return $_permit; 
    598598            } elseif ($page == 'Reply' || $page == 'Newtopic' || $page == 'Newpoll') { 
     599                if ($page == 'Reply') { 
     600                    // $id is given as topic id, but forum id is required 
     601                    $q2 = $C->prepare('SELECT forum FROM ' . $SETTINGS['dbtableprefix'] . 'topics WHERE topicid=:id'); 
     602                    $q2->bindParam(':id', $id, PDO::PARAM_INT, 12); 
     603                    $q2->execute(); 
     604                    $row = $q2->fetchObject(); 
     605                    $id = $row->forum; 
     606                } 
    599607                // check for each of the user's groups 
    600608                foreach ($_groups as $key=>$val) { 
  • trunk/classes/misc/Post.php

    r1 r9  
    372372                            $q->execute(); 
    373373                            // topic subscription 
    374                             $q = $C->prepare('SELECT subscribed FROM ' . $SETTINGS['dbtableprefix'] . 'topics WHERE topicid=:id'); 
     374                            if (isset($_SESSION['memberid']) && $_SESSION['memberid'] > 0) { 
     375                                // delete previous subscription of this member (if there was any) 
     376                                $q = $C->prepare('DELETE FROM ' . $SETTINGS['dbtableprefix'] . 'subscriptions WHERE topic = :topic AND member = :member'); 
     377                                $q->bindParam(':topic', $reply, PDO::PARAM_INT, 12); 
     378                                $q->bindParam(':member', $_SESSION['memberid'], PDO::PARAM_INT, 12); 
     379                                $q->execute(); 
     380                                // if subscription flag set, insert 
     381                                if ($subscribe == '1') { 
     382                                    $q = $C->prepare('INSERT INTO ' . $SETTINGS['dbtableprefix'] . 'subscriptions (topic, member) VALUES (:topic, :member)'); 
     383                                    $q->bindParam(':topic', $reply, PDO::PARAM_INT, 12); 
     384                                    $q->bindParam(':member', $_SESSION['memberid'], PDO::PARAM_INT, 12); 
     385                                    $q->execute(); 
     386                                } 
     387                            } 
     388                            /* 
     389                            $q = $C->prepare('SELECT member FROM ' . $SETTINGS['dbtableprefix'] . 'subscriptions WHERE topic=:id'); 
    375390                            $q->bindParam(':id', $reply, PDO::PARAM_INT, 12); 
    376391                            $q->execute(); 
    377                             $row = $q->fetchObject(); 
    378                             $subscribed = explode(',', $row->subscribed); 
     392                            $subscribed = Array(); 
     393                            while ($row = $q->fetchObject()) { 
     394                                $subscribed[] = $row->member; 
     395                            } 
    379396                            // check if this user has already been subscribed 
    380397                            $found = 0; 
     
    409426                                $q->execute(); 
    410427                            } 
     428                            */ 
    411429                            // get last page of topic 
    412430                            $q = $C->prepare('SELECT COUNT(postid) FROM ' . $SETTINGS['dbtableprefix'] . 'posts WHERE topic=:id'); 
  • trunk/classes/pages/Page.php

    r8 r9  
    5252        $this->exec_time_start = microtime(TRUE); 
    5353        /* Have some kind of manual per-page login credentials been posted? 
    54          * This shouldn't be checked on 'Editprofile' page, because there is a special handling of that there. */ 
    55         if ($show != 'editprofile' && isset($user) && $user != '' && isset($password) && $password !='') { 
     54         * This shouldn't be checked on 'Userpanel' page, because there is a special handling of that there. */ 
     55        if ($show != 'userpanel' && isset($user) && $user != '' && isset($password) && $password !='') { 
    5656            if (Member::authenticate($user, $password)) { 
    5757                // authenticated for this step 
     
    183183            } 
    184184            // the rest is always the same 
    185             $_str .= '<a href="' . $F->link('editprofile') . '">' . $LANG['Profile'] . '</a> <a href="' . $F->link('messenger') . '">' . $LANG['Messenger'] . '</a> <a href="redirectors/markasread.php">' . $LANG['Mark_as_read'] . '</a></div>'; 
     185            $_str .= '<a href="' . $F->link('userpanel') . '">' . $LANG['User_Panel'] . '</a> <a href="' . $F->link('messenger') . '">' . $LANG['Messenger'] . '</a> <a href="redirectors/markasread.php">' . $LANG['Mark_as_read'] . '</a></div>'; 
    186186            $_span = new XMLElement($_str); 
    187187            $div->addElement($_span); 
     
    190190        $this->locationbar = $this->html->body->addChild('div'); 
    191191        $this->locationbar->addAttribute('id', 'location'); 
     192        // user panel menu 
     193        if ($show == 'userpanel') { 
     194            $this->html->body->addChild('h2', $LANG['User_Panel']); 
     195            $div = $this->html->body->addChild('div'); 
     196            $div->addAttribute('class', 'message'); 
     197            $div->addAttribute('align', 'center'); 
     198            $_str = '<span><a href="' . $F->link('userpanel') . 'action=password">' . $LANG['Password'] . '</a> - <a href="' . $F->link('userpanel') . 'action=email">' . $LANG['E-Mail'] . '</a> - <a href="' . $F->link('userpanel') . 'action=profile">' . $LANG['Profile'] . '</a> - <a href="' . $F->link('userpanel') . 'action=subscriptions">' . $LANG['Subscriptions'] . '</a> - <a href="' . $F->link('userpanel') . 'action=groups">' . $LANG['User_Groups'] . '</a></span>'; 
     199            $div->addElement(new XMLElement($_str)); 
     200        } 
    192201    } /* constructor */ 
    193202 
  • trunk/classes/pages/Register.php

    r1 r9  
    127127                            @mail($email, $SETTINGS['forumname'] . ' - ' . $LANG['Registration'], str_replace('%password%', $p->get(), $LANG['welcome_mail']), 'From: ' . $SETTINGS['forumadminemail']); 
    128128                            $div = $this->html->body->addChild('div', $LANG['registration_success']); 
    129                             $div->addAttribute('message'); 
     129                            $div->addAttribute('class', 'message'); 
    130130                        } 
    131131                    } else { 
  • trunk/classes/pages/Reply.php

    r1 r9  
    7070                // default: not previously subscribed 
    7171                $subscribed = FALSE; 
    72                 if ($SESSION['memberid'] > 0) { 
     72                if ($_SESSION['memberid'] > 0) { 
    7373                    // check if member is subscribed to topic 
    74                     $q = $C->prepare('SELECT subscribed FROM ' . $SETTINGS['dbtableprefix'] . 'topics WHERE topicid=:id'); 
     74                    $q = $C->prepare('SELECT COUNT(*) FROM ' . $SETTINGS['dbtableprefix'] . 'subscriptions WHERE topic = :id AND member = :member'); 
    7575                    $q->bindParam(':id', $id, PDO::PARAM_INT, 12); 
     76                    $q->bindParam(':member', $_SESSION['memberid'], PDO::PARAM_INT, 12); 
    7677                    $q->execute(); 
    77                     $row3 = $q->fetchObject(); 
    78                     $_subscribers = explode(',', $row3->subscribed); 
    79                     if (in_array($SESSION['memberid'], $_subscribers)) { 
    80                         // previous subscription found 
     78                    if ($q->fetchColumn() == 1) { 
    8179                        $subscribed = TRUE; 
    8280                    } 
  • trunk/db/spamboard.sql

    r7 r9  
    6464  closed INTEGER NOT NULL DEFAULT 0, 
    6565  pinned INTEGER NOT NULL DEFAULT 0, 
    66   subscribed TEXT NOT NULL, 
    6766  poll INTEGER NOT NULL DEFAULT 0, 
    6867  topic_views INTEGER NOT NULL, 
     
    9998INSERT INTO "sb_rights" VALUES('Calendar',4,1,1); 
    10099INSERT INTO "sb_rights" VALUES('Calendar',5,1,1); 
    101 INSERT INTO "sb_rights" VALUES('Editprofile',1,1,1); 
    102100INSERT INTO "sb_rights" VALUES('Register',1,1,1); 
    103101INSERT INTO "sb_rights" VALUES('Register',2,1,1); 
    104102INSERT INTO "sb_rights" VALUES('Register',4,1,1); 
    105103INSERT INTO "sb_rights" VALUES('Register',5,1,1); 
    106 INSERT INTO "sb_rights" VALUES('Editprofile',2,1,1); 
    107 INSERT INTO "sb_rights" VALUES('Editprofile',4,1,1); 
    108 INSERT INTO "sb_rights" VALUES('Editprofile',5,0,0); 
    109104INSERT INTO "sb_rights" VALUES('Members',1,1,0); 
    110105INSERT INTO "sb_rights" VALUES('Members',2,1,0); 
     
    204199INSERT INTO "sb_rights" VALUES('Calendar',3,1,1); 
    205200INSERT INTO "sb_rights" VALUES('Register',3,1,1); 
    206 INSERT INTO "sb_rights" VALUES('Editprofile',3,1,1); 
    207201INSERT INTO "sb_rights" VALUES('Members',3,1,0); 
    208202INSERT INTO "sb_rights" VALUES('Search',3,1,1); 
     
    233227INSERT INTO "sb_rights" VALUES('Uploadavatar',4,1,1); 
    234228INSERT INTO "sb_rights" VALUES('Uploadavatar',5,0,0); 
     229INSERT INTO "sb_rights" VALUES('Userpanel',1,1,1); 
     230INSERT INTO "sb_rights" VALUES('Userpanel',2,1,1); 
     231INSERT INTO "sb_rights" VALUES('Userpanel',3,1,1); 
     232INSERT INTO "sb_rights" VALUES('Userpanel',4,1,1); 
     233INSERT INTO "sb_rights" VALUES('Userpanel',5,0,0); 
    235234 
    236235CREATE TABLE sb_rights_default ( 
     
    258257INSERT INTO "sb_rights_default" VALUES('Calendar',4,1,1); 
    259258INSERT INTO "sb_rights_default" VALUES('Calendar',5,1,1); 
    260 INSERT INTO "sb_rights_default" VALUES('Editprofile',1,1,1); 
    261259INSERT INTO "sb_rights_default" VALUES('Register',1,1,1); 
    262260INSERT INTO "sb_rights_default" VALUES('Register',2,1,1); 
    263261INSERT INTO "sb_rights_default" VALUES('Register',4,1,1); 
    264262INSERT INTO "sb_rights_default" VALUES('Register',5,1,1); 
    265 INSERT INTO "sb_rights_default" VALUES('Editprofile',2,1,1); 
    266 INSERT INTO "sb_rights_default" VALUES('Editprofile',4,1,1); 
    267 INSERT INTO "sb_rights_default" VALUES('Editprofile',5,0,0); 
    268263INSERT INTO "sb_rights_default" VALUES('Members',1,1,0); 
    269264INSERT INTO "sb_rights_default" VALUES('Members',2,1,0); 
     
    363358INSERT INTO "sb_rights_default" VALUES('Calendar',3,1,1); 
    364359INSERT INTO "sb_rights_default" VALUES('Register',3,1,1); 
    365 INSERT INTO "sb_rights_default" VALUES('Editprofile',3,1,1); 
    366360INSERT INTO "sb_rights_default" VALUES('Members',3,1,0); 
    367361INSERT INTO "sb_rights_default" VALUES('Search',3,1,1); 
     
    392386INSERT INTO "sb_rights_default" VALUES('Uploadavatar',4,1,1); 
    393387INSERT INTO "sb_rights_default" VALUES('Uploadavatar',5,0,0); 
     388INSERT INTO "sb_rights_default" VALUES('Userpanel',1,1,1); 
     389INSERT INTO "sb_rights_default" VALUES('Userpanel',2,1,1); 
     390INSERT INTO "sb_rights_default" VALUES('Userpanel',3,1,1); 
     391INSERT INTO "sb_rights_default" VALUES('Userpanel',4,1,1); 
     392INSERT INTO "sb_rights_default" VALUES('Userpanel',5,0,0); 
    394393 
    395394CREATE TABLE sb_usergroups ( 
     
    446445    member INTEGER NOT NULL 
    447446); 
     447 
     448CREATE TABLE sb_subscriptions ( 
     449    topic INTEGER NOT NULL, 
     450    member INTEGER NOT NULL 
     451); 
  • trunk/includes/input.php

    r8 r9  
    461461$changegrouppublic = $_POST['changegrouppublic']; 
    462462if (is_array($changegrouppublic)) { 
    463     foreach ($changegrouppublic as $_public) { 
    464         if (preg_match('/^[1]?$/', $_public) != 1) { 
     463    foreach ($changegrouppublic as $key=>$_public) { 
     464        if (preg_match('/^[1]?$/', $_public) != 1 || preg_match('/^[0-9]+$/', $key) != 1) { 
    465465            die($LANG['error_input']); 
    466466        } 
     
    554554} 
    555555 
     556$subscribe = $_POST['subscribe']; 
     557if (preg_match('/^[0-1]?$/', $subscribe) != 1) { 
     558    die($LANG['error_input']); 
     559} 
     560 
     561$newsubscribed = $_POST['newsubscribed']; 
     562if (is_array($newsubscribed)) { 
     563    foreach ($newsubscribed as $key=>$val) { 
     564        if (preg_match('/^[0-9]+$/', $val) != 1 || preg_match('/^[0-9]+$/', $key) != 1) { 
     565            die($LANG['error_input']); 
     566        } 
     567    } 
     568} 
     569 
    556570?> 
  • trunk/includes/lang/en.php

    r8 r9  
    7272$LANG['none'] = 'none'; 
    7373$LANG['Profile'] = 'Profile'; 
     74$LANG['User_Panel'] = 'User Panel'; 
    7475$LANG['Forum'] = 'Forum'; 
    7576$LANG['Topic'] = 'Topic'; 
     
    184185$LANG['Suggestion'] = 'Suggestion'; 
    185186$LANG['Polls'] = 'Polls'; 
     187$LANG['Subscriptions'] = 'Subscriptions'; 
     188$LANG['Error'] = 'Error'; 
     189$LANG['Subscribed'] = 'Subscribed'; 
    186190 
    187191/* multi-word statements */ 
     
    301305$LANG['Filesystem_Path'] = 'Filesystem Path'; 
    302306$LANG['Webserver_Path'] = 'Webserver Path'; 
     307$LANG['New_Subscription'] = 'New Subscription'; 
    303308 
    304309/* actual sentences */ 
     
    370375$LANG['upload_avatar_hints'] = "<ul><li>File size must be smaller or equal 50KB</li><li>Width and height of the image mustn't exceed " . $SETTINGS['maxavatarsize'] . " pixels each</li><li>Allow file types are PNG, JPEG and GIF</li></ul>"; 
    371376$LANG['upload_avatar_success'] = 'Your avatar has been uploaded successfully. You can now safely close this window, then reload the page from which you opened it and the new file should appear in the list.'; 
     377$LANG['password_updated'] = 'Your password has been changed successfully.'; 
     378$LANG['email_changed'] = 'Your e-mail address has been changed successfully.'; 
     379$LANG['subscriptions_updated'] = 'Your subscriptions have been updated successfully.'; 
     380$LANG['group_memberships_updated'] = 'Your group memberships have been updated successfully.'; 
    372381 
    373382/* error messages */