$stat ) { $course_detail = get_page_by_title( $p_course_name, OBJECT, get_post_type( $course_id ) ); if( $course_detail->ID == $course_id ) { $notification_message = self::get_notification_message( $course_status, $course_id, $user_id ); ?> " . __( "Adaptive Learning Stats:", "ld-adaptive-learning" ) . "
:
:
:
:
:
:
'; $output .= ''. __( 'Associated Course: ', 'ld-adaptive-learning' ) .''; $output .= $notification_message; $output .= '
'; } return $output; } public static function child_message( $att ) { $content = "ok"; $defaults = array( 'content' => $content, 'course_id' => 1861, 'user_id' => get_current_user_id(), 'autop' => true ); $att .= $defaults; return $att; } /** * Uses the code from `learndash_profile` shortcode in ld-course-info-widget.php * * @param $user_id * @return $quiz_attempts (Quiz datas) */ public static function get_quiz_data ( $user_id ) { $atts["user_id"]= $user_id; $usermeta = get_user_meta ( $atts["user_id"], "_sfwd-quizzes", true ); $quiz_attempts_meta = empty ( $usermeta ) ? false : $usermeta; $quiz_attempts = array(); if ( ! empty( $quiz_attempts_meta ) ) { foreach ( $quiz_attempts_meta as $quiz_attempt ) { $c = learndash_certificate_details ( $quiz_attempt["quiz"], $atts["user_id"] ); $quiz_attempt["post"] = get_post ( $quiz_attempt["quiz"] ); $quiz_attempt["percentage"] = !empty ( $quiz_attempt["percentage"] ) ? $quiz_attempt["percentage"] : ( !empty ( $quiz_attempt["count"] ) ? $quiz_attempt["score"] * 100 / $quiz_attempt["count"] : 0 ); if ( $atts["user_id"] == self::$user_id && !empty( $c["certificateLink"] ) && ( ( isset ( $quiz_attempt["percentage"] ) && $quiz_attempt["percentage"] >= $c["certificate_threshold"] * 100 ) ) ) { $quiz_attempt["certificate"] = $c; } $quiz_attempts[] = $quiz_attempt; } } return $quiz_attempts; } /** * Evaluate Course level from Quiz Percentages * * @param $quiz_data * @return course level */ public static function get_course_level ( $quiz_data, $p_course_id ) { if ( !$quiz_data || !is_array ( $quiz_data ) ) { return false; } $perc = 0; $total_quiz = count ( $quiz_data ); // Calculates the avg perc for perc of all quiuzzes foreach ( $quiz_data as $data ) { $perc = $perc + $data["percentage"]; } $avg_perc = $perc / $total_quiz; // save avg_perc self::$avg_perc = $avg_perc; $arr = get_user_meta( self::$user_id, "ld_al_pre_req_course_perc", 1 ); $arr[$p_course_id] = self::$avg_perc; // save avg perc for the course update_user_meta( self::$user_id , "ld_al_pre_req_course_perc", $arr ); return $avg_perc; } /** * Evaluate Course level for All Pre-Reqiuisite course quizzes * * @param $quiz_data * @return course level */ public static function get_all_course_level ( $arr, $total_courses ) { // Calculates the avg perc for perc of all quiuzzes $total_perc = 0; if ( is_array( $arr ) && count( $arr ) > 0 ) { foreach ( $arr as $perc ) { $total_perc = $total_perc + $perc; } } $avg_perc = $total_perc / $total_courses; // save avg_perc self::$avg_perc = $avg_perc; return $avg_perc; } /** * Get course level id * * @param $course_level * @return bool */ public static function get_course_level_id ( $course_level ) { if( !$course_level ) { if( $course_level != 0 ) { return false; } } $courses_level_args = array ( "posts_per_page" => -1, "post_type" => "sfwd-courses-levels", "post_status" => "publish" ); $courses_levels = get_posts ( $courses_level_args ); foreach ( $courses_levels as $courses_level ) { $level_meta = get_post_meta ( $courses_level->ID, "_sfwd-courses-levels", true ); $from = $level_meta["sfwd-courses-levels_from_percentage"]; $to = $level_meta["sfwd-courses-levels_to_percentage"]; if ( $from <= $course_level && $to >= $course_level ) { // save level name self::$level = $courses_level->post_title; // save from perc self::$from_perc = $from; // save to perc self::$to_perc = $to; return $courses_level->ID; } else { continue; } } $course_level = round( $course_level ); return self::get_course_level_id( $course_level ); } /** * Assign child course to user * * @param $level_id * @return bool */ public static function assigned_course ( $level_id ) { if ( !$level_id ) { return false; } $courses_args = array ( "posts_per_page" => -1, "post_type" => "sfwd-courses", "post_status" => "publish" ); $courses = get_posts ( $courses_args ); foreach ( $courses as $course ) { $is_parent_course = is_parent_course ($course); // If not parent no need to proceed with the loop if ( $is_parent_course ) { continue; } $course_meta = get_post_meta ( $course->ID, "_sfwd-courses", true ); $course_prereq = $course_meta["sfwd-courses_course_prerequisite"]; if ( ! is_array( $course_prereq ) ) { $p_course_id = $course_prereq; // If not the child of the completed course if ( $p_course_id != self::$parent_course_id ) { continue; } } else { $p_course_id_arr = $course_prereq; // If not the child of the completed course if ( ! in_array( self::$parent_course_id, $p_course_id_arr ) ) { continue; } } if ( isset ( $course_meta[ self::$compare_field ] ) && $course_meta[ self::$compare_field ] == "ALL" ) { $total_prereq = count($course_prereq); $arr = get_user_meta( self::$user_id, "ld_al_pre_req_course_perc", 1 ); $saved_prereq = 0; if( is_array( $arr ) ) { $saved_prereq = count($arr); } // All Prereqs are completed if ( $saved_prereq == $total_prereq ) { $course_level = self::get_all_course_level( $arr, $saved_prereq ); $level_id = self::get_course_level_id( $course_level ); } } $meta_level_id = (int) $course_meta["sfwd-courses_course_level"]; if( $meta_level_id === $level_id ) { // save child course name self::$child_course = $course->post_title; do_action ( "ld_al_before_child_course_assign", self::$user_id, $course->ID ); ld_update_course_access ( self::$user_id, $course->ID ); } } } /** * Executes on user update on backend, checks if user data is deleted */ public static function admin_user_update( $user_id ) { $logged_user_id = get_current_user_id (); if ( !current_user_can ( 'edit_user', $logged_user_id ) ) { return; } if ( ! learndash_is_admin_user () ) { return; } if ( ! empty( $user_id ) && ! empty( $_POST['learndash_delete_user_data'] ) && $user_id == $_POST['learndash_delete_user_data'] ) { // Remove stats if user data removed delete_user_meta ( $user_id, "ld_adaptive_learning_stats" ); } } /** * Branding notification */ public static function furthur_assistance_review() { $user_data = get_userdata( get_current_user_id() ); $user_branding_meta = get_user_meta( get_current_user_id(), "rating_action", true ); if( "confirmed" != $user_branding_meta && "temp_hide" != get_transient( "al-branding" ) ) { ?>