LLMS_REST_Courses_Controller::prepare_object_for_response( LLMS_Course $course, WP_REST_Request $request )

Prepare a single object output for response.


Parameters Parameters

$course

(LLMS_Course) (Required) Course object.

$request

(WP_REST_Request) (Required) Full details about the request.


Top ↑

Return Return

(array)


Top ↑

Source Source

File: libraries/lifterlms-rest/includes/server/class-llms-rest-courses-controller.php

	/**
	 * Prepare a single object output for response.
	 *
	 * @since 1.0.0-beta.1
	 * @since 1.0.0-beta.8 Fixed `sales_page_type` not set as `none` if course's `sales_page_content_type` property is empty.
	 *                     Also Renamed `sales_page_page_type` and `sales_page_page_url` properties, respectively to `sales_page_type` and `sales_page_url` according to the specs.
	 *                     Always return `sales_page_url` and `sales_page_page_id` when in `edit` context.
	 * @since 1.0.0-beta.9 Fixed `sales_page_url` not returned in `edit` context.
	 *                     Added `llms_rest_prepare_course_object_response` filter hook.
	 *
	 * @param LLMS_Course     $course  Course object.
	 * @param WP_REST_Request $request Full details about the request.
	 * @return array
	 */
	protected function prepare_object_for_response( $course, $request ) {

		$data = parent::prepare_object_for_response( $course, $request );

		// Catalog visibility.
		$data['catalog_visibility'] = $course->get_product()->get_catalog_visibility();

		// Categories.
		$data['categories'] = $course->get_categories(
			array(
				'fields' => 'ids',
			)
		);

		// Tags.
		$data['tags'] = $course->get_tags(
			array(
				'fields' => 'ids',
			)
		);

		// Difficulties.
		$difficulties         = $course->get_difficulty( 'term_id' );
		$difficulties         = empty( $difficulties ) ? array() : array( $difficulties );
		$data['difficulties'] = $difficulties;

		// Tracks.
		$data['tracks'] = $course->get_tracks(
			array(
				'fields' => 'ids',
			)
		);

		// Instructors.
		$instructors         = $course->get_instructors();
		$instructors         = empty( $instructors ) ? array() : wp_list_pluck( $instructors, 'id' );
		$data['instructors'] = $instructors;

		// Audio Embed.
		$data['audio_embed'] = $course->get( 'audio_embed' );

		// Video Embed.
		$data['video_embed'] = $course->get( 'video_embed' );

		// Video tile.
		$data['video_tile'] = 'yes' === $course->get( 'tile_featured_video' );

		// Capacity.
		$data['capacity_enabled'] = 'yes' === $course->get( 'enable_capacity' );

		$data['capacity_limit']   = $course->get( 'capacity' );
		$data['capacity_message'] = array(
			'raw'      => $course->get( 'capacity_message', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'capacity_message' ) ),
		);

		// Prerequisite.
		$data['prerequisite'] = (int) $course->get_prerequisite_id();

		// Prerequisite track.
		$data['prerequisite_track'] = (int) $course->get_prerequisite_id( 'course_track' );

		// Length.
		$data['length'] = array(
			'raw'      => $course->get( 'length', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'length' ) ),
		);

		// Restricted message.
		$data['restricted_message'] = array(
			'raw'      => $course->get( 'content_restricted_message', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'content_restricted_message' ) ),
		);

		// Access open/closed.
		$data['access_opens_date']  = $course->get_date( 'start_date', 'Y-m-d H:i:s' );
		$data['access_closes_date'] = $course->get_date( 'end_date', 'Y-m-d H:i:s' );

		$data['access_opens_message'] = array(
			'raw'      => $course->get( 'course_opens_message', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'course_opens_message' ) ),
		);

		$data['access_closes_message'] = array(
			'raw'      => $course->get( 'course_closed_message', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'course_closed_message' ) ),
		);

		// Enrollment open/closed.
		$data['enrollment_opens_date']  = $course->get_date( 'enrollment_start_date', 'Y-m-d H:i:s' );
		$data['enrollment_closes_date'] = $course->get_date( 'enrollment_end_date', 'Y-m-d H:i:s' );

		$data['enrollment_opens_message'] = array(
			'raw'      => $course->get( 'enrollment_opens_message', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'enrollment_opens_message' ) ),
		);

		$data['enrollment_closes_message'] = array(
			'raw'      => $course->get( 'enrollment_closed_message', $raw = true ),
			'rendered' => do_shortcode( $course->get( 'enrollment_closed_message' ) ),
		);

		// Sales page page type.
		$data['sales_page_type'] = $course->get( 'sales_page_content_type' );
		$data['sales_page_type'] = $data['sales_page_type'] ? $data['sales_page_type'] : 'none';

		// Sales page id.
		if ( 'page' === $data['sales_page_type'] || 'edit' === $request['context'] ) {
			$data['sales_page_page_id'] = $course->get( 'sales_page_content_page_id' );
		}

		// Sales page url.
		if ( 'url' === $data['sales_page_type'] || 'edit' === $request['context'] ) {
			$data['sales_page_url'] = $course->get( 'sales_page_content_url' );


Top ↑

Changelog Changelog

Changelog
Version Description
1.0.0-beta.9 Fixed sales_page_url not returned in edit context. Added llms_rest_prepare_course_object_response filter hook.
1.0.0-beta.8 Fixed sales_page_type not set as none if course's sales_page_content_type property is empty. Also Renamed sales_page_page_type and sales_page_page_url properties, respectively to sales_page_type and sales_page_url according to the specs. Always return sales_page_url and sales_page_page_id when in edit context.
1.0.0-beta.1 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.