WC_Integration_MaxMind_Geolocation::update_database( string|null $new_database_path = null )
Updates the database used for geolocation queries.
Description Description
Parameters Parameters
- $new_database_path
-
(Optional) The path to the new database file. Null will fetch a new archive.
Default value: null
Source Source
File: includes/integrations/maxmind-geolocation/class-wc-integration-maxmind-geolocation.php
public function update_database( $new_database_path = null ) {
// Allow us to easily interact with the filesystem.
require_once ABSPATH . 'wp-admin/includes/file.php';
WP_Filesystem();
global $wp_filesystem;
// Remove any existing archives to comply with the MaxMind TOS.
$target_database_path = $this->database_service->get_database_path();
// If there's no database path, we can't store the database.
if ( empty( $target_database_path ) ) {
return;
}
if ( $wp_filesystem->exists( $target_database_path ) ) {
$wp_filesystem->delete( $target_database_path );
}
if ( isset( $new_database_path ) ) {
$tmp_database_path = $new_database_path;
} else {
// We can't download a database if there's no license key configured.
$license_key = $this->get_option( 'license_key' );
if ( empty( $license_key ) ) {
return;
}
$tmp_database_path = $this->database_service->download_database( $license_key );
if ( is_wp_error( $tmp_database_path ) ) {
wc_get_logger()->notice( $tmp_database_path->get_error_message(), array( 'source' => 'maxmind-geolocation' ) );
return;
}
}
// Move the new database into position.
$wp_filesystem->move( $tmp_database_path, $target_database_path, true );
$wp_filesystem->delete( dirname( $tmp_database_path ) );
}