BP_REST_Group_Settings_Endpoint::get_forum_fields( integer $group_id )

Get Group forum Settings.

Description

Parameters

$group_id

(integer) (Required) Group ID.

Return

(mixed|void)

Source

File: bp-groups/classes/class-bp-rest-group-settings-endpoint.php

	protected function get_forum_fields( $group_id ) {
		$fields                             = array();
		buddypress()->groups->current_group = groups_get_group( $group_id );

		if ( ! bp_is_active( 'forums' ) || ! function_exists( 'bbp_is_group_forums_active' ) || ! bbp_is_group_forums_active() ) {
			return new WP_Error(
				'bp_rest_invalid_group_setting_nav',
				__( 'Sorry, you are not allowed to see the forum group settings options.', 'buddyboss' ),
				array(
					'status' => 400,
				)
			);
		}

		$forum_id  = 0;
		$forum_ids = bbp_get_group_forum_ids( $group_id );

		// Get the first forum ID.
		if ( ! empty( $forum_ids ) ) {
			$forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids;
		}

		$checked = bp_get_new_group_enable_forum() || bp_group_is_forum_enabled( $group_id );

		$fields[] = array(
			'label'       => esc_html__( 'Group Forum Settings', 'buddyboss' ),
			'name'        => '',
			'description' => esc_html__( 'Create a discussion forum to allow members of this group to communicate in a structured, bulletin-board style fashion.', 'buddyboss' ),
			'field'       => 'heading',
			'value'       => '',
			'options'     => array(),
		);

		$fields[] = array(
			'label'       => esc_html__( 'Yes. I want this group to have a discussion forum.', 'buddyboss' ),
			'name'        => 'bbp-edit-group-forum',
			'description' => esc_html__( 'Saying no will not delete existing forum content.', 'buddyboss' ),
			'field'       => 'checkbox',
			'value'       => $checked,
			'options'     => array(),
		);

		if ( bbp_is_user_keymaster() ) {
			$forum_field = array(
				'label'       => esc_html__( 'Group Forum:', 'buddyboss' ),
				'name'        => 'bbp_group_forum_id',
				'description' => esc_html__( 'Only site administrators can reconfigure which forum belongs to this group.', 'buddyboss' ),
				'field'       => 'select',
				'value'       => $forum_id,
				'options'     => array(),
			);

			$forums = get_posts(
				array(
					'post_type'          => 'forum',
					'numberposts'        => -1,
					'orderby'            => 'menu_order title',
					'order'              => 'ASC',
					'disable_categories' => true,
				)
			);

			if ( ! empty( $forums ) ) {
				$forum_field['options'][] = array(
					'label'             => esc_html__( '(No Forum)', 'buddyboss' ),
					'value'             => '',
					'description'       => '',
					'is_default_option' => empty( $forum_id ),
				);
				foreach ( $forums as $forum ) {
					$title = $forum->post_title;
					if ( '' === $title ) {
						/* translators: %d: ID of a post. */
						$title = sprintf( __( '#%d (no title)', 'buddyboss' ), $forum->ID );
					}
					$forum_field['options'][] = array(
						'label'             => $title,
						'value'             => $forum->ID,
						'description'       => '',
						'is_default_option' => $forum_id === $forum->ID,
					);
				}
			}

			$fields[] = $forum_field;
		}

		return apply_filters( 'bp_rest_group_settings_forum', $fields, $group_id );

	}

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.