base ) && 'settings_page_sqlite-integration' === $current_screen->base ) { return; } if ( isset( $_GET['confirm-install'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'sqlite-install' ) ) { // Handle upgrading from the performance-lab plugin. if ( isset( $_GET['upgrade-from-pl'] ) ) { global $wp_filesystem; require_once ABSPATH . '/wp-admin/includes/file.php'; // Delete the previous db.php file. $wp_filesystem->delete( WP_CONTENT_DIR . '/db.php' ); // Deactivate the performance-lab SQLite module. $pl_option_name = defined( 'PERFLAB_MODULES_SETTING' ) ? PERFLAB_MODULES_SETTING : 'perflab_modules_settings'; $pl_option = get_option( $pl_option_name, array() ); unset( $pl_option['database/sqlite'] ); update_option( $pl_option_name, $pl_option ); } sqlite_plugin_copy_db_file(); // WordPress will automatically redirect to the install screen here. wp_redirect( admin_url() ); exit; } } add_action( 'admin_init', 'sqlite_activation' ); // Flush the cache at the last moment before the redirect. add_filter( 'x_redirect_by', function ( $result ) { wp_cache_flush(); return $result; }, PHP_INT_MAX, 1 ); /** * Add the db.php file in wp-content. * * When the plugin gets merged in wp-core, this is not to be ported. */ function sqlite_plugin_copy_db_file() { // Bail early if the SQLite3 class does not exist. if ( ! class_exists( 'SQLite3' ) ) { return; } $destination = WP_CONTENT_DIR . '/db.php'; // Place database drop-in if not present yet, except in case there is // another database drop-in present already. if ( ! defined( 'SQLITE_DB_DROPIN_VERSION' ) && ! file_exists( $destination ) ) { // Init the filesystem to allow copying the file. global $wp_filesystem; require_once ABSPATH . '/wp-admin/includes/file.php'; // Init the filesystem if needed, then copy the file, replacing contents as needed. if ( ( $wp_filesystem || WP_Filesystem() ) && $wp_filesystem->touch( $destination ) ) { // Get the db.copy.php file contents, replace placeholders and write it to the destination. $file_contents = str_replace( array( '{SQLITE_IMPLEMENTATION_FOLDER_PATH}', '{SQLITE_PLUGIN}', ), array( __DIR__, str_replace( WP_PLUGIN_DIR . '/', '', SQLITE_MAIN_FILE ), ), file_get_contents( __DIR__ . '/db.copy' ) ); $wp_filesystem->put_contents( $destination, $file_contents ); } } }