create_tables(); if ( ! self::tables_install_done() ) { return; } // Check if LP install before has db version if ( ! get_option( LP_KEY_DB_VERSION, false ) ) { // Save database version of LP update_option( LP_KEY_DB_VERSION, LearnPress::instance()->db_version ); } // Create pages default. self::create_pages(); // Set permalink is "Post name". if ( ! get_option( 'permalink_structure' ) ) { update_option( 'permalink_structure', '/%postname%/' ); // flush_rewrite_rules(); } // Force option users_can_register to ON. if ( ! get_option( 'users_can_register' ) ) { update_option( 'users_can_register', 1 ); } } /** * Check to run installer in the first-time LP installed. * * @since 3.x.x */ public static function do_install() { if ( ! current_user_can( 'manage_options' ) ) { return; } $status = get_option( 'learn_press_status' ); switch ( $status ) { case 'activated': self::install(); update_option( 'learn_press_status', 'installed' ); } } /** * Run installation after LearnPress is activated. * * @depecated 4.1.6.4 */ public static function install() { _deprecated_function( __FUNCTION__, '4.1.6.4' ); /*self::create_options(); self::_create_pages(); self::_create_cron_jobs(); self::_delete_transients(); //self::_create_log_path(); self::_clear_backgrounds(); $current_version = get_option( 'learnpress_version', null ); $current_db_version = get_option( 'learnpress_db_version', null ); // Fresh installation . if ( is_null( $current_db_version ) ) { update_option( 'learn_press_install', 'yes' ); set_transient( 'lp_activation_redirect', 'yes', 60 ); } // Force to show notice outdated template . learn_press_delete_user_option( 'hide-notice-template-files' ); LP_Admin_Notice::instance()->remove_dismissed_notice( array( 'outdated-template' ) ); //if ( ! get_option( 'learnpress_db_version' ) ) { update_option( 'learnpress_db_version', (int) LEARNPRESS_VERSION ); //}*/ } /** * Create tables required for LP */ private function create_tables() { try { $tables = Config::instance()->get( 'tables-v4', 'table' ); foreach ( $tables as $table ) { LP_Database::getInstance()->wpdb->query( $table ); } update_option( 'learn_press_check_tables', 'yes' ); } catch ( Throwable $e ) { error_log( $e->getMessage() ); } } /** * Create default pages for LP */ public static function create_pages() { $pages = self::$_pages; try { foreach ( $pages as $page ) { // Check if page has already existed $page_id = get_option( "learn_press_{$page}_page_id", false ); if ( $page_id && get_post_type( $page_id ) == 'page' && get_post_status( $page_id ) == 'publish' ) { continue; } //$page_id = self::_search_page( $page, $pages ); if ( $page === 'courses' ) { $page_title = 'All Courses'; $page_slug = $page; } else { $page_title = ucwords( str_replace( '_', ' ', $page ) ); $page_slug = 'lp-' . str_replace( '_', '-', $page ); } if ( $page === 'profile' ) { $page_content = '[' . apply_filters( 'learn-press/shortcode/profile/tag', 'learn_press_profile' ) . ']'; } else { $page_content = ''; } $page_id = wp_insert_post( array( 'post_title' => $page_title, 'post_name' => $page_slug, 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'post_content' => $page_content ?? '', 'post_author' => get_current_user_id(), ) ); if ( ! $page_id instanceof WP_Error ) { update_option( "learn_press_{$page}_page_id", $page_id ); } } flush_rewrite_rules(); } catch ( Exception $ex ) { error_log( $ex->getMessage() ); } } /** * Check installed all tables required for LearnPress. * * @return bool */ public function tables_install_done(): bool { $install_done = get_option( 'learn_press_check_tables', 'no' ); if ( is_multisite() && 'yes' !== $install_done ) { $this->create_tables(); } return $install_done; } } }