Version: , by merk
Developer Last Online: Mar 2012
Version: Unknown
Rating:
Released: 09-18-2001
Last Update: Never
Installs: 9
No support by the author.
Purpose: I run many many forums(120+ including subcatagories) so i needed a more efficient way of controlling access masks(there is an infinite combination of usergroups if i was to use that method.)
So set about creating a better system.
For an example, view the attachment. (default setting=green, yes=red, no=blue).
Installation:
First, you need to open up adminfunctions.php in the /admin/ directory and add (just before the ?>)
PHP Code:
// ###################### Start makeoptioncode #######################
function makeoptioncode ($value="",$description, $selected="", $color="green") {
// similar to makeinputcode, only for a text area
// ###################### Start accessmasks function #######################
function accessmasks($parentid=-1) {
global $DB_site, $userid, $forumid;
$forums=$DB_site->query("SELECT forumid,title,displayorder FROM forum WHERE parentid=$parentid ORDER BY displayorder");
while ($forum=$DB_site->fetch_array($forums)) {
$accesslist=$DB_site->query_first("SELECT * FROM access WHERE userid='$userid' AND forumid='$forum[forumid]'");
if ( is_array($accesslist) )
{if ($accesslist['accessmask']==0)
{$sel = 0; $tempcolour="blue";}
elseif ($accesslist['accessmask']==1)
{$sel = 1; $tempcolour="red";}
else {$sel = -1; $tempcolour="green";}}
else
{$sel = -1; $tempcolour="green";}
echo "<li><div style=\"color:$tempcolour\"><b>$forum[title]</b>";
echo " > > > <SELECT name=\"accessupdate[".$forum['forumid']."]\" style=\"font-size: 7pt; background-color: #dfdfdf; font-family: Arial, Tahoma;\" maxlength=\"20\">";
makeoptioncode(1,"Yes",iif($sel==1,"selected",""),"red");
makeoptioncode(0,"No",iif($sel==0,"selected",""),"blue");
makeoptioncode(-1,"Default",iif($sel==-1,"selected",""),"green");
echo "</select></div>\n\n";
echo "<input type=\"hidden\" name=\"oldcache[".$forum['forumid']."]\" value=\"$sel\">";
echo "<ul>";
accessmasks($forum[forumid]);
echo "</ul>\n";
echo "</li>\n";
}}
// ###################### Start modify #######################
if ($action=="editaccess") {
$user=$DB_site->query_first("SELECT username FROM user WHERE userid='$userid'");
doformheader("user","updateaccess",0,0);
makehiddencode("userid","$userid");
echo "<div align=center><h3>User Forum Access for <i>$user[username]</i></h3></div>";
echo "<tr class='firstalt'><td colspan=2><p>Here you may edit forum access on a user-by-user basis.
<BR>Selecting \"yes\" will allow this user access to the forum. Selecting \"no\" will deny this user access to the forum. Any changes made to this user's account will override the default permission settings in their usergroup.
<br><br>Selecting \"default\" will revert this user to the default permissions settings for their usergroup.
<BR><br>(Please note that the permission inheritance system still works here)
<br><br>(Ensure that you have access masks enabled before attempting to use these!)</p></td></tr>\n";
echo "<br>";
echo "<ul>\n";
accessmasks(-1);
echo "</ul>\n";
doformfooter("Save Changes");
}
Thats it!
PS. Devlopers / Moderators - i wasnt sure if i copied and
pasted too much code in the above, well actually i rewrote most
of it, but based on your principles in the modify forums section. If
its too much, please feel free to delete it, but because i didnt
know...!
Demo Screenshot attached
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
Im adding features that contain options on what you will allow to be modified. Also making the code a bit neater.
However, because of the recent release of the Halflife 1108 patch, my server was taken down, in reflex action of my host, simply because i was hosting the files, and peaking at 3mb/sec(which is alot for a webserver, maybe i should have warned them? )
Anyway, it should be back up in about an hour, ill try get it done then.
Its actually alot more complex than i thought it would be.
That, and i still havent got my ftp back online :|
Im sorry for taking so long, but at the moment, australian internet is really buggered, it just wont do anything with international pages, im lucky i got this far here.
The weekend is fast approaching, and i should have it done, hopefully by tommorow night my time.
I hope its not a empty promise either!
Dont worry, itll be here soon, just its a pain to write how to put it together, considering that im not allowed to just paste it :|