diff options
Diffstat (limited to 'actions')
-rw-r--r-- | actions/subgroups/add.php | 33 | ||||
-rw-r--r-- | actions/subgroups/remove.php | 13 |
2 files changed, 46 insertions, 0 deletions
diff --git a/actions/subgroups/add.php b/actions/subgroups/add.php new file mode 100644 index 000000000..92416ea05 --- /dev/null +++ b/actions/subgroups/add.php @@ -0,0 +1,33 @@ +<?php + +elgg_load_library('elgg:subgroups'); + +$group_guid = get_input('group'); +$othergroup_guid = get_input('othergroup'); +$othergroup_url = get_input('othergroup_url'); // maybe it isn't used +$group = get_entity($group_guid); +$othergroup = get_entity($othergroup_guid); + +if(!$othergroup && $othergroup = subgroups_get_group_from_url($othergroup_url)){ + $othergroup_guid = $othergroup->guid; +} + +if ($group instanceof ElggGroup && $group->canEdit() && $othergroup instanceof ElggGroup) { + if ($othergroup->canEdit() && $group_guid != $othergroup_guid) { + // Check if other group isn't currently a supergroup + $tree_group = $group; + while ($tree_group->container_guid > 0 && $tree_group->guid != $othergroup_guid) { + $tree_group = get_entity($tree_group->container_guid); + } + // Only save if there isn't circles in the tree. + if ($tree_group->guid != $othergroup_guid) { + $othergroup->container_guid = $group_guid; + $othergroup->save(); + forward(REFERER); + } + } +} + +register_error(elgg_echo('subgroups:add:error')); +forward(REFERER); + diff --git a/actions/subgroups/remove.php b/actions/subgroups/remove.php new file mode 100644 index 000000000..206673de3 --- /dev/null +++ b/actions/subgroups/remove.php @@ -0,0 +1,13 @@ +<?php + +$group_guid = get_input('group'); +$othergroup_guid = get_input('othergroup'); +$group = get_entity($group_guid); +$othergroup = get_entity($othergroup_guid); +if ($group instanceof ElggGroup && $group->canEdit()) { + if ($othergroup instanceof ElggGroup && $othergroup->canEdit() && $othergroup->container_guid == $group_guid) { + $othergroup->container_guid = $other_group->owner_guid; + $othergroup->save(); + } +} +forward(REFERER); |