diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2014-03-16 21:01:42 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2014-03-16 21:01:42 -0300 |
commit | 5f6dc365a8445a48156b45912827eac39fd64fc5 (patch) | |
tree | 0dc3326151072bb5d97592513e1af4b40be32e07 /actions/subgroups | |
download | elgg-5f6dc365a8445a48156b45912827eac39fd64fc5.tar.gz elgg-5f6dc365a8445a48156b45912827eac39fd64fc5.tar.bz2 |
Squashed 'mod/subgroups/' content from commit 835015b
git-subtree-dir: mod/subgroups
git-subtree-split: 835015b66b9de6dc6de91ab39f95e1f09b2dbf84
Diffstat (limited to 'actions/subgroups')
-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); |