BP_REST_Groups_Endpoint::prepare_item_for_database( WP_REST_Request $request )
Prepare a group for create or update.
Description
Parameters
- $request
-
(Required) Request object.
Return
(stdClass|WP_Error) Object or WP_Error.
Source
File: bp-groups/classes/class-bp-rest-groups-endpoint.php
protected function prepare_item_for_database( $request ) {
$prepared_group = new stdClass();
$schema = $this->get_item_schema();
$group = $this->get_group_object( $request );
// Group ID.
if ( ! empty( $schema['properties']['id'] ) && ! empty( $group->id ) ) {
$prepared_group->group_id = $group->id;
}
// Group Creator ID.
if ( ! empty( $schema['properties']['creator_id'] ) && isset( $request['creator_id'] ) ) {
$prepared_group->creator_id = (int) $request['creator_id'];
// Fallback on the existing creator id in case of an update.
} elseif ( isset( $group->creator_id ) && $group->creator_id ) {
$prepared_group->creator_id = (int) $group->creator_id;
// Fallback on the current user otherwise.
} else {
$prepared_group->creator_id = bp_loggedin_user_id();
}
// Group Slug.
if ( ! empty( $schema['properties']['slug'] ) && isset( $request['slug'] ) ) {
$prepared_group->slug = $request['slug'];
}
// Group Name.
if ( ! empty( $schema['properties']['name'] ) && isset( $request['name'] ) ) {
$prepared_group->name = $request['name'];
}
// Do additional checks for the Group's slug.
if ( WP_REST_Server::CREATABLE === $request->get_method() || ( isset( $group->slug ) && isset( $prepared_group->slug ) && $group->slug !== $prepared_group->slug ) ) {
// Fallback on the group name if the slug is not defined.
if ( ! isset( $prepared_group->slug ) && ! isset( $group->slug ) ) {
$prepared_group->slug = $prepared_group->name;
}
// Make sure it is unique and sanitize it.
$prepared_group->slug = groups_check_slug( sanitize_title( esc_attr( $prepared_group->slug ) ) );
}
// Group description.
if ( ! empty( $schema['properties']['description'] ) && isset( $request['description'] ) ) {
if ( is_string( $request['description'] ) ) {
$prepared_group->description = $request['description'];
} elseif ( isset( $request['description']['raw'] ) ) {
$prepared_group->description = $request['description']['raw'];
}
}
// Group status.
if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) {
$prepared_group->status = $request['status'];
}
// Group Forum Enabled.
if ( ! empty( $schema['properties']['enable_forum'] ) && isset( $request['enable_forum'] ) ) {
$prepared_group->enable_forum = (bool) $request['enable_forum'];
}
// Group Parent ID.
if ( ! empty( $schema['properties']['parent_id'] ) && isset( $request['parent_id'] ) ) {
$prepared_group->parent_id = $request['parent_id'];
}
// Update group type(s).
if ( isset( $prepared_group->group_id ) && isset( $request['types'] ) ) {
bp_groups_set_group_type( $prepared_group->group_id, $request['types'], false );
}
// Remove group type(s).
if ( isset( $prepared_group->group_id ) && isset( $request['remove_types'] ) ) {
array_map(
function( $type ) use ( $prepared_group ) {
bp_groups_remove_group_type( $prepared_group->group_id, $type );
},
$request['remove_types']
);
}
// Append group type(s).
if ( isset( $prepared_group->group_id ) && isset( $request['append_types'] ) ) {
bp_groups_set_group_type( $prepared_group->group_id, $request['append_types'], true );
}
/**
* Filters a group before it is inserted or updated via the REST API.
*
* @param stdClass $prepared_group An object prepared for inserting or updating the database.
* @param WP_REST_Request $request Request object.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_groups_pre_insert_value', $prepared_group, $request );
}
Changelog
| Version | Description |
|---|---|
| 0.1.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.