Skip to content

Commit

Permalink
Created a membergroupById that retrieves only 1 group and used the ne…
Browse files Browse the repository at this point in the history
…w function

Signed-off-by: emanuele <emanuele45@gmail.com>
  • Loading branch information
emanuele45 committed May 30, 2013
1 parent 2828c86 commit 538c3c8
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 70 deletions.
17 changes: 8 additions & 9 deletions sources/Load.php
Original file line number Diff line number Diff line change
Expand Up @@ -911,26 +911,25 @@ function loadMemberData($users, $is_name = false, $set = 'normal')
// Are we loading any moderators? If so, fix their group data...
if (!empty($loaded_ids) && !empty($board_info['moderators']) && $set === 'normal' && count($temp_mods = array_intersect($loaded_ids, array_keys($board_info['moderators']))) !== 0)
{
if (($groups_info = cache_get_data('moderator_group_info', 480)) == null)
if (($group_info = cache_get_data('moderator_group_info', 480)) == null)
{
require_once(SUBSDIR . '/Membergroups.subs.php');
$groups_info = membergroupsById(3, 1, true);
$group_info = membergroupById(3, true);

cache_put_data('moderator_group_info', $groups_info, 480);
cache_put_data('moderator_group_info', $group_info, 480);
}
$row = $groups_info[3];

foreach ($temp_mods as $id)
{
// By popular demand, don't show admins or global moderators as moderators.
if ($user_profile[$id]['id_group'] != 1 && $user_profile[$id]['id_group'] != 2)
$user_profile[$id]['member_group'] = $row['group_name'];
$user_profile[$id]['member_group'] = $group_info['group_name'];

// If the Moderator group has no color or icons, but their group does... don't overwrite.
if (!empty($row['icons']))
$user_profile[$id]['icons'] = $row['icons'];
if (!empty($row['online_color']))
$user_profile[$id]['member_group_color'] = $row['online_color'];
if (!empty($group_info['icons']))
$user_profile[$id]['icons'] = $group_info['icons'];
if (!empty($group_info['online_color']))
$user_profile[$id]['member_group_color'] = $group_info['online_color'];
}
}

Expand Down
69 changes: 34 additions & 35 deletions sources/admin/ManageMembergroups.php
Original file line number Diff line number Diff line change
Expand Up @@ -398,10 +398,10 @@ public function action_add()
if (!allowedTo('admin_forum'))
{
require_once(SUBSDIR . '/Membergroups.subs.php');
$copy_type = membergroupsById($copy_id);
$copy_type = membergroupById($copy_id);

// Protected groups are... well, protected!
if ($copy_type[$copy_id]['group_type'] == 1)
if ($copy_type['group_type'] == 1)
fatal_lang_error('membergroup_does_not_exist');
}

Expand Down Expand Up @@ -508,18 +508,18 @@ public function action_edit()
{
global $context, $txt, $modSettings;

$current_group = isset($_REQUEST['group']) ? (int) $_REQUEST['group'] : 0;
$current_group_id = isset($_REQUEST['group']) ? (int) $_REQUEST['group'] : 0;

if (!empty($modSettings['deny_boards_access']))
loadLanguage('ManagePermissions');

require_once(SUBSDIR . '/Membergroups.subs.php');
// Make sure this group is editable.
if (!empty($current_group))
$groups = membergroupsById($current_group, 1);
if (!empty($current_group_id))
$current_group = membergroupById($current_group_id);

// Now, do we have a valid id?
if (!allowedTo('admin_forum') && !empty($groups) && $groups[$current_group]['group_type'] == 1)
if (!allowedTo('admin_forum') && !empty($groups) && $current_group['group_type'] == 1)
fatal_lang_error('membergroup_does_not_exist', false);

// The delete this membergroup button was pressed.
Expand All @@ -532,7 +532,7 @@ public function action_edit()
fatal_lang_error('membergroup_does_not_exist', false);

// Let's delete the group
deleteMembergroups($groups[$current_group]['id_group']);
deleteMembergroups($current_group['id_group']);

redirectexit('action=admin;area=membergroups;');
}
Expand All @@ -549,19 +549,19 @@ public function action_edit()
// Can they really inherit from this group?
if (isset($_POST['group_inherit']) && $_POST['group_inherit'] != -2 && !allowedTo('admin_forum'))
{
$inherit_group = (int) $_POST['group_inherit'];
$inherit_type = membergroupsById($inherit_group);
$group_inherit = (int) $_POST['group_inherit'];
$inherit_type = membergroupById($group_inherit);
}

// Set variables to their proper value.
// @todo probably avoid all this...
$_POST['max_messages'] = isset($_POST['max_messages']) ? (int) $_POST['max_messages'] : 0;
$_POST['min_posts'] = isset($_POST['min_posts']) && isset($_POST['group_type']) && $_POST['group_type'] == -1 && $groups[$current_group]['id_group'] > 3 ? abs($_POST['min_posts']) : ($groups[$current_group]['id_group'] == 4 ? 0 : -1);
$_POST['min_posts'] = isset($_POST['min_posts']) && isset($_POST['group_type']) && $_POST['group_type'] == -1 && $current_group['id_group'] > 3 ? abs($_POST['min_posts']) : ($current_group['id_group'] == 4 ? 0 : -1);
$_POST['icons'] = (empty($_POST['icon_count']) || $_POST['icon_count'] < 0) ? '' : min((int) $_POST['icon_count'], 99) . '#' . $_POST['icon_image'];
$_POST['group_desc'] = isset($_POST['group_desc']) && ($groups[$current_group]['id_group'] == 1 || (isset($_POST['group_type']) && $_POST['group_type'] != -1)) ? trim($_POST['group_desc']) : '';
$_POST['group_desc'] = isset($_POST['group_desc']) && ($current_group['id_group'] == 1 || (isset($_POST['group_type']) && $_POST['group_type'] != -1)) ? trim($_POST['group_desc']) : '';
$_POST['group_type'] = !isset($_POST['group_type']) || $_POST['group_type'] < 0 || $_POST['group_type'] > 3 || ($_POST['group_type'] == 1 && !allowedTo('admin_forum')) ? 0 : (int) $_POST['group_type'];
$_POST['group_hidden'] = empty($_POST['group_hidden']) || $_POST['min_posts'] != -1 || $groups[$current_group]['id_group'] == 3 ? 0 : (int) $_POST['group_hidden'];
$_POST['group_inherit'] = $groups[$current_group]['id_group'] > 1 && $groups[$current_group]['id_group'] != 3 && (empty($inherit_type[$inherit_group]['group_type']) || $inherit_type[$inherit_group]['group_type'] != 1) ? (int) $_POST['group_inherit'] : -2;
$_POST['group_hidden'] = empty($_POST['group_hidden']) || $_POST['min_posts'] != -1 || $current_group['id_group'] == 3 ? 0 : (int) $_POST['group_hidden'];
$group_inherit = $current_group['id_group'] > 1 && $current_group['id_group'] != 3 && (empty($inherit_type['group_type']) || $inherit_type['group_type'] != 1) ? $group_inherit : -2;

//@todo Don't set online_color for the Moderators group?
Expand All @@ -571,19 +571,19 @@ public function action_edit()
'min_posts' => $_POST['min_posts'],
'group_type' => $_POST['group_type'],
'group_hidden' => $_POST['group_hidden'],
'group_inherit' => $_POST['group_inherit'],
'current_group' => $groups[$current_group]['id_group'],
'group_inherit' => $group_inherit,
'current_group' => $current_group['id_group'],
'group_name' => $_POST['group_name'],
'online_color' => $_POST['online_color'],
'icons' => $_POST['icons'],
'group_desc' => $_POST['group_desc'],
);
updateMembergroupProperties($properties);

call_integration_hook('integrate_save_membergroup', array($groups[$current_group]['id_group']));
call_integration_hook('integrate_save_membergroup', array($current_group['id_group']));

// Time to update the boards this membergroup has access to.
if ($groups[$current_group]['id_group'] == 2 || $groups[$current_group]['id_group'] > 3)
if ($current_group['id_group'] == 2 || $current_group['id_group'] > 3)
{
$accesses = empty($_POST['boardaccess']) || !is_array($_POST['boardaccess']) ? array() : $_POST['boardaccess'];
$changed_boards['allow'] = array();
Expand All @@ -595,39 +595,39 @@ public function action_edit()
foreach (array('allow', 'deny') as $board_action)
{
// Find all board this group is in, but shouldn't be in.
detachGroupFromBoards($groups[$current_group]['id_group'], $changed_boards, $board_action);
detachGroupFromBoards($current_group['id_group'], $changed_boards, $board_action);

// Add the membergroup to all boards that hadn't been set yet.
if (!empty($changed_boards[$board_action]))
assignGroupToBoards($groups[$current_group]['id_group'], $changed_boards, $board_action);
assignGroupToBoards($current_group['id_group'], $changed_boards, $board_action);
}
}

// Remove everyone from this group!
if ($_POST['min_posts'] != -1)
detachDeletedGroupFromMembers($groups[$current_group]['id_group']);
detachDeletedGroupFromMembers($current_group['id_group']);

elseif ($groups[$current_group]['id_group'] != 3)
elseif ($current_group['id_group'] != 3)
{
// Making it a hidden group? If so remove everyone with it as primary group (Actually, just make them additional).
if ($_POST['group_hidden'] == 2)
setGroupToHidden($groups[$current_group]['id_group']);
setGroupToHidden($current_group['id_group']);


// Either way, let's check our "show group membership" setting is correct.
validateShowGroupMembership();
}

// Do we need to set inherited permissions?
if ($_POST['group_inherit'] != -2 && $_POST['group_inherit'] != $_POST['old_inherit'])
if ($group_inherit != -2 && $group_inherit != $_POST['old_inherit'])
{
require_once(ADMINDIR . '/ManagePermissions.php');
updateChildPermissions($_POST['group_inherit']);
updateChildPermissions($group_inherit);
}

// Finally, moderators!
$moderator_string = isset($_POST['group_moderators']) ? trim($_POST['group_moderators']) : '';
detachGroupModerators($groups[$current_group]['id_group']);
detachGroupModerators($current_group['id_group']);

if ((!empty($moderator_string) || !empty($_POST['moderator_list'])) && $_POST['min_posts'] == -1 && $groups[$current_groups]['id_group'] != 3)
{
Expand Down Expand Up @@ -667,7 +667,7 @@ public function action_edit()

// Found some?
if (!empty($group_moderators))
assignGroupModerators($groups[$current_group]['id_group'], $group_moderators);
assignGroupModerators($current_group['id_group'], $group_moderators);
}

// There might have been some post group changes.
Expand All @@ -684,16 +684,15 @@ public function action_edit()
}

// Fetch the current group information.
$rows = membergroupsById($groups[$current_group]['id_group'], 1, true);
$row = $rows[$current_group];
$row = membergroupById($current_group['id_group'], true);

if (empty($row) || (!allowedTo('admin_forum') && $row['group_type'] == 1))
fatal_lang_error('membergroup_does_not_exist', false);

$row['icons'] = explode('#', $row['icons']);

$context['group'] = array(
'id' => $groups[$current_group]['id_group'],
'id' => $row['id_group'],
'name' => $row['group_name'],
'description' => htmlspecialchars($row['description']),
'editable_name' => $row['group_name'],
Expand All @@ -706,32 +705,32 @@ public function action_edit()
'type' => $row['min_posts'] != -1 ? 0 : $row['group_type'],
'hidden' => $row['min_posts'] == -1 ? $row['hidden'] : 0,
'inherited_from' => $row['id_parent'],
'allow_post_group' => $groups[$current_group]['id_group'] == 2 || $groups[$current_group]['id_group'] > 4,
'allow_delete' => $groups[$current_group]['id_group'] == 2 || $groups[$current_group]['id_group'] > 4,
'allow_post_group' => $row['id_group'] == 2 || $row['id_group'] > 4,
'allow_delete' => $row['id_group'] == 2 || $row['id_group'] > 4,
'allow_protected' => allowedTo('admin_forum'),
);

// Get any moderators for this group
$context['group']['moderators'] = getGroupModerators($groups[$current_group]['id_group']);
$context['group']['moderators'] = getGroupModerators($row['id_group']);
$context['group']['moderator_list'] = empty($context['group']['moderators']) ? '' : '&quot;' . implode('&quot;, &quot;', $context['group']['moderators']) . '&quot;';

if (!empty($context['group']['moderators']))
list ($context['group']['last_moderator_id']) = array_slice(array_keys($context['group']['moderators']), -1);

// Get a list of boards this membergroup is allowed to see.
$context['boards'] = array();
if ($groups[$current_group]['id_group'] == 2 || $groups[$current_group]['id_group'] > 3)
if ($row['id_group'] == 2 || $row['id_group'] > 3)
{
require_once(SUBSDIR . '/Boards.subs.php');
$context += getBoardList(array('access' => $groups[$current_group]['id_group'], 'not_redirection' => true));
$context += getBoardList(array('access' => $row['id_group'], 'not_redirection' => true));

// Include a list of boards per category for easy toggling.
foreach ($context['categories'] as $category)
$context['categories'][$category['id']]['child_ids'] = array_keys($category['boards']);
}

// Finally, get all the groups this could be inherited off.
$context['inheritable_groups'] = getInheritableGroups($groups[$current_group]['id_group']);
$context['inheritable_groups'] = getInheritableGroups($row['id_group']);

call_integration_hook('integrate_view_membergroup');

Expand Down
26 changes: 13 additions & 13 deletions sources/admin/ManagePermissions.php
Original file line number Diff line number Diff line change
Expand Up @@ -532,9 +532,9 @@ public function action_modify()
{
require_once(SUBSDIR . '/Membergroups.subs.php');

$group = membergroupsById($context['group']['id'], 1, true);
$context['group']['name'] = $group[$context['group']['id']]['group_name'];
$parent = $group[$context['group']['id']]['id_parent'];
$group = membergroupById($context['group']['id'], true);
$context['group']['name'] = $group['group_name'];
$parent = $group['id_parent'];

// Cannot edit an inherited group!
if ($parent != -2)
Expand Down Expand Up @@ -630,21 +630,21 @@ public function action_modify2()

loadIllegalPermissions();

$_GET['group'] = (int) $_GET['group'];
$current_group_id = (int) $_GET['group'];
$_GET['pid'] = (int) $_GET['pid'];

// Cannot modify predefined profiles.
if ($_GET['pid'] > 1 && $_GET['pid'] < 5)
fatal_lang_error('no_access', false);

// Verify this isn't inherited.
if ($_GET['group'] == -1 || $_GET['group'] == 0)
if ($current_group_id == -1 || $current_group_id == 0)
$parent = -2;
else
{
require_once(SUBSDIR . '/Membergroups.subs.php');
$group = membergroupsById($_GET['group'], 1, true);
$parent = $group[$_GET['group']]['id_parent'];
$group = membergroupById($current_group_id, true);
$parent = $group['id_parent'];
}

if ($parent != -2)
Expand All @@ -653,7 +653,7 @@ public function action_modify2()
$givePerms = array('membergroup' => array(), 'board' => array());

// Guest group, we need illegal, guest permissions.
if ($_GET['group'] == -1)
if ($current_group_id == -1)
{
loadIllegalGuestPermissions();
$context['illegal_permissions'] = array_merge($context['illegal_permissions'], $context['non_guest_permissions']);
Expand All @@ -673,24 +673,24 @@ public function action_modify2()
if (!empty($context['illegal_permissions']) && in_array($permission, $context['illegal_permissions']))
continue;

$givePerms[$perm_type][] = array($permission, $_GET['group'], $value == 'deny' ? 0 : 1);
$givePerms[$perm_type][] = array($permission, $current_group_id, $value == 'deny' ? 0 : 1);
}
}
}
}

// Insert the general permissions.
if ($_GET['group'] != 3 && empty($_GET['pid']))
if ($current_group_id != 3 && empty($_GET['pid']))
{
deleteInvalidPermissions($_GET['group'], $context['illegal_permissions']);
deleteInvalidPermissions($current_group_id, $context['illegal_permissions']);

if (!empty($givePerms['membergroup']))
replacePermission($givePerms['membergroup']);
}

// Insert the boardpermissions.
$profileid = max(1, $_GET['pid']);
deleteAllBoardPermissions($_GET['group'], $profileid);
deleteAllBoardPermissions($current_group_id, $profileid);

if (!empty($givePerms['board']))
{
Expand All @@ -700,7 +700,7 @@ public function action_modify2()
}

// Update any inherited permissions as required.
updateChildPermissions($_GET['group'], $_GET['pid']);
updateChildPermissions($current_group_id, $_GET['pid']);

// Clear cached privs.
updateSettings(array('settings_updated' => time()));
Expand Down
5 changes: 2 additions & 3 deletions sources/controllers/Groups.controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -215,13 +215,12 @@ function action_groupmembers()
require_once(SUBSDIR . '/Membergroups.subs.php');

// Load up the group details.
$group_details = membergroupsById($current_group, 1, true, true);
$context['group'] = membergroupById($current_group, true, true);

// Doesn't exist?
if (!allowedTo('admin_forum') && $group_details[$current_group]['group_type'] == 1)
if (!allowedTo('admin_forum') && $context['group']['group_type'] == 1)
fatal_lang_error('membergroup_does_not_exist', false);

$context['group'] = $group_details[$current_group];
// @todo should we change id => id_group and name => name_group?
$context['group']['id'] = $context['group']['id_group'];
$context['group']['name'] = $context['group']['group_name'];
Expand Down

0 comments on commit 538c3c8

Please sign in to comment.