function oa_clone_batch_clone_group_metadata in Open Atrium Clone 7.2
Callback for cloning Organic Groups metadata (variables, permisssions, etc).
Parameters
object $node: Node object representing the Space or Group that we are going to configure.
int $original_nid: The node ID of the original Space or Group we are cloning metadata from.
array &$context: A place where we can store values that need to b passed from one iteration of this batch operation to the next.
2 string references to 'oa_clone_batch_clone_group_metadata'
- oa_clone_node_insert in ./
oa_clone.module - Implements hook_node_insert().
- _oa_clone_batch_space in ./
oa_clone.module - Recursively clone a Space while setting up a batch for cloning content.
File
- ./
oa_clone.module, line 956
Code
function oa_clone_batch_clone_group_metadata($node, $original_nid, &$context) {
// Clone OG variables.
foreach (variable_store_list_all('og', 'node_' . $original_nid) as $name) {
variable_realm_set('og', 'node_' . $node->nid, $name, variable_realm_get('og', 'node_' . $original_nid, $name));
}
// Clone OG roles.
$original_role_map = array();
$original_roles = og_roles('node', $node->type, $original_nid);
foreach ($original_roles as $original_rid => $original_name) {
$original_role_map[$original_name] = $original_rid;
// If this is a custom role, then we have to create it.
if (!in_array($original_name, array(
OG_ANONYMOUS_ROLE,
OG_AUTHENTICATED_ROLE,
OG_ADMINISTRATOR_ROLE,
))) {
$role = og_role_create($original_name, 'node', $node->nid, $node->type);
og_role_save($role);
}
}
// Clone OG permissions.
$permissions = og_role_permissions($original_roles);
foreach (og_roles('node', $node->type, $node->nid) as $rid => $name) {
// Only clone custom permissions.
if ($rid != $original_role_map[$name]) {
og_role_change_permissions($rid, $permissions[$original_role_map[$name]]);
}
}
// Allow other modules to copy group metadata too.
module_invoke_all('oa_clone_group_metadata', $node, $original_nid);
}