Ejemplo n.º 1
0
function add_parent($event, $type, $object)
{
    // if we have an input, then we're setting the parent
    $parent_guid = get_input('au_subgroups_parent_guid', false);
    if ($parent_guid !== false) {
        set_parent_group($object->guid, $parent_guid);
    }
    $parent = get_entity($parent_guid);
    // a few things that can stop subgroup creation
    // - no subgroups allowed
    // - not an admin/group-admin and members disallowed
    if (elgg_instanceof($parent, 'group')) {
        if ($parent->subgroups_enable == 'no') {
            return false;
        }
        if ($parent->subgroups_members_create_enable == 'no') {
            // only group admins can create subgroups
            if (!$parent->canEdit()) {
                return false;
            }
        }
    }
}
Ejemplo n.º 2
0
$parent = get_entity($parent_guid);
$oldparent = get_parent_group($subgroup);
$child_groups = get_all_children_guids($subgroup);
//sanity check
if (!elgg_instanceof($subgroup, 'group') || !elgg_instanceof($parent, 'group')) {
    register_error(elgg_echo('au_subgroups:error:invalid:group'));
    forward(REFERER);
}
// we need to have edit permissions all the way up
if (!can_move_subgroup($subgroup, $parent)) {
    register_error(elgg_echo('au_subgroups:error:permissions'));
    forward(REFERER);
}
// remove any existing parent relationships
remove_parent_group($subgroup->guid);
set_parent_group($subgroup->guid, $parent->guid);
// determine the access_id of the new group, must be equal or more restrictive than the parent
switch ($parent->access_id) {
    case ACCESS_PUBLIC:
        // only need to check that subgroup wasn't to old parent only
        if ($subgroup->access_id == $oldparent->group_acl) {
            $subgroup->access_id = $parent->group_acl;
        }
        break;
    case ACCESS_LOGGED_IN:
        // subgroup cannot be public
        if ($subgroup->access_id == ACCESS_PUBLIC) {
            $subgroup->access_id = ACCESS_LOGGED_IN;
        } elseif ($subgroup->access_id == $oldparent->group_acl) {
            $subgroup->access_id = $parent->group_acl;
        }