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.