芝麻web文件管理V1.00
编辑当前文件:/home/sditechnicalteam/socialdigivlms.com/wp-content/plugins/tutor-pro/classes/Init.php
* @link https://themeum.com * @since 1.0.0 */ namespace TUTOR_PRO; use TutorPro\GoogleMeet\GoogleMeet; if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Init Class * * @since 1.0.0 */ class Init { //phpcs:disable Squiz.Commenting.VariableComment.Missing public $version = TUTOR_PRO_VERSION; public $path; public $url; public $basename; private $admin; private $assets; private $general; private $quiz; private $upgrader; private $google_meet; private $email_verification; private $device_management; private $instructor; //phpcs:enable Squiz.Commenting.VariableComment.Missing /** * Register hooks. */ public function __construct() { if ( ! function_exists( 'is_plugin_active' ) ) { include_once ABSPATH . 'wp-admin/includes/plugin.php'; } $this->path = plugin_dir_path( TUTOR_PRO_FILE ); $this->url = plugin_dir_url( TUTOR_PRO_FILE ); $this->basename = plugin_basename( TUTOR_PRO_FILE ); if ( is_plugin_active( 'tutor/tutor.php' ) && $this->is_tutor_core_has_req_verion() ) { add_action( 'tutor_loaded', array( $this, 'load_constructors_asset' ) ); $this->includes(); spl_autoload_register( array( $this, 'loader' ) ); $this->admin = new Admin(); $this->assets = new Assets(); add_action( 'tutor_course_create_button', __CLASS__ . '::render_button' ); add_action( 'tutor_frontend_course_builder', __CLASS__ . '::render_course_builder' ); } if ( ! is_plugin_active( 'tutor/tutor.php' ) ) { add_action( 'admin_notices', array( $this, 'required_version_notice' ) ); } if ( is_plugin_active( 'tutor/tutor.php' ) && ! $this->is_tutor_core_has_req_verion() ) { add_action( 'admin_notices', array( $this, 'required_version_notice' ) ); } if ( class_exists( 'GoogleMeet' ) ) { require_once tutor_pro()->path . 'addons/google-meet/google-meet.php'; } } /** * Load constructors assets. * * @return void */ public function load_constructors_asset() { /** * Loading Autoloader */ spl_autoload_register( array( $this, 'loader' ) ); do_action( 'tutor_pro_before_load' ); // Load Component from Class. $this->admin = new Admin(); $this->assets = new Assets(); $this->general = new General(); $this->upgrader = new Upgrader(); $this->quiz = new Quiz(); $this->course_duplicator = new Course_Duplicator(); $this->instructor_percentage = new Instructor_Percentage(); $this->enrollment_expiry = new Enrollment_Expiry(); $this->dashboard = new Dashboard(); $this->shortcode = new Shortcode(); $this->instructor = new Instructor(); $this->device_management = new DeviceManagement(); $this->email_verification = new EmailVerification(); new Filters(); new ContentSecurity(); $this->load_addons(); require_once dirname( __DIR__ ) . '/updater/update.php'; $this->updater = new \TutorPRO\ThemeumUpdater\Update( array( 'product_title' => 'Tutor Pro', 'product_slug' => 'tutor-pro', 'product_basename' => tutor_pro()->basename, 'product_type' => 'plugin', 'current_version' => TUTOR_PRO_VERSION, 'menu_title' => 'License', 'parent_menu' => 'tutor', 'menu_capability' => 'manage_tutor', 'license_option_key' => 'tutor_license_info', 'updater_url' => tutor_pro()->url . 'updater/', 'header_content' => '
', ) ); do_action( 'tutor_pro_loaded' ); } /** * Auto-Load class and the files * * @param string $class_name class name. * * @return void */ private function loader( $class_name ) { if ( ! class_exists( $class_name ) ) { $class_name = preg_replace( array( '/([a-z])([A-Z])/', '/\\\/' ), array( '$1$2', DIRECTORY_SEPARATOR ), $class_name ); $class_name = str_replace( 'TUTOR_PRO' . DIRECTORY_SEPARATOR, 'classes' . DIRECTORY_SEPARATOR, $class_name ); $file_name = $this->path . $class_name . '.php'; if ( file_exists( $file_name ) && is_readable( $file_name ) ) { require_once $file_name; } } } /** * Run the plugin. * * @return void */ public function run() { do_action( 'tutor_pro_before_run' ); register_activation_hook( TUTOR_PRO_FILE, array( $this, 'tutor_pro_activate' ) ); do_action( 'tutor_pro_after_run' ); } /** * Do some task during plugin activation */ public function tutor_pro_activate() { $version = get_option( 'tutor_pro_version' ); // Save Option. if ( ! $version ) { update_option( 'tutor_pro_version', TUTOR_PRO_VERSION ); } $this->migrate_membership_model(); $this->assignment_meta_generate(); } /** * Migrate membership model * * @since v1.9.4 */ private function migrate_membership_model() { $migrated = get_option( 'tutor_pmpro_model_migrated', false ); $old_model = get_option( 'tutor_pmpro_membership_model', null ); if ( $migrated || ! $old_model || ! tutor_utils()->has_pmpro() ) { // Already migrated // or old one not saved yet // PM pro not available. return; } global $wpdb; $ids = $wpdb->get_col( "SELECT id FROM {$wpdb->pmpro_membership_levels}" ); ! is_array( $ids ) ? $ids = array() : 0; foreach ( $ids as $level_id ) { update_pmpro_membership_level_meta( $level_id, 'tutor_pmpro_membership_model', $old_model ); } update_option( 'tutor_pmpro_model_migrated', true ); } /** * Includes helper files. * * @return void */ public function includes() { include tutor_pro()->path . 'includes/functions.php'; } /** * Load addons * * @return void */ public function load_addons() { $addons_dir = array_filter( glob( tutor_pro()->path . 'addons' . DIRECTORY_SEPARATOR . '*' ), 'is_dir' ); if ( count( $addons_dir ) > 0 ) { foreach ( $addons_dir as $key => $value ) { $addon_dir_name = str_replace( dirname( $value ) . DIRECTORY_SEPARATOR, '', $value ); $file_name = tutor_pro()->path . 'addons' . DIRECTORY_SEPARATOR . $addon_dir_name . DIRECTORY_SEPARATOR . $addon_dir_name . '.php'; if ( file_exists( $file_name ) ) { include_once $file_name; } } } } /** * Assignment meta generate for backward compatibility * * This method will update meta key for assignment total mark & pass mark * required for query data * * @return void * * @since v2.0.0 */ public function assignment_meta_generate() : void { global $wpdb; $already_updated = get_option( 'tutor_assignment_meta_key_updated' ); if ( ! $already_updated ) { $assignments = $wpdb->get_results( $wpdb->prepare( "SELECT post.ID, m1.meta_value FROM {$wpdb->posts} AS post INNER JOIN {$wpdb->postmeta} as m1 ON m1.post_id = post.ID AND m1.meta_key = 'assignment_option' WHERE post.post_type = %s ", 'tutor_assignments' ) ); $this->update_assignment_meta( $assignments ); } } /** * Update assignment meta keys with value * * @param array $assignments | assignments array of objects. * * @return bool */ public function update_assignment_meta( $assignments ) : bool { foreach ( $assignments as $assignment ) { $assignment_id = $assignment->ID; $assignment_info = unserialize( $assignment->meta_value ); $total_mark = isset( $assignment_info['total_mark'] ) ? $assignment_info['total_mark'] : ''; $pass_mark = isset( $assignment_info['pass_mark'] ) ? $assignment_info['pass_mark'] : ''; if ( '' !== $total_mark ) { update_post_meta( $assignment_id, '_tutor_assignment_total_mark', $total_mark ); } if ( '' !== $pass_mark ) { update_post_meta( $assignment_id, '_tutor_assignment_pass_mark', $pass_mark ); } add_option( 'tutor_assignment_meta_key_updated', true ); } return true; } /** * Check whether Tutor core has required version installed * * @return bool | if has return true otherwise false * * @since v2.0.0 */ public function is_tutor_core_has_req_verion() { $file_path = WP_PLUGIN_DIR . '/tutor/tutor.php'; $plugin_data = get_file_data( $file_path, array( 'Version' => 'Version', ) ); $tutor_version = $plugin_data['Version']; $tutor_core_req_version = TUTOR_CORE_REQ_VERSION; $is_compatible = version_compare( $tutor_version, $tutor_core_req_version, '>=' ); return $is_compatible ? true : false; } /** * Tutor core required version message * * @since v2.0.0 */ public function tutor_core_version_compare() { $tutor_file = WP_PLUGIN_DIR . '/tutor/tutor.php'; if ( file_exists( $tutor_file ) && defined( 'TUTOR_VERSION' ) ) { if ( ! $this->is_tutor_core_has_req_verion() ) { add_action( 'admin_notices', array( $this, 'required_version_notice' ) ); } } } /** * Admin notice for required Tutor core version * * @since v2.0.0 */ public function required_version_notice() { ?>
templates ) . 'frontend-course-builder.php'; if ( file_exists( $template ) ) { tutor_load_template_from_custom_path( $template, array() ); } else { esc_html_e( 'Course builder file exists.', 'tutor-pro' ); } } }