[geeklog-cvs] geeklog: Turns out the group editor needs more work: Fixed print...
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Mon Jan 26 11:17:33 EST 2009
details: http://project.geeklog.net/cgi-bin/hgweb.cgi/rev/9c0620199e25
changeset: 6729:9c0620199e25
user: Dirk Haun <dirk at haun-online.de>
date: Mon Jan 26 17:17:21 2009 +0100
description:
Turns out the group editor needs more work: Fixed printrights() and some consistency issues; more to come ...
diffstat:
2 files changed, 113 insertions(+), 94 deletions(-)
public_html/admin/group.php | 201 ++++++++++++++++++++++---------------------
system/lib-admin.php | 6 +
diffs (truncated from 351 to 300 lines):
diff -r d9e502027ae4 -r 9c0620199e25 public_html/admin/group.php
--- a/public_html/admin/group.php Mon Jan 26 10:24:32 2009 +0100
+++ b/public_html/admin/group.php Mon Jan 26 17:17:21 2009 +0100
@@ -78,74 +78,76 @@
global $_TABLES, $_CONF, $_USER, $LANG_ACCESS, $LANG_ADMIN, $MESSAGE,
$LANG28, $VERBOSE;
+ require_once $_CONF['path_system'] . 'lib-admin.php';
+
$retval = '';
- $thisUsersGroups = SEC_getUserGroups ();
- if (!empty ($grp_id) &&
+ $thisUsersGroups = SEC_getUserGroups();
+ if (! empty($grp_id) &&
($grp_id > 0) &&
- !in_array ($grp_id, $thisUsersGroups) &&
+ !in_array($grp_id, $thisUsersGroups) &&
!SEC_groupIsRemoteUserAndHaveAccess($grp_id, $thisUsersGroups)) {
- $retval .= COM_startBlock ($LANG_ACCESS['groupeditor'], '',
- COM_getBlockTemplate ('_msg_block', 'header'));
- if (!SEC_inGroup ('Root') && (DB_getItem ($_TABLES['groups'],
+ $retval .= COM_startBlock($LANG_ACCESS['groupeditor'], '',
+ COM_getBlockTemplate('_msg_block', 'header'));
+ if (!SEC_inGroup('Root') && (DB_getItem($_TABLES['groups'],
'grp_name', "grp_id = $grp_id") == 'Root')) {
$retval .= $LANG_ACCESS['canteditroot'];
- COM_accessLog ("User {$_USER['username']} tried to edit the Root group with insufficient privileges.");
+ COM_accessLog("User {$_USER['username']} tried to edit the Root group with insufficient privileges.");
} else {
$retval .= $LANG_ACCESS['canteditgroup'];
}
- $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+ $retval .= COM_endBlock(COM_getBlockTemplate('_msg_block', 'footer'));
return $retval;
}
$group_templates = new Template($_CONF['path_layout'] . 'admin/group');
- $group_templates->set_file('editor','groupeditor.thtml');
+ $group_templates->set_file('editor', 'groupeditor.thtml');
$group_templates->set_var('site_url', $_CONF['site_url']);
$group_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
$group_templates->set_var('layout_url', $_CONF['layout_url']);
$group_templates->set_var('lang_save', $LANG_ADMIN['save']);
$group_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
- $group_templates->set_var('lang_admingroup',$LANG28[49]);
+ $group_templates->set_var('lang_admingroup', $LANG28[49]);
$group_templates->set_var('lang_admingrp_msg', $LANG28[50]);
- $group_templates->set_var( 'xhtml', XHTML );
+ $group_templates->set_var('xhtml', XHTML);
$showall = 0;
- if (isset ($_GET['chk_showall'])) {
- $showall = COM_applyFilter ($_GET['chk_showall'], true);
+ if (isset($_GET['chk_showall'])) {
+ $showall = COM_applyFilter($_GET['chk_showall'], true);
}
$group_templates->set_var('show_all', $showall);
- if (!empty ($grp_id)) {
- $result = DB_query ("SELECT grp_id,grp_name,grp_descr,grp_gl_core FROM {$_TABLES['groups']} WHERE grp_id ='$grp_id'");
- $A = DB_fetchArray ($result);
+ if (! empty($grp_id)) {
+ $result = DB_query("SELECT grp_id,grp_name,grp_descr,grp_gl_core FROM {$_TABLES['groups']} WHERE grp_id ='$grp_id'");
+ $A = DB_fetchArray($result);
if ($A['grp_gl_core'] > 0) {
- $group_templates->set_var ('chk_adminuse', 'checked="checked"');
+ $group_templates->set_var('chk_adminuse', 'checked="checked"');
}
} else {
// new group, so it's obviously not a core group
$A['grp_gl_core'] = 0;
}
- $retval .= COM_startBlock ($LANG_ACCESS['groupeditor'], '',
- COM_getBlockTemplate ('_admin_block', 'header'));
+ $retval .= COM_startBlock($LANG_ACCESS['groupeditor'], '',
+ COM_getBlockTemplate('_admin_block', 'header'));
- if (!empty($grp_id)) {
+ if (! empty($grp_id)) {
// Groups tied to Geeklog's functionality shouldn't be deleted
if ($A['grp_gl_core'] != 1) {
$delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
. '" name="mode"%s' . XHTML . '>';
$jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
- $group_templates->set_var ('delete_option',
- sprintf ($delbutton, $jsconfirm));
- $group_templates->set_var ('delete_option_no_confirmation',
- sprintf ($delbutton, ''));
- $group_templates->set_var ('group_core', 0);
+ $group_templates->set_var('delete_option',
+ sprintf($delbutton, $jsconfirm));
+ $group_templates->set_var('delete_option_no_confirmation',
+ sprintf($delbutton, ''));
+ $group_templates->set_var('group_core', 0);
} else {
- $group_templates->set_var ('group_core', 1);
+ $group_templates->set_var('group_core', 1);
}
- $group_templates->set_var ('group_id', $A['grp_id']);
+ $group_templates->set_var('group_id', $A['grp_id']);
} else {
- $group_templates->set_var ('group_core', 0);
+ $group_templates->set_var('group_core', 0);
}
$group_templates->set_var('lang_groupname', $LANG_ACCESS['groupname']);
@@ -171,9 +173,8 @@
}
$group_templates->set_var('lang_securitygroups', $LANG_ACCESS['securitygroups']);
- //$groups = SEC_getUserGroups('','',$grp_id);
$selected = '';
- if (!empty($grp_id)) {
+ if (! empty($grp_id)) {
$tmp = DB_query("SELECT ug_main_grp_id FROM {$_TABLES['group_assignments']} WHERE ug_grp_id = $grp_id");
$num_groups = DB_numRows($tmp);
for ($x = 0; $x < $num_groups; $x++) {
@@ -185,45 +186,40 @@
}
}
}
+
+ $groupoptions = '';
if ($A['grp_gl_core'] == 1) {
- $group_templates->set_var('lang_securitygroupmsg', $LANG_ACCESS['coregroupmsg']);
- $group_templates->set_var('hide_adminoption',' style="display:none;"');
+ $group_templates->set_var('lang_securitygroupmsg',
+ $LANG_ACCESS['coregroupmsg']);
+ $group_templates->set_var('hide_adminoption',
+ ' style="display:none;"');
- if (!empty($selected)) {
+ $count = 0;
+ if (! empty($selected)) {
$inclause = str_replace(' ', ',', $selected);
- $result = DB_query("SELECT grp_id,grp_name FROM {$_TABLES['groups']} WHERE grp_id <> $grp_id AND grp_id in ($inclause) ORDER BY grp_name");
- $nrows = DB_numRows($result);
- } else {
- $nrows = 0;
+ $result = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['groups']} WHERE grp_id <> $grp_id AND grp_id in ($inclause)");
+ list($count) = DB_fetchArray($result);
}
-
- if ($nrows == 0) {
+ if ($count == 0) {
// this group doesn't belong to anything...give a friendly message
- $group_templates->set_var('group_options', $LANG_ACCESS['nogroupsforcoregroup']);
- } else {
- $groupoptions = '';
- for ($i = 0; $i < $nrows; $i++) {
- $GRPS = DB_fetchArray($result);
- $groupoptions .= $GRPS['grp_name'] . '<input type="hidden" name="groups[]" value="' . $GRPS['grp_id'] . '"' . XHTML . '><br' . XHTML . '>' .LB;
- }
- $group_templates->set_var('group_options', $groupoptions);
+ $groupoptions = $LANG_ACCESS['nogroupsforcoregroup'];
}
} else {
- require_once $_CONF['path_system'] . 'lib-admin.php';
-
$group_templates->set_var('lang_securitygroupmsg',
$LANG_ACCESS['groupmsg']);
- $group_templates->set_var('hide_adminoption','');
- if ($VERBOSE) {
- COM_errorLog("SELECTED: $selected");
- }
+ $group_templates->set_var('hide_adminoption', '');
+ }
+ if ($VERBOSE) {
+ COM_errorLog("SELECTED: $selected");
+ }
+ if (empty($groupoptions)) {
// make sure to list only those groups of which the Group Admin
// is a member
$whereGroups = '(grp_id IN (' . implode (',', $thisUsersGroups) . '))';
$header_arr = array(
- array('text' => $LANG28[86], 'field' => 'checkbox', 'sort' => false),
+ array('text' => $LANG28[86], 'field' => ($A['grp_gl_core'] == 1 ? 'disabled-checkbox' : 'checkbox'), 'sort' => false),
array('text' => $LANG_ACCESS['groupname'], 'field' => 'grp_name', 'sort' => true),
array('text' => $LANG_ACCESS['description'], 'field' => 'grp_descr', 'sort' => true)
);
@@ -237,11 +233,16 @@
'icon' => '', 'form_url' => $form_url,
'inline' => true);
- $xsql = '';
- if (! empty($grp_id)) {
- $xsql = " AND (grp_id <> $grp_id)";
+ if ($A['grp_gl_core'] == 1) {
+ $inclause = str_replace(' ', ',', $selected);
+ $sql = "SELECT grp_id, grp_name, grp_descr FROM {$_TABLES['groups']} WHERE grp_id <> $grp_id AND grp_id in ($inclause)";
+ } else {
+ $xsql = '';
+ if (! empty($grp_id)) {
+ $xsql = " AND (grp_id <> $grp_id)";
+ }
+ $sql = "SELECT grp_id, grp_name, grp_descr FROM {$_TABLES['groups']} WHERE (grp_name <> 'Root')" . $xsql . ' AND ' . $whereGroups;
}
- $sql = "SELECT grp_id, grp_name, grp_descr FROM {$_TABLES['groups']} WHERE (grp_name <> 'Root')" . $xsql . ' AND ' . $whereGroups;
$query_arr = array('table' => 'groups',
'sql' => $sql,
'query_fields' => array('grp_name'),
@@ -249,12 +250,11 @@
'query' => '',
'query_limit' => 0);
- $options = ADMIN_list('groups', 'ADMIN_getListField_groups',
- $header_arr, $text_arr, $query_arr, $defsort_arr,
- '', explode(' ', $selected));
- $group_templates->set_var('group_options', $options);
-
+ $groupoptions = ADMIN_list('groups', 'ADMIN_getListField_groups',
+ $header_arr, $text_arr, $query_arr,
+ $defsort_arr, '', explode(' ', $selected));
}
+ $group_templates->set_var('group_options', $groupoptions);
$group_templates->set_var('lang_rights', $LANG_ACCESS['rights']);
if ($A['grp_gl_core'] == 1) {
@@ -396,36 +396,44 @@
// OK, now loop through and print all the features giving edit rights
// to only the ones that are direct features
$ftcount = 0;
- $retval = '<tr>' . LB;
- for ($i = 1; $i <= $nfeatures; $i++) {
- if ($i > 0 AND (($ftcount + 1) % 3 == 1)) {
- $retval .= '</tr>' . LB . '<tr>';
- }
+ $retval = '<tr>';
+ for ($i = 0; $i < $nfeatures; $i++) {
$A = DB_fetchArray($features);
if ((empty($grpftarray[$A['ft_name']]) OR ($grpftarray[$A['ft_name']] == 'direct')) AND ($core != 1)) {
+ if (($ftcount > 0) && ($ftcount % 3 == 0)) {
+ $retval .= '</tr>' . LB . '<tr>';
+ }
$ftcount++;
- $retval .= '<td><input type="checkbox" name="features[]" value="'. $A['ft_id'] . '"';
- if (!empty ($grpftarray[$A['ft_name']])) {
+
+ $retval .= '<td><input type="checkbox" name="features[]" value="'
+ . $A['ft_id'] . '"';
+ if (!empty($grpftarray[$A['ft_name']])) {
if ($grpftarray[$A['ft_name']] == 'direct') {
$retval .= ' checked="checked"';
}
}
- $retval .= XHTML . '><span title="' . $A['ft_descr'] . '">' . $A['ft_name']
- . '</span></td>';
+ $retval .= XHTML . '><span title="' . $A['ft_descr'] . '">'
+ . $A['ft_name'] . '</span></td>';
} else {
// either this is an indirect right OR this is a core feature
- if ((($core == 1) AND (isset ($grpftarray[$A['ft_name']]) AND (($grpftarray[$A['ft_name']] == 'indirect') OR ($grpftarray[$A['ft_name']] == 'direct')))) OR ($core != 1)) {
+ if ((($core == 1) AND (isset($grpftarray[$A['ft_name']]) AND (($grpftarray[$A['ft_name']] == 'indirect') OR ($grpftarray[$A['ft_name']] == 'direct')))) OR ($core != 1)) {
+ if (($ftcount > 0) && ($ftcount % 3 == 0)) {
+ $retval .= '</tr>' . LB . '<tr>';
+ }
$ftcount++;
- $retval .= '<td><input type="checkbox" disabled="disabled" '
- . 'checked="checked"' . XHTML . '>(<i title="'
- . $A['ft_descr'] . '">' . $A['ft_name'] . '</i>)</td>';
+
+ $retval .= '<td><input type="checkbox" name="features[]" '
+ . 'value="' . $A['ft_id']
+ . '" disabled="disabled" checked="checked"' . XHTML
+ . '>(<i title="' . $A['ft_descr'] . '">' . $A['ft_name'] . '</i>)</td>';
}
}
}
if ($ftcount == 0) {
// This group doesn't have rights to any features
- $retval .= '<td colspan="3">' . $LANG_ACCESS['grouphasnorights'] . '</td>';
+ $retval .= '<td colspan="3">' . $LANG_ACCESS['grouphasnorights']
+ . '</td>';
}
$retval .= '</tr>' . LB;
@@ -446,7 +454,7 @@
* @return string HTML refresh or error message
*
*/
-function savegroup ($grp_id, $grp_name, $grp_descr, $grp_admin, $grp_gl_core, $features, $groups)
+function savegroup($grp_id, $grp_name, $grp_descr, $grp_admin, $grp_gl_core, $features, $groups)
{
global $_CONF, $_TABLES, $_USER, $LANG_ACCESS, $VERBOSE;
@@ -1020,23 +1028,28 @@
echo COM_refresh($_CONF['site_admin_url'] . '/index.php');
}
} elseif (($mode == $LANG_ADMIN['save']) && !empty($LANG_ADMIN['save']) && SEC_checkToken()) {
- $chk_grpadmin = '';
- if (isset($_POST['chk_grpadmin'])) {
- $chk_grpadmin = COM_applyFilter($_POST['chk_grpadmin']);
+ $grp_gl_core = COM_applyFilter($_POST['grp_gl_core'], true);
+ if ($grp_gl_core != 1) {
+ $chk_grpadmin = '';
More information about the geeklog-cvs
mailing list