diff -urN tikiwiki-1.9.6/lib/tikilib.php tikiwiki-site/lib/tikilib.php --- tikiwiki-1.9.6/lib/tikilib.php 2006-11-01 08:47:09 +1000 +++ tikiwiki-site/lib/tikilib.php 2007-07-12 10:37:11 +1000 @@ -1686,8 +1686,14 @@ if (isset($res['groupname']) and $res['groupname']) { $sections = split(",",$res['groupname']); foreach ($sections as $sec) { - if ($sec and !in_array($sec,$usergroups)) { - $display = false; + if (substr($sec,0,1) == "!") { + if ($sec and in_array(substr($sec,1),$usergroups)) { + $display = false; + } + } else { + if ($sec and !in_array($sec,$usergroups)) { + $display = false; + } } } } diff -urN tikiwiki-1.9.6/tiki-admin_modules.php tikiwiki-site/tiki-admin_modules.php --- tikiwiki-1.9.6/tiki-admin_modules.php 2006-09-04 02:32:32 +1000 +++ tikiwiki-site/tiki-admin_modules.php 2007-07-12 10:37:11 +1000 @@ -278,6 +278,13 @@ $smarty->assign_by_ref('orders', $orders); $groups = $userlib->list_all_groups(); +// Negation groups +$neggroups = array(); +foreach ($groups as $grp) { + array_push($neggroups,"!$grp"); +} +array_splice($groups, count($groups), 0, $neggroups); + $allgroups = array(); $temp_max = count($groups); for ($i = 0; $i < $temp_max; $i++) { diff -urN tikiwiki-1.9.6/tiki-modules.php tikiwiki-site/tiki-modules.php --- tikiwiki-1.9.6/tiki-modules.php 2005-12-15 05:37:34 +1000 +++ tikiwiki-site/tiki-modules.php 2007-07-12 10:37:11 +1000 @@ -68,33 +68,47 @@ } else { $module_groups = array(); } - $pass = 'n'; + $pass = true; if ($modseparateanon !== 'y') { foreach ($module_groups as $mod_group) { - if (in_array($mod_group, $user_groups)) { - $pass = 'y'; - break; + if (substr($mod_group,0,1) != "!") { + if (!in_array($mod_group, $user_groups)) { + $pass = false; + break; + } + } else { + if (in_array(substr($mod_group,1), $user_groups)) { + $pass = false; + break; + } } } } else { if(!$user) { if (in_array("Anonymous", $module_groups)) { - $pass = 'y'; + $pass = true; } } else { foreach ($module_groups as $mod_group) { if ($mod_group === "Anonymous") { continue; } - if (in_array($mod_group,$user_groups)) { - $pass = 'y'; - break; + if (substr($mod_group,0,1) != "!") { + if (!in_array($mod_group, $user_groups)) { + $pass = false; + break; + } + } else { + if (in_array(substr($mod_group,1), $user_groups)) { + $pass = false; + break; + } } } } } } - if ($pass == 'y') { + if ($pass) { // Commented out here too. See zaufi's note in lib/wiki-plugins/wikiplugin_module.php // $cachefile = 'modules/cache/'; // if ($tikidomain) { $cachefile.= "$tikidomain/"; }