function bookmark_tools_change_children_access($folder, $change_bookmarks = false) { if (!empty($folder) && $folder instanceof ElggObject) { if ($folder->getSubtype() == BOOKMARK_TOOLS_SUBTYPE) { // get children folders $options = array("type" => "object", "subtype" => BOOKMARK_TOOLS_SUBTYPE, "container_guid" => $folder->getContainerGUID(), "limit" => false, "metadata_name" => "parent_guid", "metadata_value" => $folder->getGUID()); if ($children = elgg_get_entities_from_metadata($options)) { foreach ($children as $child) { $child->access_id = $folder->access_id; $child->save(); bookmark_tools_change_children_access($child, $change_bookmarks); } } if ($change_bookmarks) { // change access on bookmarks in this folder bookmark_tools_change_bookmarks_access($folder); } } } }
$folder->owner_guid = elgg_get_logged_in_user_guid(); $folder->container_guid = $owner_guid; $folder->access_id = $access_id; $order = elgg_get_entities_from_metadata(array("type" => "object", "subtype" => BOOKMARK_TOOLS_SUBTYPE, "metadata_name" => "parent_guid", "metadata_value" => $parent_guid, "count" => true)); $folder->order = $order; if (!$folder->save()) { unset($folder); } } if (!empty($folder)) { $folder->title = $title; $folder->description = $description; $folder->access_id = $access_id; if (!empty($change_children_access)) { $folder->save(); bookmark_tools_change_children_access($folder, !empty($change_bookmarks_access)); } elseif (!empty($change_bookmarks_access)) { $folder->save(); bookmark_tools_change_bookmarks_access($folder); } $folder->parent_guid = $parent_guid; if ($folder->save()) { $post_fix = "/" . $folder->getGUID(); $forward_url = $folder->getURL(); system_message(elgg_echo("bookmark_tools:action:edit:success")); } else { register_error(elgg_echo("bookmark_tools:action:edit:error:save")); } } else { register_error(elgg_echo("bookmark_tools:action:edit:error:folder")); }