Exemple #1
1
 static function enroll($is_manager)
 {
     global $wpdb, $user_ID, $user_email;
     $_course = new NamasteLMSCourseModel();
     $message = '';
     // enroll in course
     $course = $_course->select($_POST['course_id']);
     // course fee?
     $fee = get_post_meta($course->ID, 'namaste_fee', true);
     // When fee is paid, enrollment is automatic so this is just fine here
     if (!empty($fee)) {
         $fee = apply_filters('namaste-coupon-applied', $fee);
     }
     // coupon code from other plugin?
     if ($fee > 0 and !$is_manager) {
         wp_die("You can't enroll yourself in a course when there is a fee");
     }
     $enroll_mode = get_post_meta($course->ID, 'namaste_enroll_mode', true);
     // if already enrolled, just skip this altogether
     if (!NamasteLMSStudentModel::is_enrolled($user_ID, $course->ID)) {
         // depending on mode, status will be either 'pending' or 'enrolled'
         $status = $enroll_mode == 'free' ? 'enrolled' : 'pending';
         $_course->enroll($user_ID, $course->ID, $status);
         if ($enroll_mode == 'free') {
             $message = sprintf(__('You enrolled in "%s"', 'namaste'), $course->post_title);
         } else {
             $message = __('Thank you for your interest in enrolling this course. A manager will review your application.', 'namaste');
         }
     } else {
         $message = __('You have already enrolled in this course', 'namaste');
     }
     return $message;
 }
 private static function enroll($userId, $courseId)
 {
     $_course = new NamasteLMSCourseModel();
     // enroll in course
     $course = $_course->select($courseId);
     $enroll_mode = get_post_meta($course->ID, 'namaste_enroll_mode', true);
     // if already enrolled, just skip this altogether
     $_course->enroll($userId, $course->ID, 'enrolled');
 }
 function student_certificates($student_id)
 {
     global $wpdb;
     $certificates = $wpdb->get_results($wpdb->prepare("SELECT tC.*, tM.id as my_id, tM.date as date \n\t\t\tFROM " . NAMASTE_CERTIFICATES . " tC JOIN " . NAMASTE_STUDENT_CERTIFICATES . " tM ON tM.certificate_id = tC.id\n\t\t\tWHERE tM.student_id=%d ORDER BY tM.date DESC", $student_id));
     // select courses to match to certificates
     $_course = new NamasteLMSCourseModel();
     $courses = $_course->select();
     foreach ($certificates as $cnt => $certificate) {
         $c_courses = array();
         foreach ($courses as $course) {
             if (strstr($certificate->course_ids, "|" . $course->ID . "|")) {
                 $c_courses[] = "<a href='" . get_permalink($course->ID) . "' target='_blank'>" . $course->post_title . "</a>";
             }
         }
         $certificates[$cnt]->courses = implode(", ", $c_courses);
     }
     return $certificates;
 }
 static function manage()
 {
     global $wpdb;
     $_course = new NamasteLMSCourseModel();
     $multiuser_access = 'all';
     $multiuser_access = NamasteLMSMultiUser::check_access('students_access');
     // select all courses
     $courses = $_course->select();
     $courses = apply_filters('namaste-homeworks-select-courses', $courses);
     // if course selected, select lessons and enrolled students
     if (!empty($_GET['course_id'])) {
         do_action('namaste-check-permissions', 'course', $_GET['course_id']);
         // cleanup student record
         if (!empty($_GET['cleanup'])) {
             if ($multiuser_access == 'view') {
                 wp_die(__('You are not allowed to do this.', 'namaste'));
             }
             self::cleanup($_GET['course_id'], $_GET['student_id']);
             //namaste_redirect("admin.php?page=namaste_students&course_id=$_GET[course_id]&status=$_GET[status]");
         }
         // enroll student
         if (!empty($_GET['enroll'])) {
             if ($multiuser_access == 'view') {
                 wp_die(__('You are not allowed to do this.', 'namaste'));
             }
             // find the user
             $error = false;
             if (strstr($_GET['email'], '@')) {
                 $student = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->users} WHERE user_email=%s", $_GET['email']));
             } else {
                 $student = get_user_by('login', $_GET['email']);
             }
             // user exists?
             if (empty($student->ID)) {
                 $error = __('Sorry, I cannot find user with this email or user handle.', 'namaste');
             }
             // allowed to use Namaste!?
             if (!$error and !user_can($student->ID, 'administrator') and !user_can($student->ID, 'namaste')) {
                 $error = __("This user's role does not allow them to use Namaste! LMS. You'll have either to change their role or allow the role work with the LMS from the Settings page", 'namaste');
             }
             // already enrolled?
             if (!$error) {
                 $is_enrolled = $wpdb->get_var($wpdb->prepare("SELECT id FROM " . NAMASTE_STUDENT_COURSES . "\n\t\t\t\t\t\t \tWHERE user_id = %d AND course_id = %d", $student->ID, $_GET['course_id']));
                 if ($is_enrolled) {
                     $error = __('This user is already enrolled in the course', 'namaste');
                 }
             }
             // finally, enroll
             if (empty($error)) {
                 $wpdb->query($wpdb->prepare("INSERT INTO " . NAMASTE_STUDENT_COURSES . " SET\n\t\t\t\t\t \t\t\tcourse_id = %d, user_id = %d, status = 'enrolled', \n\t\t\t\t\t \t\t\tenrollment_date = %s, completion_date = '1900-01-01', enrollment_time=%s, comments=''", $_GET['course_id'], $student->ID, date("Y-m-d", current_time('timestamp')), current_time('mysql')));
                 $success = __('User successfully enrolled in the course', 'namaste');
                 // insert in history
                 $course = get_post($_GET['course_id']);
                 $wpdb->query($wpdb->prepare("INSERT INTO " . NAMASTE_HISTORY . " SET\n\t\t\t\t\t\t\t\tuser_id=%d, date=CURDATE(), datetime=NOW(), action='enrolled_course', value=%s, num_value=%d", $student->ID, sprintf(__('Enrolled in course %s. Status: %s', 'namaste'), $course->post_title, 'enrolled'), $_GET['course_id']));
                 // do_action('namaste_enrolled_course', $student->ID, $_GET['course_id'], true);
             }
         }
         // change student status
         if (!empty($_GET['change_status'])) {
             if ($multiuser_access == 'view') {
                 wp_die(__('You are not allowed to do this.', 'namaste'));
             }
             $wpdb->query($wpdb->prepare("UPDATE " . NAMASTE_STUDENT_COURSES . " SET\n\t\t\t\t\t \t\t\tstatus=%s, completion_date=%s, completion_time=%s \n\t\t\t\t\t \t\t\tWHERE user_id=%d AND course_id=%d", $_GET['status'], date("Y-m-d", current_time('timestamp')), current_time('mysql'), $_GET['student_id'], $_GET['course_id']));
             $course = get_post($_GET['course_id']);
             if ($_GET['status'] == 'enrolled') {
                 do_action('namaste_enrollment_approved', $_GET['student_id'], $_GET['course_id']);
                 $history_msg = sprintf(__('Enrollment in %s has been approved.', 'namaste'), $course->post_title);
             } else {
                 do_action('namaste_enrollment_rejected', $_GET['student_id'], $_GET['course_id']);
                 $history_msg = sprintf(__('Enrollment in %s has been rejected.', 'namaste'), $course->post_title);
             }
             // insert in history
             $wpdb->query($wpdb->prepare("INSERT INTO " . NAMASTE_HISTORY . " SET\n\t\t\t\t\t\t\t\tuser_id=%d, date=CURDATE(), datetime=NOW(), action='enrolled_course', value=%s, num_value=%d", $_GET['student_id'], $history_msg, $_GET['course_id']));
             namaste_redirect("admin.php?page=namaste_students&course_id={$_GET['course_id']}");
         }
         // select lessons
         $_lesson = new NamasteLMSLessonModel();
         $lessons = $_lesson->select($_GET['course_id']);
         $lids = array(0);
         foreach ($lessons as $lesson) {
             $lids[] = $lesson->ID;
         }
         // select students
         $page_limit = 20;
         $offset = empty($_GET['offset']) ? 0 : intval($_GET['offset']);
         $status_sql = '';
         if (!empty($_GET['status']) and $_GET['status'] != 'any') {
             $status_sql = $wpdb->prepare(" AND tS.status=%s", $_GET['status']);
         }
         $students = $wpdb->get_results($wpdb->prepare("SELECT SQL_CALC_FOUND_ROWS tU.*, tS.status as namaste_status \n\t\t\t \t\tFROM {$wpdb->users} tU JOIN " . NAMASTE_STUDENT_COURSES . " tS \n\t\t\t \t\tON tS.user_id = tU.ID AND tS.course_id=%d {$status_sql}\n\t\t\t \t\tORDER BY user_nicename LIMIT %d, %d", $_GET['course_id'], $offset, $page_limit));
         $count = $wpdb->get_var("SELECT FOUND_ROWS()");
         // select student - to - lesson relations
         $completed_lessons = $wpdb->get_results("SELECT * FROM " . NAMASTE_STUDENT_LESSONS . "\n\t\t \t\t\tWHERE lesson_id IN (" . implode(',', $lids) . ")");
         // match to students
         foreach ($students as $cnt => $student) {
             $student_completed_lessons = $student_incomplete_lessons = array();
             foreach ($completed_lessons as $lesson) {
                 if ($lesson->student_id == $student->ID) {
                     if ($lesson->status) {
                         $student_completed_lessons[] = $lesson->lesson_id;
                     } else {
                         $student_incomplete_lessons[] = $lesson->lesson_id;
                     }
                 }
             }
             $students[$cnt]->completed_lessons = $student_completed_lessons;
             $students[$cnt]->incomplete_lessons = $student_incomplete_lessons;
         }
     }
     // end if course selected
     wp_enqueue_script('thickbox', null, array('jquery'));
     wp_enqueue_style('thickbox.css', '/' . WPINC . '/js/thickbox/thickbox.css', null, '1.0');
     if (@file_exists(get_stylesheet_directory() . '/namaste/manage-students.php')) {
         require get_stylesheet_directory() . '/namaste/manage-students.php';
     } else {
         require NAMASTE_PATH . "/views/manage-students.php";
     }
 }
Exemple #5
0
 static function restrict_visible_comments($comments)
 {
     global $post, $wpdb, $user_ID;
     if (!is_singular() or is_admin() or $post->post_type != 'namaste_lesson' or current_user_can('namaste_manage')) {
         return $comments;
     }
     if (!is_user_logged_in()) {
         return null;
     }
     // logged in, but is he enrolled in the course?
     $_course = new NamasteLMSCourseModel();
     $course_id = get_post_meta($post->ID, 'namaste_course', true);
     $course = $_course->select($course_id);
     $enrolled = $wpdb->get_var($wpdb->prepare("SELECT id FROM " . NAMASTE_STUDENT_COURSES . " WHERE user_id = %d AND course_id = %d AND (status = 'enrolled' OR status='completed')", $user_ID, $course_id));
     if (!$enrolled) {
         return null;
     }
     return $comments;
 }
 static function full_select($id)
 {
     global $wpdb;
     $_course = new NamasteLMSCourseModel();
     $_lesson = new NamasteLMSLessonModel();
     // select this homework and lesson
     $homework = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . NAMASTE_HOMEWORKS . "\n\t\t\tWHERE id=%d", $id));
     // select course
     $course = $_course->select($homework->course_id);
     // select lesson
     $lesson = $_lesson->select($course->ID, 'single', $homework->lesson_id);
     return array($homework, $course, $lesson);
 }
Exemple #7
0
    static function view_certificate()
    {
        global $wpdb, $user_ID;
        if (!current_user_can('namaste_manage') and $_GET['student_id'] != $user_ID) {
            wp_die(__('You are not allowed to access this certificate', 'namaste'));
        }
        // select certificate
        $certificate = $wpdb->get_row($wpdb->prepare("SELECT tC.*, tS.date as date, tS.id as stid \n\t\t\tFROM " . NAMASTE_CERTIFICATES . " tC JOIN " . NAMASTE_STUDENT_CERTIFICATES . " tS On tC.id = tS.certificate_id \n\t\t\tWHERE tS.student_id = %d AND tC.id=%d\n\t\t\tAND tS.id=%d", $_GET['student_id'], $_GET['id'], $_GET['my_id']));
        $output = wpautop(stripslashes($certificate->content));
        $user_info = get_userdata($_GET['student_id']);
        $name = (empty($user_info->first_name) or empty($user_info->last_name)) ? $user_info->display_name : $user_info->first_name . " " . $user_info->last_name;
        // if $name is still empty, output username
        if (empty($name)) {
            $name = $user_info->user_login;
        }
        $output = str_replace("{{name}}", $name, $output);
        $output = str_replace("{{id}}", sprintf('%08d', $certificate->stid), $output);
        if (strstr($output, "{{courses}}") or strstr($output, "{{courses-extended}}")) {
            $_course = new NamasteLMSCourseModel();
            $courses = $_course->select();
            $c_courses = array();
            foreach ($courses as $course) {
                if (strstr($certificate->course_ids, "|" . $course->ID . "|")) {
                    if (strstr($output, "{{courses-extended}}")) {
                        $c_courses[] = "<h2>" . stripslashes($course->post_title) . "</h2>" . wpautop(stripslashes($course->post_excerpt));
                    } else {
                        $c_courses[] = stripslashes($course->post_title);
                    }
                }
            }
            $courses_str = implode(", ", $c_courses);
            $output = str_replace("{{courses}}", $courses_str, $output);
            $output = str_replace("{{courses-extended}}", $courses_str, $output);
        }
        $date = date(get_option('date_format'), strtotime($certificate->date));
        $output = str_replace("{{date}}", $date, $output);
        if (get_option('namaste_generate_pdf_certificates') == "1") {
            $output = '<html>
			<head><title>' . $certificate->title . '</title>
			<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
			<body><!--namaste-certificate-id-' . $certificate->id . '-namaste-certificate-id-->' . $output . '</body>
			</html>';
            //	die($output);
            $content = apply_filters('pdf-bridge-convert', $output);
            echo $content;
            exit;
        }
        // else output HTML
        ?>
		<html>
		<head><title><?php 
        echo $certificate->title;
        ?>
</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
		<body><?php 
        echo apply_filters('the_content', $output);
        ?>
</body>
		</html>
		<?php 
        exit;
    }
Exemple #8
0
 static function my_gradebook()
 {
     global $wpdb, $user_ID;
     $_course = new NamasteLMSCourseModel();
     $_lesson = new NamasteLMSLessonModel();
     // select my courses
     $courses = $wpdb->get_results($wpdb->prepare("SELECT tC.* FROM {$wpdb->posts} tC\n\t\tJOIN " . NAMASTE_STUDENT_COURSES . " tSC ON tSC.course_id = tC.ID AND (tSC.status = 'enrolled' OR tSC.status = 'completed')\n\t\tAND tSC.user_id=%d\r\n\t\tWHERE post_type = 'namaste_course'  AND (post_status='publish' OR post_status='draft')\r\n\t\tORDER BY post_title", $user_ID));
     $cids = array();
     foreach ($courses as $course) {
         $cids[] = $course->ID;
     }
     // make sure we are only passing course_id in which user is enrolled
     if (!empty($_GET['course_id']) and in_array($_GET['course_id'], $cids)) {
         $this_course = $_course->select($_GET['course_id']);
         $lessons = $wpdb->get_results($wpdb->prepare("SELECT tP.*, tSL.grade as grade FROM {$wpdb->posts} tP\r\n\t\t\tJOIN {$wpdb->postmeta} tM ON tM.post_id = tP.ID AND tM.meta_key = 'namaste_course'\r\n\t\t\tAND tM.meta_value = %d\n\t\t\tLEFT JOIN " . NAMASTE_STUDENT_LESSONS . " tSL ON tSL.student_id=%d AND tSL.lesson_id=tP.ID\r\n\t\t\tWHERE post_type = 'namaste_lesson'  AND (post_status='publish' OR post_status='draft') \r\n\t\t\tORDER BY post_title", $_GET['course_id'], $user_ID));
         // select all assignments
         $homeworks = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . NAMASTE_HOMEWORKS . " WHERE course_id=%d ORDER BY id", $this_course->ID));
         $hids = array(0);
         foreach ($homeworks as $homework) {
             $hids[] = $homework->id;
         }
         // select all my solutions
         $solutions = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . NAMASTE_STUDENT_HOMEWORKS . " \n\t\t\t\tWHERE student_id=%d AND homework_id IN (" . implode(',', $hids) . ") ORDER BY id DESC", $user_ID));
         // match solutions to assignments
         foreach ($homeworks as $cnt => $homework) {
             $homework_solutions = array();
             foreach ($solutions as $solution) {
                 if ($homework->id == $solution->homework_id) {
                     $homework_solutions[] = $solution;
                 }
             }
             $homeworks[$cnt]->solutions = $solutions;
         }
         // match assignments to my lessons
         foreach ($lessons as $cnt => $lesson) {
             $lesson_homeworks = array();
             foreach ($homeworks as $homework) {
                 if ($homework->lesson_id == $lesson->ID) {
                     $lesson_homeworks[] = $homework;
                 }
             }
             $lessons[$cnt]->homeworks = $lesson_homeworks;
         }
     }
     if (@file_exists(get_stylesheet_directory() . '/namaste/my-gradebook.htm.php')) {
         require get_stylesheet_directory() . '/namaste/my-gradebook.html.php';
     } else {
         require NAMASTE_PATH . "/views/my-gradebook.html.php";
     }
 }
	<?php 
get_header();
?>
	
	<div class="full_width">
	<div class="full_width_inner">



		<?php 
global $user_ID;
$is_manager = current_user_can('namaste_manage');
$_course = new NamasteLMSCourseModel();
// select all courses
$_course->register_course_type();
$courses = $_course->select();
?>
		<h1><?php 
_e('My Courses', 'namaste');
?>
</h1>

		<?php 
if (!sizeof($courses)) {
    ?>
			<p><?php 
    _e('No courses are available at this time.', 'namaste');
    ?>
</p>
		<?php 
    return false;