esc_html__( 'Course', 'learnpress' ), 'instructor' => esc_html__( 'Author', 'learnpress' ), 'num_of_question' => esc_html__( 'Questions', 'learnpress' ), 'duration' => esc_html__( 'Duration', 'learnpress' ), ); $columns = array_merge( array_slice( $columns, 0, $pos + 1 ), $insert, array_slice( $columns, $pos + 1 ) ); } unset( $columns['taxonomy-lesson-tag'] ); if ( ! empty( $columns['author'] ) ) { unset( $columns['author'] ); } $user = wp_get_current_user(); if ( in_array( LP_TEACHER_ROLE, $user->roles, true ) ) { unset( $columns['instructor'] ); } return $columns; } /** * Set columns can be sortable. * * @return array */ public function get_sortable_columns() { $sortable_columns = parent::get_sortable_columns(); $sortable_columns['instructor'] = array( 'author', 'asc' ); $sortable_columns[ LP_COURSE_CPT ] = array( 'course-name', 'asc' ); $sortable_columns['num_of_question'] = array( 'question-count', 'asc' ); return $sortable_columns; } /** * Column instructor. * * @param WP_Post $post * * @return void */ public function column_instructor( $post ) { try { LP_Abstract_Post_Type::column_author( $post ); } catch ( Throwable $e ) { Template::print_message( $e->getMessage(), Response::STATUS_ERROR ); } } /** * Column course. * * @param WP_Post $post * * @return void */ public function column_lp_course( $post ) { try { $this->render_courses_of_item( $post->ID ); } catch ( Throwable $e ) { Template::print_message( $e->getMessage(), Response::STATUS_ERROR ); } } /** * Column number of questions. * * @param WP_Post $post * * @return void */ public function column_num_of_question( $post ) { try { $quizPostModel = QuizPostModel::find( $post->ID, true ); if ( ! $quizPostModel ) { return; } $count = $quizPostModel->count_questions(); printf( '%s', esc_attr( ! $count ? 'disabled' : '' ), $count ? sprintf( /* translators: %d: question count */ _n( '%d question', '%d questions', $count, 'learnpress' ), $count ) : __( 'This quiz has no questions', 'learnpress' ), esc_html( $count ) ); } catch ( Throwable $e ) { Template::print_message( $e->getMessage(), Response::STATUS_ERROR ); } } /** * Column duration. * * @param WP_Post $post * * @return void */ public function column_duration( $post ) { try { $quizPostModel = QuizPostModel::find( $post->ID, true ); if ( ! $quizPostModel ) { return; } $duration_str = $quizPostModel->get_duration(); $duration_arr = explode( ' ', $duration_str ); $duration = $duration_arr[0]; $duration_type = $duration_arr[1]; if ( $duration > 0 ) { $duration_str = LP_Datetime::get_string_plural_duration( $duration, $duration_type ); } else { $duration_str = __( 'Unlimited', 'learnpress' ); } echo esc_html( $duration_str ); } catch ( Throwable $e ) { Template::print_message( $e->getMessage(), Response::STATUS_ERROR ); } } /** * Column preview. * * @param WP_Post $post * * @return void */ public function column_preview( $post ) { try { printf( '', checked( get_post_meta( $post->ID, '_lp_preview', true ), 'yes', false ), esc_attr( $post->ID ), esc_attr( wp_create_nonce( 'learn-press-toggle-item-preview' ) ) ); } catch ( Throwable $e ) { Template::print_message( $e->getMessage(), Response::STATUS_ERROR ); } } /** * Get the course id currently filtering by. * * @return int|false */ protected function get_filter_course_id() { $course_id = ! empty( $_REQUEST['course'] ) ? absint( $_REQUEST['course'] ) : false; if ( ! $course_id && learn_press_is_support_course_item_type( LP_QUIZ_CPT ) ) { $course_id = false; } return $course_id; } /** * Render the courses an item is assigned to. * * @param int $post_id * * @return void */ protected function render_courses_of_item( int $post_id ) { try { $courses = CourseSectionItemModel::get_courses_from_item_id( $post_id, LP_QUIZ_CPT ); if ( $courses ) { foreach ( $courses as $course ) { $course_id = $course->section_course_id; echo '