Addons.php
4 years ago
Admin.php
4 years ago
Ajax.php
4 years ago
Assets.php
4 years ago
Course.php
4 years ago
Course_Filter.php
4 years ago
Course_Settings_Tabs.php
4 years ago
Course_Widget.php
4 years ago
Custom_Validation.php
5 years ago
Dashboard.php
4 years ago
Email.php
5 years ago
FormHandler.php
4 years ago
Frontend.php
5 years ago
Gutenberg.php
4 years ago
Instructor.php
4 years ago
Instructors_List.php
4 years ago
Lesson.php
4 years ago
Options.php
4 years ago
Post_types.php
4 years ago
Private_Course_Access.php
5 years ago
Q_and_A.php
4 years ago
Question_Answers_List.php
4 years ago
Quiz.php
4 years ago
Quiz_Attempts_List.php
4 years ago
RestAPI.php
4 years ago
Rewrite_Rules.php
4 years ago
Shortcode.php
4 years ago
Student.php
4 years ago
Students_List.php
4 years ago
Taxonomies.php
4 years ago
Template.php
4 years ago
Theme_Compatibility.php
5 years ago
Tools.php
4 years ago
Tutor.php
4 years ago
TutorEDD.php
4 years ago
Tutor_Base.php
5 years ago
Tutor_List_Table.php
4 years ago
Tutor_Setup.php
4 years ago
Upgrader.php
4 years ago
User.php
4 years ago
Utils.php
4 years ago
Video_Stream.php
4 years ago
Withdraw.php
4 years ago
Withdraw_Requests_List.php
4 years ago
WooCommerce.php
4 years ago
Upgrader.php
172 lines
| 1 | <?php |
| 2 | |
| 3 | namespace TUTOR; |
| 4 | |
| 5 | if ( ! defined( 'ABSPATH' ) ) { |
| 6 | exit; |
| 7 | } |
| 8 | |
| 9 | class Upgrader { |
| 10 | |
| 11 | public function __construct() { |
| 12 | add_action( 'admin_init', array( $this, 'init_upgrader' ) ); |
| 13 | |
| 14 | $base_name = tutor()->basename; |
| 15 | add_action( 'in_plugin_update_message-' . $base_name, array( $this, 'in_plugin_update_message' ), 10, 2 ); |
| 16 | |
| 17 | /** |
| 18 | * Installing Gradebook Addon from TutorPro |
| 19 | */ |
| 20 | add_action( 'tutor_addon_before_enable_tutor-pro/addons/gradebook/gradebook.php', array( $this, 'install_gradebook' ) ); |
| 21 | add_action( 'tutor_addon_before_enable_tutor-pro/addons/tutor-email/tutor-email.php', array( $this, 'install_tutor_email_queue' ) ); |
| 22 | add_action( 'upgrader_process_complete', array( $this, 'init_email_table_deployment' ), 10, 2 ); |
| 23 | } |
| 24 | |
| 25 | public function init_upgrader() { |
| 26 | $upgrades = $this->available_upgrades(); |
| 27 | |
| 28 | if ( tutor_utils()->count( $upgrades ) ) { |
| 29 | foreach ( $upgrades as $upgrade ) { |
| 30 | $this->{$upgrade}(); |
| 31 | } |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | public function available_upgrades() { |
| 36 | $version = get_option( 'tutor_version' ); |
| 37 | |
| 38 | $upgrades = array(); |
| 39 | if ( $version ) { |
| 40 | $upgrades[] = 'upgrade_to_1_3_1'; |
| 41 | } |
| 42 | |
| 43 | return $upgrades; |
| 44 | } |
| 45 | |
| 46 | /** |
| 47 | * Upgrade to version 1.3.1 |
| 48 | */ |
| 49 | public function upgrade_to_1_3_1() { |
| 50 | if ( version_compare( get_option( 'tutor_version' ), '1.3.1', '<' ) ) { |
| 51 | global $wpdb; |
| 52 | |
| 53 | if ( ! get_option( 'is_course_post_type_updated' ) ) { |
| 54 | $wpdb->update( $wpdb->posts, array( 'post_type' => 'courses' ), array( 'post_type' => 'course' ) ); |
| 55 | update_option( 'is_course_post_type_updated', true ); |
| 56 | update_option( 'tutor_version', '1.3.1' ); |
| 57 | flush_rewrite_rules(); |
| 58 | } |
| 59 | } |
| 60 | } |
| 61 | |
| 62 | |
| 63 | public function in_plugin_update_message( $args, $response ) { |
| 64 | ?> |
| 65 | </p> |
| 66 | <p class="tutor-v2-upgrade-notice"> |
| 67 | <h3 style="margin-top:0">Before You Update</h3> |
| 68 | |
| 69 | Please make a Backup before you upgrade to the latest Tutor LMS! Make sure you are using: |
| 70 | |
| 71 | <ul style="list-style-type: disc; list-style-position: inside; padding-left: 45px;"> |
| 72 | <li>WordPress version: At least 4.5</li> |
| 73 | <li>PHP version: At least 7.0</li> |
| 74 | </ul> |
| 75 | |
| 76 | We made sure the latest Tutor LMS works with your essential plugins, but there is always room for improvements. The latest update includes substantial changes to the plugin. Make sure you first update your website in a staging environment. |
| 77 | |
| 78 | <h3>Compatibility Alert</h3> |
| 79 | In our testing, we made the latest Tutor LMS work with all our plugins. Some plugins may not work with the latest version of Tutor LMS. To avoid issues, make sure they are all up to date and compatible. |
| 80 | </p> |
| 81 | <p style="display:none;"> |
| 82 | <?php |
| 83 | } |
| 84 | |
| 85 | |
| 86 | /** |
| 87 | * Installing Gradebook if Tutor Pro exists |
| 88 | * |
| 89 | * @since v.1.4.2 |
| 90 | */ |
| 91 | public function install_gradebook() { |
| 92 | global $wpdb; |
| 93 | |
| 94 | $exists_gradebook_table = $wpdb->query( "SHOW TABLES LIKE '{$wpdb->tutor_gradebooks}';" ); |
| 95 | $exists_gradebook_results_table = $wpdb->query( "SHOW TABLES LIKE '{$wpdb->tutor_gradebooks_results}';" ); |
| 96 | $charset_collate = $wpdb->get_charset_collate(); |
| 97 | |
| 98 | require_once ABSPATH . 'wp-admin/includes/upgrade.php'; |
| 99 | |
| 100 | if ( ! $exists_gradebook_table ) { |
| 101 | $gradebook_table = "CREATE TABLE IF NOT EXISTS {$wpdb->tutor_gradebooks} ( |
| 102 | gradebook_id int(11) NOT NULL AUTO_INCREMENT, |
| 103 | grade_name varchar(50) DEFAULT NULL, |
| 104 | grade_point varchar(20) DEFAULT NULL, |
| 105 | grade_point_to varchar(20) DEFAULT NULL, |
| 106 | percent_from int(3) DEFAULT NULL, |
| 107 | percent_to int(3) DEFAULT NULL, |
| 108 | grade_config longtext, |
| 109 | PRIMARY KEY (gradebook_id) |
| 110 | ) $charset_collate;"; |
| 111 | dbDelta( $gradebook_table ); |
| 112 | } |
| 113 | if ( ! $exists_gradebook_results_table ) { |
| 114 | $gradebook_results = "CREATE TABLE IF NOT EXISTS {$wpdb->tutor_gradebooks_results} ( |
| 115 | gradebook_result_id int(11) NOT NULL AUTO_INCREMENT, |
| 116 | user_id int(11) DEFAULT NULL, |
| 117 | course_id int(11) DEFAULT NULL, |
| 118 | quiz_id int(11) DEFAULT NULL, |
| 119 | assignment_id int(11) DEFAULT NULL, |
| 120 | gradebook_id int(11) DEFAULT NULL, |
| 121 | result_for varchar(50) DEFAULT NULL, |
| 122 | grade_name varchar(50) DEFAULT NULL, |
| 123 | grade_point varchar(20) DEFAULT NULL, |
| 124 | earned_grade_point varchar(20) DEFAULT NULL, |
| 125 | earned_percent int(3) DEFAULT NULL, |
| 126 | generate_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', |
| 127 | update_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', |
| 128 | PRIMARY KEY (gradebook_result_id) |
| 129 | ) {$charset_collate};"; |
| 130 | dbDelta( $gradebook_results ); |
| 131 | } |
| 132 | |
| 133 | } |
| 134 | |
| 135 | public function init_email_table_deployment( $upgrader_object, $options ) { |
| 136 | |
| 137 | if ( is_object( $upgrader_object ) && is_array( $upgrader_object->result ) && isset( $upgrader_object->result['destination_name'] ) && $upgrader_object->result['destination_name'] == 'tutor-pro' ) { |
| 138 | $addonConfig = tutor_utils()->get_addon_config( 'tutor-pro/addons/tutor-email/tutor-email.php' ); |
| 139 | $isEnable = (bool) tutor_utils()->avalue_dot( 'is_enable', $addonConfig ); |
| 140 | |
| 141 | $isEnable ? $this->install_tutor_email_queue() : 0; |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | /** |
| 146 | * Installing email addon if Tutor Pro exists |
| 147 | * |
| 148 | * @since v.1.8.6 |
| 149 | */ |
| 150 | public function install_tutor_email_queue() { |
| 151 | |
| 152 | global $wpdb; |
| 153 | $exists_email_queue_table = $wpdb->query( "SHOW TABLES LIKE '{$wpdb->tutor_email_queue}';" ); |
| 154 | $charset_collate = $wpdb->get_charset_collate(); |
| 155 | |
| 156 | require_once ABSPATH . 'wp-admin/includes/upgrade.php'; |
| 157 | |
| 158 | if ( ! $exists_email_queue_table ) { |
| 159 | $table = "CREATE TABLE IF NOT EXISTS {$wpdb->tutor_email_queue} ( |
| 160 | id bigint(20) unsigned NOT NULL AUTO_INCREMENT, |
| 161 | mail_to varchar(255) NOT NULL, |
| 162 | subject text NOT NULL, |
| 163 | message text NOT NULL, |
| 164 | headers text NOT NULL, |
| 165 | PRIMARY KEY (id) |
| 166 | ) {$charset_collate};"; |
| 167 | |
| 168 | dbDelta( $table ); |
| 169 | } |
| 170 | } |
| 171 | } |
| 172 |