can_impact_item() instanceof WP_Error ) {
return $html;
}
$courseModel = $userCourseModel->get_course_model();
if ( ! $courseModel ) {
return $html;
}
$total_items = $courseModel->count_items();
if ( empty( $total_items ) ) {
return $html;
}
$itemModelContinue = $userCourseModel->get_item_continue();
if ( empty( $itemModelContinue ) ) {
$link_continue = $courseModel->get_permalink();
} else {
$link_continue = $courseModel->get_item_link( $itemModelContinue->ID );
}
$html = sprintf(
'%s',
esc_url_raw( $link_continue ),
sprintf(
'',
esc_html__( 'Continue', 'learnpress' )
)
);
return apply_filters( 'learn-press/user/course/html-button-continue', $html, $userCourseModel );
}
/**
* HTML button finish course.
*
* @param UserCourseModel $userCourseModel
*
* @return string
* @since 4.2.7.5
* @version 1.0.0
*/
public function html_btn_finish( UserCourseModel $userCourseModel ): string {
$html = '';
$can_finish = $userCourseModel->can_finish();
if ( is_wp_error( $can_finish ) ) {
return $html;
}
$section = apply_filters(
'learn-press/user/course/html-button-finish',
[
'form' => sprintf(
'
',
],
$userCourseModel
);
return Template::combine_components( $section );
}
/**
* HTML button retake course
*
* @param UserCourseModel $userCourseModel
*
* @return string
* @since 4.2.7.6
* @version 1.0.0
*/
public function html_btn_retake( UserCourseModel $userCourseModel ): string {
$retake_remaining = $userCourseModel->can_retake();
if ( $retake_remaining === 0 ) {
return '';
}
$html_btn = sprintf(
'',
__( 'Retake course', 'learnpress' ),
$retake_remaining
);
$section = apply_filters(
'learn-press/course/html-button-retake',
[
'form' => sprintf(
'',
],
$userCourseModel
);
return Template::combine_components( $section );
}
/**
* HTML count items completed of Course.
*
* @return mixed|string|null
* @since 4.2.7.6
* @version 1.0.1
*/
public function html_count_items_completed( UserCourseModel $userCourseModel ): string {
$html = '';
// For case Guest user.
$userModel = $userCourseModel->get_user_model();
if ( ! $userModel ) {
return $html;
}
$courseModel = $userCourseModel->get_course_model();
$item_types = CourseModel::item_types_support();
$count_items_completed = $userCourseModel->count_items_completed();
foreach ( $item_types as $item_type ) {
$count_item = $courseModel->count_items( $item_type );
$count_item_completed = $count_items_completed->{$item_type . '_status_completed'} ?? '';
if ( empty( $count_item_completed ) ) {
continue;
}
$html .= sprintf(
'%s%s
',
sprintf(
'%s %s: ',
LP_Helper::get_i18n_string_plural( $count_item, $item_type, false ),
__( 'completed', 'learnpress' )
),
sprintf( '%d/%d', $count_item_completed, $count_item )
);
}
return apply_filters( 'learn-press/user/course/html-count-items-completed', $html, $userCourseModel );
}
/**
* HTMl progress course.
*
* @param UserCourseModel $userCourseModel
*
* @return mixed|null
* @since 4.2.7.5
* @version 1.0.1
*/
public function html_progress( UserCourseModel $userCourseModel ) {
$html = '';
// For case Guest user.
$userModel = $userCourseModel->get_user_model();
if ( ! $userModel ) {
return $html;
}
$courseModel = $userCourseModel->get_course_model();
$evaluation_type = $courseModel::get_evaluation_types( $courseModel->get_evaluation_type() );
$calculate = $userCourseModel->calculate_course_results();
$passing_condition = $courseModel->get_passing_condition();
if ( array_key_first( $evaluation_type ) === 'evaluate_final_quiz' ) {
$final_quiz = $courseModel->get_final_quiz();
if ( $final_quiz ) {
$quizModel = QuizPostModel::find( $final_quiz, true );
$passing_condition = $quizModel->get_passing_grade();
}
}
$total_items = $courseModel->count_items();
$progress_items_completed_percent = round(
$total_items > 0 ? $calculate['completed_items'] * 100 / $total_items : 0,
2
);
if ( $progress_items_completed_percent > 100 ) {
$progress_items_completed_percent = 100;
}
$section = [
'wrapper' => '',
'progress' => sprintf(
'
%s %s
',
esc_html__( 'Course progress:', 'learnpress' ),
sprintf(
'
%s%s
',
$progress_items_completed_percent,
'%'
)
),
'line-progress' => $this->html_items_completed_progress_bar( $userCourseModel ),
'passing-progress' => sprintf(
'
%s %s
',
esc_html__( 'Passing grade progress:', 'learnpress' ),
sprintf(
'
%s%s
',
$calculate['result'],
'%'
),
sprintf(
'%s. %s',
isset( $evaluation_type['label'] ) ? esc_attr( $evaluation_type['label'] ) : '',
esc_attr( sprintf( __( 'Passing condition: %s%%', 'learnpress' ), $passing_condition ) )
)
),
'wrapper_end' => '
',
];
$html = Template::combine_components( $section );
return apply_filters( 'learn-press/user/course/html-progress', $html, $userCourseModel );
}
/**
* HTML course items completed progress bar.
*
* @param UserCourseModel $userCourseModel
*
* @return string
*
* @since 4.3.2.6
* @version 1.0.0
*/
public function html_passing_grade_progress_bar( UserCourseModel $userCourseModel ): string {
$courseModel = $userCourseModel->get_course_model();
$calculate = $userCourseModel->calculate_course_results();
$passing_condition = $courseModel->get_passing_condition();
$section = [
'wrapper' => '',
'line-passing-progress' => sprintf(
'
',
$calculate['result'],
$passing_condition
),
'wrapper_end' => '
',
];
return Template::combine_components( $section );
}
/**
* HTML course items completed progress bar.
*
* @param UserCourseModel $userCourseModel
*
* @return string
*
* @since 4.3.2.6
* @version 1.0.0
*/
public function html_items_completed_progress_bar( UserCourseModel $userCourseModel ): string {
$courseModel = $userCourseModel->get_course_model();
$calculate = $userCourseModel->calculate_course_results();
$total_items = $courseModel->count_items();
$progress_items_completed_percent = round(
$total_items > 0 ? $calculate['completed_items'] * 100 / $total_items : 0,
2
);
if ( $progress_items_completed_percent > 100 ) {
$progress_items_completed_percent = 100;
}
$section = [
'wrapper' => sprintf(
'',
sprintf(
esc_html__( '%1$d of %2$d items completed', 'learnpress' ),
$calculate['completed_items'],
$total_items
)
),
'line-progress' => sprintf(
'
',
$progress_items_completed_percent,
),
'wrapper_end' => '
',
];
return Template::combine_components( $section );
}
/**
* HTMl progress course.
*
* @param UserCourseModel $userCourseModel
*
* @return mixed|null
* @since 4.2.7.6
* @version 1.0.1
*/
public function html_message_lock( UserCourseModel $userCourseModel ): string {
$html = '';
// For case Guest user.
$userModel = $userCourseModel->get_user_model();
if ( ! $userModel ) {
return $html;
}
$courseModel = $userCourseModel->get_course_model();
if ( $courseModel->enable_block_when_finished() && $userCourseModel->is_finished() ) {
$message = __( 'This course is finished.', 'learnpress' );
} elseif ( $courseModel->enable_block_when_expire() && $userCourseModel->timestamp_remaining_duration() === 0 ) {
$message = __( 'This course is expired.', 'learnpress' );
} else {
return $html;
}
$html = Template::print_message( $message, 'warning', false );
return apply_filters( 'learn-press/user/course/html-message-lock', $html, $userCourseModel );
}
}