BP_REST_XProfile_Types_Endpoint::get_item_schema()

Get the XProfile types schema, conforming to JSON Schema.

Description

Return

(array)

Source

File: bp-xprofile/classes/class-bp-rest-xprofile-types-endpoint.php

	public function get_item_schema() {

		$schema = array(
			'$schema'    => 'http://json-schema.org/draft-04/schema#',
			'title'      => 'bp_xprofile_types',
			'type'       => 'object',
			'properties' => array(
				'labels'         => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Labels to use in various parts of the interface.', 'buddyboss' ),
					'type'        => 'object',
					'arg_options' => array(
						'sanitize_callback' => null,
						'validate_callback' => null,
					),
					'properties'  => array(
						'name'          => array(
							'description' => __( 'Default name. Should typically be plural.', 'buddyboss' ),
							'type'        => 'string',
							'context'     => array( 'embed', 'view', 'edit' ),
							'readonly'    => true,
						),
						'singular_name' => array(
							'description' => __( 'Singular name.', 'buddyboss' ),
							'type'        => 'string',
							'context'     => array( 'embed', 'view', 'edit' ),
							'readonly'    => true,
						),
					),
				),
				'has_directory'  => array(
					'description' => __( 'Whether the profile type should have its own type-specific directory.', 'buddyboss' ),
					'type'        => 'boolean',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				),
				'name'           => array(
					'description' => __( 'Slug of the member type.', 'buddyboss' ),
					'type'        => 'string',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				),
				'directory_slug' => array(
					'description' => __( 'Directory slug of the member type.', 'buddyboss' ),
					'type'        => 'string',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				),
			),
		);

		$post_types = get_post_types();

		if (
			! empty( $post_types )
			&& (
				in_array( 'bp-member-type', $post_types, true )
				|| in_array( 'bmt-member-type', $post_types, true ) // Added support for BP Member Types.
			)
		) {
			$schema['properties']['enable_filter'] = array(
				'description' => __( 'Display this profile type in "Types" filter in Members Directory.', 'buddyboss' ),
				'type'        => 'boolean',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			);

			$schema['properties']['enable_remove'] = array(
				'description' => __( 'Hide all members of this type from Members Directory.', 'buddyboss' ),
				'type'        => 'boolean',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			);

			$schema['properties']['enable_profile_field'] = array(
				'description' => __( 'Allow users to self-select as this profile type from the "Profile Type" profile field dropdown.', 'buddyboss' ),
				'type'        => 'boolean',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			);

			if (
				bp_is_active( 'groups' )
				&& function_exists( 'bp_restrict_group_creation' )
				&& false === bp_restrict_group_creation()
			) {
				$schema['properties']['bp-group-type'] = array(
					'description' => __( 'Which group types this profile type is allowed to create.', 'buddyboss' ),
					'type'        => 'object',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				);
			}

			if (
				bp_is_active( 'groups' )
				&& function_exists( 'bp_disable_group_type_creation' )
				&& function_exists( 'bp_enable_group_auto_join' )
				&& true === bp_disable_group_type_creation()
				&& true === bp_enable_group_auto_join()
			) {
				$schema['properties']['bp-group-type-auto-join'] = array(
					'description' => __( 'Group types will automatically approve all membership requests from users of this profile type.', 'buddyboss' ),
					'type'        => 'object',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				);
			}

			if (
				bp_is_active( 'invites' )
				&& function_exists( 'bp_disable_invite_member_type' )
				&& true === bp_disable_invite_member_type()
			) {
				$schema['properties']['bp-member-type-enabled-invite'] = array(
					'description' => __( 'Allow members to select the profile type that the invited recipient will be automatically assigned to on registration.', 'buddyboss' ),
					'type'        => 'boolean',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				);

				$schema['properties']['bp-member-type-invite'] = array(
					'description' => __( 'Allowed profile types to select on the email invites.', 'buddyboss' ),
					'type'        => 'object',
					'context'     => array( 'embed', 'view', 'edit' ),
					'readonly'    => true,
				);
			}

			$schema['properties']['wp_roles'] = array(
				'description' => __( 'Users of this profile type will be auto-assigned to the following WordPress roles.', 'buddyboss' ),
				'type'        => 'array',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			);

		}

		/**
		 * Filters the xprofile field group schema.
		 *
		 * @param array $schema The endpoint schema.
		 */
		return apply_filters( 'bp_rest_xprofile_types_schema', $schema );
	}

Changelog

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.