LLMS_Lesson_Handler
Contents
Source Source
File: includes/class.llms.lesson.handler.php
class LLMS_Lesson_Handler { public function __construct( $lesson ) {} public static function get_lesson_options_for_select_list() { $lessons = LLMS_Post_Handler::get_posts( 'lesson' ); $options = array(); if ( ! empty( $lessons ) ) { foreach ( $lessons as $key => $value ) { // Get parent course if assigned. $parent_course = get_post_meta( $value->ID, '_llms_parent_course', true ); if ( $parent_course ) { $title = $value->post_title . ' ( ' . get_the_title( $parent_course ) . ' )'; } else { $title = $value->post_title . ' ( ' . __( 'unassigned', 'lifterlms' ) . ' )'; } $options[ $value->ID ] = $title; } } return $options; } /** * Assigns the lesson to a section and course, optionally by duplicating it. * * @since 1.2.4 Introduced. * @deprecated 5.7.0 There is not a replacement. * * @param int $course_id * @param int $section_id * @param int $lesson_id * @param bool $duplicate * @param bool $reset_order * @return false|int|WP_Error */ public static function assign_to_course( $course_id, $section_id, $lesson_id, $duplicate = true, $reset_order = true ) { llms_deprecated_function( __METHOD__, '5.7.0' ); // Get position of next lesson. $section = new LLMS_Section( $section_id ); $lesson_order = $section->get_next_available_lesson_order(); // First determine if lesson is associated with a course. // We need to know this because if it is already associated then we duplicate it and assign the dupe. $parent_course = get_post_meta( $lesson_id, '_llms_parent_course', true ); $parent_section = get_post_meta( $lesson_id, '_llms_parent_section', true ); // Parent course exists, lets dupe this baby!. if ( $parent_course && true == $duplicate ) { $lesson_id = self::duplicate_lesson( $course_id, $section_id, $lesson_id ); } else { // Add parent section and course to new lesson. update_post_meta( $lesson_id, '_llms_parent_section', $section_id ); update_post_meta( $lesson_id, '_llms_parent_course', $course_id ); } if ( $reset_order ) { update_post_meta( $lesson_id, '_llms_order', $lesson_order ); } return $lesson_id; } public static function duplicate_lesson( $course_id, $section_id, $lesson_id ) { if ( ! isset( $course_id ) || ! isset( $section_id ) || ! isset( $lesson_id ) ) { return false; } // Duplicate the lesson. $new_lesson_id = self::duplicate( $lesson_id ); if ( ! $new_lesson_id ) { return false; } // Add parent section and course to new lesson. update_post_meta( $new_lesson_id, '_llms_parent_section', $section_id ); update_post_meta( $new_lesson_id, '_llms_parent_course', $course_id ); return $new_lesson_id; } public static function duplicate( $post_id ) { // Make sure we have a post id and it returns a post. if ( ! isset( $post_id ) ) { return false; } $post_obj = get_post( $post_id ); // Last check. if ( ! isset( $post_obj ) || null == $post_obj ) { return false; } // No going back now. // Create duplicate post. $args = array( 'comment_status' => $post_obj->comment_status, 'ping_status' => $post_obj->ping_status, 'post_author' => $post_obj->post_author, 'post_content' => $post_obj->post_content, 'post_excerpt' => $post_obj->post_excerpt, 'post_name' => $post_obj->post_name, 'post_parent' => $post_obj->post_parent, 'post_status' => 'publish', 'post_title' => $post_obj->post_title, 'post_type' => $post_obj->post_type, 'to_ping' => $post_obj->to_ping, 'menu_order' => $post_obj->menu_order, 'post_password' => $post_obj->post_password, ); // Create the duplicate post. $new_post_id = wp_insert_post( $args ); if ( $new_post_id ) { // Get all current post terms and set them to the new post. $taxonomies = get_object_taxonomies( $post_obj->post_type ); foreach ( $taxonomies as $taxonomy ) { $post_terms = wp_get_object_terms( $post_obj->ID, $taxonomy, array( 'fields' => 'slugs', ) ); wp_set_object_terms( $new_post_id, $post_terms, $taxonomy, false ); } // Duplicate meta. $insert_meta = self::duplicate_meta( $post_id, $new_post_id ); } return $new_post_id; } public static function duplicate_meta( $post_id, $new_post_id ) { global $wpdb; // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared // Duplicate all post meta. $post_meta_infos = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id" ); if ( count( $post_meta_infos ) != 0 ) { $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) "; foreach ( $post_meta_infos as $meta_info ) { // Do not copy the following meta values. if ( '_llms_parent_section' === $meta_info->meta_key ) { $meta_info->meta_value = ''; } if ( '_llms_parent_course' === $meta_info->meta_key ) { $meta_info->meta_value = ''; } if ( '_prerequisite' === $meta_info->meta_key ) { $meta_info->meta_value = ''; } if ( '_has_prerequisite' === $meta_info->meta_key ) { $meta_info->meta_value = ''; } $meta_key = $meta_info->meta_key; $meta_value = addslashes( $meta_info->meta_value ); $sql_query_sel[] = "SELECT $new_post_id, '$meta_key', '$meta_value'"; } $sql_query .= implode( ' UNION ALL ', $sql_query_sel ); $insert_post_meta = $wpdb->query( $sql_query ); return $insert_post_meta; } // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct
- assign_to_course — Assigns the lesson to a section and course, optionally by duplicating it. — deprecated
- duplicate
- duplicate_lesson
- duplicate_meta
- get_lesson_options_for_select_list
Changelog Changelog
Version | Description |
---|---|
5.7.0 | Deprecated the LLMS_Lesson_Handler::assign_to_course() method with no replacement. |
1.0.0 | Introduced. |