Announcement

Collapse
No announcement yet.

[RELEASE v2.x.x] Moderators Being able to control Accessmasks via MODCP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [RELEASE v2.x.x] Moderators Being able to control Accessmasks via MODCP

    Description: Basically, this allows the moderator of a certain forum to add/take
    access to users via access masks, however it only allows it if
    the forum they moderate has that option enabled. It also
    lists what users have access to a specified forum.

    Please NOTE! If you dont use the Moderator Control Panel
    (forum/mod/) Then this hack probably wont work, sorry!


    Install:
    Step1: First off, you will need phpMyAdmin, or something similar to add a column to the 'forum' database. I suggest you read > http://vbulletin.com/forum/showthrea...threadid=18558 for instructions on how to install it.

    Once you get that installed, go to the forum table, and scroll down till you see 'Add new field :', put 1 in the box, choose 'At the end of the table' and click Go.

    Call the field, 'allowmodaccess', its type, 'smallint' and size, '6'(all without quotes of course), then also choose default, and make it 0(zero)

    Step2: Now comes the modding of forum.php in the AdminCP.

    Find at approximatly Line 120
    PHP Code:
      doformfooter("Save Forum");
    }

    // ###################### Start insert ####################### 
    Replace With

    PHP Code:
      //ADDED CODE
      
    maketableheader("Moderator Accessmask Options");

      
    makeyesnocode("Allow moderators of this forum to give/take access via the ModCP","modaccessmasks",0);
      
    //UNADDED CODE
      
    doformfooter("Save Forum");
    }

    // ###################### Start insert ####################### 
    Then, Find at Approx 124ish
    PHP Code:
      $DB_site->query("INSERT INTO forum
                          (forumid,styleid,title,description,active,displayorder,parentid,
                           parentlist,allowposting,cancontainthreads,daysprune,newpostemail,newthreademail,
                           moderatenew,allowhtml,allowbbcode,allowimages,allowsmilies,allowicons,
                           styleoverride,allowratings,countposts,moderateattach,allowmodaccess)
                       VALUES
                          (NULL,'
    $styleset','".addslashes($title)."','".addslashes($description)."','$isactive','$displayorder','$parentid',
                           '','
    $allowposting','$cancontainthreads','$daysprune','".addslashes($newpostemail)."','".addslashes($newthreademail)."',
                           '
    $moderatenew','$aallowhtmlcode','$aallowbbcode','$aallowimgcode','$aallowsmilies','$aallowicons',
                           '
    $styleoverride','$allowratings','$countposts','$moderateattach')"); 
    Replace With

    PHP Code:
      $DB_site->query("INSERT INTO forum
                          (forumid,styleid,title,description,active,displayorder,parentid,
                           parentlist,allowposting,cancontainthreads,daysprune,newpostemail,newthreademail,
                           moderatenew,allowhtml,allowbbcode,allowimages,allowsmilies,allowicons,
                           styleoverride,allowratings,countposts,moderateattach,allowmodaccess)
                       VALUES
                          (NULL,'
    $styleset','".addslashes($title)."','".addslashes($description)."','$isactive','$displayorder','$parentid',
                           '','
    $allowposting','$cancontainthreads','$daysprune','".addslashes($newpostemail)."','".addslashes($newthreademail)."',
                           '
    $moderatenew','$aallowhtmlcode','$aallowbbcode','$aallowimgcode','$aallowsmilies','$aallowicons',
                           '
    $styleoverride','$allowratings','$countposts','$moderateattach','$modaccessmasks')"); 
    Then Find at Approx line 230
    PHP Code:
      doformfooter("Save Changes");

    }

    // ###################### Start update ####################### 
    Replace With

    PHP Code:
      //ADDED CODE
      
    maketableheader("Moderator Accessmask Options");

      
    makeyesnocode("Allow moderators of this forum to give/take access via the ModCP","modaccessmasks",$forum[allowmodaccess]);
      
    //UNADDED CODE

      
    doformfooter("Save Changes");

    }

    // ###################### Start update ####################### 
    Then Find at approx line 250

    PHP Code:
      $DB_site->query("UPDATE forum
                       SET
                         styleid='
    $styleset', title='".addslashes($title)."', description='".addslashes($description)."',
                         active='
    $isactive', displayorder='$displayorder', parentid='$parentid', parentlist=$parentlist,
                         allowposting='
    $allowposting', cancontainthreads='$cancontainthreads', daysprune='$daysprune',
                         newpostemail='"
    .addslashes($newpostemail)."', newthreademail='".addslashes($newthreademail)."',
                         moderatenew='
    $moderatenew', allowhtml='$aallowhtmlcode', allowbbcode='$aallowbbcode',
                         allowimages='
    $aallowimgcode', allowsmilies='$aallowsmilies', allowicons='$aallowicons',
                         styleoverride='
    $styleoverride', allowratings='$allowratings', countposts='$countposts',
                         moderateattach='
    $moderateattach'
                       WHERE forumid='
    $forumid'"); 
    And replace with

    PHP Code:
      $DB_site->query("UPDATE forum
                       SET
                         styleid='
    $styleset', title='".addslashes($title)."', description='".addslashes($description)."',
                         active='
    $isactive', displayorder='$displayorder', parentid='$parentid', parentlist=$parentlist,
                         allowposting='
    $allowposting', cancontainthreads='$cancontainthreads', daysprune='$daysprune',
                         newpostemail='"
    .addslashes($newpostemail)."', newthreademail='".addslashes($newthreademail)."',
                         moderatenew='
    $moderatenew', allowhtml='$aallowhtmlcode', allowbbcode='$aallowbbcode',
                         allowimages='
    $aallowimgcode', allowsmilies='$aallowsmilies', allowicons='$aallowicons',
                         styleoverride='
    $styleoverride', allowratings='$allowratings', countposts='$countposts',
                         moderateattach='
    $moderateattach', allowmodaccess='$modaccessmasks'
                       WHERE forumid='
    $forumid'"); 
    Step3: Now we need to modify index.php in the /mod/ folder.

    Find at approx line 124
    PHP Code:
    <!--<tr><td>
    <table width="100%" border="0" cellspacing="0" cellpadding="2">
    <tr bgcolor="#3F3849"><td><font color="#BCB6CD">
    <b>Styles</b>
    </font></td></tr></table>
    <a href="style.php?s=<?php echo $session[sessionhash]; ?>&action=modify"> Edit </a>
    </td></tr>-->
    Replace With

    PHP Code:
    <tr><td>
    <table width="100%" border="0" cellspacing="0" cellpadding="2">
    <?php maketableheader("User Access Masks"); ?>
    </table>
    <a href="modaccessmasks.php?s=<?php echo $session[sessionhash]; ?>&action=select"> Add | Edit | List </a>
    </td></tr>
    Step4: Making modaccessmasks.php...

    Okay, this bit wont be easy :|

    Basically, make this file as below, however, there are a few bits your going to have to grab from user.php in the admin directory.(which i will explain down furthur)

    PHP Code:
    <?php
    error_reporting
    (7);

    require(
    "./global.php");

    cpheader();

    if (isset(
    $action)==0) {
      
    $action="select";
    }

    //////////#########***********Here>><<>><< You need to add code i specifiy down furthur.

    // ###################### Start Select Window Thing #####################
    if ($action=="select"){

        
    doformheader("modaccessmasks","editaccess");
        
    makehiddencode("action","editaccess");
        
    maketableheader("Access Granting For Forums","",0);
        echo 
    "<br>\n";
        
    makeinputcode("User Name(exact)","user_name");
        
        
    doformfooter("Edit User");
        echo 
    "<br>\n";
        
    doformheader("modaccessmasks","editaccess");
        
    makehiddencode("action","listusers");
        
    maketableheader("List Users Access per Forum","",0);
        echo 
    "<br>\n";
        
    makeinputcode("Forum ID","forumid");
        
        
    doformfooter("List Forums");
    }

    // ################## Start List of Access per forum ##########

    if ($action=="listusers") {
        
    $query "SELECT * FROM access ORDER BY userid";
        
    $passthruquery=$DB_site->query($query);
        while (
    $newsarray=$DB_site->fetch_array($passthruquery)) {
            
    $query2 "SELECT * FROM user WHERE userid=$newsarray[userid] LIMIT 1";
            
    $query3 "SELECT * FROM forum WHERE forumid=$newsarray[forumid] LIMIT 1";
            
    $passthruquery2=$DB_site->query($query2);
            
    $newsarray2=$DB_site->fetch_array($passthruquery2);
            
    $passthruquery3=$DB_site->query($query3);
            
    $newsarray3=$DB_site->fetch_array($passthruquery3);
            if(
    $newsarray[accessmask] == AND $newsarray[forumid] == $forumid ) { 
                echo 
    "$newsarray2[username] has access to $newsarray3[title]($newsarray[forumid])\n<br>";
            }
        }
    }

    cpfooter();
    ?>
    Open up user.php And look around line 358 for
    PHP Code:
    // ###################### Start Edit Access #######################

    if ($action=="editaccess") { 
    And copy from there down to >> to approx line 425
    PHP Code:
      echo "<p>User access updated successfully</p>";

      
    $action="modify";

    Put all that copy stuff into the above file, in the section thingo i specified.

    Now you need to mod that code.

    Step5: >>

    Find
    PHP Code:
    if ($action=="editaccess") { 
    Add immediatly below it

    PHP Code:
    if(!isset($userid)) {
    $username=$DB_site->query_first("SELECT userid FROM user WHERE username='$user_name'");
    $userid=$username[userid];

    Then Find
    PHP Code:
      doformheader("user","updateaccess");
      
    makehiddencode("userid","$userid"); 
    Replace With

    PHP Code:
      doformheader("modaccessmasks","updateaccess");
      
    makehiddencode("userid","$userid"); 
    I would recomend editing the below block of code, changing to description for your moderators.
    PHP Code:
    echo "<tr class='firstalt'><td c..... 
    Now, find
    PHP Code:
      maketableheader("Forum List");

      
    $forumlist=$DB_site->query("SELECT * FROM forum"); 
    Replace It with
    PHP Code:
      maketableheader("Forum List");
    ///modified code
    if($bbuserinfo[usergroupid]==OR $bbuserinfo[usergroupid]==6) {
        
    $forumlist=$DB_site->query("SELECT * FROM forum WHERE forum.allowmodaccess=1 ORDER BY forum.title");
    }
    else {
        
    $forumlist=$DB_site->query("SELECT moderator.userid,forum.title FROM moderator,forum WHERE moderator.forumid=forum.forumid AND moderator.userid=$bbuserinfo[userid] AND forum.allowmodaccess=1 ORDER BY forum.title");
    }
    //end modify 
    And Finally,

    Find
    PHP Code:
      echo "<p>User access updated successfully</p>";

      
    $action="modify"
    And Replace with
    PHP Code:
      echo "<p>User access updated successfully</p>";

        
    $action="select"

    Phew, you should be done. Now go into your AdminCP, and modify all the forums you wish your users to be able to change/add accessmasks to and at the bottom, choose 'yes' for allow mods to change access masks.

    To access it, go to http://yourforum.url/forumpath/mod/ login, and hit the Add | Edit | View button on the menu.

    Thats all Folks!

    PS Phew for the 12345 char limit
    Last edited by merk; Tue 11 Sep '01, 3:57am.

  • #2
    Sorry about the wrapping(or lack of it)

    It took too long to write, so im not going to bother going thru it all and fix it all up :|

    Hope you all enjoy it!

    PS, there is no demo, unless someone is willing to set one up. But it works, my moderators are using it as we read this!

    Comment


    • #3
      Yay! You think you could shove that in a text file though?
      Seriously! - The Definitive Home of All Things Serious
      Seriously! Forums

      To recieve support on these forums, enter your username here.

      Comment


      • #4
        I didnt even think of that

        Too late now anyway

        Oh well!

        Comment


        • #5
          n/t
          Seriously! - The Definitive Home of All Things Serious
          Seriously! Forums

          To recieve support on these forums, enter your username here.

          Comment


          • #6
            Thanks buddy

            Comment


            • #7
              Great man,

              this is exactly the stuff, i was lookin 4

              Running an Online Gaming Board its cool to give the mods of certain forums (mostly the 'Clanleaders') the possibility to add certain users (mostly 'Clanmembers' ) to their internal forums.

              Haven't installed it yet, but I guess this is it

              -Alex
              I want to express my deepest compassion to all who have lost their loved ones in the latest terroristic attack

              >> Nuke Bin Laden yourself here <<

              Webmaster NÐE | Webmaster UA Forums | ArtworX ECL | Admin DiGL | Hosted at RWH | Portfolio

              My Stylez
              Red Darkness | Velvet Night | Dreadful Cyan
              Goodiez
              Table bgcolor change on hover | Onlinestatus modifications | German Templates

                                             \\\ ///
                                              (ô ô)
              -------------------ooO-(_)-Ooo-----------------

              Comment


              • #8
                Thats exactly why i wrote it

                Ive almost finished another one that allows them to modify the specific forum colours as well

                Comment


                • #9
                  ERROR IN HACK

                  I have found an error.

                  I have many moderators who do not reside in the moderator usergroup.

                  Expect a workaround in about 2/3 hours.

                  Sorry! (that means only supermods and admins and mods who still reside in the mod usergroup can see it)

                  Comment


                  • #10
                    Hey,

                    are you in some kind of temporal flux??

                    Your timeline seems not to be the same as mine

                    -Alex
                    I want to express my deepest compassion to all who have lost their loved ones in the latest terroristic attack

                    >> Nuke Bin Laden yourself here <<

                    Webmaster NÐE | Webmaster UA Forums | ArtworX ECL | Admin DiGL | Hosted at RWH | Portfolio

                    My Stylez
                    Red Darkness | Velvet Night | Dreadful Cyan
                    Goodiez
                    Table bgcolor change on hover | Onlinestatus modifications | German Templates

                                                   \\\ ///
                                                    (ô ô)
                    -------------------ooO-(_)-Ooo-----------------

                    Comment


                    • #11
                      normal mods wouldnt see any forums, if they wernt in the moderator group, and even sometimes wouldnt show up at all.

                      simple SQL fix.

                      find
                      PHP Code:
                      maketableheader("Forum List");
                      //MODIFIED CODE//
                      if($bbuserinfo[usergroupid]==7){
                        
                      $forumlist=$DB_site->query("SELECT forum.*,moderator.userid,moderator.forumid FROM forum,moderator WHERE moderator.forumid=forum.forumid AND forum.allowmodaccess=1 AND moderator.userid=$bbuserinfo[userid] ORDER BY forum.title");
                      } elseif(
                      $bbuserinfo[usergroupid]==OR $bbuserinfo[usergroupid]==6) {
                      $forumlist=$DB_site->query("SELECT * FROM forum WHERE forum.allowmodaccess=1 ORDER BY forum.title");
                      }

                      //UNMODIFIED CODE// 
                      replace with

                      PHP Code:
                      maketableheader("Forum List");
                      ///modified code
                      if($bbuserinfo[usergroupid]==OR $bbuserinfo[usergroupid]==6) {
                          
                      $forumlist=$DB_site->query("SELECT * FROM forum WHERE forum.allowmodaccess=1 ORDER BY forum.title");
                      }
                      else {
                          
                      $forumlist=$DB_site->query("SELECT moderator.userid,forum.title FROM moderator,forum WHERE moderator.forumid=forum.forumid AND moderator.userid=$bbuserinfo[userid] AND forum.allowmodaccess=1 ORDER BY forum.title");
                      }
                      //end modify 

                      Comment


                      • #12
                        Hi there,

                        thanx again for this hack.

                        There is one problem I have though:

                        The Option 'List Users Access per Forum' leads to a blank screen, while the 'Access Granting For Forums' Option works perfectly

                        Any hints?

                        -Alex
                        I want to express my deepest compassion to all who have lost their loved ones in the latest terroristic attack

                        >> Nuke Bin Laden yourself here <<

                        Webmaster NÐE | Webmaster UA Forums | ArtworX ECL | Admin DiGL | Hosted at RWH | Portfolio

                        My Stylez
                        Red Darkness | Velvet Night | Dreadful Cyan
                        Goodiez
                        Table bgcolor change on hover | Onlinestatus modifications | German Templates

                                                       \\\ ///
                                                        (ô ô)
                        -------------------ooO-(_)-Ooo-----------------

                        Comment


                        • #13
                          And one more thing i noticed:

                          if a forum has subforums and the the moderator is only moderator of the subforums by inharitance, this mod will not be able to modify the subforums specifically.

                          -Alex
                          I want to express my deepest compassion to all who have lost their loved ones in the latest terroristic attack

                          >> Nuke Bin Laden yourself here <<

                          Webmaster NÐE | Webmaster UA Forums | ArtworX ECL | Admin DiGL | Hosted at RWH | Portfolio

                          My Stylez
                          Red Darkness | Velvet Night | Dreadful Cyan
                          Goodiez
                          Table bgcolor change on hover | Onlinestatus modifications | German Templates

                                                         \\\ ///
                                                          (ô ô)
                          -------------------ooO-(_)-Ooo-----------------

                          Comment


                          • #14
                            Good point, not that i really care about that much, it is a point.

                            If you want to go ahead and try and fix it, best bet would most probably be something along the lines of

                            looking for a forum with the forumid of XX, or looking for the forum with parentid CONTAINING XX. probably too complex for what i wrote the script for, but hey, if you want to fix it all up...

                            Comment


                            • #15
                              I have been using a hack similar to this for the past couple of months. But I also have the edit access masks as part of the UserGroup Permissions.

                              The inheritance also works for my version. I would have to try and remember what I done as I never bothered documenting it when i done it.

                              If anyone wishes it I will post it.
                              Scott MacVicar

                              My Blog | Twitter

                              Comment

                              widgetinstance 262 (Related Topics) skipped due to lack of content & hide_module_if_empty option.
                              Working...
                              X