Version 1.1.1 ()
------------------------------------------------------------------------
+ * Patch plugin permissionship management to properly indicate
+ forbidden plugins/hooks, even if the admin user is not contained
+ within the configured group. Thanks to ICE!
+ (http://board.s9y.org/viewtopic.php?t=8773) (garvinhicking)
+
* Patch pingback receiving function to use proper Regexp, thanks to
dhaun from the forums
foreach($currentplugin['b']->properties['event_hooks'] AS $hook => $set) {
$allhooks[$hook] = true;
}
- echo '<option value="' . urlencode($plugid) . '" ' . (serendipity_hasPluginPermissions($plugid) ? '' : 'selected="selected"') . '>' . htmlspecialchars($currentplugin['b']->properties['name']) . '</option>' . "\n";
+ echo '<option value="' . urlencode($plugid) . '" ' . (serendipity_hasPluginPermissions($plugid, $from['id']) ? '' : 'selected="selected"') . '>' . htmlspecialchars($currentplugin['b']->properties['name']) . '</option>' . "\n";
}
ksort($allhooks);
?>
<select name="serendipity[forbidden_hooks][]" multiple="multiple" size="5">
<?php
foreach($allhooks AS $hook => $set) {
- echo '<option value="' . urlencode($hook) . '" ' . (serendipity_hasPluginPermissions($hook) ? '' : 'selected="selected"') . '>' . htmlspecialchars($hook) . '</option>' . "\n";
+ echo '<option value="' . urlencode($hook) . '" ' . (serendipity_hasPluginPermissions($hook, $from['id']) ? '' : 'selected="selected"') . '>' . htmlspecialchars($hook) . '</option>' . "\n";
}
?>
</select>
return $template_vars;
}
-function serendipity_hasPluginPermissions($plugin) {
+function serendipity_hasPluginPermissions($plugin, $groupid = null) {
static $forbidden = null;
global $serendipity;
return true;
}
- if ($forbidden === null) {
+ if ($forbidden === null || ($groupid !== null && !isset($forbidden[$groupid]))) {
$forbidden = array();
- $groups =& serendipity_checkPermission(null, null, 'all');
+
+ if ($groupid === null) {
+ $groups =& serendipity_checkPermission(null, null, 'all');
+ } else {
+ $groups = array($groupid => serendipity_fetchGroup($groupid));
+ }
+
foreach($groups AS $idx => $group) {
if ($idx == 'membership') {
continue;
}
foreach($group AS $key => $val) {
if (substr($key, 0, 2) == 'f_') {
- $forbidden[$key] = true;
+ $forbidden[$groupid][$key] = true;
}
}
}
}
- if (isset($forbidden['f_' . $plugin])) {
+ if (isset($forbidden[$groupid]['f_' . $plugin])) {
return false;
} else {
return true;