static function install($update = false) { global $wpdb; $wpdb->show_errors(); $old_version = get_option('namaste_version'); update_option('namaste_version', "1.34"); if (!$update) { self::init(); } // enrollments to courses if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_STUDENT_COURSES . "'") != NAMASTE_STUDENT_COURSES) { $sql = "CREATE TABLE `" . NAMASTE_STUDENT_COURSES . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t\t`course_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`user_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`status` VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t\t`enrollment_date` DATE NOT NULL DEFAULT '2000-01-01',\t\t\t\n\t\t\t\t\t`completion_date` DATE NOT NULL DEFAULT '2000-01-01',\n\t\t\t\t\t`comments` TEXT NOT NULL\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // assignments - let's not use custom post type for this if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_HOMEWORKS . "'") != NAMASTE_HOMEWORKS) { $sql = "CREATE TABLE `" . NAMASTE_HOMEWORKS . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t\t`course_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`lesson_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`title` VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t\t`description` TEXT NOT NULL,\n\t\t\t\t\t`accept_files` TINYINT NOT NULL DEFAULT 0 /* zip only */\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // student - assignments relation if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_STUDENT_HOMEWORKS . "'") != NAMASTE_STUDENT_HOMEWORKS) { $sql = "CREATE TABLE `" . NAMASTE_STUDENT_HOMEWORKS . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t\t`homework_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`student_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`status` VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t\t`date_submitted` DATE NOT NULL DEFAULT '2000-01-01',\n\t\t\t\t\t`content` TEXT NOT NULL,\n\t\t\t\t\t`file` VARCHAR(255) NOT NULL DEFAULT ''\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // assignment notes (usually used as feedback from the teacher to the student. Student can't reply) if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_HOMEWORK_NOTES . "'") != NAMASTE_HOMEWORK_NOTES) { $sql = "CREATE TABLE `" . NAMASTE_HOMEWORK_NOTES . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t\t`homework_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`student_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`teacher_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`note` TEXT NOT NULL,\n\t\t\t\t\t`datetime` DATETIME NOT NULL DEFAULT '2000-01-01'\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // student to lessons relation - only save record if student has completed a lesson if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_STUDENT_LESSONS . "'") != NAMASTE_STUDENT_LESSONS) { $sql = "CREATE TABLE `" . NAMASTE_STUDENT_LESSONS . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t\t`lesson_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`student_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`status` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t`completion_date` TEXT NOT NULL\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_CERTIFICATES . "'") != NAMASTE_CERTIFICATES) { $sql = "CREATE TABLE `" . NAMASTE_CERTIFICATES . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t `course_ids` VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t `title` VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t `content` TEXT NOT NULL\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_STUDENT_CERTIFICATES . "'") != NAMASTE_STUDENT_CERTIFICATES) { $sql = "CREATE TABLE `" . NAMASTE_STUDENT_CERTIFICATES . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t `certificate_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `student_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `date` DATE NOT NULL DEFAULT '2000-01-01'\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // payment records if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_PAYMENTS . "'") != NAMASTE_PAYMENTS) { $sql = "CREATE TABLE `" . NAMASTE_PAYMENTS . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t `course_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `user_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `date` DATE NOT NULL DEFAULT '2001-01-01',\n\t\t\t\t `amount` DECIMAL(8,2),\n\t\t\t\t `status` VARCHAR(100) NOT NULL DEFAULT 'failed',\n\t\t\t\t `paycode` VARCHAR(100) NOT NULL DEFAULT '',\n\t\t\t\t `paytype` VARCHAR(100) NOT NULL DEFAULT 'paypal'\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // tracks the visits on a give course or lesson // 1 record per user/date if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_VISITS . "'") != NAMASTE_VISITS) { $sql = "CREATE TABLE `" . NAMASTE_VISITS . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t `course_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `lesson_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `user_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `date` DATE NOT NULL DEFAULT '2001-01-01',\n\t\t\t\t `visits` INT UNSIGNED NOT NULL DEFAULT 0\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // history of various actions, for example points awarded and spent if ($wpdb->get_var("SHOW TABLES LIKE '" . NAMASTE_HISTORY . "'") != NAMASTE_HISTORY) { $sql = "CREATE TABLE `" . NAMASTE_HISTORY . "` (\n\t\t\t\t `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n\t\t\t\t `user_id` INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t `date` DATE NOT NULL DEFAULT '2001-01-01',\n\t\t\t\t `datetime` DATETIME,\n\t\t\t\t `action` VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t `value` VARCHAR(255) NOT NULL DEFAULT '', /* some textual value if required */\n\t\t\t\t `num_value` INT UNSIGNED NOT NULL DEFAULT 0 /* some numeric value, for example points */\n\t\t\t\t) DEFAULT CHARSET=utf8;"; $wpdb->query($sql); } // add extra fields in new versions namaste_add_db_fields(array(array("name" => "grade", "type" => "VARCHAR(100) NOT NULL DEFAULT ''"), array("name" => "fileblob", "type" => "LONGBLOB")), NAMASTE_STUDENT_HOMEWORKS); namaste_add_db_fields(array(array("name" => "grade", "type" => "VARCHAR(100) NOT NULL DEFAULT ''"), array("name" => "enrollment_time", "type" => "DATETIME"), array("name" => "completion_time", "type" => "DATETIME")), NAMASTE_STUDENT_COURSES); namaste_add_db_fields(array(array("name" => "grade", "type" => "VARCHAR(100) NOT NULL DEFAULT ''"), array("name" => "start_time", "type" => "DATETIME"), array("name" => "completion_time", "type" => "DATETIME")), NAMASTE_STUDENT_LESSONS); namaste_add_db_fields(array(array("name" => "award_points", "type" => "INT UNSIGNED NOT NULL DEFAULT 0"), array("name" => "editor_id", "type" => "INT UNSIGNED NOT NULL DEFAULT 0")), NAMASTE_HOMEWORKS); namaste_add_db_fields(array(array("name" => "editor_id", "type" => "INT UNSIGNED NOT NULL DEFAULT 0")), NAMASTE_CERTIFICATES); namaste_add_db_fields(array(array("name" => "for_item_type", "type" => "VARCHAR(100) NOT NULL DEFAULT '' "), array("name" => "for_item_id", "type" => "INT UNSIGNED NOT NULL DEFAULT 0")), NAMASTE_HISTORY); // add student role if not exists $res = add_role('student', 'Student', array('read' => true, 'namaste' => true)); if (!$res) { // role already exists, check the capability $role = get_role('student'); if (!$role->has_cap('namaste')) { $role->add_cap('namaste'); } } // add manage cap to the admin / superadmin by default $role = get_role('administrator'); if (!$role->has_cap('namaste_manage')) { $role->add_cap('namaste_manage'); } // update fileblob if ($old_version < 1.27) { $wpdb->query("ALTER TABLE " . NAMASTE_STUDENT_HOMEWORKS . " CHANGE fileblob fileblob LONGBLOB"); } /* This was needed only for a while but now is generated "unexpected output" during activation if($old_version < 1.29) { // drop student-certificate uniqueness, no longer used $sql = "ALTER TABLE ".NAMASTE_STUDENT_CERTIFICATES." DROP INDEX certificate_id"; $wpdb->query($sql); }*/ // fush rewrite rules NamasteLMSCourseModel::register_course_type(); NamasteLMSLessonModel::register_lesson_type(); flush_rewrite_rules(); // exit; }
<?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