version ); // Define constant . $this->plugin_defines(); // define table prefixes . $this->define_tables(); // Include files . $this->includes(); // hooks . $this->init_hooks(); } /** * Define constant. */ protected function plugin_defines() { } /** * Defines database table names. */ public function define_tables() { global $wpdb; $tables = array( 'sessions', 'sections', 'section_items', 'user_items', 'user_itemmeta', 'user_item_results', 'order_items', 'order_itemmeta', 'quiz_questions', 'question_answers', 'question_answermeta', 'review_logs', ); foreach ( $tables as $short_name ) { $table_name = $wpdb->prefix . LP_TABLE_PREFIX . $short_name; $this->_table_prefixes[ 'tbl_' . $short_name ] = $table_name; $backward_key = 'learnpress_' . $short_name; $wpdb->{$backward_key} = $table_name; } } /** * Includes needed files. */ public function includes() { // Include required files load anywhere, both frontend and backend. $this->include_files_global(); // include files when LP ready run - after setup success . if ( ! LP_Install::instance()->tables_install_done() ) { return; } // Include required files Backend. $this->include_files_admin(); // Include required files Frontend. $this->include_files_frontend(); new LP_Query(); } /** * load files anywhere, both frontend and backend * * @return void */ private function include_files_global() { require_once 'inc/class-lp-multi-language.php'; // Filter query . require_once 'inc/filters/class-lp-filter.php'; require_once 'inc/filters/class-lp-post-type-filter.php'; require_once 'inc/filters/class-lp-course-filter.php'; require_once 'inc/filters/class-lp-order-filter.php'; require_once 'inc/filters/class-lp-section-filter.php'; require_once 'inc/filters/class-lp-section-items-filter.php'; require_once 'inc/filters/class-lp-question-filter.php'; require_once 'inc/filters/class-lp-user-items-filter.php'; require_once 'inc/filters/class-lp-quiz-questions-filter.php'; require_once 'inc/filters/class-lp-question-answers-filter.php'; require_once 'inc/filters/class-lp-question-answermeta-filter.php'; // Query Database . require_once 'inc/databases/class-lp-db.php'; require_once 'inc/databases/class-lp-order-db.php'; require_once 'inc/databases/class-lp-course-db.php'; require_once 'inc/databases/class-lp-lesson-db.php'; require_once 'inc/databases/class-lp-section-db.php'; require_once 'inc/databases/class-lp-section-items-db.php'; require_once 'inc/databases/class-lp-quiz-db.php'; require_once 'inc/databases/class-lp-quiz-questions-db.php'; require_once 'inc/databases/class-lp-question-answers-db.php'; require_once 'inc/databases/class-lp-sessions-db.php'; require_once 'inc/databases/class-lp-question-db.php'; require_once 'inc/databases/class-lp-user-items-db.php'; require_once 'inc/databases/class-lp-user-item-results-db.php'; // Read files config on folder config . require_once 'inc/Helper/Config.php'; // File system . require_once 'inc/class-lp-file-system.php'; // File helper require_once 'inc/class-lp-helper.php'; // Models require_once 'inc/models/class-lp-rest-response.php'; include_once 'inc/models/steps/class-lp-group-step.php'; include_once 'inc/models/steps/class-lp-step.php'; require_once 'inc/models/class-lp-course-extra-info-fast-query-model.php'; // Handle steps. require_once 'inc/handle-steps/class-lp-handle-steps.php'; require_once 'inc/handle-steps/class-lp-handle-upgrade-db-steps.php'; // LP Cache require_once 'inc/cache/class-lp-cache.php'; require_once 'inc/cache/class-lp-courses-cache.php'; require_once 'inc/cache/class-lp-course-cache.php'; require_once 'inc/cache/class-lp-quiz-cache.php'; // Background processes. require_once 'inc/libraries/wp-background-process/wp-background-processing.php'; require_once 'inc/background-process/abstract-lp-async-request.php'; require_once 'inc/background-process/class-lp-background-single-course.php'; require_once 'inc/background-process/class-lp-background-single-email.php'; // Assets object require_once 'inc/class-lp-asset-key.php'; require_once 'inc/abstracts/abstract-assets.php'; // Debug class require_once 'inc/class-lp-debug.php'; require_once 'inc/class-lp-settings.php'; require_once 'inc/abstract-settings.php'; require_once 'inc/settings/abstract-settings-page.php'; require_once 'inc/settings/class-lp-settings-courses.php'; require_once 'inc/class-lp-global.php'; require_once 'inc/class-lp-datetime.php'; // Register custom-post-type and taxonomies . require_once 'inc/custom-post-types/abstract.php'; require_once 'inc/custom-post-types/course.php'; require_once 'inc/custom-post-types/lesson.php'; require_once 'inc/custom-post-types/quiz.php'; require_once 'inc/custom-post-types/question.php'; require_once 'inc/custom-post-types/order.php'; require_once 'inc/interfaces/interface-curd.php'; require_once 'inc/abstracts/abstract-array-access.php'; require_once 'inc/abstracts/abstract-object-data.php'; require_once 'inc/abstracts/abstract-post-data.php'; require_once 'inc/curds/class-lp-course-curd.php'; require_once 'inc/curds/class-lp-section-curd.php'; require_once 'inc/curds/class-lp-lesson-curd.php'; require_once 'inc/curds/class-lp-quiz-curd.php'; require_once 'inc/curds/class-lp-question-curd.php'; require_once 'inc/curds/class-lp-order-curd.php'; require_once 'inc/curds/class-lp-user-curd.php'; require_once 'inc/curds/class-lp-user-item-curd.php'; require_once 'inc/course/class-lp-course-item.php'; require_once 'inc/question/class-lp-question.php'; require_once 'inc/course/class-lp-course-section.php'; require_once 'inc/course/class-lp-course-no-required-enroll.php'; require_once 'inc/user-item/class-lp-user-item.php'; require_once 'inc/user-item/class-lp-user-item-course.php'; require_once 'inc/lp-deprecated.php'; // Will remove if Eduma and guest update all 4.0.0 require_once 'inc/lp-core-functions.php'; require_once 'inc/class-lp-autoloader.php'; require_once 'inc/lp-webhooks.php'; require_once 'inc/class-lp-request-handler.php'; require_once 'inc/admin/helpers/class-lp-plugins-helper.php'; // Todo: tungnx check those files. require_once 'inc/abstracts/abstract-object-query.php'; require_once 'inc/class-lp-course-query.php'; require_once 'inc/abstracts/abstract-addon.php'; require_once 'inc/class-lp-thumbnail-helper.php'; require_once 'inc/cache.php'; // Class handle check db of LP need to upgrade? require_once 'inc/admin/class-lp-updater.php'; require_once 'inc/course/lp-course-functions.php'; require_once 'inc/course/abstract-course.php'; require_once 'inc/course/class-lp-course.php'; //require_once 'inc/course/class-lp-course-utils.php'; require_once 'inc/quiz/lp-quiz-functions.php'; require_once 'inc/quiz/class-lp-quiz.php'; require_once 'inc/lesson/lp-lesson-functions.php'; require_once 'inc/order/lp-order-functions.php'; require_once 'inc/order/class-lp-order.php'; require_once 'inc/user/lp-user-functions.php'; require_once 'inc/user/class-lp-user-factory.php'; require_once 'inc/user/abstract-lp-user.php'; require_once 'inc/user/class-lp-user.php'; require_once 'inc/user/class-lp-profile.php'; require_once 'inc/user-item/class-lp-user-item.php'; require_once 'inc/user-item/class-lp-user-item-course.php'; require_once 'inc/user-item/class-lp-user-item-quiz.php'; require_once 'inc/user-item/class-lp-quiz-results.php'; require_once 'inc/class-lp-session-handler.php'; require_once 'inc/class-lp-shortcodes.php'; // include template functions . require_once 'inc/lp-template-functions.php'; require_once 'inc/templates/abstract-template.php'; //require_once 'inc/class-lp-template.php'; // Cart require_once 'inc/cart/class-lp-cart.php'; require_once 'inc/cart/lp-cart-functions.php'; // Block Templates require_once 'inc/block-template/class-block-until.php'; require_once 'inc/block-template/class-block-controller.php'; // API require_once 'inc/abstracts/abstract-rest-api.php'; require_once 'inc/abstracts/abstract-rest-controller.php'; require_once 'inc/rest-api/class-lp-core-api.php'; require_once 'inc/rest-api/class-lp-admin-core-api.php'; // include_once 'inc/theme-support/class-theme-support-base.php'; // include_once 'inc/class-lp-theme-support.php'; /** Jwt */ include_once 'inc/jwt/class-jwt-auth.php'; require_once 'inc/class-lp-widget.php'; require_once 'inc/lp-widget-functions.php'; // For plugin Elementor if ( defined( 'ELEMENTOR_VERSION' ) ) { require_once 'inc/external-plugin/elementor/class-lp-elementor.php'; } // TODO: update frontend editor before move to function include_files_admin. require_once 'inc/admin/views/meta-boxes/class-lp-meta-box.php'; require_once 'inc/class-lp-page-controller.php'; require_once 'inc/gateways/class-lp-gateway-abstract.php'; require_once 'inc/gateways/class-lp-gateways.php'; } /** * Include file run on backend */ private function include_files_admin() { if ( ! is_admin() ) { return; } require_once 'inc/admin/class-lp-admin-notice.php'; // File handle install LP require_once 'inc/class-lp-install.php'; // Meta box helper require_once 'inc/admin/meta-box/class-lp-meta-box-helper.php'; require_once 'inc/admin/class-lp-admin.php'; // require_once 'inc/admin/settings/abstract-settings-page.php'; require_once 'inc/admin/class-lp-admin-ajax.php'; } /** * Include file run on frontend */ private function include_files_frontend() { if ( is_admin() ) { return; } require_once 'inc/class-lp-assets.php'; require_once 'inc/course/class-model-user-can-view-course-item.php'; require_once 'inc/class-lp-ajax.php'; } /** * Initial common hooks */ public function init_hooks() { if ( 0 !== strcmp( LP_PLUGIN_BASENAME, 'learnpress/learnpress.php' ) ) { add_action( 'admin_notices', array( $this, 'error' ) ); } // Add links setting|document|addon on plugins page. add_filter( 'plugin_action_links_' . LP_PLUGIN_BASENAME, array( $this, 'plugin_links' ) ); register_activation_hook( LP_PLUGIN_FILE, array( $this, 'on_activate' ) ); register_deactivation_hook( LP_PLUGIN_FILE, array( $this, 'on_deactivate' ) ); // add_action( 'deactivate_' . LP_PLUGIN_BASENAME, array( $this, 'on_deactivate' ) ); if ( ! LP_Install::instance()->tables_install_done() ) { return; } add_action( 'wp_loaded', array( $this, 'wp_loaded' ), 20 ); add_action( 'after_setup_theme', array( $this, 'setup_theme' ) ); add_action( 'plugins_loaded', array( $this, 'plugin_loaded' ), - 10 ); // add_action( 'init', array( $this, 'wp_init' ), 10 ); // Check require version thim-core. add_action( 'before_thim_core_init', array( $this, 'check_thim_core_version_require' ) ); } /** * Add links to Documentation and Extensions in plugin's list of action links * * @since 4.3.11 * * @param array $links Array of action links * * @return array */ public function plugin_links( array $links ): array { $links[] = sprintf( '%s', admin_url( 'admin.php?page=learn-press-settings' ), __( 'Settings', 'learnpress' ) ); $links[] = sprintf( '%s', 'https://docspress.thimpress.com/learnpress-4-0/', __( 'Documentation', 'learnpress' ) ); $links[] = sprintf( '%s', get_admin_url() . '/admin.php?page=learn-press-addons', __( 'Add-ons', 'learnpress' ) ); return $links; } public function error() { ?>
learnpress/learnpres.php (case sensitive) to ensure all functions work properly and fully operational (currently %s)', 'learnpress' ), LP_PLUGIN_BASENAME ); ?>
LearnPress version ' . LEARNPRESS_VERSION . ' require Addon version 4.0.0 or higher' ); ?>