LLMS_REST_Lessons_Controller::prepare_item_for_database( WP_REST_Request $request )
Prepares a single lesson for create or update.
Parameters Parameters
- $request
-
(WP_REST_Request) (Required) Request object.
Return Return
(array|WP_Error) Array of lesson args or WP_Error.
Source Source
File: libraries/lifterlms-rest/includes/server/class-llms-rest-lessons-controller.php
public function get_parent_id() { return isset( $this->parent_id ) ? $this->parent_id : null; } /** * Prepares a single lesson for create or update. * * @since 1.0.0-beta.7 * @since 1.0.0-beta.15 Fixed setting/updating parent section/course. * @since 1.0.0-beta.23 Replaced the call to the deprecated `LLMS_Lesson::get_parent_course()` method with `LLMS_Lesson::get( 'parent_course' )`. * @since 1.0.0-beta.25 Remove now useless check on the existing parent course id when setting it automatically on parent section's id update. * * @param WP_REST_Request $request Request object. * @return array|WP_Error Array of lesson args or WP_Error. */ protected function prepare_item_for_database( $request ) { $prepared_item = parent::prepare_item_for_database( $request ); $schema = $this->get_item_schema(); // Lesson's audio embed URL. if ( ! empty( $schema['properties']['audio_embed'] ) && isset( $request['audio_embed'] ) ) { $prepared_item['audio_embed'] = $request['audio_embed']; } // Lesson's video embed URL. if ( ! empty( $schema['properties']['video_embed'] ) && isset( $request['video_embed'] ) ) { $prepared_item['video_embed'] = $request['video_embed']; } // Parent (section) id. if ( ! empty( $schema['properties']['parent_id'] ) && isset( $request['parent_id'] ) ) { // Retrieve the parent section. $parent_section = llms_get_post( $request['parent_id'] ); $prepared_item['parent_section'] = $parent_section && is_a( $parent_section, 'LLMS_Section' ) ? $request['parent_id'] : 0; // Retrieve the parent course id. if ( $prepared_item['parent_section'] ) { $parent_course = $parent_section->get_course(); } $prepared_item['parent_course'] = ! empty( $parent_course ) && is_a( $parent_course, 'LLMS_Course' ) ? $parent_course->get( 'id' ) : 0; } // Course id. if ( ! empty( $schema['properties']['course_id'] ) && isset( $request['course_id'] ) ) { $parent_course = llms_get_post( $request['course_id'] ); if ( ! $parent_course || ! is_a( $parent_course, 'LLMS_Course' ) ) { return llms_rest_bad_request_error( __( 'Invalid course_id param. It must be a valid Course ID.', 'lifterlms' ) ); } $prepared_item['parent_course'] = $request['course_id']; } // Order. if ( ! empty( $schema['properties']['order'] ) && isset( $request['order'] ) ) { // order must be > 0. It's sanitized as absint so it cannot come as negative value. if ( 0 === $request['order'] ) { return llms_rest_bad_request_error( __( 'Invalid order param. It must be greater than 0.', 'lifterlms' ) ); } $prepared_item['order'] = $request['order']; } // Public (free lesson). if ( ! empty( $schema['properties']['public'] ) && isset( $request['public'] ) ) { $prepared_item['free_lesson'] = empty( $request['public'] ) ? 'no' : 'yes'; } // Points. if ( ! empty( $schema['properties']['points'] ) && isset( $request['points'] ) ) { $prepared_item['points'] = $request['points']; } // Drip days. if ( ! empty( $schema['properties']['drip_days'] ) && isset( $request['drip_days'] ) ) { // drip_days must be > 0. It's sanitized as absint so it cannot come as negative value. if ( 0 === $request['drip_days'] ) { return llms_rest_bad_request_error( __( 'Invalid drip_days param. It must be greater than 0.', 'lifterlms' ) ); } $prepared_item['days_before_available'] = $request['drip_days']; } // Drip date. if ( ! empty( $schema['properties']['drip_date'] ) && isset( $request['drip_date'] ) ) { $drip_date = rest_parse_date( $request['drip_date'] ); // Drip date is nullable. if ( empty( $drip_date ) ) { $prepared_item['date_available'] = ''; $prepared_item['time_available'] = ''; } else { $prepared_item['date_available'] = date_i18n( 'Y-m-d', $drip_date ); $prepared_item['time_available'] = date_i18n( 'H:i:s', $drip_date ); } } // Drip method. if ( ! empty( $schema['properties']['drip_method'] ) && isset( $request['drip_method'] ) ) { $prepared_item['drip_method'] = 'none' === $request['drip_method'] ? '' : $request['drip_method']; } // Quiz enabled. if ( ! empty( $schema['properties']['quiz']['properties']['enabled'] ) && isset( $request['quiz']['enabled'] ) ) { $prepared_item['quiz_enabled'] = empty( $request['quiz']['enabled'] ) ? 'no' : 'yes'; } // Quiz id. if ( ! empty( $schema['properties']['quiz']['properties']['id'] ) && isset( $request['quiz']['id'] ) ) { // check if quiz exists. $quiz = llms_get_post( $request['quiz']['id'] ); if ( is_a( $quiz, 'LLMS_Quiz' ) ) { $prepared_item['quiz'] = $request['quiz']['id']; } } // Quiz progression. if ( ! empty( $schema['properties']['quiz']['properties']['progression'] ) && isset( $request['quiz']['progression'] ) ) {
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
1.0.0-beta.7 | |
1.0.0-beta.25 | Remove now useless check on the existing parent course id when setting it automatically on parent section's id update. |
1.0.0-beta.23 | Replaced the call to the deprecated LLMS_Lesson::get_parent_course() method with LLMS_Lesson::get( 'parent_course' ) . |
1.0.0-beta.15 | Introduced. |