vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=4)
-   -   [RELEASE v2.x.x] Moderators Being able to control Accessmasks via MODCP (https://vborg.vbsupport.ru/showthread.php?t=27724)

merk 09-08-2001 10:00 PM

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 ;)

merk 09-09-2001 03:05 AM

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!

DarkReaper 09-09-2001 03:09 AM

Yay! You think you could shove that in a text file though? :)

merk 09-09-2001 03:12 AM

I didnt even think of that ;)

Too late now anyway :(

Oh well! :p

DarkReaper 09-09-2001 03:21 AM

n/t

merk 09-09-2001 03:33 AM

Thanks buddy

Pie'oh'pah 09-10-2001 01:42 AM

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' :D) to their internal forums.

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

-Alex

merk 09-10-2001 03:27 AM

Thats exactly why i wrote it :)

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

merk 09-10-2001 06:09 AM

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)

Pie'oh'pah 09-10-2001 04:15 PM

Hey,

are you in some kind of temporal flux??

Your timeline seems not to be the same as mine :D

-Alex

merk 09-11-2001 10:55 AM

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 


Pie'oh'pah 09-11-2001 12:55 PM

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

Pie'oh'pah 09-11-2001 01:45 PM

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

merk 09-12-2001 07:36 AM

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... ;)

Scott MacVicar 09-12-2001 05:48 PM

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.

DarkReaper 09-13-2001 12:37 AM

Quote:

Originally posted by PPN
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.

Please post it! :)

The Prohacker 09-13-2001 01:15 AM

I am reposting the text file, with the updated code, and I have added the sql query you should execute to create this field.....

merk 09-13-2001 05:57 AM

Thanks heaps Prohacker.

I couldnt be bothered making one :)

Pie'oh'pah 09-15-2001 03:53 PM

Quote:

Originally posted by merk
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... ;)

That is ok, man.

Regarding the other prob, displaying blank screen when 'List Users Access per Forum'.... anything??

-Alex

Scott MacVicar 09-15-2001 06:06 PM

This is the version i have been using on my forums for past couple of months.

Editing access masks is added to the find feature within /mod/user.php it follows same principles as the ban mod features. People with admin and super mod privledges for the usergroup can edit all forum access masks.

If someone is a moderator by inheritance they can also edit all the forums they are entitled to.

Hope this helps some people.

DarkReaper 09-15-2001 06:08 PM

swank. Installing...

DarkReaper 09-15-2001 06:23 PM

A small problem I ran into during the install:

Quote:

open /mod/user.php
---------------------------------------
on line 145 below
<a href="user.php?s=<?php echo $session[sessionhash]; ?>&action=find"> View </a> |
add
<a href="user.php?s=<?php echo $session[sessionhash]; ?>&action=find"> Edit Acess Masks </a>

Upload all 3 files now and your done. Mods can now edit access masks for a user if their
usergroup has permission to and the forum allows them to.
and
It should be:

Quote:

open /mod/index.php
---------------------------------------
on line 145 find

<a href="user.php?s=<?php echo $session[sessionhash]; ?>&action=find"> View </a> |

replace with

<a href="user.php?s=<?php echo $session[sessionhash]; ?>&action=find"> View </a> |
<a href="user.php?s=<?php echo $session[sessionhash]; ?>&action=find"> Edit Acess Masks </a>

Upload all 4 files now and you're done. Mods can now edit access masks for a user if their
usergroup has permission to and the forum allows them to.

DarkReaper 09-15-2001 07:04 PM

Didn't work. When they go to "Edit access masks" it says "you do not have permission to do this!"

Scott MacVicar 09-15-2001 07:24 PM

Did you enable it for hte usergroup?

DarkReaper 09-15-2001 07:53 PM

No, I enabled it for the forum itself.

I set the following option to "yes" for the forum:
Quote:

Allow people who moderate this forum to remove user's access
Using usergroups for moderators is a pain, and it was removed from vB a few versions ago...

Scott MacVicar 09-15-2001 07:57 PM

you need to enable it for the usergroup as well as the forum.

its a usergroup permission

DarkReaper 09-15-2001 07:58 PM

Hm...if I enable it for "Registered" users, will all users then be able to do it? Or only those who are moderators of specific forums?

Scott MacVicar 09-15-2001 10:11 PM

Nope, it wouldn't.

Cause of the
if (!$perms[ismoderator] and !$ismod=$DB_site->query_first("SELECT * FROM moderator WHERE userid=$bbuserinfo[userid]")) {
echo "<p>You do not have permission to do this!</p>";
exit;
}

stops people from doing this. its all throughout the mod control panel.

DarkReaper 09-16-2001 04:07 AM

It still doesn't work. I've given the usergroup the user is in access to modify the access masks as well as specifying this in the forum settings and making him a moderator. It still says "You do not have permission to do this"

Scott MacVicar 09-16-2001 10:33 AM

if your getting that error, you shouldn't be able to even do a search on someone as it uses the exact same code that is in searching, banning and viewing a user's details.

PHP Code:

if (!$perms[ismoderator] and !$ismod=$DB_site->query_first("SELECT * FROM moderator WHERE userid=$bbuserinfo[userid]")) {
    echo 
"<p>You do not have permission to do this!</p>";
    exit;
  } 


Martz 09-16-2001 04:25 PM

I have the same problem:

Usergroup enabled: Yes
Forum Enabled: Yes

"You do not have permission to do this" I've spent a few hours making sure everything you had said is correctly done, or at least I hope it is.

I also noticed the error at the end of the file which Darkreaper mentioned.

Thanks

DarkReaper 09-19-2001 06:33 PM

Well..? Why isn't this working?

Scott MacVicar 09-19-2001 08:44 PM

I recently formatted and install Win 2k, so sorry for not replying. I will try and install it on a fresh vbulletin and see if i get the same error. Hopefully I won't.

Last question, does your admin usergroup also have super moderator set to yes, as I'm presumming your testing this as the admin user.

DarkReaper 09-19-2001 09:25 PM

I was testing using the account of a regular forum user who I had set to be able to do this.

Well...I just tested it with my account and it worked fine. You mentioned being a super moderator. Do I have to enable this for the person/category for it to work?

I think I remember you mentioning having a hack that allows moderators to be given the ability to change the styles for their forums. Do you? Or is that someone else?

merk 09-19-2001 11:12 PM

This hack is for allowing moderators to give access to the forums they moderate(or take.)

The styles hack for moderators is coming, but its more complex, and im adding more options for control.

DarkReaper 09-20-2001 02:16 AM

Quote:

Originally posted by merk
This hack is for allowing moderators to give access to the forums they moderate(or take.)

The styles hack for moderators is coming, but its more complex, and im adding more options for control.

I was referring to PPN's version of the hack. :)

merk 09-20-2001 02:44 AM

Ah, okay :D

Scott MacVicar 09-20-2001 06:26 AM

No, the user only has to be a moderator of a forum and if they are also a super mod then they will show all forums. If you wish to enable it for people who are not moderators then it would involve editing of everything within the vBulletin mod panel.

Scott

DarkReaper 09-20-2001 10:54 AM

I made the person a moderator, enabled it for his usergroup, and enabled it for his forum, and it still doesn't work.

DarkReaper 09-23-2001 01:23 AM

PHP Code:

  if (!$perms[ismoderator] and !$ismod=$DB_site->query_first("SELECT * FROM moderator WHERE userid=$bbuserinfo[userid] AND (canbanusers=1 OR canviewprofile=1)")) { 

Shouldn't something be done so you can throw a "OR caneditaccess=1" in there and make it work? As it is a user must have banning or profile viewing permissions for it to work.


All times are GMT. The time now is 04:45 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01621 seconds
  • Memory Usage 1,959KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (26)bbcode_php_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete