function complete_course($course_id, $student_id) { global $wpdb; $_course = new NamasteLMSCourseModel(); $certificates = $wpdb->get_results("SELECT * FROM " . NAMASTE_CERTIFICATES . " \n\t\t\tWHERE course_ids LIKE '%|{$course_id}|%' "); foreach ($certificates as $certificate) { // see if the other courses are completed $courses_completed = true; $course_ids = explode("|", $certificate->course_ids); foreach ($course_ids as $cid) { if (empty($cid) or $cid == $course_id) { continue; } if (!$_course->is_ready($cid, $student_id)) { $courses_completed = false; } } // assign this certificate if ($courses_completed) { $wpdb->query($wpdb->prepare("INSERT IGNORE INTO " . NAMASTE_STUDENT_CERTIFICATES . " SET\n\t\t\t\t\tstudent_id=%d, certificate_id=%d, date=%s", $student_id, $certificate->id, date("Y-m-d"))); do_action('namaste_achieved_certificate', $student_id, $certificate->id); } } // end foreach certificate }
static function complete($lesson_id, $student_id) { global $wpdb; $_course = new NamasteLMSCourseModel(); // find the lesson $lesson = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE ID=%d", $lesson_id)); $course_id = get_post_meta($lesson->ID, 'namaste_course', true); // get course $course = $_course->select($course_id); // mark lesson as completed - at this point we must have student-lesson record $student_lesson = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . NAMASTE_STUDENT_LESSONS . "\n\t\t\tWHERE lesson_id=%d AND student_id=%d", $lesson->ID, $student_id)); if (empty($student_lesson->id)) { return false; } // if the lesson is already completed, don't mark it again if ($student_lesson->status == 1) { return false; } $wpdb->query($wpdb->prepare("UPDATE " . NAMASTE_STUDENT_LESSONS . " \n\t\tSET status = '1', completion_date = %s, completion_time=%s\n\t\tWHERE id=%d", date("Y-m-d", current_time('timestamp')), current_time('mysql'), $student_lesson->id)); // award points? $use_points_system = get_option('namaste_use_points_system'); if ($use_points_system) { $award_points = get_post_meta($lesson_id, 'namaste_award_points', true); if ($award_points === '') { $award_points = get_option('namaste_points_lesson'); } if ($award_points) { NamastePoint::award($student_id, $award_points, sprintf(__('Received %d points for completing lesson "%s".', 'namaste'), $award_points, $lesson->post_title), 'lesson', $lesson_id); } } do_action('namaste_completed_lesson', $student_id, $lesson_id); // insert in history $wpdb->query($wpdb->prepare("INSERT INTO " . NAMASTE_HISTORY . " SET\n\t\t\tuser_id=%d, date=CURDATE(), datetime=NOW(), action='completed_lesson', value=%s, num_value=%d", $student_id, sprintf(__('Completed lesson "%s"', 'namaste'), $lesson->post_title), $lesson_id)); // now see if course should be completed if ($_course->is_ready($course_id, $student_id)) { $_course->complete($course_id, $student_id); } return true; }